pg_query-4.2.3/0000755000004100000410000000000014510636647013417 5ustar www-datawww-datapg_query-4.2.3/README.md0000644000004100000410000001525714510636647014710 0ustar www-datawww-data# pg_query [ ![](https://img.shields.io/gem/v/pg_query.svg)](https://rubygems.org/gems/pg_query) [ ![](https://img.shields.io/gem/dt/pg_query.svg)](https://rubygems.org/gems/pg_query) This Ruby extension uses the actual PostgreSQL server source to parse SQL queries and return the internal PostgreSQL parsetree. In addition the extension allows you to normalize queries (replacing constant values with $n) and parse these normalized queries into a parsetree again. When you build this extension, it builds parts of the PostgreSQL server source (see [libpg_query](https://github.com/pganalyze/libpg_query)), and then statically links it into this extension. This may seem like a lot of complexity, but is the only reliable way of parsing all valid PostgreSQL queries. You can find further examples and a longer rationale here: https://pganalyze.com/blog/parse-postgresql-queries-in-ruby.html ## Installation ``` gem install pg_query ``` Due to compiling parts of PostgreSQL, installation might take a while on slower systems. Expect up to 5 minutes. ## Usage ### Parsing a query ```ruby PgQuery.parse("SELECT 1") => # > >, location: 7 > > ], from_clause: [], group_clause: [], group_distinct: false, window_clause: [], values_lists: [], sort_clause: [], limit_option: :LIMIT_OPTION_DEFAULT, locking_clause: [], op: :SETOP_NONE, all: false > >, stmt_location: 0, stmt_len: 0 > ] >, @warnings=[], @tables=nil, @aliases=nil, @cte_names=nil, @functions=nil > ``` ### Modifying a parsed query and turning it into SQL again This is a simple example for `deparse`, for more complex modification, use `walk!`. ```ruby parsed_query = PgQuery.parse("SELECT * FROM users") # Modify the parse tree in some way parsed_query.tree.stmts[0].stmt.select_stmt.from_clause[0].range_var.relname = 'other_users' # Turn it into SQL again parsed_query.deparse => "SELECT * FROM other_users" ``` ### Parsing a normalized query ```ruby # Normalizing a query (like pg_stat_statements in Postgres 10+) PgQuery.normalize("SELECT 1 FROM x WHERE y = 'foo'") => "SELECT $1 FROM x WHERE y = $2" ``` ### Extracting tables from a query ```ruby PgQuery.parse("SELECT $1 FROM x JOIN y USING (id) WHERE z = $2").tables => ["x", "y"] ``` ### Extracting columns from a query ```ruby PgQuery.parse("SELECT $1 FROM x WHERE x.y = $2 AND z = $3").filter_columns => [["x", "y"], [nil, "z"]] ``` ### Fingerprinting a query ```ruby PgQuery.parse("SELECT 1").fingerprint => "50fde20626009aba" PgQuery.parse("SELECT 2; --- comment").fingerprint => "50fde20626009aba" # Faster fingerprint method that is implemented inside the native C library PgQuery.fingerprint("SELECT $1") => "50fde20626009aba" ``` ### Scanning a query into tokens ```ruby PgQuery.scan('SELECT 1 --comment') => [, , ]>, []] ``` ### Walking the parse tree For generalized use, PgQuery provides `walk!` as a means to recursively work with the parsed query. This can be used to create a bespoke pretty printer: ```ruby parsed_query = PgQuery.parse "SELECT * FROM tbl" parsed_query.walk! { |node, k, v, location| puts k } ``` More usefully, this can be used to rewrite a query. For example: ```ruby parsed_query.walk! do |node, k, v, location| puts k next unless k.eql?(:range_var) || k.eql?(:relation) next if v.relname.nil? v.relname = "X_" + v.relname end parsed_query.deparse ``` There are some caveats, and limitations, in this example. First, some of the tree nodes are frozen. You can replace them, but you cannot modify in place. Second, table rewriting is a bit more nuanced than this example. While this will rewrite the table names, it will not correctly handle all CTEs, or rewrite columns with explicit table names. ## Supported Ruby Versions Currently tested and officially supported Ruby versions: * CRuby 2.6 * CRuby 2.7 * CRuby 3.0 * CRuby 3.1 * CRuby 3.2 Not supported: * JRuby: `pg_query` relies on a C extension, which is discouraged / not properly supported for JRuby * TruffleRuby: GraalVM [does not support sigjmp](https://www.graalvm.org/reference-manual/llvm/NativeExecution/), which is used by the Postgres error handling code (`pg_query` uses a copy of the Postgres parser & error handling code) ## Developer tasks ### Update libpg_query source In order to update to a newer Postgres parser, first update [libpg_query](https://github.com/pganalyze/libpg_query) to the new Postgres version and tag a release. Once that is done, follow the following steps: 1. Update `LIB_PG_QUERY_TAG` and `LIB_PG_QUERY_SHA256SUM` in `Rakefile` 2. Run `rake update_source` to update the source code 3. Commit the `Rakefile` and the modified files in `ext/pg_query` to this source tree and make a PR ## Resources See [libpg_query](https://github.com/pganalyze/libpg_query/blob/15-latest/README.md#resources) for pg_query in other languages, as well as products/tools built on pg_query. ## Original Author - [Lukas Fittl](mailto:lukas@fittl.com) ## Special Thanks to - [Jack Danger Canty](https://github.com/JackDanger), for significantly improving deparsing ## 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-2023, Duboce Labs, Inc. (pganalyze) pg_query-4.2.3/CHANGELOG.md0000644000004100000410000006526514510636647015246 0ustar www-datawww-data# Changelog ## Unreleased * ... ## 4.2.3 2023-08-04 * Update to libpg_query 15-4.2.3 - 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) ## 4.2.2 2023-07-07 * Update to libpg_query 15-4.2.2 - Deparser: Add support for multi-statement CREATE PROCEDURE definitions - Deparser: Correctly quote identifier in ALTER TABLE ... ADD CONSTRAINT [x] - Deparser: Add support for index fillfactor within CREATE TABLE, fix SHOW ALL * Fix builds on FreeBSD ([#292](https://github.com/pganalyze/pg_query/pull/292)) - This was broken since 4.2.0, due to pg_query_ruby_freebsd.sym being removed by accident ## 4.2.1 2023-05-19 * Parse: Fix `ALTER INDEX my_index_name` to return `tables=[]` ([#285](https://github.com/pganalyze/pg_query/pull/285)) * Parse: Detect tables in a SELECT INTO clause as DDL tables ([#281](https://github.com/pganalyze/pg_query/pull/281)) * Add support for Ruby 3.2 ([#283](https://github.com/pganalyze/pg_query/pull/283)) * Bump up `google-protobuf` dependency to `>= 3.22.3` - 3.22.0 or newer is required for Ruby 3.2 support * Update to libpg_query 15-4.2.1 - Deparser: Handle INTERVAL correctly when used in SET statements - Deparser: Ensure index names are quoted as identifiers ## 4.2.0 2023-02-08 * Update to libpg_query 15-4.2.0 - Update to PostgreSQL 15.1 ## 2.2.1 2023-01-20 * Detect tables used in the query of a PREPARE statement ([#273](https://github.com/pganalyze/pg_query/pull/273)) * Expose recursive walk functionality via walk! ([#268](https://github.com/pganalyze/pg_query/pull/268)) * Retain schema in name when parsing out functions ([#272](https://github.com/pganalyze/pg_query/pull/272)) ## 2.2.0 2022-11-02 * Update to libpg_query 13-2.2.0 ([#264](https://github.com/pganalyze/pg_query/pull/264)) - Fingerprinting version 3.1 - 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) - Deparser improvements - Prefix errors with "deparse", and remove some asserts - Fix potential segfault when passing invalid protobuf (RawStmt without Stmt) - Update to Postgres 13.8 patch release - Backport Xcode 14.1 build fix from upcoming 13.9 release - Normalize additional DDL statements - Add support for analyzing PL/pgSQL code inside DO blocks - Fix memory leak in pg_query_fingerprint error handling - PL/pgSQL parser: Add support for Assert, SET, COMMIT, ROLLBACK and CALL - Add support for parsing more operators that include a `?` character * Support deparsing deeply nested queries ([#259](https://github.com/pganalyze/pg_query/pull/259)) ## 2.1.4 2022-09-19 * Truncate: Simplify VALUES(...) lists * Truncate: Correctly handle UPDATE and ON CONFLICT target lists * Support complex queries with deeply nested ASTs ([#238](https://github.com/pganalyze/pg_query/pull/238)) * Find table references inside type casts * Find function calls referenced in expression indexes ([#249](https://github.com/pganalyze/pg_query/pull/249)) * Drop `Init_pg_query` from exported symbol map ([#256](https://github.com/pganalyze/pg_query/pull/256)) ## 2.1.3 2022-01-28 * Track tables in EXCEPT and INTERSECT queries ([#239](https://github.com/pganalyze/pg_query/pull/239)) * Get filter_columns working with UNION/EXCEPT/INTERSECT ([#240](https://github.com/pganalyze/pg_query/pull/240)) * Update google-protobuf to address CVE scanner complaints - Note that none of the CVEs apply to pg_query, but this avoids unnecessary errors when the google-protobuf dependency is pulled in ## 2.1.2 2021-11-12 * Find tables in using clause of delete statement ([#234](https://github.com/pganalyze/pg_query/pull/234)) * Find tables in case statements ([#235](https://github.com/pganalyze/pg_query/pull/235)) * Correctly find nested tables in a subselect in a join condition ([#233](https://github.com/pganalyze/pg_query/pull/233)) * Mark Postgres methods as visibility hidden, to avoid bloating dynamic symbol table ([#232](https://github.com/pganalyze/pg_query/pull/232)) - This is required on ELF platforms (i.e. Linux, etc) to avoid including all global symbols in the shared library's symbol table, bloating the size, and causing potential conflicts with other C libraries using the same symbol names. ## 2.1.1 2021-10-13 * Update to libpg_query 13-2.1.0 ([#230](https://github.com/pganalyze/pg_query/pull/230)) - Normalize: add funcname error object - Normalize: Match GROUP BY against target list and re-use param refs - PL/pgSQL: Setup namespace items for parameters, support RECORD types - This significantly improves parsing for PL/pgSQL functions, to the extent that most functions should now parse successfully - Normalize: Don't modify constants in TypeName typmods/arrayBounds fields - 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) * Fix build on FreeBSD ([#222](https://github.com/pganalyze/pg_query/pull/222)) * Add workaround for Ruby garbage collection bug ([#227](https://github.com/pganalyze/pg_query/pull/227)) - The Ruby interpreter has a bug in `String#concat` where the appended array may be garbage collected prematurely because the compiler optimized out a Ruby stack variable. We now call `to_ary` on the Protobuf object to ensure the array lands on the Ruby stack so the garbage collector sees it. - The real fix in the interpreter is described in https://bugs.ruby-lang.org/issues/18140#note-2, but most current Ruby interpreters won't have this fix for some time. * Table/function extraction: Support subselects and LATERAL better ([#229](https://github.com/pganalyze/pg_query/pull/229)) - This reworks the parsing logic so we don't ignore certain kinds of subselects. ## 2.1.0 2021-07-04 * Update to libpg_query 13-2.0.6 - Update to Postgres 13.3 patch release - Normalize: Don't touch "GROUP BY 1" and "ORDER BY 1" expressions, keep original text - Fingerprint: Cache list item hashes to fingerprint complex queries faster - Deparser: Emit the RangeVar catalogname if present - Fix crash in pg_scan function when encountering backslash escapes * Support extracting functions from a parsed query ([#147](https://github.com/pganalyze/pg_query/pull/147)) - Adds new `functions`, `ddl_functions` and `call_functions` methods - Note that functions are identified by their name only, not their full type definition, since raw query parsetrees don't contain sufficient data to identify the types of arguments when functions are called * Relax google-protobuf dependency ([#213](https://github.com/pganalyze/pg_query/pull/213)) * Update google-protobuf to 3.17.1 ([#212](https://github.com/pganalyze/pg_query/pull/212)) - google-protobuf 3.15.x has a bug that causes a seg fault in Ruby under certain conditions (https://github.com/protocolbuffers/protobuf/pull/8639). Use google-protobuf 3.17.1 instead. * Use Protobuf definition for determining JSON field names - Note you may see a breaking change if you were using `PgQuery::ParseResult.encode_json` to map the protobuf result to JSON, since this now respects the intended JSON names from the Proto3 definition (instead of the differently formatted Protobuf field names) * Rakefile: Fix "rake clean" by using CLEAN.include instead of CLEAN.<< * Find tables inside COALESCE/MIN/MAX functions, UPDATE FROM list * Extconf: Add library include path using $INCFLAGS, list it first - This ensures any system installed libpg_query gets considered after the bundled libpg_query, avoiding errors where the wrong header files are used. ## 2.0.3 2021-04-05 * Update to libpg_query 13-2.0.4 - Normalize: Fix handling of two subsequent DefElem elements (avoids crash) - Deparser: Fix crash in CopyStmt with HEADER or FREEZE inside WITH parens ## 2.0.2 2021-03-31 * `COALESCE` arguments are now included in `#filter_columns` * Improve error message for protobuf parse failures * Extconf: Fix object path regexp - This accidentally replaced `.c` in the wrong parts of the path in some cases, causing build failures * Update to libpg_query 13-2.0.2 - Fix ARM builds: Avoid dependency on cpuid.h header - Simplify deparser of TableLikeClause - Fix asprintf warnings by ensuring _GNU_SOURCE is set early enough ## 2.0.1 2021-03-18 * Fix gemspec to correctly reference include files - This would have shown as a build failure when using the published `2.0.0` gem ## 2.0.0 2021-03-18 * Update to PostgreSQL 13 parser * Update to libpg_query v2, and new Protobuf-based format * WARNING: This is a breaking change if you are directly interacting with the parsetree (helpers like `table` and such still work the same way) * Use actual Ruby classes for parser result, instead of decoded JSON * This is essentialy to enable easy and fast two-way communication with the C library, and as a bonus makes for a better interaction on the Ruby side, as we are handling actual objects instead of hashes and arrays. * Use new deparser maintained directly in libpg_query * This replaces the complete Ruby deparser with a new, more complete deparser that is directly maintained in libpg_query. Further deparser improvements should be directly contributed to [libpg_query] * Tables helper: Return more details through `#tables_with_details` method * This is renamed from the previously badly named `#tables_with_types` method. Note that this change should not affect the output of the primary `tables` helper. * Replace on-demand libpg_query source download with bundled source code * Its unnecessary to download the source on-demand, and makes this more complex than it needs to be. Instead, introduce a new "update_source" rake task that can be called to refresh the source for a specified revision. * Re-implement smart truncation without requiring a special node type * This ensures the `#truncate` method works with the new deparser, without the C level code needing to know about it. We may add it in the C library in the future for edge cases that can't be covered by this slightly hack-ish approach, but for now this avoids unnecessary C library deparser modifications with non-standard node types. * Update Ruby fingerprinting to new fingerprint format and XXH3 hash * Note that its recommended to use `PgQuery.fingerprint` for performance reasons, but when the tree has been modified, it can be convenient to run a Ruby-side fingerprint instead of the C-based one that is faster. ## 1.3.0 2020-12-28 * Incorporate newer libpg_query updates in 10-1.0.3 and 10-1.0.4 * Adds support for running on ARM * Fixes an asprintf warning during builds * Updates to newer Postgres 10 patch release (10.15) * Deparsing improvements by [@emin100] * Add support for additional DROP statements ([#147](https://github.com/pganalyze/pg_query/pull/147)) * Fix `CREATE TABLE AS` - Support without `TEMP`, Add `ON COMMIT` ([#149](https://github.com/pganalyze/pg_query/pull/149)) * Empty target list support ([#156](https://github.com/pganalyze/pg_query/pull/156)) * `UNION` parentheses ([#158](https://github.com/pganalyze/pg_query/pull/158)) * `OVERLAY` keyword function ([#161](https://github.com/pganalyze/pg_query/pull/161)) * Array indirection ([#162](https://github.com/pganalyze/pg_query/pull/162)) * `ARRAY` functions ([#163](https://github.com/pganalyze/pg_query/pull/163)) * Correctly handle column names that need escaping in `INSERT` and `UPDATE` statements ([#164](https://github.com/pganalyze/pg_query/pull/164)) * `INSERT INTO ON CONFLICT` ([#166](https://github.com/pganalyze/pg_query/pull/166)) * `LATERAL JOIN` ([#168](https://github.com/pganalyze/pg_query/pull/168)) * `UPDATE FROM` clause ([#170](https://github.com/pganalyze/pg_query/pull/170)) * `SELECT` aggregate `FILTER` ([#175](https://github.com/pganalyze/pg_query/pull/175)) * `INTERSECT` operator ([#176](https://github.com/pganalyze/pg_query/pull/176)) * Deparsing: Improve handling of boolean type casts [@himanshu-pro] & [@emin100] * `tables` method: Find tables in the subquery of `CREATE TABLE AS` ([#172](https://github.com/pganalyze/pg_query/pull/172)) [@Tassosb] * Support Ruby 3.0, verify SHA256 checksum of downloaded libpg_query ([#178](https://github.com/pganalyze/pg_query/pull/178)) [@stanhu] * Verify SHA256 checksum to guard against any malicious attempts to change the archive * Use `URI.open` to fix Ruby 3.0 support ## 1.2.0 2019-11-10 * Reduce escaped keywords to Postgres-specific keywords, and ignore unreserved keywords * This matches the behaviour of Postgres' quote_identifier function, and avoids problems when doing text comparisons with output involving that function * Note that this will lead to different output than in earlier pg_query versions, in some cases ## 1.1.1 2019-11-10 * Deparsing improvements by [@emin100] * Deparse `ILIKE`, `COLLATE` and `DISCARD` ([#133](https://github.com/pganalyze/pg_query/pull/133)) * `CREATE CAST` ([#136](https://github.com/pganalyze/pg_query/pull/136)) * `CREATE SCHEMA` ([#136](https://github.com/pganalyze/pg_query/pull/136)) * `UNION`, `UNION ALL` and `EXCEPT` in `SELECT` queries ([#136](https://github.com/pganalyze/pg_query/pull/136)) * `CREATE DOMAIN` ([#145](https://github.com/pganalyze/pg_query/pull/145)) * Subquery indirection ([#157](https://github.com/pganalyze/pg_query/pull/157)) * Fix Type Cast Parentheses Problem ([#152](https://github.com/pganalyze/pg_query/pull/152)) * `SELECT INTO` ([#151](https://github.com/pganalyze/pg_query/pull/151)) * `SET DEFAULT` in `INSERT INTO` ([#154](https://github.com/pganalyze/pg_query/pull/154)) * `REVOKE` ([#155](https://github.com/pganalyze/pg_query/pull/155)) * `PREPARE` and `EXECUTE` ([#148](https://github.com/pganalyze/pg_query/pull/148)) * `INSERT INTO ... RETURNING` ([#153](https://github.com/pganalyze/pg_query/pull/153)) * Fix Alter .. `RENAME SQL` ([#146](https://github.com/pganalyze/pg_query/pull/146)) * Deparsing improvements by [@herwinw] * Fix subquery in `COPY` in deparse ([#112](https://github.com/pganalyze/pg_query/pull/112)) * Function call indirection ([#116](https://github.com/pganalyze/pg_query/pull/116)) * Function without parameters ([#117](https://github.com/pganalyze/pg_query/pull/117)) * `CREATE AGGREGATE` * `CREATE OPERATOR` * `CREATE TYPE` * `GRANT` statements * `DROP SCHEMA` * Deparsing improvements by [@akiellor] * Named window functions ([#150](https://github.com/pganalyze/pg_query/pull/150)) * Deparsing improvements by [@himanshu] * Arguments in custom types ([#143](https://github.com/pganalyze/pg_query/pull/143)) * Use "double precision" instead of "double" type name ([#139](https://github.com/pganalyze/pg_query/pull/139)) * Use explicit -z flag to support OpenBSD tar ([#134](https://github.com/pganalyze/pg_query/pull/134)) [@sirn] * Add Ruby 2.6 to Travis tests * Escape identifiers in more cases, if necessary ## 1.1.0 2018-10-04 * Deparsing improvements by [@herwinw] * Add `NULLS FIRST`/`LAST` to `ORDER BY` [#95](https://github.com/pganalyze/pg_query/pull/95) * `VACUUM` [#97](https://github.com/pganalyze/pg_query/pull/97) * `UPDATE` with multiple columns [#99](https://github.com/pganalyze/pg_query/pull/99) * `DISTINCT ON` [#101](https://github.com/pganalyze/pg_query/pull/101) * `CREATE TABLE AS` [#102](https://github.com/pganalyze/pg_query/pull/102) * SQL value functions [#103](https://github.com/pganalyze/pg_query/pull/103) * `LOCK` [#105](https://github.com/pganalyze/pg_query/pull/105) * `EXPLAIN` [#107](https://github.com/pganalyze/pg_query/pull/107) * `COPY` [#108](https://github.com/pganalyze/pg_query/pull/108) * `DO` [#109](https://github.com/pganalyze/pg_query/pull/109) * Ignore pg_query.so in git checkout [#110](https://github.com/pganalyze/pg_query/pull/110) [@herwinw] * Prefer `__dir__` over `File.dirname(__FILE__)` [#110](https://github.com/pganalyze/pg_query/pull/104) [@herwinw] ## 1.0.2 2018-04-11 * Deparsing improvements * `SELECT DISTINCT` clause [#77](https://github.com/pganalyze/pg_query/pull/77) [@Papierkorb] * "`CASE expr WHEN ... END`" clause [#78](https://github.com/pganalyze/pg_query/pull/78) [@Papierkorb] * `LEFT`/`RIGHT`/`FULL`/`NATURAL JOIN` [#79](https://github.com/pganalyze/pg_query/pull/79) [@Papierkorb] * `SELECT` that includes schema name [#80](https://github.com/pganalyze/pg_query/pull/80) [@jcsjcs] ## 1.0.1 2018-02-02 * Parse CTEs and nested selects in INSERT/UPDATE [#76](https://github.com/pganalyze/pg_query/pull/76) [@jcoleman] * Drop explicit json dependency [#74](https://github.com/pganalyze/pg_query/pull/74) [@yuki24] ## 1.0.0 2017-10-31 * IMPORTANT: Major version bump to indicate backwards incompatible parse tree change! * Update to Postgres 10 parser and fingerprint version 2 - This is a backwards-incompatible change in parser output format, although it should be relatively easy to update most programs. This can't be avoided since Postgres does not guarantee parse trees stay the same across versions ## 0.13.5 2017-10-26 * Update to libpg_query 9.5-1.7.1 - Allow "`$1 FROM $2`" to be parsed (new with pg_stat_statements in Postgres 10) ## 0.13.4 2017-10-20 * Update to libpg_query 9.5-1.7.0 - Fixes compilation old gcc before 4.6.0 [#73](https://github.com/pganalyze/pg_query/issues/73) ## 0.13.3 2017-09-04 * Fix table detection for SELECTs that have sub-SELECTs without `FROM` clause [#69](https://github.com/pganalyze/pg_query/issues/69) ## 0.13.2 2017-08-10 * Support table detection in sub-SELECTs in `JOIN`s [#68](https://github.com/pganalyze/pg_query/pull/65) [@seanmdick] * Legacy ".parsetree" helper: Fix "Between" and "In" operator does not have "AEXPR" [#66](https://github.com/pganalyze/pg_query/issues/66) * For new applications please use ".tree" method which uses the native structure returned from libpg_query which resembles Postgres node names more closely ## 0.13.1 2017-08-03 * Fix regression in 0.13.1 that broke ".tables" logic for `COPY` statements that don't have a target table (i.e. are reading out data vs copying in) ## 0.13.0 2017-07-30 * Introduce split between SELECT/DML/DDL for tables method [#65](https://github.com/pganalyze/pg_query/pull/65) [@chrisfrommann] * Backwards compatible, use the new select_tables/dml_tables/ddl_tables to access the categorized table references * Update libpg_query to 9.5-1.6.2 * Update to 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 ## 0.12.1 2017-07-29 * Update libpg_query to 9.5-1.6.1 * Update to Fingerprinting Version 1.2 * Ignore portalname in DeclareCursorStmt, FetchStmt and ClosePortalStmt ## 0.12.0 2017-07-29 * Update libpg_query to 9.5-1.6.0 * BREAKING CHANGE in PgQuery.normalize(..) output * This matches the change in the upcoming Postgres 10, and makes it easier to migrate applications to the new normalization format using $1..$N instead of ? ## 0.11.5 2017-07-09 * Deparse coldeflist [#64](https://github.com/pganalyze/pg_query/pull/64) [@jcsjcs] * Use Integer class for checking integer instead of Fixnum [#62](https://github.com/pganalyze/pg_query/pull/62) [@makimoto] ## 0.11.4 2017-01-18 * Compatibility with Ruby 2.4 [#59](https://github.com/pganalyze/pg_query/pull/59) [@merqlove] * Deparse varchar and numeric casts without arguments [#61](https://github.com/pganalyze/pg_query/pull/61) [@jcsjcs] ## 0.11.3 2016-12-06 * Update to newest libpg_query version (9.5-1.4.2) * Cut off fingerprints at 100 nodes deep to avoid excessive runtimes/memory * Fix warning on Linux due to missing asprintf include * Improved deparsing [@jcsjcs] * Float [#54](https://github.com/pganalyze/pg_query/pull/54) * `BETWEEN` [#55](https://github.com/pganalyze/pg_query/pull/55) * `NULLIF` [#56](https://github.com/pganalyze/pg_query/pull/56) * `SELECT NULL` and BooleanTest [#57](https://github.com/pganalyze/pg_query/pull/57) * Fix build on BSD systems [#58](https://github.com/pganalyze/pg_query/pull/58) [@myfreeweb] ## 0.11.2 2016-06-27 * Update to newest libpg_query version (9.5-1.4.1) * This release makes sure we work correctly in threaded environments ## 0.11.1 2016-06-26 * Updated fingerprinting logic to version 1.1 * Fixes an issue with UpdateStmt target lists being ignored * Update to newest libpg_query version (9.5-1.4.0) ## 0.11.0 2016-06-22 * Improved table name analysis (`#tables` method) * Don't include CTE names, make them accessible as `#cte_names` instead [#52](https://github.com/pganalyze/pg_query/issues/52) * Include table names in target list sub selects [#38](https://github.com/pganalyze/pg_query/issues/38) * Add support for `ORDER`/`GROUP BY`, `HAVING`, and booleans in `WHERE` [#53](https://github.com/pganalyze/pg_query/pull/53) [@jcoleman] * Fix parsing of `DROP TYPE` statements ## 0.10.0 2016-05-31 * Based on PostgreSQL 9.5.3 * Use LLVM extracted parser for significantly improved build times (via libpg_query) * Deparsing Improvements * `SET` statements [#48](https://github.com/pganalyze/pg_query/pull/48) [@Winslett] * `LIKE`/`NOT LIKE` [#49](https://github.com/pganalyze/pg_query/pull/49) [@Winslett] * `CREATE FUNCTION` improvements [#50](https://github.com/pganalyze/pg_query/pull/50) [@Winslett] ## 0.9.2 2016-05-03 * Fix issue with A_CONST string values in `.parsetree` compatibility layer (Fixes [#47](https://github.com/pganalyze/pg_query/issues/47)) ## 0.9.1 2016-04-20 * Add support for Ruby 1.9 (Fixes [#44](https://github.com/pganalyze/pg_query/issues/44)) ## 0.9.0 2016-04-17 * Based on PostgreSQL 9.5.2 * NOTE: Output format for the parse tree has changed (backwards incompatible!), it is recommended you extensively test any direct reading/modification of the tree data in your own code * You can use the `.parsetree` translator method to ease the transition, note however that there are still a few incompatible changes * New `.fingerprint` method (backwards incompatible as well), see https://github.com/lfittl/libpg_query/wiki/Fingerprinting * Removes PostgreSQL source and tarball after build process has finished, to reduce diskspace requirements of the installed gem ## 0.8.0 2016-03-06 * Use fixed git version for libpg_query (PostgreSQL 9.4 based) * NOTE: 0.8 will be the last series with the initial parse tree format, 0.9 will introduce a newer, more stable, but backwards incompatible parse tree format ## 0.7.2 2015-12-20 * Deparsing * Quote all column refs [#40](https://github.com/pganalyze/pg_query/pull/40) [@avinoamr] * Quote all range vars [#43](https://github.com/pganalyze/pg_query/pull/43) [@avinoamr] * Support for `COUNT(DISTINCT ...)` [#42](https://github.com/pganalyze/pg_query/pull/42) [@avinoamr] ## 0.7.1 2015-11-17 * Abstracted parser access into libpg_query [#24](https://github.com/pganalyze/pg_query/pull/35) * libpg_query * Use UTF-8 encoding for parsing [#4](https://github.com/lfittl/libpg_query/pull/4) [@zhm] * Add type to A_CONST nodes[#5](https://github.com/lfittl/libpg_query/pull/5) [@zhm] ## 0.7.0 2015-10-17 * Restructure build process to use upstream tarballs [#35](https://github.com/pganalyze/pg_query/pull/35) * Avoid bison/flex dependency to make deployment easier [#31](https://github.com/pganalyze/pg_query/issues/31) * Solve issues with deployments to Heroku [#32](https://github.com/pganalyze/pg_query/issues/32) * Deparsing * `HAVING` and `FOR UPDATE` [#36](https://github.com/pganalyze/pg_query/pull/36) [@JackDanger] ## 0.6.4 2015-10-01 * Deparsing * Constraints & Interval Types [#28](https://github.com/pganalyze/pg_query/pull/28) [@JackDanger] * Cross joins [#29](https://github.com/pganalyze/pg_query/pull/29) [@mme] * `ALTER TABLE` [#30](https://github.com/pganalyze/pg_query/pull/30) [@JackDanger] * `LIMIT and OFFSET` [#33](https://github.com/pganalyze/pg_query/pull/33) [@jcsjcs] ## 0.6.3 2015-08-20 * Deparsing * `COUNT(*)` [@JackDanger] * Window clauses [Chris Martin] * `CREATE TABLE`/`VIEW/FUNCTION` [@JackDanger] * Return exact location for parser errors [@JackDanger] ## 0.6.2 2015-08-06 * Speed up gem install by not generating rdoc/ri for the Postgres source ## 0.6.1 2015-08-06 * Deparsing: Support `WITH` clauses in `INSERT`/`UPDATE`/`DELETE` [@JackDanger] * Make sure gemspec includes all necessary files ## 0.6.0 2015-08-05 * Deparsing (experimental) * Turns parse trees into SQL again * New truncate method to smartly truncate based on less important query parts * Thanks to [@mme] & [@JackDanger] for their contributions * Restructure extension C code * Add table/filter columns support for CTEs * Extract views as tables from `CREATE`/`REFRESH VIEW` * Refactor code using generic treewalker * fingerprint: Normalize `IN` lists * param_refs: Fix length attribute in result ## 0.5.0 2015-03-26 * Query fingerprinting * Filter columns (aka columns referenced in a query's `WHERE` clause) * Parameter references: Returns all `$1`/`$2`/etc like references in the query with their location * Remove dependency on active_support ## 0.4.1 2014-12-18 * Fix compilation of C extension * Fix gemspec ## 0.4.0 2014-12-18 * Speed up build time by only building necessary objects * PostgreSQL 9.4 parser See git commit log for previous releases. [libpg_query]: https://github.com/pganalyze/libpg_query [@emin100]: https://github.com/emin100 [@akiellor]: https://github.com/akiellor [@himanshu-pro]: https://github.com/himanshu-pro [@himanshu]: https://github.com/himanshu [@Tassosb]: https://github.com/Tassosb [@herwinw]: https://github.com/herwinw [@stanhu]: https://github.com/stanhu [@Papierkorb]: https://github.com/Papierkorb [@jcsjcs]: https://github.com/jcsjcs [@jcoleman]: https://github.com/jcoleman [@yuki24]: https://github.com/yuki24 [@seanmdick]: https://github.com/seanmdick [@chrisfrommann]: https://github.com/chrisfrommann [@makimoto]: https://github.com/makimoto [@merqlove]: https://github.com/merqlove [@myfreeweb]: https://github.com/myfreeweb [@Winslett]: https://github.com/Winslett [@avinoamr]: https://github.com/avinoamr [@zhm]: https://github.com/zhm [@mme]: https://github.com/mme [@JackDanger]: https://github.com/JackDanger [Chris Martin]: https://github.com/cmrtn [@sirn]: https://github.com/sirn pg_query-4.2.3/LICENSE0000644000004100000410000000272314510636647014430 0ustar www-datawww-dataCopyright (c) 2014, pganalyze Team 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 pganalyze 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.pg_query-4.2.3/Rakefile0000644000004100000410000000635514510636647015075 0ustar www-datawww-datarequire 'bundler/gem_tasks' require 'rake/clean' require 'rake/extensiontask' require 'rspec/core/rake_task' require 'rubocop/rake_task' require 'open-uri' LIB_PG_QUERY_TAG = '15-4.2.3'.freeze LIB_PG_QUERY_SHA256SUM = '8b820d63442b1677ce4f0df2a95b3fafdbc520a82901def81217559ec4df9e6b'.freeze Rake::ExtensionTask.new 'pg_query' do |ext| ext.lib_dir = 'lib/pg_query' end RSpec::Core::RakeTask.new RuboCop::RakeTask.new task spec: :compile task default: %i[spec lint] task test: :spec task lint: :rubocop CLEAN.include 'tmp/**/*' CLEAN.include 'ext/pg_query/*.o' CLEAN.include 'lib/pg_query/pg_query.bundle' task :update_source do workdir = File.join(__dir__, 'tmp') libdir = File.join(workdir, 'libpg_query-' + LIB_PG_QUERY_TAG) filename = File.join(workdir, 'libpg_query-' + LIB_PG_QUERY_TAG + '.tar.gz') testfilesdir = File.join(__dir__, 'spec/files') extdir = File.join(__dir__, 'ext/pg_query') extbakdir = File.join(workdir, 'extbak') unless File.exist?(filename) system("mkdir -p #{workdir}") File.open(filename, 'wb') do |target_file| URI.open('https://codeload.github.com/pganalyze/libpg_query/tar.gz/' + LIB_PG_QUERY_TAG, 'rb') do |read_file| target_file.write(read_file.read) end end checksum = Digest::SHA256.hexdigest(File.read(filename)) if checksum != LIB_PG_QUERY_SHA256SUM raise "SHA256 of #{filename} does not match: got #{checksum}, expected #{LIB_PG_QUERY_SHA256SUM}" end end unless Dir.exist?(libdir) system("tar -xzf #{filename} -C #{workdir}") || raise('ERROR') end # Backup important files from ext dir system("rm -fr #{extbakdir}") system("mkdir -p #{extbakdir}") system("cp -a #{extdir}/pg_query_ruby{.c,.sym,_freebsd.sym} #{extdir}/extconf.rb #{extbakdir}") FileUtils.rm_rf extdir # Reduce everything down to one directory system("mkdir -p #{extdir}") system("cp -a #{libdir}/src/* #{extdir}/") system("mv #{extdir}/postgres/* #{extdir}/") system("rmdir #{extdir}/postgres") system("cp -a #{libdir}/pg_query.h #{extdir}/include") # Make sure every .c file in the top-level directory is its own translation unit system("mv #{extdir}/*{_conds,_defs,_helper}.c #{extdir}/include") # Protobuf definitions system("protoc --proto_path=#{libdir}/protobuf --ruby_out=#{File.join(__dir__, 'lib/pg_query')} #{libdir}/protobuf/pg_query.proto") system("mkdir -p #{extdir}/include/protobuf") system("cp -a #{libdir}/protobuf/*.h #{extdir}/include/protobuf") system("cp -a #{libdir}/protobuf/*.c #{extdir}/") # Protobuf library code system("mkdir -p #{extdir}/include/protobuf-c") system("cp -a #{libdir}/vendor/protobuf-c/*.h #{extdir}/include") system("cp -a #{libdir}/vendor/protobuf-c/*.h #{extdir}/include/protobuf-c") system("cp -a #{libdir}/vendor/protobuf-c/*.c #{extdir}/") # xxhash library code system("mkdir -p #{extdir}/include/xxhash") system("cp -a #{libdir}/vendor/xxhash/*.h #{extdir}/include") system("cp -a #{libdir}/vendor/xxhash/*.h #{extdir}/include/xxhash") system("cp -a #{libdir}/vendor/xxhash/*.c #{extdir}/") # Other support files system("cp -a #{libdir}/testdata/* #{testfilesdir}") # Copy back the custom ext files system("cp -a #{extbakdir}/pg_query_ruby{.c,.sym,_freebsd.sym} #{extbakdir}/extconf.rb #{extdir}") end pg_query-4.2.3/lib/0000755000004100000410000000000014510636647014165 5ustar www-datawww-datapg_query-4.2.3/lib/pg_query/0000755000004100000410000000000014510636647016020 5ustar www-datawww-datapg_query-4.2.3/lib/pg_query/parse.rb0000644000004100000410000003502514510636647017464 0ustar www-datawww-datamodule PgQuery def self.parse(query) result, stderr = parse_protobuf(query) begin result = if PgQuery::ParseResult.method(:decode).arity == 1 PgQuery::ParseResult.decode(result) elsif PgQuery::ParseResult.method(:decode).arity == -1 PgQuery::ParseResult.decode(result, recursion_limit: 1_000) else raise ArgumentError, 'Unsupported protobuf Ruby API' end rescue Google::Protobuf::ParseError => e raise PgQuery::ParseError.new(format('Failed to parse tree: %s', e.message), __FILE__, __LINE__, -1) end warnings = [] stderr.each_line do |line| next unless line[/^WARNING/] warnings << line.strip end PgQuery::ParserResult.new(query, result, warnings) end class ParserResult attr_reader :query attr_reader :tree attr_reader :warnings def initialize(query, tree, warnings = []) @query = query @tree = tree @warnings = warnings @tables = nil @aliases = nil @cte_names = nil @functions = nil end def dup_tree ParseResult.decode(ParseResult.encode(@tree)) end def tables tables_with_details.map { |t| t[:name] }.uniq end def select_tables tables_with_details.select { |t| t[:type] == :select }.map { |t| t[:name] }.uniq end def dml_tables tables_with_details.select { |t| t[:type] == :dml }.map { |t| t[:name] }.uniq end def ddl_tables tables_with_details.select { |t| t[:type] == :ddl }.map { |t| t[:name] }.uniq end # Returns function names, ignoring their argument types. This may be insufficient # if you need to disambiguate two functions with the same name but different argument # types. def functions functions_with_details.map { |f| f[:function] }.uniq end def ddl_functions functions_with_details.select { |f| f[:type] == :ddl }.map { |f| f[:function] }.uniq end def call_functions functions_with_details.select { |f| f[:type] == :call }.map { |f| f[:function] }.uniq end def cte_names load_objects! if @cte_names.nil? @cte_names end def aliases load_objects! if @aliases.nil? @aliases end def tables_with_details load_objects! if @tables.nil? @tables end def functions_with_details load_objects! if @functions.nil? @functions end protected # Parses the query and finds table and function references # # Note we use ".to_ary" on arrays from the Protobuf library before # passing them to concat, because of https://bugs.ruby-lang.org/issues/18140 def load_objects! # rubocop:disable Metrics/CyclomaticComplexity @tables = [] # types: select, dml, ddl @cte_names = [] @aliases = {} @functions = [] # types: call, ddl statements = @tree.stmts.dup.to_a.map(&:stmt) from_clause_items = [] # types: select, dml, ddl subselect_items = [] loop do statement = statements.shift if statement case statement.node when :list statements += statement.list.items # The following statement types do not modify tables and are added to from_clause_items # (and subsequently @tables) when :select_stmt subselect_items.concat(statement.select_stmt.target_list.to_ary) subselect_items << statement.select_stmt.where_clause if statement.select_stmt.where_clause subselect_items.concat(statement.select_stmt.sort_clause.collect { |h| h.sort_by.node }) subselect_items.concat(statement.select_stmt.group_clause.to_ary) subselect_items << statement.select_stmt.having_clause if statement.select_stmt.having_clause case statement.select_stmt.op when :SETOP_NONE (statement.select_stmt.from_clause || []).each do |item| from_clause_items << { item: item, type: :select } end when :SETOP_UNION, :SETOP_EXCEPT, :SETOP_INTERSECT statements << PgQuery::Node.new(select_stmt: statement.select_stmt.larg) if statement.select_stmt.larg statements << PgQuery::Node.new(select_stmt: statement.select_stmt.rarg) if statement.select_stmt.rarg end if statement.select_stmt.with_clause cte_statements, cte_names = statements_and_cte_names_for_with_clause(statement.select_stmt.with_clause) @cte_names.concat(cte_names) statements.concat(cte_statements) end if statement.select_stmt.into_clause from_clause_items << { item: PgQuery::Node.new(range_var: statement.select_stmt.into_clause.rel), type: :ddl } end # The following statements modify the contents of a table when :insert_stmt, :update_stmt, :delete_stmt value = statement.public_send(statement.node) from_clause_items << { item: PgQuery::Node.new(range_var: value.relation), type: :dml } statements << value.select_stmt if statement.node == :insert_stmt && value.select_stmt if statement.node == :update_stmt value.from_clause.each do |item| from_clause_items << { item: item, type: :select } end subselect_items.concat(statement.update_stmt.target_list.to_ary) end subselect_items << statement.update_stmt.where_clause if statement.node == :update_stmt && statement.update_stmt.where_clause subselect_items << statement.delete_stmt.where_clause if statement.node == :delete_stmt && statement.delete_stmt.where_clause if statement.node == :delete_stmt statement.delete_stmt.using_clause.each do |using_clause| from_clause_items << { item: using_clause, type: :select } end end if value.with_clause cte_statements, cte_names = statements_and_cte_names_for_with_clause(value.with_clause) @cte_names.concat(cte_names) statements.concat(cte_statements) end when :copy_stmt from_clause_items << { item: PgQuery::Node.new(range_var: statement.copy_stmt.relation), type: :dml } if statement.copy_stmt.relation statements << statement.copy_stmt.query # The following statement types are DDL (changing table structure) when :alter_table_stmt case statement.alter_table_stmt.objtype when :OBJECT_INDEX # Index # rubocop:disable Lint/EmptyWhen # ignore `ALTER INDEX index_name` else from_clause_items << { item: PgQuery::Node.new(range_var: statement.alter_table_stmt.relation), type: :ddl } end when :create_stmt from_clause_items << { item: PgQuery::Node.new(range_var: statement.create_stmt.relation), type: :ddl } when :create_table_as_stmt if statement.create_table_as_stmt.into && statement.create_table_as_stmt.into.rel from_clause_items << { item: PgQuery::Node.new(range_var: statement.create_table_as_stmt.into.rel), type: :ddl } end statements << statement.create_table_as_stmt.query if statement.create_table_as_stmt.query when :truncate_stmt from_clause_items += statement.truncate_stmt.relations.map { |r| { item: r, type: :ddl } } when :view_stmt from_clause_items << { item: PgQuery::Node.new(range_var: statement.view_stmt.view), type: :ddl } statements << statement.view_stmt.query when :index_stmt from_clause_items << { item: PgQuery::Node.new(range_var: statement.index_stmt.relation), type: :ddl } statement.index_stmt.index_params.each do |p| next if p.index_elem.expr.nil? subselect_items << p.index_elem.expr end subselect_items << statement.index_stmt.where_clause if statement.index_stmt.where_clause when :create_trig_stmt from_clause_items << { item: PgQuery::Node.new(range_var: statement.create_trig_stmt.relation), type: :ddl } when :rule_stmt from_clause_items << { item: PgQuery::Node.new(range_var: statement.rule_stmt.relation), type: :ddl } when :vacuum_stmt from_clause_items += statement.vacuum_stmt.rels.map { |r| { item: PgQuery::Node.new(range_var: r.vacuum_relation.relation), type: :ddl } if r.node == :vacuum_relation } when :refresh_mat_view_stmt from_clause_items << { item: PgQuery::Node.new(range_var: statement.refresh_mat_view_stmt.relation), type: :ddl } when :drop_stmt objects = statement.drop_stmt.objects.map do |obj| case obj.node when :list obj.list.items.map { |obj2| obj2.string.sval if obj2.node == :string } when :string obj.string.sval end end case statement.drop_stmt.remove_type when :OBJECT_TABLE @tables += objects.map { |r| { name: r.join('.'), type: :ddl } } when :OBJECT_RULE, :OBJECT_TRIGGER @tables += objects.map { |r| { name: r[0..-2].join('.'), type: :ddl } } when :OBJECT_FUNCTION # Only one function can be dropped in a statement obj = statement.drop_stmt.objects[0].object_with_args @functions << { function: obj.objname.map { |f| f.string.sval }.join('.'), type: :ddl } end when :grant_stmt objects = statement.grant_stmt.objects case statement.grant_stmt.objtype when :OBJECT_COLUMN # Column # rubocop:disable Lint/EmptyWhen # FIXME when :OBJECT_TABLE # Table from_clause_items += objects.map { |o| { item: o, type: :ddl } } when :OBJECT_SEQUENCE # Sequence # rubocop:disable Lint/EmptyWhen # FIXME end when :lock_stmt from_clause_items += statement.lock_stmt.relations.map { |r| { item: r, type: :ddl } } # The following are other statements that don't fit into query/DML/DDL when :explain_stmt statements << statement.explain_stmt.query when :create_function_stmt @functions << { function: statement.create_function_stmt.funcname.map { |f| f.string.sval }.join('.'), type: :ddl } when :rename_stmt if statement.rename_stmt.rename_type == :OBJECT_FUNCTION original_name = statement.rename_stmt.object.object_with_args.objname.map { |f| f.string.sval }.join('.') new_name = statement.rename_stmt.newname @functions += [ { function: original_name, type: :ddl }, { function: new_name, type: :ddl } ] end when :prepare_stmt statements << statement.prepare_stmt.query end end next_item = subselect_items.shift if next_item case next_item.node when :list subselect_items += next_item.list.items.to_ary when :a_expr %w[lexpr rexpr].each do |side| elem = next_item.a_expr.public_send(side) next unless elem if elem.is_a?(Array) # FIXME: this needs to traverse a list subselect_items += elem else subselect_items << elem end end when :bool_expr subselect_items.concat(next_item.bool_expr.args.to_ary) when :coalesce_expr subselect_items.concat(next_item.coalesce_expr.args.to_ary) when :min_max_expr subselect_items.concat(next_item.min_max_expr.args.to_ary) when :res_target subselect_items << next_item.res_target.val when :sub_link statements << next_item.sub_link.subselect when :func_call subselect_items.concat(next_item.func_call.args.to_ary) @functions << { function: next_item.func_call.funcname.map { |f| f.string.sval }.join('.'), type: :call } when :case_expr subselect_items.concat(next_item.case_expr.args.map { |arg| arg.case_when.expr }) subselect_items.concat(next_item.case_expr.args.map { |arg| arg.case_when.result }) subselect_items << next_item.case_expr.defresult when :type_cast subselect_items << next_item.type_cast.arg end end next_item = from_clause_items.shift if next_item && next_item[:item] case next_item[:item].node when :join_expr from_clause_items << { item: next_item[:item].join_expr.larg, type: next_item[:type] } from_clause_items << { item: next_item[:item].join_expr.rarg, type: next_item[:type] } subselect_items << next_item[:item].join_expr.quals when :row_expr from_clause_items += next_item[:item].row_expr.args.map { |a| { item: a, type: next_item[:type] } } when :range_var rangevar = next_item[:item].range_var next if rangevar.schemaname.empty? && @cte_names.include?(rangevar.relname) table = [rangevar.schemaname, rangevar.relname].reject { |s| s.nil? || s.empty? }.join('.') @tables << { name: table, type: next_item[:type], location: rangevar.location, schemaname: (rangevar.schemaname unless rangevar.schemaname.empty?), relname: rangevar.relname, inh: rangevar.inh, relpersistence: rangevar.relpersistence } @aliases[rangevar.alias.aliasname] = table if rangevar.alias when :range_subselect statements << next_item[:item].range_subselect.subquery when :range_function subselect_items += next_item[:item].range_function.functions end end break if subselect_items.empty? && statements.empty? && from_clause_items.empty? end @tables.uniq! @cte_names.uniq! end def statements_and_cte_names_for_with_clause(with_clause) # FIXME statements = [] cte_names = [] with_clause.ctes.each do |item| next unless item.node == :common_table_expr cte_names << item.common_table_expr.ctename statements << item.common_table_expr.ctequery end [statements, cte_names] end end end pg_query-4.2.3/lib/pg_query/version.rb0000644000004100000410000000005614510636647020033 0ustar www-datawww-datamodule PgQuery VERSION = '4.2.3'.freeze end pg_query-4.2.3/lib/pg_query/pg_query_pb.rb0000644000004100000410000056630614510636647020701 0ustar www-datawww-data# Generated by the protocol buffer compiler. DO NOT EDIT! # source: pg_query.proto require 'google/protobuf' Google::Protobuf::DescriptorPool.generated_pool.build do add_file("pg_query.proto", :syntax => :proto3) do add_message "pg_query.ParseResult" do optional :version, :int32, 1 repeated :stmts, :message, 2, "pg_query.RawStmt" end add_message "pg_query.ScanResult" do optional :version, :int32, 1 repeated :tokens, :message, 2, "pg_query.ScanToken" end add_message "pg_query.Node" do oneof :node do optional :alias, :message, 1, "pg_query.Alias", json_name: "Alias" optional :range_var, :message, 2, "pg_query.RangeVar", json_name: "RangeVar" optional :table_func, :message, 3, "pg_query.TableFunc", json_name: "TableFunc" optional :var, :message, 4, "pg_query.Var", json_name: "Var" optional :param, :message, 5, "pg_query.Param", json_name: "Param" optional :aggref, :message, 6, "pg_query.Aggref", json_name: "Aggref" optional :grouping_func, :message, 7, "pg_query.GroupingFunc", json_name: "GroupingFunc" optional :window_func, :message, 8, "pg_query.WindowFunc", json_name: "WindowFunc" optional :subscripting_ref, :message, 9, "pg_query.SubscriptingRef", json_name: "SubscriptingRef" optional :func_expr, :message, 10, "pg_query.FuncExpr", json_name: "FuncExpr" optional :named_arg_expr, :message, 11, "pg_query.NamedArgExpr", json_name: "NamedArgExpr" optional :op_expr, :message, 12, "pg_query.OpExpr", json_name: "OpExpr" optional :distinct_expr, :message, 13, "pg_query.DistinctExpr", json_name: "DistinctExpr" optional :null_if_expr, :message, 14, "pg_query.NullIfExpr", json_name: "NullIfExpr" optional :scalar_array_op_expr, :message, 15, "pg_query.ScalarArrayOpExpr", json_name: "ScalarArrayOpExpr" optional :bool_expr, :message, 16, "pg_query.BoolExpr", json_name: "BoolExpr" optional :sub_link, :message, 17, "pg_query.SubLink", json_name: "SubLink" optional :sub_plan, :message, 18, "pg_query.SubPlan", json_name: "SubPlan" optional :alternative_sub_plan, :message, 19, "pg_query.AlternativeSubPlan", json_name: "AlternativeSubPlan" optional :field_select, :message, 20, "pg_query.FieldSelect", json_name: "FieldSelect" optional :field_store, :message, 21, "pg_query.FieldStore", json_name: "FieldStore" optional :relabel_type, :message, 22, "pg_query.RelabelType", json_name: "RelabelType" optional :coerce_via_io, :message, 23, "pg_query.CoerceViaIO", json_name: "CoerceViaIO" optional :array_coerce_expr, :message, 24, "pg_query.ArrayCoerceExpr", json_name: "ArrayCoerceExpr" optional :convert_rowtype_expr, :message, 25, "pg_query.ConvertRowtypeExpr", json_name: "ConvertRowtypeExpr" optional :collate_expr, :message, 26, "pg_query.CollateExpr", json_name: "CollateExpr" optional :case_expr, :message, 27, "pg_query.CaseExpr", json_name: "CaseExpr" optional :case_when, :message, 28, "pg_query.CaseWhen", json_name: "CaseWhen" optional :case_test_expr, :message, 29, "pg_query.CaseTestExpr", json_name: "CaseTestExpr" optional :array_expr, :message, 30, "pg_query.ArrayExpr", json_name: "ArrayExpr" optional :row_expr, :message, 31, "pg_query.RowExpr", json_name: "RowExpr" optional :row_compare_expr, :message, 32, "pg_query.RowCompareExpr", json_name: "RowCompareExpr" optional :coalesce_expr, :message, 33, "pg_query.CoalesceExpr", json_name: "CoalesceExpr" optional :min_max_expr, :message, 34, "pg_query.MinMaxExpr", json_name: "MinMaxExpr" optional :sqlvalue_function, :message, 35, "pg_query.SQLValueFunction", json_name: "SQLValueFunction" optional :xml_expr, :message, 36, "pg_query.XmlExpr", json_name: "XmlExpr" optional :null_test, :message, 37, "pg_query.NullTest", json_name: "NullTest" optional :boolean_test, :message, 38, "pg_query.BooleanTest", json_name: "BooleanTest" optional :coerce_to_domain, :message, 39, "pg_query.CoerceToDomain", json_name: "CoerceToDomain" optional :coerce_to_domain_value, :message, 40, "pg_query.CoerceToDomainValue", json_name: "CoerceToDomainValue" optional :set_to_default, :message, 41, "pg_query.SetToDefault", json_name: "SetToDefault" optional :current_of_expr, :message, 42, "pg_query.CurrentOfExpr", json_name: "CurrentOfExpr" optional :next_value_expr, :message, 43, "pg_query.NextValueExpr", json_name: "NextValueExpr" optional :inference_elem, :message, 44, "pg_query.InferenceElem", json_name: "InferenceElem" optional :target_entry, :message, 45, "pg_query.TargetEntry", json_name: "TargetEntry" optional :range_tbl_ref, :message, 46, "pg_query.RangeTblRef", json_name: "RangeTblRef" optional :join_expr, :message, 47, "pg_query.JoinExpr", json_name: "JoinExpr" optional :from_expr, :message, 48, "pg_query.FromExpr", json_name: "FromExpr" optional :on_conflict_expr, :message, 49, "pg_query.OnConflictExpr", json_name: "OnConflictExpr" optional :into_clause, :message, 50, "pg_query.IntoClause", json_name: "IntoClause" optional :merge_action, :message, 51, "pg_query.MergeAction", json_name: "MergeAction" optional :raw_stmt, :message, 52, "pg_query.RawStmt", json_name: "RawStmt" optional :query, :message, 53, "pg_query.Query", json_name: "Query" optional :insert_stmt, :message, 54, "pg_query.InsertStmt", json_name: "InsertStmt" optional :delete_stmt, :message, 55, "pg_query.DeleteStmt", json_name: "DeleteStmt" optional :update_stmt, :message, 56, "pg_query.UpdateStmt", json_name: "UpdateStmt" optional :merge_stmt, :message, 57, "pg_query.MergeStmt", json_name: "MergeStmt" optional :select_stmt, :message, 58, "pg_query.SelectStmt", json_name: "SelectStmt" optional :return_stmt, :message, 59, "pg_query.ReturnStmt", json_name: "ReturnStmt" optional :plassign_stmt, :message, 60, "pg_query.PLAssignStmt", json_name: "PLAssignStmt" optional :alter_table_stmt, :message, 61, "pg_query.AlterTableStmt", json_name: "AlterTableStmt" optional :alter_table_cmd, :message, 62, "pg_query.AlterTableCmd", json_name: "AlterTableCmd" optional :alter_domain_stmt, :message, 63, "pg_query.AlterDomainStmt", json_name: "AlterDomainStmt" optional :set_operation_stmt, :message, 64, "pg_query.SetOperationStmt", json_name: "SetOperationStmt" optional :grant_stmt, :message, 65, "pg_query.GrantStmt", json_name: "GrantStmt" optional :grant_role_stmt, :message, 66, "pg_query.GrantRoleStmt", json_name: "GrantRoleStmt" optional :alter_default_privileges_stmt, :message, 67, "pg_query.AlterDefaultPrivilegesStmt", json_name: "AlterDefaultPrivilegesStmt" optional :close_portal_stmt, :message, 68, "pg_query.ClosePortalStmt", json_name: "ClosePortalStmt" optional :cluster_stmt, :message, 69, "pg_query.ClusterStmt", json_name: "ClusterStmt" optional :copy_stmt, :message, 70, "pg_query.CopyStmt", json_name: "CopyStmt" optional :create_stmt, :message, 71, "pg_query.CreateStmt", json_name: "CreateStmt" optional :define_stmt, :message, 72, "pg_query.DefineStmt", json_name: "DefineStmt" optional :drop_stmt, :message, 73, "pg_query.DropStmt", json_name: "DropStmt" optional :truncate_stmt, :message, 74, "pg_query.TruncateStmt", json_name: "TruncateStmt" optional :comment_stmt, :message, 75, "pg_query.CommentStmt", json_name: "CommentStmt" optional :fetch_stmt, :message, 76, "pg_query.FetchStmt", json_name: "FetchStmt" optional :index_stmt, :message, 77, "pg_query.IndexStmt", json_name: "IndexStmt" optional :create_function_stmt, :message, 78, "pg_query.CreateFunctionStmt", json_name: "CreateFunctionStmt" optional :alter_function_stmt, :message, 79, "pg_query.AlterFunctionStmt", json_name: "AlterFunctionStmt" optional :do_stmt, :message, 80, "pg_query.DoStmt", json_name: "DoStmt" optional :rename_stmt, :message, 81, "pg_query.RenameStmt", json_name: "RenameStmt" optional :rule_stmt, :message, 82, "pg_query.RuleStmt", json_name: "RuleStmt" optional :notify_stmt, :message, 83, "pg_query.NotifyStmt", json_name: "NotifyStmt" optional :listen_stmt, :message, 84, "pg_query.ListenStmt", json_name: "ListenStmt" optional :unlisten_stmt, :message, 85, "pg_query.UnlistenStmt", json_name: "UnlistenStmt" optional :transaction_stmt, :message, 86, "pg_query.TransactionStmt", json_name: "TransactionStmt" optional :view_stmt, :message, 87, "pg_query.ViewStmt", json_name: "ViewStmt" optional :load_stmt, :message, 88, "pg_query.LoadStmt", json_name: "LoadStmt" optional :create_domain_stmt, :message, 89, "pg_query.CreateDomainStmt", json_name: "CreateDomainStmt" optional :createdb_stmt, :message, 90, "pg_query.CreatedbStmt", json_name: "CreatedbStmt" optional :dropdb_stmt, :message, 91, "pg_query.DropdbStmt", json_name: "DropdbStmt" optional :vacuum_stmt, :message, 92, "pg_query.VacuumStmt", json_name: "VacuumStmt" optional :explain_stmt, :message, 93, "pg_query.ExplainStmt", json_name: "ExplainStmt" optional :create_table_as_stmt, :message, 94, "pg_query.CreateTableAsStmt", json_name: "CreateTableAsStmt" optional :create_seq_stmt, :message, 95, "pg_query.CreateSeqStmt", json_name: "CreateSeqStmt" optional :alter_seq_stmt, :message, 96, "pg_query.AlterSeqStmt", json_name: "AlterSeqStmt" optional :variable_set_stmt, :message, 97, "pg_query.VariableSetStmt", json_name: "VariableSetStmt" optional :variable_show_stmt, :message, 98, "pg_query.VariableShowStmt", json_name: "VariableShowStmt" optional :discard_stmt, :message, 99, "pg_query.DiscardStmt", json_name: "DiscardStmt" optional :create_trig_stmt, :message, 100, "pg_query.CreateTrigStmt", json_name: "CreateTrigStmt" optional :create_plang_stmt, :message, 101, "pg_query.CreatePLangStmt", json_name: "CreatePLangStmt" optional :create_role_stmt, :message, 102, "pg_query.CreateRoleStmt", json_name: "CreateRoleStmt" optional :alter_role_stmt, :message, 103, "pg_query.AlterRoleStmt", json_name: "AlterRoleStmt" optional :drop_role_stmt, :message, 104, "pg_query.DropRoleStmt", json_name: "DropRoleStmt" optional :lock_stmt, :message, 105, "pg_query.LockStmt", json_name: "LockStmt" optional :constraints_set_stmt, :message, 106, "pg_query.ConstraintsSetStmt", json_name: "ConstraintsSetStmt" optional :reindex_stmt, :message, 107, "pg_query.ReindexStmt", json_name: "ReindexStmt" optional :check_point_stmt, :message, 108, "pg_query.CheckPointStmt", json_name: "CheckPointStmt" optional :create_schema_stmt, :message, 109, "pg_query.CreateSchemaStmt", json_name: "CreateSchemaStmt" optional :alter_database_stmt, :message, 110, "pg_query.AlterDatabaseStmt", json_name: "AlterDatabaseStmt" optional :alter_database_refresh_coll_stmt, :message, 111, "pg_query.AlterDatabaseRefreshCollStmt", json_name: "AlterDatabaseRefreshCollStmt" optional :alter_database_set_stmt, :message, 112, "pg_query.AlterDatabaseSetStmt", json_name: "AlterDatabaseSetStmt" optional :alter_role_set_stmt, :message, 113, "pg_query.AlterRoleSetStmt", json_name: "AlterRoleSetStmt" optional :create_conversion_stmt, :message, 114, "pg_query.CreateConversionStmt", json_name: "CreateConversionStmt" optional :create_cast_stmt, :message, 115, "pg_query.CreateCastStmt", json_name: "CreateCastStmt" optional :create_op_class_stmt, :message, 116, "pg_query.CreateOpClassStmt", json_name: "CreateOpClassStmt" optional :create_op_family_stmt, :message, 117, "pg_query.CreateOpFamilyStmt", json_name: "CreateOpFamilyStmt" optional :alter_op_family_stmt, :message, 118, "pg_query.AlterOpFamilyStmt", json_name: "AlterOpFamilyStmt" optional :prepare_stmt, :message, 119, "pg_query.PrepareStmt", json_name: "PrepareStmt" optional :execute_stmt, :message, 120, "pg_query.ExecuteStmt", json_name: "ExecuteStmt" optional :deallocate_stmt, :message, 121, "pg_query.DeallocateStmt", json_name: "DeallocateStmt" optional :declare_cursor_stmt, :message, 122, "pg_query.DeclareCursorStmt", json_name: "DeclareCursorStmt" optional :create_table_space_stmt, :message, 123, "pg_query.CreateTableSpaceStmt", json_name: "CreateTableSpaceStmt" optional :drop_table_space_stmt, :message, 124, "pg_query.DropTableSpaceStmt", json_name: "DropTableSpaceStmt" optional :alter_object_depends_stmt, :message, 125, "pg_query.AlterObjectDependsStmt", json_name: "AlterObjectDependsStmt" optional :alter_object_schema_stmt, :message, 126, "pg_query.AlterObjectSchemaStmt", json_name: "AlterObjectSchemaStmt" optional :alter_owner_stmt, :message, 127, "pg_query.AlterOwnerStmt", json_name: "AlterOwnerStmt" optional :alter_operator_stmt, :message, 128, "pg_query.AlterOperatorStmt", json_name: "AlterOperatorStmt" optional :alter_type_stmt, :message, 129, "pg_query.AlterTypeStmt", json_name: "AlterTypeStmt" optional :drop_owned_stmt, :message, 130, "pg_query.DropOwnedStmt", json_name: "DropOwnedStmt" optional :reassign_owned_stmt, :message, 131, "pg_query.ReassignOwnedStmt", json_name: "ReassignOwnedStmt" optional :composite_type_stmt, :message, 132, "pg_query.CompositeTypeStmt", json_name: "CompositeTypeStmt" optional :create_enum_stmt, :message, 133, "pg_query.CreateEnumStmt", json_name: "CreateEnumStmt" optional :create_range_stmt, :message, 134, "pg_query.CreateRangeStmt", json_name: "CreateRangeStmt" optional :alter_enum_stmt, :message, 135, "pg_query.AlterEnumStmt", json_name: "AlterEnumStmt" optional :alter_tsdictionary_stmt, :message, 136, "pg_query.AlterTSDictionaryStmt", json_name: "AlterTSDictionaryStmt" optional :alter_tsconfiguration_stmt, :message, 137, "pg_query.AlterTSConfigurationStmt", json_name: "AlterTSConfigurationStmt" optional :create_fdw_stmt, :message, 138, "pg_query.CreateFdwStmt", json_name: "CreateFdwStmt" optional :alter_fdw_stmt, :message, 139, "pg_query.AlterFdwStmt", json_name: "AlterFdwStmt" optional :create_foreign_server_stmt, :message, 140, "pg_query.CreateForeignServerStmt", json_name: "CreateForeignServerStmt" optional :alter_foreign_server_stmt, :message, 141, "pg_query.AlterForeignServerStmt", json_name: "AlterForeignServerStmt" optional :create_user_mapping_stmt, :message, 142, "pg_query.CreateUserMappingStmt", json_name: "CreateUserMappingStmt" optional :alter_user_mapping_stmt, :message, 143, "pg_query.AlterUserMappingStmt", json_name: "AlterUserMappingStmt" optional :drop_user_mapping_stmt, :message, 144, "pg_query.DropUserMappingStmt", json_name: "DropUserMappingStmt" optional :alter_table_space_options_stmt, :message, 145, "pg_query.AlterTableSpaceOptionsStmt", json_name: "AlterTableSpaceOptionsStmt" optional :alter_table_move_all_stmt, :message, 146, "pg_query.AlterTableMoveAllStmt", json_name: "AlterTableMoveAllStmt" optional :sec_label_stmt, :message, 147, "pg_query.SecLabelStmt", json_name: "SecLabelStmt" optional :create_foreign_table_stmt, :message, 148, "pg_query.CreateForeignTableStmt", json_name: "CreateForeignTableStmt" optional :import_foreign_schema_stmt, :message, 149, "pg_query.ImportForeignSchemaStmt", json_name: "ImportForeignSchemaStmt" optional :create_extension_stmt, :message, 150, "pg_query.CreateExtensionStmt", json_name: "CreateExtensionStmt" optional :alter_extension_stmt, :message, 151, "pg_query.AlterExtensionStmt", json_name: "AlterExtensionStmt" optional :alter_extension_contents_stmt, :message, 152, "pg_query.AlterExtensionContentsStmt", json_name: "AlterExtensionContentsStmt" optional :create_event_trig_stmt, :message, 153, "pg_query.CreateEventTrigStmt", json_name: "CreateEventTrigStmt" optional :alter_event_trig_stmt, :message, 154, "pg_query.AlterEventTrigStmt", json_name: "AlterEventTrigStmt" optional :refresh_mat_view_stmt, :message, 155, "pg_query.RefreshMatViewStmt", json_name: "RefreshMatViewStmt" optional :replica_identity_stmt, :message, 156, "pg_query.ReplicaIdentityStmt", json_name: "ReplicaIdentityStmt" optional :alter_system_stmt, :message, 157, "pg_query.AlterSystemStmt", json_name: "AlterSystemStmt" optional :create_policy_stmt, :message, 158, "pg_query.CreatePolicyStmt", json_name: "CreatePolicyStmt" optional :alter_policy_stmt, :message, 159, "pg_query.AlterPolicyStmt", json_name: "AlterPolicyStmt" optional :create_transform_stmt, :message, 160, "pg_query.CreateTransformStmt", json_name: "CreateTransformStmt" optional :create_am_stmt, :message, 161, "pg_query.CreateAmStmt", json_name: "CreateAmStmt" optional :create_publication_stmt, :message, 162, "pg_query.CreatePublicationStmt", json_name: "CreatePublicationStmt" optional :alter_publication_stmt, :message, 163, "pg_query.AlterPublicationStmt", json_name: "AlterPublicationStmt" optional :create_subscription_stmt, :message, 164, "pg_query.CreateSubscriptionStmt", json_name: "CreateSubscriptionStmt" optional :alter_subscription_stmt, :message, 165, "pg_query.AlterSubscriptionStmt", json_name: "AlterSubscriptionStmt" optional :drop_subscription_stmt, :message, 166, "pg_query.DropSubscriptionStmt", json_name: "DropSubscriptionStmt" optional :create_stats_stmt, :message, 167, "pg_query.CreateStatsStmt", json_name: "CreateStatsStmt" optional :alter_collation_stmt, :message, 168, "pg_query.AlterCollationStmt", json_name: "AlterCollationStmt" optional :call_stmt, :message, 169, "pg_query.CallStmt", json_name: "CallStmt" optional :alter_stats_stmt, :message, 170, "pg_query.AlterStatsStmt", json_name: "AlterStatsStmt" optional :a_expr, :message, 171, "pg_query.A_Expr", json_name: "A_Expr" optional :column_ref, :message, 172, "pg_query.ColumnRef", json_name: "ColumnRef" optional :param_ref, :message, 173, "pg_query.ParamRef", json_name: "ParamRef" optional :func_call, :message, 174, "pg_query.FuncCall", json_name: "FuncCall" optional :a_star, :message, 175, "pg_query.A_Star", json_name: "A_Star" optional :a_indices, :message, 176, "pg_query.A_Indices", json_name: "A_Indices" optional :a_indirection, :message, 177, "pg_query.A_Indirection", json_name: "A_Indirection" optional :a_array_expr, :message, 178, "pg_query.A_ArrayExpr", json_name: "A_ArrayExpr" optional :res_target, :message, 179, "pg_query.ResTarget", json_name: "ResTarget" optional :multi_assign_ref, :message, 180, "pg_query.MultiAssignRef", json_name: "MultiAssignRef" optional :type_cast, :message, 181, "pg_query.TypeCast", json_name: "TypeCast" optional :collate_clause, :message, 182, "pg_query.CollateClause", json_name: "CollateClause" optional :sort_by, :message, 183, "pg_query.SortBy", json_name: "SortBy" optional :window_def, :message, 184, "pg_query.WindowDef", json_name: "WindowDef" optional :range_subselect, :message, 185, "pg_query.RangeSubselect", json_name: "RangeSubselect" optional :range_function, :message, 186, "pg_query.RangeFunction", json_name: "RangeFunction" optional :range_table_sample, :message, 187, "pg_query.RangeTableSample", json_name: "RangeTableSample" optional :range_table_func, :message, 188, "pg_query.RangeTableFunc", json_name: "RangeTableFunc" optional :range_table_func_col, :message, 189, "pg_query.RangeTableFuncCol", json_name: "RangeTableFuncCol" optional :type_name, :message, 190, "pg_query.TypeName", json_name: "TypeName" optional :column_def, :message, 191, "pg_query.ColumnDef", json_name: "ColumnDef" optional :index_elem, :message, 192, "pg_query.IndexElem", json_name: "IndexElem" optional :stats_elem, :message, 193, "pg_query.StatsElem", json_name: "StatsElem" optional :constraint, :message, 194, "pg_query.Constraint", json_name: "Constraint" optional :def_elem, :message, 195, "pg_query.DefElem", json_name: "DefElem" optional :range_tbl_entry, :message, 196, "pg_query.RangeTblEntry", json_name: "RangeTblEntry" optional :range_tbl_function, :message, 197, "pg_query.RangeTblFunction", json_name: "RangeTblFunction" optional :table_sample_clause, :message, 198, "pg_query.TableSampleClause", json_name: "TableSampleClause" optional :with_check_option, :message, 199, "pg_query.WithCheckOption", json_name: "WithCheckOption" optional :sort_group_clause, :message, 200, "pg_query.SortGroupClause", json_name: "SortGroupClause" optional :grouping_set, :message, 201, "pg_query.GroupingSet", json_name: "GroupingSet" optional :window_clause, :message, 202, "pg_query.WindowClause", json_name: "WindowClause" optional :object_with_args, :message, 203, "pg_query.ObjectWithArgs", json_name: "ObjectWithArgs" optional :access_priv, :message, 204, "pg_query.AccessPriv", json_name: "AccessPriv" optional :create_op_class_item, :message, 205, "pg_query.CreateOpClassItem", json_name: "CreateOpClassItem" optional :table_like_clause, :message, 206, "pg_query.TableLikeClause", json_name: "TableLikeClause" optional :function_parameter, :message, 207, "pg_query.FunctionParameter", json_name: "FunctionParameter" optional :locking_clause, :message, 208, "pg_query.LockingClause", json_name: "LockingClause" optional :row_mark_clause, :message, 209, "pg_query.RowMarkClause", json_name: "RowMarkClause" optional :xml_serialize, :message, 210, "pg_query.XmlSerialize", json_name: "XmlSerialize" optional :with_clause, :message, 211, "pg_query.WithClause", json_name: "WithClause" optional :infer_clause, :message, 212, "pg_query.InferClause", json_name: "InferClause" optional :on_conflict_clause, :message, 213, "pg_query.OnConflictClause", json_name: "OnConflictClause" optional :ctesearch_clause, :message, 214, "pg_query.CTESearchClause", json_name: "CTESearchClause" optional :ctecycle_clause, :message, 215, "pg_query.CTECycleClause", json_name: "CTECycleClause" optional :common_table_expr, :message, 216, "pg_query.CommonTableExpr", json_name: "CommonTableExpr" optional :merge_when_clause, :message, 217, "pg_query.MergeWhenClause", json_name: "MergeWhenClause" optional :role_spec, :message, 218, "pg_query.RoleSpec", json_name: "RoleSpec" optional :trigger_transition, :message, 219, "pg_query.TriggerTransition", json_name: "TriggerTransition" optional :partition_elem, :message, 220, "pg_query.PartitionElem", json_name: "PartitionElem" optional :partition_spec, :message, 221, "pg_query.PartitionSpec", json_name: "PartitionSpec" optional :partition_bound_spec, :message, 222, "pg_query.PartitionBoundSpec", json_name: "PartitionBoundSpec" optional :partition_range_datum, :message, 223, "pg_query.PartitionRangeDatum", json_name: "PartitionRangeDatum" optional :partition_cmd, :message, 224, "pg_query.PartitionCmd", json_name: "PartitionCmd" optional :vacuum_relation, :message, 225, "pg_query.VacuumRelation", json_name: "VacuumRelation" optional :publication_obj_spec, :message, 226, "pg_query.PublicationObjSpec", json_name: "PublicationObjSpec" optional :publication_table, :message, 227, "pg_query.PublicationTable", json_name: "PublicationTable" optional :inline_code_block, :message, 228, "pg_query.InlineCodeBlock", json_name: "InlineCodeBlock" optional :call_context, :message, 229, "pg_query.CallContext", json_name: "CallContext" optional :integer, :message, 230, "pg_query.Integer", json_name: "Integer" optional :float, :message, 231, "pg_query.Float", json_name: "Float" optional :boolean, :message, 232, "pg_query.Boolean", json_name: "Boolean" optional :string, :message, 233, "pg_query.String", json_name: "String" optional :bit_string, :message, 234, "pg_query.BitString", json_name: "BitString" optional :list, :message, 235, "pg_query.List", json_name: "List" optional :int_list, :message, 236, "pg_query.IntList", json_name: "IntList" optional :oid_list, :message, 237, "pg_query.OidList", json_name: "OidList" optional :a_const, :message, 238, "pg_query.A_Const", json_name: "A_Const" end end add_message "pg_query.Integer" do optional :ival, :int32, 1 end add_message "pg_query.Float" do optional :fval, :string, 1 end add_message "pg_query.Boolean" do optional :boolval, :bool, 1 end add_message "pg_query.String" do optional :sval, :string, 1 end add_message "pg_query.BitString" do optional :bsval, :string, 1 end add_message "pg_query.List" do repeated :items, :message, 1, "pg_query.Node" end add_message "pg_query.OidList" do repeated :items, :message, 1, "pg_query.Node" end add_message "pg_query.IntList" do repeated :items, :message, 1, "pg_query.Node" end add_message "pg_query.A_Const" do optional :isnull, :bool, 10 optional :location, :int32, 11 oneof :val do optional :ival, :message, 1, "pg_query.Integer" optional :fval, :message, 2, "pg_query.Float" optional :boolval, :message, 3, "pg_query.Boolean" optional :sval, :message, 4, "pg_query.String" optional :bsval, :message, 5, "pg_query.BitString" end end add_message "pg_query.Alias" do optional :aliasname, :string, 1, json_name: "aliasname" repeated :colnames, :message, 2, "pg_query.Node", json_name: "colnames" end add_message "pg_query.RangeVar" do optional :catalogname, :string, 1, json_name: "catalogname" optional :schemaname, :string, 2, json_name: "schemaname" optional :relname, :string, 3, json_name: "relname" optional :inh, :bool, 4, json_name: "inh" optional :relpersistence, :string, 5, json_name: "relpersistence" optional :alias, :message, 6, "pg_query.Alias", json_name: "alias" optional :location, :int32, 7, json_name: "location" end add_message "pg_query.TableFunc" do repeated :ns_uris, :message, 1, "pg_query.Node", json_name: "ns_uris" repeated :ns_names, :message, 2, "pg_query.Node", json_name: "ns_names" optional :docexpr, :message, 3, "pg_query.Node", json_name: "docexpr" optional :rowexpr, :message, 4, "pg_query.Node", json_name: "rowexpr" repeated :colnames, :message, 5, "pg_query.Node", json_name: "colnames" repeated :coltypes, :message, 6, "pg_query.Node", json_name: "coltypes" repeated :coltypmods, :message, 7, "pg_query.Node", json_name: "coltypmods" repeated :colcollations, :message, 8, "pg_query.Node", json_name: "colcollations" repeated :colexprs, :message, 9, "pg_query.Node", json_name: "colexprs" repeated :coldefexprs, :message, 10, "pg_query.Node", json_name: "coldefexprs" repeated :notnulls, :uint64, 11, json_name: "notnulls" optional :ordinalitycol, :int32, 12, json_name: "ordinalitycol" optional :location, :int32, 13, json_name: "location" end add_message "pg_query.Var" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :varno, :int32, 2, json_name: "varno" optional :varattno, :int32, 3, json_name: "varattno" optional :vartype, :uint32, 4, json_name: "vartype" optional :vartypmod, :int32, 5, json_name: "vartypmod" optional :varcollid, :uint32, 6, json_name: "varcollid" optional :varlevelsup, :uint32, 7, json_name: "varlevelsup" optional :varnosyn, :uint32, 8, json_name: "varnosyn" optional :varattnosyn, :int32, 9, json_name: "varattnosyn" optional :location, :int32, 10, json_name: "location" end add_message "pg_query.Param" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :paramkind, :enum, 2, "pg_query.ParamKind", json_name: "paramkind" optional :paramid, :int32, 3, json_name: "paramid" optional :paramtype, :uint32, 4, json_name: "paramtype" optional :paramtypmod, :int32, 5, json_name: "paramtypmod" optional :paramcollid, :uint32, 6, json_name: "paramcollid" optional :location, :int32, 7, json_name: "location" end add_message "pg_query.Aggref" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :aggfnoid, :uint32, 2, json_name: "aggfnoid" optional :aggtype, :uint32, 3, json_name: "aggtype" optional :aggcollid, :uint32, 4, json_name: "aggcollid" optional :inputcollid, :uint32, 5, json_name: "inputcollid" optional :aggtranstype, :uint32, 6, json_name: "aggtranstype" repeated :aggargtypes, :message, 7, "pg_query.Node", json_name: "aggargtypes" repeated :aggdirectargs, :message, 8, "pg_query.Node", json_name: "aggdirectargs" repeated :args, :message, 9, "pg_query.Node", json_name: "args" repeated :aggorder, :message, 10, "pg_query.Node", json_name: "aggorder" repeated :aggdistinct, :message, 11, "pg_query.Node", json_name: "aggdistinct" optional :aggfilter, :message, 12, "pg_query.Node", json_name: "aggfilter" optional :aggstar, :bool, 13, json_name: "aggstar" optional :aggvariadic, :bool, 14, json_name: "aggvariadic" optional :aggkind, :string, 15, json_name: "aggkind" optional :agglevelsup, :uint32, 16, json_name: "agglevelsup" optional :aggsplit, :enum, 17, "pg_query.AggSplit", json_name: "aggsplit" optional :aggno, :int32, 18, json_name: "aggno" optional :aggtransno, :int32, 19, json_name: "aggtransno" optional :location, :int32, 20, json_name: "location" end add_message "pg_query.GroupingFunc" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" repeated :args, :message, 2, "pg_query.Node", json_name: "args" repeated :refs, :message, 3, "pg_query.Node", json_name: "refs" repeated :cols, :message, 4, "pg_query.Node", json_name: "cols" optional :agglevelsup, :uint32, 5, json_name: "agglevelsup" optional :location, :int32, 6, json_name: "location" end add_message "pg_query.WindowFunc" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :winfnoid, :uint32, 2, json_name: "winfnoid" optional :wintype, :uint32, 3, json_name: "wintype" optional :wincollid, :uint32, 4, json_name: "wincollid" optional :inputcollid, :uint32, 5, json_name: "inputcollid" repeated :args, :message, 6, "pg_query.Node", json_name: "args" optional :aggfilter, :message, 7, "pg_query.Node", json_name: "aggfilter" optional :winref, :uint32, 8, json_name: "winref" optional :winstar, :bool, 9, json_name: "winstar" optional :winagg, :bool, 10, json_name: "winagg" optional :location, :int32, 11, json_name: "location" end add_message "pg_query.SubscriptingRef" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :refcontainertype, :uint32, 2, json_name: "refcontainertype" optional :refelemtype, :uint32, 3, json_name: "refelemtype" optional :refrestype, :uint32, 4, json_name: "refrestype" optional :reftypmod, :int32, 5, json_name: "reftypmod" optional :refcollid, :uint32, 6, json_name: "refcollid" repeated :refupperindexpr, :message, 7, "pg_query.Node", json_name: "refupperindexpr" repeated :reflowerindexpr, :message, 8, "pg_query.Node", json_name: "reflowerindexpr" optional :refexpr, :message, 9, "pg_query.Node", json_name: "refexpr" optional :refassgnexpr, :message, 10, "pg_query.Node", json_name: "refassgnexpr" end add_message "pg_query.FuncExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :funcid, :uint32, 2, json_name: "funcid" optional :funcresulttype, :uint32, 3, json_name: "funcresulttype" optional :funcretset, :bool, 4, json_name: "funcretset" optional :funcvariadic, :bool, 5, json_name: "funcvariadic" optional :funcformat, :enum, 6, "pg_query.CoercionForm", json_name: "funcformat" optional :funccollid, :uint32, 7, json_name: "funccollid" optional :inputcollid, :uint32, 8, json_name: "inputcollid" repeated :args, :message, 9, "pg_query.Node", json_name: "args" optional :location, :int32, 10, json_name: "location" end add_message "pg_query.NamedArgExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :arg, :message, 2, "pg_query.Node", json_name: "arg" optional :name, :string, 3, json_name: "name" optional :argnumber, :int32, 4, json_name: "argnumber" optional :location, :int32, 5, json_name: "location" end add_message "pg_query.OpExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :opno, :uint32, 2, json_name: "opno" optional :opfuncid, :uint32, 3, json_name: "opfuncid" optional :opresulttype, :uint32, 4, json_name: "opresulttype" optional :opretset, :bool, 5, json_name: "opretset" optional :opcollid, :uint32, 6, json_name: "opcollid" optional :inputcollid, :uint32, 7, json_name: "inputcollid" repeated :args, :message, 8, "pg_query.Node", json_name: "args" optional :location, :int32, 9, json_name: "location" end add_message "pg_query.DistinctExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :opno, :uint32, 2, json_name: "opno" optional :opfuncid, :uint32, 3, json_name: "opfuncid" optional :opresulttype, :uint32, 4, json_name: "opresulttype" optional :opretset, :bool, 5, json_name: "opretset" optional :opcollid, :uint32, 6, json_name: "opcollid" optional :inputcollid, :uint32, 7, json_name: "inputcollid" repeated :args, :message, 8, "pg_query.Node", json_name: "args" optional :location, :int32, 9, json_name: "location" end add_message "pg_query.NullIfExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :opno, :uint32, 2, json_name: "opno" optional :opfuncid, :uint32, 3, json_name: "opfuncid" optional :opresulttype, :uint32, 4, json_name: "opresulttype" optional :opretset, :bool, 5, json_name: "opretset" optional :opcollid, :uint32, 6, json_name: "opcollid" optional :inputcollid, :uint32, 7, json_name: "inputcollid" repeated :args, :message, 8, "pg_query.Node", json_name: "args" optional :location, :int32, 9, json_name: "location" end add_message "pg_query.ScalarArrayOpExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :opno, :uint32, 2, json_name: "opno" optional :opfuncid, :uint32, 3, json_name: "opfuncid" optional :hashfuncid, :uint32, 4, json_name: "hashfuncid" optional :negfuncid, :uint32, 5, json_name: "negfuncid" optional :use_or, :bool, 6, json_name: "useOr" optional :inputcollid, :uint32, 7, json_name: "inputcollid" repeated :args, :message, 8, "pg_query.Node", json_name: "args" optional :location, :int32, 9, json_name: "location" end add_message "pg_query.BoolExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :boolop, :enum, 2, "pg_query.BoolExprType", json_name: "boolop" repeated :args, :message, 3, "pg_query.Node", json_name: "args" optional :location, :int32, 4, json_name: "location" end add_message "pg_query.SubLink" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :sub_link_type, :enum, 2, "pg_query.SubLinkType", json_name: "subLinkType" optional :sub_link_id, :int32, 3, json_name: "subLinkId" optional :testexpr, :message, 4, "pg_query.Node", json_name: "testexpr" repeated :oper_name, :message, 5, "pg_query.Node", json_name: "operName" optional :subselect, :message, 6, "pg_query.Node", json_name: "subselect" optional :location, :int32, 7, json_name: "location" end add_message "pg_query.SubPlan" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :sub_link_type, :enum, 2, "pg_query.SubLinkType", json_name: "subLinkType" optional :testexpr, :message, 3, "pg_query.Node", json_name: "testexpr" repeated :param_ids, :message, 4, "pg_query.Node", json_name: "paramIds" optional :plan_id, :int32, 5, json_name: "plan_id" optional :plan_name, :string, 6, json_name: "plan_name" optional :first_col_type, :uint32, 7, json_name: "firstColType" optional :first_col_typmod, :int32, 8, json_name: "firstColTypmod" optional :first_col_collation, :uint32, 9, json_name: "firstColCollation" optional :use_hash_table, :bool, 10, json_name: "useHashTable" optional :unknown_eq_false, :bool, 11, json_name: "unknownEqFalse" optional :parallel_safe, :bool, 12, json_name: "parallel_safe" repeated :set_param, :message, 13, "pg_query.Node", json_name: "setParam" repeated :par_param, :message, 14, "pg_query.Node", json_name: "parParam" repeated :args, :message, 15, "pg_query.Node", json_name: "args" optional :startup_cost, :double, 16, json_name: "startup_cost" optional :per_call_cost, :double, 17, json_name: "per_call_cost" end add_message "pg_query.AlternativeSubPlan" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" repeated :subplans, :message, 2, "pg_query.Node", json_name: "subplans" end add_message "pg_query.FieldSelect" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :arg, :message, 2, "pg_query.Node", json_name: "arg" optional :fieldnum, :int32, 3, json_name: "fieldnum" optional :resulttype, :uint32, 4, json_name: "resulttype" optional :resulttypmod, :int32, 5, json_name: "resulttypmod" optional :resultcollid, :uint32, 6, json_name: "resultcollid" end add_message "pg_query.FieldStore" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :arg, :message, 2, "pg_query.Node", json_name: "arg" repeated :newvals, :message, 3, "pg_query.Node", json_name: "newvals" repeated :fieldnums, :message, 4, "pg_query.Node", json_name: "fieldnums" optional :resulttype, :uint32, 5, json_name: "resulttype" end add_message "pg_query.RelabelType" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :arg, :message, 2, "pg_query.Node", json_name: "arg" optional :resulttype, :uint32, 3, json_name: "resulttype" optional :resulttypmod, :int32, 4, json_name: "resulttypmod" optional :resultcollid, :uint32, 5, json_name: "resultcollid" optional :relabelformat, :enum, 6, "pg_query.CoercionForm", json_name: "relabelformat" optional :location, :int32, 7, json_name: "location" end add_message "pg_query.CoerceViaIO" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :arg, :message, 2, "pg_query.Node", json_name: "arg" optional :resulttype, :uint32, 3, json_name: "resulttype" optional :resultcollid, :uint32, 4, json_name: "resultcollid" optional :coerceformat, :enum, 5, "pg_query.CoercionForm", json_name: "coerceformat" optional :location, :int32, 6, json_name: "location" end add_message "pg_query.ArrayCoerceExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :arg, :message, 2, "pg_query.Node", json_name: "arg" optional :elemexpr, :message, 3, "pg_query.Node", json_name: "elemexpr" optional :resulttype, :uint32, 4, json_name: "resulttype" optional :resulttypmod, :int32, 5, json_name: "resulttypmod" optional :resultcollid, :uint32, 6, json_name: "resultcollid" optional :coerceformat, :enum, 7, "pg_query.CoercionForm", json_name: "coerceformat" optional :location, :int32, 8, json_name: "location" end add_message "pg_query.ConvertRowtypeExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :arg, :message, 2, "pg_query.Node", json_name: "arg" optional :resulttype, :uint32, 3, json_name: "resulttype" optional :convertformat, :enum, 4, "pg_query.CoercionForm", json_name: "convertformat" optional :location, :int32, 5, json_name: "location" end add_message "pg_query.CollateExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :arg, :message, 2, "pg_query.Node", json_name: "arg" optional :coll_oid, :uint32, 3, json_name: "collOid" optional :location, :int32, 4, json_name: "location" end add_message "pg_query.CaseExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :casetype, :uint32, 2, json_name: "casetype" optional :casecollid, :uint32, 3, json_name: "casecollid" optional :arg, :message, 4, "pg_query.Node", json_name: "arg" repeated :args, :message, 5, "pg_query.Node", json_name: "args" optional :defresult, :message, 6, "pg_query.Node", json_name: "defresult" optional :location, :int32, 7, json_name: "location" end add_message "pg_query.CaseWhen" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :expr, :message, 2, "pg_query.Node", json_name: "expr" optional :result, :message, 3, "pg_query.Node", json_name: "result" optional :location, :int32, 4, json_name: "location" end add_message "pg_query.CaseTestExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :type_id, :uint32, 2, json_name: "typeId" optional :type_mod, :int32, 3, json_name: "typeMod" optional :collation, :uint32, 4, json_name: "collation" end add_message "pg_query.ArrayExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :array_typeid, :uint32, 2, json_name: "array_typeid" optional :array_collid, :uint32, 3, json_name: "array_collid" optional :element_typeid, :uint32, 4, json_name: "element_typeid" repeated :elements, :message, 5, "pg_query.Node", json_name: "elements" optional :multidims, :bool, 6, json_name: "multidims" optional :location, :int32, 7, json_name: "location" end add_message "pg_query.RowExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" repeated :args, :message, 2, "pg_query.Node", json_name: "args" optional :row_typeid, :uint32, 3, json_name: "row_typeid" optional :row_format, :enum, 4, "pg_query.CoercionForm", json_name: "row_format" repeated :colnames, :message, 5, "pg_query.Node", json_name: "colnames" optional :location, :int32, 6, json_name: "location" end add_message "pg_query.RowCompareExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :rctype, :enum, 2, "pg_query.RowCompareType", json_name: "rctype" repeated :opnos, :message, 3, "pg_query.Node", json_name: "opnos" repeated :opfamilies, :message, 4, "pg_query.Node", json_name: "opfamilies" repeated :inputcollids, :message, 5, "pg_query.Node", json_name: "inputcollids" repeated :largs, :message, 6, "pg_query.Node", json_name: "largs" repeated :rargs, :message, 7, "pg_query.Node", json_name: "rargs" end add_message "pg_query.CoalesceExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :coalescetype, :uint32, 2, json_name: "coalescetype" optional :coalescecollid, :uint32, 3, json_name: "coalescecollid" repeated :args, :message, 4, "pg_query.Node", json_name: "args" optional :location, :int32, 5, json_name: "location" end add_message "pg_query.MinMaxExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :minmaxtype, :uint32, 2, json_name: "minmaxtype" optional :minmaxcollid, :uint32, 3, json_name: "minmaxcollid" optional :inputcollid, :uint32, 4, json_name: "inputcollid" optional :op, :enum, 5, "pg_query.MinMaxOp", json_name: "op" repeated :args, :message, 6, "pg_query.Node", json_name: "args" optional :location, :int32, 7, json_name: "location" end add_message "pg_query.SQLValueFunction" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :op, :enum, 2, "pg_query.SQLValueFunctionOp", json_name: "op" optional :type, :uint32, 3, json_name: "type" optional :typmod, :int32, 4, json_name: "typmod" optional :location, :int32, 5, json_name: "location" end add_message "pg_query.XmlExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :op, :enum, 2, "pg_query.XmlExprOp", json_name: "op" optional :name, :string, 3, json_name: "name" repeated :named_args, :message, 4, "pg_query.Node", json_name: "named_args" repeated :arg_names, :message, 5, "pg_query.Node", json_name: "arg_names" repeated :args, :message, 6, "pg_query.Node", json_name: "args" optional :xmloption, :enum, 7, "pg_query.XmlOptionType", json_name: "xmloption" optional :type, :uint32, 8, json_name: "type" optional :typmod, :int32, 9, json_name: "typmod" optional :location, :int32, 10, json_name: "location" end add_message "pg_query.NullTest" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :arg, :message, 2, "pg_query.Node", json_name: "arg" optional :nulltesttype, :enum, 3, "pg_query.NullTestType", json_name: "nulltesttype" optional :argisrow, :bool, 4, json_name: "argisrow" optional :location, :int32, 5, json_name: "location" end add_message "pg_query.BooleanTest" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :arg, :message, 2, "pg_query.Node", json_name: "arg" optional :booltesttype, :enum, 3, "pg_query.BoolTestType", json_name: "booltesttype" optional :location, :int32, 4, json_name: "location" end add_message "pg_query.CoerceToDomain" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :arg, :message, 2, "pg_query.Node", json_name: "arg" optional :resulttype, :uint32, 3, json_name: "resulttype" optional :resulttypmod, :int32, 4, json_name: "resulttypmod" optional :resultcollid, :uint32, 5, json_name: "resultcollid" optional :coercionformat, :enum, 6, "pg_query.CoercionForm", json_name: "coercionformat" optional :location, :int32, 7, json_name: "location" end add_message "pg_query.CoerceToDomainValue" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :type_id, :uint32, 2, json_name: "typeId" optional :type_mod, :int32, 3, json_name: "typeMod" optional :collation, :uint32, 4, json_name: "collation" optional :location, :int32, 5, json_name: "location" end add_message "pg_query.SetToDefault" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :type_id, :uint32, 2, json_name: "typeId" optional :type_mod, :int32, 3, json_name: "typeMod" optional :collation, :uint32, 4, json_name: "collation" optional :location, :int32, 5, json_name: "location" end add_message "pg_query.CurrentOfExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :cvarno, :uint32, 2, json_name: "cvarno" optional :cursor_name, :string, 3, json_name: "cursor_name" optional :cursor_param, :int32, 4, json_name: "cursor_param" end add_message "pg_query.NextValueExpr" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :seqid, :uint32, 2, json_name: "seqid" optional :type_id, :uint32, 3, json_name: "typeId" end add_message "pg_query.InferenceElem" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :expr, :message, 2, "pg_query.Node", json_name: "expr" optional :infercollid, :uint32, 3, json_name: "infercollid" optional :inferopclass, :uint32, 4, json_name: "inferopclass" end add_message "pg_query.TargetEntry" do optional :xpr, :message, 1, "pg_query.Node", json_name: "xpr" optional :expr, :message, 2, "pg_query.Node", json_name: "expr" optional :resno, :int32, 3, json_name: "resno" optional :resname, :string, 4, json_name: "resname" optional :ressortgroupref, :uint32, 5, json_name: "ressortgroupref" optional :resorigtbl, :uint32, 6, json_name: "resorigtbl" optional :resorigcol, :int32, 7, json_name: "resorigcol" optional :resjunk, :bool, 8, json_name: "resjunk" end add_message "pg_query.RangeTblRef" do optional :rtindex, :int32, 1, json_name: "rtindex" end add_message "pg_query.JoinExpr" do optional :jointype, :enum, 1, "pg_query.JoinType", json_name: "jointype" optional :is_natural, :bool, 2, json_name: "isNatural" optional :larg, :message, 3, "pg_query.Node", json_name: "larg" optional :rarg, :message, 4, "pg_query.Node", json_name: "rarg" repeated :using_clause, :message, 5, "pg_query.Node", json_name: "usingClause" optional :join_using_alias, :message, 6, "pg_query.Alias", json_name: "join_using_alias" optional :quals, :message, 7, "pg_query.Node", json_name: "quals" optional :alias, :message, 8, "pg_query.Alias", json_name: "alias" optional :rtindex, :int32, 9, json_name: "rtindex" end add_message "pg_query.FromExpr" do repeated :fromlist, :message, 1, "pg_query.Node", json_name: "fromlist" optional :quals, :message, 2, "pg_query.Node", json_name: "quals" end add_message "pg_query.OnConflictExpr" do optional :action, :enum, 1, "pg_query.OnConflictAction", json_name: "action" repeated :arbiter_elems, :message, 2, "pg_query.Node", json_name: "arbiterElems" optional :arbiter_where, :message, 3, "pg_query.Node", json_name: "arbiterWhere" optional :constraint, :uint32, 4, json_name: "constraint" repeated :on_conflict_set, :message, 5, "pg_query.Node", json_name: "onConflictSet" optional :on_conflict_where, :message, 6, "pg_query.Node", json_name: "onConflictWhere" optional :excl_rel_index, :int32, 7, json_name: "exclRelIndex" repeated :excl_rel_tlist, :message, 8, "pg_query.Node", json_name: "exclRelTlist" end add_message "pg_query.IntoClause" do optional :rel, :message, 1, "pg_query.RangeVar", json_name: "rel" repeated :col_names, :message, 2, "pg_query.Node", json_name: "colNames" optional :access_method, :string, 3, json_name: "accessMethod" repeated :options, :message, 4, "pg_query.Node", json_name: "options" optional :on_commit, :enum, 5, "pg_query.OnCommitAction", json_name: "onCommit" optional :table_space_name, :string, 6, json_name: "tableSpaceName" optional :view_query, :message, 7, "pg_query.Node", json_name: "viewQuery" optional :skip_data, :bool, 8, json_name: "skipData" end add_message "pg_query.MergeAction" do optional :matched, :bool, 1, json_name: "matched" optional :command_type, :enum, 2, "pg_query.CmdType", json_name: "commandType" optional :override, :enum, 3, "pg_query.OverridingKind", json_name: "override" optional :qual, :message, 4, "pg_query.Node", json_name: "qual" repeated :target_list, :message, 5, "pg_query.Node", json_name: "targetList" repeated :update_colnos, :message, 6, "pg_query.Node", json_name: "updateColnos" end add_message "pg_query.RawStmt" do optional :stmt, :message, 1, "pg_query.Node", json_name: "stmt" optional :stmt_location, :int32, 2, json_name: "stmt_location" optional :stmt_len, :int32, 3, json_name: "stmt_len" end add_message "pg_query.Query" do optional :command_type, :enum, 1, "pg_query.CmdType", json_name: "commandType" optional :query_source, :enum, 2, "pg_query.QuerySource", json_name: "querySource" optional :can_set_tag, :bool, 3, json_name: "canSetTag" optional :utility_stmt, :message, 4, "pg_query.Node", json_name: "utilityStmt" optional :result_relation, :int32, 5, json_name: "resultRelation" optional :has_aggs, :bool, 6, json_name: "hasAggs" optional :has_window_funcs, :bool, 7, json_name: "hasWindowFuncs" optional :has_target_srfs, :bool, 8, json_name: "hasTargetSRFs" optional :has_sub_links, :bool, 9, json_name: "hasSubLinks" optional :has_distinct_on, :bool, 10, json_name: "hasDistinctOn" optional :has_recursive, :bool, 11, json_name: "hasRecursive" optional :has_modifying_cte, :bool, 12, json_name: "hasModifyingCTE" optional :has_for_update, :bool, 13, json_name: "hasForUpdate" optional :has_row_security, :bool, 14, json_name: "hasRowSecurity" optional :is_return, :bool, 15, json_name: "isReturn" repeated :cte_list, :message, 16, "pg_query.Node", json_name: "cteList" repeated :rtable, :message, 17, "pg_query.Node", json_name: "rtable" optional :jointree, :message, 18, "pg_query.FromExpr", json_name: "jointree" repeated :merge_action_list, :message, 19, "pg_query.Node", json_name: "mergeActionList" optional :merge_use_outer_join, :bool, 20, json_name: "mergeUseOuterJoin" repeated :target_list, :message, 21, "pg_query.Node", json_name: "targetList" optional :override, :enum, 22, "pg_query.OverridingKind", json_name: "override" optional :on_conflict, :message, 23, "pg_query.OnConflictExpr", json_name: "onConflict" repeated :returning_list, :message, 24, "pg_query.Node", json_name: "returningList" repeated :group_clause, :message, 25, "pg_query.Node", json_name: "groupClause" optional :group_distinct, :bool, 26, json_name: "groupDistinct" repeated :grouping_sets, :message, 27, "pg_query.Node", json_name: "groupingSets" optional :having_qual, :message, 28, "pg_query.Node", json_name: "havingQual" repeated :window_clause, :message, 29, "pg_query.Node", json_name: "windowClause" repeated :distinct_clause, :message, 30, "pg_query.Node", json_name: "distinctClause" repeated :sort_clause, :message, 31, "pg_query.Node", json_name: "sortClause" optional :limit_offset, :message, 32, "pg_query.Node", json_name: "limitOffset" optional :limit_count, :message, 33, "pg_query.Node", json_name: "limitCount" optional :limit_option, :enum, 34, "pg_query.LimitOption", json_name: "limitOption" repeated :row_marks, :message, 35, "pg_query.Node", json_name: "rowMarks" optional :set_operations, :message, 36, "pg_query.Node", json_name: "setOperations" repeated :constraint_deps, :message, 37, "pg_query.Node", json_name: "constraintDeps" repeated :with_check_options, :message, 38, "pg_query.Node", json_name: "withCheckOptions" optional :stmt_location, :int32, 39, json_name: "stmt_location" optional :stmt_len, :int32, 40, json_name: "stmt_len" end add_message "pg_query.InsertStmt" do optional :relation, :message, 1, "pg_query.RangeVar", json_name: "relation" repeated :cols, :message, 2, "pg_query.Node", json_name: "cols" optional :select_stmt, :message, 3, "pg_query.Node", json_name: "selectStmt" optional :on_conflict_clause, :message, 4, "pg_query.OnConflictClause", json_name: "onConflictClause" repeated :returning_list, :message, 5, "pg_query.Node", json_name: "returningList" optional :with_clause, :message, 6, "pg_query.WithClause", json_name: "withClause" optional :override, :enum, 7, "pg_query.OverridingKind", json_name: "override" end add_message "pg_query.DeleteStmt" do optional :relation, :message, 1, "pg_query.RangeVar", json_name: "relation" repeated :using_clause, :message, 2, "pg_query.Node", json_name: "usingClause" optional :where_clause, :message, 3, "pg_query.Node", json_name: "whereClause" repeated :returning_list, :message, 4, "pg_query.Node", json_name: "returningList" optional :with_clause, :message, 5, "pg_query.WithClause", json_name: "withClause" end add_message "pg_query.UpdateStmt" do optional :relation, :message, 1, "pg_query.RangeVar", json_name: "relation" repeated :target_list, :message, 2, "pg_query.Node", json_name: "targetList" optional :where_clause, :message, 3, "pg_query.Node", json_name: "whereClause" repeated :from_clause, :message, 4, "pg_query.Node", json_name: "fromClause" repeated :returning_list, :message, 5, "pg_query.Node", json_name: "returningList" optional :with_clause, :message, 6, "pg_query.WithClause", json_name: "withClause" end add_message "pg_query.MergeStmt" do optional :relation, :message, 1, "pg_query.RangeVar", json_name: "relation" optional :source_relation, :message, 2, "pg_query.Node", json_name: "sourceRelation" optional :join_condition, :message, 3, "pg_query.Node", json_name: "joinCondition" repeated :merge_when_clauses, :message, 4, "pg_query.Node", json_name: "mergeWhenClauses" optional :with_clause, :message, 5, "pg_query.WithClause", json_name: "withClause" end add_message "pg_query.SelectStmt" do repeated :distinct_clause, :message, 1, "pg_query.Node", json_name: "distinctClause" optional :into_clause, :message, 2, "pg_query.IntoClause", json_name: "intoClause" repeated :target_list, :message, 3, "pg_query.Node", json_name: "targetList" repeated :from_clause, :message, 4, "pg_query.Node", json_name: "fromClause" optional :where_clause, :message, 5, "pg_query.Node", json_name: "whereClause" repeated :group_clause, :message, 6, "pg_query.Node", json_name: "groupClause" optional :group_distinct, :bool, 7, json_name: "groupDistinct" optional :having_clause, :message, 8, "pg_query.Node", json_name: "havingClause" repeated :window_clause, :message, 9, "pg_query.Node", json_name: "windowClause" repeated :values_lists, :message, 10, "pg_query.Node", json_name: "valuesLists" repeated :sort_clause, :message, 11, "pg_query.Node", json_name: "sortClause" optional :limit_offset, :message, 12, "pg_query.Node", json_name: "limitOffset" optional :limit_count, :message, 13, "pg_query.Node", json_name: "limitCount" optional :limit_option, :enum, 14, "pg_query.LimitOption", json_name: "limitOption" repeated :locking_clause, :message, 15, "pg_query.Node", json_name: "lockingClause" optional :with_clause, :message, 16, "pg_query.WithClause", json_name: "withClause" optional :op, :enum, 17, "pg_query.SetOperation", json_name: "op" optional :all, :bool, 18, json_name: "all" optional :larg, :message, 19, "pg_query.SelectStmt", json_name: "larg" optional :rarg, :message, 20, "pg_query.SelectStmt", json_name: "rarg" end add_message "pg_query.ReturnStmt" do optional :returnval, :message, 1, "pg_query.Node", json_name: "returnval" end add_message "pg_query.PLAssignStmt" do optional :name, :string, 1, json_name: "name" repeated :indirection, :message, 2, "pg_query.Node", json_name: "indirection" optional :nnames, :int32, 3, json_name: "nnames" optional :val, :message, 4, "pg_query.SelectStmt", json_name: "val" optional :location, :int32, 5, json_name: "location" end add_message "pg_query.AlterTableStmt" do optional :relation, :message, 1, "pg_query.RangeVar", json_name: "relation" repeated :cmds, :message, 2, "pg_query.Node", json_name: "cmds" optional :objtype, :enum, 3, "pg_query.ObjectType", json_name: "objtype" optional :missing_ok, :bool, 4, json_name: "missing_ok" end add_message "pg_query.AlterTableCmd" do optional :subtype, :enum, 1, "pg_query.AlterTableType", json_name: "subtype" optional :name, :string, 2, json_name: "name" optional :num, :int32, 3, json_name: "num" optional :newowner, :message, 4, "pg_query.RoleSpec", json_name: "newowner" optional :def, :message, 5, "pg_query.Node", json_name: "def" optional :behavior, :enum, 6, "pg_query.DropBehavior", json_name: "behavior" optional :missing_ok, :bool, 7, json_name: "missing_ok" optional :recurse, :bool, 8, json_name: "recurse" end add_message "pg_query.AlterDomainStmt" do optional :subtype, :string, 1, json_name: "subtype" repeated :type_name, :message, 2, "pg_query.Node", json_name: "typeName" optional :name, :string, 3, json_name: "name" optional :def, :message, 4, "pg_query.Node", json_name: "def" optional :behavior, :enum, 5, "pg_query.DropBehavior", json_name: "behavior" optional :missing_ok, :bool, 6, json_name: "missing_ok" end add_message "pg_query.SetOperationStmt" do optional :op, :enum, 1, "pg_query.SetOperation", json_name: "op" optional :all, :bool, 2, json_name: "all" optional :larg, :message, 3, "pg_query.Node", json_name: "larg" optional :rarg, :message, 4, "pg_query.Node", json_name: "rarg" repeated :col_types, :message, 5, "pg_query.Node", json_name: "colTypes" repeated :col_typmods, :message, 6, "pg_query.Node", json_name: "colTypmods" repeated :col_collations, :message, 7, "pg_query.Node", json_name: "colCollations" repeated :group_clauses, :message, 8, "pg_query.Node", json_name: "groupClauses" end add_message "pg_query.GrantStmt" do optional :is_grant, :bool, 1, json_name: "is_grant" optional :targtype, :enum, 2, "pg_query.GrantTargetType", json_name: "targtype" optional :objtype, :enum, 3, "pg_query.ObjectType", json_name: "objtype" repeated :objects, :message, 4, "pg_query.Node", json_name: "objects" repeated :privileges, :message, 5, "pg_query.Node", json_name: "privileges" repeated :grantees, :message, 6, "pg_query.Node", json_name: "grantees" optional :grant_option, :bool, 7, json_name: "grant_option" optional :grantor, :message, 8, "pg_query.RoleSpec", json_name: "grantor" optional :behavior, :enum, 9, "pg_query.DropBehavior", json_name: "behavior" end add_message "pg_query.GrantRoleStmt" do repeated :granted_roles, :message, 1, "pg_query.Node", json_name: "granted_roles" repeated :grantee_roles, :message, 2, "pg_query.Node", json_name: "grantee_roles" optional :is_grant, :bool, 3, json_name: "is_grant" optional :admin_opt, :bool, 4, json_name: "admin_opt" optional :grantor, :message, 5, "pg_query.RoleSpec", json_name: "grantor" optional :behavior, :enum, 6, "pg_query.DropBehavior", json_name: "behavior" end add_message "pg_query.AlterDefaultPrivilegesStmt" do repeated :options, :message, 1, "pg_query.Node", json_name: "options" optional :action, :message, 2, "pg_query.GrantStmt", json_name: "action" end add_message "pg_query.ClosePortalStmt" do optional :portalname, :string, 1, json_name: "portalname" end add_message "pg_query.ClusterStmt" do optional :relation, :message, 1, "pg_query.RangeVar", json_name: "relation" optional :indexname, :string, 2, json_name: "indexname" repeated :params, :message, 3, "pg_query.Node", json_name: "params" end add_message "pg_query.CopyStmt" do optional :relation, :message, 1, "pg_query.RangeVar", json_name: "relation" optional :query, :message, 2, "pg_query.Node", json_name: "query" repeated :attlist, :message, 3, "pg_query.Node", json_name: "attlist" optional :is_from, :bool, 4, json_name: "is_from" optional :is_program, :bool, 5, json_name: "is_program" optional :filename, :string, 6, json_name: "filename" repeated :options, :message, 7, "pg_query.Node", json_name: "options" optional :where_clause, :message, 8, "pg_query.Node", json_name: "whereClause" end add_message "pg_query.CreateStmt" do optional :relation, :message, 1, "pg_query.RangeVar", json_name: "relation" repeated :table_elts, :message, 2, "pg_query.Node", json_name: "tableElts" repeated :inh_relations, :message, 3, "pg_query.Node", json_name: "inhRelations" optional :partbound, :message, 4, "pg_query.PartitionBoundSpec", json_name: "partbound" optional :partspec, :message, 5, "pg_query.PartitionSpec", json_name: "partspec" optional :of_typename, :message, 6, "pg_query.TypeName", json_name: "ofTypename" repeated :constraints, :message, 7, "pg_query.Node", json_name: "constraints" repeated :options, :message, 8, "pg_query.Node", json_name: "options" optional :oncommit, :enum, 9, "pg_query.OnCommitAction", json_name: "oncommit" optional :tablespacename, :string, 10, json_name: "tablespacename" optional :access_method, :string, 11, json_name: "accessMethod" optional :if_not_exists, :bool, 12, json_name: "if_not_exists" end add_message "pg_query.DefineStmt" do optional :kind, :enum, 1, "pg_query.ObjectType", json_name: "kind" optional :oldstyle, :bool, 2, json_name: "oldstyle" repeated :defnames, :message, 3, "pg_query.Node", json_name: "defnames" repeated :args, :message, 4, "pg_query.Node", json_name: "args" repeated :definition, :message, 5, "pg_query.Node", json_name: "definition" optional :if_not_exists, :bool, 6, json_name: "if_not_exists" optional :replace, :bool, 7, json_name: "replace" end add_message "pg_query.DropStmt" do repeated :objects, :message, 1, "pg_query.Node", json_name: "objects" optional :remove_type, :enum, 2, "pg_query.ObjectType", json_name: "removeType" optional :behavior, :enum, 3, "pg_query.DropBehavior", json_name: "behavior" optional :missing_ok, :bool, 4, json_name: "missing_ok" optional :concurrent, :bool, 5, json_name: "concurrent" end add_message "pg_query.TruncateStmt" do repeated :relations, :message, 1, "pg_query.Node", json_name: "relations" optional :restart_seqs, :bool, 2, json_name: "restart_seqs" optional :behavior, :enum, 3, "pg_query.DropBehavior", json_name: "behavior" end add_message "pg_query.CommentStmt" do optional :objtype, :enum, 1, "pg_query.ObjectType", json_name: "objtype" optional :object, :message, 2, "pg_query.Node", json_name: "object" optional :comment, :string, 3, json_name: "comment" end add_message "pg_query.FetchStmt" do optional :direction, :enum, 1, "pg_query.FetchDirection", json_name: "direction" optional :how_many, :int64, 2, json_name: "howMany" optional :portalname, :string, 3, json_name: "portalname" optional :ismove, :bool, 4, json_name: "ismove" end add_message "pg_query.IndexStmt" do optional :idxname, :string, 1, json_name: "idxname" optional :relation, :message, 2, "pg_query.RangeVar", json_name: "relation" optional :access_method, :string, 3, json_name: "accessMethod" optional :table_space, :string, 4, json_name: "tableSpace" repeated :index_params, :message, 5, "pg_query.Node", json_name: "indexParams" repeated :index_including_params, :message, 6, "pg_query.Node", json_name: "indexIncludingParams" repeated :options, :message, 7, "pg_query.Node", json_name: "options" optional :where_clause, :message, 8, "pg_query.Node", json_name: "whereClause" repeated :exclude_op_names, :message, 9, "pg_query.Node", json_name: "excludeOpNames" optional :idxcomment, :string, 10, json_name: "idxcomment" optional :index_oid, :uint32, 11, json_name: "indexOid" optional :old_node, :uint32, 12, json_name: "oldNode" optional :old_create_subid, :uint32, 13, json_name: "oldCreateSubid" optional :old_first_relfilenode_subid, :uint32, 14, json_name: "oldFirstRelfilenodeSubid" optional :unique, :bool, 15, json_name: "unique" optional :nulls_not_distinct, :bool, 16, json_name: "nulls_not_distinct" optional :primary, :bool, 17, json_name: "primary" optional :isconstraint, :bool, 18, json_name: "isconstraint" optional :deferrable, :bool, 19, json_name: "deferrable" optional :initdeferred, :bool, 20, json_name: "initdeferred" optional :transformed, :bool, 21, json_name: "transformed" optional :concurrent, :bool, 22, json_name: "concurrent" optional :if_not_exists, :bool, 23, json_name: "if_not_exists" optional :reset_default_tblspc, :bool, 24, json_name: "reset_default_tblspc" end add_message "pg_query.CreateFunctionStmt" do optional :is_procedure, :bool, 1, json_name: "is_procedure" optional :replace, :bool, 2, json_name: "replace" repeated :funcname, :message, 3, "pg_query.Node", json_name: "funcname" repeated :parameters, :message, 4, "pg_query.Node", json_name: "parameters" optional :return_type, :message, 5, "pg_query.TypeName", json_name: "returnType" repeated :options, :message, 6, "pg_query.Node", json_name: "options" optional :sql_body, :message, 7, "pg_query.Node", json_name: "sql_body" end add_message "pg_query.AlterFunctionStmt" do optional :objtype, :enum, 1, "pg_query.ObjectType", json_name: "objtype" optional :func, :message, 2, "pg_query.ObjectWithArgs", json_name: "func" repeated :actions, :message, 3, "pg_query.Node", json_name: "actions" end add_message "pg_query.DoStmt" do repeated :args, :message, 1, "pg_query.Node", json_name: "args" end add_message "pg_query.RenameStmt" do optional :rename_type, :enum, 1, "pg_query.ObjectType", json_name: "renameType" optional :relation_type, :enum, 2, "pg_query.ObjectType", json_name: "relationType" optional :relation, :message, 3, "pg_query.RangeVar", json_name: "relation" optional :object, :message, 4, "pg_query.Node", json_name: "object" optional :subname, :string, 5, json_name: "subname" optional :newname, :string, 6, json_name: "newname" optional :behavior, :enum, 7, "pg_query.DropBehavior", json_name: "behavior" optional :missing_ok, :bool, 8, json_name: "missing_ok" end add_message "pg_query.RuleStmt" do optional :relation, :message, 1, "pg_query.RangeVar", json_name: "relation" optional :rulename, :string, 2, json_name: "rulename" optional :where_clause, :message, 3, "pg_query.Node", json_name: "whereClause" optional :event, :enum, 4, "pg_query.CmdType", json_name: "event" optional :instead, :bool, 5, json_name: "instead" repeated :actions, :message, 6, "pg_query.Node", json_name: "actions" optional :replace, :bool, 7, json_name: "replace" end add_message "pg_query.NotifyStmt" do optional :conditionname, :string, 1, json_name: "conditionname" optional :payload, :string, 2, json_name: "payload" end add_message "pg_query.ListenStmt" do optional :conditionname, :string, 1, json_name: "conditionname" end add_message "pg_query.UnlistenStmt" do optional :conditionname, :string, 1, json_name: "conditionname" end add_message "pg_query.TransactionStmt" do optional :kind, :enum, 1, "pg_query.TransactionStmtKind", json_name: "kind" repeated :options, :message, 2, "pg_query.Node", json_name: "options" optional :savepoint_name, :string, 3, json_name: "savepoint_name" optional :gid, :string, 4, json_name: "gid" optional :chain, :bool, 5, json_name: "chain" end add_message "pg_query.ViewStmt" do optional :view, :message, 1, "pg_query.RangeVar", json_name: "view" repeated :aliases, :message, 2, "pg_query.Node", json_name: "aliases" optional :query, :message, 3, "pg_query.Node", json_name: "query" optional :replace, :bool, 4, json_name: "replace" repeated :options, :message, 5, "pg_query.Node", json_name: "options" optional :with_check_option, :enum, 6, "pg_query.ViewCheckOption", json_name: "withCheckOption" end add_message "pg_query.LoadStmt" do optional :filename, :string, 1, json_name: "filename" end add_message "pg_query.CreateDomainStmt" do repeated :domainname, :message, 1, "pg_query.Node", json_name: "domainname" optional :type_name, :message, 2, "pg_query.TypeName", json_name: "typeName" optional :coll_clause, :message, 3, "pg_query.CollateClause", json_name: "collClause" repeated :constraints, :message, 4, "pg_query.Node", json_name: "constraints" end add_message "pg_query.CreatedbStmt" do optional :dbname, :string, 1, json_name: "dbname" repeated :options, :message, 2, "pg_query.Node", json_name: "options" end add_message "pg_query.DropdbStmt" do optional :dbname, :string, 1, json_name: "dbname" optional :missing_ok, :bool, 2, json_name: "missing_ok" repeated :options, :message, 3, "pg_query.Node", json_name: "options" end add_message "pg_query.VacuumStmt" do repeated :options, :message, 1, "pg_query.Node", json_name: "options" repeated :rels, :message, 2, "pg_query.Node", json_name: "rels" optional :is_vacuumcmd, :bool, 3, json_name: "is_vacuumcmd" end add_message "pg_query.ExplainStmt" do optional :query, :message, 1, "pg_query.Node", json_name: "query" repeated :options, :message, 2, "pg_query.Node", json_name: "options" end add_message "pg_query.CreateTableAsStmt" do optional :query, :message, 1, "pg_query.Node", json_name: "query" optional :into, :message, 2, "pg_query.IntoClause", json_name: "into" optional :objtype, :enum, 3, "pg_query.ObjectType", json_name: "objtype" optional :is_select_into, :bool, 4, json_name: "is_select_into" optional :if_not_exists, :bool, 5, json_name: "if_not_exists" end add_message "pg_query.CreateSeqStmt" do optional :sequence, :message, 1, "pg_query.RangeVar", json_name: "sequence" repeated :options, :message, 2, "pg_query.Node", json_name: "options" optional :owner_id, :uint32, 3, json_name: "ownerId" optional :for_identity, :bool, 4, json_name: "for_identity" optional :if_not_exists, :bool, 5, json_name: "if_not_exists" end add_message "pg_query.AlterSeqStmt" do optional :sequence, :message, 1, "pg_query.RangeVar", json_name: "sequence" repeated :options, :message, 2, "pg_query.Node", json_name: "options" optional :for_identity, :bool, 3, json_name: "for_identity" optional :missing_ok, :bool, 4, json_name: "missing_ok" end add_message "pg_query.VariableSetStmt" do optional :kind, :enum, 1, "pg_query.VariableSetKind", json_name: "kind" optional :name, :string, 2, json_name: "name" repeated :args, :message, 3, "pg_query.Node", json_name: "args" optional :is_local, :bool, 4, json_name: "is_local" end add_message "pg_query.VariableShowStmt" do optional :name, :string, 1, json_name: "name" end add_message "pg_query.DiscardStmt" do optional :target, :enum, 1, "pg_query.DiscardMode", json_name: "target" end add_message "pg_query.CreateTrigStmt" do optional :replace, :bool, 1, json_name: "replace" optional :isconstraint, :bool, 2, json_name: "isconstraint" optional :trigname, :string, 3, json_name: "trigname" optional :relation, :message, 4, "pg_query.RangeVar", json_name: "relation" repeated :funcname, :message, 5, "pg_query.Node", json_name: "funcname" repeated :args, :message, 6, "pg_query.Node", json_name: "args" optional :row, :bool, 7, json_name: "row" optional :timing, :int32, 8, json_name: "timing" optional :events, :int32, 9, json_name: "events" repeated :columns, :message, 10, "pg_query.Node", json_name: "columns" optional :when_clause, :message, 11, "pg_query.Node", json_name: "whenClause" repeated :transition_rels, :message, 12, "pg_query.Node", json_name: "transitionRels" optional :deferrable, :bool, 13, json_name: "deferrable" optional :initdeferred, :bool, 14, json_name: "initdeferred" optional :constrrel, :message, 15, "pg_query.RangeVar", json_name: "constrrel" end add_message "pg_query.CreatePLangStmt" do optional :replace, :bool, 1, json_name: "replace" optional :plname, :string, 2, json_name: "plname" repeated :plhandler, :message, 3, "pg_query.Node", json_name: "plhandler" repeated :plinline, :message, 4, "pg_query.Node", json_name: "plinline" repeated :plvalidator, :message, 5, "pg_query.Node", json_name: "plvalidator" optional :pltrusted, :bool, 6, json_name: "pltrusted" end add_message "pg_query.CreateRoleStmt" do optional :stmt_type, :enum, 1, "pg_query.RoleStmtType", json_name: "stmt_type" optional :role, :string, 2, json_name: "role" repeated :options, :message, 3, "pg_query.Node", json_name: "options" end add_message "pg_query.AlterRoleStmt" do optional :role, :message, 1, "pg_query.RoleSpec", json_name: "role" repeated :options, :message, 2, "pg_query.Node", json_name: "options" optional :action, :int32, 3, json_name: "action" end add_message "pg_query.DropRoleStmt" do repeated :roles, :message, 1, "pg_query.Node", json_name: "roles" optional :missing_ok, :bool, 2, json_name: "missing_ok" end add_message "pg_query.LockStmt" do repeated :relations, :message, 1, "pg_query.Node", json_name: "relations" optional :mode, :int32, 2, json_name: "mode" optional :nowait, :bool, 3, json_name: "nowait" end add_message "pg_query.ConstraintsSetStmt" do repeated :constraints, :message, 1, "pg_query.Node", json_name: "constraints" optional :deferred, :bool, 2, json_name: "deferred" end add_message "pg_query.ReindexStmt" do optional :kind, :enum, 1, "pg_query.ReindexObjectType", json_name: "kind" optional :relation, :message, 2, "pg_query.RangeVar", json_name: "relation" optional :name, :string, 3, json_name: "name" repeated :params, :message, 4, "pg_query.Node", json_name: "params" end add_message "pg_query.CheckPointStmt" do end add_message "pg_query.CreateSchemaStmt" do optional :schemaname, :string, 1, json_name: "schemaname" optional :authrole, :message, 2, "pg_query.RoleSpec", json_name: "authrole" repeated :schema_elts, :message, 3, "pg_query.Node", json_name: "schemaElts" optional :if_not_exists, :bool, 4, json_name: "if_not_exists" end add_message "pg_query.AlterDatabaseStmt" do optional :dbname, :string, 1, json_name: "dbname" repeated :options, :message, 2, "pg_query.Node", json_name: "options" end add_message "pg_query.AlterDatabaseRefreshCollStmt" do optional :dbname, :string, 1, json_name: "dbname" end add_message "pg_query.AlterDatabaseSetStmt" do optional :dbname, :string, 1, json_name: "dbname" optional :setstmt, :message, 2, "pg_query.VariableSetStmt", json_name: "setstmt" end add_message "pg_query.AlterRoleSetStmt" do optional :role, :message, 1, "pg_query.RoleSpec", json_name: "role" optional :database, :string, 2, json_name: "database" optional :setstmt, :message, 3, "pg_query.VariableSetStmt", json_name: "setstmt" end add_message "pg_query.CreateConversionStmt" do repeated :conversion_name, :message, 1, "pg_query.Node", json_name: "conversion_name" optional :for_encoding_name, :string, 2, json_name: "for_encoding_name" optional :to_encoding_name, :string, 3, json_name: "to_encoding_name" repeated :func_name, :message, 4, "pg_query.Node", json_name: "func_name" optional :def, :bool, 5, json_name: "def" end add_message "pg_query.CreateCastStmt" do optional :sourcetype, :message, 1, "pg_query.TypeName", json_name: "sourcetype" optional :targettype, :message, 2, "pg_query.TypeName", json_name: "targettype" optional :func, :message, 3, "pg_query.ObjectWithArgs", json_name: "func" optional :context, :enum, 4, "pg_query.CoercionContext", json_name: "context" optional :inout, :bool, 5, json_name: "inout" end add_message "pg_query.CreateOpClassStmt" do repeated :opclassname, :message, 1, "pg_query.Node", json_name: "opclassname" repeated :opfamilyname, :message, 2, "pg_query.Node", json_name: "opfamilyname" optional :amname, :string, 3, json_name: "amname" optional :datatype, :message, 4, "pg_query.TypeName", json_name: "datatype" repeated :items, :message, 5, "pg_query.Node", json_name: "items" optional :is_default, :bool, 6, json_name: "isDefault" end add_message "pg_query.CreateOpFamilyStmt" do repeated :opfamilyname, :message, 1, "pg_query.Node", json_name: "opfamilyname" optional :amname, :string, 2, json_name: "amname" end add_message "pg_query.AlterOpFamilyStmt" do repeated :opfamilyname, :message, 1, "pg_query.Node", json_name: "opfamilyname" optional :amname, :string, 2, json_name: "amname" optional :is_drop, :bool, 3, json_name: "isDrop" repeated :items, :message, 4, "pg_query.Node", json_name: "items" end add_message "pg_query.PrepareStmt" do optional :name, :string, 1, json_name: "name" repeated :argtypes, :message, 2, "pg_query.Node", json_name: "argtypes" optional :query, :message, 3, "pg_query.Node", json_name: "query" end add_message "pg_query.ExecuteStmt" do optional :name, :string, 1, json_name: "name" repeated :params, :message, 2, "pg_query.Node", json_name: "params" end add_message "pg_query.DeallocateStmt" do optional :name, :string, 1, json_name: "name" end add_message "pg_query.DeclareCursorStmt" do optional :portalname, :string, 1, json_name: "portalname" optional :options, :int32, 2, json_name: "options" optional :query, :message, 3, "pg_query.Node", json_name: "query" end add_message "pg_query.CreateTableSpaceStmt" do optional :tablespacename, :string, 1, json_name: "tablespacename" optional :owner, :message, 2, "pg_query.RoleSpec", json_name: "owner" optional :location, :string, 3, json_name: "location" repeated :options, :message, 4, "pg_query.Node", json_name: "options" end add_message "pg_query.DropTableSpaceStmt" do optional :tablespacename, :string, 1, json_name: "tablespacename" optional :missing_ok, :bool, 2, json_name: "missing_ok" end add_message "pg_query.AlterObjectDependsStmt" do optional :object_type, :enum, 1, "pg_query.ObjectType", json_name: "objectType" optional :relation, :message, 2, "pg_query.RangeVar", json_name: "relation" optional :object, :message, 3, "pg_query.Node", json_name: "object" optional :extname, :message, 4, "pg_query.String", json_name: "extname" optional :remove, :bool, 5, json_name: "remove" end add_message "pg_query.AlterObjectSchemaStmt" do optional :object_type, :enum, 1, "pg_query.ObjectType", json_name: "objectType" optional :relation, :message, 2, "pg_query.RangeVar", json_name: "relation" optional :object, :message, 3, "pg_query.Node", json_name: "object" optional :newschema, :string, 4, json_name: "newschema" optional :missing_ok, :bool, 5, json_name: "missing_ok" end add_message "pg_query.AlterOwnerStmt" do optional :object_type, :enum, 1, "pg_query.ObjectType", json_name: "objectType" optional :relation, :message, 2, "pg_query.RangeVar", json_name: "relation" optional :object, :message, 3, "pg_query.Node", json_name: "object" optional :newowner, :message, 4, "pg_query.RoleSpec", json_name: "newowner" end add_message "pg_query.AlterOperatorStmt" do optional :opername, :message, 1, "pg_query.ObjectWithArgs", json_name: "opername" repeated :options, :message, 2, "pg_query.Node", json_name: "options" end add_message "pg_query.AlterTypeStmt" do repeated :type_name, :message, 1, "pg_query.Node", json_name: "typeName" repeated :options, :message, 2, "pg_query.Node", json_name: "options" end add_message "pg_query.DropOwnedStmt" do repeated :roles, :message, 1, "pg_query.Node", json_name: "roles" optional :behavior, :enum, 2, "pg_query.DropBehavior", json_name: "behavior" end add_message "pg_query.ReassignOwnedStmt" do repeated :roles, :message, 1, "pg_query.Node", json_name: "roles" optional :newrole, :message, 2, "pg_query.RoleSpec", json_name: "newrole" end add_message "pg_query.CompositeTypeStmt" do optional :typevar, :message, 1, "pg_query.RangeVar", json_name: "typevar" repeated :coldeflist, :message, 2, "pg_query.Node", json_name: "coldeflist" end add_message "pg_query.CreateEnumStmt" do repeated :type_name, :message, 1, "pg_query.Node", json_name: "typeName" repeated :vals, :message, 2, "pg_query.Node", json_name: "vals" end add_message "pg_query.CreateRangeStmt" do repeated :type_name, :message, 1, "pg_query.Node", json_name: "typeName" repeated :params, :message, 2, "pg_query.Node", json_name: "params" end add_message "pg_query.AlterEnumStmt" do repeated :type_name, :message, 1, "pg_query.Node", json_name: "typeName" optional :old_val, :string, 2, json_name: "oldVal" optional :new_val, :string, 3, json_name: "newVal" optional :new_val_neighbor, :string, 4, json_name: "newValNeighbor" optional :new_val_is_after, :bool, 5, json_name: "newValIsAfter" optional :skip_if_new_val_exists, :bool, 6, json_name: "skipIfNewValExists" end add_message "pg_query.AlterTSDictionaryStmt" do repeated :dictname, :message, 1, "pg_query.Node", json_name: "dictname" repeated :options, :message, 2, "pg_query.Node", json_name: "options" end add_message "pg_query.AlterTSConfigurationStmt" do optional :kind, :enum, 1, "pg_query.AlterTSConfigType", json_name: "kind" repeated :cfgname, :message, 2, "pg_query.Node", json_name: "cfgname" repeated :tokentype, :message, 3, "pg_query.Node", json_name: "tokentype" repeated :dicts, :message, 4, "pg_query.Node", json_name: "dicts" optional :override, :bool, 5, json_name: "override" optional :replace, :bool, 6, json_name: "replace" optional :missing_ok, :bool, 7, json_name: "missing_ok" end add_message "pg_query.CreateFdwStmt" do optional :fdwname, :string, 1, json_name: "fdwname" repeated :func_options, :message, 2, "pg_query.Node", json_name: "func_options" repeated :options, :message, 3, "pg_query.Node", json_name: "options" end add_message "pg_query.AlterFdwStmt" do optional :fdwname, :string, 1, json_name: "fdwname" repeated :func_options, :message, 2, "pg_query.Node", json_name: "func_options" repeated :options, :message, 3, "pg_query.Node", json_name: "options" end add_message "pg_query.CreateForeignServerStmt" do optional :servername, :string, 1, json_name: "servername" optional :servertype, :string, 2, json_name: "servertype" optional :version, :string, 3, json_name: "version" optional :fdwname, :string, 4, json_name: "fdwname" optional :if_not_exists, :bool, 5, json_name: "if_not_exists" repeated :options, :message, 6, "pg_query.Node", json_name: "options" end add_message "pg_query.AlterForeignServerStmt" do optional :servername, :string, 1, json_name: "servername" optional :version, :string, 2, json_name: "version" repeated :options, :message, 3, "pg_query.Node", json_name: "options" optional :has_version, :bool, 4, json_name: "has_version" end add_message "pg_query.CreateUserMappingStmt" do optional :user, :message, 1, "pg_query.RoleSpec", json_name: "user" optional :servername, :string, 2, json_name: "servername" optional :if_not_exists, :bool, 3, json_name: "if_not_exists" repeated :options, :message, 4, "pg_query.Node", json_name: "options" end add_message "pg_query.AlterUserMappingStmt" do optional :user, :message, 1, "pg_query.RoleSpec", json_name: "user" optional :servername, :string, 2, json_name: "servername" repeated :options, :message, 3, "pg_query.Node", json_name: "options" end add_message "pg_query.DropUserMappingStmt" do optional :user, :message, 1, "pg_query.RoleSpec", json_name: "user" optional :servername, :string, 2, json_name: "servername" optional :missing_ok, :bool, 3, json_name: "missing_ok" end add_message "pg_query.AlterTableSpaceOptionsStmt" do optional :tablespacename, :string, 1, json_name: "tablespacename" repeated :options, :message, 2, "pg_query.Node", json_name: "options" optional :is_reset, :bool, 3, json_name: "isReset" end add_message "pg_query.AlterTableMoveAllStmt" do optional :orig_tablespacename, :string, 1, json_name: "orig_tablespacename" optional :objtype, :enum, 2, "pg_query.ObjectType", json_name: "objtype" repeated :roles, :message, 3, "pg_query.Node", json_name: "roles" optional :new_tablespacename, :string, 4, json_name: "new_tablespacename" optional :nowait, :bool, 5, json_name: "nowait" end add_message "pg_query.SecLabelStmt" do optional :objtype, :enum, 1, "pg_query.ObjectType", json_name: "objtype" optional :object, :message, 2, "pg_query.Node", json_name: "object" optional :provider, :string, 3, json_name: "provider" optional :label, :string, 4, json_name: "label" end add_message "pg_query.CreateForeignTableStmt" do optional :base_stmt, :message, 1, "pg_query.CreateStmt", json_name: "base" optional :servername, :string, 2, json_name: "servername" repeated :options, :message, 3, "pg_query.Node", json_name: "options" end add_message "pg_query.ImportForeignSchemaStmt" do optional :server_name, :string, 1, json_name: "server_name" optional :remote_schema, :string, 2, json_name: "remote_schema" optional :local_schema, :string, 3, json_name: "local_schema" optional :list_type, :enum, 4, "pg_query.ImportForeignSchemaType", json_name: "list_type" repeated :table_list, :message, 5, "pg_query.Node", json_name: "table_list" repeated :options, :message, 6, "pg_query.Node", json_name: "options" end add_message "pg_query.CreateExtensionStmt" do optional :extname, :string, 1, json_name: "extname" optional :if_not_exists, :bool, 2, json_name: "if_not_exists" repeated :options, :message, 3, "pg_query.Node", json_name: "options" end add_message "pg_query.AlterExtensionStmt" do optional :extname, :string, 1, json_name: "extname" repeated :options, :message, 2, "pg_query.Node", json_name: "options" end add_message "pg_query.AlterExtensionContentsStmt" do optional :extname, :string, 1, json_name: "extname" optional :action, :int32, 2, json_name: "action" optional :objtype, :enum, 3, "pg_query.ObjectType", json_name: "objtype" optional :object, :message, 4, "pg_query.Node", json_name: "object" end add_message "pg_query.CreateEventTrigStmt" do optional :trigname, :string, 1, json_name: "trigname" optional :eventname, :string, 2, json_name: "eventname" repeated :whenclause, :message, 3, "pg_query.Node", json_name: "whenclause" repeated :funcname, :message, 4, "pg_query.Node", json_name: "funcname" end add_message "pg_query.AlterEventTrigStmt" do optional :trigname, :string, 1, json_name: "trigname" optional :tgenabled, :string, 2, json_name: "tgenabled" end add_message "pg_query.RefreshMatViewStmt" do optional :concurrent, :bool, 1, json_name: "concurrent" optional :skip_data, :bool, 2, json_name: "skipData" optional :relation, :message, 3, "pg_query.RangeVar", json_name: "relation" end add_message "pg_query.ReplicaIdentityStmt" do optional :identity_type, :string, 1, json_name: "identity_type" optional :name, :string, 2, json_name: "name" end add_message "pg_query.AlterSystemStmt" do optional :setstmt, :message, 1, "pg_query.VariableSetStmt", json_name: "setstmt" end add_message "pg_query.CreatePolicyStmt" do optional :policy_name, :string, 1, json_name: "policy_name" optional :table, :message, 2, "pg_query.RangeVar", json_name: "table" optional :cmd_name, :string, 3, json_name: "cmd_name" optional :permissive, :bool, 4, json_name: "permissive" repeated :roles, :message, 5, "pg_query.Node", json_name: "roles" optional :qual, :message, 6, "pg_query.Node", json_name: "qual" optional :with_check, :message, 7, "pg_query.Node", json_name: "with_check" end add_message "pg_query.AlterPolicyStmt" do optional :policy_name, :string, 1, json_name: "policy_name" optional :table, :message, 2, "pg_query.RangeVar", json_name: "table" repeated :roles, :message, 3, "pg_query.Node", json_name: "roles" optional :qual, :message, 4, "pg_query.Node", json_name: "qual" optional :with_check, :message, 5, "pg_query.Node", json_name: "with_check" end add_message "pg_query.CreateTransformStmt" do optional :replace, :bool, 1, json_name: "replace" optional :type_name, :message, 2, "pg_query.TypeName", json_name: "type_name" optional :lang, :string, 3, json_name: "lang" optional :fromsql, :message, 4, "pg_query.ObjectWithArgs", json_name: "fromsql" optional :tosql, :message, 5, "pg_query.ObjectWithArgs", json_name: "tosql" end add_message "pg_query.CreateAmStmt" do optional :amname, :string, 1, json_name: "amname" repeated :handler_name, :message, 2, "pg_query.Node", json_name: "handler_name" optional :amtype, :string, 3, json_name: "amtype" end add_message "pg_query.CreatePublicationStmt" do optional :pubname, :string, 1, json_name: "pubname" repeated :options, :message, 2, "pg_query.Node", json_name: "options" repeated :pubobjects, :message, 3, "pg_query.Node", json_name: "pubobjects" optional :for_all_tables, :bool, 4, json_name: "for_all_tables" end add_message "pg_query.AlterPublicationStmt" do optional :pubname, :string, 1, json_name: "pubname" repeated :options, :message, 2, "pg_query.Node", json_name: "options" repeated :pubobjects, :message, 3, "pg_query.Node", json_name: "pubobjects" optional :for_all_tables, :bool, 4, json_name: "for_all_tables" optional :action, :enum, 5, "pg_query.AlterPublicationAction", json_name: "action" end add_message "pg_query.CreateSubscriptionStmt" do optional :subname, :string, 1, json_name: "subname" optional :conninfo, :string, 2, json_name: "conninfo" repeated :publication, :message, 3, "pg_query.Node", json_name: "publication" repeated :options, :message, 4, "pg_query.Node", json_name: "options" end add_message "pg_query.AlterSubscriptionStmt" do optional :kind, :enum, 1, "pg_query.AlterSubscriptionType", json_name: "kind" optional :subname, :string, 2, json_name: "subname" optional :conninfo, :string, 3, json_name: "conninfo" repeated :publication, :message, 4, "pg_query.Node", json_name: "publication" repeated :options, :message, 5, "pg_query.Node", json_name: "options" end add_message "pg_query.DropSubscriptionStmt" do optional :subname, :string, 1, json_name: "subname" optional :missing_ok, :bool, 2, json_name: "missing_ok" optional :behavior, :enum, 3, "pg_query.DropBehavior", json_name: "behavior" end add_message "pg_query.CreateStatsStmt" do repeated :defnames, :message, 1, "pg_query.Node", json_name: "defnames" repeated :stat_types, :message, 2, "pg_query.Node", json_name: "stat_types" repeated :exprs, :message, 3, "pg_query.Node", json_name: "exprs" repeated :relations, :message, 4, "pg_query.Node", json_name: "relations" optional :stxcomment, :string, 5, json_name: "stxcomment" optional :transformed, :bool, 6, json_name: "transformed" optional :if_not_exists, :bool, 7, json_name: "if_not_exists" end add_message "pg_query.AlterCollationStmt" do repeated :collname, :message, 1, "pg_query.Node", json_name: "collname" end add_message "pg_query.CallStmt" do optional :funccall, :message, 1, "pg_query.FuncCall", json_name: "funccall" optional :funcexpr, :message, 2, "pg_query.FuncExpr", json_name: "funcexpr" repeated :outargs, :message, 3, "pg_query.Node", json_name: "outargs" end add_message "pg_query.AlterStatsStmt" do repeated :defnames, :message, 1, "pg_query.Node", json_name: "defnames" optional :stxstattarget, :int32, 2, json_name: "stxstattarget" optional :missing_ok, :bool, 3, json_name: "missing_ok" end add_message "pg_query.A_Expr" do optional :kind, :enum, 1, "pg_query.A_Expr_Kind", json_name: "kind" repeated :name, :message, 2, "pg_query.Node", json_name: "name" optional :lexpr, :message, 3, "pg_query.Node", json_name: "lexpr" optional :rexpr, :message, 4, "pg_query.Node", json_name: "rexpr" optional :location, :int32, 5, json_name: "location" end add_message "pg_query.ColumnRef" do repeated :fields, :message, 1, "pg_query.Node", json_name: "fields" optional :location, :int32, 2, json_name: "location" end add_message "pg_query.ParamRef" do optional :number, :int32, 1, json_name: "number" optional :location, :int32, 2, json_name: "location" end add_message "pg_query.FuncCall" do repeated :funcname, :message, 1, "pg_query.Node", json_name: "funcname" repeated :args, :message, 2, "pg_query.Node", json_name: "args" repeated :agg_order, :message, 3, "pg_query.Node", json_name: "agg_order" optional :agg_filter, :message, 4, "pg_query.Node", json_name: "agg_filter" optional :over, :message, 5, "pg_query.WindowDef", json_name: "over" optional :agg_within_group, :bool, 6, json_name: "agg_within_group" optional :agg_star, :bool, 7, json_name: "agg_star" optional :agg_distinct, :bool, 8, json_name: "agg_distinct" optional :func_variadic, :bool, 9, json_name: "func_variadic" optional :funcformat, :enum, 10, "pg_query.CoercionForm", json_name: "funcformat" optional :location, :int32, 11, json_name: "location" end add_message "pg_query.A_Star" do end add_message "pg_query.A_Indices" do optional :is_slice, :bool, 1, json_name: "is_slice" optional :lidx, :message, 2, "pg_query.Node", json_name: "lidx" optional :uidx, :message, 3, "pg_query.Node", json_name: "uidx" end add_message "pg_query.A_Indirection" do optional :arg, :message, 1, "pg_query.Node", json_name: "arg" repeated :indirection, :message, 2, "pg_query.Node", json_name: "indirection" end add_message "pg_query.A_ArrayExpr" do repeated :elements, :message, 1, "pg_query.Node", json_name: "elements" optional :location, :int32, 2, json_name: "location" end add_message "pg_query.ResTarget" do optional :name, :string, 1, json_name: "name" repeated :indirection, :message, 2, "pg_query.Node", json_name: "indirection" optional :val, :message, 3, "pg_query.Node", json_name: "val" optional :location, :int32, 4, json_name: "location" end add_message "pg_query.MultiAssignRef" do optional :source, :message, 1, "pg_query.Node", json_name: "source" optional :colno, :int32, 2, json_name: "colno" optional :ncolumns, :int32, 3, json_name: "ncolumns" end add_message "pg_query.TypeCast" do optional :arg, :message, 1, "pg_query.Node", json_name: "arg" optional :type_name, :message, 2, "pg_query.TypeName", json_name: "typeName" optional :location, :int32, 3, json_name: "location" end add_message "pg_query.CollateClause" do optional :arg, :message, 1, "pg_query.Node", json_name: "arg" repeated :collname, :message, 2, "pg_query.Node", json_name: "collname" optional :location, :int32, 3, json_name: "location" end add_message "pg_query.SortBy" do optional :node, :message, 1, "pg_query.Node", json_name: "node" optional :sortby_dir, :enum, 2, "pg_query.SortByDir", json_name: "sortby_dir" optional :sortby_nulls, :enum, 3, "pg_query.SortByNulls", json_name: "sortby_nulls" repeated :use_op, :message, 4, "pg_query.Node", json_name: "useOp" optional :location, :int32, 5, json_name: "location" end add_message "pg_query.WindowDef" do optional :name, :string, 1, json_name: "name" optional :refname, :string, 2, json_name: "refname" repeated :partition_clause, :message, 3, "pg_query.Node", json_name: "partitionClause" repeated :order_clause, :message, 4, "pg_query.Node", json_name: "orderClause" optional :frame_options, :int32, 5, json_name: "frameOptions" optional :start_offset, :message, 6, "pg_query.Node", json_name: "startOffset" optional :end_offset, :message, 7, "pg_query.Node", json_name: "endOffset" optional :location, :int32, 8, json_name: "location" end add_message "pg_query.RangeSubselect" do optional :lateral, :bool, 1, json_name: "lateral" optional :subquery, :message, 2, "pg_query.Node", json_name: "subquery" optional :alias, :message, 3, "pg_query.Alias", json_name: "alias" end add_message "pg_query.RangeFunction" do optional :lateral, :bool, 1, json_name: "lateral" optional :ordinality, :bool, 2, json_name: "ordinality" optional :is_rowsfrom, :bool, 3, json_name: "is_rowsfrom" repeated :functions, :message, 4, "pg_query.Node", json_name: "functions" optional :alias, :message, 5, "pg_query.Alias", json_name: "alias" repeated :coldeflist, :message, 6, "pg_query.Node", json_name: "coldeflist" end add_message "pg_query.RangeTableSample" do optional :relation, :message, 1, "pg_query.Node", json_name: "relation" repeated :method, :message, 2, "pg_query.Node", json_name: "method" repeated :args, :message, 3, "pg_query.Node", json_name: "args" optional :repeatable, :message, 4, "pg_query.Node", json_name: "repeatable" optional :location, :int32, 5, json_name: "location" end add_message "pg_query.RangeTableFunc" do optional :lateral, :bool, 1, json_name: "lateral" optional :docexpr, :message, 2, "pg_query.Node", json_name: "docexpr" optional :rowexpr, :message, 3, "pg_query.Node", json_name: "rowexpr" repeated :namespaces, :message, 4, "pg_query.Node", json_name: "namespaces" repeated :columns, :message, 5, "pg_query.Node", json_name: "columns" optional :alias, :message, 6, "pg_query.Alias", json_name: "alias" optional :location, :int32, 7, json_name: "location" end add_message "pg_query.RangeTableFuncCol" do optional :colname, :string, 1, json_name: "colname" optional :type_name, :message, 2, "pg_query.TypeName", json_name: "typeName" optional :for_ordinality, :bool, 3, json_name: "for_ordinality" optional :is_not_null, :bool, 4, json_name: "is_not_null" optional :colexpr, :message, 5, "pg_query.Node", json_name: "colexpr" optional :coldefexpr, :message, 6, "pg_query.Node", json_name: "coldefexpr" optional :location, :int32, 7, json_name: "location" end add_message "pg_query.TypeName" do repeated :names, :message, 1, "pg_query.Node", json_name: "names" optional :type_oid, :uint32, 2, json_name: "typeOid" optional :setof, :bool, 3, json_name: "setof" optional :pct_type, :bool, 4, json_name: "pct_type" repeated :typmods, :message, 5, "pg_query.Node", json_name: "typmods" optional :typemod, :int32, 6, json_name: "typemod" repeated :array_bounds, :message, 7, "pg_query.Node", json_name: "arrayBounds" optional :location, :int32, 8, json_name: "location" end add_message "pg_query.ColumnDef" do optional :colname, :string, 1, json_name: "colname" optional :type_name, :message, 2, "pg_query.TypeName", json_name: "typeName" optional :compression, :string, 3, json_name: "compression" optional :inhcount, :int32, 4, json_name: "inhcount" optional :is_local, :bool, 5, json_name: "is_local" optional :is_not_null, :bool, 6, json_name: "is_not_null" optional :is_from_type, :bool, 7, json_name: "is_from_type" optional :storage, :string, 8, json_name: "storage" optional :raw_default, :message, 9, "pg_query.Node", json_name: "raw_default" optional :cooked_default, :message, 10, "pg_query.Node", json_name: "cooked_default" optional :identity, :string, 11, json_name: "identity" optional :identity_sequence, :message, 12, "pg_query.RangeVar", json_name: "identitySequence" optional :generated, :string, 13, json_name: "generated" optional :coll_clause, :message, 14, "pg_query.CollateClause", json_name: "collClause" optional :coll_oid, :uint32, 15, json_name: "collOid" repeated :constraints, :message, 16, "pg_query.Node", json_name: "constraints" repeated :fdwoptions, :message, 17, "pg_query.Node", json_name: "fdwoptions" optional :location, :int32, 18, json_name: "location" end add_message "pg_query.IndexElem" do optional :name, :string, 1, json_name: "name" optional :expr, :message, 2, "pg_query.Node", json_name: "expr" optional :indexcolname, :string, 3, json_name: "indexcolname" repeated :collation, :message, 4, "pg_query.Node", json_name: "collation" repeated :opclass, :message, 5, "pg_query.Node", json_name: "opclass" repeated :opclassopts, :message, 6, "pg_query.Node", json_name: "opclassopts" optional :ordering, :enum, 7, "pg_query.SortByDir", json_name: "ordering" optional :nulls_ordering, :enum, 8, "pg_query.SortByNulls", json_name: "nulls_ordering" end add_message "pg_query.StatsElem" do optional :name, :string, 1, json_name: "name" optional :expr, :message, 2, "pg_query.Node", json_name: "expr" end add_message "pg_query.Constraint" do optional :contype, :enum, 1, "pg_query.ConstrType", json_name: "contype" optional :conname, :string, 2, json_name: "conname" optional :deferrable, :bool, 3, json_name: "deferrable" optional :initdeferred, :bool, 4, json_name: "initdeferred" optional :location, :int32, 5, json_name: "location" optional :is_no_inherit, :bool, 6, json_name: "is_no_inherit" optional :raw_expr, :message, 7, "pg_query.Node", json_name: "raw_expr" optional :cooked_expr, :string, 8, json_name: "cooked_expr" optional :generated_when, :string, 9, json_name: "generated_when" optional :nulls_not_distinct, :bool, 10, json_name: "nulls_not_distinct" repeated :keys, :message, 11, "pg_query.Node", json_name: "keys" repeated :including, :message, 12, "pg_query.Node", json_name: "including" repeated :exclusions, :message, 13, "pg_query.Node", json_name: "exclusions" repeated :options, :message, 14, "pg_query.Node", json_name: "options" optional :indexname, :string, 15, json_name: "indexname" optional :indexspace, :string, 16, json_name: "indexspace" optional :reset_default_tblspc, :bool, 17, json_name: "reset_default_tblspc" optional :access_method, :string, 18, json_name: "access_method" optional :where_clause, :message, 19, "pg_query.Node", json_name: "where_clause" optional :pktable, :message, 20, "pg_query.RangeVar", json_name: "pktable" repeated :fk_attrs, :message, 21, "pg_query.Node", json_name: "fk_attrs" repeated :pk_attrs, :message, 22, "pg_query.Node", json_name: "pk_attrs" optional :fk_matchtype, :string, 23, json_name: "fk_matchtype" optional :fk_upd_action, :string, 24, json_name: "fk_upd_action" optional :fk_del_action, :string, 25, json_name: "fk_del_action" repeated :fk_del_set_cols, :message, 26, "pg_query.Node", json_name: "fk_del_set_cols" repeated :old_conpfeqop, :message, 27, "pg_query.Node", json_name: "old_conpfeqop" optional :old_pktable_oid, :uint32, 28, json_name: "old_pktable_oid" optional :skip_validation, :bool, 29, json_name: "skip_validation" optional :initially_valid, :bool, 30, json_name: "initially_valid" end add_message "pg_query.DefElem" do optional :defnamespace, :string, 1, json_name: "defnamespace" optional :defname, :string, 2, json_name: "defname" optional :arg, :message, 3, "pg_query.Node", json_name: "arg" optional :defaction, :enum, 4, "pg_query.DefElemAction", json_name: "defaction" optional :location, :int32, 5, json_name: "location" end add_message "pg_query.RangeTblEntry" do optional :rtekind, :enum, 1, "pg_query.RTEKind", json_name: "rtekind" optional :relid, :uint32, 2, json_name: "relid" optional :relkind, :string, 3, json_name: "relkind" optional :rellockmode, :int32, 4, json_name: "rellockmode" optional :tablesample, :message, 5, "pg_query.TableSampleClause", json_name: "tablesample" optional :subquery, :message, 6, "pg_query.Query", json_name: "subquery" optional :security_barrier, :bool, 7, json_name: "security_barrier" optional :jointype, :enum, 8, "pg_query.JoinType", json_name: "jointype" optional :joinmergedcols, :int32, 9, json_name: "joinmergedcols" repeated :joinaliasvars, :message, 10, "pg_query.Node", json_name: "joinaliasvars" repeated :joinleftcols, :message, 11, "pg_query.Node", json_name: "joinleftcols" repeated :joinrightcols, :message, 12, "pg_query.Node", json_name: "joinrightcols" optional :join_using_alias, :message, 13, "pg_query.Alias", json_name: "join_using_alias" repeated :functions, :message, 14, "pg_query.Node", json_name: "functions" optional :funcordinality, :bool, 15, json_name: "funcordinality" optional :tablefunc, :message, 16, "pg_query.TableFunc", json_name: "tablefunc" repeated :values_lists, :message, 17, "pg_query.Node", json_name: "values_lists" optional :ctename, :string, 18, json_name: "ctename" optional :ctelevelsup, :uint32, 19, json_name: "ctelevelsup" optional :self_reference, :bool, 20, json_name: "self_reference" repeated :coltypes, :message, 21, "pg_query.Node", json_name: "coltypes" repeated :coltypmods, :message, 22, "pg_query.Node", json_name: "coltypmods" repeated :colcollations, :message, 23, "pg_query.Node", json_name: "colcollations" optional :enrname, :string, 24, json_name: "enrname" optional :enrtuples, :double, 25, json_name: "enrtuples" optional :alias, :message, 26, "pg_query.Alias", json_name: "alias" optional :eref, :message, 27, "pg_query.Alias", json_name: "eref" optional :lateral, :bool, 28, json_name: "lateral" optional :inh, :bool, 29, json_name: "inh" optional :in_from_cl, :bool, 30, json_name: "inFromCl" optional :required_perms, :uint32, 31, json_name: "requiredPerms" optional :check_as_user, :uint32, 32, json_name: "checkAsUser" repeated :selected_cols, :uint64, 33, json_name: "selectedCols" repeated :inserted_cols, :uint64, 34, json_name: "insertedCols" repeated :updated_cols, :uint64, 35, json_name: "updatedCols" repeated :extra_updated_cols, :uint64, 36, json_name: "extraUpdatedCols" repeated :security_quals, :message, 37, "pg_query.Node", json_name: "securityQuals" end add_message "pg_query.RangeTblFunction" do optional :funcexpr, :message, 1, "pg_query.Node", json_name: "funcexpr" optional :funccolcount, :int32, 2, json_name: "funccolcount" repeated :funccolnames, :message, 3, "pg_query.Node", json_name: "funccolnames" repeated :funccoltypes, :message, 4, "pg_query.Node", json_name: "funccoltypes" repeated :funccoltypmods, :message, 5, "pg_query.Node", json_name: "funccoltypmods" repeated :funccolcollations, :message, 6, "pg_query.Node", json_name: "funccolcollations" repeated :funcparams, :uint64, 7, json_name: "funcparams" end add_message "pg_query.TableSampleClause" do optional :tsmhandler, :uint32, 1, json_name: "tsmhandler" repeated :args, :message, 2, "pg_query.Node", json_name: "args" optional :repeatable, :message, 3, "pg_query.Node", json_name: "repeatable" end add_message "pg_query.WithCheckOption" do optional :kind, :enum, 1, "pg_query.WCOKind", json_name: "kind" optional :relname, :string, 2, json_name: "relname" optional :polname, :string, 3, json_name: "polname" optional :qual, :message, 4, "pg_query.Node", json_name: "qual" optional :cascaded, :bool, 5, json_name: "cascaded" end add_message "pg_query.SortGroupClause" do optional :tle_sort_group_ref, :uint32, 1, json_name: "tleSortGroupRef" optional :eqop, :uint32, 2, json_name: "eqop" optional :sortop, :uint32, 3, json_name: "sortop" optional :nulls_first, :bool, 4, json_name: "nulls_first" optional :hashable, :bool, 5, json_name: "hashable" end add_message "pg_query.GroupingSet" do optional :kind, :enum, 1, "pg_query.GroupingSetKind", json_name: "kind" repeated :content, :message, 2, "pg_query.Node", json_name: "content" optional :location, :int32, 3, json_name: "location" end add_message "pg_query.WindowClause" do optional :name, :string, 1, json_name: "name" optional :refname, :string, 2, json_name: "refname" repeated :partition_clause, :message, 3, "pg_query.Node", json_name: "partitionClause" repeated :order_clause, :message, 4, "pg_query.Node", json_name: "orderClause" optional :frame_options, :int32, 5, json_name: "frameOptions" optional :start_offset, :message, 6, "pg_query.Node", json_name: "startOffset" optional :end_offset, :message, 7, "pg_query.Node", json_name: "endOffset" repeated :run_condition, :message, 8, "pg_query.Node", json_name: "runCondition" optional :start_in_range_func, :uint32, 9, json_name: "startInRangeFunc" optional :end_in_range_func, :uint32, 10, json_name: "endInRangeFunc" optional :in_range_coll, :uint32, 11, json_name: "inRangeColl" optional :in_range_asc, :bool, 12, json_name: "inRangeAsc" optional :in_range_nulls_first, :bool, 13, json_name: "inRangeNullsFirst" optional :winref, :uint32, 14, json_name: "winref" optional :copied_order, :bool, 15, json_name: "copiedOrder" end add_message "pg_query.ObjectWithArgs" do repeated :objname, :message, 1, "pg_query.Node", json_name: "objname" repeated :objargs, :message, 2, "pg_query.Node", json_name: "objargs" repeated :objfuncargs, :message, 3, "pg_query.Node", json_name: "objfuncargs" optional :args_unspecified, :bool, 4, json_name: "args_unspecified" end add_message "pg_query.AccessPriv" do optional :priv_name, :string, 1, json_name: "priv_name" repeated :cols, :message, 2, "pg_query.Node", json_name: "cols" end add_message "pg_query.CreateOpClassItem" do optional :itemtype, :int32, 1, json_name: "itemtype" optional :name, :message, 2, "pg_query.ObjectWithArgs", json_name: "name" optional :number, :int32, 3, json_name: "number" repeated :order_family, :message, 4, "pg_query.Node", json_name: "order_family" repeated :class_args, :message, 5, "pg_query.Node", json_name: "class_args" optional :storedtype, :message, 6, "pg_query.TypeName", json_name: "storedtype" end add_message "pg_query.TableLikeClause" do optional :relation, :message, 1, "pg_query.RangeVar", json_name: "relation" optional :options, :uint32, 2, json_name: "options" optional :relation_oid, :uint32, 3, json_name: "relationOid" end add_message "pg_query.FunctionParameter" do optional :name, :string, 1, json_name: "name" optional :arg_type, :message, 2, "pg_query.TypeName", json_name: "argType" optional :mode, :enum, 3, "pg_query.FunctionParameterMode", json_name: "mode" optional :defexpr, :message, 4, "pg_query.Node", json_name: "defexpr" end add_message "pg_query.LockingClause" do repeated :locked_rels, :message, 1, "pg_query.Node", json_name: "lockedRels" optional :strength, :enum, 2, "pg_query.LockClauseStrength", json_name: "strength" optional :wait_policy, :enum, 3, "pg_query.LockWaitPolicy", json_name: "waitPolicy" end add_message "pg_query.RowMarkClause" do optional :rti, :uint32, 1, json_name: "rti" optional :strength, :enum, 2, "pg_query.LockClauseStrength", json_name: "strength" optional :wait_policy, :enum, 3, "pg_query.LockWaitPolicy", json_name: "waitPolicy" optional :pushed_down, :bool, 4, json_name: "pushedDown" end add_message "pg_query.XmlSerialize" do optional :xmloption, :enum, 1, "pg_query.XmlOptionType", json_name: "xmloption" optional :expr, :message, 2, "pg_query.Node", json_name: "expr" optional :type_name, :message, 3, "pg_query.TypeName", json_name: "typeName" optional :location, :int32, 4, json_name: "location" end add_message "pg_query.WithClause" do repeated :ctes, :message, 1, "pg_query.Node", json_name: "ctes" optional :recursive, :bool, 2, json_name: "recursive" optional :location, :int32, 3, json_name: "location" end add_message "pg_query.InferClause" do repeated :index_elems, :message, 1, "pg_query.Node", json_name: "indexElems" optional :where_clause, :message, 2, "pg_query.Node", json_name: "whereClause" optional :conname, :string, 3, json_name: "conname" optional :location, :int32, 4, json_name: "location" end add_message "pg_query.OnConflictClause" do optional :action, :enum, 1, "pg_query.OnConflictAction", json_name: "action" optional :infer, :message, 2, "pg_query.InferClause", json_name: "infer" repeated :target_list, :message, 3, "pg_query.Node", json_name: "targetList" optional :where_clause, :message, 4, "pg_query.Node", json_name: "whereClause" optional :location, :int32, 5, json_name: "location" end add_message "pg_query.CTESearchClause" do repeated :search_col_list, :message, 1, "pg_query.Node", json_name: "search_col_list" optional :search_breadth_first, :bool, 2, json_name: "search_breadth_first" optional :search_seq_column, :string, 3, json_name: "search_seq_column" optional :location, :int32, 4, json_name: "location" end add_message "pg_query.CTECycleClause" do repeated :cycle_col_list, :message, 1, "pg_query.Node", json_name: "cycle_col_list" optional :cycle_mark_column, :string, 2, json_name: "cycle_mark_column" optional :cycle_mark_value, :message, 3, "pg_query.Node", json_name: "cycle_mark_value" optional :cycle_mark_default, :message, 4, "pg_query.Node", json_name: "cycle_mark_default" optional :cycle_path_column, :string, 5, json_name: "cycle_path_column" optional :location, :int32, 6, json_name: "location" optional :cycle_mark_type, :uint32, 7, json_name: "cycle_mark_type" optional :cycle_mark_typmod, :int32, 8, json_name: "cycle_mark_typmod" optional :cycle_mark_collation, :uint32, 9, json_name: "cycle_mark_collation" optional :cycle_mark_neop, :uint32, 10, json_name: "cycle_mark_neop" end add_message "pg_query.CommonTableExpr" do optional :ctename, :string, 1, json_name: "ctename" repeated :aliascolnames, :message, 2, "pg_query.Node", json_name: "aliascolnames" optional :ctematerialized, :enum, 3, "pg_query.CTEMaterialize", json_name: "ctematerialized" optional :ctequery, :message, 4, "pg_query.Node", json_name: "ctequery" optional :search_clause, :message, 5, "pg_query.CTESearchClause", json_name: "search_clause" optional :cycle_clause, :message, 6, "pg_query.CTECycleClause", json_name: "cycle_clause" optional :location, :int32, 7, json_name: "location" optional :cterecursive, :bool, 8, json_name: "cterecursive" optional :cterefcount, :int32, 9, json_name: "cterefcount" repeated :ctecolnames, :message, 10, "pg_query.Node", json_name: "ctecolnames" repeated :ctecoltypes, :message, 11, "pg_query.Node", json_name: "ctecoltypes" repeated :ctecoltypmods, :message, 12, "pg_query.Node", json_name: "ctecoltypmods" repeated :ctecolcollations, :message, 13, "pg_query.Node", json_name: "ctecolcollations" end add_message "pg_query.MergeWhenClause" do optional :matched, :bool, 1, json_name: "matched" optional :command_type, :enum, 2, "pg_query.CmdType", json_name: "commandType" optional :override, :enum, 3, "pg_query.OverridingKind", json_name: "override" optional :condition, :message, 4, "pg_query.Node", json_name: "condition" repeated :target_list, :message, 5, "pg_query.Node", json_name: "targetList" repeated :values, :message, 6, "pg_query.Node", json_name: "values" end add_message "pg_query.RoleSpec" do optional :roletype, :enum, 1, "pg_query.RoleSpecType", json_name: "roletype" optional :rolename, :string, 2, json_name: "rolename" optional :location, :int32, 3, json_name: "location" end add_message "pg_query.TriggerTransition" do optional :name, :string, 1, json_name: "name" optional :is_new, :bool, 2, json_name: "isNew" optional :is_table, :bool, 3, json_name: "isTable" end add_message "pg_query.PartitionElem" do optional :name, :string, 1, json_name: "name" optional :expr, :message, 2, "pg_query.Node", json_name: "expr" repeated :collation, :message, 3, "pg_query.Node", json_name: "collation" repeated :opclass, :message, 4, "pg_query.Node", json_name: "opclass" optional :location, :int32, 5, json_name: "location" end add_message "pg_query.PartitionSpec" do optional :strategy, :string, 1, json_name: "strategy" repeated :part_params, :message, 2, "pg_query.Node", json_name: "partParams" optional :location, :int32, 3, json_name: "location" end add_message "pg_query.PartitionBoundSpec" do optional :strategy, :string, 1, json_name: "strategy" optional :is_default, :bool, 2, json_name: "is_default" optional :modulus, :int32, 3, json_name: "modulus" optional :remainder, :int32, 4, json_name: "remainder" repeated :listdatums, :message, 5, "pg_query.Node", json_name: "listdatums" repeated :lowerdatums, :message, 6, "pg_query.Node", json_name: "lowerdatums" repeated :upperdatums, :message, 7, "pg_query.Node", json_name: "upperdatums" optional :location, :int32, 8, json_name: "location" end add_message "pg_query.PartitionRangeDatum" do optional :kind, :enum, 1, "pg_query.PartitionRangeDatumKind", json_name: "kind" optional :value, :message, 2, "pg_query.Node", json_name: "value" optional :location, :int32, 3, json_name: "location" end add_message "pg_query.PartitionCmd" do optional :name, :message, 1, "pg_query.RangeVar", json_name: "name" optional :bound, :message, 2, "pg_query.PartitionBoundSpec", json_name: "bound" optional :concurrent, :bool, 3, json_name: "concurrent" end add_message "pg_query.VacuumRelation" do optional :relation, :message, 1, "pg_query.RangeVar", json_name: "relation" optional :oid, :uint32, 2, json_name: "oid" repeated :va_cols, :message, 3, "pg_query.Node", json_name: "va_cols" end add_message "pg_query.PublicationObjSpec" do optional :pubobjtype, :enum, 1, "pg_query.PublicationObjSpecType", json_name: "pubobjtype" optional :name, :string, 2, json_name: "name" optional :pubtable, :message, 3, "pg_query.PublicationTable", json_name: "pubtable" optional :location, :int32, 4, json_name: "location" end add_message "pg_query.PublicationTable" do optional :relation, :message, 1, "pg_query.RangeVar", json_name: "relation" optional :where_clause, :message, 2, "pg_query.Node", json_name: "whereClause" repeated :columns, :message, 3, "pg_query.Node", json_name: "columns" end add_message "pg_query.InlineCodeBlock" do optional :source_text, :string, 1, json_name: "source_text" optional :lang_oid, :uint32, 2, json_name: "langOid" optional :lang_is_trusted, :bool, 3, json_name: "langIsTrusted" optional :atomic, :bool, 4, json_name: "atomic" end add_message "pg_query.CallContext" do optional :atomic, :bool, 1, json_name: "atomic" end add_message "pg_query.ScanToken" do optional :start, :int32, 1 optional :end, :int32, 2 optional :token, :enum, 4, "pg_query.Token" optional :keyword_kind, :enum, 5, "pg_query.KeywordKind" end add_enum "pg_query.OverridingKind" do value :OVERRIDING_KIND_UNDEFINED, 0 value :OVERRIDING_NOT_SET, 1 value :OVERRIDING_USER_VALUE, 2 value :OVERRIDING_SYSTEM_VALUE, 3 end add_enum "pg_query.QuerySource" do value :QUERY_SOURCE_UNDEFINED, 0 value :QSRC_ORIGINAL, 1 value :QSRC_PARSER, 2 value :QSRC_INSTEAD_RULE, 3 value :QSRC_QUAL_INSTEAD_RULE, 4 value :QSRC_NON_INSTEAD_RULE, 5 end add_enum "pg_query.SortByDir" do value :SORT_BY_DIR_UNDEFINED, 0 value :SORTBY_DEFAULT, 1 value :SORTBY_ASC, 2 value :SORTBY_DESC, 3 value :SORTBY_USING, 4 end add_enum "pg_query.SortByNulls" do value :SORT_BY_NULLS_UNDEFINED, 0 value :SORTBY_NULLS_DEFAULT, 1 value :SORTBY_NULLS_FIRST, 2 value :SORTBY_NULLS_LAST, 3 end add_enum "pg_query.SetQuantifier" do value :SET_QUANTIFIER_UNDEFINED, 0 value :SET_QUANTIFIER_DEFAULT, 1 value :SET_QUANTIFIER_ALL, 2 value :SET_QUANTIFIER_DISTINCT, 3 end add_enum "pg_query.A_Expr_Kind" do value :A_EXPR_KIND_UNDEFINED, 0 value :AEXPR_OP, 1 value :AEXPR_OP_ANY, 2 value :AEXPR_OP_ALL, 3 value :AEXPR_DISTINCT, 4 value :AEXPR_NOT_DISTINCT, 5 value :AEXPR_NULLIF, 6 value :AEXPR_IN, 7 value :AEXPR_LIKE, 8 value :AEXPR_ILIKE, 9 value :AEXPR_SIMILAR, 10 value :AEXPR_BETWEEN, 11 value :AEXPR_NOT_BETWEEN, 12 value :AEXPR_BETWEEN_SYM, 13 value :AEXPR_NOT_BETWEEN_SYM, 14 end add_enum "pg_query.RoleSpecType" do value :ROLE_SPEC_TYPE_UNDEFINED, 0 value :ROLESPEC_CSTRING, 1 value :ROLESPEC_CURRENT_ROLE, 2 value :ROLESPEC_CURRENT_USER, 3 value :ROLESPEC_SESSION_USER, 4 value :ROLESPEC_PUBLIC, 5 end add_enum "pg_query.TableLikeOption" do value :TABLE_LIKE_OPTION_UNDEFINED, 0 value :CREATE_TABLE_LIKE_COMMENTS, 1 value :CREATE_TABLE_LIKE_COMPRESSION, 2 value :CREATE_TABLE_LIKE_CONSTRAINTS, 3 value :CREATE_TABLE_LIKE_DEFAULTS, 4 value :CREATE_TABLE_LIKE_GENERATED, 5 value :CREATE_TABLE_LIKE_IDENTITY, 6 value :CREATE_TABLE_LIKE_INDEXES, 7 value :CREATE_TABLE_LIKE_STATISTICS, 8 value :CREATE_TABLE_LIKE_STORAGE, 9 value :CREATE_TABLE_LIKE_ALL, 10 end add_enum "pg_query.DefElemAction" do value :DEF_ELEM_ACTION_UNDEFINED, 0 value :DEFELEM_UNSPEC, 1 value :DEFELEM_SET, 2 value :DEFELEM_ADD, 3 value :DEFELEM_DROP, 4 end add_enum "pg_query.PartitionRangeDatumKind" do value :PARTITION_RANGE_DATUM_KIND_UNDEFINED, 0 value :PARTITION_RANGE_DATUM_MINVALUE, 1 value :PARTITION_RANGE_DATUM_VALUE, 2 value :PARTITION_RANGE_DATUM_MAXVALUE, 3 end add_enum "pg_query.RTEKind" do value :RTEKIND_UNDEFINED, 0 value :RTE_RELATION, 1 value :RTE_SUBQUERY, 2 value :RTE_JOIN, 3 value :RTE_FUNCTION, 4 value :RTE_TABLEFUNC, 5 value :RTE_VALUES, 6 value :RTE_CTE, 7 value :RTE_NAMEDTUPLESTORE, 8 value :RTE_RESULT, 9 end add_enum "pg_query.WCOKind" do value :WCOKIND_UNDEFINED, 0 value :WCO_VIEW_CHECK, 1 value :WCO_RLS_INSERT_CHECK, 2 value :WCO_RLS_UPDATE_CHECK, 3 value :WCO_RLS_CONFLICT_CHECK, 4 value :WCO_RLS_MERGE_UPDATE_CHECK, 5 value :WCO_RLS_MERGE_DELETE_CHECK, 6 end add_enum "pg_query.GroupingSetKind" do value :GROUPING_SET_KIND_UNDEFINED, 0 value :GROUPING_SET_EMPTY, 1 value :GROUPING_SET_SIMPLE, 2 value :GROUPING_SET_ROLLUP, 3 value :GROUPING_SET_CUBE, 4 value :GROUPING_SET_SETS, 5 end add_enum "pg_query.CTEMaterialize" do value :CTEMATERIALIZE_UNDEFINED, 0 value :CTEMaterializeDefault, 1 value :CTEMaterializeAlways, 2 value :CTEMaterializeNever, 3 end add_enum "pg_query.SetOperation" do value :SET_OPERATION_UNDEFINED, 0 value :SETOP_NONE, 1 value :SETOP_UNION, 2 value :SETOP_INTERSECT, 3 value :SETOP_EXCEPT, 4 end add_enum "pg_query.ObjectType" do value :OBJECT_TYPE_UNDEFINED, 0 value :OBJECT_ACCESS_METHOD, 1 value :OBJECT_AGGREGATE, 2 value :OBJECT_AMOP, 3 value :OBJECT_AMPROC, 4 value :OBJECT_ATTRIBUTE, 5 value :OBJECT_CAST, 6 value :OBJECT_COLUMN, 7 value :OBJECT_COLLATION, 8 value :OBJECT_CONVERSION, 9 value :OBJECT_DATABASE, 10 value :OBJECT_DEFAULT, 11 value :OBJECT_DEFACL, 12 value :OBJECT_DOMAIN, 13 value :OBJECT_DOMCONSTRAINT, 14 value :OBJECT_EVENT_TRIGGER, 15 value :OBJECT_EXTENSION, 16 value :OBJECT_FDW, 17 value :OBJECT_FOREIGN_SERVER, 18 value :OBJECT_FOREIGN_TABLE, 19 value :OBJECT_FUNCTION, 20 value :OBJECT_INDEX, 21 value :OBJECT_LANGUAGE, 22 value :OBJECT_LARGEOBJECT, 23 value :OBJECT_MATVIEW, 24 value :OBJECT_OPCLASS, 25 value :OBJECT_OPERATOR, 26 value :OBJECT_OPFAMILY, 27 value :OBJECT_PARAMETER_ACL, 28 value :OBJECT_POLICY, 29 value :OBJECT_PROCEDURE, 30 value :OBJECT_PUBLICATION, 31 value :OBJECT_PUBLICATION_NAMESPACE, 32 value :OBJECT_PUBLICATION_REL, 33 value :OBJECT_ROLE, 34 value :OBJECT_ROUTINE, 35 value :OBJECT_RULE, 36 value :OBJECT_SCHEMA, 37 value :OBJECT_SEQUENCE, 38 value :OBJECT_SUBSCRIPTION, 39 value :OBJECT_STATISTIC_EXT, 40 value :OBJECT_TABCONSTRAINT, 41 value :OBJECT_TABLE, 42 value :OBJECT_TABLESPACE, 43 value :OBJECT_TRANSFORM, 44 value :OBJECT_TRIGGER, 45 value :OBJECT_TSCONFIGURATION, 46 value :OBJECT_TSDICTIONARY, 47 value :OBJECT_TSPARSER, 48 value :OBJECT_TSTEMPLATE, 49 value :OBJECT_TYPE, 50 value :OBJECT_USER_MAPPING, 51 value :OBJECT_VIEW, 52 end add_enum "pg_query.DropBehavior" do value :DROP_BEHAVIOR_UNDEFINED, 0 value :DROP_RESTRICT, 1 value :DROP_CASCADE, 2 end add_enum "pg_query.AlterTableType" do value :ALTER_TABLE_TYPE_UNDEFINED, 0 value :AT_AddColumn, 1 value :AT_AddColumnRecurse, 2 value :AT_AddColumnToView, 3 value :AT_ColumnDefault, 4 value :AT_CookedColumnDefault, 5 value :AT_DropNotNull, 6 value :AT_SetNotNull, 7 value :AT_DropExpression, 8 value :AT_CheckNotNull, 9 value :AT_SetStatistics, 10 value :AT_SetOptions, 11 value :AT_ResetOptions, 12 value :AT_SetStorage, 13 value :AT_SetCompression, 14 value :AT_DropColumn, 15 value :AT_DropColumnRecurse, 16 value :AT_AddIndex, 17 value :AT_ReAddIndex, 18 value :AT_AddConstraint, 19 value :AT_AddConstraintRecurse, 20 value :AT_ReAddConstraint, 21 value :AT_ReAddDomainConstraint, 22 value :AT_AlterConstraint, 23 value :AT_ValidateConstraint, 24 value :AT_ValidateConstraintRecurse, 25 value :AT_AddIndexConstraint, 26 value :AT_DropConstraint, 27 value :AT_DropConstraintRecurse, 28 value :AT_ReAddComment, 29 value :AT_AlterColumnType, 30 value :AT_AlterColumnGenericOptions, 31 value :AT_ChangeOwner, 32 value :AT_ClusterOn, 33 value :AT_DropCluster, 34 value :AT_SetLogged, 35 value :AT_SetUnLogged, 36 value :AT_DropOids, 37 value :AT_SetAccessMethod, 38 value :AT_SetTableSpace, 39 value :AT_SetRelOptions, 40 value :AT_ResetRelOptions, 41 value :AT_ReplaceRelOptions, 42 value :AT_EnableTrig, 43 value :AT_EnableAlwaysTrig, 44 value :AT_EnableReplicaTrig, 45 value :AT_DisableTrig, 46 value :AT_EnableTrigAll, 47 value :AT_DisableTrigAll, 48 value :AT_EnableTrigUser, 49 value :AT_DisableTrigUser, 50 value :AT_EnableRule, 51 value :AT_EnableAlwaysRule, 52 value :AT_EnableReplicaRule, 53 value :AT_DisableRule, 54 value :AT_AddInherit, 55 value :AT_DropInherit, 56 value :AT_AddOf, 57 value :AT_DropOf, 58 value :AT_ReplicaIdentity, 59 value :AT_EnableRowSecurity, 60 value :AT_DisableRowSecurity, 61 value :AT_ForceRowSecurity, 62 value :AT_NoForceRowSecurity, 63 value :AT_GenericOptions, 64 value :AT_AttachPartition, 65 value :AT_DetachPartition, 66 value :AT_DetachPartitionFinalize, 67 value :AT_AddIdentity, 68 value :AT_SetIdentity, 69 value :AT_DropIdentity, 70 value :AT_ReAddStatistics, 71 end add_enum "pg_query.GrantTargetType" do value :GRANT_TARGET_TYPE_UNDEFINED, 0 value :ACL_TARGET_OBJECT, 1 value :ACL_TARGET_ALL_IN_SCHEMA, 2 value :ACL_TARGET_DEFAULTS, 3 end add_enum "pg_query.VariableSetKind" do value :VARIABLE_SET_KIND_UNDEFINED, 0 value :VAR_SET_VALUE, 1 value :VAR_SET_DEFAULT, 2 value :VAR_SET_CURRENT, 3 value :VAR_SET_MULTI, 4 value :VAR_RESET, 5 value :VAR_RESET_ALL, 6 end add_enum "pg_query.ConstrType" do value :CONSTR_TYPE_UNDEFINED, 0 value :CONSTR_NULL, 1 value :CONSTR_NOTNULL, 2 value :CONSTR_DEFAULT, 3 value :CONSTR_IDENTITY, 4 value :CONSTR_GENERATED, 5 value :CONSTR_CHECK, 6 value :CONSTR_PRIMARY, 7 value :CONSTR_UNIQUE, 8 value :CONSTR_EXCLUSION, 9 value :CONSTR_FOREIGN, 10 value :CONSTR_ATTR_DEFERRABLE, 11 value :CONSTR_ATTR_NOT_DEFERRABLE, 12 value :CONSTR_ATTR_DEFERRED, 13 value :CONSTR_ATTR_IMMEDIATE, 14 end add_enum "pg_query.ImportForeignSchemaType" do value :IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED, 0 value :FDW_IMPORT_SCHEMA_ALL, 1 value :FDW_IMPORT_SCHEMA_LIMIT_TO, 2 value :FDW_IMPORT_SCHEMA_EXCEPT, 3 end add_enum "pg_query.RoleStmtType" do value :ROLE_STMT_TYPE_UNDEFINED, 0 value :ROLESTMT_ROLE, 1 value :ROLESTMT_USER, 2 value :ROLESTMT_GROUP, 3 end add_enum "pg_query.FetchDirection" do value :FETCH_DIRECTION_UNDEFINED, 0 value :FETCH_FORWARD, 1 value :FETCH_BACKWARD, 2 value :FETCH_ABSOLUTE, 3 value :FETCH_RELATIVE, 4 end add_enum "pg_query.FunctionParameterMode" do value :FUNCTION_PARAMETER_MODE_UNDEFINED, 0 value :FUNC_PARAM_IN, 1 value :FUNC_PARAM_OUT, 2 value :FUNC_PARAM_INOUT, 3 value :FUNC_PARAM_VARIADIC, 4 value :FUNC_PARAM_TABLE, 5 value :FUNC_PARAM_DEFAULT, 6 end add_enum "pg_query.TransactionStmtKind" do value :TRANSACTION_STMT_KIND_UNDEFINED, 0 value :TRANS_STMT_BEGIN, 1 value :TRANS_STMT_START, 2 value :TRANS_STMT_COMMIT, 3 value :TRANS_STMT_ROLLBACK, 4 value :TRANS_STMT_SAVEPOINT, 5 value :TRANS_STMT_RELEASE, 6 value :TRANS_STMT_ROLLBACK_TO, 7 value :TRANS_STMT_PREPARE, 8 value :TRANS_STMT_COMMIT_PREPARED, 9 value :TRANS_STMT_ROLLBACK_PREPARED, 10 end add_enum "pg_query.ViewCheckOption" do value :VIEW_CHECK_OPTION_UNDEFINED, 0 value :NO_CHECK_OPTION, 1 value :LOCAL_CHECK_OPTION, 2 value :CASCADED_CHECK_OPTION, 3 end add_enum "pg_query.DiscardMode" do value :DISCARD_MODE_UNDEFINED, 0 value :DISCARD_ALL, 1 value :DISCARD_PLANS, 2 value :DISCARD_SEQUENCES, 3 value :DISCARD_TEMP, 4 end add_enum "pg_query.ReindexObjectType" do value :REINDEX_OBJECT_TYPE_UNDEFINED, 0 value :REINDEX_OBJECT_INDEX, 1 value :REINDEX_OBJECT_TABLE, 2 value :REINDEX_OBJECT_SCHEMA, 3 value :REINDEX_OBJECT_SYSTEM, 4 value :REINDEX_OBJECT_DATABASE, 5 end add_enum "pg_query.AlterTSConfigType" do value :ALTER_TSCONFIG_TYPE_UNDEFINED, 0 value :ALTER_TSCONFIG_ADD_MAPPING, 1 value :ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN, 2 value :ALTER_TSCONFIG_REPLACE_DICT, 3 value :ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN, 4 value :ALTER_TSCONFIG_DROP_MAPPING, 5 end add_enum "pg_query.PublicationObjSpecType" do value :PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED, 0 value :PUBLICATIONOBJ_TABLE, 1 value :PUBLICATIONOBJ_TABLES_IN_SCHEMA, 2 value :PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA, 3 value :PUBLICATIONOBJ_CONTINUATION, 4 end add_enum "pg_query.AlterPublicationAction" do value :ALTER_PUBLICATION_ACTION_UNDEFINED, 0 value :AP_AddObjects, 1 value :AP_DropObjects, 2 value :AP_SetObjects, 3 end add_enum "pg_query.AlterSubscriptionType" do value :ALTER_SUBSCRIPTION_TYPE_UNDEFINED, 0 value :ALTER_SUBSCRIPTION_OPTIONS, 1 value :ALTER_SUBSCRIPTION_CONNECTION, 2 value :ALTER_SUBSCRIPTION_SET_PUBLICATION, 3 value :ALTER_SUBSCRIPTION_ADD_PUBLICATION, 4 value :ALTER_SUBSCRIPTION_DROP_PUBLICATION, 5 value :ALTER_SUBSCRIPTION_REFRESH, 6 value :ALTER_SUBSCRIPTION_ENABLED, 7 value :ALTER_SUBSCRIPTION_SKIP, 8 end add_enum "pg_query.OnCommitAction" do value :ON_COMMIT_ACTION_UNDEFINED, 0 value :ONCOMMIT_NOOP, 1 value :ONCOMMIT_PRESERVE_ROWS, 2 value :ONCOMMIT_DELETE_ROWS, 3 value :ONCOMMIT_DROP, 4 end add_enum "pg_query.ParamKind" do value :PARAM_KIND_UNDEFINED, 0 value :PARAM_EXTERN, 1 value :PARAM_EXEC, 2 value :PARAM_SUBLINK, 3 value :PARAM_MULTIEXPR, 4 end add_enum "pg_query.CoercionContext" do value :COERCION_CONTEXT_UNDEFINED, 0 value :COERCION_IMPLICIT, 1 value :COERCION_ASSIGNMENT, 2 value :COERCION_PLPGSQL, 3 value :COERCION_EXPLICIT, 4 end add_enum "pg_query.CoercionForm" do value :COERCION_FORM_UNDEFINED, 0 value :COERCE_EXPLICIT_CALL, 1 value :COERCE_EXPLICIT_CAST, 2 value :COERCE_IMPLICIT_CAST, 3 value :COERCE_SQL_SYNTAX, 4 end add_enum "pg_query.BoolExprType" do value :BOOL_EXPR_TYPE_UNDEFINED, 0 value :AND_EXPR, 1 value :OR_EXPR, 2 value :NOT_EXPR, 3 end add_enum "pg_query.SubLinkType" do value :SUB_LINK_TYPE_UNDEFINED, 0 value :EXISTS_SUBLINK, 1 value :ALL_SUBLINK, 2 value :ANY_SUBLINK, 3 value :ROWCOMPARE_SUBLINK, 4 value :EXPR_SUBLINK, 5 value :MULTIEXPR_SUBLINK, 6 value :ARRAY_SUBLINK, 7 value :CTE_SUBLINK, 8 end add_enum "pg_query.RowCompareType" do value :ROW_COMPARE_TYPE_UNDEFINED, 0 value :ROWCOMPARE_LT, 1 value :ROWCOMPARE_LE, 2 value :ROWCOMPARE_EQ, 3 value :ROWCOMPARE_GE, 4 value :ROWCOMPARE_GT, 5 value :ROWCOMPARE_NE, 6 end add_enum "pg_query.MinMaxOp" do value :MIN_MAX_OP_UNDEFINED, 0 value :IS_GREATEST, 1 value :IS_LEAST, 2 end add_enum "pg_query.SQLValueFunctionOp" do value :SQLVALUE_FUNCTION_OP_UNDEFINED, 0 value :SVFOP_CURRENT_DATE, 1 value :SVFOP_CURRENT_TIME, 2 value :SVFOP_CURRENT_TIME_N, 3 value :SVFOP_CURRENT_TIMESTAMP, 4 value :SVFOP_CURRENT_TIMESTAMP_N, 5 value :SVFOP_LOCALTIME, 6 value :SVFOP_LOCALTIME_N, 7 value :SVFOP_LOCALTIMESTAMP, 8 value :SVFOP_LOCALTIMESTAMP_N, 9 value :SVFOP_CURRENT_ROLE, 10 value :SVFOP_CURRENT_USER, 11 value :SVFOP_USER, 12 value :SVFOP_SESSION_USER, 13 value :SVFOP_CURRENT_CATALOG, 14 value :SVFOP_CURRENT_SCHEMA, 15 end add_enum "pg_query.XmlExprOp" do value :XML_EXPR_OP_UNDEFINED, 0 value :IS_XMLCONCAT, 1 value :IS_XMLELEMENT, 2 value :IS_XMLFOREST, 3 value :IS_XMLPARSE, 4 value :IS_XMLPI, 5 value :IS_XMLROOT, 6 value :IS_XMLSERIALIZE, 7 value :IS_DOCUMENT, 8 end add_enum "pg_query.XmlOptionType" do value :XML_OPTION_TYPE_UNDEFINED, 0 value :XMLOPTION_DOCUMENT, 1 value :XMLOPTION_CONTENT, 2 end add_enum "pg_query.NullTestType" do value :NULL_TEST_TYPE_UNDEFINED, 0 value :IS_NULL, 1 value :IS_NOT_NULL, 2 end add_enum "pg_query.BoolTestType" do value :BOOL_TEST_TYPE_UNDEFINED, 0 value :IS_TRUE, 1 value :IS_NOT_TRUE, 2 value :IS_FALSE, 3 value :IS_NOT_FALSE, 4 value :IS_UNKNOWN, 5 value :IS_NOT_UNKNOWN, 6 end add_enum "pg_query.CmdType" do value :CMD_TYPE_UNDEFINED, 0 value :CMD_UNKNOWN, 1 value :CMD_SELECT, 2 value :CMD_UPDATE, 3 value :CMD_INSERT, 4 value :CMD_DELETE, 5 value :CMD_MERGE, 6 value :CMD_UTILITY, 7 value :CMD_NOTHING, 8 end add_enum "pg_query.JoinType" do value :JOIN_TYPE_UNDEFINED, 0 value :JOIN_INNER, 1 value :JOIN_LEFT, 2 value :JOIN_FULL, 3 value :JOIN_RIGHT, 4 value :JOIN_SEMI, 5 value :JOIN_ANTI, 6 value :JOIN_UNIQUE_OUTER, 7 value :JOIN_UNIQUE_INNER, 8 end add_enum "pg_query.AggStrategy" do value :AGG_STRATEGY_UNDEFINED, 0 value :AGG_PLAIN, 1 value :AGG_SORTED, 2 value :AGG_HASHED, 3 value :AGG_MIXED, 4 end add_enum "pg_query.AggSplit" do value :AGG_SPLIT_UNDEFINED, 0 value :AGGSPLIT_SIMPLE, 1 value :AGGSPLIT_INITIAL_SERIAL, 2 value :AGGSPLIT_FINAL_DESERIAL, 3 end add_enum "pg_query.SetOpCmd" do value :SET_OP_CMD_UNDEFINED, 0 value :SETOPCMD_INTERSECT, 1 value :SETOPCMD_INTERSECT_ALL, 2 value :SETOPCMD_EXCEPT, 3 value :SETOPCMD_EXCEPT_ALL, 4 end add_enum "pg_query.SetOpStrategy" do value :SET_OP_STRATEGY_UNDEFINED, 0 value :SETOP_SORTED, 1 value :SETOP_HASHED, 2 end add_enum "pg_query.OnConflictAction" do value :ON_CONFLICT_ACTION_UNDEFINED, 0 value :ONCONFLICT_NONE, 1 value :ONCONFLICT_NOTHING, 2 value :ONCONFLICT_UPDATE, 3 end add_enum "pg_query.LimitOption" do value :LIMIT_OPTION_UNDEFINED, 0 value :LIMIT_OPTION_DEFAULT, 1 value :LIMIT_OPTION_COUNT, 2 value :LIMIT_OPTION_WITH_TIES, 3 end add_enum "pg_query.LockClauseStrength" do value :LOCK_CLAUSE_STRENGTH_UNDEFINED, 0 value :LCS_NONE, 1 value :LCS_FORKEYSHARE, 2 value :LCS_FORSHARE, 3 value :LCS_FORNOKEYUPDATE, 4 value :LCS_FORUPDATE, 5 end add_enum "pg_query.LockWaitPolicy" do value :LOCK_WAIT_POLICY_UNDEFINED, 0 value :LockWaitBlock, 1 value :LockWaitSkip, 2 value :LockWaitError, 3 end add_enum "pg_query.LockTupleMode" do value :LOCK_TUPLE_MODE_UNDEFINED, 0 value :LockTupleKeyShare, 1 value :LockTupleShare, 2 value :LockTupleNoKeyExclusive, 3 value :LockTupleExclusive, 4 end add_enum "pg_query.KeywordKind" do value :NO_KEYWORD, 0 value :UNRESERVED_KEYWORD, 1 value :COL_NAME_KEYWORD, 2 value :TYPE_FUNC_NAME_KEYWORD, 3 value :RESERVED_KEYWORD, 4 end add_enum "pg_query.Token" do value :NUL, 0 value :ASCII_37, 37 value :ASCII_40, 40 value :ASCII_41, 41 value :ASCII_42, 42 value :ASCII_43, 43 value :ASCII_44, 44 value :ASCII_45, 45 value :ASCII_46, 46 value :ASCII_47, 47 value :ASCII_58, 58 value :ASCII_59, 59 value :ASCII_60, 60 value :ASCII_61, 61 value :ASCII_62, 62 value :ASCII_63, 63 value :ASCII_91, 91 value :ASCII_92, 92 value :ASCII_93, 93 value :ASCII_94, 94 value :IDENT, 258 value :UIDENT, 259 value :FCONST, 260 value :SCONST, 261 value :USCONST, 262 value :BCONST, 263 value :XCONST, 264 value :Op, 265 value :ICONST, 266 value :PARAM, 267 value :TYPECAST, 268 value :DOT_DOT, 269 value :COLON_EQUALS, 270 value :EQUALS_GREATER, 271 value :LESS_EQUALS, 272 value :GREATER_EQUALS, 273 value :NOT_EQUALS, 274 value :SQL_COMMENT, 275 value :C_COMMENT, 276 value :ABORT_P, 277 value :ABSOLUTE_P, 278 value :ACCESS, 279 value :ACTION, 280 value :ADD_P, 281 value :ADMIN, 282 value :AFTER, 283 value :AGGREGATE, 284 value :ALL, 285 value :ALSO, 286 value :ALTER, 287 value :ALWAYS, 288 value :ANALYSE, 289 value :ANALYZE, 290 value :AND, 291 value :ANY, 292 value :ARRAY, 293 value :AS, 294 value :ASC, 295 value :ASENSITIVE, 296 value :ASSERTION, 297 value :ASSIGNMENT, 298 value :ASYMMETRIC, 299 value :ATOMIC, 300 value :AT, 301 value :ATTACH, 302 value :ATTRIBUTE, 303 value :AUTHORIZATION, 304 value :BACKWARD, 305 value :BEFORE, 306 value :BEGIN_P, 307 value :BETWEEN, 308 value :BIGINT, 309 value :BINARY, 310 value :BIT, 311 value :BOOLEAN_P, 312 value :BOTH, 313 value :BREADTH, 314 value :BY, 315 value :CACHE, 316 value :CALL, 317 value :CALLED, 318 value :CASCADE, 319 value :CASCADED, 320 value :CASE, 321 value :CAST, 322 value :CATALOG_P, 323 value :CHAIN, 324 value :CHAR_P, 325 value :CHARACTER, 326 value :CHARACTERISTICS, 327 value :CHECK, 328 value :CHECKPOINT, 329 value :CLASS, 330 value :CLOSE, 331 value :CLUSTER, 332 value :COALESCE, 333 value :COLLATE, 334 value :COLLATION, 335 value :COLUMN, 336 value :COLUMNS, 337 value :COMMENT, 338 value :COMMENTS, 339 value :COMMIT, 340 value :COMMITTED, 341 value :COMPRESSION, 342 value :CONCURRENTLY, 343 value :CONFIGURATION, 344 value :CONFLICT, 345 value :CONNECTION, 346 value :CONSTRAINT, 347 value :CONSTRAINTS, 348 value :CONTENT_P, 349 value :CONTINUE_P, 350 value :CONVERSION_P, 351 value :COPY, 352 value :COST, 353 value :CREATE, 354 value :CROSS, 355 value :CSV, 356 value :CUBE, 357 value :CURRENT_P, 358 value :CURRENT_CATALOG, 359 value :CURRENT_DATE, 360 value :CURRENT_ROLE, 361 value :CURRENT_SCHEMA, 362 value :CURRENT_TIME, 363 value :CURRENT_TIMESTAMP, 364 value :CURRENT_USER, 365 value :CURSOR, 366 value :CYCLE, 367 value :DATA_P, 368 value :DATABASE, 369 value :DAY_P, 370 value :DEALLOCATE, 371 value :DEC, 372 value :DECIMAL_P, 373 value :DECLARE, 374 value :DEFAULT, 375 value :DEFAULTS, 376 value :DEFERRABLE, 377 value :DEFERRED, 378 value :DEFINER, 379 value :DELETE_P, 380 value :DELIMITER, 381 value :DELIMITERS, 382 value :DEPENDS, 383 value :DEPTH, 384 value :DESC, 385 value :DETACH, 386 value :DICTIONARY, 387 value :DISABLE_P, 388 value :DISCARD, 389 value :DISTINCT, 390 value :DO, 391 value :DOCUMENT_P, 392 value :DOMAIN_P, 393 value :DOUBLE_P, 394 value :DROP, 395 value :EACH, 396 value :ELSE, 397 value :ENABLE_P, 398 value :ENCODING, 399 value :ENCRYPTED, 400 value :END_P, 401 value :ENUM_P, 402 value :ESCAPE, 403 value :EVENT, 404 value :EXCEPT, 405 value :EXCLUDE, 406 value :EXCLUDING, 407 value :EXCLUSIVE, 408 value :EXECUTE, 409 value :EXISTS, 410 value :EXPLAIN, 411 value :EXPRESSION, 412 value :EXTENSION, 413 value :EXTERNAL, 414 value :EXTRACT, 415 value :FALSE_P, 416 value :FAMILY, 417 value :FETCH, 418 value :FILTER, 419 value :FINALIZE, 420 value :FIRST_P, 421 value :FLOAT_P, 422 value :FOLLOWING, 423 value :FOR, 424 value :FORCE, 425 value :FOREIGN, 426 value :FORWARD, 427 value :FREEZE, 428 value :FROM, 429 value :FULL, 430 value :FUNCTION, 431 value :FUNCTIONS, 432 value :GENERATED, 433 value :GLOBAL, 434 value :GRANT, 435 value :GRANTED, 436 value :GREATEST, 437 value :GROUP_P, 438 value :GROUPING, 439 value :GROUPS, 440 value :HANDLER, 441 value :HAVING, 442 value :HEADER_P, 443 value :HOLD, 444 value :HOUR_P, 445 value :IDENTITY_P, 446 value :IF_P, 447 value :ILIKE, 448 value :IMMEDIATE, 449 value :IMMUTABLE, 450 value :IMPLICIT_P, 451 value :IMPORT_P, 452 value :IN_P, 453 value :INCLUDE, 454 value :INCLUDING, 455 value :INCREMENT, 456 value :INDEX, 457 value :INDEXES, 458 value :INHERIT, 459 value :INHERITS, 460 value :INITIALLY, 461 value :INLINE_P, 462 value :INNER_P, 463 value :INOUT, 464 value :INPUT_P, 465 value :INSENSITIVE, 466 value :INSERT, 467 value :INSTEAD, 468 value :INT_P, 469 value :INTEGER, 470 value :INTERSECT, 471 value :INTERVAL, 472 value :INTO, 473 value :INVOKER, 474 value :IS, 475 value :ISNULL, 476 value :ISOLATION, 477 value :JOIN, 478 value :KEY, 479 value :LABEL, 480 value :LANGUAGE, 481 value :LARGE_P, 482 value :LAST_P, 483 value :LATERAL_P, 484 value :LEADING, 485 value :LEAKPROOF, 486 value :LEAST, 487 value :LEFT, 488 value :LEVEL, 489 value :LIKE, 490 value :LIMIT, 491 value :LISTEN, 492 value :LOAD, 493 value :LOCAL, 494 value :LOCALTIME, 495 value :LOCALTIMESTAMP, 496 value :LOCATION, 497 value :LOCK_P, 498 value :LOCKED, 499 value :LOGGED, 500 value :MAPPING, 501 value :MATCH, 502 value :MATCHED, 503 value :MATERIALIZED, 504 value :MAXVALUE, 505 value :MERGE, 506 value :METHOD, 507 value :MINUTE_P, 508 value :MINVALUE, 509 value :MODE, 510 value :MONTH_P, 511 value :MOVE, 512 value :NAME_P, 513 value :NAMES, 514 value :NATIONAL, 515 value :NATURAL, 516 value :NCHAR, 517 value :NEW, 518 value :NEXT, 519 value :NFC, 520 value :NFD, 521 value :NFKC, 522 value :NFKD, 523 value :NO, 524 value :NONE, 525 value :NORMALIZE, 526 value :NORMALIZED, 527 value :NOT, 528 value :NOTHING, 529 value :NOTIFY, 530 value :NOTNULL, 531 value :NOWAIT, 532 value :NULL_P, 533 value :NULLIF, 534 value :NULLS_P, 535 value :NUMERIC, 536 value :OBJECT_P, 537 value :OF, 538 value :OFF, 539 value :OFFSET, 540 value :OIDS, 541 value :OLD, 542 value :ON, 543 value :ONLY, 544 value :OPERATOR, 545 value :OPTION, 546 value :OPTIONS, 547 value :OR, 548 value :ORDER, 549 value :ORDINALITY, 550 value :OTHERS, 551 value :OUT_P, 552 value :OUTER_P, 553 value :OVER, 554 value :OVERLAPS, 555 value :OVERLAY, 556 value :OVERRIDING, 557 value :OWNED, 558 value :OWNER, 559 value :PARALLEL, 560 value :PARAMETER, 561 value :PARSER, 562 value :PARTIAL, 563 value :PARTITION, 564 value :PASSING, 565 value :PASSWORD, 566 value :PLACING, 567 value :PLANS, 568 value :POLICY, 569 value :POSITION, 570 value :PRECEDING, 571 value :PRECISION, 572 value :PRESERVE, 573 value :PREPARE, 574 value :PREPARED, 575 value :PRIMARY, 576 value :PRIOR, 577 value :PRIVILEGES, 578 value :PROCEDURAL, 579 value :PROCEDURE, 580 value :PROCEDURES, 581 value :PROGRAM, 582 value :PUBLICATION, 583 value :QUOTE, 584 value :RANGE, 585 value :READ, 586 value :REAL, 587 value :REASSIGN, 588 value :RECHECK, 589 value :RECURSIVE, 590 value :REF_P, 591 value :REFERENCES, 592 value :REFERENCING, 593 value :REFRESH, 594 value :REINDEX, 595 value :RELATIVE_P, 596 value :RELEASE, 597 value :RENAME, 598 value :REPEATABLE, 599 value :REPLACE, 600 value :REPLICA, 601 value :RESET, 602 value :RESTART, 603 value :RESTRICT, 604 value :RETURN, 605 value :RETURNING, 606 value :RETURNS, 607 value :REVOKE, 608 value :RIGHT, 609 value :ROLE, 610 value :ROLLBACK, 611 value :ROLLUP, 612 value :ROUTINE, 613 value :ROUTINES, 614 value :ROW, 615 value :ROWS, 616 value :RULE, 617 value :SAVEPOINT, 618 value :SCHEMA, 619 value :SCHEMAS, 620 value :SCROLL, 621 value :SEARCH, 622 value :SECOND_P, 623 value :SECURITY, 624 value :SELECT, 625 value :SEQUENCE, 626 value :SEQUENCES, 627 value :SERIALIZABLE, 628 value :SERVER, 629 value :SESSION, 630 value :SESSION_USER, 631 value :SET, 632 value :SETS, 633 value :SETOF, 634 value :SHARE, 635 value :SHOW, 636 value :SIMILAR, 637 value :SIMPLE, 638 value :SKIP, 639 value :SMALLINT, 640 value :SNAPSHOT, 641 value :SOME, 642 value :SQL_P, 643 value :STABLE, 644 value :STANDALONE_P, 645 value :START, 646 value :STATEMENT, 647 value :STATISTICS, 648 value :STDIN, 649 value :STDOUT, 650 value :STORAGE, 651 value :STORED, 652 value :STRICT_P, 653 value :STRIP_P, 654 value :SUBSCRIPTION, 655 value :SUBSTRING, 656 value :SUPPORT, 657 value :SYMMETRIC, 658 value :SYSID, 659 value :SYSTEM_P, 660 value :TABLE, 661 value :TABLES, 662 value :TABLESAMPLE, 663 value :TABLESPACE, 664 value :TEMP, 665 value :TEMPLATE, 666 value :TEMPORARY, 667 value :TEXT_P, 668 value :THEN, 669 value :TIES, 670 value :TIME, 671 value :TIMESTAMP, 672 value :TO, 673 value :TRAILING, 674 value :TRANSACTION, 675 value :TRANSFORM, 676 value :TREAT, 677 value :TRIGGER, 678 value :TRIM, 679 value :TRUE_P, 680 value :TRUNCATE, 681 value :TRUSTED, 682 value :TYPE_P, 683 value :TYPES_P, 684 value :UESCAPE, 685 value :UNBOUNDED, 686 value :UNCOMMITTED, 687 value :UNENCRYPTED, 688 value :UNION, 689 value :UNIQUE, 690 value :UNKNOWN, 691 value :UNLISTEN, 692 value :UNLOGGED, 693 value :UNTIL, 694 value :UPDATE, 695 value :USER, 696 value :USING, 697 value :VACUUM, 698 value :VALID, 699 value :VALIDATE, 700 value :VALIDATOR, 701 value :VALUE_P, 702 value :VALUES, 703 value :VARCHAR, 704 value :VARIADIC, 705 value :VARYING, 706 value :VERBOSE, 707 value :VERSION_P, 708 value :VIEW, 709 value :VIEWS, 710 value :VOLATILE, 711 value :WHEN, 712 value :WHERE, 713 value :WHITESPACE_P, 714 value :WINDOW, 715 value :WITH, 716 value :WITHIN, 717 value :WITHOUT, 718 value :WORK, 719 value :WRAPPER, 720 value :WRITE, 721 value :XML_P, 722 value :XMLATTRIBUTES, 723 value :XMLCONCAT, 724 value :XMLELEMENT, 725 value :XMLEXISTS, 726 value :XMLFOREST, 727 value :XMLNAMESPACES, 728 value :XMLPARSE, 729 value :XMLPI, 730 value :XMLROOT, 731 value :XMLSERIALIZE, 732 value :XMLTABLE, 733 value :YEAR_P, 734 value :YES_P, 735 value :ZONE, 736 value :NOT_LA, 737 value :NULLS_LA, 738 value :WITH_LA, 739 value :MODE_TYPE_NAME, 740 value :MODE_PLPGSQL_EXPR, 741 value :MODE_PLPGSQL_ASSIGN1, 742 value :MODE_PLPGSQL_ASSIGN2, 743 value :MODE_PLPGSQL_ASSIGN3, 744 value :UMINUS, 745 end end end module PgQuery ParseResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ParseResult").msgclass ScanResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ScanResult").msgclass Node = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.Node").msgclass Integer = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.Integer").msgclass Float = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.Float").msgclass Boolean = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.Boolean").msgclass String = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.String").msgclass BitString = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.BitString").msgclass List = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.List").msgclass OidList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.OidList").msgclass IntList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.IntList").msgclass A_Const = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.A_Const").msgclass Alias = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.Alias").msgclass RangeVar = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RangeVar").msgclass TableFunc = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.TableFunc").msgclass Var = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.Var").msgclass Param = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.Param").msgclass Aggref = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.Aggref").msgclass GroupingFunc = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.GroupingFunc").msgclass WindowFunc = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.WindowFunc").msgclass SubscriptingRef = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SubscriptingRef").msgclass FuncExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.FuncExpr").msgclass NamedArgExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.NamedArgExpr").msgclass OpExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.OpExpr").msgclass DistinctExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DistinctExpr").msgclass NullIfExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.NullIfExpr").msgclass ScalarArrayOpExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ScalarArrayOpExpr").msgclass BoolExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.BoolExpr").msgclass SubLink = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SubLink").msgclass SubPlan = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SubPlan").msgclass AlternativeSubPlan = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlternativeSubPlan").msgclass FieldSelect = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.FieldSelect").msgclass FieldStore = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.FieldStore").msgclass RelabelType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RelabelType").msgclass CoerceViaIO = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CoerceViaIO").msgclass ArrayCoerceExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ArrayCoerceExpr").msgclass ConvertRowtypeExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ConvertRowtypeExpr").msgclass CollateExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CollateExpr").msgclass CaseExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CaseExpr").msgclass CaseWhen = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CaseWhen").msgclass CaseTestExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CaseTestExpr").msgclass ArrayExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ArrayExpr").msgclass RowExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RowExpr").msgclass RowCompareExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RowCompareExpr").msgclass CoalesceExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CoalesceExpr").msgclass MinMaxExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.MinMaxExpr").msgclass SQLValueFunction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SQLValueFunction").msgclass XmlExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.XmlExpr").msgclass NullTest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.NullTest").msgclass BooleanTest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.BooleanTest").msgclass CoerceToDomain = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CoerceToDomain").msgclass CoerceToDomainValue = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CoerceToDomainValue").msgclass SetToDefault = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SetToDefault").msgclass CurrentOfExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CurrentOfExpr").msgclass NextValueExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.NextValueExpr").msgclass InferenceElem = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.InferenceElem").msgclass TargetEntry = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.TargetEntry").msgclass RangeTblRef = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RangeTblRef").msgclass JoinExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.JoinExpr").msgclass FromExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.FromExpr").msgclass OnConflictExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.OnConflictExpr").msgclass IntoClause = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.IntoClause").msgclass MergeAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.MergeAction").msgclass RawStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RawStmt").msgclass Query = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.Query").msgclass InsertStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.InsertStmt").msgclass DeleteStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DeleteStmt").msgclass UpdateStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.UpdateStmt").msgclass MergeStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.MergeStmt").msgclass SelectStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SelectStmt").msgclass ReturnStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ReturnStmt").msgclass PLAssignStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.PLAssignStmt").msgclass AlterTableStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterTableStmt").msgclass AlterTableCmd = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterTableCmd").msgclass AlterDomainStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterDomainStmt").msgclass SetOperationStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SetOperationStmt").msgclass GrantStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.GrantStmt").msgclass GrantRoleStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.GrantRoleStmt").msgclass AlterDefaultPrivilegesStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterDefaultPrivilegesStmt").msgclass ClosePortalStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ClosePortalStmt").msgclass ClusterStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ClusterStmt").msgclass CopyStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CopyStmt").msgclass CreateStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateStmt").msgclass DefineStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DefineStmt").msgclass DropStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DropStmt").msgclass TruncateStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.TruncateStmt").msgclass CommentStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CommentStmt").msgclass FetchStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.FetchStmt").msgclass IndexStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.IndexStmt").msgclass CreateFunctionStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateFunctionStmt").msgclass AlterFunctionStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterFunctionStmt").msgclass DoStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DoStmt").msgclass RenameStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RenameStmt").msgclass RuleStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RuleStmt").msgclass NotifyStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.NotifyStmt").msgclass ListenStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ListenStmt").msgclass UnlistenStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.UnlistenStmt").msgclass TransactionStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.TransactionStmt").msgclass ViewStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ViewStmt").msgclass LoadStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.LoadStmt").msgclass CreateDomainStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateDomainStmt").msgclass CreatedbStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreatedbStmt").msgclass DropdbStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DropdbStmt").msgclass VacuumStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.VacuumStmt").msgclass ExplainStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ExplainStmt").msgclass CreateTableAsStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateTableAsStmt").msgclass CreateSeqStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateSeqStmt").msgclass AlterSeqStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterSeqStmt").msgclass VariableSetStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.VariableSetStmt").msgclass VariableShowStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.VariableShowStmt").msgclass DiscardStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DiscardStmt").msgclass CreateTrigStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateTrigStmt").msgclass CreatePLangStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreatePLangStmt").msgclass CreateRoleStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateRoleStmt").msgclass AlterRoleStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterRoleStmt").msgclass DropRoleStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DropRoleStmt").msgclass LockStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.LockStmt").msgclass ConstraintsSetStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ConstraintsSetStmt").msgclass ReindexStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ReindexStmt").msgclass CheckPointStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CheckPointStmt").msgclass CreateSchemaStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateSchemaStmt").msgclass AlterDatabaseStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterDatabaseStmt").msgclass AlterDatabaseRefreshCollStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterDatabaseRefreshCollStmt").msgclass AlterDatabaseSetStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterDatabaseSetStmt").msgclass AlterRoleSetStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterRoleSetStmt").msgclass CreateConversionStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateConversionStmt").msgclass CreateCastStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateCastStmt").msgclass CreateOpClassStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateOpClassStmt").msgclass CreateOpFamilyStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateOpFamilyStmt").msgclass AlterOpFamilyStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterOpFamilyStmt").msgclass PrepareStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.PrepareStmt").msgclass ExecuteStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ExecuteStmt").msgclass DeallocateStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DeallocateStmt").msgclass DeclareCursorStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DeclareCursorStmt").msgclass CreateTableSpaceStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateTableSpaceStmt").msgclass DropTableSpaceStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DropTableSpaceStmt").msgclass AlterObjectDependsStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterObjectDependsStmt").msgclass AlterObjectSchemaStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterObjectSchemaStmt").msgclass AlterOwnerStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterOwnerStmt").msgclass AlterOperatorStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterOperatorStmt").msgclass AlterTypeStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterTypeStmt").msgclass DropOwnedStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DropOwnedStmt").msgclass ReassignOwnedStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ReassignOwnedStmt").msgclass CompositeTypeStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CompositeTypeStmt").msgclass CreateEnumStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateEnumStmt").msgclass CreateRangeStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateRangeStmt").msgclass AlterEnumStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterEnumStmt").msgclass AlterTSDictionaryStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterTSDictionaryStmt").msgclass AlterTSConfigurationStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterTSConfigurationStmt").msgclass CreateFdwStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateFdwStmt").msgclass AlterFdwStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterFdwStmt").msgclass CreateForeignServerStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateForeignServerStmt").msgclass AlterForeignServerStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterForeignServerStmt").msgclass CreateUserMappingStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateUserMappingStmt").msgclass AlterUserMappingStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterUserMappingStmt").msgclass DropUserMappingStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DropUserMappingStmt").msgclass AlterTableSpaceOptionsStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterTableSpaceOptionsStmt").msgclass AlterTableMoveAllStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterTableMoveAllStmt").msgclass SecLabelStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SecLabelStmt").msgclass CreateForeignTableStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateForeignTableStmt").msgclass ImportForeignSchemaStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ImportForeignSchemaStmt").msgclass CreateExtensionStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateExtensionStmt").msgclass AlterExtensionStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterExtensionStmt").msgclass AlterExtensionContentsStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterExtensionContentsStmt").msgclass CreateEventTrigStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateEventTrigStmt").msgclass AlterEventTrigStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterEventTrigStmt").msgclass RefreshMatViewStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RefreshMatViewStmt").msgclass ReplicaIdentityStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ReplicaIdentityStmt").msgclass AlterSystemStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterSystemStmt").msgclass CreatePolicyStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreatePolicyStmt").msgclass AlterPolicyStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterPolicyStmt").msgclass CreateTransformStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateTransformStmt").msgclass CreateAmStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateAmStmt").msgclass CreatePublicationStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreatePublicationStmt").msgclass AlterPublicationStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterPublicationStmt").msgclass CreateSubscriptionStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateSubscriptionStmt").msgclass AlterSubscriptionStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterSubscriptionStmt").msgclass DropSubscriptionStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DropSubscriptionStmt").msgclass CreateStatsStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateStatsStmt").msgclass AlterCollationStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterCollationStmt").msgclass CallStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CallStmt").msgclass AlterStatsStmt = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterStatsStmt").msgclass A_Expr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.A_Expr").msgclass ColumnRef = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ColumnRef").msgclass ParamRef = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ParamRef").msgclass FuncCall = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.FuncCall").msgclass A_Star = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.A_Star").msgclass A_Indices = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.A_Indices").msgclass A_Indirection = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.A_Indirection").msgclass A_ArrayExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.A_ArrayExpr").msgclass ResTarget = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ResTarget").msgclass MultiAssignRef = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.MultiAssignRef").msgclass TypeCast = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.TypeCast").msgclass CollateClause = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CollateClause").msgclass SortBy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SortBy").msgclass WindowDef = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.WindowDef").msgclass RangeSubselect = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RangeSubselect").msgclass RangeFunction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RangeFunction").msgclass RangeTableSample = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RangeTableSample").msgclass RangeTableFunc = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RangeTableFunc").msgclass RangeTableFuncCol = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RangeTableFuncCol").msgclass TypeName = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.TypeName").msgclass ColumnDef = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ColumnDef").msgclass IndexElem = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.IndexElem").msgclass StatsElem = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.StatsElem").msgclass Constraint = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.Constraint").msgclass DefElem = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DefElem").msgclass RangeTblEntry = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RangeTblEntry").msgclass RangeTblFunction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RangeTblFunction").msgclass TableSampleClause = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.TableSampleClause").msgclass WithCheckOption = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.WithCheckOption").msgclass SortGroupClause = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SortGroupClause").msgclass GroupingSet = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.GroupingSet").msgclass WindowClause = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.WindowClause").msgclass ObjectWithArgs = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ObjectWithArgs").msgclass AccessPriv = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AccessPriv").msgclass CreateOpClassItem = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CreateOpClassItem").msgclass TableLikeClause = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.TableLikeClause").msgclass FunctionParameter = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.FunctionParameter").msgclass LockingClause = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.LockingClause").msgclass RowMarkClause = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RowMarkClause").msgclass XmlSerialize = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.XmlSerialize").msgclass WithClause = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.WithClause").msgclass InferClause = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.InferClause").msgclass OnConflictClause = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.OnConflictClause").msgclass CTESearchClause = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CTESearchClause").msgclass CTECycleClause = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CTECycleClause").msgclass CommonTableExpr = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CommonTableExpr").msgclass MergeWhenClause = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.MergeWhenClause").msgclass RoleSpec = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RoleSpec").msgclass TriggerTransition = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.TriggerTransition").msgclass PartitionElem = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.PartitionElem").msgclass PartitionSpec = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.PartitionSpec").msgclass PartitionBoundSpec = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.PartitionBoundSpec").msgclass PartitionRangeDatum = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.PartitionRangeDatum").msgclass PartitionCmd = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.PartitionCmd").msgclass VacuumRelation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.VacuumRelation").msgclass PublicationObjSpec = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.PublicationObjSpec").msgclass PublicationTable = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.PublicationTable").msgclass InlineCodeBlock = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.InlineCodeBlock").msgclass CallContext = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CallContext").msgclass ScanToken = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ScanToken").msgclass OverridingKind = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.OverridingKind").enummodule QuerySource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.QuerySource").enummodule SortByDir = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SortByDir").enummodule SortByNulls = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SortByNulls").enummodule SetQuantifier = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SetQuantifier").enummodule A_Expr_Kind = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.A_Expr_Kind").enummodule RoleSpecType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RoleSpecType").enummodule TableLikeOption = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.TableLikeOption").enummodule DefElemAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DefElemAction").enummodule PartitionRangeDatumKind = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.PartitionRangeDatumKind").enummodule RTEKind = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RTEKind").enummodule WCOKind = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.WCOKind").enummodule GroupingSetKind = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.GroupingSetKind").enummodule CTEMaterialize = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CTEMaterialize").enummodule SetOperation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SetOperation").enummodule ObjectType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ObjectType").enummodule DropBehavior = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DropBehavior").enummodule AlterTableType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterTableType").enummodule GrantTargetType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.GrantTargetType").enummodule VariableSetKind = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.VariableSetKind").enummodule ConstrType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ConstrType").enummodule ImportForeignSchemaType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ImportForeignSchemaType").enummodule RoleStmtType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RoleStmtType").enummodule FetchDirection = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.FetchDirection").enummodule FunctionParameterMode = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.FunctionParameterMode").enummodule TransactionStmtKind = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.TransactionStmtKind").enummodule ViewCheckOption = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ViewCheckOption").enummodule DiscardMode = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.DiscardMode").enummodule ReindexObjectType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ReindexObjectType").enummodule AlterTSConfigType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterTSConfigType").enummodule PublicationObjSpecType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.PublicationObjSpecType").enummodule AlterPublicationAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterPublicationAction").enummodule AlterSubscriptionType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AlterSubscriptionType").enummodule OnCommitAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.OnCommitAction").enummodule ParamKind = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.ParamKind").enummodule CoercionContext = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CoercionContext").enummodule CoercionForm = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CoercionForm").enummodule BoolExprType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.BoolExprType").enummodule SubLinkType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SubLinkType").enummodule RowCompareType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.RowCompareType").enummodule MinMaxOp = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.MinMaxOp").enummodule SQLValueFunctionOp = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SQLValueFunctionOp").enummodule XmlExprOp = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.XmlExprOp").enummodule XmlOptionType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.XmlOptionType").enummodule NullTestType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.NullTestType").enummodule BoolTestType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.BoolTestType").enummodule CmdType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.CmdType").enummodule JoinType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.JoinType").enummodule AggStrategy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AggStrategy").enummodule AggSplit = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.AggSplit").enummodule SetOpCmd = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SetOpCmd").enummodule SetOpStrategy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.SetOpStrategy").enummodule OnConflictAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.OnConflictAction").enummodule LimitOption = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.LimitOption").enummodule LockClauseStrength = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.LockClauseStrength").enummodule LockWaitPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.LockWaitPolicy").enummodule LockTupleMode = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.LockTupleMode").enummodule KeywordKind = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.KeywordKind").enummodule Token = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("pg_query.Token").enummodule end pg_query-4.2.3/lib/pg_query/filter_columns.rb0000644000004100000410000001057214510636647021377 0ustar www-datawww-datamodule PgQuery class ParserResult # Returns a list of columns that the query filters by - this excludes the # target list, but includes things like JOIN condition and WHERE clause. # # Note: This also traverses into sub-selects. def filter_columns # rubocop:disable Metrics/CyclomaticComplexity load_objects! if @aliases.nil? # Get condition items from the parsetree statements = @tree.stmts.dup.to_a.map(&:stmt) condition_items = [] filter_columns = [] loop do statement = statements.shift if statement case statement.node when :list statements += statement.list.items when :raw_stmt statements << statement.raw_stmt.stmt when :select_stmt case statement.select_stmt.op when :SETOP_NONE if statement.select_stmt.from_clause # FROM subselects statement.select_stmt.from_clause.each do |item| next unless item['RangeSubselect'] statements << item['RangeSubselect']['subquery'] end # JOIN ON conditions condition_items += conditions_from_join_clauses(statement.select_stmt.from_clause) end # WHERE clause condition_items << statement.select_stmt.where_clause if statement.select_stmt.where_clause # CTEs if statement.select_stmt.with_clause statement.select_stmt.with_clause.ctes.each do |item| statements << item.common_table_expr.ctequery if item.node == :common_table_expr end end when :SETOP_UNION, :SETOP_EXCEPT, :SETOP_INTERSECT statements << PgQuery::Node.new(select_stmt: statement.select_stmt.larg) if statement.select_stmt.larg statements << PgQuery::Node.new(select_stmt: statement.select_stmt.rarg) if statement.select_stmt.rarg end when :update_stmt condition_items << statement.update_stmt.where_clause if statement.update_stmt.where_clause when :delete_stmt condition_items << statement.delete_stmt.where_clause if statement.delete_stmt.where_clause when :index_stmt condition_items << statement.index_stmt.where_clause if statement.index_stmt.where_clause end end # Process both JOIN and WHERE conditions here next_item = condition_items.shift if next_item case next_item.node when :a_expr condition_items << next_item.a_expr.lexpr if next_item.a_expr.lexpr condition_items << next_item.a_expr.rexpr if next_item.a_expr.rexpr when :bool_expr condition_items += next_item.bool_expr.args when :coalesce_expr condition_items += next_item.coalesce_expr.args when :row_expr condition_items += next_item.row_expr.args when :column_ref column, table = next_item.column_ref.fields.map { |f| f.string.sval }.reverse filter_columns << [@aliases[table] || table, column] when :null_test condition_items << next_item.null_test.arg when :boolean_test condition_items << next_item.boolean_test.arg when :func_call # FIXME: This should actually be extracted as a funccall and be compared with those indices condition_items += next_item.func_call.args if next_item.func_call.args when :sub_link condition_items << next_item.sub_link.testexpr statements << next_item.sub_link.subselect end end break if statements.empty? && condition_items.empty? end filter_columns.uniq end protected def conditions_from_join_clauses(from_clause) condition_items = [] from_clause.each do |item| next unless item.node == :join_expr joinexpr_items = [item.join_expr] loop do next_item = joinexpr_items.shift break unless next_item condition_items << next_item.quals if next_item.quals joinexpr_items << next_item.larg.join_expr if next_item.larg.node == :join_expr joinexpr_items << next_item.rarg.join_expr if next_item.rarg.node == :join_expr end end condition_items end end end pg_query-4.2.3/lib/pg_query/deparse.rb0000644000004100000410000000177014510636647017775 0ustar www-datawww-datamodule PgQuery class ParserResult def deparse PgQuery.deparse(@tree) end end # Reconstruct all of the parsed queries into their original form def self.deparse(tree) if PgQuery::ParseResult.method(:encode).arity == 1 PgQuery.deparse_protobuf(PgQuery::ParseResult.encode(tree)).force_encoding('UTF-8') elsif PgQuery::ParseResult.method(:encode).arity == -1 PgQuery.deparse_protobuf(PgQuery::ParseResult.encode(tree, recursion_limit: 1_000)).force_encoding('UTF-8') else raise ArgumentError, 'Unsupported protobuf Ruby API' end end # Convenience method for deparsing a statement of a specific type def self.deparse_stmt(stmt) deparse(PgQuery::ParseResult.new(version: PG_VERSION_NUM, stmts: [PgQuery::RawStmt.new(stmt: PgQuery::Node.from(stmt))])) end # Convenience method for deparsing an expression def self.deparse_expr(expr) deparse_stmt(PgQuery::SelectStmt.new(where_clause: expr, op: :SETOP_NONE)).gsub('SELECT WHERE ', '') end end pg_query-4.2.3/lib/pg_query/scan.rb0000644000004100000410000000076314510636647017277 0ustar www-datawww-datamodule PgQuery class ScanError < ArgumentError attr_reader :location def initialize(message, source_file, source_line, location) super("#{message} (#{source_file}:#{source_line})") @location = location end end def self.scan(query) out, stderr = _raw_scan(query) result = PgQuery::ScanResult.decode(out) warnings = [] stderr.each_line do |line| next unless line[/^WARNING/] warnings << line.strip end [result, warnings] end end pg_query-4.2.3/lib/pg_query/fingerprint.rb0000644000004100000410000001300214510636647020670 0ustar www-datawww-datarequire 'digest' module PgQuery class ParserResult def fingerprint hash = FingerprintSubHash.new fingerprint_tree(hash) fp = PgQuery.hash_xxh3_64(hash.parts.join, FINGERPRINT_VERSION) format('%016x', fp) end private FINGERPRINT_VERSION = 3 class FingerprintSubHash attr_reader :parts def initialize @parts = [] end def update(part) @parts << part end def flush_to(hash) parts.each do |part| hash.update part end end end def ignored_fingerprint_value?(val) [nil, 0, false, [], ''].include?(val) end def fingerprint_value(val, hash, parent_node_name, parent_field_name, need_to_write_name) # rubocop:disable Metrics/CyclomaticComplexity subhash = FingerprintSubHash.new if val.is_a?(Google::Protobuf::RepeatedField) # For lists that have exactly one untyped node, just output the parent field (if needed) and return if val.length == 1 && val[0].is_a?(Node) && val[0].node.nil? hash.update(parent_field_name) if need_to_write_name return end fingerprint_list(val, subhash, parent_node_name, parent_field_name) elsif val.is_a?(List) fingerprint_list(val.items, subhash, parent_node_name, parent_field_name) elsif val.is_a?(Google::Protobuf::MessageExts) fingerprint_node(val, subhash, parent_node_name, parent_field_name) elsif !ignored_fingerprint_value?(val) subhash.update val.to_s end return if subhash.parts.empty? hash.update(parent_field_name) if need_to_write_name subhash.flush_to(hash) end def ignored_node_type?(node) [A_Const, Alias, ParamRef, SetToDefault, IntList, OidList].include?(node.class) || node.is_a?(TypeCast) && (node.arg.node == :a_const || node.arg.node == :param_ref) end def node_protobuf_field_name_to_json_name(node_class, field) node_class.descriptor.find { |d| d.name == field.to_s }.json_name end def fingerprint_node(node, hash, parent_node_name = nil, parent_field_name = nil) # rubocop:disable Metrics/CyclomaticComplexity return if ignored_node_type?(node) if node.is_a?(Node) return if node.node.nil? node_val = node[node.node.to_s] unless ignored_node_type?(node_val) unless node_val.is_a?(List) postgres_node_name = node_protobuf_field_name_to_json_name(node.class, node.node) hash.update(postgres_node_name) end fingerprint_value(node_val, hash, parent_node_name, parent_field_name, false) end return end postgres_node_name = node.class.name.split('::').last node.to_h.keys.sort.each do |field_name| val = node[field_name.to_s] postgres_field_name = node_protobuf_field_name_to_json_name(node.class, field_name) case postgres_field_name when 'location' next when 'name' next if [PrepareStmt, ExecuteStmt, DeallocateStmt, FunctionParameter].include?(node.class) next if node.is_a?(ResTarget) && parent_node_name == 'SelectStmt' && parent_field_name == 'targetList' when 'gid', 'savepoint_name' next if node.is_a?(TransactionStmt) when 'options' next if [TransactionStmt, CreateFunctionStmt].include?(node.class) when 'portalname' next if [DeclareCursorStmt, FetchStmt, ClosePortalStmt].include?(node.class) when 'conditionname' next if [ListenStmt, UnlistenStmt, NotifyStmt].include?(node.class) when 'args' next if node.is_a?(DoStmt) when 'relname' next if node.is_a?(RangeVar) && node.relpersistence == 't' if node.is_a?(RangeVar) fingerprint_value(val.gsub(/\d{2,}/, ''), hash, postgres_node_name, postgres_field_name, true) next end when 'stmt_len' next if node.is_a?(RawStmt) when 'stmt_location' next if node.is_a?(RawStmt) when 'kind' if node.is_a?(A_Expr) && (val == :AEXPR_OP_ANY || val == :AEXPR_IN) fingerprint_value(:AEXPR_OP, hash, postgres_node_name, postgres_field_name, true) next end # libpg_query still outputs `str` parts when print a string node. Here we override that to # the expected field name of `sval`. when 'sval', 'fval', 'bsval' postgres_field_name = 'str' if node.is_a?(String) || node.is_a?(BitString) || node.is_a?(Float) end fingerprint_value(val, hash, postgres_node_name, postgres_field_name, true) end end def fingerprint_list(values, hash, parent_node_name, parent_field_name) if %w[fromClause targetList cols rexpr valuesLists args].include?(parent_field_name) values_subhashes = values.map do |val| subhash = FingerprintSubHash.new fingerprint_value(val, subhash, parent_node_name, parent_field_name, false) subhash end values_subhashes.uniq!(&:parts) values_subhashes.sort_by! { |s| PgQuery.hash_xxh3_64(s.parts.join, FINGERPRINT_VERSION) } values_subhashes.each do |subhash| subhash.flush_to(hash) end else values.each do |val| fingerprint_value(val, hash, parent_node_name, parent_field_name, false) end end end def fingerprint_tree(hash) @tree.stmts.each do |node| hash.update 'RawStmt' fingerprint_node(node, hash) end end end end pg_query-4.2.3/lib/pg_query/node.rb0000644000004100000410000000223114510636647017270 0ustar www-datawww-datamodule PgQuery # Patch the auto-generated generic node type with additional convenience functions class Node def inspect node ? format('', node, public_send(node).inspect) : '' end # Make it easier to initialize nodes from a given node child object def self.from(node_field_val) # This needs to match libpg_query naming for the Node message field names # (see "underscore" method in libpg_query's scripts/generate_protobuf_and_funcs.rb) node_field_name = node_field_val.class.name.split('::').last node_field_name.gsub!(/^([A-Z\d])([A-Z][a-z])/, '\1__\2') node_field_name.gsub!(/([A-Z\d]+[a-z]+)([A-Z][a-z])/, '\1_\2') node_field_name.gsub!(/([a-z\d])([A-Z])/, '\1_\2') node_field_name.tr!('-', '_') node_field_name.downcase! PgQuery::Node.new(node_field_name => node_field_val) end # Make it easier to initialize value nodes def self.from_string(sval) PgQuery::Node.new(string: PgQuery::String.new(sval: sval)) end def self.from_integer(ival) PgQuery::Node.new(integer: PgQuery::Integer.new(ival: ival)) end end end pg_query-4.2.3/lib/pg_query/constants.rb0000644000004100000410000000203414510636647020360 0ustar www-datawww-datamodule PgQuery # From Postgres source: src/include/storage/lockdefs.h LOCK_MODE_NO_LOCK = 0 # NoLock is not a lock mode, but a flag value meaning "don't get a lock" LOCK_MODE_ACCESS_SHARE_LOCK = 1 # SELECT LOCK_MODE_ROW_SHARE_LOCK = 2 # SELECT FOR UPDATE/FOR SHARE LOCK_MODE_ROW_EXCLUSIVE_LOCK = 3 # INSERT, UPDATE, DELETE LOCK_MODE_SHARE_UPDATE_EXCLUSIVE_LOCK = 4 # VACUUM (non-FULL),ANALYZE, CREATE INDEX CONCURRENTLY LOCK_MODE_SHARE_LOCK = 5 # CREATE INDEX (WITHOUT CONCURRENTLY) LOCK_MODE_SHARE_ROW_EXCLUSIVE_LOCK = 6 # like EXCLUSIVE MODE, but allows ROW SHARE LOCK_MODE_EXCLUSIVE_LOCK = 7 # blocks ROW SHARE/SELECT...FOR UPDATE LOCK_MODE_ACCESS_EXCLUSIVE_LOCK = 8 # ALTER TABLE, DROP TABLE, VACUUM FULL, and unqualified LOCK TABLE # From Postgres source: src/include/catalog/pg_trigger.h TRIGGER_TYPE_ROW = (1 << 0) TRIGGER_TYPE_BEFORE = (1 << 1) TRIGGER_TYPE_INSERT = (1 << 2) TRIGGER_TYPE_DELETE = (1 << 3) TRIGGER_TYPE_UPDATE = (1 << 4) TRIGGER_TYPE_TRUNCATE = (1 << 5) TRIGGER_TYPE_INSTEAD = (1 << 6) end pg_query-4.2.3/lib/pg_query/parse_error.rb0000644000004100000410000000036314510636647020672 0ustar www-datawww-datamodule PgQuery class ParseError < ArgumentError attr_reader :location def initialize(message, source_file, source_line, location) super("#{message} (#{source_file}:#{source_line})") @location = location end end end pg_query-4.2.3/lib/pg_query/truncate.rb0000644000004100000410000001222514510636647020174 0ustar www-datawww-data module PgQuery class ParserResult PossibleTruncation = Struct.new(:location, :node_type, :length, :is_array) # Truncates the query string to be below the specified length, first trying to # omit less important parts of the query, and only then cutting off the end. def truncate(max_length) # rubocop:disable Metrics/CyclomaticComplexity output = deparse # Early exit if we're already below the max length return output if output.size <= max_length truncations = find_possible_truncations # Truncate the deepest possible truncation that is the longest first truncations.sort_by! { |t| [-t.location.size, -t.length] } tree = dup_tree truncations.each do |truncation| next if truncation.length < 3 find_tree_location(tree, truncation.location) do |node, _k| dummy_column_ref = PgQuery::Node.new(column_ref: PgQuery::ColumnRef.new(fields: [PgQuery::Node.new(string: PgQuery::String.new(sval: '…'))])) case truncation.node_type when :target_list res_target_name = '…' if node.is_a?(PgQuery::UpdateStmt) || node.is_a?(PgQuery::OnConflictClause) node.target_list.replace( [ PgQuery::Node.new(res_target: PgQuery::ResTarget.new(name: res_target_name, val: dummy_column_ref)) ] ) when :where_clause node.where_clause = dummy_column_ref when :values_lists node.values_lists.replace( [ PgQuery::Node.new(list: PgQuery::List.new(items: [dummy_column_ref])) ] ) when :ctequery node.ctequery = PgQuery::Node.new(select_stmt: PgQuery::SelectStmt.new(where_clause: dummy_column_ref, op: :SETOP_NONE)) when :cols node.cols.replace([PgQuery::Node.from(PgQuery::ResTarget.new(name: '…'))]) if node.is_a?(PgQuery::InsertStmt) else raise ArgumentError, format('Unexpected truncation node type: %s', truncation.node_type) end end output = PgQuery.deparse(tree).gsub('SELECT WHERE "…"', '...').gsub('"…"', '...') return output if output.size <= max_length end # We couldn't do a proper smart truncation, so we need a hard cut-off output[0..max_length - 4] + '...' end private def find_possible_truncations # rubocop:disable Metrics/CyclomaticComplexity truncations = [] treewalker! @tree do |node, k, v, location| case k when :target_list next unless node.is_a?(PgQuery::SelectStmt) || node.is_a?(PgQuery::UpdateStmt) || node.is_a?(PgQuery::OnConflictClause) length = if node.is_a?(PgQuery::SelectStmt) select_target_list_len(v) else # UpdateStmt / OnConflictClause update_target_list_len(v) end truncations << PossibleTruncation.new(location, :target_list, length, true) when :where_clause next unless node.is_a?(PgQuery::SelectStmt) || node.is_a?(PgQuery::UpdateStmt) || node.is_a?(PgQuery::DeleteStmt) || node.is_a?(PgQuery::CopyStmt) || node.is_a?(PgQuery::IndexStmt) || node.is_a?(PgQuery::RuleStmt) || node.is_a?(PgQuery::InferClause) || node.is_a?(PgQuery::OnConflictClause) length = PgQuery.deparse_expr(v).size truncations << PossibleTruncation.new(location, :where_clause, length, false) when :values_lists length = select_values_lists_len(v) truncations << PossibleTruncation.new(location, :values_lists, length, false) when :ctequery next unless node.is_a?(PgQuery::CommonTableExpr) length = PgQuery.deparse_stmt(v[v.node.to_s]).size truncations << PossibleTruncation.new(location, :ctequery, length, false) when :cols next unless node.is_a?(PgQuery::InsertStmt) length = cols_len(v) truncations << PossibleTruncation.new(location, :cols, length, true) end end truncations end def select_target_list_len(target_list) deparsed_len = PgQuery.deparse_stmt( PgQuery::SelectStmt.new( target_list: target_list.to_a, op: :SETOP_NONE ) ).size deparsed_len - 7 # 'SELECT '.size end def select_values_lists_len(values_lists) deparsed_len = PgQuery.deparse_stmt( PgQuery::SelectStmt.new( values_lists: values_lists.to_a, op: :SETOP_NONE ) ).size deparsed_len - 7 # 'SELECT '.size end def update_target_list_len(target_list) deparsed_len = PgQuery.deparse_stmt( PgQuery::UpdateStmt.new( target_list: target_list.to_a, relation: PgQuery::RangeVar.new(relname: 'x', inh: true) ) ).size deparsed_len - 13 # 'UPDATE x SET '.size end def cols_len(cols) deparsed_len = PgQuery.deparse_stmt( PgQuery::InsertStmt.new( relation: PgQuery::RangeVar.new(relname: 'x', inh: true), cols: cols.to_a ) ).size deparsed_len - 31 # "INSERT INTO x () DEFAULT VALUES".size end end end pg_query-4.2.3/lib/pg_query/param_refs.rb0000644000004100000410000000260014510636647020462 0ustar www-datawww-datamodule PgQuery class ParserResult def param_refs # rubocop:disable Metrics/CyclomaticComplexity results = [] treewalker! @tree do |_, _, node, location| case node when PgQuery::ParamRef # Ignore param refs inside type casts, as these are already handled next if location[-3..-1] == %i[type_cast arg param_ref] results << { 'location' => node.location, 'length' => param_ref_length(node) } when PgQuery::TypeCast next unless node.arg && node.type_name p = node.arg.param_ref t = node.type_name next unless p && t location = p.location typeloc = t.location length = param_ref_length(p) if location == -1 location = typeloc elsif typeloc < location length += location - typeloc location = typeloc end results << { 'location' => location, 'length' => length, 'typename' => t.names.map { |n| n.string.sval } } end end results.sort_by! { |r| r['location'] } results end private def param_ref_length(paramref_node) if paramref_node.number == 0 # rubocop:disable Style/NumericPredicate 1 # Actually a ? replacement character else ('$' + paramref_node.number.to_s).size end end end end pg_query-4.2.3/lib/pg_query/treewalker.rb0000644000004100000410000000243314510636647020514 0ustar www-datawww-datamodule PgQuery class ParserResult def walk! treewalker!(@tree) do |parent_node, parent_field, node, location| yield(parent_node, parent_field, node, location) end end private def treewalker!(tree) # rubocop:disable Metrics/CyclomaticComplexity nodes = [[tree.dup, []]] loop do parent_node, parent_location = nodes.shift case parent_node when Google::Protobuf::MessageExts parent_node.to_h.keys.each do |parent_field| node = parent_node[parent_field.to_s] next if node.nil? location = parent_location + [parent_field] yield(parent_node, parent_field, node, location) if node.is_a?(Google::Protobuf::MessageExts) || node.is_a?(Google::Protobuf::RepeatedField) nodes << [node, location] unless node.nil? end when Google::Protobuf::RepeatedField nodes += parent_node.map.with_index { |e, idx| [e, parent_location + [idx]] } end break if nodes.empty? end end def find_tree_location(tree, searched_location) treewalker! tree do |parent_node, parent_field, node, location| next unless location == searched_location yield(parent_node, parent_field, node) end end end end pg_query-4.2.3/lib/pg_query.rb0000644000004100000410000000062314510636647016346 0ustar www-datawww-datarequire 'pg_query/version' require 'pg_query/parse_error' require 'pg_query/pg_query_pb' require 'pg_query/node' require 'pg_query/pg_query' require 'pg_query/constants' require 'pg_query/parse' require 'pg_query/treewalker' require 'pg_query/filter_columns' require 'pg_query/fingerprint' require 'pg_query/param_refs' require 'pg_query/deparse' require 'pg_query/truncate' require 'pg_query/scan' pg_query-4.2.3/pg_query.gemspec0000644000004100000410000006231514510636647016626 0ustar www-datawww-data######################################################### # This file has been automatically generated by gem2tgz # ######################################################### # -*- encoding: utf-8 -*- # stub: pg_query 4.2.3 ruby lib # stub: ext/pg_query/extconf.rb Gem::Specification.new do |s| s.name = "pg_query".freeze s.version = "4.2.3" s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= s.require_paths = ["lib".freeze] s.authors = ["Lukas Fittl".freeze] s.date = "2023-08-05" s.description = "Parses SQL queries using a copy of the PostgreSQL server query parser".freeze s.email = "lukas@fittl.com".freeze s.extensions = ["ext/pg_query/extconf.rb".freeze] s.extra_rdoc_files = ["CHANGELOG.md".freeze, "README.md".freeze] s.files = ["CHANGELOG.md".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "ext/pg_query/extconf.rb".freeze, "ext/pg_query/guc-file.c".freeze, "ext/pg_query/include/access/amapi.h".freeze, "ext/pg_query/include/access/attmap.h".freeze, "ext/pg_query/include/access/attnum.h".freeze, "ext/pg_query/include/access/clog.h".freeze, "ext/pg_query/include/access/commit_ts.h".freeze, "ext/pg_query/include/access/detoast.h".freeze, "ext/pg_query/include/access/genam.h".freeze, "ext/pg_query/include/access/gin.h".freeze, "ext/pg_query/include/access/htup.h".freeze, "ext/pg_query/include/access/htup_details.h".freeze, "ext/pg_query/include/access/itup.h".freeze, "ext/pg_query/include/access/parallel.h".freeze, "ext/pg_query/include/access/printtup.h".freeze, "ext/pg_query/include/access/relation.h".freeze, "ext/pg_query/include/access/relscan.h".freeze, "ext/pg_query/include/access/rmgr.h".freeze, "ext/pg_query/include/access/rmgrlist.h".freeze, "ext/pg_query/include/access/sdir.h".freeze, "ext/pg_query/include/access/skey.h".freeze, "ext/pg_query/include/access/stratnum.h".freeze, "ext/pg_query/include/access/sysattr.h".freeze, "ext/pg_query/include/access/table.h".freeze, "ext/pg_query/include/access/tableam.h".freeze, "ext/pg_query/include/access/toast_compression.h".freeze, "ext/pg_query/include/access/transam.h".freeze, "ext/pg_query/include/access/tupconvert.h".freeze, "ext/pg_query/include/access/tupdesc.h".freeze, "ext/pg_query/include/access/tupmacs.h".freeze, "ext/pg_query/include/access/twophase.h".freeze, "ext/pg_query/include/access/xact.h".freeze, "ext/pg_query/include/access/xlog.h".freeze, "ext/pg_query/include/access/xlog_internal.h".freeze, "ext/pg_query/include/access/xlogdefs.h".freeze, "ext/pg_query/include/access/xlogprefetcher.h".freeze, "ext/pg_query/include/access/xlogreader.h".freeze, "ext/pg_query/include/access/xlogrecord.h".freeze, "ext/pg_query/include/access/xlogrecovery.h".freeze, "ext/pg_query/include/c.h".freeze, "ext/pg_query/include/catalog/catalog.h".freeze, "ext/pg_query/include/catalog/catversion.h".freeze, "ext/pg_query/include/catalog/dependency.h".freeze, "ext/pg_query/include/catalog/genbki.h".freeze, "ext/pg_query/include/catalog/index.h".freeze, "ext/pg_query/include/catalog/indexing.h".freeze, "ext/pg_query/include/catalog/namespace.h".freeze, "ext/pg_query/include/catalog/objectaccess.h".freeze, "ext/pg_query/include/catalog/objectaddress.h".freeze, "ext/pg_query/include/catalog/pg_aggregate.h".freeze, "ext/pg_query/include/catalog/pg_aggregate_d.h".freeze, "ext/pg_query/include/catalog/pg_am.h".freeze, "ext/pg_query/include/catalog/pg_am_d.h".freeze, "ext/pg_query/include/catalog/pg_attribute.h".freeze, "ext/pg_query/include/catalog/pg_attribute_d.h".freeze, "ext/pg_query/include/catalog/pg_authid.h".freeze, "ext/pg_query/include/catalog/pg_authid_d.h".freeze, "ext/pg_query/include/catalog/pg_class.h".freeze, "ext/pg_query/include/catalog/pg_class_d.h".freeze, "ext/pg_query/include/catalog/pg_collation.h".freeze, "ext/pg_query/include/catalog/pg_collation_d.h".freeze, "ext/pg_query/include/catalog/pg_constraint.h".freeze, "ext/pg_query/include/catalog/pg_constraint_d.h".freeze, "ext/pg_query/include/catalog/pg_control.h".freeze, "ext/pg_query/include/catalog/pg_conversion.h".freeze, "ext/pg_query/include/catalog/pg_conversion_d.h".freeze, "ext/pg_query/include/catalog/pg_depend.h".freeze, "ext/pg_query/include/catalog/pg_depend_d.h".freeze, "ext/pg_query/include/catalog/pg_event_trigger.h".freeze, "ext/pg_query/include/catalog/pg_event_trigger_d.h".freeze, "ext/pg_query/include/catalog/pg_index.h".freeze, "ext/pg_query/include/catalog/pg_index_d.h".freeze, "ext/pg_query/include/catalog/pg_language.h".freeze, "ext/pg_query/include/catalog/pg_language_d.h".freeze, "ext/pg_query/include/catalog/pg_namespace.h".freeze, "ext/pg_query/include/catalog/pg_namespace_d.h".freeze, "ext/pg_query/include/catalog/pg_opclass.h".freeze, "ext/pg_query/include/catalog/pg_opclass_d.h".freeze, "ext/pg_query/include/catalog/pg_operator.h".freeze, "ext/pg_query/include/catalog/pg_operator_d.h".freeze, "ext/pg_query/include/catalog/pg_opfamily.h".freeze, "ext/pg_query/include/catalog/pg_opfamily_d.h".freeze, "ext/pg_query/include/catalog/pg_parameter_acl.h".freeze, "ext/pg_query/include/catalog/pg_parameter_acl_d.h".freeze, "ext/pg_query/include/catalog/pg_partitioned_table.h".freeze, "ext/pg_query/include/catalog/pg_partitioned_table_d.h".freeze, "ext/pg_query/include/catalog/pg_proc.h".freeze, "ext/pg_query/include/catalog/pg_proc_d.h".freeze, "ext/pg_query/include/catalog/pg_publication.h".freeze, "ext/pg_query/include/catalog/pg_publication_d.h".freeze, "ext/pg_query/include/catalog/pg_replication_origin.h".freeze, "ext/pg_query/include/catalog/pg_replication_origin_d.h".freeze, "ext/pg_query/include/catalog/pg_statistic.h".freeze, "ext/pg_query/include/catalog/pg_statistic_d.h".freeze, "ext/pg_query/include/catalog/pg_statistic_ext.h".freeze, "ext/pg_query/include/catalog/pg_statistic_ext_d.h".freeze, "ext/pg_query/include/catalog/pg_transform.h".freeze, "ext/pg_query/include/catalog/pg_transform_d.h".freeze, "ext/pg_query/include/catalog/pg_trigger.h".freeze, "ext/pg_query/include/catalog/pg_trigger_d.h".freeze, "ext/pg_query/include/catalog/pg_ts_config.h".freeze, "ext/pg_query/include/catalog/pg_ts_config_d.h".freeze, "ext/pg_query/include/catalog/pg_ts_dict.h".freeze, "ext/pg_query/include/catalog/pg_ts_dict_d.h".freeze, "ext/pg_query/include/catalog/pg_ts_parser.h".freeze, "ext/pg_query/include/catalog/pg_ts_parser_d.h".freeze, "ext/pg_query/include/catalog/pg_ts_template.h".freeze, "ext/pg_query/include/catalog/pg_ts_template_d.h".freeze, "ext/pg_query/include/catalog/pg_type.h".freeze, "ext/pg_query/include/catalog/pg_type_d.h".freeze, "ext/pg_query/include/catalog/storage.h".freeze, "ext/pg_query/include/commands/async.h".freeze, "ext/pg_query/include/commands/dbcommands.h".freeze, "ext/pg_query/include/commands/defrem.h".freeze, "ext/pg_query/include/commands/event_trigger.h".freeze, "ext/pg_query/include/commands/explain.h".freeze, "ext/pg_query/include/commands/prepare.h".freeze, "ext/pg_query/include/commands/tablespace.h".freeze, "ext/pg_query/include/commands/trigger.h".freeze, "ext/pg_query/include/commands/user.h".freeze, "ext/pg_query/include/commands/vacuum.h".freeze, "ext/pg_query/include/commands/variable.h".freeze, "ext/pg_query/include/common/file_perm.h".freeze, "ext/pg_query/include/common/hashfn.h".freeze, "ext/pg_query/include/common/ip.h".freeze, "ext/pg_query/include/common/keywords.h".freeze, "ext/pg_query/include/common/kwlookup.h".freeze, "ext/pg_query/include/common/pg_prng.h".freeze, "ext/pg_query/include/common/relpath.h".freeze, "ext/pg_query/include/common/string.h".freeze, "ext/pg_query/include/common/unicode_combining_table.h".freeze, "ext/pg_query/include/common/unicode_east_asian_fw_table.h".freeze, "ext/pg_query/include/datatype/timestamp.h".freeze, "ext/pg_query/include/executor/execdesc.h".freeze, "ext/pg_query/include/executor/executor.h".freeze, "ext/pg_query/include/executor/functions.h".freeze, "ext/pg_query/include/executor/instrument.h".freeze, "ext/pg_query/include/executor/spi.h".freeze, "ext/pg_query/include/executor/tablefunc.h".freeze, "ext/pg_query/include/executor/tuptable.h".freeze, "ext/pg_query/include/fmgr.h".freeze, "ext/pg_query/include/funcapi.h".freeze, "ext/pg_query/include/getaddrinfo.h".freeze, "ext/pg_query/include/jit/jit.h".freeze, "ext/pg_query/include/kwlist_d.h".freeze, "ext/pg_query/include/lib/dshash.h".freeze, "ext/pg_query/include/lib/ilist.h".freeze, "ext/pg_query/include/lib/pairingheap.h".freeze, "ext/pg_query/include/lib/simplehash.h".freeze, "ext/pg_query/include/lib/sort_template.h".freeze, "ext/pg_query/include/lib/stringinfo.h".freeze, "ext/pg_query/include/libpq/auth.h".freeze, "ext/pg_query/include/libpq/crypt.h".freeze, "ext/pg_query/include/libpq/hba.h".freeze, "ext/pg_query/include/libpq/libpq-be.h".freeze, "ext/pg_query/include/libpq/libpq.h".freeze, "ext/pg_query/include/libpq/pqcomm.h".freeze, "ext/pg_query/include/libpq/pqformat.h".freeze, "ext/pg_query/include/libpq/pqsignal.h".freeze, "ext/pg_query/include/mb/pg_wchar.h".freeze, "ext/pg_query/include/mb/stringinfo_mb.h".freeze, "ext/pg_query/include/miscadmin.h".freeze, "ext/pg_query/include/nodes/bitmapset.h".freeze, "ext/pg_query/include/nodes/execnodes.h".freeze, "ext/pg_query/include/nodes/extensible.h".freeze, "ext/pg_query/include/nodes/lockoptions.h".freeze, "ext/pg_query/include/nodes/makefuncs.h".freeze, "ext/pg_query/include/nodes/memnodes.h".freeze, "ext/pg_query/include/nodes/nodeFuncs.h".freeze, "ext/pg_query/include/nodes/nodes.h".freeze, "ext/pg_query/include/nodes/params.h".freeze, "ext/pg_query/include/nodes/parsenodes.h".freeze, "ext/pg_query/include/nodes/pathnodes.h".freeze, "ext/pg_query/include/nodes/pg_list.h".freeze, "ext/pg_query/include/nodes/plannodes.h".freeze, "ext/pg_query/include/nodes/primnodes.h".freeze, "ext/pg_query/include/nodes/print.h".freeze, "ext/pg_query/include/nodes/tidbitmap.h".freeze, "ext/pg_query/include/nodes/value.h".freeze, "ext/pg_query/include/optimizer/cost.h".freeze, "ext/pg_query/include/optimizer/geqo.h".freeze, "ext/pg_query/include/optimizer/geqo_gene.h".freeze, "ext/pg_query/include/optimizer/optimizer.h".freeze, "ext/pg_query/include/optimizer/paths.h".freeze, "ext/pg_query/include/optimizer/planmain.h".freeze, "ext/pg_query/include/parser/analyze.h".freeze, "ext/pg_query/include/parser/gram.h".freeze, "ext/pg_query/include/parser/gramparse.h".freeze, "ext/pg_query/include/parser/kwlist.h".freeze, "ext/pg_query/include/parser/parse_agg.h".freeze, "ext/pg_query/include/parser/parse_coerce.h".freeze, "ext/pg_query/include/parser/parse_expr.h".freeze, "ext/pg_query/include/parser/parse_func.h".freeze, "ext/pg_query/include/parser/parse_node.h".freeze, "ext/pg_query/include/parser/parse_oper.h".freeze, "ext/pg_query/include/parser/parse_relation.h".freeze, "ext/pg_query/include/parser/parse_type.h".freeze, "ext/pg_query/include/parser/parser.h".freeze, "ext/pg_query/include/parser/parsetree.h".freeze, "ext/pg_query/include/parser/scanner.h".freeze, "ext/pg_query/include/parser/scansup.h".freeze, "ext/pg_query/include/partitioning/partdefs.h".freeze, "ext/pg_query/include/pg_config.h".freeze, "ext/pg_query/include/pg_config_ext.h".freeze, "ext/pg_query/include/pg_config_manual.h".freeze, "ext/pg_query/include/pg_config_os.h".freeze, "ext/pg_query/include/pg_getopt.h".freeze, "ext/pg_query/include/pg_query.h".freeze, "ext/pg_query/include/pg_query_enum_defs.c".freeze, "ext/pg_query/include/pg_query_fingerprint_conds.c".freeze, "ext/pg_query/include/pg_query_fingerprint_defs.c".freeze, "ext/pg_query/include/pg_query_json_helper.c".freeze, "ext/pg_query/include/pg_query_outfuncs_conds.c".freeze, "ext/pg_query/include/pg_query_outfuncs_defs.c".freeze, "ext/pg_query/include/pg_query_readfuncs_conds.c".freeze, "ext/pg_query/include/pg_query_readfuncs_defs.c".freeze, "ext/pg_query/include/pg_trace.h".freeze, "ext/pg_query/include/pgstat.h".freeze, "ext/pg_query/include/pgtime.h".freeze, "ext/pg_query/include/pl_gram.h".freeze, "ext/pg_query/include/pl_reserved_kwlist.h".freeze, "ext/pg_query/include/pl_reserved_kwlist_d.h".freeze, "ext/pg_query/include/pl_unreserved_kwlist.h".freeze, "ext/pg_query/include/pl_unreserved_kwlist_d.h".freeze, "ext/pg_query/include/plerrcodes.h".freeze, "ext/pg_query/include/plpgsql.h".freeze, "ext/pg_query/include/port.h".freeze, "ext/pg_query/include/port/atomics.h".freeze, "ext/pg_query/include/port/atomics/arch-arm.h".freeze, "ext/pg_query/include/port/atomics/arch-ppc.h".freeze, "ext/pg_query/include/port/atomics/arch-x86.h".freeze, "ext/pg_query/include/port/atomics/fallback.h".freeze, "ext/pg_query/include/port/atomics/generic-gcc.h".freeze, "ext/pg_query/include/port/atomics/generic.h".freeze, "ext/pg_query/include/port/pg_bitutils.h".freeze, "ext/pg_query/include/port/pg_bswap.h".freeze, "ext/pg_query/include/port/pg_crc32c.h".freeze, "ext/pg_query/include/portability/instr_time.h".freeze, "ext/pg_query/include/postgres.h".freeze, "ext/pg_query/include/postgres_ext.h".freeze, "ext/pg_query/include/postmaster/autovacuum.h".freeze, "ext/pg_query/include/postmaster/auxprocess.h".freeze, "ext/pg_query/include/postmaster/bgworker.h".freeze, "ext/pg_query/include/postmaster/bgworker_internals.h".freeze, "ext/pg_query/include/postmaster/bgwriter.h".freeze, "ext/pg_query/include/postmaster/fork_process.h".freeze, "ext/pg_query/include/postmaster/interrupt.h".freeze, "ext/pg_query/include/postmaster/pgarch.h".freeze, "ext/pg_query/include/postmaster/postmaster.h".freeze, "ext/pg_query/include/postmaster/startup.h".freeze, "ext/pg_query/include/postmaster/syslogger.h".freeze, "ext/pg_query/include/postmaster/walwriter.h".freeze, "ext/pg_query/include/protobuf-c.h".freeze, "ext/pg_query/include/protobuf-c/protobuf-c.h".freeze, "ext/pg_query/include/protobuf/pg_query.pb-c.h".freeze, "ext/pg_query/include/protobuf/pg_query.pb.h".freeze, "ext/pg_query/include/regex/regex.h".freeze, "ext/pg_query/include/replication/logicallauncher.h".freeze, "ext/pg_query/include/replication/logicalproto.h".freeze, "ext/pg_query/include/replication/logicalworker.h".freeze, "ext/pg_query/include/replication/origin.h".freeze, "ext/pg_query/include/replication/reorderbuffer.h".freeze, "ext/pg_query/include/replication/slot.h".freeze, "ext/pg_query/include/replication/syncrep.h".freeze, "ext/pg_query/include/replication/walreceiver.h".freeze, "ext/pg_query/include/replication/walsender.h".freeze, "ext/pg_query/include/rewrite/prs2lock.h".freeze, "ext/pg_query/include/rewrite/rewriteHandler.h".freeze, "ext/pg_query/include/rewrite/rewriteManip.h".freeze, "ext/pg_query/include/rewrite/rewriteSupport.h".freeze, "ext/pg_query/include/storage/backendid.h".freeze, "ext/pg_query/include/storage/block.h".freeze, "ext/pg_query/include/storage/buf.h".freeze, "ext/pg_query/include/storage/bufmgr.h".freeze, "ext/pg_query/include/storage/bufpage.h".freeze, "ext/pg_query/include/storage/condition_variable.h".freeze, "ext/pg_query/include/storage/dsm.h".freeze, "ext/pg_query/include/storage/dsm_impl.h".freeze, "ext/pg_query/include/storage/fd.h".freeze, "ext/pg_query/include/storage/fileset.h".freeze, "ext/pg_query/include/storage/ipc.h".freeze, "ext/pg_query/include/storage/item.h".freeze, "ext/pg_query/include/storage/itemid.h".freeze, "ext/pg_query/include/storage/itemptr.h".freeze, "ext/pg_query/include/storage/large_object.h".freeze, "ext/pg_query/include/storage/latch.h".freeze, "ext/pg_query/include/storage/lmgr.h".freeze, "ext/pg_query/include/storage/lock.h".freeze, "ext/pg_query/include/storage/lockdefs.h".freeze, "ext/pg_query/include/storage/lwlock.h".freeze, "ext/pg_query/include/storage/lwlocknames.h".freeze, "ext/pg_query/include/storage/off.h".freeze, "ext/pg_query/include/storage/pg_sema.h".freeze, "ext/pg_query/include/storage/pg_shmem.h".freeze, "ext/pg_query/include/storage/pmsignal.h".freeze, "ext/pg_query/include/storage/predicate.h".freeze, "ext/pg_query/include/storage/proc.h".freeze, "ext/pg_query/include/storage/procarray.h".freeze, "ext/pg_query/include/storage/proclist_types.h".freeze, "ext/pg_query/include/storage/procsignal.h".freeze, "ext/pg_query/include/storage/relfilenode.h".freeze, "ext/pg_query/include/storage/s_lock.h".freeze, "ext/pg_query/include/storage/sharedfileset.h".freeze, "ext/pg_query/include/storage/shm_mq.h".freeze, "ext/pg_query/include/storage/shm_toc.h".freeze, "ext/pg_query/include/storage/shmem.h".freeze, "ext/pg_query/include/storage/sinval.h".freeze, "ext/pg_query/include/storage/sinvaladt.h".freeze, "ext/pg_query/include/storage/smgr.h".freeze, "ext/pg_query/include/storage/spin.h".freeze, "ext/pg_query/include/storage/standby.h".freeze, "ext/pg_query/include/storage/standbydefs.h".freeze, "ext/pg_query/include/storage/sync.h".freeze, "ext/pg_query/include/tcop/cmdtag.h".freeze, "ext/pg_query/include/tcop/cmdtaglist.h".freeze, "ext/pg_query/include/tcop/deparse_utility.h".freeze, "ext/pg_query/include/tcop/dest.h".freeze, "ext/pg_query/include/tcop/fastpath.h".freeze, "ext/pg_query/include/tcop/pquery.h".freeze, "ext/pg_query/include/tcop/tcopprot.h".freeze, "ext/pg_query/include/tcop/utility.h".freeze, "ext/pg_query/include/tsearch/ts_cache.h".freeze, "ext/pg_query/include/utils/acl.h".freeze, "ext/pg_query/include/utils/aclchk_internal.h".freeze, "ext/pg_query/include/utils/array.h".freeze, "ext/pg_query/include/utils/backend_progress.h".freeze, "ext/pg_query/include/utils/backend_status.h".freeze, "ext/pg_query/include/utils/builtins.h".freeze, "ext/pg_query/include/utils/bytea.h".freeze, "ext/pg_query/include/utils/catcache.h".freeze, "ext/pg_query/include/utils/date.h".freeze, "ext/pg_query/include/utils/datetime.h".freeze, "ext/pg_query/include/utils/datum.h".freeze, "ext/pg_query/include/utils/dsa.h".freeze, "ext/pg_query/include/utils/dynahash.h".freeze, "ext/pg_query/include/utils/elog.h".freeze, "ext/pg_query/include/utils/errcodes.h".freeze, "ext/pg_query/include/utils/expandeddatum.h".freeze, "ext/pg_query/include/utils/expandedrecord.h".freeze, "ext/pg_query/include/utils/float.h".freeze, "ext/pg_query/include/utils/fmgroids.h".freeze, "ext/pg_query/include/utils/fmgrprotos.h".freeze, "ext/pg_query/include/utils/fmgrtab.h".freeze, "ext/pg_query/include/utils/guc.h".freeze, "ext/pg_query/include/utils/guc_tables.h".freeze, "ext/pg_query/include/utils/hsearch.h".freeze, "ext/pg_query/include/utils/inval.h".freeze, "ext/pg_query/include/utils/lsyscache.h".freeze, "ext/pg_query/include/utils/memdebug.h".freeze, "ext/pg_query/include/utils/memutils.h".freeze, "ext/pg_query/include/utils/numeric.h".freeze, "ext/pg_query/include/utils/palloc.h".freeze, "ext/pg_query/include/utils/partcache.h".freeze, "ext/pg_query/include/utils/pg_locale.h".freeze, "ext/pg_query/include/utils/pg_lsn.h".freeze, "ext/pg_query/include/utils/pgstat_internal.h".freeze, "ext/pg_query/include/utils/pidfile.h".freeze, "ext/pg_query/include/utils/plancache.h".freeze, "ext/pg_query/include/utils/portal.h".freeze, "ext/pg_query/include/utils/probes.h".freeze, "ext/pg_query/include/utils/ps_status.h".freeze, "ext/pg_query/include/utils/queryenvironment.h".freeze, "ext/pg_query/include/utils/queryjumble.h".freeze, "ext/pg_query/include/utils/regproc.h".freeze, "ext/pg_query/include/utils/rel.h".freeze, "ext/pg_query/include/utils/relcache.h".freeze, "ext/pg_query/include/utils/reltrigger.h".freeze, "ext/pg_query/include/utils/resowner.h".freeze, "ext/pg_query/include/utils/rls.h".freeze, "ext/pg_query/include/utils/ruleutils.h".freeze, "ext/pg_query/include/utils/sharedtuplestore.h".freeze, "ext/pg_query/include/utils/snapmgr.h".freeze, "ext/pg_query/include/utils/snapshot.h".freeze, "ext/pg_query/include/utils/sortsupport.h".freeze, "ext/pg_query/include/utils/syscache.h".freeze, "ext/pg_query/include/utils/timeout.h".freeze, "ext/pg_query/include/utils/timestamp.h".freeze, "ext/pg_query/include/utils/tuplesort.h".freeze, "ext/pg_query/include/utils/tuplestore.h".freeze, "ext/pg_query/include/utils/typcache.h".freeze, "ext/pg_query/include/utils/tzparser.h".freeze, "ext/pg_query/include/utils/varlena.h".freeze, "ext/pg_query/include/utils/wait_event.h".freeze, "ext/pg_query/include/utils/xml.h".freeze, "ext/pg_query/include/xxhash.h".freeze, "ext/pg_query/include/xxhash/xxhash.h".freeze, "ext/pg_query/pg_query.c".freeze, "ext/pg_query/pg_query.pb-c.c".freeze, "ext/pg_query/pg_query_deparse.c".freeze, "ext/pg_query/pg_query_fingerprint.c".freeze, "ext/pg_query/pg_query_fingerprint.h".freeze, "ext/pg_query/pg_query_internal.h".freeze, "ext/pg_query/pg_query_json_plpgsql.c".freeze, "ext/pg_query/pg_query_json_plpgsql.h".freeze, "ext/pg_query/pg_query_normalize.c".freeze, "ext/pg_query/pg_query_outfuncs.h".freeze, "ext/pg_query/pg_query_outfuncs_json.c".freeze, "ext/pg_query/pg_query_outfuncs_protobuf.c".freeze, "ext/pg_query/pg_query_parse.c".freeze, "ext/pg_query/pg_query_parse_plpgsql.c".freeze, "ext/pg_query/pg_query_readfuncs.h".freeze, "ext/pg_query/pg_query_readfuncs_protobuf.c".freeze, "ext/pg_query/pg_query_ruby.c".freeze, "ext/pg_query/pg_query_ruby.sym".freeze, "ext/pg_query/pg_query_ruby_freebsd.sym".freeze, "ext/pg_query/pg_query_scan.c".freeze, "ext/pg_query/pg_query_split.c".freeze, "ext/pg_query/postgres_deparse.c".freeze, "ext/pg_query/postgres_deparse.h".freeze, "ext/pg_query/protobuf-c.c".freeze, "ext/pg_query/src_backend_catalog_namespace.c".freeze, "ext/pg_query/src_backend_catalog_pg_proc.c".freeze, "ext/pg_query/src_backend_commands_define.c".freeze, "ext/pg_query/src_backend_nodes_bitmapset.c".freeze, "ext/pg_query/src_backend_nodes_copyfuncs.c".freeze, "ext/pg_query/src_backend_nodes_equalfuncs.c".freeze, "ext/pg_query/src_backend_nodes_extensible.c".freeze, "ext/pg_query/src_backend_nodes_list.c".freeze, "ext/pg_query/src_backend_nodes_makefuncs.c".freeze, "ext/pg_query/src_backend_nodes_nodeFuncs.c".freeze, "ext/pg_query/src_backend_nodes_value.c".freeze, "ext/pg_query/src_backend_parser_gram.c".freeze, "ext/pg_query/src_backend_parser_parser.c".freeze, "ext/pg_query/src_backend_parser_scan.c".freeze, "ext/pg_query/src_backend_parser_scansup.c".freeze, "ext/pg_query/src_backend_postmaster_postmaster.c".freeze, "ext/pg_query/src_backend_storage_ipc_ipc.c".freeze, "ext/pg_query/src_backend_storage_lmgr_s_lock.c".freeze, "ext/pg_query/src_backend_tcop_postgres.c".freeze, "ext/pg_query/src_backend_utils_activity_pgstat_database.c".freeze, "ext/pg_query/src_backend_utils_adt_datum.c".freeze, "ext/pg_query/src_backend_utils_adt_expandeddatum.c".freeze, "ext/pg_query/src_backend_utils_adt_format_type.c".freeze, "ext/pg_query/src_backend_utils_adt_ruleutils.c".freeze, "ext/pg_query/src_backend_utils_error_assert.c".freeze, "ext/pg_query/src_backend_utils_error_elog.c".freeze, "ext/pg_query/src_backend_utils_fmgr_fmgr.c".freeze, "ext/pg_query/src_backend_utils_hash_dynahash.c".freeze, "ext/pg_query/src_backend_utils_init_globals.c".freeze, "ext/pg_query/src_backend_utils_mb_mbutils.c".freeze, "ext/pg_query/src_backend_utils_misc_guc.c".freeze, "ext/pg_query/src_backend_utils_mmgr_aset.c".freeze, "ext/pg_query/src_backend_utils_mmgr_mcxt.c".freeze, "ext/pg_query/src_common_encnames.c".freeze, "ext/pg_query/src_common_hashfn.c".freeze, "ext/pg_query/src_common_keywords.c".freeze, "ext/pg_query/src_common_kwlist_d.h".freeze, "ext/pg_query/src_common_kwlookup.c".freeze, "ext/pg_query/src_common_pg_prng.c".freeze, "ext/pg_query/src_common_psprintf.c".freeze, "ext/pg_query/src_common_string.c".freeze, "ext/pg_query/src_common_stringinfo.c".freeze, "ext/pg_query/src_common_wchar.c".freeze, "ext/pg_query/src_pl_plpgsql_src_pl_comp.c".freeze, "ext/pg_query/src_pl_plpgsql_src_pl_funcs.c".freeze, "ext/pg_query/src_pl_plpgsql_src_pl_gram.c".freeze, "ext/pg_query/src_pl_plpgsql_src_pl_handler.c".freeze, "ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h".freeze, "ext/pg_query/src_pl_plpgsql_src_pl_scanner.c".freeze, "ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h".freeze, "ext/pg_query/src_port_pg_bitutils.c".freeze, "ext/pg_query/src_port_pgsleep.c".freeze, "ext/pg_query/src_port_pgstrcasecmp.c".freeze, "ext/pg_query/src_port_qsort.c".freeze, "ext/pg_query/src_port_snprintf.c".freeze, "ext/pg_query/src_port_strerror.c".freeze, "ext/pg_query/src_port_strnlen.c".freeze, "ext/pg_query/xxhash.c".freeze, "lib/pg_query.rb".freeze, "lib/pg_query/constants.rb".freeze, "lib/pg_query/deparse.rb".freeze, "lib/pg_query/filter_columns.rb".freeze, "lib/pg_query/fingerprint.rb".freeze, "lib/pg_query/node.rb".freeze, "lib/pg_query/param_refs.rb".freeze, "lib/pg_query/parse.rb".freeze, "lib/pg_query/parse_error.rb".freeze, "lib/pg_query/pg_query_pb.rb".freeze, "lib/pg_query/scan.rb".freeze, "lib/pg_query/treewalker.rb".freeze, "lib/pg_query/truncate.rb".freeze, "lib/pg_query/version.rb".freeze] s.homepage = "https://github.com/pganalyze/pg_query".freeze s.licenses = ["BSD-3-Clause".freeze] s.rdoc_options = ["--main".freeze, "README.md".freeze, "--exclude".freeze, "ext/".freeze] s.rubygems_version = "3.2.5".freeze s.summary = "PostgreSQL query parsing and normalization library".freeze if s.respond_to? :specification_version then s.specification_version = 4 end if s.respond_to? :add_runtime_dependency then s.add_runtime_dependency(%q.freeze, [">= 3.22.3"]) s.add_development_dependency(%q.freeze, ["~> 0"]) s.add_development_dependency(%q.freeze, ["~> 3.0"]) s.add_development_dependency(%q.freeze, ["= 0.49.1"]) s.add_development_dependency(%q.freeze, ["= 1.15.1"]) else s.add_dependency(%q.freeze, [">= 3.22.3"]) s.add_dependency(%q.freeze, ["~> 0"]) s.add_dependency(%q.freeze, ["~> 3.0"]) s.add_dependency(%q.freeze, ["= 0.49.1"]) s.add_dependency(%q.freeze, ["= 1.15.1"]) end end pg_query-4.2.3/ext/0000755000004100000410000000000014510636647014217 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/0000755000004100000410000000000014510636647016052 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h0000644000004100000410000001053414510636647026756 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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-2022, 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" "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, 478, 484, 490, 496, 505, 512, 530, 538, 547, 557, 565, 572, 584, 591, 597, 606, 614, 620, 631, 636, 647, 660, 678, }; #define UNRESERVEDPLKEYWORDS_NUM_KEYWORDS 82 static int UnreservedPLKeywords_hash_func(const void *key, size_t keylen) { static const int16 h[165] = { 58, 0, 26, 32767, 0, 0, 9, 32767, 0, 32767, 37, 74, 32767, -7, 32767, 39, 58, -5, 32767, 31, 32767, 32767, 75, -23, 32767, 0, 32767, 32767, 32767, -14, 32767, 81, 32767, 32767, 32767, -36, -9, 32767, 32767, 32767, 40, 32767, 54, 10, 11, 43, 32767, 0, 52, 105, -22, 15, 32767, -33, 49, -65, 48, 32767, 32767, 32767, 25, 49, -47, 37, 21, 32767, 32767, -15, 70, 32767, 32767, 64, -10, 126, 32767, 51, 0, 36, 32767, -55, -22, 32767, 32767, 32767, 32767, 32767, -26, -35, 32767, 61, 32767, 32767, 32767, -23, 98, 48, 23, 19, 32767, 7, 35, 5, -18, 71, 28, 5, 32767, 32767, 32767, 74, 32767, 82, 32767, 0, 32767, 32767, 66, 0, 0, 50, 32767, 32767, 5, 2, 0, 32767, 55, 32767, 32767, 45, 79, 32767, 32767, 73, 22, 0, 103, 32767, -20, 72, 32767, 0, 29, 32767, 0, 32767, 32767, 0, 50, 28, 32767, -40, 32767, 32767, 34, 56, 32767, 32767, 32767, 17, -36, 32767, 67, 32767, 0 }; 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 * 8191 + c; } return h[a % 165] + h[b % 165]; } static const ScanKeywordList UnreservedPLKeywords = { UnreservedPLKeywords_kw_string, UnreservedPLKeywords_kw_offsets, UnreservedPLKeywords_hash_func, UNRESERVEDPLKEYWORDS_NUM_KEYWORDS, 20 }; #endif /* PL_UNRESERVED_KWLIST_D_H */ pg_query-4.2.3/ext/pg_query/src_backend_utils_mb_mbutils.c0000644000004100000410000005442314510636647024121 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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 *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/mb/mbutils.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "access/xact.h" #include "catalog/namespace.h" #include "mb/pg_wchar.h" #include "utils/builtins.h" #include "utils/memutils.h" #include "utils/syscache.h" /* * We maintain a simple linked list caching the fmgr lookup info for the * currently selected conversion functions, as well as any that have been * selected previously in the current session. (We remember previous * settings because we must be able to restore a previous setting during * transaction rollback, without doing any fresh catalog accesses.) * * Since we'll never release this data, we just keep it in TopMemoryContext. */ typedef struct ConvProcInfo { int s_encoding; /* server and client encoding IDs */ int c_encoding; FmgrInfo to_server_info; /* lookup info for conversion procs */ FmgrInfo to_client_info; } ConvProcInfo; /* List of ConvProcInfo */ /* * These variables point to the currently active conversion functions, * or are NULL when no conversion is needed. */ /* * This variable stores the conversion function to convert from UTF-8 * to the server encoding. It's NULL if the server encoding *is* UTF-8, * or if we lack a conversion function for this. */ static __thread FmgrInfo *Utf8ToServerConvProc = NULL; /* * These variables track the currently-selected encodings. */ static __thread const pg_enc2name *ClientEncoding = &pg_enc2name_tbl[PG_SQL_ASCII]; static __thread const pg_enc2name *DatabaseEncoding = &pg_enc2name_tbl[PG_SQL_ASCII]; /* * During backend startup we can't set client encoding because we (a) * can't look up the conversion functions, and (b) may not know the database * encoding yet either. So SetClientEncoding() just accepts anything and * remembers it for InitializeClientEncoding() to apply later. */ /* Internal functions */ static char *perform_default_encoding_conversion(const char *src, int len, bool is_client_to_server); static int cliplen(const char *str, int len, int limit); /* * Prepare for a future call to SetClientEncoding. Success should mean * that SetClientEncoding is guaranteed to succeed for this encoding request. * * (But note that success before backend_startup_complete does not guarantee * success after ...) * * Returns 0 if okay, -1 if not (bad encoding or can't support conversion) */ /* * Set the active client encoding and set up the conversion-function pointers. * PrepareClientEncoding should have been called previously for this encoding. * * Returns 0 if okay, -1 if not (bad encoding or can't support conversion) */ /* * Initialize client encoding conversions. * Called from InitPostgres() once during backend startup. */ /* * returns the current client encoding */ int pg_get_client_encoding(void) { return ClientEncoding->encoding; } /* * returns the current client encoding name */ /* * Convert src string to another encoding (general case). * * See the notes about string conversion functions at the top of this file. */ /* * Convert 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_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(c_as_utf8), CStringGetDatum(s), Int32GetDatum(c_as_utf8_len), BoolGetDatum(false)); } /* convert a multibyte string to a wchar */ /* convert a multibyte string to a wchar with a limited length */ /* same, with any encoding */ /* convert a wchar string to a multibyte */ /* convert a wchar string to a multibyte with a limited length */ /* same, with any encoding */ /* returns the byte length of a multibyte character */ int pg_mblen(const char *mbstr) { return pg_wchar_table[DatabaseEncoding->encoding].mblen((const unsigned char *) mbstr); } /* returns the display length of a multibyte character */ /* returns the length (counted in wchars) of a multibyte string */ /* returns the length (counted in wchars) of a multibyte string * (not necessarily NULL terminated) */ int pg_mbstrlen_with_len(const char *mbstr, int limit) { int len = 0; /* optimization for single byte encoding */ if (pg_database_encoding_max_length() == 1) return limit; while (limit > 0 && *mbstr) { int l = pg_mblen(mbstr); limit -= l; mbstr += l; len++; } return len; } /* * returns the byte length of a multibyte string * (not necessarily NULL terminated) * that is no longer than limit. * this function does not break multibyte character boundary. */ int pg_mbcliplen(const char *mbstr, int len, int limit) { return pg_encoding_mbcliplen(DatabaseEncoding->encoding, mbstr, len, limit); } /* * pg_mbcliplen with specified encoding */ int pg_encoding_mbcliplen(int encoding, const char *mbstr, int len, int limit) { mblen_converter mblen_fn; int clen = 0; int l; /* optimization for single byte encoding */ if (pg_encoding_max_length(encoding) == 1) return cliplen(mbstr, len, limit); mblen_fn = pg_wchar_table[encoding].mblen; while (len > 0 && *mbstr) { l = (*mblen_fn) ((const unsigned char *) mbstr); if ((clen + l) > limit) break; clen += l; if (clen == limit) break; len -= l; mbstr += l; } return clen; } /* * Similar to pg_mbcliplen except the limit parameter specifies the * character length, not the byte length. */ /* mbcliplen for any single-byte encoding */ static int cliplen(const char *str, int len, int limit) { int l = 0; len = Min(len, limit); while (l < len && str[l]) l++; return l; } void SetDatabaseEncoding(int encoding) { if (!PG_VALID_BE_ENCODING(encoding)) elog(ERROR, "invalid database encoding: %d", encoding); DatabaseEncoding = &pg_enc2name_tbl[encoding]; Assert(DatabaseEncoding->encoding == encoding); } #ifdef ENABLE_NLS /* * Make one bind_textdomain_codeset() call, translating a pg_enc to a gettext * codeset. Fails for MULE_INTERNAL, an encoding unknown to gettext; can also * fail for gettext-internal causes like out-of-memory. */ static bool raw_pg_bind_textdomain_codeset(const char *domainname, int encoding) { bool elog_ok = (CurrentMemoryContext != NULL); int i; for (i = 0; pg_enc2gettext_tbl[i].name != NULL; i++) { if (pg_enc2gettext_tbl[i].encoding == encoding) { if (bind_textdomain_codeset(domainname, pg_enc2gettext_tbl[i].name) != NULL) return true; if (elog_ok) elog(LOG, "bind_textdomain_codeset failed"); else write_stderr("bind_textdomain_codeset failed"); break; } } return false; } /* * Bind a gettext message domain to the codeset corresponding to the database * encoding. For SQL_ASCII, instead bind to the codeset implied by LC_CTYPE. * Return the MessageEncoding implied by the new settings. * * On most platforms, gettext defaults to the codeset implied by LC_CTYPE. * When that matches the database encoding, we don't need to do anything. In * CREATE DATABASE, we enforce or trust that the locale's codeset matches the * database encoding, except for the C locale. (On Windows, we also permit a * discrepancy under the UTF8 encoding.) For the C locale, explicitly bind * gettext to the right codeset. * * On Windows, gettext defaults to the Windows ANSI code page. This is a * convenient departure for software that passes the strings to Windows ANSI * APIs, but we don't do that. Compel gettext to use database encoding or, * failing that, the LC_CTYPE encoding as it would on other platforms. * * This function is called before elog() and palloc() are usable. */ int pg_bind_textdomain_codeset(const char *domainname) { bool elog_ok = (CurrentMemoryContext != NULL); int encoding = GetDatabaseEncoding(); int new_msgenc; #ifndef WIN32 const char *ctype = setlocale(LC_CTYPE, NULL); if (pg_strcasecmp(ctype, "C") == 0 || pg_strcasecmp(ctype, "POSIX") == 0) #endif if (encoding != PG_SQL_ASCII && raw_pg_bind_textdomain_codeset(domainname, encoding)) return encoding; new_msgenc = pg_get_encoding_from_locale(NULL, elog_ok); if (new_msgenc < 0) new_msgenc = PG_SQL_ASCII; #ifdef WIN32 if (!raw_pg_bind_textdomain_codeset(domainname, new_msgenc)) /* On failure, the old message encoding remains valid. */ return GetMessageEncoding(); #endif return new_msgenc; } #endif /* * The database encoding, also called the server encoding, represents the * encoding of data stored in text-like data types. Affected types include * cstring, text, varchar, name, xml, and json. */ int GetDatabaseEncoding(void) { return DatabaseEncoding->encoding; } const char * GetDatabaseEncodingName(void) { return DatabaseEncoding->name; } /* * gettext() returns messages in this encoding. This often matches the * database encoding, but it differs for SQL_ASCII databases, for processes * not attached to a database, and under a database encoding lacking iconv * support (MULE_INTERNAL). */ /* * Generic character incrementer function. * * Not knowing anything about the properties of the encoding in use, we just * keep incrementing the last byte until we get a validly-encoded result, * or we run out of values to try. We don't bother to try incrementing * higher-order bytes, so there's no growth in runtime for wider characters. * (If we did try to do that, we'd need to consider the likelihood that 255 * is not a valid final byte in the encoding.) */ /* * UTF-8 character incrementer function. * * For a one-byte character less than 0x7F, we just increment the byte. * * For a multibyte character, every byte but the first must fall between 0x80 * and 0xBF; and the first byte must be between 0xC0 and 0xF4. We increment * the last byte that's not already at its maximum value. If we can't find a * byte that's less than the maximum allowable value, we simply fail. We also * need some special-case logic to skip regions used for surrogate pair * handling, as those should not occur in valid UTF-8. * * Note that we don't reset lower-order bytes back to their minimums, since * we can't afford to make an exhaustive search (see make_greater_string). */ /* * EUC-JP character incrementer function. * * If the sequence starts with SS2 (0x8e), it must be a two-byte sequence * representing JIS X 0201 characters with the second byte ranging between * 0xa1 and 0xdf. We just increment the last byte if it's less than 0xdf, * and otherwise rewrite the whole sequence to 0xa1 0xa1. * * If the sequence starts with SS3 (0x8f), it must be a three-byte sequence * in which the last two bytes range between 0xa1 and 0xfe. The last byte * is incremented if possible, otherwise the second-to-last byte. * * If the sequence starts with a value other than the above and its MSB * is set, it must be a two-byte sequence representing JIS X 0208 characters * with both bytes ranging between 0xa1 and 0xfe. The last byte is * incremented if possible, otherwise the second-to-last byte. * * Otherwise, the sequence is a single-byte ASCII character. It is * incremented up to 0x7f. */ /* * get the character incrementer for the encoding for the current database */ /* * fetch maximum length of the encoding for the current database */ int pg_database_encoding_max_length(void) { return pg_wchar_table[GetDatabaseEncoding()].maxmblen; } /* * Verify mbstr to make sure that it is validly encoded in the current * database encoding. Otherwise same as pg_verify_mbstr(). */ bool pg_verifymbstr(const char *mbstr, int len, bool noError) { return pg_verify_mbstr(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. */ WCHAR * pgwin32_message_to_UTF16(const char *str, int len, int *utf16len) { int msgenc = GetMessageEncoding(); WCHAR *utf16; int dstlen; UINT codepage; if (msgenc == PG_SQL_ASCII) /* No conversion is possible, and SQL_ASCII is never utf16. */ return NULL; codepage = pg_enc2name_tbl[msgenc].codepage; /* * Use MultiByteToWideChar directly if there is a corresponding codepage, * or double conversion through UTF8 if not. Double conversion is needed, * for example, in an ENCODING=LATIN8, LC_CTYPE=C database. */ if (codepage != 0) { utf16 = (WCHAR *) palloc(sizeof(WCHAR) * (len + 1)); dstlen = MultiByteToWideChar(codepage, 0, str, len, utf16, len); utf16[dstlen] = (WCHAR) 0; } else { char *utf8; /* * XXX pg_do_encoding_conversion() requires a transaction. In the * absence of one, hope for the input to be valid UTF8. */ if (IsTransactionState()) { utf8 = (char *) pg_do_encoding_conversion((unsigned char *) str, len, msgenc, PG_UTF8); if (utf8 != str) len = strlen(utf8); } else utf8 = (char *) str; utf16 = (WCHAR *) palloc(sizeof(WCHAR) * (len + 1)); dstlen = MultiByteToWideChar(CP_UTF8, 0, utf8, len, utf16, len); utf16[dstlen] = (WCHAR) 0; if (utf8 != str) pfree(utf8); } if (dstlen == 0 && len > 0) { pfree(utf16); return NULL; /* error */ } if (utf16len) *utf16len = dstlen; return utf16; } #endif /* WIN32 */ pg_query-4.2.3/ext/pg_query/pg_query_fingerprint.c0000644000004100000410000002532014510636647022462 0ustar www-datawww-data// Ensure we have asprintf's definition on glibc-based platforms to avoid compiler warnings #define _GNU_SOURCE #include #include "pg_query.h" #include "pg_query_internal.h" #include "pg_query_fingerprint.h" #include "postgres.h" #include "xxhash/xxhash.h" #include "lib/ilist.h" #include "parser/parser.h" #include "parser/scanner.h" #include "parser/scansup.h" #include "nodes/parsenodes.h" #include "nodes/value.h" #include "common/hashfn.h" #include #include // Definitions typedef struct FingerprintContext { XXH3_state_t *xxh_state; struct listsort_cache_hash *listsort_cache; bool write_tokens; dlist_head tokens; } FingerprintContext; typedef struct FingerprintListsortItem { XXH64_hash_t hash; size_t list_pos; } FingerprintListsortItem; typedef struct FingerprintListsortItemCacheEntry { /* List node this cache entry is for */ uintptr_t node; /* Hashes of all list items -- this is expensive to calculate */ FingerprintListsortItem **listsort_items; size_t listsort_items_size; /* hash entry status */ char status; } FingerprintListsortItemCacheEntry; #define SH_PREFIX listsort_cache #define SH_ELEMENT_TYPE FingerprintListsortItemCacheEntry #define SH_KEY_TYPE uintptr_t #define SH_KEY node #define SH_HASH_KEY(tb, key) hash_bytes((const unsigned char *) &key, sizeof(uintptr_t)) #define SH_EQUAL(tb, a, b) a == b #define SH_SCOPE static inline #define SH_DEFINE #define SH_DECLARE #include "lib/simplehash.h" typedef struct FingerprintToken { char *str; dlist_node list_node; } FingerprintToken; static void _fingerprintNode(FingerprintContext *ctx, const void *obj, const void *parent, char *parent_field_name, unsigned int depth); static void _fingerprintInitContext(FingerprintContext *ctx, FingerprintContext *parent, bool write_tokens); static void _fingerprintFreeContext(FingerprintContext *ctx); #define PG_QUERY_FINGERPRINT_VERSION 3 // Implementations static void _fingerprintString(FingerprintContext *ctx, const char *str) { if (ctx->xxh_state != NULL) { XXH3_64bits_update(ctx->xxh_state, str, strlen(str)); } if (ctx->write_tokens) { FingerprintToken *token = palloc0(sizeof(FingerprintToken)); token->str = pstrdup(str); dlist_push_tail(&ctx->tokens, &token->list_node); } } static void _fingerprintInteger(FingerprintContext *ctx, const 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, bool printTokens) { MemoryContext ctx = NULL; PgQueryInternalParsetreeAndError parsetree_and_error; PgQueryFingerprintResult result = {0}; ctx = pg_query_enter_memory_context(); parsetree_and_error = pg_query_raw_parse(input); // These are all malloc-ed and will survive exiting the memory context, the caller is responsible to free them now result.stderr_buffer = parsetree_and_error.stderr_buffer; result.error = parsetree_and_error.error; if (parsetree_and_error.tree != NULL || result.error == NULL) { FingerprintContext ctx; XXH64_canonical_t chash; _fingerprintInitContext(&ctx, NULL, printTokens); if (parsetree_and_error.tree != NULL) { _fingerprintNode(&ctx, parsetree_and_error.tree, NULL, NULL, 0); } if (printTokens) { dlist_iter iter; printf("["); dlist_foreach(iter, &ctx.tokens) { FingerprintToken *token = dlist_container(FingerprintToken, list_node, iter.cur); printf("\"%s\", ", token->str); } printf("]\n"); } result.fingerprint = XXH3_64bits_digest(ctx.xxh_state); _fingerprintFreeContext(&ctx); XXH64_canonicalFromHash(&chash, result.fingerprint); int err = asprintf(&result.fingerprint_str, "%02x%02x%02x%02x%02x%02x%02x%02x", chash.digest[0], chash.digest[1], chash.digest[2], chash.digest[3], chash.digest[4], chash.digest[5], chash.digest[6], chash.digest[7]); if (err == -1) { PgQueryError* error = malloc(sizeof(PgQueryError)); error->message = strdup("Failed to output fingerprint string due to asprintf failure"); result.error = error; } } pg_query_exit_memory_context(ctx); return result; } PgQueryFingerprintResult pg_query_fingerprint(const char* input) { return pg_query_fingerprint_with_opts(input, false); } void pg_query_free_fingerprint_result(PgQueryFingerprintResult result) { if (result.error) { free(result.error->message); free(result.error->filename); free(result.error->funcname); free(result.error); } free(result.fingerprint_str); free(result.stderr_buffer); } pg_query-4.2.3/ext/pg_query/src_port_qsort.c0000644000004100000410000000114514510636647021302 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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); } pg_query-4.2.3/ext/pg_query/pg_query_ruby.sym0000644000004100000410000000001714510636647021476 0ustar www-datawww-data_Init_pg_query pg_query-4.2.3/ext/pg_query/pg_query_json_plpgsql.c0000644000004100000410000005270414510636647022654 0ustar www-datawww-data#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); } 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; } pg_query-4.2.3/ext/pg_query/src_port_strerror.c0000644000004100000410000001546514510636647022026 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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-2022, 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"; #if defined(ENOTEMPTY) && (ENOTEMPTY != EEXIST) /* same code on AIX */ case ENOTEMPTY: return "ENOTEMPTY"; #endif 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 */ pg_query-4.2.3/ext/pg_query/guc-file.c0000644000004100000410000000000014510636647017677 0ustar www-datawww-datapg_query-4.2.3/ext/pg_query/pg_query_parse_plpgsql.c0000644000004100000410000003213614510636647023012 0ustar www-datawww-data#define _GNU_SOURCE // Necessary to get asprintf (which is a GNU extension) #include #include "pg_query.h" #include "pg_query_internal.h" #include "pg_query_json_plpgsql.h" #include #include #include #include #include #include typedef struct { PLpgSQL_function *func; PgQueryError* error; } PgQueryInternalPlpgsqlFuncAndError; static PgQueryInternalPlpgsqlFuncAndError pg_query_raw_parse_plpgsql(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); if (param->name != NULL) { char buf[32]; PLpgSQL_type *argdtype; PLpgSQL_variable *argvariable; PLpgSQL_nsitem_type argitemtype; snprintf(buf, sizeof(buf), "$%d", foreach_current_index(lc) + 1); argdtype = plpgsql_build_datatype(UNKNOWNOID, -1, InvalidOid, NULL); argvariable = plpgsql_build_variable(param->name ? param->name : buf, 0, argdtype, false); argitemtype = argvariable->dtype == PLPGSQL_DTYPE_VAR ? PLPGSQL_NSTYPE_VAR : PLPGSQL_NSTYPE_REC; plpgsql_ns_additem(argitemtype, argvariable->dno, buf); if (param->name != NULL) plpgsql_ns_additem(argitemtype, argvariable->dno, param->name); } } /* Set up as though in a function returning VOID */ function->fn_rettype = VOIDOID; function->fn_retset = is_setof; function->fn_retistuple = false; function->fn_retisdomain = false; function->fn_prokind = PROKIND_FUNCTION; /* a bit of hardwired knowledge about type VOID here */ function->fn_retbyval = true; function->fn_rettyplen = sizeof(int32); /* * Remember if function is STABLE/IMMUTABLE. XXX would it be better to * set this TRUE inside a read-only transaction? Not clear. */ function->fn_readonly = false; /* * Create the magic FOUND variable. */ var = plpgsql_build_variable("found", 0, plpgsql_build_datatype(BOOLOID, -1, InvalidOid, NULL), true); function->found_varno = var->dno; if (is_trigger) { /* Add the record for referencing NEW */ rec = plpgsql_build_record("new", 0, NULL, RECORDOID, true); function->new_varno = rec->dno; /* Add the record for referencing OLD */ rec = plpgsql_build_record("old", 0, NULL, RECORDOID, true); function->old_varno = rec->dno; } /* * Now parse the function's text */ parse_rc = plpgsql_yyparse(); if (parse_rc != 0) elog(ERROR, "plpgsql parser returned %d", parse_rc); function->action = plpgsql_parse_result; plpgsql_scanner_finish(); /* * If it returns VOID (always true at the moment), we allow control to * fall off the end without an explicit RETURN statement. */ if (function->fn_rettype == VOIDOID) add_dummy_return(function); /* * Complete the function's info */ function->fn_nargs = 0; plpgsql_finish_datums(function); /* * Pop the error context stack */ error_context_stack = plerrcontext.previous; plpgsql_error_funcname = NULL; plpgsql_check_syntax = false; MemoryContextSwitchTo(plpgsql_compile_tmp_cxt); plpgsql_compile_tmp_cxt = NULL; return function; } PgQueryInternalPlpgsqlFuncAndError pg_query_raw_parse_plpgsql(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); 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; func_json = plpgsqlToJSON(func_and_error.func); plpgsql_free_function_memory(func_and_error.func); int err = asprintf(&new_out, "%s%s,\n", result.plpgsql_funcs, func_json); if (err == -1) { PgQueryError* error = malloc(sizeof(PgQueryError)); error->message = strdup("Failed to output PL/pgSQL functions due to asprintf failure"); result.error = error; } else { free(result.plpgsql_funcs); result.plpgsql_funcs = new_out; } pfree(func_json); } } result.plpgsql_funcs[strlen(result.plpgsql_funcs) - 2] = '\n'; result.plpgsql_funcs[strlen(result.plpgsql_funcs) - 1] = ']'; free(parse_result.stderr_buffer); pg_query_exit_memory_context(ctx); return result; } void pg_query_free_plpgsql_parse_result(PgQueryPlpgsqlParseResult result) { if (result.error) { pg_query_free_error(result.error); } free(result.plpgsql_funcs); } pg_query-4.2.3/ext/pg_query/src_port_pgsleep.c0000644000004100000410000000421514510636647021572 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_usleep *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pgsleep.c * Portable delay handling. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * * src/port/pgsleep.c * *------------------------------------------------------------------------- */ #include "c.h" #include #include #ifdef HAVE_SYS_SELECT_H #include #endif /* * In a Windows backend, we don't use this implementation, but rather * the signal-aware version in src/backend/port/win32/signal.c. */ #if defined(FRONTEND) || !defined(WIN32) /* * pg_usleep --- delay the specified number of microseconds. * * NOTE: although the delay is specified in microseconds, the effective * resolution is only 1/HZ, or 10 milliseconds, on most Unixen. Expect * the requested delay to be rounded up to the next resolution boundary. * * On machines where "long" is 32 bits, the maximum delay is ~2000 seconds. * * CAUTION: the behavior when a signal arrives during the sleep is platform * dependent. On most Unix-ish platforms, a signal does not terminate the * sleep; but on some, it will (the Windows implementation also allows signals * to terminate pg_usleep). And there are platforms where not only does a * signal not terminate the sleep, but it actually resets the timeout counter * so that the sleep effectively starts over! It is therefore rather hazardous * to use this for long sleeps; a continuing stream of signal events could * prevent the sleep from ever terminating. Better practice for long sleeps * is to use WaitLatch() with a timeout. */ void pg_usleep(long microsec) { if (microsec > 0) { #ifndef WIN32 struct timeval delay; delay.tv_sec = microsec / 1000000L; delay.tv_usec = microsec % 1000000L; (void) select(0, NULL, NULL, NULL, &delay); #else SleepEx((microsec < 500 ? 1 : (microsec + 500) / 1000), FALSE); #endif } } #endif /* defined(FRONTEND) || !defined(WIN32) */ pg_query-4.2.3/ext/pg_query/src_backend_utils_fmgr_fmgr.c0000644000004100000410000003575714510636647023743 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - FunctionCall6Coll *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * fmgr.c * The Postgres function manager. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/fmgr/fmgr.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "access/detoast.h" #include "catalog/pg_language.h" #include "catalog/pg_proc.h" #include "catalog/pg_type.h" #include "executor/functions.h" #include "lib/stringinfo.h" #include "miscadmin.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" #include "pgstat.h" #include "utils/acl.h" #include "utils/builtins.h" #include "utils/fmgrtab.h" #include "utils/guc.h" #include "utils/lsyscache.h" #include "utils/syscache.h" /* * Hooks for function calls */ PGDLLIMPORT PGDLLIMPORT /* * Hashtable for fast lookup of external C functions */ typedef struct { /* fn_oid is the hash key and so must be first! */ Oid fn_oid; /* OID of an external C function */ TransactionId fn_xmin; /* for checking up-to-dateness */ ItemPointerData fn_tid; PGFunction user_fn; /* the function's address */ const Pg_finfo_record *inforec; /* address of its info record */ } CFuncHashTabEntry; static void fmgr_info_cxt_security(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt, bool ignore_security); static void fmgr_info_C_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple); static void fmgr_info_other_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple); static CFuncHashTabEntry *lookup_C_func(HeapTuple procedureTuple); static void record_C_func(HeapTuple procedureTuple, PGFunction user_fn, const Pg_finfo_record *inforec); /* extern so it's callable via JIT */ extern Datum fmgr_security_definer(PG_FUNCTION_ARGS); /* * Lookup routines for builtin-function table. We can search by either Oid * or name, but search by Oid is much faster. */ /* * Lookup a builtin by name. Note there can be more than one entry in * the array with the same name, but they should all point to the same * routine. */ /* * This routine fills a FmgrInfo struct, given the OID * of the function to be called. * * The caller's CurrentMemoryContext is used as the fn_mcxt of the info * struct; this means that any subsidiary data attached to the info struct * (either by fmgr_info itself, or later on by a function call handler) * will be allocated in that context. The caller must ensure that this * context is at least as long-lived as the info struct itself. This is * not a problem in typical cases where the info struct is on the stack or * in freshly-palloc'd space. However, if one intends to store an info * struct in a long-lived table, it's better to use fmgr_info_cxt. */ /* * Fill a FmgrInfo struct, specifying a memory context in which its * subsidiary data should go. */ /* * This one does the actual work. ignore_security is ordinarily false * but is set to true when we need to avoid recursion. */ /* * Return module and C function name providing implementation of functionId. * * If *mod == NULL and *fn == NULL, no C symbol is known to implement * function. * * If *mod == NULL and *fn != NULL, the function is implemented by a symbol in * the main binary. * * If *mod != NULL and *fn != NULL the function is implemented in an extension * shared object. * * The returned module and function names are pstrdup'ed into the current * memory context. */ /* * Special fmgr_info processing for C-language functions. Note that * finfo->fn_oid is not valid yet. */ /* * Special fmgr_info processing for other-language functions. Note * that finfo->fn_oid is not valid yet. */ /* * Fetch and validate the information record for the given external function. * The function is specified by a handle for the containing library * (obtained from load_external_function) as well as the function name. * * If no info function exists for the given name an error is raised. * * This function is broken out of fmgr_info_C_lang so that fmgr_c_validator * can validate the information record for a function not yet entered into * pg_proc. */ /*------------------------------------------------------------------------- * Routines for caching lookup information for external C functions. * * The routines in dfmgr.c are relatively slow, so we try to avoid running * them more than once per external function per session. We use a hash table * with the function OID as the lookup key. *------------------------------------------------------------------------- */ /* * lookup_C_func: try to find a C function in the hash table * * If an entry exists and is up to date, return it; else return NULL */ /* * record_C_func: enter (or update) info about a C function in the hash table */ /* * Copy an FmgrInfo struct * * This is inherently somewhat bogus since we can't reliably duplicate * language-dependent subsidiary info. We cheat by zeroing fn_extra, * instead, meaning that subsidiary info will have to be recomputed. */ /* * Specialized lookup routine for fmgr_internal_validator: given the alleged * name of an internal function, return the OID of the function. * If the name is not recognized, return InvalidOid. */ /* * Support for security-definer and proconfig-using functions. We support * both of these features using the same call handler, because they are * often used together and it would be inefficient (as well as notationally * messy) to have two levels of call handler involved. */ struct fmgr_security_definer_cache { FmgrInfo flinfo; /* lookup info for target function */ Oid userid; /* userid to set, or InvalidOid */ ArrayType *proconfig; /* GUC values to set, or NULL */ Datum arg; /* passthrough argument for plugin modules */ }; /* * Function handler for security-definer/proconfig/plugin-hooked functions. * We extract the OID of the actual function and do a fmgr lookup again. * Then we fetch the pg_proc row and copy the owner ID and proconfig fields. * (All this info is cached for the duration of the current query.) * To execute a call, we temporarily replace the flinfo with the cached * and looked-up one, while keeping the outer fcinfo (which contains all * the actual arguments, etc.) intact. This is not re-entrant, but then * the fcinfo itself can't be used reentrantly anyway. */ /*------------------------------------------------------------------------- * Support routines for callers of fmgr-compatible functions *------------------------------------------------------------------------- */ /* * These are for invocation of a specifically named function with a * directly-computed parameter list. Note that neither arguments nor result * are allowed to be NULL. Also, the function cannot be one that needs to * look at FmgrInfo, since there won't be any. */ /* * These functions work like the DirectFunctionCall functions except that * they use the flinfo parameter to initialise the fcinfo for the call. * It's recommended that the callee only use the fn_extra and fn_mcxt * fields, as other fields will typically describe the calling function * not the callee. Conversely, the calling function should not have * used fn_extra, unless its use is known to be compatible with the callee's. */ /* * These are for invocation of a previously-looked-up function with a * directly-computed parameter list. Note that neither arguments nor result * are allowed to be NULL. */ Datum 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 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. */ pg_query-4.2.3/ext/pg_query/src_common_wchar.c0000644000004100000410000013707314510636647021554 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_encoding_max_length * - pg_wchar_table * - pg_utf_mblen * - pg_mule_mblen * - pg_ascii2wchar_with_len * - pg_wchar2single_with_len * - pg_ascii_mblen * - pg_ascii_dsplen * - pg_ascii_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 * - unicode_to_utf8 * - pg_utf_dsplen * - utf8_to_unicode * - 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-2022, PostgreSQL Global Development Group * * IDENTIFICATION * src/common/wchar.c * *------------------------------------------------------------------------- */ #include "c.h" #include "mb/pg_wchar.h" /* * Operations on multi-byte encodings are driven by a table of helper * functions. * * To add an encoding support, define mblen(), dsplen(), 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; } /* * Map a Unicode code point to UTF-8. utf8string must have 4 bytes of * space allocated. */ unsigned char * unicode_to_utf8(pg_wchar c, unsigned char *utf8string) { if (c <= 0x7F) { utf8string[0] = c; } else if (c <= 0x7FF) { utf8string[0] = 0xC0 | ((c >> 6) & 0x1F); utf8string[1] = 0x80 | (c & 0x3F); } else if (c <= 0xFFFF) { utf8string[0] = 0xE0 | ((c >> 12) & 0x0F); utf8string[1] = 0x80 | ((c >> 6) & 0x3F); utf8string[2] = 0x80 | (c & 0x3F); } else { utf8string[0] = 0xF0 | ((c >> 18) & 0x07); utf8string[1] = 0x80 | ((c >> 12) & 0x3F); utf8string[2] = 0x80 | ((c >> 6) & 0x3F); utf8string[3] = 0x80 | (c & 0x3F); } return utf8string; } /* * Trivial conversion from pg_wchar to UTF-8. * caller should allocate enough space for "to" * len: length of from. * "from" not necessarily null terminated. */ static int pg_wchar2utf_with_len(const pg_wchar *from, unsigned char *to, int len) { int cnt = 0; while (len > 0 && *from) { int char_len; unicode_to_utf8(*from, to); char_len = pg_utf_mblen(to); cnt += char_len; to += char_len; from++; len--; } *to = 0; return cnt; } /* * Return the byte length of a UTF8 character pointed to by s * * Note: in the current implementation we do not support UTF8 sequences * of more than 4 bytes; hence do NOT return a value larger than 4. * We return "1" for any leading byte that is either flat-out illegal or * indicates a length larger than we support. * * pg_utf2wchar_with_len(), utf8_to_unicode(), pg_utf8_islegal(), and perhaps * other places would need to be fixed to change this. */ int pg_utf_mblen(const unsigned char *s) { int len; if ((*s & 0x80) == 0) len = 1; else if ((*s & 0xe0) == 0xc0) len = 2; else if ((*s & 0xf0) == 0xe0) len = 3; else if ((*s & 0xf8) == 0xf0) len = 4; #ifdef NOT_USED else if ((*s & 0xfc) == 0xf8) len = 5; else if ((*s & 0xfe) == 0xfc) len = 6; #endif else len = 1; return len; } /* * This is an implementation of wcwidth() and wcswidth() as defined in * "The Single UNIX Specification, Version 2, The Open Group, 1997" * * * Markus Kuhn -- 2001-09-08 -- public domain * * customised for PostgreSQL * * original available at : http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c */ struct mbinterval { unsigned 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 or Me 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_combining_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, combining, sizeof(combining) / 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; } /* * Convert a UTF-8 character to a Unicode code point. * This is a one-character version of pg_utf2wchar_with_len. * * No error checks here, c must point to a long-enough string. */ pg_wchar utf8_to_unicode(const unsigned char *c) { if ((*c & 0x80) == 0) return (pg_wchar) c[0]; else if ((*c & 0xe0) == 0xc0) return (pg_wchar) (((c[0] & 0x1f) << 6) | (c[1] & 0x3f)); else if ((*c & 0xf0) == 0xe0) return (pg_wchar) (((c[0] & 0x0f) << 12) | ((c[1] & 0x3f) << 6) | (c[2] & 0x3f)); else if ((*c & 0xf8) == 0xf0) return (pg_wchar) (((c[0] & 0x07) << 18) | ((c[1] & 0x3f) << 12) | ((c[2] & 0x3f) << 6) | (c[3] & 0x3f)); else /* that is an invalid code on purpose */ return 0xffffffff; } static int pg_utf_dsplen(const unsigned char *s) { return ucs_wcwidth(utf8_to_unicode(s)); } /* * convert mule internal code to pg_wchar * caller should allocate enough space for "to" * len: length of from. * "from" not necessarily null terminated. */ static int pg_mule2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) { int cnt = 0; while (len > 0 && *from) { if (IS_LC1(*from) && len >= 2) { *to = *from++ << 16; *to |= *from++; len -= 2; } else if (IS_LCPRV1(*from) && len >= 3) { from++; *to = *from++ << 16; *to |= *from++; len -= 3; } else if (IS_LC2(*from) && len >= 3) { *to = *from++ << 16; *to |= *from++ << 8; *to |= *from++; len -= 3; } else if (IS_LCPRV2(*from) && len >= 4) { from++; *to = *from++ << 16; *to |= *from++ << 8; *to |= *from++; len -= 4; } else { /* assume ASCII */ *to = (unsigned char) *from++; len--; } to++; cnt++; } *to = 0; return cnt; } /* * convert pg_wchar to mule internal code * caller should allocate enough space for "to" * len: length of from. * "from" not necessarily null terminated. */ static int pg_wchar2mule_with_len(const pg_wchar *from, unsigned char *to, int len) { int cnt = 0; while (len > 0 && *from) { unsigned char lb; lb = (*from >> 16) & 0xff; if (IS_LC1(lb)) { *to++ = lb; *to++ = *from & 0xff; cnt += 2; } else if (IS_LC2(lb)) { *to++ = lb; *to++ = (*from >> 8) & 0xff; *to++ = *from & 0xff; cnt += 3; } else if (IS_LCPRV1_A_RANGE(lb)) { *to++ = LCPRV1_A; *to++ = lb; *to++ = *from & 0xff; cnt += 3; } else if (IS_LCPRV1_B_RANGE(lb)) { *to++ = LCPRV1_B; *to++ = lb; *to++ = *from & 0xff; cnt += 3; } else if (IS_LCPRV2_A_RANGE(lb)) { *to++ = LCPRV2_A; *to++ = lb; *to++ = (*from >> 8) & 0xff; *to++ = *from & 0xff; cnt += 4; } else if (IS_LCPRV2_B_RANGE(lb)) { *to++ = LCPRV2_B; *to++ = lb; *to++ = (*from >> 8) & 0xff; *to++ = *from & 0xff; cnt += 4; } else { *to++ = *from & 0xff; cnt += 1; } from++; len--; } *to = 0; return cnt; } /* exported for direct use by conv.c */ int pg_mule_mblen(const unsigned char *s) { int len; if (IS_LC1(*s)) len = 2; else if (IS_LCPRV1(*s)) len = 3; else if (IS_LC2(*s)) len = 3; else if (IS_LCPRV2(*s)) len = 4; else len = 1; /* assume ASCII */ return len; } static int pg_mule_dsplen(const unsigned char *s) { int len; /* * Note: it's not really appropriate to assume that all multibyte charsets * are double-wide on screen. But this seems an okay approximation for * the MULE charsets we currently support. */ if (IS_LC1(*s)) len = 1; else if (IS_LCPRV1(*s)) len = 1; else if (IS_LC2(*s)) len = 2; else if (IS_LCPRV2(*s)) len = 2; else len = 1; /* assume ASCII */ return len; } /* * ISO8859-1 */ static int pg_latin12wchar_with_len(const unsigned char *from, pg_wchar *to, int len) { int cnt = 0; while (len > 0 && *from) { *to++ = *from++; len--; cnt++; } *to = 0; return cnt; } /* * Trivial conversion from pg_wchar to single byte encoding. Just ignores * high bits. * caller should allocate enough space for "to" * len: length of from. * "from" not necessarily null terminated. */ static int pg_wchar2single_with_len(const pg_wchar *from, unsigned char *to, int len) { int cnt = 0; while (len > 0 && *from) { *to++ = *from++; len--; cnt++; } *to = 0; return cnt; } static int pg_latin1_mblen(const unsigned char *s) { return 1; } static int pg_latin1_dsplen(const unsigned char *s) { return pg_ascii_dsplen(s); } /* * SJIS */ static int pg_sjis_mblen(const unsigned char *s) { int len; if (*s >= 0xa1 && *s <= 0xdf) len = 1; /* 1 byte kana? */ else if (IS_HIGHBIT_SET(*s)) len = 2; /* kanji? */ else len = 1; /* should be ASCII */ return len; } static int pg_sjis_dsplen(const unsigned char *s) { int len; if (*s >= 0xa1 && *s <= 0xdf) len = 1; /* 1 byte kana? */ else if (IS_HIGHBIT_SET(*s)) len = 2; /* kanji? */ else len = pg_ascii_dsplen(s); /* should be ASCII */ return len; } /* * Big5 */ static int pg_big5_mblen(const unsigned char *s) { int len; if (IS_HIGHBIT_SET(*s)) len = 2; /* kanji? */ else len = 1; /* should be ASCII */ return len; } static int pg_big5_dsplen(const unsigned char *s) { int len; if (IS_HIGHBIT_SET(*s)) len = 2; /* kanji? */ else len = pg_ascii_dsplen(s); /* should be ASCII */ return len; } /* * GBK */ static int pg_gbk_mblen(const unsigned char *s) { int len; if (IS_HIGHBIT_SET(*s)) len = 2; /* kanji? */ else len = 1; /* should be ASCII */ return len; } static int pg_gbk_dsplen(const unsigned char *s) { int len; if (IS_HIGHBIT_SET(*s)) len = 2; /* kanji? */ else len = pg_ascii_dsplen(s); /* should be ASCII */ return len; } /* * UHC */ static int pg_uhc_mblen(const unsigned char *s) { int len; if (IS_HIGHBIT_SET(*s)) len = 2; /* 2byte? */ else len = 1; /* should be ASCII */ return len; } static int pg_uhc_dsplen(const unsigned char *s) { int len; if (IS_HIGHBIT_SET(*s)) len = 2; /* 2byte? */ else len = pg_ascii_dsplen(s); /* should be ASCII */ return len; } /* * GB18030 * Added by Bill Huang , */ /* * Unlike all other mblen() functions, this also looks at the second byte of * the input. However, if you only pass the first byte of a multi-byte * string, and \0 as the second byte, this still works in a predictable way: * a 4-byte character will be reported as two 2-byte characters. That's * enough for all current uses, as a client-only encoding. It works that * way, because in any valid 4-byte GB18030-encoded character, the third and * fourth byte look like a 2-byte encoded character, when looked at * separately. */ static int pg_gb18030_mblen(const unsigned char *s) { int len; if (!IS_HIGHBIT_SET(*s)) len = 1; /* ASCII */ else if (*(s + 1) >= 0x30 && *(s + 1) <= 0x39) len = 4; else len = 2; return len; } static int pg_gb18030_dsplen(const unsigned char *s) { int len; if (IS_HIGHBIT_SET(*s)) len = 2; else len = pg_ascii_dsplen(s); /* ASCII */ return len; } /* *------------------------------------------------------------------- * multibyte sequence validators * * 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; 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; 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; 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; /* * Sixteen seems to give the best balance of performance across different * byte distributions. */ #define STRIDE_LENGTH 16 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; } /* *------------------------------------------------------------------- * encoding info table * XXX must be sorted by the same order as enum pg_enc (in mb/pg_wchar.h) *------------------------------------------------------------------- */ const pg_wchar_tbl pg_wchar_table[] = { {pg_ascii2wchar_with_len, pg_wchar2single_with_len, pg_ascii_mblen, pg_ascii_dsplen, pg_ascii_verifychar, pg_ascii_verifystr, 1}, /* PG_SQL_ASCII */ {pg_eucjp2wchar_with_len, pg_wchar2euc_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifychar, pg_eucjp_verifystr, 3}, /* PG_EUC_JP */ {pg_euccn2wchar_with_len, pg_wchar2euc_with_len, pg_euccn_mblen, pg_euccn_dsplen, pg_euccn_verifychar, pg_euccn_verifystr, 2}, /* PG_EUC_CN */ {pg_euckr2wchar_with_len, pg_wchar2euc_with_len, pg_euckr_mblen, pg_euckr_dsplen, pg_euckr_verifychar, pg_euckr_verifystr, 3}, /* PG_EUC_KR */ {pg_euctw2wchar_with_len, pg_wchar2euc_with_len, pg_euctw_mblen, pg_euctw_dsplen, pg_euctw_verifychar, pg_euctw_verifystr, 4}, /* PG_EUC_TW */ {pg_eucjp2wchar_with_len, pg_wchar2euc_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifychar, pg_eucjp_verifystr, 3}, /* PG_EUC_JIS_2004 */ {pg_utf2wchar_with_len, pg_wchar2utf_with_len, pg_utf_mblen, pg_utf_dsplen, pg_utf8_verifychar, pg_utf8_verifystr, 4}, /* PG_UTF8 */ {pg_mule2wchar_with_len, pg_wchar2mule_with_len, pg_mule_mblen, pg_mule_dsplen, pg_mule_verifychar, pg_mule_verifystr, 4}, /* PG_MULE_INTERNAL */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, /* 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}, /* ISO-8859-5 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, /* ISO-8859-6 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, /* ISO-8859-7 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, /* 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 */ {0, 0, pg_sjis_mblen, pg_sjis_dsplen, pg_sjis_verifychar, pg_sjis_verifystr, 2}, /* PG_SJIS */ {0, 0, pg_big5_mblen, pg_big5_dsplen, pg_big5_verifychar, pg_big5_verifystr, 2}, /* PG_BIG5 */ {0, 0, pg_gbk_mblen, pg_gbk_dsplen, pg_gbk_verifychar, pg_gbk_verifystr, 2}, /* PG_GBK */ {0, 0, pg_uhc_mblen, pg_uhc_dsplen, pg_uhc_verifychar, pg_uhc_verifystr, 2}, /* PG_UHC */ {0, 0, pg_gb18030_mblen, pg_gb18030_dsplen, pg_gb18030_verifychar, pg_gb18030_verifystr, 4}, /* PG_GB18030 */ {0, 0, pg_johab_mblen, pg_johab_dsplen, pg_johab_verifychar, pg_johab_verifystr, 3}, /* PG_JOHAB */ {0, 0, pg_sjis_mblen, pg_sjis_dsplen, pg_sjis_verifychar, pg_sjis_verifystr, 2} /* PG_SHIFT_JIS_2004 */ }; /* * 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)); return pg_wchar_table[encoding].maxmblen; } pg_query-4.2.3/ext/pg_query/pg_query_readfuncs_protobuf.c0000644000004100000410000001301114510636647024017 0ustar www-datawww-data#include "pg_query_readfuncs.h" #include "nodes/nodes.h" #include "nodes/parsenodes.h" #include "nodes/pg_list.h" #include "protobuf/pg_query.pb-c.h" #define OUT_TYPE(typename, typename_c) PgQuery__##typename_c* #define READ_COND(typename, typename_c, typename_underscore, typename_underscore_upcase, typename_cast, outname) \ case PG_QUERY__NODE__NODE_##typename_underscore_upcase: \ return (Node *) _read##typename_c(msg->outname); #define READ_INT_FIELD(outname, outname_json, fldname) node->fldname = msg->outname; #define READ_UINT_FIELD(outname, outname_json, fldname) node->fldname = msg->outname; #define READ_LONG_FIELD(outname, outname_json, fldname) node->fldname = msg->outname; #define READ_FLOAT_FIELD(outname, outname_json, fldname) node->fldname = msg->outname; #define READ_BOOL_FIELD(outname, outname_json, fldname) node->fldname = msg->outname; #define READ_CHAR_FIELD(outname, outname_json, fldname) \ if (msg->outname != NULL && strlen(msg->outname) > 0) { \ node->fldname = msg->outname[0]; \ } #define READ_STRING_FIELD(outname, outname_json, fldname) \ if (msg->outname != NULL && strlen(msg->outname) > 0) { \ node->fldname = pstrdup(msg->outname); \ } #define READ_ENUM_FIELD(typename, outname, outname_json, fldname) \ node->fldname = _intToEnum##typename(msg->outname); #define READ_LIST_FIELD(outname, outname_json, fldname) \ { \ if (msg->n_##outname > 0) \ node->fldname = list_make1(_readNode(msg->outname[0])); \ for (int i = 1; i < msg->n_##outname; i++) \ node->fldname = lappend(node->fldname, _readNode(msg->outname[i])); \ } #define READ_BITMAPSET_FIELD(outname, outname_json, fldname) // FIXME #define READ_NODE_FIELD(outname, outname_json, fldname) \ node->fldname = *_readNode(msg->outname); #define READ_NODE_PTR_FIELD(outname, outname_json, fldname) \ if (msg->outname != NULL) { \ node->fldname = _readNode(msg->outname); \ } #define READ_EXPR_PTR_FIELD(outname, outname_json, fldname) \ if (msg->outname != NULL) { \ node->fldname = (Expr *) _readNode(msg->outname); \ } #define READ_VALUE_FIELD(outname, outname_json, fldname) \ if (msg->outname != NULL) { \ node->fldname = *((Value *) _readNode(msg->outname)); \ } #define READ_VALUE_PTR_FIELD(outname, outname_json, fldname) \ if (msg->outname != NULL) { \ node->fldname = (Value *) _readNode(msg->outname); \ } #define READ_SPECIFIC_NODE_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ node->fldname = *_read##typename(msg->outname); #define READ_SPECIFIC_NODE_PTR_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ if (msg->outname != NULL) { \ node->fldname = _read##typename(msg->outname); \ } static Node * _readNode(PgQuery__Node *msg); 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; } pg_query-4.2.3/ext/pg_query/pg_query.c0000644000004100000410000000424614510636647020057 0ustar www-datawww-data#include "pg_query.h" #include "pg_query_internal.h" #include #include #include #include #include const char* progname = "pg_query"; __thread sig_atomic_t pg_query_initialized = 0; static pthread_key_t pg_query_thread_exit_key; static void pg_query_thread_exit(void *key); void pg_query_init(void) { if (pg_query_initialized != 0) return; pg_query_initialized = 1; MemoryContextInit(); SetDatabaseEncoding(PG_UTF8); pthread_key_create(&pg_query_thread_exit_key, pg_query_thread_exit); pthread_setspecific(pg_query_thread_exit_key, TopMemoryContext); } void pg_query_free_top_memory_context(MemoryContext context) { AssertArg(MemoryContextIsValid(context)); /* * After this, no memory contexts are valid anymore, so ensure that * the current context is the top-level context. */ Assert(TopMemoryContext == CurrentMemoryContext); MemoryContextDeleteChildren(context); /* Clean up the aset.c freelist, to leave no unused context behind */ AllocSetDeleteFreeList(context); context->methods->delete_context(context); VALGRIND_DESTROY_MEMPOOL(context); /* Without this, Valgrind will complain */ free(context); /* Reset pointers */ TopMemoryContext = NULL; CurrentMemoryContext = NULL; ErrorContext = NULL; } static void pg_query_thread_exit(void *key) { MemoryContext context = (MemoryContext) key; pg_query_free_top_memory_context(context); } void pg_query_exit(void) { pg_query_free_top_memory_context(TopMemoryContext); } MemoryContext pg_query_enter_memory_context() { MemoryContext ctx = NULL; pg_query_init(); Assert(CurrentMemoryContext == TopMemoryContext); ctx = AllocSetContextCreate(TopMemoryContext, "pg_query", ALLOCSET_DEFAULT_SIZES); MemoryContextSwitchTo(ctx); return ctx; } void pg_query_exit_memory_context(MemoryContext ctx) { // Return to previous PostgreSQL memory context MemoryContextSwitchTo(TopMemoryContext); MemoryContextDelete(ctx); ctx = NULL; } void pg_query_free_error(PgQueryError *error) { free(error->message); free(error->funcname); free(error->filename); if (error->context) { free(error->context); } free(error); } pg_query-4.2.3/ext/pg_query/pg_query_outfuncs_protobuf.c0000644000004100000410000002016414510636647023722 0ustar www-datawww-data#include "pg_query_outfuncs.h" #include "postgres.h" #include #include "access/relation.h" #include "nodes/parsenodes.h" #include "nodes/plannodes.h" #include "nodes/value.h" #include "utils/datum.h" #include "protobuf/pg_query.pb-c.h" #define OUT_TYPE(typename, typename_c) PgQuery__##typename_c* #define OUT_NODE(typename, typename_c, typename_underscore, typename_underscore_upcase, typename_cast, fldname) \ { \ PgQuery__##typename_c *__node = palloc(sizeof(PgQuery__##typename_c)); \ pg_query__##typename_underscore##__init(__node); \ _out##typename_c(__node, (const typename_cast *) obj); \ out->fldname = __node; \ out->node_case = PG_QUERY__NODE__NODE_##typename_underscore_upcase; \ } #define WRITE_INT_FIELD(outname, outname_json, fldname) out->outname = node->fldname; #define WRITE_UINT_FIELD(outname, outname_json, fldname) out->outname = node->fldname; #define WRITE_LONG_FIELD(outname, outname_json, fldname) out->outname = node->fldname; #define WRITE_FLOAT_FIELD(outname, outname_json, fldname) out->outname = node->fldname; #define WRITE_BOOL_FIELD(outname, outname_json, fldname) out->outname = node->fldname; #define WRITE_CHAR_FIELD(outname, outname_json, fldname) \ if (node->fldname != 0) { \ out->outname = palloc(sizeof(char) * 2); \ out->outname[0] = node->fldname; \ out->outname[1] = '\0'; \ } #define WRITE_STRING_FIELD(outname, outname_json, fldname) \ if (node->fldname != NULL) { \ out->outname = pstrdup(node->fldname); \ } #define WRITE_ENUM_FIELD(typename, outname, outname_json, fldname) \ out->outname = _enumToInt##typename(node->fldname); #define WRITE_LIST_FIELD(outname, outname_json, fldname) \ if (node->fldname != NULL) { \ out->n_##outname = list_length(node->fldname); \ out->outname = palloc(sizeof(PgQuery__Node*) * out->n_##outname); \ for (int i = 0; i < out->n_##outname; i++) \ { \ PgQuery__Node *__node = palloc(sizeof(PgQuery__Node)); \ pg_query__node__init(__node); \ out->outname[i] = __node; \ _outNode(out->outname[i], list_nth(node->fldname, i)); \ } \ } #define WRITE_BITMAPSET_FIELD(outname, outname_json, fldname) \ if (!bms_is_empty(node->fldname)) \ { \ int x = 0; \ int i = 0; \ out->n_##outname = bms_num_members(node->fldname); \ out->outname = palloc(sizeof(PgQuery__Node*) * out->n_##outname); \ while ((x = bms_first_member(node->fldname)) >= 0) \ out->outname[i++] = x; \ } #define WRITE_NODE_FIELD(outname, outname_json, fldname) \ { \ PgQuery__Node *__node = palloc(sizeof(PgQuery__Node)); \ pg_query__node__init(__node); \ out->outname = __node; \ _outNode(out->outname, &node->fldname); \ } #define WRITE_NODE_PTR_FIELD(outname, outname_json, fldname) \ if (node->fldname != NULL) { \ PgQuery__Node *__node = palloc(sizeof(PgQuery__Node)); \ pg_query__node__init(__node); \ out->outname = __node; \ _outNode(out->outname, node->fldname); \ } #define WRITE_SPECIFIC_NODE_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ { \ PgQuery__##typename *__node = palloc(sizeof(PgQuery__##typename)); \ pg_query__##typename_underscore##__init(__node); \ _out##typename(__node, &node->fldname); \ out->outname = __node; \ } #define WRITE_SPECIFIC_NODE_PTR_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ if (node->fldname != NULL) { \ PgQuery__##typename *__node = palloc(sizeof(PgQuery__##typename)); \ pg_query__##typename_underscore##__init(__node); \ _out##typename(__node, node->fldname); \ out->outname = __node; \ } static void _outNode(PgQuery__Node* out, const void *obj); static void _outList(PgQuery__List* out, const List *node) { const ListCell *lc; int i = 0; out->n_items = list_length(node); out->items = palloc(sizeof(PgQuery__Node*) * out->n_items); foreach(lc, node) { out->items[i] = palloc(sizeof(PgQuery__Node)); pg_query__node__init(out->items[i]); _outNode(out->items[i], lfirst(lc)); i++; } } static void _outIntList(PgQuery__IntList* out, const List *node) { const ListCell *lc; int i = 0; out->n_items = list_length(node); out->items = palloc(sizeof(PgQuery__Node*) * out->n_items); foreach(lc, node) { out->items[i] = palloc(sizeof(PgQuery__Node)); pg_query__node__init(out->items[i]); _outNode(out->items[i], lfirst(lc)); i++; } } static void _outOidList(PgQuery__OidList* out, const List *node) { const ListCell *lc; int i = 0; out->n_items = list_length(node); out->items = palloc(sizeof(PgQuery__Node*) * out->n_items); foreach(lc, node) { out->items[i] = palloc(sizeof(PgQuery__Node)); pg_query__node__init(out->items[i]); _outNode(out->items[i], lfirst(lc)); i++; } } // TODO: Add Bitmapset static void _outInteger(PgQuery__Integer* out, const 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; } pg_query-4.2.3/ext/pg_query/src_backend_nodes_list.c0000644000004100000410000006503314510636647022706 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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_cell * - list_delete_nth_cell * - list_free * - list_free_private * - list_copy_deep * - list_copy_tail * - list_truncate *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * list.c * implementation for PostgreSQL generic list package * * See comments in pg_list.h. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/nodes/list.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "nodes/pg_list.h" #include "port/pg_bitutils.h" #include "utils/memdebug.h" #include "utils/memutils.h" /* * The previous List implementation, since it used a separate palloc chunk * for each cons cell, had the property that adding or deleting list cells * did not move the storage of other existing cells in the list. Quite a * bit of existing code depended on that, by retaining ListCell pointers * across such operations on a list. There is no such guarantee in this * implementation, so instead we have debugging support that is meant to * help flush out now-broken assumptions. Defining DEBUG_LIST_MEMORY_USAGE * while building this file causes the List operations to forcibly move * all cells in a list whenever a cell is added or deleted. In combination * with MEMORY_CONTEXT_CHECKING and/or Valgrind, this can usually expose * broken code. It's a bit expensive though, as there's many more palloc * cycles and a lot more data-copying than in a default build. * * By default, we enable this when building for Valgrind. */ #ifdef USE_VALGRIND #define DEBUG_LIST_MEMORY_USAGE #endif /* Overhead for the fixed part of a List header, measured in ListCells */ #define LIST_HEADER_OVERHEAD \ ((int) ((offsetof(List, initial_elements) - 1) / sizeof(ListCell) + 1)) /* * Macros to simplify writing assertions about the type of a list; a * NIL list is considered to be an empty list of any type. */ #define IsPointerList(l) ((l) == NIL || IsA((l), List)) #define IsIntegerList(l) ((l) == NIL || IsA((l), IntList)) #define IsOidList(l) ((l) == NIL || IsA((l), OidList)) #ifdef USE_ASSERT_CHECKING /* * Check that the specified List is valid (so far as we can tell). */ static void check_list_invariants(const List *list) { if (list == NIL) return; Assert(list->length > 0); Assert(list->length <= list->max_length); Assert(list->elements != NULL); Assert(list->type == T_List || list->type == T_IntList || list->type == T_OidList); } #else #define check_list_invariants(l) ((void) 0) #endif /* USE_ASSERT_CHECKING */ /* * Return a freshly allocated List with room for at least min_size cells. * * Since empty non-NIL lists are invalid, new_list() sets the initial length * to min_size, effectively marking that number of cells as valid; the caller * is responsible for filling in their data. */ static List * new_list(NodeTag type, int min_size) { List *newlist; int max_size; Assert(min_size > 0); /* * We allocate all the requested cells, and possibly some more, as part of * the same palloc request as the List header. This is a big win for the * typical case of short fixed-length lists. It can lose if we allocate a * moderately long list and then it gets extended; we'll be wasting more * initial_elements[] space than if we'd made the header small. However, * rounding up the request as we do in the normal code path provides some * defense against small extensions. */ #ifndef DEBUG_LIST_MEMORY_USAGE /* * Normally, we set up a list with some extra cells, to allow it to grow * without a repalloc. Prefer cell counts chosen to make the total * allocation a power-of-2, since palloc would round it up to that anyway. * (That stops being true for very large allocations, but very long lists * are infrequent, so it doesn't seem worth special logic for such cases.) * * The minimum allocation is 8 ListCell units, providing either 4 or 5 * available ListCells depending on the machine's word width. Counting * palloc's overhead, this uses the same amount of space as a one-cell * list did in the old implementation, and less space for any longer list. * * We needn't worry about integer overflow; no caller passes min_size * that's more than twice the size of an existing list, so the size limits * within palloc will ensure that we don't overflow here. */ max_size = pg_nextpower2_32(Max(8, min_size + LIST_HEADER_OVERHEAD)); max_size -= LIST_HEADER_OVERHEAD; #else /* * For debugging, don't allow any extra space. This forces any cell * addition to go through enlarge_list() and thus move the existing data. */ max_size = min_size; #endif newlist = (List *) palloc(offsetof(List, initial_elements) + max_size * sizeof(ListCell)); newlist->type = type; newlist->length = min_size; newlist->max_length = max_size; newlist->elements = newlist->initial_elements; return newlist; } /* * Enlarge an existing non-NIL List to have room for at least min_size cells. * * This does *not* update list->length, as some callers would find that * inconvenient. (list->length had better be the correct number of existing * valid cells, though.) */ static void enlarge_list(List *list, int min_size) { int new_max_len; Assert(min_size > list->max_length); /* else we shouldn't be here */ #ifndef DEBUG_LIST_MEMORY_USAGE /* * As above, we prefer power-of-two total allocations; but here we need * not account for list header overhead. */ /* clamp the minimum value to 16, a semi-arbitrary small power of 2 */ new_max_len = pg_nextpower2_32(Max(16, min_size)); #else /* As above, don't allocate anything extra */ new_max_len = min_size; #endif if (list->elements == list->initial_elements) { /* * Replace original in-line allocation with a separate palloc block. * Ensure it is in the same memory context as the List header. (The * previous List implementation did not offer any guarantees about * keeping all list cells in the same context, but it seems reasonable * to create such a guarantee now.) */ list->elements = (ListCell *) MemoryContextAlloc(GetMemoryChunkContext(list), new_max_len * sizeof(ListCell)); memcpy(list->elements, list->initial_elements, list->length * sizeof(ListCell)); /* * We must not move the list header, so it's unsafe to try to reclaim * the initial_elements[] space via repalloc. In debugging builds, * however, we can clear that space and/or mark it inaccessible. * (wipe_mem includes VALGRIND_MAKE_MEM_NOACCESS.) */ #ifdef CLOBBER_FREED_MEMORY wipe_mem(list->initial_elements, list->max_length * sizeof(ListCell)); #else VALGRIND_MAKE_MEM_NOACCESS(list->initial_elements, list->max_length * sizeof(ListCell)); #endif } else { #ifndef DEBUG_LIST_MEMORY_USAGE /* Normally, let repalloc deal with enlargement */ list->elements = (ListCell *) repalloc(list->elements, new_max_len * sizeof(ListCell)); #else /* * repalloc() might enlarge the space in-place, which we don't want * for debugging purposes, so forcibly move the data somewhere else. */ ListCell *newelements; newelements = (ListCell *) MemoryContextAlloc(GetMemoryChunkContext(list), new_max_len * sizeof(ListCell)); memcpy(newelements, list->elements, list->length * sizeof(ListCell)); pfree(list->elements); list->elements = newelements; #endif } list->max_length = new_max_len; } /* * Convenience functions to construct short Lists from given values. * (These are normally invoked via the list_makeN macros.) */ List * list_make1_impl(NodeTag t, ListCell datum1) { List *list = new_list(t, 1); list->elements[0] = datum1; check_list_invariants(list); return list; } List * list_make2_impl(NodeTag t, ListCell datum1, ListCell datum2) { List *list = new_list(t, 2); list->elements[0] = datum1; list->elements[1] = datum2; check_list_invariants(list); return list; } List * list_make3_impl(NodeTag t, ListCell datum1, ListCell datum2, ListCell datum3) { List *list = new_list(t, 3); list->elements[0] = datum1; list->elements[1] = datum2; list->elements[2] = datum3; check_list_invariants(list); return list; } List * list_make4_impl(NodeTag t, ListCell datum1, ListCell datum2, ListCell datum3, ListCell datum4) { List *list = new_list(t, 4); list->elements[0] = datum1; list->elements[1] = datum2; list->elements[2] = datum3; list->elements[3] = datum4; check_list_invariants(list); return list; } /* * Make room for a new head cell in the given (non-NIL) list. * * The data in the new head cell is undefined; the caller should be * sure to fill it in */ static void new_head_cell(List *list) { /* Enlarge array if necessary */ if (list->length >= list->max_length) enlarge_list(list, list->length + 1); /* Now shove the existing data over */ memmove(&list->elements[1], &list->elements[0], list->length * sizeof(ListCell)); list->length++; } /* * Make room for a new tail cell in the given (non-NIL) list. * * The data in the new tail cell is undefined; the caller should be * sure to fill it in */ static void new_tail_cell(List *list) { /* Enlarge array if necessary */ if (list->length >= list->max_length) enlarge_list(list, list->length + 1); list->length++; } /* * Append a pointer to the list. A pointer to the modified list is * returned. Note that this function may or may not destructively * modify the list; callers should always use this function's return * value, rather than continuing to use the pointer passed as the * first argument. */ List * lappend(List *list, void *datum) { Assert(IsPointerList(list)); if (list == NIL) list = new_list(T_List, 1); else new_tail_cell(list); 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() */ /* * 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. */ /* * 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. */ List * list_delete_cell(List *list, ListCell *cell) { return list_delete_nth_cell(list, cell - list->elements); } /* * Delete the first cell in list that matches datum, if any. * Equality is determined via equal(). * * 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. */ pg_query-4.2.3/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h0000644000004100000410000000452014510636647026411 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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-2022, 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 */ pg_query-4.2.3/ext/pg_query/src_common_pg_prng.c0000644000004100000410000000633614510636647022101 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_prng_double * - xoroshiro128ss * - rotl * - pg_global_prng_state *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * Pseudo-Random Number Generator * * We use Blackman and Vigna's xoroshiro128** 1.0 algorithm * to have a small, fast PRNG suitable for generating reasonably * good-quality 64-bit data. This should not be considered * cryptographically strong, however. * * About these generators: https://prng.di.unimi.it/ * See also https://en.wikipedia.org/wiki/List_of_random_number_generators * * Copyright (c) 2021-2022, PostgreSQL Global Development Group * * src/common/pg_prng.c * *------------------------------------------------------------------------- */ #include "c.h" #include /* for ldexp() */ #include "common/pg_prng.h" #include "port/pg_bitutils.h" /* process-wide state vector */ __thread pg_prng_state pg_global_prng_state; /* * 64-bit rotate left */ static inline uint64 rotl(uint64 x, int bits) { return (x << bits) | (x >> (64 - bits)); } /* * The basic xoroshiro128** algorithm. * Generates and returns a 64-bit uniformly distributed number, * updating the state vector for next time. * * Note: the state vector must not be all-zeroes, as that is a fixed point. */ static uint64 xoroshiro128ss(pg_prng_state *state) { uint64 s0 = state->s0, sx = state->s1 ^ s0, val = rotl(s0 * 5, 7) * 9; /* update state */ state->s0 = rotl(s0, 24) ^ sx ^ (sx << 16); state->s1 = rotl(sx, 37); return val; } /* * We use this generator just to fill the xoroshiro128** state vector * from a 64-bit seed. */ /* * Initialize the PRNG state from a 64-bit integer, * taking care that we don't produce all-zeroes. */ /* * Initialize the PRNG state from a double in the range [-1.0, 1.0], * taking care that we don't produce all-zeroes. */ /* * Validate a PRNG seed value. */ /* * Select a random uint64 uniformly from the range [0, PG_UINT64_MAX]. */ /* * Select a random uint64 uniformly from the range [rmin, rmax]. * If the range is empty, rmin is always produced. */ /* * Select a random int64 uniformly from the range [PG_INT64_MIN, PG_INT64_MAX]. */ /* * Select a random int64 uniformly from the range [0, PG_INT64_MAX]. */ /* * Select a random uint32 uniformly from the range [0, PG_UINT32_MAX]. */ /* * Select a random int32 uniformly from the range [PG_INT32_MIN, PG_INT32_MAX]. */ /* * Select a random int32 uniformly from the range [0, PG_INT32_MAX]. */ /* * Select a random double uniformly from the range [0.0, 1.0). * * Note: if you want a result in the range (0.0, 1.0], the standard way * to get that is "1.0 - pg_prng_double(state)". */ double pg_prng_double(pg_prng_state *state) { uint64 v = xoroshiro128ss(state); /* * As above, assume there's 52 mantissa bits in a double. This result * could round to 1.0 if double's precision is less than that; but we * assume IEEE float arithmetic elsewhere in Postgres, so this seems OK. */ return ldexp((double) (v >> (64 - 52)), -52); } /* * Select a random boolean value. */ pg_query-4.2.3/ext/pg_query/src_backend_commands_define.c0000644000004100000410000000526414510636647023656 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - defGetInt32 *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * define.c * Support routines for various kinds of object creation. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/commands/define.c * * DESCRIPTION * The "DefineFoo" routines take the parse tree and pick out the * appropriate arguments/flags, passing the results to the * corresponding "FooDefine" routines (in src/catalog) that do * the actual catalog-munging. These routines also verify permission * of the user to execute the command. * * NOTES * These things must be defined and committed in the following order: * "create function": * input/output, recv/send procedures * "create type": * type * "create operator": * operators * * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include "catalog/namespace.h" #include "commands/defrem.h" #include "nodes/makefuncs.h" #include "parser/parse_type.h" #include "parser/scansup.h" #include "utils/builtins.h" /* * Extract a string value (otherwise uninterpreted) from a DefElem. */ /* * Extract a numeric value (actually double) from a DefElem. */ /* * Extract a boolean value from a DefElem. */ /* * Extract an int32 value from a DefElem. */ int32 defGetInt32(DefElem *def) { if (def->arg == NULL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("%s requires an integer value", def->defname))); switch (nodeTag(def->arg)) { case T_Integer: return (int32) intVal(def->arg); default: ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("%s requires an integer value", def->defname))); } return 0; /* keep compiler quiet */ } /* * Extract an int64 value from a DefElem. */ /* * Extract 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. */ pg_query-4.2.3/ext/pg_query/src_backend_catalog_namespace.c0000644000004100000410000010157314510636647024171 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/backend/catalog/namespace.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "access/htup_details.h" #include "access/parallel.h" #include "access/xact.h" #include "access/xlog.h" #include "catalog/dependency.h" #include "catalog/objectaccess.h" #include "catalog/pg_authid.h" #include "catalog/pg_collation.h" #include "catalog/pg_conversion.h" #include "catalog/pg_namespace.h" #include "catalog/pg_opclass.h" #include "catalog/pg_operator.h" #include "catalog/pg_opfamily.h" #include "catalog/pg_proc.h" #include "catalog/pg_statistic_ext.h" #include "catalog/pg_ts_config.h" #include "catalog/pg_ts_dict.h" #include "catalog/pg_ts_parser.h" #include "catalog/pg_ts_template.h" #include "catalog/pg_type.h" #include "commands/dbcommands.h" #include "funcapi.h" #include "mb/pg_wchar.h" #include "miscadmin.h" #include "nodes/makefuncs.h" #include "parser/parse_func.h" #include "storage/ipc.h" #include "storage/lmgr.h" #include "storage/sinvaladt.h" #include "utils/acl.h" #include "utils/builtins.h" #include "utils/catcache.h" #include "utils/guc.h" #include "utils/inval.h" #include "utils/lsyscache.h" #include "utils/memutils.h" #include "utils/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. (The only time this doesn't happen is * when we are obeying an override search path spec that says not to use the * temp namespace, or the temp namespace is included in the explicit list.) * * 2. The system catalog namespace is always searched. If the system * namespace is present in the explicit path then it will be searched in * the specified order; otherwise it will be searched after TEMP tables and * *before* the explicit list. (It might seem that the system namespace * should be implicitly last, but this behavior appears to be required by * SQL99. Also, this provides a way to search the system namespace first * without thereby making it the default creation target namespace.) * * For security reasons, searches using the search path will ignore the temp * namespace when searching for any object type other than relations and * types. (We must allow types since temp tables have rowtypes.) * * The default creation target namespace is always the first element of the * explicit list. If the explicit list is empty, there is no default target. * * The textual specification of search_path can include "$user" to refer to * the namespace named the same as the current user, if any. (This is just * ignored if there is no such namespace.) Also, it can include "pg_temp" * to refer to the current backend's temp namespace. This is usually also * ignorable if the temp namespace hasn't been set up, but there's a special * case: if "pg_temp" appears first then it should be the default creation * target. We kluge this case a little bit so that the temp namespace isn't * set up until the first attempt to create something in it. (The reason for * klugery is that we can't create the temp namespace outside a transaction, * but initial GUC processing of search_path happens outside a transaction.) * activeTempCreationPending is true if "pg_temp" appears first in the string * but is not reflected in activeCreationNamespace because the namespace isn't * set up yet. * * In bootstrap mode, the search path is set equal to "pg_catalog", so that * the system namespace is the only one searched or inserted into. * initdb is also careful to set search_path to "pg_catalog" for its * post-bootstrap standalone backend runs. Otherwise the default search * path is determined by GUC. The factory default path contains the PUBLIC * namespace (if it exists), preceded by the user's personal namespace * (if one exists). * * We support a stack of "override" search path settings for use within * specific sections of backend code. namespace_search_path is ignored * whenever the override stack is nonempty. activeSearchPath is always * the actually active path; it points either to the search list of the * topmost stack entry, or to baseSearchPath which is the list derived * from namespace_search_path. * * If baseSearchPathValid is false, then baseSearchPath (and other * derived variables) need to be recomputed from namespace_search_path. * We mark it invalid upon an assignment to namespace_search_path or receipt * of a syscache invalidation event for pg_namespace. The recomputation * is done during the next non-overridden lookup attempt. Note that an * override spec is never subject to recomputation. * * Any namespaces mentioned in namespace_search_path that are not readable * by the current user ID are simply left out of baseSearchPath; so * we have to be willing to recompute the path when current userid changes. * namespaceUser is the userid the path has been computed for. * * Note: all data pointed to by these List variables is in TopMemoryContext. * * activePathGeneration is incremented whenever the effective values of * activeSearchPath/activeCreationNamespace/activeTempCreationPending change. * This can be used to quickly detect whether any change has happened since * a previous examination of the search path state. */ /* These variables define the actually active state: */ /* default place to create stuff; if InvalidOid, no default */ /* if true, activeCreationNamespace is wrong, it should be temp namespace */ /* current generation counter; make sure this is never zero */ /* These variables are the values last derived from namespace_search_path: */ /* The above four values are valid only if baseSearchPathValid */ /* Override requests are remembered in a stack of OverrideStackEntry structs */ typedef struct { List *searchPath; /* the desired search path */ Oid creationNamespace; /* the desired creation namespace */ int nestLevel; /* subtransaction nesting level */ } OverrideStackEntry; /* * myTempNamespace is InvalidOid until and unless a TEMP namespace is set up * in a particular backend session (this happens when a CREATE TEMP TABLE * command is first executed). Thereafter it's the OID of the temp namespace. * * myTempToastNamespace is the OID of the namespace for my temp tables' toast * tables. It is set when myTempNamespace is, and is InvalidOid before that. * * myTempNamespaceSubID shows whether we've created the TEMP namespace in the * current subtransaction. The flag propagates up the subtransaction tree, * so the main transaction will correctly recognize the flag if all * intermediate subtransactions commit. When it is InvalidSubTransactionId, * we either haven't made the TEMP namespace yet, or have successfully * committed its creation, depending on whether myTempNamespace is valid. */ /* * This is the user's textual search path specification --- it's the value * of the GUC variable 'search_path'. */ /* Local functions */ static void recomputeNamespacePath(void); static void AccessTempTableNamespace(bool force); static void InitTempTableNamespace(void); static void RemoveTempRelations(Oid tempNamespaceId); static void RemoveTempRelationsCallback(int code, Datum arg); static void NamespaceCallback(Datum arg, int cacheid, uint32 hashvalue); static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames, bool include_out_arguments, int pronargs, int **argnumbers); /* * RangeVarGetRelidExtended * Given a RangeVar describing an existing relation, * select the proper namespace and look up the relation OID. * * If the schema or relation is not found, return InvalidOid if flags contains * RVR_MISSING_OK, otherwise raise an error. * * If flags contains RVR_NOWAIT, throw an error if we'd have to wait for a * lock. * * If flags contains RVR_SKIP_LOCKED, return InvalidOid if we'd have to wait * for a lock. * * flags cannot contain both RVR_NOWAIT and RVR_SKIP_LOCKED. * * Note that if RVR_MISSING_OK and RVR_SKIP_LOCKED are both specified, a * return value of InvalidOid could either mean the relation is missing or it * could not be locked. * * Callback allows caller to check permissions or acquire additional locks * prior to grabbing the relation lock. */ /* * RangeVarGetCreationNamespace * Given a RangeVar describing a to-be-created relation, * choose which namespace to create it in. * * Note: calling this may result in a CommandCounterIncrement operation. * That will happen on the first request for a temp table in any particular * backend run; we will need to either create or clean out the temp schema. */ /* * RangeVarGetAndCheckCreationNamespace * * This function returns the OID of the namespace in which a new relation * with a given name should be created. If the user does not have CREATE * permission on the target namespace, this function will instead signal * an ERROR. * * If non-NULL, *existing_relation_id is set to the OID of any existing relation * with the same name which already exists in that namespace, or to InvalidOid * if no such relation exists. * * If lockmode != NoLock, the specified lock mode is acquired on the existing * relation, if any, provided that the current user owns the target relation. * However, if lockmode != NoLock and the user does not own the target * relation, we throw an ERROR, as we must not try to lock relations the * user does not have permissions on. * * As a side effect, this function acquires AccessShareLock on the target * namespace. Without this, the namespace could be dropped before our * transaction commits, leaving behind relations with relnamespace pointing * to a no-longer-existent namespace. * * As a further side-effect, if the selected namespace is a temporary namespace, * we mark the RangeVar as RELPERSISTENCE_TEMP. */ /* * Adjust the relpersistence for an about-to-be-created relation based on the * creation namespace, and throw an error for invalid combinations. */ /* * RelnameGetRelid * Try to resolve an unqualified relation name. * Returns OID if relation found in search path, else InvalidOid. */ /* * RelationIsVisible * Determine whether a relation (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified relation name". */ /* * TypenameGetTypid * Wrapper for binary compatibility. */ /* * TypenameGetTypidExtended * Try to resolve an unqualified datatype name. * Returns OID if type found in search path, else InvalidOid. * * This is essentially the same as RelnameGetRelid. */ /* * TypeIsVisible * Determine whether a type (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified type name". */ /* * FuncnameGetCandidates * Given a possibly-qualified function name and argument count, * retrieve a list of the possible matches. * * If nargs is -1, we return all functions matching the given name, * regardless of argument count. (argnames must be NIL, and expand_variadic * and expand_defaults must be false, in this case.) * * If argnames isn't NIL, we are considering a named- or mixed-notation call, * and only functions having all the listed argument names will be returned. * (We assume that length(argnames) <= nargs and all the passed-in names are * distinct.) The returned structs will include an argnumbers array showing * the actual argument index for each logical argument position. * * If expand_variadic is true, then variadic functions having the same number * or fewer arguments will be retrieved, with the variadic argument and any * additional argument positions filled with the variadic element type. * nvargs in the returned struct is set to the number of such arguments. * If expand_variadic is false, variadic arguments are not treated specially, * and the returned nvargs will always be zero. * * If expand_defaults is true, functions that could match after insertion of * default argument values will also be retrieved. In this case the returned * structs could have nargs > passed-in nargs, and ndargs is set to the number * of additional args (which can be retrieved from the function's * proargdefaults entry). * * 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". */ /* * 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". */ /* * OpclassnameGetOpcid * Try to resolve an unqualified index opclass name. * Returns OID if opclass found in search path, else InvalidOid. * * This is essentially the same as TypenameGetTypid, but we have to have * an extra argument for the index AM OID. */ /* * OpclassIsVisible * Determine whether an opclass (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified opclass name". */ /* * OpfamilynameGetOpfid * Try to resolve an unqualified index opfamily name. * Returns OID if opfamily found in search path, else InvalidOid. * * This is essentially the same as TypenameGetTypid, but we have to have * an extra argument for the index AM OID. */ /* * OpfamilyIsVisible * Determine whether an opfamily (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified opfamily name". */ /* * lookup_collation * If there's a collation of the given name/namespace, and it works * with the given encoding, return its OID. Else return InvalidOid. */ /* * CollationGetCollid * Try to resolve an unqualified collation name. * Returns OID if collation found in search path, else InvalidOid. * * Note that this will only find collations that work with the current * database's encoding. */ /* * CollationIsVisible * Determine whether a collation (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified collation name". * * Note that only collations that work with the current database's encoding * will be considered visible. */ /* * ConversionGetConid * Try to resolve an unqualified conversion name. * Returns OID if conversion found in search path, else InvalidOid. * * This is essentially the same as RelnameGetRelid. */ /* * ConversionIsVisible * Determine whether a conversion (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified conversion name". */ /* * get_statistics_object_oid - find a statistics object by possibly qualified name * * If not found, returns InvalidOid if missing_ok, else throws error */ /* * StatisticsObjIsVisible * Determine whether a statistics object (identified by OID) is visible in * the current search path. Visible means "would be found by searching * for the unqualified statistics object name". */ /* * get_ts_parser_oid - find a TS parser by possibly qualified name * * If not found, returns InvalidOid if missing_ok, else throws error */ /* * TSParserIsVisible * Determine whether a parser (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified parser name". */ /* * get_ts_dict_oid - find a TS dictionary by possibly qualified name * * If not found, returns InvalidOid if missing_ok, else throws error */ /* * TSDictionaryIsVisible * Determine whether a dictionary (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified dictionary name". */ /* * get_ts_template_oid - find a TS template by possibly qualified name * * If not found, returns InvalidOid if missing_ok, else throws error */ /* * TSTemplateIsVisible * Determine whether a template (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified template name". */ /* * get_ts_config_oid - find a TS config by possibly qualified name * * If not found, returns InvalidOid if missing_ok, else throws error */ /* * TSConfigIsVisible * Determine whether a text search configuration (identified by OID) * is visible in the current search path. Visible means "would be found * by searching for the unqualified text search configuration name". */ /* * DeconstructQualifiedName * Given a possibly-qualified name expressed as a list of String nodes, * extract the schema name and object name. * * *nspname_p is set to NULL if there is no explicit schema name. */ /* * LookupNamespaceNoError * Look up a schema name. * * Returns the namespace OID, or InvalidOid if not found. * * Note this does NOT perform any permissions check --- callers are * responsible for being sure that an appropriate check is made. * In the majority of cases LookupExplicitNamespace is preferable. */ /* * LookupExplicitNamespace * Process an explicitly-specified schema name: look up the schema * and verify we have USAGE (lookup) rights in it. * * Returns the namespace OID */ /* * LookupCreationNamespace * Look up the schema and verify we have CREATE rights on it. * * This is just like LookupExplicitNamespace except for the different * permission check, and that we are willing to create pg_temp if needed. * * Note: calling this may result in a CommandCounterIncrement operation, * if we have to create or clean out the temp namespace. */ /* * Common checks on switching namespaces. * * We complain if either the old or new namespaces is a temporary schema * (or temporary toast schema), or if either the old or new namespaces is the * TOAST schema. */ /* * QualifiedNameGetCreationNamespace * Given a possibly-qualified name for an object (in List-of-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(List *names) { StringInfoData string; ListCell *l; initStringInfo(&string); foreach(l, names) { Node *name = (Node *) lfirst(l); if (l != list_head(names)) appendStringInfoChar(&string, '.'); if (IsA(name, String)) appendStringInfoString(&string, strVal(name)); else if (IsA(name, A_Star)) appendStringInfoChar(&string, '*'); else elog(ERROR, "unexpected node type in name list: %d", (int) nodeTag(name)); } return string.data; } /* * NameListToQuotedString * Utility routine to convert a qualified-name list into a string. * * Same as above except that names will be double-quoted where necessary, * so the string could be re-parsed (eg, by textToQualifiedNameList). */ /* * isTempNamespace - is the given namespace my temporary-table namespace? */ /* * isTempToastNamespace - is the given namespace my temporary-toast-table * namespace? */ /* * isTempOrTempToastNamespace - is the given namespace my temporary-table * namespace or my temporary-toast-table namespace? */ /* * isAnyTempNamespace - is the given namespace a temporary-table namespace * (either my own, or another backend's)? Temporary-toast-table namespaces * are included, too. */ /* * isOtherTempNamespace - is the given namespace some other backend's * temporary-table namespace (including temporary-toast-table namespaces)? * * Note: for most purposes in the C code, this function is obsolete. Use * RELATION_IS_OTHER_TEMP() instead to detect non-local temp relations. */ /* * checkTempNamespaceStatus - is the given namespace owned and actively used * by a backend? * * Note: this can be used while scanning relations in pg_class to detect * orphaned temporary tables or namespaces with a backend connected to a * given database. The result may be out of date quickly, so the caller * must be careful how to handle this information. */ /* * GetTempNamespaceBackendId - if the given namespace is a temporary-table * namespace (either my own, or another backend's), return the BackendId * that owns it. Temporary-toast-table namespaces are included, too. * If it isn't a temp namespace, return InvalidBackendId. */ /* * GetTempToastNamespace - get the OID of my temporary-toast-table namespace, * which must already be assigned. (This is only used when creating a toast * table for a temp table, so we must have already done InitTempTableNamespace) */ /* * GetTempNamespaceState - fetch status of session's temporary namespace * * This is used for conveying state to a parallel worker, and is not meant * for general-purpose access. */ /* * SetTempNamespaceState - set status of session's temporary namespace * * This is used for conveying state to a parallel worker, and is not meant for * general-purpose access. By transferring these namespace OIDs to workers, * we ensure they will have the same notion of the search path as their leader * does. */ /* * GetOverrideSearchPath - fetch current search path definition in form * used by PushOverrideSearchPath. * * The result structure is allocated in the specified memory context * (which might or might not be equal to CurrentMemoryContext); but any * junk created by revalidation calculations will be in CurrentMemoryContext. */ /* * CopyOverrideSearchPath - copy the specified OverrideSearchPath. * * The result structure is allocated in CurrentMemoryContext. */ /* * OverrideSearchPathMatchesCurrent - does path match current setting? * * This is tested over and over in some common code paths, and in the typical * scenario where the active search path seldom changes, it'll always succeed. * We make that case fast by keeping a generation counter that is advanced * whenever the active search path changes. */ /* * PushOverrideSearchPath - temporarily override the search path * * We allow nested overrides, hence the push/pop terminology. The GUC * search_path variable is ignored while an override is active. * * It's possible that newpath->useTemp is set but there is no longer any * active temp namespace, if the path was saved during a transaction that * created a temp namespace and was later rolled back. In that case we just * ignore useTemp. A plausible alternative would be to create a new temp * namespace, but for existing callers that's not necessary because an empty * temp namespace wouldn't affect their results anyway. * * It's also worth noting that other schemas listed in newpath might not * exist anymore either. We don't worry about this because OIDs that match * no existing namespace will simply not produce any hits during searches. */ /* * PopOverrideSearchPath - undo a previous PushOverrideSearchPath * * Any push during a (sub)transaction will be popped automatically at abort. * But it's caller error if a push isn't popped in normal control flow. */ /* * get_collation_oid - find a collation by possibly qualified name * * Note that this will only find collations that work with the current * database's encoding. */ Oid get_collation_oid(List *name, bool missing_ok) { return -1; } /* * get_conversion_oid - find a conversion by possibly qualified name */ /* * FindDefaultConversionProc - find default encoding conversion proc */ /* * recomputeNamespacePath - recompute path derived variables if needed. */ /* * AccessTempTableNamespace * Provide access to a temporary namespace, potentially creating it * if not present yet. This routine registers if the namespace gets * in use in this transaction. 'force' can be set to true to allow * the caller to enforce the creation of the temporary namespace for * use in this backend, which happens if its creation is pending. */ /* * InitTempTableNamespace * Initialize temp table namespace on first use in a particular backend */ /* * End-of-transaction cleanup for namespaces. */ /* * AtEOSubXact_Namespace * * At subtransaction commit, propagate the temp-namespace-creation * flag to the parent subtransaction. * * At subtransaction abort, forget the flag if we set it up. */ /* * Remove all relations in the specified temp namespace. * * This is called at backend shutdown (if we made any temp relations). * It is also called when we begin using a pre-existing temp namespace, * in order to clean out any relations that might have been created by * a crashed backend. */ /* * Callback to remove temp relations at backend exit. */ /* * Remove all temp tables from the temporary namespace. */ /* * Routines for handling the GUC variable 'search_path'. */ /* check_hook: validate new search_path value */ /* assign_hook: do extra actions as needed */ /* * InitializeSearchPath: initialize module during InitPostgres. * * This is called after we are up enough to be able to do catalog lookups. */ /* * NamespaceCallback * Syscache inval callback function */ /* * Fetch the active search path. The return value is a palloc'ed list * of OIDs; the caller is responsible for freeing this storage as * appropriate. * * The returned list includes the implicitly-prepended namespaces only if * includeImplicit is true. * * Note: calling this may result in a CommandCounterIncrement operation, * if we have to create or clean out the temp namespace. */ /* * Fetch the active search path into a caller-allocated array of OIDs. * Returns the number of path entries. (If this is more than sarray_len, * then the data didn't fit and is not all stored.) * * The returned list always includes the implicitly-prepended namespaces, * but never includes the temp namespace. (This is suitable for existing * users, which would want to ignore the temp namespace anyway.) This * definition allows us to not worry about initializing the temp namespace. */ /* * Export the FooIsVisible functions as SQL-callable functions. * * Note: as of Postgres 8.4, these will silently return NULL if called on * a nonexistent object OID, rather than failing. This is to avoid race * condition errors when a query that's scanning a catalog using an MVCC * snapshot uses one of these functions. The underlying IsVisible functions * always use an up-to-date snapshot and so might see the object as already * gone when it's still visible to the transaction snapshot. (There is no race * condition in the current coding because we don't accept sinval messages * between the SearchSysCacheExists test and the subsequent lookup.) */ pg_query-4.2.3/ext/pg_query/src_pl_plpgsql_src_pl_comp.c0000644000004100000410000007477114510636647023642 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - plpgsql_compile_inline * - plpgsql_error_funcname * - plpgsql_check_syntax * - plpgsql_curr_compile * - plpgsql_compile_tmp_cxt * - plpgsql_DumpExecTree * - plpgsql_start_datums * - plpgsql_nDatums * - plpgsql_Datums * - datums_alloc * - datums_last * - plpgsql_build_variable * - plpgsql_adddatum * - plpgsql_build_record * - plpgsql_build_datatype * - plpgsql_parse_tripword * - plpgsql_build_recfield * - plpgsql_parse_dblword * - plpgsql_parse_word * - plpgsql_add_initdatums * - plpgsql_recognize_err_condition * - exception_label_map * - plpgsql_parse_err_condition * - plpgsql_parse_wordtype * - plpgsql_parse_wordrowtype * - plpgsql_parse_cwordtype * - plpgsql_parse_cwordrowtype * - plpgsql_parse_result * - plpgsql_finish_datums * - plpgsql_compile_error_callback * - add_dummy_return *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pl_comp.c - Compiler part of the PL/pgSQL * procedural language * * Portions Copyright (c) 1996-2022, 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 can be * a variable name or a basetype. * * Returns datatype struct, or NULL if no match found for word. * ---------- */ PLpgSQL_type * plpgsql_parse_wordtype(char *ident) { return NULL; } /* ---------- * plpgsql_parse_cwordtype Same lookup for compositeword%TYPE * ---------- */ PLpgSQL_type * plpgsql_parse_cwordtype(List *idents) { return NULL; } /* ---------- * plpgsql_parse_wordrowtype Scanner found word%ROWTYPE. * So word must be a table name. * ---------- */ PLpgSQL_type * plpgsql_parse_wordrowtype(char *ident) { return NULL; } /* ---------- * plpgsql_parse_cwordrowtype Scanner found compositeword%ROWTYPE. * So word must be a namespace qualified table name. * ---------- */ PLpgSQL_type * plpgsql_parse_cwordrowtype(List *idents) { return NULL; } /* * plpgsql_build_variable - build a datum-array entry of a given * datatype * * The returned struct may be a PLpgSQL_var or PLpgSQL_rec * depending on the given datatype, and is allocated via * palloc. The struct is automatically added to the current datum * array, and optionally to the current namespace. */ PLpgSQL_variable * plpgsql_build_variable(const char *refname, int lineno, PLpgSQL_type *dtype, bool add2namespace) { PLpgSQL_variable *result; switch (dtype->ttype) { case PLPGSQL_TTYPE_SCALAR: { /* Ordinary scalar datatype */ PLpgSQL_var *var; var = palloc0(sizeof(PLpgSQL_var)); var->dtype = PLPGSQL_DTYPE_VAR; var->refname = pstrdup(refname); var->lineno = lineno; var->datatype = dtype; /* other fields are left as 0, might be changed by caller */ /* preset to NULL */ var->value = 0; var->isnull = true; var->freeval = false; plpgsql_adddatum((PLpgSQL_datum *) var); if (add2namespace) plpgsql_ns_additem(PLPGSQL_NSTYPE_VAR, var->dno, refname); result = (PLpgSQL_variable *) var; break; } case PLPGSQL_TTYPE_REC: { /* Composite type -- build a record variable */ PLpgSQL_rec *rec; rec = plpgsql_build_record(refname, lineno, dtype, dtype->typoid, add2namespace); result = (PLpgSQL_variable *) rec; break; } case PLPGSQL_TTYPE_PSEUDO: ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("variable \"%s\" has pseudo-type %s", refname, format_type_be(dtype->typoid)))); result = NULL; /* keep compiler quiet */ break; default: elog(ERROR, "unrecognized ttype: %d", dtype->ttype); result = NULL; /* keep compiler quiet */ break; } return result; } /* * Build empty named record variable, and optionally add it to namespace */ PLpgSQL_rec * plpgsql_build_record(const char *refname, int lineno, PLpgSQL_type *dtype, Oid rectypeid, bool add2namespace) { PLpgSQL_rec *rec; rec = palloc0(sizeof(PLpgSQL_rec)); rec->dtype = PLPGSQL_DTYPE_REC; rec->refname = pstrdup(refname); rec->lineno = lineno; /* other fields are left as 0, might be changed by caller */ rec->datatype = dtype; rec->rectypeid = rectypeid; rec->firstfield = -1; rec->erh = NULL; plpgsql_adddatum((PLpgSQL_datum *) rec); if (add2namespace) plpgsql_ns_additem(PLPGSQL_NSTYPE_REC, rec->dno, rec->refname); return rec; } /* * Build a row-variable data structure given the component variables. * Include a rowtupdesc, since we will need to materialize the row result. */ /* * Build a RECFIELD datum for the named field of the specified record variable * * If there's already such a datum, just return it; we don't need duplicates. */ PLpgSQL_recfield * plpgsql_build_recfield(PLpgSQL_rec *rec, const char *fldname) { PLpgSQL_recfield *recfield; int i; /* search for an existing datum referencing this field */ i = rec->firstfield; while (i >= 0) { PLpgSQL_recfield *fld = (PLpgSQL_recfield *) plpgsql_Datums[i]; Assert(fld->dtype == PLPGSQL_DTYPE_RECFIELD && fld->recparentno == rec->dno); if (strcmp(fld->fieldname, fldname) == 0) return fld; i = fld->nextfield; } /* nope, so make a new one */ recfield = palloc0(sizeof(PLpgSQL_recfield)); recfield->dtype = PLPGSQL_DTYPE_RECFIELD; recfield->fieldname = pstrdup(fldname); recfield->recparentno = rec->dno; recfield->rectupledescid = INVALID_TUPLEDESC_IDENTIFIER; plpgsql_adddatum((PLpgSQL_datum *) recfield); /* now we can link it into the parent's chain */ recfield->nextfield = rec->firstfield; rec->firstfield = recfield->dno; return recfield; } /* * plpgsql_build_datatype * Build PLpgSQL_type struct given type OID, typmod, collation, * and type's parsed name. * * If collation is not InvalidOid then it overrides the type's default * collation. But collation is ignored if the datatype is non-collatable. * * origtypname is the parsed form of what the user wrote as the type name. * It can be NULL if the type could not be a composite type, or if it was * identified by OID to begin with (e.g., it's a function argument type). */ PLpgSQL_type * plpgsql_build_datatype(Oid typeOid, int32 typmod, Oid collation, TypeName *origtypname) { PLpgSQL_type *typ; typ = (PLpgSQL_type *) palloc0(sizeof(PLpgSQL_type)); typ->typname = pstrdup("UNKNOWN"); typ->ttype = PLPGSQL_TTYPE_SCALAR; return typ; } /* * Utility subroutine to make a PLpgSQL_type struct given a pg_type entry * and additional details (see comments for plpgsql_build_datatype). */ /* * plpgsql_recognize_err_condition * Check condition name and translate it to SQLSTATE. * * Note: there are some cases where the same condition name has multiple * entries in the table. We arbitrarily return the first match. */ int plpgsql_recognize_err_condition(const char *condname, bool allow_sqlstate) { int i; if (allow_sqlstate) { if (strlen(condname) == 5 && strspn(condname, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ") == 5) return MAKE_SQLSTATE(condname[0], condname[1], condname[2], condname[3], condname[4]); } for (i = 0; exception_label_map[i].label != NULL; i++) { if (strcmp(condname, exception_label_map[i].label) == 0) return exception_label_map[i].sqlerrstate; } ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("unrecognized exception condition \"%s\"", condname))); return 0; /* keep compiler quiet */ } /* * plpgsql_parse_err_condition * Generate PLpgSQL_condition entry(s) for an exception condition name * * This has to be able to return a list because there are some duplicate * names in the table of error code names. */ PLpgSQL_condition * plpgsql_parse_err_condition(char *condname) { int i; PLpgSQL_condition *new; PLpgSQL_condition *prev; /* * XXX Eventually we will want to look for user-defined exception names * here. */ /* * OTHERS is represented as code 0 (which would map to '00000', but we * have no need to represent that as an exception condition). */ if (strcmp(condname, "others") == 0) { new = palloc(sizeof(PLpgSQL_condition)); new->sqlerrstate = 0; new->condname = condname; new->next = NULL; return new; } prev = NULL; for (i = 0; exception_label_map[i].label != NULL; i++) { if (strcmp(condname, exception_label_map[i].label) == 0) { new = palloc(sizeof(PLpgSQL_condition)); new->sqlerrstate = exception_label_map[i].sqlerrstate; new->condname = condname; new->next = prev; prev = new; } } if (!prev) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("unrecognized exception condition \"%s\"", condname))); return prev; } /* ---------- * plpgsql_start_datums Initialize datum list at compile startup. * ---------- */ void plpgsql_start_datums(void) { datums_alloc = 128; plpgsql_nDatums = 0; /* This is short-lived, so needn't allocate in function's cxt */ plpgsql_Datums = MemoryContextAlloc(plpgsql_compile_tmp_cxt, sizeof(PLpgSQL_datum *) * datums_alloc); /* datums_last tracks what's been seen by plpgsql_add_initdatums() */ datums_last = 0; } /* ---------- * plpgsql_adddatum Add a variable, record or row * to the compiler's datum list. * ---------- */ void plpgsql_adddatum(PLpgSQL_datum *newdatum) { if (plpgsql_nDatums == datums_alloc) { datums_alloc *= 2; plpgsql_Datums = repalloc(plpgsql_Datums, sizeof(PLpgSQL_datum *) * datums_alloc); } newdatum->dno = plpgsql_nDatums; plpgsql_Datums[plpgsql_nDatums++] = newdatum; } /* ---------- * plpgsql_finish_datums Copy completed datum info into function struct. * ---------- */ void plpgsql_finish_datums(PLpgSQL_function *function) { Size copiable_size = 0; int i; function->ndatums = plpgsql_nDatums; function->datums = palloc(sizeof(PLpgSQL_datum *) * plpgsql_nDatums); for (i = 0; i < plpgsql_nDatums; i++) { function->datums[i] = plpgsql_Datums[i]; /* This must agree with copy_plpgsql_datums on what is copiable */ switch (function->datums[i]->dtype) { case PLPGSQL_DTYPE_VAR: case PLPGSQL_DTYPE_PROMISE: copiable_size += MAXALIGN(sizeof(PLpgSQL_var)); break; case PLPGSQL_DTYPE_REC: copiable_size += MAXALIGN(sizeof(PLpgSQL_rec)); break; default: break; } } function->copiable_size = copiable_size; } /* ---------- * plpgsql_add_initdatums Make an array of the datum numbers of * all the initializable datums created since the last call * to this function. * * If varnos is NULL, we just forget any datum entries created since the * last call. * * This is used around a DECLARE section to create a list of the datums * that have to be initialized at block entry. Note that datums can also * be created elsewhere than DECLARE, eg by a FOR-loop, but it is then * the responsibility of special-purpose code to initialize them. * ---------- */ int plpgsql_add_initdatums(int **varnos) { int i; int n = 0; /* * The set of dtypes recognized here must match what exec_stmt_block() * cares about (re)initializing at block entry. */ for (i = datums_last; i < plpgsql_nDatums; i++) { switch (plpgsql_Datums[i]->dtype) { case PLPGSQL_DTYPE_VAR: case PLPGSQL_DTYPE_REC: n++; break; default: break; } } if (varnos != NULL) { if (n > 0) { *varnos = (int *) palloc(sizeof(int) * n); n = 0; for (i = datums_last; i < plpgsql_nDatums; i++) { switch (plpgsql_Datums[i]->dtype) { case PLPGSQL_DTYPE_VAR: case PLPGSQL_DTYPE_REC: (*varnos)[n++] = plpgsql_Datums[i]->dno; default: break; } } } else *varnos = NULL; } datums_last = plpgsql_nDatums; return n; } /* * Compute the hashkey for a given function invocation * * The hashkey is returned into the caller-provided storage at *hashkey. */ /* * This is the same as the standard resolve_polymorphic_argtypes() function, * 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() */ pg_query-4.2.3/ext/pg_query/src_backend_storage_ipc_ipc.c0000644000004100000410000001362314510636647023673 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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-2022, 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. * ---------------------------------------------------------------- */ pg_query-4.2.3/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c0000644000004100000410000004426414510636647024327 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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_peek2 * - plpgsql_scanner_finish * - plpgsql_latest_lineno *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pl_scanner.c * lexical scanning for PL/pgSQL * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/pl/plpgsql/src/pl_scanner.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "mb/pg_wchar.h" #include "parser/scanner.h" #include "plpgsql.h" #include "pl_gram.h" /* must be after parser/scanner.h */ /* Klugy flag to tell scanner how to look up identifiers */ __thread IdentifierLookup plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; /* * A word about keywords: * * We keep reserved and unreserved keywords in separate headers. Be careful * not to put the same word in both headers. Also be sure that pl_gram.y's * unreserved_keyword production agrees with the unreserved header. The * reserved keywords are passed to the core scanner, so they will be * recognized before (and instead of) any variable name. Unreserved words * are checked for separately, usually after determining that the identifier * isn't a known variable name. If plpgsql_IdentifierLookup is DECLARE then * no variable names will be recognized, so the unreserved words always work. * (Note in particular that this helps us avoid reserving keywords that are * only needed in DECLARE sections.) * * In certain contexts it is desirable to prefer recognizing an unreserved * keyword over recognizing a variable name. In particular, at the start * of a statement we should prefer unreserved keywords unless the statement * looks like an assignment (i.e., first token is followed by ':=' or '['). * This rule allows most statement-introducing keywords to be kept unreserved. * (We still have to reserve initial keywords that might follow a block * label, unfortunately, since the method used to determine if we are at * start of statement doesn't recognize such cases. We'd also have to * reserve any keyword that could legitimately be followed by ':=' or '['.) * Some additional cases are handled in pl_gram.y using tok_is_keyword(). * * We try to avoid reserving more keywords than we have to; but there's * little point in not reserving a word if it's reserved in the core grammar. * Currently, the following words are reserved here but not in the core: * BEGIN BY DECLARE EXECUTE FOREACH IF LOOP STRICT WHILE */ /* ScanKeywordList lookup data for PL/pgSQL keywords */ #include "pl_reserved_kwlist_d.h" #include "pl_unreserved_kwlist_d.h" /* Token codes for PL/pgSQL keywords */ #define PG_KEYWORD(kwname, value) value, static const uint16 ReservedPLKeywordTokens[] = { #include "pl_reserved_kwlist.h" }; static const uint16 UnreservedPLKeywordTokens[] = { #include "pl_unreserved_kwlist.h" }; #undef PG_KEYWORD /* * This macro must recognize all tokens that can immediately precede a * PL/pgSQL executable statement (that is, proc_sect or proc_stmt in the * grammar). Fortunately, there are not very many, so hard-coding in this * fashion seems sufficient. */ #define AT_STMT_START(prev_token) \ ((prev_token) == ';' || \ (prev_token) == K_BEGIN || \ (prev_token) == K_THEN || \ (prev_token) == K_ELSE || \ (prev_token) == K_LOOP) /* Auxiliary data about a token (other than the token type) */ typedef struct { YYSTYPE lval; /* semantic information */ YYLTYPE lloc; /* offset in scanbuf */ int leng; /* length in bytes */ } TokenAuxData; /* * Scanner working state. At some point we might wish to fold all this * into a YY_EXTRA struct. For the moment, there is no need for plpgsql's * lexer to be re-entrant, and the notational burden of passing a yyscanner * pointer around is great enough to not want to do it without need. */ /* The stuff the core lexer needs */ static __thread core_yyscan_t yyscanner = NULL; static __thread core_yy_extra_type core_yy; /* The original input string */ static __thread const char *scanorig; /* Current token's length (corresponds to plpgsql_yylval and plpgsql_yylloc) */ static __thread int plpgsql_yyleng; /* Current token's code (corresponds to plpgsql_yylval and plpgsql_yylloc) */ static __thread int plpgsql_yytoken; /* Token pushback stack */ #define MAX_PUSHBACKS 4 static __thread int num_pushbacks; static __thread int pushback_token[MAX_PUSHBACKS]; static __thread TokenAuxData pushback_auxdata[MAX_PUSHBACKS]; /* State for plpgsql_location_to_lineno() */ static __thread const char *cur_line_start; static __thread const char *cur_line_end; static __thread int cur_line_num; /* Internal functions */ static int internal_yylex(TokenAuxData *auxdata); static void push_back_token(int token, TokenAuxData *auxdata); static void location_lineno_init(void); /* * This is the yylex routine called from the PL/pgSQL grammar. * It is a wrapper around the core lexer, with the ability to recognize * PL/pgSQL variables and return them as special T_DATUM tokens. If a * word or compound word does not match any variable name, or if matching * is turned off by plpgsql_IdentifierLookup, it is returned as * T_WORD or T_CWORD respectively, or as an unreserved keyword if it * matches one of those. */ int plpgsql_yylex(void) { int tok1; TokenAuxData aux1; int kwnum; tok1 = internal_yylex(&aux1); if (tok1 == IDENT || tok1 == PARAM) { int tok2; TokenAuxData aux2; tok2 = internal_yylex(&aux2); if (tok2 == '.') { int tok3; TokenAuxData aux3; tok3 = internal_yylex(&aux3); if (tok3 == IDENT) { int tok4; TokenAuxData aux4; tok4 = internal_yylex(&aux4); if (tok4 == '.') { int tok5; TokenAuxData aux5; tok5 = internal_yylex(&aux5); if (tok5 == IDENT) { if (plpgsql_parse_tripword(aux1.lval.str, aux3.lval.str, aux5.lval.str, &aux1.lval.wdatum, &aux1.lval.cword)) tok1 = T_DATUM; else tok1 = T_CWORD; } else { /* not A.B.C, so just process A.B */ push_back_token(tok5, &aux5); push_back_token(tok4, &aux4); if (plpgsql_parse_dblword(aux1.lval.str, aux3.lval.str, &aux1.lval.wdatum, &aux1.lval.cword)) tok1 = T_DATUM; else tok1 = T_CWORD; } } else { /* not A.B.C, so just process A.B */ push_back_token(tok4, &aux4); if (plpgsql_parse_dblword(aux1.lval.str, aux3.lval.str, &aux1.lval.wdatum, &aux1.lval.cword)) tok1 = T_DATUM; else tok1 = T_CWORD; } } else { /* not A.B, so just process A */ push_back_token(tok3, &aux3); push_back_token(tok2, &aux2); if (plpgsql_parse_word(aux1.lval.str, core_yy.scanbuf + aux1.lloc, true, &aux1.lval.wdatum, &aux1.lval.word)) tok1 = T_DATUM; else if (!aux1.lval.word.quoted && (kwnum = ScanKeywordLookup(aux1.lval.word.ident, &UnreservedPLKeywords)) >= 0) { aux1.lval.keyword = GetScanKeyword(kwnum, &UnreservedPLKeywords); tok1 = UnreservedPLKeywordTokens[kwnum]; } else tok1 = T_WORD; } } else { /* not A.B, so just process A */ push_back_token(tok2, &aux2); /* * See if it matches a variable name, except in the context where * we are at start of statement and the next token isn't * assignment or '['. In that case, it couldn't validly be a * variable name, and skipping the lookup allows variable names to * be used that would conflict with plpgsql or core keywords that * introduce statements (e.g., "comment"). Without this special * logic, every statement-introducing keyword would effectively be * reserved in PL/pgSQL, which would be unpleasant. * * If it isn't a variable name, try to match against unreserved * plpgsql keywords. If not one of those either, it's T_WORD. * * Note: we must call plpgsql_parse_word even if we don't want to * do variable lookup, because it sets up aux1.lval.word for the * non-variable cases. */ if (plpgsql_parse_word(aux1.lval.str, core_yy.scanbuf + aux1.lloc, (!AT_STMT_START(plpgsql_yytoken) || (tok2 == '=' || tok2 == COLON_EQUALS || tok2 == '[')), &aux1.lval.wdatum, &aux1.lval.word)) tok1 = T_DATUM; else if (!aux1.lval.word.quoted && (kwnum = ScanKeywordLookup(aux1.lval.word.ident, &UnreservedPLKeywords)) >= 0) { aux1.lval.keyword = GetScanKeyword(kwnum, &UnreservedPLKeywords); tok1 = UnreservedPLKeywordTokens[kwnum]; } else tok1 = T_WORD; } } else { /* * Not a potential plpgsql variable name, just return the data. * * Note that we also come through here if the grammar pushed back a * T_DATUM, T_CWORD, T_WORD, or unreserved-keyword token returned by a * previous lookup cycle; thus, pushbacks do not incur extra lookup * work, since we'll never do the above code twice for the same token. * This property also makes it safe to rely on the old value of * plpgsql_yytoken in the is-this-start-of-statement test above. */ } plpgsql_yylval = aux1.lval; plpgsql_yylloc = aux1.lloc; plpgsql_yyleng = aux1.leng; plpgsql_yytoken = tok1; return tok1; } /* * Internal yylex function. This wraps the core lexer and adds one feature: * a token pushback stack. We also make a couple of trivial single-token * translations from what the core lexer does to what we want, in particular * interfacing from the core_YYSTYPE to YYSTYPE union. */ static int internal_yylex(TokenAuxData *auxdata) { int token; const char *yytext; if (num_pushbacks > 0) { num_pushbacks--; token = pushback_token[num_pushbacks]; *auxdata = pushback_auxdata[num_pushbacks]; } else { token = core_yylex(&auxdata->lval.core_yystype, &auxdata->lloc, yyscanner); /* remember the length of yytext before it gets changed */ yytext = core_yy.scanbuf + auxdata->lloc; auxdata->leng = strlen(yytext); /* Check for << >> and #, which the core considers operators */ if (token == Op) { if (strcmp(auxdata->lval.str, "<<") == 0) token = LESS_LESS; else if (strcmp(auxdata->lval.str, ">>") == 0) token = GREATER_GREATER; else if (strcmp(auxdata->lval.str, "#") == 0) token = '#'; } /* The core returns PARAM as ival, but we treat it like IDENT */ else if (token == PARAM) { auxdata->lval.str = pstrdup(yytext); } else if (token == SQL_COMMENT || token == C_COMMENT) { token = internal_yylex(auxdata); } } return token; } /* * Push back a token to be re-read by next internal_yylex() call. */ static void push_back_token(int token, TokenAuxData *auxdata) { if (num_pushbacks >= MAX_PUSHBACKS) elog(ERROR, "too many tokens pushed back"); pushback_token[num_pushbacks] = token; pushback_auxdata[num_pushbacks] = *auxdata; num_pushbacks++; } /* * Push back a single token to be re-read by next plpgsql_yylex() call. * * NOTE: this does not cause yylval or yylloc to "back up". Also, it * is not a good idea to push back a token code other than what you read. */ void plpgsql_push_back_token(int token) { TokenAuxData auxdata; auxdata.lval = plpgsql_yylval; auxdata.lloc = plpgsql_yylloc; auxdata.leng = plpgsql_yyleng; push_back_token(token, &auxdata); } /* * Tell whether a token is an unreserved keyword. * * (If it is, its lowercased form was returned as the token value, so we * do not need to offer that data here.) */ bool plpgsql_token_is_unreserved_keyword(int token) { int i; for (i = 0; i < lengthof(UnreservedPLKeywordTokens); i++) { if (UnreservedPLKeywordTokens[i] == token) return true; } return false; } /* * Append the function text starting at startlocation and extending to * (not including) endlocation onto the existing contents of "buf". */ void plpgsql_append_source_text(StringInfo buf, int startlocation, int endlocation) { Assert(startlocation <= endlocation); appendBinaryStringInfo(buf, scanorig + startlocation, endlocation - startlocation); } /* * Peek one token ahead in the input stream. Only the token code is * made available, not any of the auxiliary info such as location. * * NB: no variable or unreserved keyword lookup is performed here, they will * be returned as IDENT. Reserved keywords are resolved as usual. */ int plpgsql_peek(void) { int tok1; TokenAuxData aux1; tok1 = internal_yylex(&aux1); push_back_token(tok1, &aux1); return tok1; } /* * Peek two tokens ahead in the input stream. The first token and its * location in the query are returned in *tok1_p and *tok1_loc, second token * and its location in *tok2_p and *tok2_loc. * * NB: no variable or unreserved keyword lookup is performed here, they will * be returned as IDENT. Reserved keywords are resolved as usual. */ void plpgsql_peek2(int *tok1_p, int *tok2_p, int *tok1_loc, int *tok2_loc) { int tok1, tok2; TokenAuxData aux1, aux2; tok1 = internal_yylex(&aux1); tok2 = internal_yylex(&aux2); *tok1_p = tok1; if (tok1_loc) *tok1_loc = aux1.lloc; *tok2_p = tok2; if (tok2_loc) *tok2_loc = aux2.lloc; push_back_token(tok2, &aux2); push_back_token(tok1, &aux1); } /* * plpgsql_scanner_errposition * Report an error cursor position, if possible. * * This is expected to be used within an ereport() call. The return value * is a dummy (always 0, in fact). * * Note that this can only be used for messages emitted during initial * parsing of a plpgsql function, since it requires the scanorig string * to still be available. */ int plpgsql_scanner_errposition(int location) { int pos; if (location < 0 || scanorig == NULL) return 0; /* no-op if location is unknown */ /* Convert byte offset to character number */ pos = pg_mbstrlen_with_len(scanorig, location) + 1; /* And pass it to the ereport mechanism */ (void) internalerrposition(pos); /* Also pass the function body string */ return internalerrquery(scanorig); } /* * plpgsql_yyerror * Report a lexer or grammar error. * * The message's cursor position refers to the current token (the one * last returned by plpgsql_yylex()). * This is OK for syntax error messages from the Bison parser, because Bison * parsers report error as soon as the first unparsable token is reached. * Beware of using yyerror for other purposes, as the cursor position might * be misleading! */ void plpgsql_yyerror(const char *message) { char *yytext = core_yy.scanbuf + plpgsql_yylloc; if (*yytext == '\0') { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), /* translator: %s is typically the translation of "syntax error" */ errmsg("%s at end of input", _(message)), plpgsql_scanner_errposition(plpgsql_yylloc))); } else { /* * If we have done any lookahead then flex will have restored the * character after the end-of-token. Zap it again so that we report * only the single token here. This modifies scanbuf but we no longer * care about that. */ yytext[plpgsql_yyleng] = '\0'; ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), /* translator: first %s is typically the translation of "syntax error" */ errmsg("%s at or near \"%s\"", _(message), yytext), plpgsql_scanner_errposition(plpgsql_yylloc))); } } /* * Given a location (a byte offset in the function source text), * return a line number. * * We expect that this is typically called for a sequence of increasing * location values, so optimize accordingly by tracking the endpoints * of the "current" line. */ int plpgsql_location_to_lineno(int location) { const char *loc; if (location < 0 || scanorig == NULL) return 0; /* garbage in, garbage out */ loc = scanorig + location; /* be correct, but not fast, if input location goes backwards */ if (loc < cur_line_start) location_lineno_init(); while (cur_line_end != NULL && loc > cur_line_end) { cur_line_start = cur_line_end + 1; cur_line_num++; cur_line_end = strchr(cur_line_start, '\n'); } return cur_line_num; } /* initialize or reset the state for plpgsql_location_to_lineno */ static void location_lineno_init(void) { cur_line_start = scanorig; cur_line_num = 1; cur_line_end = strchr(cur_line_start, '\n'); } /* return the most recently computed lineno */ int plpgsql_latest_lineno(void) { return cur_line_num; } /* * Called before any actual parsing is done * * Note: the passed "str" must remain valid until plpgsql_scanner_finish(). * Although it is not fed directly to flex, we need the original string * to cite in error messages. */ void plpgsql_scanner_init(const char *str) { /* Start up the core scanner */ yyscanner = scanner_init(str, &core_yy, &ReservedPLKeywords, ReservedPLKeywordTokens); /* * scanorig points to the original string, which unlike the scanner's * scanbuf won't be modified on-the-fly by flex. Notice that although * yytext points into scanbuf, we rely on being able to apply locations * (offsets from string start) to scanorig as well. */ scanorig = str; /* Other setup */ plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; plpgsql_yytoken = 0; num_pushbacks = 0; location_lineno_init(); } /* * Called after parsing is done to clean up after plpgsql_scanner_init() */ void plpgsql_scanner_finish(void) { /* release storage */ scanner_finish(yyscanner); /* avoid leaving any dangling pointers */ yyscanner = NULL; scanorig = NULL; } pg_query-4.2.3/ext/pg_query/src_common_hashfn.c0000644000004100000410000002734214510636647021714 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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-2022, 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) */ pg_query-4.2.3/ext/pg_query/src_port_pg_bitutils.c0000644000004100000410000001243314510636647022461 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_popcount64 * - pg_popcount64_slow *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pg_bitutils.c * Miscellaneous functions for bit-wise operations. * * Copyright (c) 2019-2022, PostgreSQL Global Development Group * * IDENTIFICATION * src/port/pg_bitutils.c * *------------------------------------------------------------------------- */ #include "c.h" #ifdef HAVE__GET_CPUID #include #endif #ifdef HAVE__CPUID #include #endif #include "port/pg_bitutils.h" /* * Array giving the position of the left-most set bit for each possible * byte value. We count the right-most position as the 0th bit, and the * left-most the 7th bit. The 0th entry of the array should not be used. * * Note: this is not used by the functions in pg_bitutils.h when * HAVE__BUILTIN_CLZ is defined, but we provide it anyway, so that * extensions possibly compiled with a different compiler can use it. */ /* * Array giving the position of the right-most set bit for each possible * byte value. We count the right-most position as the 0th bit, and the * left-most the 7th bit. The 0th entry of the array should not be used. * * Note: this is not used by the functions in pg_bitutils.h when * HAVE__BUILTIN_CTZ is defined, but we provide it anyway, so that * extensions possibly compiled with a different compiler can use it. */ /* * Array giving the number of 1-bits in each possible byte value. * * Note: we export this for use by functions in which explicit use * of the popcount functions seems unlikely to be a win. */ static int pg_popcount32_slow(uint32 word); static int pg_popcount64_slow(uint64 word); #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 int pg_popcount32_fast(uint32 word); static int pg_popcount64_fast(uint64 word); int (*pg_popcount32) (uint32 word) = pg_popcount32_choose; int (*pg_popcount64) (uint64 word) = pg_popcount64_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 int pg_popcount32_choose(uint32 word) { if (pg_popcount_available()) { pg_popcount32 = pg_popcount32_fast; pg_popcount64 = pg_popcount64_fast; } else { pg_popcount32 = pg_popcount32_slow; pg_popcount64 = pg_popcount64_slow; } return pg_popcount32(word); } static int pg_popcount64_choose(uint64 word) { if (pg_popcount_available()) { pg_popcount32 = pg_popcount32_fast; pg_popcount64 = pg_popcount64_fast; } else { pg_popcount32 = pg_popcount32_slow; pg_popcount64 = pg_popcount64_slow; } return pg_popcount64(word); } /* * pg_popcount32_fast * Return the number of 1 bits set in word */ static 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 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 } #endif /* TRY_POPCNT_FAST */ /* * pg_popcount32_slow * Return the number of 1 bits set in word */ #ifdef HAVE__BUILTIN_POPCOUNT #else /* !HAVE__BUILTIN_POPCOUNT */ #endif /* HAVE__BUILTIN_POPCOUNT */ /* * pg_popcount64_slow * Return the number of 1 bits set in word */ static int pg_popcount64_slow(uint64 word) { #ifdef HAVE__BUILTIN_POPCOUNT #if defined(HAVE_LONG_INT_64) return __builtin_popcountl(word); #elif defined(HAVE_LONG_LONG_INT_64) return __builtin_popcountll(word); #else #error must have a working 64-bit integer datatype #endif #else /* !HAVE__BUILTIN_POPCOUNT */ int result = 0; while (word != 0) { result += pg_number_of_ones[word & 255]; word >>= 8; } return result; #endif /* HAVE__BUILTIN_POPCOUNT */ } #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_popcount64(uint64 word) { return pg_popcount64_slow(word); } #endif /* !TRY_POPCNT_FAST */ /* * pg_popcount * Returns the number of 1-bits in buf */ #if SIZEOF_VOID_P >= 8 #else #endif pg_query-4.2.3/ext/pg_query/pg_query_scan.c0000644000004100000410000001121414510636647021054 0ustar www-datawww-data#include "pg_query.h" #include "pg_query_internal.h" #include "parser/gramparse.h" #include "lib/stringinfo.h" #include "protobuf/pg_query.pb-c.h" #include #include /* This is ugly. We need to access yyleng outside of scan.l, and casting yyscanner to this internal struct seemed like one way to do it... */ struct yyguts_t { void *yyextra_r; FILE *yyin_r, *yyout_r; size_t yy_buffer_stack_top; /**< index of top of stack. */ size_t yy_buffer_stack_max; /**< capacity of stack. */ struct yy_buffer_state *yy_buffer_stack; /**< Stack as an array. */ char yy_hold_char; size_t yy_n_chars; size_t yyleng_r; }; PgQueryScanResult pg_query_scan(const char* input) { MemoryContext ctx = NULL; PgQueryScanResult result = {0}; core_yyscan_t yyscanner; core_yy_extra_type yyextra; core_YYSTYPE yylval; YYLTYPE yylloc; PgQuery__ScanResult scan_result = PG_QUERY__SCAN_RESULT__INIT; PgQuery__ScanToken **output_tokens; size_t token_count = 0; size_t i; ctx = pg_query_enter_memory_context(); MemoryContext parse_context = CurrentMemoryContext; char stderr_buffer[STDERR_BUFFER_LEN + 1] = {0}; #ifndef DEBUG int stderr_global; int stderr_pipe[2]; #endif #ifndef DEBUG // Setup pipe for stderr redirection if (pipe(stderr_pipe) != 0) { PgQueryError* error = malloc(sizeof(PgQueryError)); error->message = strdup("Failed to open pipe, too many open file descriptors") result.error = error; return result; } fcntl(stderr_pipe[0], F_SETFL, fcntl(stderr_pipe[0], F_GETFL) | O_NONBLOCK); // Redirect stderr to the pipe stderr_global = dup(STDERR_FILENO); dup2(stderr_pipe[1], STDERR_FILENO); close(stderr_pipe[1]); #endif PG_TRY(); { // Really this is stupid, we only run twice so we can pre-allocate the output array correctly yyscanner = scanner_init(input, &yyextra, &ScanKeywords, ScanKeywordTokens); for (;; token_count++) { if (core_yylex(&yylval, &yylloc, yyscanner) == 0) break; } scanner_finish(yyscanner); output_tokens = malloc(sizeof(PgQuery__ScanToken *) * token_count); /* initialize the flex scanner --- should match raw_parser() */ yyscanner = scanner_init(input, &yyextra, &ScanKeywords, ScanKeywordTokens); /* Lex tokens */ for (i = 0; ; i++) { int tok; int keyword; tok = core_yylex(&yylval, &yylloc, yyscanner); if (tok == 0) break; output_tokens[i] = malloc(sizeof(PgQuery__ScanToken)); pg_query__scan_token__init(output_tokens[i]); output_tokens[i]->start = yylloc; if (tok == SCONST || tok == BCONST || tok == XCONST || tok == IDENT || tok == C_COMMENT) { output_tokens[i]->end = yyextra.yyllocend; } else { output_tokens[i]->end = yylloc + ((struct yyguts_t*) yyscanner)->yyleng_r; } output_tokens[i]->token = tok; switch (tok) { #define PG_KEYWORD(a,b,c,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); } pg_query-4.2.3/ext/pg_query/src_backend_catalog_pg_proc.c0000644000004100000410000001005714510636647023662 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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-2022, 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/analyze.h" #include "parser/parse_coerce.h" #include "parser/parse_type.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. */ pg_query-4.2.3/ext/pg_query/xxhash.c0000644000004100000410000000347614510636647017533 0ustar www-datawww-data/* * 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"pg_query-4.2.3/ext/pg_query/src_backend_nodes_extensible.c0000644000004100000410000000465114510636647024074 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - GetExtensibleNodeMethods * - GetExtensibleNodeEntry * - extensible_node_methods *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * extensible.c * Support for extensible node types * * Loadable modules can define what are in effect new types of nodes using * the routines in this file. All such nodes are flagged T_ExtensibleNode, * with the extnodename field distinguishing the specific type. Use * RegisterExtensibleNodeMethods to register a new type of extensible node, * and GetExtensibleNodeMethods to get information about a previously * registered type of extensible node. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/backend/nodes/extensible.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "nodes/extensible.h" #include "utils/hsearch.h" static __thread HTAB *extensible_node_methods = NULL; typedef struct { char extnodename[EXTNODENAME_MAX_LEN]; const void *extnodemethods; } ExtensibleNodeEntry; /* * An internal function to register a new callback structure */ /* * Register a new type of extensible node. */ /* * Register a new type of custom scan node */ /* * An internal routine to get an ExtensibleNodeEntry by the given identifier */ static const void * GetExtensibleNodeEntry(HTAB *htable, const char *extnodename, bool missing_ok) { ExtensibleNodeEntry *entry = NULL; if (htable != NULL) entry = (ExtensibleNodeEntry *) hash_search(htable, extnodename, HASH_FIND, NULL); if (!entry) { if (missing_ok) return NULL; ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("ExtensibleNodeMethods \"%s\" was not registered", extnodename))); } return entry->extnodemethods; } /* * Get the methods for a given type of extensible node. */ const ExtensibleNodeMethods * GetExtensibleNodeMethods(const char *extnodename, bool missing_ok) { return (const ExtensibleNodeMethods *) GetExtensibleNodeEntry(extensible_node_methods, extnodename, missing_ok); } /* * Get the methods for a given name of CustomScanMethods */ pg_query-4.2.3/ext/pg_query/pg_query_internal.h0000644000004100000410000000101514510636647021747 0ustar www-datawww-data#ifndef PG_QUERY_INTERNAL_H #define PG_QUERY_INTERNAL_H #include "postgres.h" #include "utils/memutils.h" #include "nodes/pg_list.h" #define STDERR_BUFFER_LEN 4096 #define DEBUG typedef struct { List *tree; char* stderr_buffer; PgQueryError* error; } PgQueryInternalParsetreeAndError; PgQueryInternalParsetreeAndError pg_query_raw_parse(const char* input); void pg_query_free_error(PgQueryError *error); MemoryContext pg_query_enter_memory_context(); void pg_query_exit_memory_context(MemoryContext ctx); #endif pg_query-4.2.3/ext/pg_query/src_pl_plpgsql_src_pl_handler.c0000644000004100000410000000374214510636647024307 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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-2022, 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. * ---------- */ ; pg_query-4.2.3/ext/pg_query/postgres_deparse.c0000644000004100000410000112555614510636647021606 0ustar www-datawww-data#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_INSERT_ON_CONFLICT, DEPARSE_NODE_CONTEXT_UPDATE, DEPARSE_NODE_CONTEXT_RETURNING, DEPARSE_NODE_CONTEXT_A_EXPR, DEPARSE_NODE_CONTEXT_XMLATTRIBUTES, DEPARSE_NODE_CONTEXT_XMLNAMESPACES, DEPARSE_NODE_CONTEXT_CREATE_TYPE, DEPARSE_NODE_CONTEXT_ALTER_TYPE, DEPARSE_NODE_CONTEXT_SET_STATEMENT, // 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); static void deparseMinMaxExpr(StringInfo str, MinMaxExpr *min_max_expr); static void deparseXmlExpr(StringInfo str, XmlExpr* xml_expr); static void deparseXmlSerialize(StringInfo str, XmlSerialize *xml_serialize); static void deparseConstraint(StringInfo str, Constraint *constraint); static void deparseSchemaStmt(StringInfo str, Node *node); static void deparseExecuteStmt(StringInfo str, ExecuteStmt *execute_stmt); static void deparseTriggerTransition(StringInfo str, TriggerTransition *trigger_transition); static void deparseCreateOpClassItem(StringInfo str, CreateOpClassItem *create_op_class_item); static void deparseAConst(StringInfo str, A_Const *a_const); static void deparseCurrentOfExpr(StringInfo str, CurrentOfExpr *current_of_expr); static void deparseGroupingFunc(StringInfo str, GroupingFunc *grouping_func); static void deparsePreparableStmt(StringInfo str, Node *node); static void deparseRuleActionStmt(StringInfo str, Node *node); static void deparseExplainableStmt(StringInfo str, Node *node); static void deparseStmt(StringInfo str, Node *node); static void deparseValue(StringInfo str, 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, '.'); } } } // "a_expr" / "b_expr" in gram.y static void deparseExpr(StringInfo str, Node *node) { if (node == NULL) return; switch (nodeTag(node)) { case T_FuncCall: deparseFuncCall(str, castNode(FuncCall, node)); break; case T_XmlExpr: deparseXmlExpr(str, castNode(XmlExpr, node)); break; case T_TypeCast: deparseTypeCast(str, castNode(TypeCast, node), DEPARSE_NODE_CONTEXT_NONE); break; case T_A_Const: deparseAConst(str, castNode(A_Const, node)); break; case T_ColumnRef: deparseColumnRef(str, castNode(ColumnRef, node)); break; case T_A_Expr: deparseAExpr(str, castNode(A_Expr, node), DEPARSE_NODE_CONTEXT_NONE); break; case T_CaseExpr: deparseCaseExpr(str, castNode(CaseExpr, node)); break; case T_A_ArrayExpr: deparseAArrayExpr(str, castNode(A_ArrayExpr, node)); break; case T_NullTest: deparseNullTest(str, castNode(NullTest, node)); break; case T_XmlSerialize: deparseXmlSerialize(str, castNode(XmlSerialize, node)); break; case T_ParamRef: deparseParamRef(str, castNode(ParamRef, node)); break; case T_BoolExpr: deparseBoolExpr(str, castNode(BoolExpr, node)); break; case T_SubLink: deparseSubLink(str, castNode(SubLink, node)); break; case T_RowExpr: deparseRowExpr(str, castNode(RowExpr, node)); break; case T_CoalesceExpr: deparseCoalesceExpr(str, castNode(CoalesceExpr, node)); break; case T_SetToDefault: deparseSetToDefault(str, castNode(SetToDefault, node)); break; case T_A_Indirection: deparseAIndirection(str, castNode(A_Indirection, node)); break; case T_CollateClause: deparseCollateClause(str, castNode(CollateClause, node)); break; case T_CurrentOfExpr: deparseCurrentOfExpr(str, castNode(CurrentOfExpr, node)); break; case T_SQLValueFunction: deparseSQLValueFunction(str, castNode(SQLValueFunction, node)); break; case T_MinMaxExpr: deparseMinMaxExpr(str, castNode(MinMaxExpr, node)); break; case T_BooleanTest: deparseBooleanTest(str, castNode(BooleanTest, node)); break; case T_GroupingFunc: deparseGroupingFunc(str, castNode(GroupingFunc, node)); break; default: elog(ERROR, "deparse: unpermitted node type in a_expr/b_expr: %d", (int) nodeTag(node)); break; } } // "c_expr" in gram.y static void deparseCExpr(StringInfo str, Node *node) { switch (nodeTag(node)) { case T_ColumnRef: deparseColumnRef(str, castNode(ColumnRef, node)); break; case T_A_Const: deparseAConst(str, castNode(A_Const, node)); break; case T_TypeCast: deparseTypeCast(str, castNode(TypeCast, node), DEPARSE_NODE_CONTEXT_NONE); break; case T_A_Expr: appendStringInfoChar(str, '('); deparseAExpr(str, castNode(A_Expr, node), DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ')'); break; case T_ParamRef: deparseParamRef(str, castNode(ParamRef, node)); break; case T_A_Indirection: deparseAIndirection(str, castNode(A_Indirection, node)); break; case T_CaseExpr: deparseCaseExpr(str, castNode(CaseExpr, node)); break; case T_FuncCall: deparseFuncCall(str, castNode(FuncCall, node)); break; case T_SubLink: deparseSubLink(str, castNode(SubLink, node)); break; case T_A_ArrayExpr: deparseAArrayExpr(str, castNode(A_ArrayExpr, node)); break; case T_RowExpr: deparseRowExpr(str, castNode(RowExpr, node)); break; case T_GroupingFunc: deparseGroupingFunc(str, castNode(GroupingFunc, node)); break; default: elog(ERROR, "deparse: unpermitted node type in c_expr: %d", (int) nodeTag(node)); break; } } // "expr_list" in gram.y static void deparseExprList(StringInfo str, List *exprs) { ListCell *lc; foreach(lc, exprs) { deparseExpr(str, lfirst(lc)); if (lnext(exprs, lc)) appendStringInfoString(str, ", "); } } // "ColId", "name", "database_name", "access_method" and "index_name" in gram.y static void deparseColId(StringInfo str, char *s) { appendStringInfoString(str, quote_identifier(s)); } // "ColLabel", "attr_name" // // Note this is kept separate from ColId in case we ever want to be more // specific on how to handle keywords here static void deparseColLabel(StringInfo str, char *s) { appendStringInfoString(str, quote_identifier(s)); } // "SignedIconst" and "Iconst" in gram.y static void deparseSignedIconst(StringInfo str, Node *node) { appendStringInfo(str, "%d", intVal(node)); } // "indirection" and "opt_indirection" in gram.y static void deparseOptIndirection(StringInfo str, List *indirection, int N) { ListCell *lc = NULL; for_each_from(lc, indirection, N) { if (IsA(lfirst(lc), String)) { appendStringInfoChar(str, '.'); deparseColLabel(str, strVal(lfirst(lc))); } else if (IsA(lfirst(lc), A_Star)) { appendStringInfoString(str, ".*"); } else if (IsA(lfirst(lc), A_Indices)) { deparseAIndices(str, castNode(A_Indices, lfirst(lc))); } else { // No other nodes should appear here Assert(false); } } } // "role_list" in gram.y static void deparseRoleList(StringInfo str, List *roles) { ListCell *lc; foreach(lc, roles) { RoleSpec *role_spec = castNode(RoleSpec, lfirst(lc)); deparseRoleSpec(str, role_spec); if (lnext(roles, lc)) appendStringInfoString(str, ", "); } } // "SimpleTypename" in gram.y static void deparseSimpleTypename(StringInfo str, Node *node) { deparseTypeName(str, castNode(TypeName, node)); } // "NumericOnly" in gram.y static void deparseNumericOnly(StringInfo str, 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); if (res_target->name != NULL) { appendStringInfoString(str, " AS "); appendStringInfoString(str, quote_identifier(res_target->name)); } if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "insert_column_list" in gram.y static void deparseInsertColumnList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { ResTarget *res_target = castNode(ResTarget, lfirst(lc)); Assert(res_target->name != NULL); appendStringInfoString(str, quote_identifier(res_target->name)); deparseOptIndirection(str, res_target->indirection, 0); if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "xml_attribute_list" in gram.y static void deparseXmlAttributeList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { ResTarget *res_target = castNode(ResTarget, lfirst(lc)); Assert(res_target->val != NULL); deparseExpr(str, res_target->val); if (res_target->name != NULL) { appendStringInfoString(str, " AS "); appendStringInfoString(str, quote_identifier(res_target->name)); } if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "xml_namespace_list" in gram.y static void deparseXmlNamespaceList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { ResTarget *res_target = castNode(ResTarget, lfirst(lc)); Assert(res_target->val != NULL); if (res_target->name == NULL) appendStringInfoString(str, "DEFAULT "); deparseExpr(str, res_target->val); if (res_target->name != NULL) { appendStringInfoString(str, " AS "); appendStringInfoString(str, quote_identifier(res_target->name)); } if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "table_ref" in gram.y static void deparseTableRef(StringInfo str, Node *node) { switch (nodeTag(node)) { case T_RangeVar: deparseRangeVar(str, castNode(RangeVar, node), DEPARSE_NODE_CONTEXT_NONE); break; case T_RangeTableSample: deparseRangeTableSample(str, castNode(RangeTableSample, node)); break; case T_RangeFunction: deparseRangeFunction(str, castNode(RangeFunction, node)); break; case T_RangeTableFunc: deparseRangeTableFunc(str, castNode(RangeTableFunc, node)); break; case T_RangeSubselect: deparseRangeSubselect(str, castNode(RangeSubselect, node)); break; case T_JoinExpr: deparseJoinExpr(str, castNode(JoinExpr, node)); break; default: Assert(false); } } // "from_list" in gram.y static void deparseFromList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { deparseTableRef(str, lfirst(lc)); if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "from_clause" in gram.y // // Note this method adds a trailing space if a value is output static void deparseFromClause(StringInfo str, List *l) { if (list_length(l) > 0) { appendStringInfoString(str, "FROM "); deparseFromList(str, l); appendStringInfoChar(str, ' '); } } // "where_clause" in gram.y // // Note this method adds a trailing space if a value is output static void deparseWhereClause(StringInfo str, Node *node) { if (node != NULL) { appendStringInfoString(str, "WHERE "); deparseExpr(str, node); appendStringInfoChar(str, ' '); } } // "group_by_list" in gram.y static void deparseGroupByList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { if (IsA(lfirst(lc), GroupingSet)) deparseGroupingSet(str, castNode(GroupingSet, lfirst(lc))); else deparseExpr(str, lfirst(lc)); if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "set_target" in gram.y static void deparseSetTarget(StringInfo str, ResTarget *res_target) { Assert(res_target->name != NULL); deparseColId(str, res_target->name); deparseOptIndirection(str, res_target->indirection, 0); } // "any_name_list" in gram.y static void deparseAnyNameList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { deparseAnyName(str, castNode(List, lfirst(lc))); if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "name_list" in gram.y static void deparseNameList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { deparseColId(str, strVal(lfirst(lc))); if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "opt_sort_clause" in gram.y // // Note this method adds a trailing space if a value is output static void deparseOptSortClause(StringInfo str, List *l) { ListCell *lc = NULL; if (list_length(l) > 0) { appendStringInfoString(str, "ORDER BY "); foreach(lc, l) { deparseSortBy(str, castNode(SortBy, lfirst(lc))); if (lnext(l, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ' '); } } // "func_arg_expr" in gram.y static void deparseFuncArgExpr(StringInfo str, Node *node) { if (IsA(node, NamedArgExpr)) { NamedArgExpr *named_arg_expr = castNode(NamedArgExpr, node); appendStringInfoString(str, named_arg_expr->name); appendStringInfoString(str, " := "); deparseExpr(str, (Node *) named_arg_expr->arg); } else { deparseExpr(str, node); } } // "set_clause_list" in gram.y static void deparseSetClauseList(StringInfo str, List *target_list) { ListCell *lc; ListCell *lc2; int skip_next_n_elems = 0; Assert(list_length(target_list) > 0); foreach(lc, target_list) { if (skip_next_n_elems > 0) { skip_next_n_elems--; continue; } if (foreach_current_index(lc) != 0) appendStringInfoString(str, ", "); ResTarget *res_target = castNode(ResTarget, lfirst(lc)); Assert(res_target->val != NULL); if (IsA(res_target->val, MultiAssignRef)) { MultiAssignRef *r = castNode(MultiAssignRef, res_target->val); appendStringInfoString(str, "("); for_each_cell(lc2, target_list, lc) { deparseSetTarget(str, castNode(ResTarget, lfirst(lc2))); if (foreach_current_index(lc2) == r->ncolumns - 1) // Last element in this multi-assign break; else if (lnext(target_list, lc2)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ") = "); deparseExpr(str, r->source); skip_next_n_elems = r->ncolumns - 1; } else { deparseSetTarget(str, res_target); appendStringInfoString(str, " = "); deparseExpr(str, res_target->val); } } } // "func_expr_windowless" in gram.y static void deparseFuncExprWindowless(StringInfo str, Node* node) { switch (nodeTag(node)) { case T_FuncCall: deparseFuncCall(str, castNode(FuncCall, node)); break; case T_SQLValueFunction: deparseSQLValueFunction(str, castNode(SQLValueFunction, node)); break; case T_TypeCast: deparseTypeCast(str, castNode(TypeCast, node), DEPARSE_NODE_CONTEXT_NONE); break; case T_CoalesceExpr: deparseCoalesceExpr(str, castNode(CoalesceExpr, node)); break; case T_MinMaxExpr: deparseMinMaxExpr(str, castNode(MinMaxExpr, node)); break; case T_XmlExpr: deparseXmlExpr(str, castNode(XmlExpr, node)); break; case T_XmlSerialize: deparseXmlSerialize(str, castNode(XmlSerialize, node)); break; default: Assert(false); } } // "opt_collate" in gram.y // // Note this method adds a trailing space if a value is output static void deparseOptCollate(StringInfo str, List *l) { if (list_length(l) > 0) { appendStringInfoString(str, "COLLATE "); deparseAnyName(str, l); appendStringInfoChar(str, ' '); } } // "index_elem" in gram.y static void deparseIndexElem(StringInfo str, IndexElem* index_elem) { if (index_elem->name != NULL) { deparseColId(str, index_elem->name); appendStringInfoChar(str, ' '); } else if (index_elem->expr != NULL) { switch (nodeTag(index_elem->expr)) { case T_FuncCall: case T_SQLValueFunction: case T_TypeCast: case T_CoalesceExpr: case T_MinMaxExpr: case T_XmlExpr: case T_XmlSerialize: deparseFuncExprWindowless(str, index_elem->expr); break; default: appendStringInfoChar(str, '('); deparseExpr(str, index_elem->expr); appendStringInfoString(str, ") "); } } else { Assert(false); } deparseOptCollate(str, index_elem->collation); if (list_length(index_elem->opclass) > 0) { deparseAnyName(str, index_elem->opclass); if (list_length(index_elem->opclassopts) > 0) deparseRelOptions(str, index_elem->opclassopts); appendStringInfoChar(str, ' '); } switch (index_elem->ordering) { case SORTBY_DEFAULT: // Default break; case SORTBY_ASC: appendStringInfoString(str, "ASC "); break; case SORTBY_DESC: appendStringInfoString(str, "DESC "); break; case SORTBY_USING: // Not allowed in CREATE INDEX Assert(false); break; } switch (index_elem->nulls_ordering) { case SORTBY_NULLS_DEFAULT: // Default break; case SORTBY_NULLS_FIRST: appendStringInfoString(str, "NULLS FIRST "); break; case SORTBY_NULLS_LAST: appendStringInfoString(str, "NULLS LAST "); break; } removeTrailingSpace(str); } // "qualified_name_list" in gram.y static void deparseQualifiedNameList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { deparseRangeVar(str, castNode(RangeVar, lfirst(lc)), DEPARSE_NODE_CONTEXT_NONE); if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "OptInherit" in gram.y // // Note this method adds a trailing space if a value is output static void deparseOptInherit(StringInfo str, List *l) { if (list_length(l) > 0) { appendStringInfoString(str, "INHERITS ("); deparseQualifiedNameList(str, l); appendStringInfoString(str, ") "); } } // "privilege_target" in gram.y static void deparsePrivilegeTarget(StringInfo str, GrantTargetType targtype, ObjectType objtype, List *objs) { switch (targtype) { case ACL_TARGET_OBJECT: switch (objtype) { case OBJECT_TABLE: deparseQualifiedNameList(str, objs); break; case OBJECT_SEQUENCE: appendStringInfoString(str, "SEQUENCE "); deparseQualifiedNameList(str, objs); break; case OBJECT_FDW: appendStringInfoString(str, "FOREIGN DATA WRAPPER "); deparseNameList(str, objs); break; case OBJECT_FOREIGN_SERVER: appendStringInfoString(str, "FOREIGN SERVER "); deparseNameList(str, objs); break; case OBJECT_FUNCTION: appendStringInfoString(str, "FUNCTION "); deparseFunctionWithArgtypesList(str, objs); break; case OBJECT_PROCEDURE: appendStringInfoString(str, "PROCEDURE "); deparseFunctionWithArgtypesList(str, objs); break; case OBJECT_ROUTINE: appendStringInfoString(str, "ROUTINE "); deparseFunctionWithArgtypesList(str, objs); break; case OBJECT_DATABASE: appendStringInfoString(str, "DATABASE "); deparseNameList(str, objs); break; case OBJECT_DOMAIN: appendStringInfoString(str, "DOMAIN "); deparseAnyNameList(str, objs); break; case OBJECT_LANGUAGE: appendStringInfoString(str, "LANGUAGE "); deparseNameList(str, objs); break; case OBJECT_LARGEOBJECT: appendStringInfoString(str, "LARGE OBJECT "); deparseNumericOnlyList(str, objs); break; case OBJECT_SCHEMA: appendStringInfoString(str, "SCHEMA "); deparseNameList(str, objs); break; case OBJECT_TABLESPACE: appendStringInfoString(str, "TABLESPACE "); deparseNameList(str, objs); break; case OBJECT_TYPE: appendStringInfoString(str, "TYPE "); deparseAnyNameList(str, objs); break; default: // Other types are not supported here Assert(false); break; } break; case ACL_TARGET_ALL_IN_SCHEMA: switch (objtype) { case OBJECT_TABLE: appendStringInfoString(str, "ALL TABLES IN SCHEMA "); deparseNameList(str, objs); break; case OBJECT_SEQUENCE: appendStringInfoString(str, "ALL SEQUENCES IN SCHEMA "); deparseNameList(str, objs); break; case OBJECT_FUNCTION: appendStringInfoString(str, "ALL FUNCTIONS IN SCHEMA "); deparseNameList(str, objs); break; case OBJECT_PROCEDURE: appendStringInfoString(str, "ALL PROCEDURES IN SCHEMA "); deparseNameList(str, objs); break; case OBJECT_ROUTINE: appendStringInfoString(str, "ALL ROUTINES IN SCHEMA "); deparseNameList(str, objs); break; default: // Other types are not supported here Assert(false); break; } break; case ACL_TARGET_DEFAULTS: // defacl_privilege_target switch (objtype) { case OBJECT_TABLE: appendStringInfoString(str, "TABLES"); break; case OBJECT_FUNCTION: appendStringInfoString(str, "FUNCTIONS"); break; case OBJECT_SEQUENCE: appendStringInfoString(str, "SEQUENCES"); break; case OBJECT_TYPE: appendStringInfoString(str, "TYPES"); break; case OBJECT_SCHEMA: appendStringInfoString(str, "SCHEMAS"); break; default: // Other types are not supported here Assert(false); break; } break; } } // "opclass_item_list" in gram.y static void deparseOpclassItemList(StringInfo str, List *items) { ListCell *lc = NULL; foreach (lc, items) { deparseCreateOpClassItem(str, castNode(CreateOpClassItem, lfirst(lc))); if (lnext(items, lc)) appendStringInfoString(str, ", "); } } // "createdb_opt_list" in gram.y static void deparseCreatedbOptList(StringInfo str, List *l) { ListCell *lc = NULL; foreach (lc, l) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); if (strcmp(def_elem->defname, "connection_limit") == 0) appendStringInfoString(str, "CONNECTION LIMIT"); else deparseGenericDefElemName(str, def_elem->defname); appendStringInfoChar(str, ' '); if (def_elem->arg == NULL) appendStringInfoString(str, "DEFAULT"); else if (IsA(def_elem->arg, Integer)) deparseSignedIconst(str, def_elem->arg); else if (IsA(def_elem->arg, String)) deparseOptBooleanOrString(str, strVal(def_elem->arg)); if (lnext(l, lc)) appendStringInfoChar(str, ' '); } } // "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); 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); appendStringInfoChar(str, ' '); if (stmt->limitOption == LIMIT_OPTION_WITH_TIES) appendStringInfoString(str, "ROWS WITH TIES "); } if (stmt->limitOffset != NULL) { appendStringInfoString(str, "OFFSET "); deparseExpr(str, stmt->limitOffset); appendStringInfoChar(str, ' '); } if (list_length(stmt->lockingClause) > 0) { foreach(lc, stmt->lockingClause) { deparseLockingClause(str, castNode(LockingClause, lfirst(lc))); if (lnext(stmt->lockingClause, lc)) appendStringInfoString(str, " "); } appendStringInfoChar(str, ' '); } removeTrailingSpace(str); } static void deparseIntoClause(StringInfo str, IntoClause *into_clause) { ListCell *lc; deparseRangeVar(str, into_clause->rel, DEPARSE_NODE_CONTEXT_NONE); /* target relation name */ if (list_length(into_clause->colNames) > 0) { appendStringInfoChar(str, '('); deparseColumnList(str, into_clause->colNames); appendStringInfoChar(str, ')'); } appendStringInfoChar(str, ' '); if (into_clause->accessMethod != NULL) { appendStringInfoString(str, "USING "); appendStringInfoString(str, quote_identifier(into_clause->accessMethod)); appendStringInfoChar(str, ' '); } deparseOptWith(str, into_clause->options); switch (into_clause->onCommit) { case ONCOMMIT_NOOP: // No clause break; case ONCOMMIT_PRESERVE_ROWS: appendStringInfoString(str, "ON COMMIT PRESERVE ROWS "); break; case ONCOMMIT_DELETE_ROWS: appendStringInfoString(str, "ON COMMIT DELETE ROWS "); break; case ONCOMMIT_DROP: appendStringInfoString(str, "ON COMMIT DROP "); break; } if (into_clause->tableSpaceName != NULL) { appendStringInfoString(str, "TABLESPACE "); appendStringInfoString(str, quote_identifier(into_clause->tableSpaceName)); appendStringInfoChar(str, ' '); } removeTrailingSpace(str); } static void deparseRangeVar(StringInfo str, RangeVar *range_var, DeparseNodeContext context) { if (!range_var->inh && context != DEPARSE_NODE_CONTEXT_CREATE_TYPE && context != DEPARSE_NODE_CONTEXT_ALTER_TYPE) appendStringInfoString(str, "ONLY "); if (range_var->catalogname != NULL) { appendStringInfoString(str, quote_identifier(range_var->catalogname)); appendStringInfoChar(str, '.'); } if (range_var->schemaname != NULL) { appendStringInfoString(str, quote_identifier(range_var->schemaname)); appendStringInfoChar(str, '.'); } Assert(range_var->relname != NULL); appendStringInfoString(str, quote_identifier(range_var->relname)); appendStringInfoChar(str, ' '); if (range_var->alias != NULL) { if (context == DEPARSE_NODE_CONTEXT_INSERT_RELATION) appendStringInfoString(str, "AS "); deparseAlias(str, range_var->alias); appendStringInfoChar(str, ' '); } removeTrailingSpace(str); } 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) { const ListCell *lc = NULL; Assert(list_length(func_call->funcname) > 0); if (list_length(func_call->funcname) == 2 && strcmp(strVal(linitial(func_call->funcname)), "pg_catalog") == 0 && strcmp(strVal(lsecond(func_call->funcname)), "overlay") == 0 && list_length(func_call->args) == 4) { /* * Note that this is a bit odd, but "OVERLAY" is a keyword on its own merit, and only accepts the * keyword parameter style when its called as a keyword, not as a regular function (i.e. pg_catalog.overlay) */ appendStringInfoString(str, "OVERLAY("); deparseExpr(str, linitial(func_call->args)); appendStringInfoString(str, " PLACING "); deparseExpr(str, lsecond(func_call->args)); appendStringInfoString(str, " FROM "); deparseExpr(str, lthird(func_call->args)); appendStringInfoString(str, " FOR "); deparseExpr(str, lfourth(func_call->args)); appendStringInfoChar(str, ')'); return; } 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)); appendStringInfoString(str, " FROM "); deparseExpr(str, lsecond(func_call->args)); if (list_length(func_call->args) == 3) { appendStringInfoString(str, " FOR "); deparseExpr(str, lthird(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)), "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("); deparseExpr(str, lsecond(func_call->args)); appendStringInfoString(str, " IN "); deparseExpr(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)); appendStringInfoString(str, " placing "); deparseExpr(str, lsecond(func_call->args)); appendStringInfoString(str, " from "); deparseExpr(str, lthird(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)), "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)); 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)); appendStringInfoString(str, " FROM "); deparseExpr(str, lsecond(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)), "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)); appendStringInfoString(str, ", "); deparseExpr(str, lsecond(func_call->args)); appendStringInfoString(str, ") "); appendStringInfoString(str, "overlaps "); appendStringInfoChar(str, '('); deparseExpr(str, lthird(func_call->args)); appendStringInfoString(str, ", "); deparseExpr(str, lfourth(func_call->args)); 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)); appendStringInfoString(str, " FROM "); deparseExpr(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)), "timezone") == 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 */ deparseExpr(str, lsecond(func_call->args)); appendStringInfoString(str, " AT TIME ZONE "); deparseExpr(str, linitial(func_call->args)); 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)); 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)); 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)); appendStringInfoString(str, " PASSING "); deparseExpr(str, lsecond(func_call->args)); appendStringInfoChar(str, ')'); return; } deparseFuncName(str, func_call->funcname); appendStringInfoChar(str, '('); if (func_call->agg_distinct) appendStringInfoString(str, "DISTINCT "); if (func_call->agg_star) { appendStringInfoChar(str, '*'); } else if (list_length(func_call->args) > 0) { foreach(lc, func_call->args) { if (func_call->func_variadic && !lnext(func_call->args, lc)) appendStringInfoString(str, "VARIADIC "); deparseFuncArgExpr(str, lfirst(lc)); if (lnext(func_call->args, lc)) appendStringInfoString(str, ", "); } } appendStringInfoChar(str, ' '); if (func_call->agg_order != NULL && !func_call->agg_within_group) { deparseOptSortClause(str, func_call->agg_order); } removeTrailingSpace(str); appendStringInfoString(str, ") "); if (func_call->agg_order != NULL && func_call->agg_within_group) { appendStringInfoString(str, "WITHIN GROUP ("); deparseOptSortClause(str, func_call->agg_order); removeTrailingSpace(str); appendStringInfoString(str, ") "); } if (func_call->agg_filter) { appendStringInfoString(str, "FILTER (WHERE "); deparseExpr(str, func_call->agg_filter); appendStringInfoString(str, ") "); } if (func_call->over) { appendStringInfoString(str, "OVER "); if (func_call->over->name) appendStringInfoString(str, func_call->over->name); else deparseWindowDef(str, func_call->over); } removeTrailingSpace(str); } static void deparseWindowDef(StringInfo str, WindowDef* window_def) { ListCell *lc; // The parent node is responsible for outputting window_def->name appendStringInfoChar(str, '('); if (window_def->refname != NULL) { appendStringInfoString(str, quote_identifier(window_def->refname)); appendStringInfoChar(str, ' '); } if (list_length(window_def->partitionClause) > 0) { appendStringInfoString(str, "PARTITION BY "); deparseExprList(str, window_def->partitionClause); appendStringInfoChar(str, ' '); } deparseOptSortClause(str, window_def->orderClause); if (window_def->frameOptions & FRAMEOPTION_NONDEFAULT) { if (window_def->frameOptions & FRAMEOPTION_RANGE) appendStringInfoString(str, "RANGE "); else if (window_def->frameOptions & FRAMEOPTION_ROWS) appendStringInfoString(str, "ROWS "); else if (window_def->frameOptions & FRAMEOPTION_GROUPS) appendStringInfoString(str, "GROUPS "); if (window_def->frameOptions & FRAMEOPTION_BETWEEN) appendStringInfoString(str, "BETWEEN "); // frame_start if (window_def->frameOptions & FRAMEOPTION_START_UNBOUNDED_PRECEDING) { appendStringInfoString(str, "UNBOUNDED PRECEDING "); } else if (window_def->frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) { Assert(false); // disallowed } else if (window_def->frameOptions & FRAMEOPTION_START_CURRENT_ROW) { appendStringInfoString(str, "CURRENT ROW "); } else if (window_def->frameOptions & FRAMEOPTION_START_OFFSET_PRECEDING) { Assert(window_def->startOffset != NULL); deparseExpr(str, window_def->startOffset); appendStringInfoString(str, " PRECEDING "); } else if (window_def->frameOptions & FRAMEOPTION_START_OFFSET_FOLLOWING) { Assert(window_def->startOffset != NULL); deparseExpr(str, window_def->startOffset); appendStringInfoString(str, " FOLLOWING "); } if (window_def->frameOptions & FRAMEOPTION_BETWEEN) { appendStringInfoString(str, "AND "); // frame_end if (window_def->frameOptions & FRAMEOPTION_END_UNBOUNDED_PRECEDING) { Assert(false); // disallowed } else if (window_def->frameOptions & FRAMEOPTION_END_UNBOUNDED_FOLLOWING) { appendStringInfoString(str, "UNBOUNDED FOLLOWING "); } else if (window_def->frameOptions & FRAMEOPTION_END_CURRENT_ROW) { appendStringInfoString(str, "CURRENT ROW "); } else if (window_def->frameOptions & FRAMEOPTION_END_OFFSET_PRECEDING) { Assert(window_def->endOffset != NULL); deparseExpr(str, window_def->endOffset); appendStringInfoString(str, " PRECEDING "); } else if (window_def->frameOptions & FRAMEOPTION_END_OFFSET_FOLLOWING) { Assert(window_def->endOffset != NULL); deparseExpr(str, window_def->endOffset); appendStringInfoString(str, " FOLLOWING "); } } if (window_def->frameOptions & FRAMEOPTION_EXCLUDE_CURRENT_ROW) appendStringInfoString(str, "EXCLUDE CURRENT ROW "); else if (window_def->frameOptions & FRAMEOPTION_EXCLUDE_GROUP) appendStringInfoString(str, "EXCLUDE GROUP "); else if (window_def->frameOptions & FRAMEOPTION_EXCLUDE_TIES) appendStringInfoString(str, "EXCLUDE TIES "); } removeTrailingSpace(str); appendStringInfoChar(str, ')'); } static void deparseColumnRef(StringInfo str, ColumnRef* column_ref) { Assert(list_length(column_ref->fields) >= 1); if (IsA(linitial(column_ref->fields), A_Star)) deparseAStar(str, castNode(A_Star, linitial(column_ref->fields))); else if (IsA(linitial(column_ref->fields), String)) deparseColLabel(str, strVal(linitial(column_ref->fields))); deparseOptIndirection(str, column_ref->fields, 1); } static void deparseSubLink(StringInfo str, SubLink* sub_link) { switch (sub_link->subLinkType) { case EXISTS_SUBLINK: appendStringInfoString(str, "EXISTS ("); deparseSelectStmt(str, castNode(SelectStmt, sub_link->subselect)); appendStringInfoChar(str, ')'); return; case ALL_SUBLINK: deparseExpr(str, sub_link->testexpr); appendStringInfoChar(str, ' '); deparseSubqueryOp(str, sub_link->operName); appendStringInfoString(str, " ALL ("); deparseSelectStmt(str, castNode(SelectStmt, sub_link->subselect)); appendStringInfoChar(str, ')'); return; case ANY_SUBLINK: deparseExpr(str, sub_link->testexpr); if (list_length(sub_link->operName) > 0) { appendStringInfoChar(str, ' '); deparseSubqueryOp(str, sub_link->operName); appendStringInfoString(str, " ANY "); } else { appendStringInfoString(str, " IN "); } appendStringInfoChar(str, '('); deparseSelectStmt(str, castNode(SelectStmt, sub_link->subselect)); appendStringInfoChar(str, ')'); return; case ROWCOMPARE_SUBLINK: // Not present in raw parse trees Assert(false); return; case EXPR_SUBLINK: appendStringInfoString(str, "("); deparseSelectStmt(str, castNode(SelectStmt, sub_link->subselect)); appendStringInfoChar(str, ')'); return; case MULTIEXPR_SUBLINK: // Not present in raw parse trees Assert(false); return; case ARRAY_SUBLINK: appendStringInfoString(str, "ARRAY("); deparseSelectStmt(str, castNode(SelectStmt, sub_link->subselect)); appendStringInfoChar(str, ')'); return; case CTE_SUBLINK: /* for SubPlans only */ // Not present in raw parse trees Assert(false); return; } } static void deparseAExpr(StringInfo str, A_Expr* a_expr, DeparseNodeContext context) { ListCell *lc; char *name; bool need_lexpr_parens = a_expr->lexpr != NULL && (IsA(a_expr->lexpr, BoolExpr) || IsA(a_expr->lexpr, NullTest) || IsA(a_expr->lexpr, A_Expr)); bool need_rexpr_parens = a_expr->rexpr != NULL && (IsA(a_expr->rexpr, BoolExpr) || IsA(a_expr->rexpr, NullTest) || IsA(a_expr->rexpr, A_Expr)); switch (a_expr->kind) { case AEXPR_OP: /* normal operator */ { bool need_outer_parens = context == DEPARSE_NODE_CONTEXT_A_EXPR; if (need_outer_parens) appendStringInfoChar(str, '('); if (a_expr->lexpr != NULL) { if (need_lexpr_parens) appendStringInfoChar(str, '('); deparseExpr(str, a_expr->lexpr); if (need_lexpr_parens) appendStringInfoChar(str, ')'); appendStringInfoChar(str, ' '); } deparseQualOp(str, a_expr->name); if (a_expr->rexpr != NULL) { appendStringInfoChar(str, ' '); if (need_rexpr_parens) appendStringInfoChar(str, '('); deparseExpr(str, a_expr->rexpr); if (need_rexpr_parens) appendStringInfoChar(str, ')'); } if (need_outer_parens) appendStringInfoChar(str, ')'); } return; case AEXPR_OP_ANY: /* scalar op ANY (array) */ deparseExpr(str, a_expr->lexpr); appendStringInfoChar(str, ' '); deparseSubqueryOp(str, a_expr->name); appendStringInfoString(str, " ANY("); deparseExpr(str, a_expr->rexpr); appendStringInfoChar(str, ')'); return; case AEXPR_OP_ALL: /* scalar op ALL (array) */ deparseExpr(str, a_expr->lexpr); appendStringInfoChar(str, ' '); deparseSubqueryOp(str, a_expr->name); appendStringInfoString(str, " ALL("); deparseExpr(str, a_expr->rexpr); appendStringInfoChar(str, ')'); return; case AEXPR_DISTINCT: /* IS DISTINCT FROM - name must be "=" */ Assert(list_length(a_expr->name) == 1); Assert(IsA(linitial(a_expr->name), String)); Assert(strcmp(strVal(linitial(a_expr->name)), "=") == 0); if (need_lexpr_parens) appendStringInfoChar(str, '('); deparseExpr(str, a_expr->lexpr); if (need_lexpr_parens) appendStringInfoChar(str, ')'); appendStringInfoString(str, " IS DISTINCT FROM "); if (need_rexpr_parens) appendStringInfoChar(str, '('); deparseExpr(str, a_expr->rexpr); if (need_rexpr_parens) appendStringInfoChar(str, ')'); return; case AEXPR_NOT_DISTINCT: /* IS NOT DISTINCT FROM - name must be "=" */ Assert(list_length(a_expr->name) == 1); Assert(IsA(linitial(a_expr->name), String)); Assert(strcmp(strVal(linitial(a_expr->name)), "=") == 0); deparseExpr(str, a_expr->lexpr); appendStringInfoString(str, " IS NOT DISTINCT FROM "); deparseExpr(str, a_expr->rexpr); return; case AEXPR_NULLIF: /* NULLIF - name must be "=" */ Assert(list_length(a_expr->name) == 1); Assert(IsA(linitial(a_expr->name), String)); Assert(strcmp(strVal(linitial(a_expr->name)), "=") == 0); appendStringInfoString(str, "NULLIF("); deparseExpr(str, a_expr->lexpr); appendStringInfoString(str, ", "); deparseExpr(str, a_expr->rexpr); appendStringInfoChar(str, ')'); return; case AEXPR_IN: /* [NOT] IN - name must be "=" or "<>" */ Assert(list_length(a_expr->name) == 1); Assert(IsA(linitial(a_expr->name), String)); Assert(IsA(a_expr->rexpr, List)); deparseExpr(str, a_expr->lexpr); appendStringInfoChar(str, ' '); name = ((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); 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); return; case AEXPR_ILIKE: /* [NOT] ILIKE - name must be "~~*" or "!~~*" */ Assert(list_length(a_expr->name) == 1); Assert(IsA(linitial(a_expr->name), String)); deparseExpr(str, a_expr->lexpr); appendStringInfoChar(str, ' '); name = ((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); return; case AEXPR_SIMILAR: /* [NOT] SIMILAR - name must be "~" or "!~" */ Assert(list_length(a_expr->name) == 1); Assert(IsA(linitial(a_expr->name), String)); deparseExpr(str, a_expr->lexpr); appendStringInfoChar(str, ' '); name = ((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)); if (list_length(n->args) == 2) { appendStringInfoString(str, " ESCAPE "); deparseExpr(str, lsecond(n->args)); } return; case AEXPR_BETWEEN: /* name must be "BETWEEN" */ case AEXPR_NOT_BETWEEN: /* name must be "NOT BETWEEN" */ case AEXPR_BETWEEN_SYM: /* name must be "BETWEEN SYMMETRIC" */ case AEXPR_NOT_BETWEEN_SYM: /* name must be "NOT BETWEEN SYMMETRIC" */ Assert(list_length(a_expr->name) == 1); Assert(IsA(linitial(a_expr->name), String)); Assert(IsA(a_expr->rexpr, List)); deparseExpr(str, a_expr->lexpr); appendStringInfoChar(str, ' '); appendStringInfoString(str, strVal(linitial(a_expr->name))); appendStringInfoChar(str, ' '); foreach(lc, castNode(List, a_expr->rexpr)) { deparseExpr(str, lfirst(lc)); if (lnext(castNode(List, a_expr->rexpr), lc)) appendStringInfoString(str, " AND "); } return; } } static void deparseBoolExpr(StringInfo str, BoolExpr *bool_expr) { const ListCell *lc = NULL; switch (bool_expr->boolop) { case AND_EXPR: foreach(lc, bool_expr->args) { // Put parantheses around AND + OR nodes that are inside bool need_parens = IsA(lfirst(lc), BoolExpr) && (castNode(BoolExpr, lfirst(lc))->boolop == AND_EXPR || castNode(BoolExpr, lfirst(lc))->boolop == OR_EXPR); if (need_parens) appendStringInfoChar(str, '('); deparseExpr(str, lfirst(lc)); if (need_parens) appendStringInfoChar(str, ')'); if (lnext(bool_expr->args, lc)) appendStringInfoString(str, " AND "); } return; case OR_EXPR: foreach(lc, bool_expr->args) { // Put parantheses around AND + OR nodes that are inside bool need_parens = IsA(lfirst(lc), BoolExpr) && (castNode(BoolExpr, lfirst(lc))->boolop == AND_EXPR || castNode(BoolExpr, lfirst(lc))->boolop == OR_EXPR); if (need_parens) appendStringInfoChar(str, '('); deparseExpr(str, lfirst(lc)); if (need_parens) appendStringInfoChar(str, ')'); if (lnext(bool_expr->args, lc)) appendStringInfoString(str, " OR "); } return; case NOT_EXPR: Assert(list_length(bool_expr->args) == 1); bool need_parens = IsA(linitial(bool_expr->args), BoolExpr) && (castNode(BoolExpr, linitial(bool_expr->args))->boolop == AND_EXPR || castNode(BoolExpr, linitial(bool_expr->args))->boolop == OR_EXPR); appendStringInfoString(str, "NOT "); if (need_parens) appendStringInfoChar(str, '('); deparseExpr(str, linitial(bool_expr->args)); if (need_parens) appendStringInfoChar(str, ')'); return; } } static void deparseAStar(StringInfo str, A_Star *a_star) { appendStringInfoChar(str, '*'); } static void deparseCollateClause(StringInfo str, CollateClause* collate_clause) { ListCell *lc; if (collate_clause->arg != NULL) { bool need_parens = IsA(collate_clause->arg, A_Expr); if (need_parens) appendStringInfoChar(str, '('); deparseExpr(str, collate_clause->arg); if (need_parens) appendStringInfoChar(str, ')'); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "COLLATE "); deparseAnyName(str, collate_clause->collname); } static void deparseSortBy(StringInfo str, SortBy* sort_by) { deparseExpr(str, sort_by->node); appendStringInfoChar(str, ' '); switch (sort_by->sortby_dir) { case SORTBY_DEFAULT: break; case SORTBY_ASC: appendStringInfoString(str, "ASC "); break; case SORTBY_DESC: appendStringInfoString(str, "DESC "); break; case SORTBY_USING: appendStringInfoString(str, "USING "); deparseQualOp(str, sort_by->useOp); break; } switch (sort_by->sortby_nulls) { case SORTBY_NULLS_DEFAULT: break; case SORTBY_NULLS_FIRST: appendStringInfoString(str, "NULLS FIRST "); break; case SORTBY_NULLS_LAST: appendStringInfoString(str, "NULLS LAST "); break; } removeTrailingSpace(str); } static void deparseParamRef(StringInfo str, ParamRef* param_ref) { if (param_ref->number == 0) { appendStringInfoChar(str, '?'); } else { appendStringInfo(str, "$%d", param_ref->number); } } static void deparseSQLValueFunction(StringInfo str, SQLValueFunction* sql_value_function) { switch (sql_value_function->op) { case SVFOP_CURRENT_DATE: appendStringInfoString(str, "current_date"); break; case SVFOP_CURRENT_TIME: appendStringInfoString(str, "current_time"); break; case SVFOP_CURRENT_TIME_N: appendStringInfoString(str, "current_time"); // with precision break; case SVFOP_CURRENT_TIMESTAMP: appendStringInfoString(str, "current_timestamp"); break; case SVFOP_CURRENT_TIMESTAMP_N: appendStringInfoString(str, "current_timestamp"); // with precision break; case SVFOP_LOCALTIME: appendStringInfoString(str, "localtime"); break; case SVFOP_LOCALTIME_N: appendStringInfoString(str, "localtime"); // with precision break; case SVFOP_LOCALTIMESTAMP: appendStringInfoString(str, "localtimestamp"); break; case SVFOP_LOCALTIMESTAMP_N: appendStringInfoString(str, "localtimestamp"); // with precision break; case SVFOP_CURRENT_ROLE: appendStringInfoString(str, "current_role"); break; case SVFOP_CURRENT_USER: appendStringInfoString(str, "current_user"); break; case SVFOP_USER: appendStringInfoString(str, "user"); break; case SVFOP_SESSION_USER: appendStringInfoString(str, "session_user"); break; case SVFOP_CURRENT_CATALOG: appendStringInfoString(str, "current_catalog"); break; case SVFOP_CURRENT_SCHEMA: appendStringInfoString(str, "current_schema"); break; } if (sql_value_function->typmod != -1) { appendStringInfo(str, "(%d)", sql_value_function->typmod); } } static void deparseWithClause(StringInfo str, WithClause *with_clause) { ListCell *lc; appendStringInfoString(str, "WITH "); if (with_clause->recursive) appendStringInfoString(str, "RECURSIVE "); foreach(lc, with_clause->ctes) { deparseCommonTableExpr(str, castNode(CommonTableExpr, lfirst(lc))); if (lnext(with_clause->ctes, lc)) appendStringInfoString(str, ", "); } removeTrailingSpace(str); } static void deparseJoinExpr(StringInfo str, JoinExpr *join_expr) { ListCell *lc; bool need_alias_parens = join_expr->alias != NULL; bool need_rarg_parens = IsA(join_expr->rarg, JoinExpr) && castNode(JoinExpr, join_expr->rarg)->alias == NULL; if (need_alias_parens) appendStringInfoChar(str, '('); deparseTableRef(str, join_expr->larg); appendStringInfoChar(str, ' '); if (join_expr->isNatural) appendStringInfoString(str, "NATURAL "); switch (join_expr->jointype) { case JOIN_INNER: /* matching tuple pairs only */ if (!join_expr->isNatural && join_expr->quals == NULL && list_length(join_expr->usingClause) == 0) appendStringInfoString(str, "CROSS "); break; case JOIN_LEFT: /* pairs + unmatched LHS tuples */ appendStringInfoString(str, "LEFT "); break; case JOIN_FULL: /* pairs + unmatched LHS + unmatched RHS */ appendStringInfoString(str, "FULL "); break; case JOIN_RIGHT: /* pairs + unmatched RHS tuples */ appendStringInfoString(str, "RIGHT "); break; case JOIN_SEMI: case JOIN_ANTI: case JOIN_UNIQUE_OUTER: case JOIN_UNIQUE_INNER: // Only used by the planner/executor, not seen in parser output Assert(false); break; } appendStringInfoString(str, "JOIN "); if (need_rarg_parens) appendStringInfoChar(str, '('); deparseTableRef(str, join_expr->rarg); if (need_rarg_parens) appendStringInfoChar(str, ')'); appendStringInfoChar(str, ' '); if (join_expr->quals != NULL) { appendStringInfoString(str, "ON "); deparseExpr(str, join_expr->quals); appendStringInfoChar(str, ' '); } if (list_length(join_expr->usingClause) > 0) { appendStringInfoString(str, "USING ("); deparseNameList(str, join_expr->usingClause); appendStringInfoString(str, ") "); if (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)); } 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 "); deparseExpr(str, cycle_clause->cycle_mark_value); } if (cycle_clause->cycle_mark_default) { appendStringInfoString(str, " DEFAULT "); deparseExpr(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)) { appendStringInfoString(str, "CAST("); deparseExpr(str, type_cast->arg); appendStringInfoString(str, " AS "); deparseTypeName(str, type_cast->typeName); appendStringInfoChar(str, ')'); return; } if (IsA(type_cast->arg, A_Const)) { A_Const *a_const = castNode(A_Const, type_cast->arg); if (list_length(type_cast->typeName->names) == 2 && strcmp(strVal(linitial(type_cast->typeName->names)), "pg_catalog") == 0) { char *typename = strVal(lsecond(type_cast->typeName->names)); if (strcmp(typename, "bpchar") == 0 && type_cast->typeName->typmods == NULL) { appendStringInfoString(str, "char "); deparseAConst(str, a_const); return; } else if (strcmp(typename, "bool") == 0 && IsA(&a_const->val, String)) { /* * Handle "bool" or "false" in the statement, which is represented as a typecast * (other boolean casts should be represented as a cast, i.e. don't need special handling) */ char *const_val = strVal(&a_const->val); if (strcmp(const_val, "t") == 0) { appendStringInfoString(str, "true"); return; } if (strcmp(const_val, "f") == 0) { appendStringInfoString(str, "false"); return; } } 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); 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); switch (null_test->nulltesttype) { case IS_NULL: appendStringInfoString(str, " IS NULL"); break; case IS_NOT_NULL: appendStringInfoString(str, " IS NOT NULL"); break; } } static void deparseCaseExpr(StringInfo str, CaseExpr *case_expr) { ListCell *lc; appendStringInfoString(str, "CASE "); if (case_expr->arg != NULL) { deparseExpr(str, (Node *) case_expr->arg); appendStringInfoChar(str, ' '); } foreach(lc, case_expr->args) { deparseCaseWhen(str, castNode(CaseWhen, lfirst(lc))); appendStringInfoChar(str, ' '); } if (case_expr->defresult != NULL) { appendStringInfoString(str, "ELSE "); deparseExpr(str, (Node *) case_expr->defresult); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "END"); } static void deparseCaseWhen(StringInfo str, CaseWhen *case_when) { appendStringInfoString(str, "WHEN "); deparseExpr(str, (Node *) case_when->expr); appendStringInfoString(str, " THEN "); deparseExpr(str, (Node *) case_when->result); } static void deparseAIndirection(StringInfo str, A_Indirection *a_indirection) { ListCell *lc; bool need_parens = IsA(a_indirection->arg, A_Indirection) || IsA(a_indirection->arg, FuncCall) || IsA(a_indirection->arg, A_Expr) || IsA(a_indirection->arg, TypeCast) || IsA(a_indirection->arg, RowExpr) || (IsA(a_indirection->arg, ColumnRef) && !IsA(linitial(a_indirection->indirection), A_Indices)); if (need_parens) appendStringInfoChar(str, '('); deparseExpr(str, a_indirection->arg); if (need_parens) appendStringInfoChar(str, ')'); deparseOptIndirection(str, a_indirection->indirection, 0); } static void deparseAIndices(StringInfo str, A_Indices *a_indices) { appendStringInfoChar(str, '['); if (a_indices->lidx != NULL) deparseExpr(str, a_indices->lidx); if (a_indices->is_slice) appendStringInfoChar(str, ':'); if (a_indices->uidx != NULL) deparseExpr(str, a_indices->uidx); appendStringInfoChar(str, ']'); } static void deparseCoalesceExpr(StringInfo str, CoalesceExpr *coalesce_expr) { appendStringInfoString(str, "COALESCE("); deparseExprList(str, coalesce_expr->args); appendStringInfoChar(str, ')'); } static void deparseMinMaxExpr(StringInfo str, MinMaxExpr *min_max_expr) { switch (min_max_expr->op) { case IS_GREATEST: appendStringInfoString(str, "GREATEST("); break; case IS_LEAST: appendStringInfoString(str, "LEAST("); break; } deparseExprList(str, min_max_expr->args); appendStringInfoChar(str, ')'); } static void deparseBooleanTest(StringInfo str, BooleanTest *boolean_test) { deparseExpr(str, (Node *) boolean_test->arg); switch (boolean_test->booltesttype) { case IS_TRUE: appendStringInfoString(str, " IS TRUE"); break; case IS_NOT_TRUE: appendStringInfoString(str, " IS NOT TRUE"); break; case IS_FALSE: appendStringInfoString(str, " IS FALSE"); break; case IS_NOT_FALSE: appendStringInfoString(str, " IS NOT FALSE"); break; case IS_UNKNOWN: appendStringInfoString(str, " IS UNKNOWN"); break; case IS_NOT_UNKNOWN: appendStringInfoString(str, " IS NOT UNKNOWN"); break; default: Assert(false); } } static void deparseColumnDef(StringInfo str, ColumnDef *column_def) { ListCell *lc; if (column_def->colname != NULL) { appendStringInfoString(str, quote_identifier(column_def->colname)); appendStringInfoChar(str, ' '); } if (column_def->typeName != NULL) { deparseTypeName(str, column_def->typeName); appendStringInfoChar(str, ' '); } if (column_def->raw_default != NULL) { appendStringInfoString(str, "USING "); deparseExpr(str, column_def->raw_default); appendStringInfoChar(str, ' '); } if (column_def->fdwoptions != NULL) { deparseCreateGenericOptions(str, column_def->fdwoptions); appendStringInfoChar(str, ' '); } foreach(lc, column_def->constraints) { deparseConstraint(str, castNode(Constraint, lfirst(lc))); appendStringInfoChar(str, ' '); } if (column_def->collClause != NULL) { deparseCollateClause(str, column_def->collClause); } removeTrailingSpace(str); } static void 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); deparseWhereClause(str, update_stmt->whereClause); if (list_length(update_stmt->returningList) > 0) { appendStringInfoString(str, "RETURNING "); deparseTargetList(str, update_stmt->returningList); } removeTrailingSpace(str); } 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); appendStringInfoChar(str, ' '); ListCell *lc, *lc2; foreach (lc, merge_stmt->mergeWhenClauses) { MergeWhenClause *clause = castNode(MergeWhenClause, lfirst(lc)); appendStringInfoString(str, "WHEN "); if (!clause->matched) { appendStringInfoString(str, "NOT "); } appendStringInfoString(str, "MATCHED "); if (clause->condition) { appendStringInfoString(str, "AND "); deparseExpr(str, clause->condition); 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, ' '); } } static void deparseDeleteStmt(StringInfo str, DeleteStmt *delete_stmt) { if (delete_stmt->withClause != NULL) { deparseWithClause(str, delete_stmt->withClause); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "DELETE FROM "); deparseRangeVar(str, delete_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); if (delete_stmt->usingClause != NULL) { appendStringInfoString(str, "USING "); deparseFromList(str, delete_stmt->usingClause); appendStringInfoChar(str, ' '); } deparseWhereClause(str, delete_stmt->whereClause); if (list_length(delete_stmt->returningList) > 0) { appendStringInfoString(str, "RETURNING "); deparseTargetList(str, delete_stmt->returningList); } removeTrailingSpace(str); } static void deparseLockingClause(StringInfo str, LockingClause *locking_clause) { ListCell *lc; switch (locking_clause->strength) { case LCS_NONE: /* no such clause - only used in PlanRowMark */ Assert(false); break; case LCS_FORKEYSHARE: appendStringInfoString(str, "FOR KEY SHARE "); break; case LCS_FORSHARE: appendStringInfoString(str, "FOR SHARE "); break; case LCS_FORNOKEYUPDATE: appendStringInfoString(str, "FOR NO KEY UPDATE "); break; case LCS_FORUPDATE: appendStringInfoString(str, "FOR UPDATE "); break; } if (list_length(locking_clause->lockedRels) > 0) { appendStringInfoString(str, "OF "); deparseQualifiedNameList(str, locking_clause->lockedRels); } switch (locking_clause->waitPolicy) { case LockWaitError: appendStringInfoString(str, "NOWAIT"); break; case LockWaitSkip: appendStringInfoString(str, "SKIP LOCKED"); break; case LockWaitBlock: // Default break; } removeTrailingSpace(str); } static void deparseSetToDefault(StringInfo str, SetToDefault *set_to_default) { appendStringInfoString(str, "DEFAULT"); } static void deparseCreateCastStmt(StringInfo str, CreateCastStmt *create_cast_stmt) { ListCell *lc; ListCell *lc2; appendStringInfoString(str, "CREATE CAST ("); deparseTypeName(str, create_cast_stmt->sourcetype); appendStringInfoString(str, " AS "); deparseTypeName(str, create_cast_stmt->targettype); appendStringInfoString(str, ") "); if (create_cast_stmt->func != NULL) { appendStringInfoString(str, "WITH FUNCTION "); deparseFunctionWithArgtypes(str, create_cast_stmt->func); appendStringInfoChar(str, ' '); } else if (create_cast_stmt->inout) { appendStringInfoString(str, "WITH INOUT "); } else { appendStringInfoString(str, "WITHOUT FUNCTION "); } switch (create_cast_stmt->context) { case COERCION_IMPLICIT: appendStringInfoString(str, "AS IMPLICIT"); break; case COERCION_ASSIGNMENT: appendStringInfoString(str, "AS ASSIGNMENT"); break; case COERCION_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_CONSTRAINTS) appendStringInfoString(str, "INCLUDING CONSTRAINTS "); if (table_like_clause->options & CREATE_TABLE_LIKE_DEFAULTS) appendStringInfoString(str, "INCLUDING DEFAULTS "); if (table_like_clause->options & CREATE_TABLE_LIKE_IDENTITY) appendStringInfoString(str, "INCLUDING IDENTITY "); if (table_like_clause->options & CREATE_TABLE_LIKE_GENERATED) appendStringInfoString(str, "INCLUDING GENERATED "); if (table_like_clause->options & CREATE_TABLE_LIKE_INDEXES) appendStringInfoString(str, "INCLUDING INDEXES "); if (table_like_clause->options & CREATE_TABLE_LIKE_STATISTICS) appendStringInfoString(str, "INCLUDING STATISTICS "); if (table_like_clause->options & CREATE_TABLE_LIKE_STORAGE) appendStringInfoString(str, "INCLUDING STORAGE "); } removeTrailingSpace(str); } static void deparseCreateDomainStmt(StringInfo str, CreateDomainStmt *create_domain_stmt) { ListCell *lc; Assert(create_domain_stmt->typeName != NULL); appendStringInfoString(str, "CREATE DOMAIN "); deparseAnyName(str, create_domain_stmt->domainname); appendStringInfoString(str, " AS "); deparseTypeName(str, create_domain_stmt->typeName); appendStringInfoChar(str, ' '); if (create_domain_stmt->collClause != NULL) { deparseCollateClause(str, create_domain_stmt->collClause); appendStringInfoChar(str, ' '); } foreach(lc, create_domain_stmt->constraints) { deparseConstraint(str, castNode(Constraint, lfirst(lc))); appendStringInfoChar(str, ' '); } removeTrailingSpace(str); } static void deparseCreateExtensionStmt(StringInfo str, CreateExtensionStmt *create_extension_stmt) { ListCell *lc = NULL; appendStringInfoString(str, "CREATE EXTENSION "); if (create_extension_stmt->if_not_exists) appendStringInfoString(str, "IF NOT EXISTS "); deparseColId(str, create_extension_stmt->extname); appendStringInfoChar(str, ' '); foreach (lc, create_extension_stmt->options) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); if (strcmp(def_elem->defname, "schema") == 0) { appendStringInfoString(str, "SCHEMA "); deparseColId(str, strVal(def_elem->arg)); } else if (strcmp(def_elem->defname, "new_version") == 0) { appendStringInfoString(str, "VERSION "); deparseNonReservedWordOrSconst(str, strVal(def_elem->arg)); } else if (strcmp(def_elem->defname, "cascade") == 0) { appendStringInfoString(str, "CASCADE"); } else { Assert(false); } appendStringInfoChar(str, ' '); } removeTrailingSpace(str); } static void deparseConstraint(StringInfo str, Constraint *constraint) { ListCell *lc; if (constraint->conname != NULL) { appendStringInfoString(str, "CONSTRAINT "); appendStringInfoString(str, 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 "); deparseExpr(str, constraint->raw_expr); break; case CONSTR_IDENTITY: appendStringInfoString(str, "GENERATED "); switch (constraint->generated_when) { case ATTRIBUTE_IDENTITY_ALWAYS: appendStringInfoString(str, "ALWAYS "); break; case ATTRIBUTE_IDENTITY_BY_DEFAULT: appendStringInfoString(str, "BY DEFAULT "); break; default: Assert(false); } appendStringInfoString(str, "AS IDENTITY "); deparseOptParenthesizedSeqOptList(str, constraint->options); break; case CONSTR_GENERATED: Assert(constraint->generated_when == ATTRIBUTE_IDENTITY_ALWAYS); appendStringInfoString(str, "GENERATED ALWAYS AS ("); deparseExpr(str, constraint->raw_expr); appendStringInfoString(str, ") STORED "); break; case CONSTR_CHECK: appendStringInfoString(str, "CHECK ("); deparseExpr(str, constraint->raw_expr); appendStringInfoString(str, ") "); break; case CONSTR_PRIMARY: appendStringInfoString(str, "PRIMARY KEY "); break; case CONSTR_UNIQUE: appendStringInfoString(str, "UNIQUE "); break; case CONSTR_EXCLUSION: appendStringInfoString(str, "EXCLUDE "); if (strcmp(constraint->access_method, DEFAULT_INDEX_TYPE) != 0) { appendStringInfoString(str, "USING "); appendStringInfoString(str, quote_identifier(constraint->access_method)); appendStringInfoChar(str, ' '); } appendStringInfoChar(str, '('); foreach(lc, constraint->exclusions) { List *exclusion = castNode(List, lfirst(lc)); Assert(list_length(exclusion) == 2); deparseIndexElem(str, castNode(IndexElem, linitial(exclusion))); appendStringInfoString(str, " WITH "); deparseAnyOperator(str, castNode(List, lsecond(exclusion))); if (lnext(constraint->exclusions, lc)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ") "); if (constraint->where_clause != NULL) { appendStringInfoString(str, "WHERE ("); deparseExpr(str, constraint->where_clause); appendStringInfoString(str, ") "); } break; case CONSTR_FOREIGN: if (list_length(constraint->fk_attrs) > 0) appendStringInfoString(str, "FOREIGN KEY "); break; case CONSTR_ATTR_DEFERRABLE: appendStringInfoString(str, "DEFERRABLE "); break; case CONSTR_ATTR_NOT_DEFERRABLE: appendStringInfoString(str, "NOT DEFERRABLE "); break; case CONSTR_ATTR_DEFERRED: appendStringInfoString(str, "INITIALLY DEFERRED "); break; case CONSTR_ATTR_IMMEDIATE: appendStringInfoString(str, "INITIALLY IMMEDIATE "); break; } if (list_length(constraint->keys) > 0) { appendStringInfoChar(str, '('); deparseColumnList(str, constraint->keys); appendStringInfoString(str, ") "); } if (list_length(constraint->fk_attrs) > 0) { appendStringInfoChar(str, '('); deparseColumnList(str, constraint->fk_attrs); appendStringInfoString(str, ") "); } if (constraint->pktable != NULL) { appendStringInfoString(str, "REFERENCES "); deparseRangeVar(str, constraint->pktable, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); if (list_length(constraint->pk_attrs) > 0) { appendStringInfoChar(str, '('); deparseColumnList(str, constraint->pk_attrs); appendStringInfoString(str, ") "); } } switch (constraint->fk_matchtype) { case FKCONSTR_MATCH_SIMPLE: // Default break; case FKCONSTR_MATCH_FULL: appendStringInfoString(str, "MATCH FULL "); break; case FKCONSTR_MATCH_PARTIAL: // Not implemented in Postgres Assert(false); break; default: // Not specified break; } switch (constraint->fk_upd_action) { case FKCONSTR_ACTION_NOACTION: // Default break; case FKCONSTR_ACTION_RESTRICT: appendStringInfoString(str, "ON UPDATE RESTRICT "); break; case FKCONSTR_ACTION_CASCADE: appendStringInfoString(str, "ON UPDATE CASCADE "); break; case FKCONSTR_ACTION_SETNULL: appendStringInfoString(str, "ON UPDATE SET NULL "); break; case FKCONSTR_ACTION_SETDEFAULT: appendStringInfoString(str, "ON UPDATE SET DEFAULT "); break; default: // Not specified break; } switch (constraint->fk_del_action) { case FKCONSTR_ACTION_NOACTION: // Default break; case FKCONSTR_ACTION_RESTRICT: appendStringInfoString(str, "ON DELETE RESTRICT "); break; case FKCONSTR_ACTION_CASCADE: appendStringInfoString(str, "ON DELETE CASCADE "); break; case FKCONSTR_ACTION_SETNULL: 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); } static void deparseReturnStmt(StringInfo str, ReturnStmt *return_stmt) { appendStringInfoString(str, "RETURN "); deparseExpr(str, return_stmt->returnval); } 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); } 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); } 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); appendStringInfoString(str, ") "); } deparseOptCollate(str, partition_elem->collation); deparseAnyName(str, partition_elem->opclass); removeTrailingSpace(str); } static void deparsePartitionSpec(StringInfo str, PartitionSpec *partition_spec) { ListCell *lc; appendStringInfoString(str, "PARTITION BY "); appendStringInfoString(str, partition_spec->strategy); appendStringInfoChar(str, '('); foreach(lc, partition_spec->partParams) { deparsePartitionElem(str, castNode(PartitionElem, lfirst(lc))); if (lnext(partition_spec->partParams, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); } static void deparsePartitionBoundSpec(StringInfo str, PartitionBoundSpec *partition_bound_spec) { ListCell *lc; if (partition_bound_spec->is_default) { appendStringInfoString(str, "DEFAULT"); return; } appendStringInfoString(str, "FOR VALUES "); switch (partition_bound_spec->strategy) { case PARTITION_STRATEGY_HASH: appendStringInfo(str, "WITH (MODULUS %d, REMAINDER %d)", partition_bound_spec->modulus, partition_bound_spec->remainder); break; case PARTITION_STRATEGY_LIST: appendStringInfoString(str, "IN ("); deparseExprList(str, partition_bound_spec->listdatums); appendStringInfoChar(str, ')'); break; case PARTITION_STRATEGY_RANGE: appendStringInfoString(str, "FROM ("); deparseExprList(str, partition_bound_spec->lowerdatums); appendStringInfoString(str, ") TO ("); deparseExprList(str, partition_bound_spec->upperdatums); appendStringInfoChar(str, ')'); break; default: Assert(false); break; } } static void deparsePartitionCmd(StringInfo str, PartitionCmd *partition_cmd) { deparseRangeVar(str, partition_cmd->name, DEPARSE_NODE_CONTEXT_NONE); if (partition_cmd->bound != NULL) { appendStringInfoChar(str, ' '); deparsePartitionBoundSpec(str, partition_cmd->bound); } 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)); } static void deparseAlterTableCmd(StringInfo str, AlterTableCmd *alter_table_cmd, DeparseNodeContext context) { ListCell *lc = NULL; const char *options = NULL; bool trailing_missing_ok = false; switch (alter_table_cmd->subtype) { case AT_AddColumn: /* add column */ if (context == DEPARSE_NODE_CONTEXT_ALTER_TYPE) appendStringInfoString(str, "ADD ATTRIBUTE "); else appendStringInfoString(str, "ADD COLUMN "); break; case AT_AddColumnRecurse: /* internal to commands/tablecmds.c */ Assert(false); break; case AT_AddColumnToView: /* implicitly via CREATE OR REPLACE VIEW */ // Not present in raw parser output Assert(false); break; case AT_ColumnDefault: /* alter column default */ appendStringInfoString(str, "ALTER COLUMN "); if (alter_table_cmd->def != NULL) options = "SET DEFAULT"; else options = "DROP DEFAULT"; break; case AT_CookedColumnDefault: /* add a pre-cooked column default */ // Not present in raw parser output Assert(false); break; case AT_DropNotNull: /* alter column drop not null */ appendStringInfoString(str, "ALTER COLUMN "); options = "DROP NOT NULL"; break; case AT_SetNotNull: /* alter column set not null */ appendStringInfoString(str, "ALTER COLUMN "); options = "SET NOT NULL"; break; case AT_DropExpression: /* alter column drop expression */ appendStringInfoString(str, "ALTER COLUMN "); options = "DROP EXPRESSION"; trailing_missing_ok = true; break; case AT_CheckNotNull: /* check column is already marked not null */ // Not present in raw parser output Assert(false); break; case AT_SetStatistics: /* alter column set statistics */ appendStringInfoString(str, "ALTER COLUMN "); options = "SET STATISTICS"; break; case AT_SetOptions: /* alter column set ( options ) */ appendStringInfoString(str, "ALTER COLUMN "); options = "SET"; break; case AT_ResetOptions: /* alter column reset ( options ) */ appendStringInfoString(str, "ALTER COLUMN "); options = "RESET"; break; case AT_SetStorage: /* alter column set storage */ appendStringInfoString(str, "ALTER COLUMN "); options = "SET STORAGE"; break; case AT_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_DropColumnRecurse: /* internal to commands/tablecmds.c */ Assert(false); break; case AT_AddIndex: /* add index */ appendStringInfoString(str, "ADD INDEX "); break; case AT_ReAddIndex: /* internal to commands/tablecmds.c */ Assert(false); break; case AT_AddConstraint: /* add constraint */ appendStringInfoString(str, "ADD "); break; case AT_AddConstraintRecurse: /* internal to commands/tablecmds.c */ Assert(false); break; case AT_ReAddConstraint: /* internal to commands/tablecmds.c */ Assert(false); break; case AT_ReAddDomainConstraint: /* internal to commands/tablecmds.c */ Assert(false); break; case AT_AlterConstraint: /* alter constraint */ appendStringInfoString(str, "ALTER "); // CONSTRAINT keyword gets added by the Constraint itself (when deparsing def) break; case AT_ValidateConstraint: /* validate constraint */ appendStringInfoString(str, "VALIDATE CONSTRAINT "); break; case AT_ValidateConstraintRecurse: /* internal to commands/tablecmds.c */ Assert(false); break; case AT_AddIndexConstraint: /* add constraint using existing index */ // Not present in raw parser output Assert(false); break; case AT_DropConstraint: /* drop constraint */ appendStringInfoString(str, "DROP CONSTRAINT "); break; case AT_DropConstraintRecurse: /* internal to commands/tablecmds.c */ Assert(false); break; case AT_ReAddComment: /* internal to commands/tablecmds.c */ 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 "); 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; } if (alter_table_cmd->missing_ok && !trailing_missing_ok) { if (alter_table_cmd->subtype == AT_AddColumn) appendStringInfoString(str, "IF NOT EXISTS "); else appendStringInfoString(str, "IF EXISTS "); } if (alter_table_cmd->name != NULL) { appendStringInfoString(str, quote_identifier(alter_table_cmd->name)); appendStringInfoChar(str, ' '); } if (alter_table_cmd->num > 0) appendStringInfo(str, "%d ", alter_table_cmd->num); if (options != NULL) { appendStringInfoString(str, options); appendStringInfoChar(str, ' '); } if (alter_table_cmd->missing_ok && trailing_missing_ok) appendStringInfoString(str, "IF EXISTS "); switch (alter_table_cmd->subtype) { case AT_AttachPartition: case AT_DetachPartition: deparsePartitionCmd(str, castNode(PartitionCmd, alter_table_cmd->def)); appendStringInfoChar(str, ' '); break; case AT_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); 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; 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); } static void deparseAlterDomainStmt(StringInfo str, AlterDomainStmt *alter_domain_stmt) { appendStringInfoString(str, "ALTER DOMAIN "); deparseAnyName(str, alter_domain_stmt->typeName); appendStringInfoChar(str, ' '); switch (alter_domain_stmt->subtype) { case 'T': if (alter_domain_stmt->def != NULL) { appendStringInfoString(str, "SET DEFAULT "); deparseExpr(str, alter_domain_stmt->def); } else { appendStringInfoString(str, "DROP DEFAULT"); } break; case 'N': appendStringInfoString(str, "DROP NOT NULL"); break; case 'O': appendStringInfoString(str, "SET NOT NULL"); break; case 'C': appendStringInfoString(str, "ADD "); deparseConstraint(str, castNode(Constraint, alter_domain_stmt->def)); break; case 'X': appendStringInfoString(str, "DROP CONSTRAINT "); if (alter_domain_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); appendStringInfoString(str, quote_identifier(alter_domain_stmt->name)); if (alter_domain_stmt->behavior == DROP_CASCADE) appendStringInfoString(str, " CASCADE"); break; case 'V': appendStringInfoString(str, "VALIDATE CONSTRAINT "); appendStringInfoString(str, quote_identifier(alter_domain_stmt->name)); break; default: // No other subtypes supported by the parser Assert(false); } } static void deparseRenameStmt(StringInfo str, RenameStmt *rename_stmt) { List *l = NULL; appendStringInfoString(str, "ALTER "); switch (rename_stmt->renameType) { case OBJECT_AGGREGATE: appendStringInfoString(str, "AGGREGATE "); break; case OBJECT_COLLATION: appendStringInfoString(str, "COLLATION "); break; case OBJECT_CONVERSION: appendStringInfoString(str, "CONVERSION "); break; case OBJECT_DATABASE: appendStringInfoString(str, "DATABASE "); break; case OBJECT_DOMAIN: case OBJECT_DOMCONSTRAINT: appendStringInfoString(str, "DOMAIN "); break; case OBJECT_FDW: appendStringInfoString(str, "FOREIGN DATA WRAPPER "); break; case OBJECT_FUNCTION: appendStringInfoString(str, "FUNCTION "); break; case OBJECT_ROLE: appendStringInfoString(str, "ROLE "); break; case OBJECT_LANGUAGE: appendStringInfoString(str, "LANGUAGE "); break; case OBJECT_OPCLASS: appendStringInfoString(str, "OPERATOR CLASS "); break; case OBJECT_OPFAMILY: appendStringInfoString(str, "OPERATOR FAMILY "); break; case OBJECT_POLICY: appendStringInfoString(str, "POLICY "); break; case OBJECT_PROCEDURE: appendStringInfoString(str, "PROCEDURE "); break; case OBJECT_PUBLICATION: appendStringInfoString(str, "PUBLICATION "); break; case OBJECT_ROUTINE: appendStringInfoString(str, "ROUTINE "); break; case OBJECT_SCHEMA: appendStringInfoString(str, "SCHEMA "); break; case OBJECT_FOREIGN_SERVER: appendStringInfoString(str, "SERVER "); break; case OBJECT_SUBSCRIPTION: appendStringInfoString(str, "SUBSCRIPTION "); break; case OBJECT_TABLE: case OBJECT_TABCONSTRAINT: appendStringInfoString(str, "TABLE "); break; case OBJECT_COLUMN: switch (rename_stmt->relationType) { case OBJECT_TABLE: appendStringInfoString(str, "TABLE "); break; case OBJECT_FOREIGN_TABLE: appendStringInfoString(str, "FOREIGN TABLE "); break; case OBJECT_VIEW: appendStringInfoString(str, "VIEW "); break; case OBJECT_MATVIEW: appendStringInfoString(str, "MATERIALIZED VIEW "); break; default: Assert(false); } break; case OBJECT_SEQUENCE: appendStringInfoString(str, "SEQUENCE "); break; case OBJECT_VIEW: appendStringInfoString(str, "VIEW "); break; case OBJECT_MATVIEW: appendStringInfoString(str, "MATERIALIZED VIEW "); break; case OBJECT_INDEX: appendStringInfoString(str, "INDEX "); break; case OBJECT_FOREIGN_TABLE: appendStringInfoString(str, "FOREIGN TABLE "); break; case OBJECT_RULE: appendStringInfoString(str, "RULE "); break; case OBJECT_TRIGGER: appendStringInfoString(str, "TRIGGER "); break; case OBJECT_EVENT_TRIGGER: appendStringInfoString(str, "EVENT TRIGGER "); break; case OBJECT_TABLESPACE: appendStringInfoString(str, "TABLESPACE "); break; case OBJECT_STATISTIC_EXT: appendStringInfoString(str, "STATISTICS "); break; case OBJECT_TSPARSER: appendStringInfoString(str, "TEXT SEARCH PARSER "); break; case OBJECT_TSDICTIONARY: appendStringInfoString(str, "TEXT SEARCH DICTIONARY "); break; case OBJECT_TSTEMPLATE: appendStringInfoString(str, "TEXT SEARCH TEMPLATE "); break; case OBJECT_TSCONFIGURATION: appendStringInfoString(str, "TEXT SEARCH CONFIGURATION "); break; case OBJECT_TYPE: case OBJECT_ATTRIBUTE: appendStringInfoString(str, "TYPE "); break; default: Assert(false); break; } if (rename_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); switch (rename_stmt->renameType) { case OBJECT_AGGREGATE: deparseAggregateWithArgtypes(str, castNode(ObjectWithArgs, rename_stmt->object)); appendStringInfoString(str, " RENAME "); break; case OBJECT_DOMCONSTRAINT: deparseAnyName(str, castNode(List, rename_stmt->object)); appendStringInfoString(str, " RENAME CONSTRAINT "); appendStringInfoString(str, quote_identifier(rename_stmt->subname)); appendStringInfoChar(str, ' '); break; case OBJECT_OPCLASS: case OBJECT_OPFAMILY: l = castNode(List, rename_stmt->object); deparseAnyNameSkipFirst(str, l); appendStringInfoString(str, " USING "); appendStringInfoString(str, quote_identifier(strVal(linitial(l)))); appendStringInfoString(str, " RENAME "); break; case OBJECT_POLICY: appendStringInfoString(str, quote_identifier(rename_stmt->subname)); appendStringInfoString(str, " ON "); deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoString(str, " RENAME "); break; case OBJECT_FUNCTION: case OBJECT_PROCEDURE: case OBJECT_ROUTINE: deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, rename_stmt->object)); appendStringInfoString(str, " RENAME "); break; case OBJECT_SUBSCRIPTION: deparseColId(str, strVal(rename_stmt->object)); appendStringInfoString(str, " RENAME "); break; case OBJECT_TABLE: case OBJECT_SEQUENCE: case OBJECT_VIEW: case OBJECT_MATVIEW: case OBJECT_INDEX: case OBJECT_FOREIGN_TABLE: deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoString(str, " RENAME "); break; case OBJECT_COLUMN: deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoString(str, " RENAME COLUMN "); appendStringInfoString(str, quote_identifier(rename_stmt->subname)); appendStringInfoChar(str, ' '); break; case OBJECT_TABCONSTRAINT: deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoString(str, " RENAME CONSTRAINT "); appendStringInfoString(str, quote_identifier(rename_stmt->subname)); appendStringInfoChar(str, ' '); break; case OBJECT_RULE: case OBJECT_TRIGGER: appendStringInfoString(str, quote_identifier(rename_stmt->subname)); appendStringInfoString(str, " ON "); deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoString(str, " RENAME "); break; case OBJECT_FDW: case OBJECT_LANGUAGE: case OBJECT_PUBLICATION: case OBJECT_FOREIGN_SERVER: case OBJECT_EVENT_TRIGGER: appendStringInfoString(str, quote_identifier(strVal(rename_stmt->object))); appendStringInfoString(str, " RENAME "); break; case OBJECT_DATABASE: case OBJECT_ROLE: case OBJECT_SCHEMA: case OBJECT_TABLESPACE: appendStringInfoString(str, quote_identifier(rename_stmt->subname)); appendStringInfoString(str, " RENAME "); break; case OBJECT_COLLATION: case OBJECT_CONVERSION: case OBJECT_DOMAIN: case OBJECT_STATISTIC_EXT: case OBJECT_TSPARSER: case OBJECT_TSDICTIONARY: case OBJECT_TSTEMPLATE: case OBJECT_TSCONFIGURATION: case OBJECT_TYPE: deparseAnyName(str, castNode(List, rename_stmt->object)); appendStringInfoString(str, " RENAME "); break; case OBJECT_ATTRIBUTE: deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_ALTER_TYPE); appendStringInfoString(str, " RENAME ATTRIBUTE "); appendStringInfoString(str, quote_identifier(rename_stmt->subname)); appendStringInfoChar(str, ' '); break; default: Assert(false); break; } appendStringInfoString(str, "TO "); appendStringInfoString(str, quote_identifier(rename_stmt->newname)); appendStringInfoChar(str, ' '); deparseOptDropBehavior(str, rename_stmt->behavior); removeTrailingSpace(str); } static void deparseTransactionStmt(StringInfo str, TransactionStmt *transaction_stmt) { ListCell *lc; switch (transaction_stmt->kind) { case TRANS_STMT_BEGIN: appendStringInfoString(str, "BEGIN "); deparseTransactionModeList(str, transaction_stmt->options); break; case TRANS_STMT_START: appendStringInfoString(str, "START TRANSACTION "); deparseTransactionModeList(str, transaction_stmt->options); break; case TRANS_STMT_COMMIT: appendStringInfoString(str, "COMMIT "); if (transaction_stmt->chain) appendStringInfoString(str, "AND CHAIN "); break; case TRANS_STMT_ROLLBACK: appendStringInfoString(str, "ROLLBACK "); if (transaction_stmt->chain) appendStringInfoString(str, "AND CHAIN "); break; case TRANS_STMT_SAVEPOINT: appendStringInfoString(str, "SAVEPOINT "); appendStringInfoString(str, quote_identifier(transaction_stmt->savepoint_name)); break; case TRANS_STMT_RELEASE: appendStringInfoString(str, "RELEASE "); appendStringInfoString(str, quote_identifier(transaction_stmt->savepoint_name)); break; case TRANS_STMT_ROLLBACK_TO: appendStringInfoString(str, "ROLLBACK "); appendStringInfoString(str, "TO SAVEPOINT "); appendStringInfoString(str, quote_identifier(transaction_stmt->savepoint_name)); break; case TRANS_STMT_PREPARE: appendStringInfoString(str, "PREPARE TRANSACTION "); deparseStringLiteral(str, transaction_stmt->gid); break; case TRANS_STMT_COMMIT_PREPARED: appendStringInfoString(str, "COMMIT PREPARED "); deparseStringLiteral(str, transaction_stmt->gid); break; case TRANS_STMT_ROLLBACK_PREPARED: appendStringInfoString(str, "ROLLBACK PREPARED "); deparseStringLiteral(str, transaction_stmt->gid); break; } removeTrailingSpace(str); } // 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 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 ("); deparseColumnList(str, castNode(List, def_elem->arg)); appendStringInfoChar(str, ')'); } else if (strcmp(def_elem->defname, "force_null") == 0) { appendStringInfoString(str, "FORCE_NULL ("); deparseColumnList(str, castNode(List, def_elem->arg)); appendStringInfoChar(str, ')'); } else if (strcmp(def_elem->defname, "encoding") == 0) { appendStringInfoString(str, "ENCODING "); deparseStringLiteral(str, strVal(def_elem->arg)); } else { appendStringInfoString(str, quote_identifier(def_elem->defname)); if (def_elem->arg != NULL) appendStringInfoChar(str, ' '); if (def_elem->arg == NULL) { // Nothing } else if (IsA(def_elem->arg, String)) { deparseOptBooleanOrString(str, strVal(def_elem->arg)); } else if (IsA(def_elem->arg, Integer) || IsA(def_elem->arg, Float)) { deparseNumericOnly(str, (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 && grant_role_stmt->admin_opt) appendStringInfoString(str, "ADMIN 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 && grant_role_stmt->admin_opt) appendStringInfoString(str, "WITH ADMIN OPTION "); if (grant_role_stmt->grantor) { appendStringInfoString(str, "GRANTED BY "); deparseRoleSpec(str, castNode(RoleSpec, grant_role_stmt->grantor)); } 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, 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; } } static void deparseCreatePolicyStmt(StringInfo str, CreatePolicyStmt *create_policy_stmt) { ListCell *lc = NULL; appendStringInfoString(str, "CREATE POLICY "); deparseColId(str, create_policy_stmt->policy_name); appendStringInfoString(str, " ON "); deparseRangeVar(str, create_policy_stmt->table, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); if (!create_policy_stmt->permissive) appendStringInfoString(str, "AS RESTRICTIVE "); if (strcmp(create_policy_stmt->cmd_name, "all") == 0) Assert(true); // Default else if (strcmp(create_policy_stmt->cmd_name, "select") == 0) appendStringInfoString(str, "FOR SELECT "); else if (strcmp(create_policy_stmt->cmd_name, "insert") == 0) appendStringInfoString(str, "FOR INSERT "); else if (strcmp(create_policy_stmt->cmd_name, "update") == 0) appendStringInfoString(str, "FOR UPDATE "); else if (strcmp(create_policy_stmt->cmd_name, "delete") == 0) appendStringInfoString(str, "FOR DELETE "); else Assert(false); appendStringInfoString(str, "TO "); deparseRoleList(str, create_policy_stmt->roles); appendStringInfoChar(str, ' '); if (create_policy_stmt->qual != NULL) { appendStringInfoString(str, "USING ("); deparseExpr(str, create_policy_stmt->qual); appendStringInfoString(str, ") "); } if (create_policy_stmt->with_check != NULL) { appendStringInfoString(str, "WITH CHECK ("); deparseExpr(str, create_policy_stmt->with_check); appendStringInfoString(str, ") "); } } static void deparseAlterPolicyStmt(StringInfo str, AlterPolicyStmt *alter_policy_stmt) { appendStringInfoString(str, "ALTER POLICY "); appendStringInfoString(str, quote_identifier(alter_policy_stmt->policy_name)); appendStringInfoString(str, " ON "); deparseRangeVar(str, alter_policy_stmt->table, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); if (list_length(alter_policy_stmt->roles) > 0) { appendStringInfoString(str, "TO "); deparseRoleList(str, alter_policy_stmt->roles); appendStringInfoChar(str, ' '); } if (alter_policy_stmt->qual != NULL) { appendStringInfoString(str, "USING ("); deparseExpr(str, alter_policy_stmt->qual); appendStringInfoString(str, ") "); } if (alter_policy_stmt->with_check != NULL) { appendStringInfoString(str, "WITH CHECK ("); deparseExpr(str, alter_policy_stmt->with_check); appendStringInfoString(str, ") "); } } static void deparseCreateTableSpaceStmt(StringInfo str, CreateTableSpaceStmt *create_table_space_stmt) { appendStringInfoString(str, "CREATE TABLESPACE "); deparseColId(str, create_table_space_stmt->tablespacename); appendStringInfoChar(str, ' '); if (create_table_space_stmt->owner != NULL) { appendStringInfoString(str, "OWNER "); deparseRoleSpec(str, create_table_space_stmt->owner); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "LOCATION "); 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); } 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); 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"); } 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); 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, ' '); appendStringInfo(str, "SET STATISTICS %d", alter_stats_stmt->stxstattarget); } static void deparseAlterTSDictionaryStmt(StringInfo str, AlterTSDictionaryStmt *alter_ts_dictionary_stmt) { appendStringInfoString(str, "ALTER TEXT SEARCH DICTIONARY "); deparseAnyName(str, alter_ts_dictionary_stmt->dictname); appendStringInfoChar(str, ' '); deparseDefinition(str, alter_ts_dictionary_stmt->options); } static void deparseAlterTSConfigurationStmt(StringInfo str, AlterTSConfigurationStmt *alter_ts_configuration_stmt) { ListCell *lc = NULL; appendStringInfoString(str, "ALTER TEXT SEARCH CONFIGURATION "); deparseAnyName(str, alter_ts_configuration_stmt->cfgname); appendStringInfoChar(str, ' '); switch (alter_ts_configuration_stmt->kind) { case ALTER_TSCONFIG_ADD_MAPPING: appendStringInfoString(str, "ADD MAPPING FOR "); deparseNameList(str, alter_ts_configuration_stmt->tokentype); appendStringInfoString(str, " WITH "); deparseAnyNameList(str, alter_ts_configuration_stmt->dicts); break; case ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN: appendStringInfoString(str, "ALTER MAPPING FOR "); deparseNameList(str, alter_ts_configuration_stmt->tokentype); appendStringInfoString(str, " WITH "); deparseAnyNameList(str, alter_ts_configuration_stmt->dicts); break; case ALTER_TSCONFIG_REPLACE_DICT: appendStringInfoString(str, "ALTER MAPPING REPLACE "); deparseAnyName(str, linitial(alter_ts_configuration_stmt->dicts)); appendStringInfoString(str, " WITH "); deparseAnyName(str, lsecond(alter_ts_configuration_stmt->dicts)); break; case ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN: appendStringInfoString(str, "ALTER MAPPING FOR "); deparseNameList(str, alter_ts_configuration_stmt->tokentype); appendStringInfoString(str, " REPLACE "); deparseAnyName(str, linitial(alter_ts_configuration_stmt->dicts)); appendStringInfoString(str, " WITH "); deparseAnyName(str, lsecond(alter_ts_configuration_stmt->dicts)); break; case ALTER_TSCONFIG_DROP_MAPPING: appendStringInfoString(str, "DROP MAPPING "); if (alter_ts_configuration_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); appendStringInfoString(str, "FOR "); deparseNameList(str, alter_ts_configuration_stmt->tokentype); break; } } static void deparseVariableShowStmt(StringInfo str, VariableShowStmt *variable_show_stmt) { appendStringInfoString(str, "SHOW "); if (strcmp(variable_show_stmt->name, "timezone") == 0) appendStringInfoString(str, "TIME ZONE"); else if (strcmp(variable_show_stmt->name, "transaction_isolation") == 0) appendStringInfoString(str, "TRANSACTION ISOLATION LEVEL"); else if (strcmp(variable_show_stmt->name, "session_authorization") == 0) appendStringInfoString(str, "SESSION AUTHORIZATION"); else if (strcmp(variable_show_stmt->name, "all") == 0) appendStringInfoString(str, "ALL"); else appendStringInfoString(str, quote_identifier(variable_show_stmt->name)); } static void deparseRangeTableSample(StringInfo str, RangeTableSample *range_table_sample) { deparseRangeVar(str, castNode(RangeVar, range_table_sample->relation), DEPARSE_NODE_CONTEXT_NONE); appendStringInfoString(str, " TABLESAMPLE "); deparseFuncName(str, range_table_sample->method); appendStringInfoChar(str, '('); deparseExprList(str, range_table_sample->args); appendStringInfoString(str, ") "); if (range_table_sample->repeatable != NULL) { appendStringInfoString(str, "REPEATABLE ("); deparseExpr(str, range_table_sample->repeatable); appendStringInfoString(str, ") "); } removeTrailingSpace(str); } static void deparseCreateSubscriptionStmt(StringInfo str, CreateSubscriptionStmt *create_subscription_stmt) { ListCell *lc; appendStringInfoString(str, "CREATE SUBSCRIPTION "); appendStringInfoString(str, quote_identifier(create_subscription_stmt->subname)); appendStringInfoString(str, " CONNECTION "); if (create_subscription_stmt->conninfo != NULL) deparseStringLiteral(str, create_subscription_stmt->conninfo); else appendStringInfoString(str, "''"); appendStringInfoString(str, " PUBLICATION "); foreach(lc, create_subscription_stmt->publication) { deparseColLabel(str, strVal(lfirst(lc))); if (lnext(create_subscription_stmt->publication, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ' '); deparseOptDefinition(str, create_subscription_stmt->options); removeTrailingSpace(str); } static void deparseAlterSubscriptionStmt(StringInfo str, AlterSubscriptionStmt *alter_subscription_stmt) { ListCell *lc; appendStringInfoString(str, "ALTER SUBSCRIPTION "); appendStringInfoString(str, quote_identifier(alter_subscription_stmt->subname)); appendStringInfoChar(str, ' '); switch (alter_subscription_stmt->kind) { case ALTER_SUBSCRIPTION_OPTIONS: appendStringInfoString(str, "SET "); deparseDefinition(str, alter_subscription_stmt->options); break; case ALTER_SUBSCRIPTION_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); } 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"); } } static void deparseCurrentOfExpr(StringInfo str, CurrentOfExpr *current_of_expr) { appendStringInfoString(str, "CURRENT OF "); appendStringInfoString(str, quote_identifier(current_of_expr->cursor_name)); } static void deparseCreateTrigStmt(StringInfo str, CreateTrigStmt *create_trig_stmt) { ListCell *lc; bool skip_events_or = true; appendStringInfoString(str, "CREATE "); if (create_trig_stmt->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); appendStringInfoString(str, ") "); } appendStringInfoString(str, "EXECUTE FUNCTION "); deparseFuncName(str, create_trig_stmt->funcname); appendStringInfoChar(str, '('); foreach(lc, create_trig_stmt->args) { deparseStringLiteral(str, strVal(lfirst(lc))); if (lnext(create_trig_stmt->args, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); } static void deparseTriggerTransition(StringInfo str, TriggerTransition *trigger_transition) { if (trigger_transition->isNew) appendStringInfoString(str, "NEW "); else appendStringInfoString(str, "OLD "); if (trigger_transition->isTable) appendStringInfoString(str, "TABLE "); else appendStringInfoString(str, "ROW "); appendStringInfoString(str, quote_identifier(trigger_transition->name)); } static void deparseXmlExpr(StringInfo str, XmlExpr* xml_expr) { switch (xml_expr->op) { case IS_XMLCONCAT: /* XMLCONCAT(args) */ appendStringInfoString(str, "xmlconcat("); deparseExprList(str, xml_expr->args); appendStringInfoChar(str, ')'); break; case IS_XMLELEMENT: /* XMLELEMENT(name, xml_attributes, args) */ appendStringInfoString(str, "xmlelement(name "); appendStringInfoString(str, quote_identifier(xml_expr->name)); if (xml_expr->named_args != NULL) { appendStringInfoString(str, ", xmlattributes("); deparseXmlAttributeList(str, xml_expr->named_args); appendStringInfoString(str, ")"); } if (xml_expr->args != NULL) { appendStringInfoString(str, ", "); deparseExprList(str, xml_expr->args); } appendStringInfoString(str, ")"); break; case IS_XMLFOREST: /* XMLFOREST(xml_attributes) */ appendStringInfoString(str, "xmlforest("); deparseXmlAttributeList(str, xml_expr->named_args); appendStringInfoChar(str, ')'); break; case IS_XMLPARSE: /* XMLPARSE(text, is_doc, preserve_ws) */ Assert(list_length(xml_expr->args) == 2); appendStringInfoString(str, "xmlparse("); switch (xml_expr->xmloption) { case XMLOPTION_DOCUMENT: appendStringInfoString(str, "document "); break; case XMLOPTION_CONTENT: appendStringInfoString(str, "content "); break; default: Assert(false); } deparseExpr(str, linitial(xml_expr->args)); appendStringInfoChar(str, ')'); break; case IS_XMLPI: /* XMLPI(name [, args]) */ appendStringInfoString(str, "xmlpi(name "); appendStringInfoString(str, quote_identifier(xml_expr->name)); if (xml_expr->args != NULL) { appendStringInfoString(str, ", "); deparseExpr(str, linitial(xml_expr->args)); } appendStringInfoChar(str, ')'); break; case IS_XMLROOT: /* XMLROOT(xml, version, standalone) */ appendStringInfoString(str, "xmlroot("); deparseExpr(str, linitial(xml_expr->args)); appendStringInfoString(str, ", version "); if (castNode(A_Const, lsecond(xml_expr->args))->isnull) appendStringInfoString(str, "NO VALUE"); else deparseExpr(str, lsecond(xml_expr->args)); if (intVal(&castNode(A_Const, lthird(xml_expr->args))->val) == XML_STANDALONE_YES) appendStringInfoString(str, ", STANDALONE YES"); else if (intVal(&castNode(A_Const, lthird(xml_expr->args))->val) == XML_STANDALONE_NO) appendStringInfoString(str, ", STANDALONE NO"); else if (intVal(&castNode(A_Const, lthird(xml_expr->args))->val) == XML_STANDALONE_NO_VALUE) appendStringInfoString(str, ", STANDALONE NO VALUE"); appendStringInfoChar(str, ')'); break; case IS_XMLSERIALIZE: /* XMLSERIALIZE(is_document, xmlval) */ // These are represented as XmlSerialize in raw parse trees Assert(false); break; case IS_DOCUMENT: /* xmlval IS DOCUMENT */ Assert(list_length(xml_expr->args) == 1); deparseExpr(str, linitial(xml_expr->args)); appendStringInfoString(str, " IS DOCUMENT"); break; } } static void deparseRangeTableFuncCol(StringInfo str, RangeTableFuncCol* range_table_func_col) { appendStringInfoString(str, quote_identifier(range_table_func_col->colname)); appendStringInfoChar(str, ' '); if (range_table_func_col->for_ordinality) { appendStringInfoString(str, "FOR ORDINALITY "); } else { deparseTypeName(str, range_table_func_col->typeName); appendStringInfoChar(str, ' '); if (range_table_func_col->colexpr) { appendStringInfoString(str, "PATH "); deparseExpr(str, range_table_func_col->colexpr); appendStringInfoChar(str, ' '); } if (range_table_func_col->coldefexpr) { appendStringInfoString(str, "DEFAULT "); deparseExpr(str, range_table_func_col->coldefexpr); appendStringInfoChar(str, ' '); } if (range_table_func_col->is_not_null) appendStringInfoString(str, "NOT NULL "); } removeTrailingSpace(str); } static void deparseRangeTableFunc(StringInfo str, RangeTableFunc* range_table_func) { ListCell *lc; if (range_table_func->lateral) appendStringInfoString(str, "LATERAL "); appendStringInfoString(str, "xmltable("); if (range_table_func->namespaces) { appendStringInfoString(str, "xmlnamespaces("); deparseXmlNamespaceList(str, range_table_func->namespaces); appendStringInfoString(str, "), "); } appendStringInfoChar(str, '('); deparseExpr(str, range_table_func->rowexpr); appendStringInfoChar(str, ')'); appendStringInfoString(str, " PASSING "); deparseExpr(str, range_table_func->docexpr); appendStringInfoString(str, " COLUMNS "); foreach(lc, range_table_func->columns) { deparseRangeTableFuncCol(str, castNode(RangeTableFuncCol, lfirst(lc))); if (lnext(range_table_func->columns, lc)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ") "); if (range_table_func->alias) { appendStringInfoString(str, "AS "); deparseAlias(str, range_table_func->alias); } removeTrailingSpace(str); } static void deparseXmlSerialize(StringInfo str, XmlSerialize *xml_serialize) { appendStringInfoString(str, "xmlserialize("); switch (xml_serialize->xmloption) { case XMLOPTION_DOCUMENT: appendStringInfoString(str, "document "); break; case XMLOPTION_CONTENT: appendStringInfoString(str, "content "); break; default: Assert(false); } deparseExpr(str, xml_serialize->expr); appendStringInfoString(str, " AS "); deparseTypeName(str, xml_serialize->typeName); appendStringInfoString(str, ")"); } static void deparseGroupingFunc(StringInfo str, GroupingFunc *grouping_func) { appendStringInfoString(str, "GROUPING("); deparseExprList(str, grouping_func->args); appendStringInfoChar(str, ')'); } static void deparseClusterStmt(StringInfo str, ClusterStmt *cluster_stmt) { appendStringInfoString(str, "CLUSTER "); 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)); } } pg_query-4.2.3/ext/pg_query/pg_query_ruby_freebsd.sym0000644000004100000410000000003514510636647023170 0ustar www-datawww-data_Init_pg_query Init_pg_query pg_query-4.2.3/ext/pg_query/pg_query_json_plpgsql.h0000644000004100000410000000024214510636647022647 0ustar www-datawww-data#ifndef PG_QUERY_JSON_PLPGSQL_H #define PG_QUERY_JSON_PLPGSQL_H #include "postgres.h" #include "plpgsql.h" char* plpgsqlToJSON(PLpgSQL_function* func); #endif pg_query-4.2.3/ext/pg_query/src_pl_plpgsql_src_pl_gram.c0000644000004100000410000061414414510636647023624 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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_PRINT_STRICT_PARAMS = 357, K_PRIOR = 358, K_QUERY = 359, K_RAISE = 360, K_RELATIVE = 361, K_RETURN = 362, K_RETURNED_SQLSTATE = 363, K_REVERSE = 364, K_ROLLBACK = 365, K_ROW_COUNT = 366, K_ROWTYPE = 367, K_SCHEMA = 368, K_SCHEMA_NAME = 369, K_SCROLL = 370, K_SLICE = 371, K_SQLSTATE = 372, K_STACKED = 373, K_STRICT = 374, K_TABLE = 375, K_TABLE_NAME = 376, K_THEN = 377, K_TO = 378, K_TYPE = 379, K_USE_COLUMN = 380, K_USE_VARIABLE = 381, K_USING = 382, K_VARIABLE_CONFLICT = 383, K_WARNING = 384, K_WHEN = 385, K_WHILE = 386 }; #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_PRINT_STRICT_PARAMS 357 #define K_PRIOR 358 #define K_QUERY 359 #define K_RAISE 360 #define K_RELATIVE 361 #define K_RETURN 362 #define K_RETURNED_SQLSTATE 363 #define K_REVERSE 364 #define K_ROLLBACK 365 #define K_ROW_COUNT 366 #define K_ROWTYPE 367 #define K_SCHEMA 368 #define K_SCHEMA_NAME 369 #define K_SCROLL 370 #define K_SLICE 371 #define K_SQLSTATE 372 #define K_STACKED 373 #define K_STRICT 374 #define K_TABLE 375 #define K_TABLE_NAME 376 #define K_THEN 377 #define K_TO 378 #define K_TYPE 379 #define K_USE_COLUMN 380 #define K_USE_VARIABLE 381 #define K_USING 382 #define K_VARIABLE_CONFLICT 383 #define K_WARNING 384 #define K_WHEN 385 #define K_WHILE 386 /* 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/pl/plpgsql/src/pl_gram.y * *------------------------------------------------------------------------- */ #include "postgres.h" #include "catalog/namespace.h" #include "catalog/pg_proc.h" #include "catalog/pg_type.h" #include "parser/parser.h" #include "parser/parse_type.h" #include "parser/scanner.h" #include "parser/scansup.h" #include "utils/builtins.h" #include "plpgsql.h" /* Location tracking support --- simpler than bison's default */ #define YYLLOC_DEFAULT(Current, Rhs, N) \ do { \ if (N) \ (Current) = (Rhs)[1]; \ else \ (Current) = (Rhs)[0]; \ } while (0) /* * Bison doesn't allocate anything that needs to live across parser calls, * so we can easily have it use palloc instead of malloc. This prevents * memory leaks if we error out during parsing. Note this only works with * bison >= 2.0. However, in bison 1.875 the default is to use alloca() * if possible, so there's not really much problem anyhow, at least if * you're building with gcc. */ #define YYMALLOC palloc #define YYFREE pfree typedef struct { int location; } 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, bool trim, int *startloc, int *endtoken); static PLpgSQL_expr *read_sql_expression(int until, const char *expected); static PLpgSQL_expr *read_sql_expression2(int until, int until2, const char *expected, int *endtoken); static PLpgSQL_expr *read_sql_stmt(void); static PLpgSQL_type *read_datatype(int tok); static PLpgSQL_stmt *make_execsql_stmt(int firsttoken, int location); static PLpgSQL_stmt_fetch *read_fetch_direction(void); static void complete_direction(PLpgSQL_stmt_fetch *fetch, bool *check_FROM); static PLpgSQL_stmt *make_return_stmt(int location); static PLpgSQL_stmt *make_return_next_stmt(int location); static PLpgSQL_stmt *make_return_query_stmt(int location); static PLpgSQL_stmt *make_case(int location, PLpgSQL_expr *t_expr, List *case_when_list, List *else_stmts); static char *NameOfDatum(PLwdatum *wdatum); static void check_assignable(PLpgSQL_datum *datum, int location); static void read_into_target(PLpgSQL_variable **target, bool *strict); static PLpgSQL_row *read_into_scalar_list(char *initial_name, PLpgSQL_datum *initial_datum, int initial_location); static PLpgSQL_row *make_scalar_list1(char *initial_name, PLpgSQL_datum *initial_datum, int lineno, int location); static void check_sql_expr(const char *stmt, 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 120 "pl_gram.y" { core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ int ival; char *str; const char *keyword; PLword word; PLcword cword; PLwdatum wdatum; bool boolean; Oid oid; struct { char *name; int lineno; } varname; struct { char *name; int lineno; PLpgSQL_datum *scalar; PLpgSQL_datum *row; } forvariable; struct { char *label; int n_initvars; int *initvarnos; } declhdr; struct { List *stmts; char *end_label; int end_label_location; } loop_body; List *list; PLpgSQL_type *dtype; PLpgSQL_datum *datum; PLpgSQL_var *var; PLpgSQL_expr *expr; PLpgSQL_stmt *stmt; PLpgSQL_condition *condition; PLpgSQL_exception *exception; PLpgSQL_exception_block *exception_block; PLpgSQL_nsitem *nsitem; PLpgSQL_diag_item *diagitem; PLpgSQL_stmt_fetch *fetch; PLpgSQL_case_when *casewhen; } /* Line 193 of yacc.c. */ #line 531 "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 556 "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 1382 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 138 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 87 /* YYNRULES -- Number of rules. */ #define YYNRULES 252 /* YYNRULES -- Number of states. */ #define YYNSTATES 333 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 386 #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, 132, 2, 2, 2, 2, 134, 135, 2, 2, 136, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 133, 2, 137, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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 }; #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 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { 139, 0, -1, 140, 144, 143, -1, -1, 140, 141, -1, 132, 94, 57, -1, 132, 102, 142, -1, 132, 128, 62, -1, 132, 128, 126, -1, 132, 128, 125, -1, 22, -1, 224, -1, -1, 133, -1, 145, 34, 166, 210, 60, 221, -1, 219, -1, 219, 146, -1, 219, 146, 147, -1, 52, -1, 147, 148, -1, 148, -1, 149, -1, 52, -1, 25, 223, 26, -1, 158, 159, 160, 161, 162, 163, -1, 158, 28, 68, 157, 133, -1, -1, 158, 151, 49, 150, 153, 156, 152, -1, -1, 89, 115, -1, 115, -1, -1, -1, 134, 154, 135, -1, 155, -1, 154, 136, 155, -1, 158, 160, -1, 80, -1, 68, -1, 22, -1, 224, -1, 23, -1, 22, -1, 224, -1, -1, 44, -1, -1, -1, 40, 22, -1, 40, 224, -1, 40, 23, -1, -1, 90, 92, -1, 133, -1, 164, -1, 165, -1, 53, -1, 137, -1, 15, -1, -1, 166, 167, -1, 144, 133, -1, 170, -1, 177, -1, 180, -1, 185, -1, 186, -1, 187, -1, 190, -1, 192, -1, 194, -1, 195, -1, 196, -1, 198, -1, 199, -1, 168, -1, 169, -1, 171, -1, 200, -1, 201, -1, 202, -1, 204, -1, 205, -1, 206, -1, 207, -1, 96, -1, 36, -1, 56, -1, 24, -1, 72, 172, 55, 173, 133, -1, -1, 48, -1, 118, -1, 173, 136, 174, -1, 174, -1, 176, 165, 175, -1, -1, 24, -1, 22, -1, 23, -1, 74, 217, 166, 178, 179, 60, 74, 133, -1, -1, 178, 59, 217, 166, -1, -1, 58, 166, -1, 37, 181, 182, 184, 60, 37, 133, -1, -1, 182, 183, -1, 183, -1, 130, 217, 166, -1, -1, 58, 166, -1, 220, 83, 197, -1, 220, 131, 218, 197, -1, 220, 68, 188, 197, -1, 189, 76, -1, 24, -1, 22, -1, 23, -1, 220, 69, 189, 191, 76, 31, 218, 197, -1, -1, 116, 11, -1, 193, 221, 222, -1, 65, -1, 47, -1, 107, -1, 105, -1, 32, -1, 166, 60, 83, 221, 133, -1, 75, -1, 78, -1, 84, -1, 22, -1, 23, -1, 64, -1, 93, 209, -1, 66, 203, 209, 79, -1, 87, 203, 209, 133, -1, -1, 39, 209, 133, -1, 92, 133, -1, 43, 208, 133, -1, 110, 208, 133, -1, 30, 38, -1, 30, 89, 38, -1, -1, 24, -1, 22, -1, 23, -1, -1, -1, 63, 211, 212, -1, 212, 213, -1, 213, -1, 130, 214, 122, 166, -1, 214, 95, 215, -1, 215, -1, 223, -1, -1, -1, -1, -1, 25, 223, 26, -1, -1, 25, 223, 26, -1, -1, 223, -1, 133, -1, 130, 216, -1, 22, -1, 224, -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, 120, -1, 121, -1, 124, -1, 125, -1, 126, -1, 128, -1, 129, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 362, 362, 368, 369, 372, 376, 385, 389, 393, 399, 403, 408, 409, 412, 435, 443, 450, 459, 471, 472, 475, 476, 480, 493, 531, 537, 536, 590, 593, 597, 604, 610, 613, 644, 648, 654, 662, 663, 665, 680, 695, 723, 751, 782, 783, 788, 799, 800, 805, 810, 817, 818, 822, 824, 830, 831, 839, 840, 844, 845, 855, 857, 859, 861, 863, 865, 867, 869, 871, 873, 875, 877, 879, 881, 883, 885, 887, 889, 891, 893, 895, 897, 899, 901, 905, 941, 959, 980, 1019, 1082, 1085, 1089, 1095, 1099, 1105, 1118, 1162, 1180, 1185, 1192, 1210, 1213, 1227, 1230, 1236, 1243, 1257, 1261, 1267, 1279, 1282, 1297, 1315, 1334, 1368, 1627, 1653, 1667, 1674, 1713, 1716, 1722, 1775, 1779, 1785, 1811, 1956, 1980, 1998, 2002, 2006, 2010, 2021, 2034, 2098, 2176, 2206, 2219, 2224, 2238, 2245, 2259, 2274, 2275, 2276, 2280, 2302, 2307, 2315, 2317, 2316, 2358, 2362, 2368, 2381, 2390, 2396, 2433, 2437, 2441, 2445, 2449, 2457, 2461, 2469, 2472, 2479, 2481, 2488, 2492, 2496, 2505, 2506, 2507, 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2543, 2544, 2545, 2546, 2547, 2548, 2549, 2550, 2551, 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560, 2561, 2562, 2563, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2571, 2572, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2583, 2584, 2585 }; #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_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, 35, 59, 40, 41, 44, 61 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 138, 139, 140, 140, 141, 141, 141, 141, 141, 142, 142, 143, 143, 144, 145, 145, 145, 146, 147, 147, 148, 148, 148, 149, 149, 150, 149, 151, 151, 151, 152, 153, 153, 154, 154, 155, 156, 156, 157, 157, 157, 158, 158, 159, 159, 160, 161, 161, 161, 161, 162, 162, 163, 163, 164, 164, 165, 165, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 168, 169, 169, 170, 171, 172, 172, 172, 173, 173, 174, 175, 176, 176, 176, 177, 178, 178, 179, 179, 180, 181, 182, 182, 183, 184, 184, 185, 186, 187, 188, 189, 189, 189, 190, 191, 191, 192, 193, 193, 194, 195, 196, 197, 198, 198, 198, 198, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 208, 208, 209, 209, 209, 210, 211, 210, 212, 212, 213, 214, 214, 215, 216, 217, 218, 219, 219, 220, 220, 221, 221, 222, 222, 223, 223, 223, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224 }; /* 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 }; /* 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, 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, 106, 99, 147, 8, 102, 115, 116, 117, 247, 181, 324, 277, 299, 300, 304, 245, 118, 182, 213, 249, 282, 308, 309, 292, 240, 148, 149, 150, 151, 152, 195, 263, 264, 315, 265, 153, 266, 295, 154, 184, 216, 217, 253, 155, 156, 157, 237, 238, 158, 272, 159, 160, 161, 162, 163, 241, 164, 165, 166, 167, 168, 192, 169, 170, 171, 172, 190, 188, 173, 191, 223, 224, 255, 256, 268, 196, 242, 9, 174, 202, 232, 203, 94 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -253 static const yytype_int16 yypact[] = { -253, 36, -20, -253, 353, -49, -253, -87, 14, -2, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, 26, -253, -3, 674, -40, -253, -253, -253, -253, 245, -253, -253, -253, -253, -253, -253, -253, -253, 1041, -253, 353, -253, 245, -253, -253, -7, -253, -253, -253, -253, 353, -253, -253, -253, 49, 38, -253, -253, -253, -253, -253, -253, -38, -253, -253, -253, -253, -253, -59, 49, -253, -253, -253, 38, -34, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, 353, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, 34, -50, 80, -253, 27, -253, -5, -253, 58, -253, 85, -17, -253, -253, -253, -19, 1, -16, -14, 49, -253, -253, 63, -253, 49, -253, -253, -11, -253, -98, -253, 353, 69, 69, -253, -253, -253, 461, -253, -253, 83, -8, -253, -41, -253, -253, -253, 88, -253, 353, -14, -253, 48, 81, 887, -1, -253, -253, -253, -253, -253, -253, -253, -253, -253, 52, 13, 1118, -253, -253, -253, -253, 0, -253, 2, 569, 40, -253, -253, -253, 71, -253, -64, -253, -253, -253, -253, -253, -253, -253, -72, -253, -12, 18, -253, -253, -253, -253, 123, 59, 54, -253, -253, 779, -39, -253, -253, -253, 46, -13, -9, 1195, 102, 353, -253, -253, 81, -253, -253, -253, -253, -253, 82, -253, 109, 353, -76, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, 8, -253, 124, -253, -253, 1272, -253, 70, -253, 10, -253, 779, -253, -253, -253, 964, 12, -253, -253, -253, -253, -253 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -253, -253, -253, -253, -253, -253, 148, -253, -253, -253, 37, -253, -253, -253, -253, -253, -253, -171, -253, -253, -252, -253, -144, -253, -253, -253, -253, -123, -96, -253, -253, -253, -253, -253, -253, -253, -127, -253, -253, -253, -253, -253, -253, -253, -253, -52, -253, -253, -253, -253, -253, -37, -253, -253, -253, -253, -253, -253, -253, -231, -253, -253, -253, -253, -253, 25, -253, -253, -253, -253, 20, -130, -253, -253, -253, -55, -253, -116, -253, -206, -147, -253, -253, -196, -253, -4, -95 }; /* 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[] = { 93, 107, 290, 290, 111, 4, 269, 119, 233, 250, 193, 274, 199, 120, 121, 122, 123, 251, 205, 206, 119, 177, 108, 124, 301, -161, -162, 125, 126, 302, 127, 286, 230, 207, 128, 231, 3, 178, 129, 219, 306, 303, -28, -161, -162, 95, 98, 130, 100, -109, 101, -109, 103, 96, 104, 132, 133, 134, 287, 321, 322, 288, 225, 135, 289, 136, 137, 228, 189, 138, 301, 185, 186, 187, 198, 139, 293, 294, 140, 97, 194, 208, 179, 141, 142, 109, 110, 143, 317, 215, 220, 234, 235, 236, 204, 210, 144, 332, 145, 201, 227, 146, 320, 260, 261, 262, 209, 212, 180, 175, 211, 214, 5, 215, 218, 246, 222, 221, 226, 183, 307, -109, 229, 248, 291, 291, 254, 259, 270, 271, 281, 285, 267, 275, 296, 297, 276, 298, 305, 311, 319, 325, 318, 329, 327, 331, 120, 121, 122, 123, 7, 330, 176, 280, 283, 284, 124, 323, -161, 310, 125, 126, 314, 127, 252, 197, 200, 128, 258, 239, 312, 129, 328, 0, 0, 0, -161, 0, 0, 0, 130, 119, 0, 0, -154, 0, 0, 0, 132, 133, 134, 313, 0, 0, 0, 0, 135, 316, 136, 137, 0, 0, 138, 0, 0, 0, 0, 0, 139, 0, 0, 140, 0, 0, 0, 0, 141, 142, 257, 0, 143, 326, 0, 0, 0, 0, 0, 119, 0, 144, 0, 145, 0, 0, 146, 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, 112, 0, 0, 113, 0, 12, 13, 0, 14, 15, 16, 17, 0, 0, 18, 257, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 114, 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, 0, 86, 87, 0, 0, 88, 89, 90, 0, 91, 92, 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, 0, 86, 87, 0, 0, 88, 89, 90, 0, 91, 92, 243, 244, 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, 0, 86, 87, 0, 0, 88, 89, 90, 0, 91, 92, 278, 279, 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, 0, 86, 87, 0, 0, 88, 89, 90, 105, 91, 92, 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, 0, 86, 87, 0, 0, 88, 89, 90, 112, 91, 92, 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, 0, 86, 87, 0, 0, 88, 89, 90, 0, 91, 92, 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, 124, 0, -161, 0, 125, 126, 0, 127, 0, 0, 0, 128, 0, 0, 0, 129, 0, 0, 0, 0, -161, 0, 0, 0, 130, 0, -101, -101, -101, 0, 0, 0, 132, 133, 134, 0, 0, 0, 0, 0, 135, 0, 136, 137, 0, 0, 138, 0, 0, 0, 0, 0, 139, 0, 0, 140, 0, 0, 0, 0, 141, 142, 0, 0, 143, 0, 0, 120, 121, 122, 123, 0, 0, 144, 0, 145, 0, 124, 146, -161, 0, 125, 126, 0, 127, 0, 0, 0, 128, 0, 0, 0, 129, 0, 0, 0, 0, -161, 0, 0, 0, 130, 0, -102, -102, -102, 0, 0, 0, 132, 133, 134, 0, 0, 0, 0, 0, 135, 0, 136, 137, 0, 0, 138, 0, 0, 0, 0, 0, 139, 0, 0, 140, 0, 0, 0, 0, 141, 142, 0, 0, 143, 0, 0, 120, 121, 122, 123, 0, 0, 144, 0, 145, 0, 124, 146, -161, 0, 125, 126, 0, 127, 0, 0, 0, 128, 0, 0, 0, 129, 0, 0, 0, 0, -161, 0, 0, 0, 130, 0, 0, 0, -149, 0, 0, 131, 132, 133, 134, 0, 0, 0, 0, 0, 135, 0, 136, 137, 0, 0, 138, 0, 0, 0, 0, 0, 139, 0, 0, 140, 0, 0, 0, 0, 141, 142, 0, 0, 143, 0, 0, 120, 121, 122, 123, 0, 0, 144, 0, 145, 0, 124, 146, -161, 0, 125, 126, 0, 127, 0, 0, 0, 128, 0, 0, 0, 129, 0, 0, 0, 0, -161, 0, 0, 0, 130, 0, 0, 0, 273, 0, 0, 0, 132, 133, 134, 0, 0, 0, 0, 0, 135, 0, 136, 137, 0, 0, 138, 0, 0, 0, 0, 0, 139, 0, 0, 140, 0, 0, 0, 0, 141, 142, 0, 0, 143, 0, 0, 120, 121, 122, 123, 0, 0, 144, 0, 145, 0, 124, 146, -161, 0, 125, 126, 0, 127, 0, 0, 0, 128, 0, 0, 0, 129, 0, 0, 0, 0, -161, 0, 0, 0, 130, 0, 0, 0, -111, 0, 0, 0, 132, 133, 134, 0, 0, 0, 0, 0, 135, 0, 136, 137, 0, 0, 138, 0, 0, 0, 0, 0, 139, 0, 0, 140, 0, 0, 0, 0, 141, 142, 0, 0, 143, 0, 0, 120, 121, 122, 123, 0, 0, 144, 0, 145, 0, 124, 146, -161, 0, 125, 126, 0, 127, 0, 0, 0, 128, 0, 0, 0, 129, 0, 0, 0, 0, -161, 0, 0, 0, 130, 0, 0, 0, -104, 0, 0, 0, 132, 133, 134, 0, 0, 0, 0, 0, 135, 0, 136, 137, 0, 0, 138, 0, 0, 0, 0, 0, 139, 0, 0, 140, 0, 0, 0, 0, 141, 142, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 145, 0, 0, 146 }; static const yytype_int16 yycheck[] = { 4, 96, 15, 15, 100, 25, 237, 102, 204, 215, 48, 242, 142, 22, 23, 24, 25, 58, 68, 69, 115, 28, 62, 32, 276, 34, 34, 36, 37, 68, 39, 95, 130, 83, 43, 133, 0, 44, 47, 38, 53, 80, 49, 52, 52, 94, 133, 56, 34, 58, 52, 60, 26, 102, 57, 64, 65, 66, 122, 135, 136, 133, 192, 72, 136, 74, 75, 197, 30, 78, 322, 22, 23, 24, 133, 84, 58, 59, 87, 128, 118, 131, 89, 92, 93, 125, 126, 96, 294, 130, 89, 22, 23, 24, 60, 68, 105, 328, 107, 133, 196, 110, 298, 22, 23, 24, 26, 49, 115, 113, 115, 26, 132, 130, 133, 210, 130, 133, 55, 123, 133, 130, 133, 40, 137, 137, 38, 79, 76, 116, 90, 60, 133, 133, 11, 76, 134, 83, 92, 37, 31, 133, 60, 133, 74, 133, 22, 23, 24, 25, 2, 322, 115, 248, 250, 251, 32, 301, 34, 282, 36, 37, 289, 39, 216, 140, 146, 43, 223, 206, 286, 47, 319, -1, -1, -1, 52, -1, -1, -1, 56, 276, -1, -1, 60, -1, -1, -1, 64, 65, 66, 287, -1, -1, -1, -1, 72, 293, 74, 75, -1, -1, 78, -1, -1, -1, -1, -1, 84, -1, -1, 87, -1, -1, -1, -1, 92, 93, 222, -1, 96, 317, -1, -1, -1, -1, -1, 322, -1, 105, -1, 107, -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 130, -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, 286, 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, -1, 120, 121, -1, -1, 124, 125, 126, -1, 128, 129, 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, -1, 120, 121, -1, -1, 124, 125, 126, -1, 128, 129, 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, -1, 120, 121, -1, -1, 124, 125, 126, -1, 128, 129, 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, -1, 120, 121, -1, -1, 124, 125, 126, 22, 128, 129, -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, -1, 120, 121, -1, -1, 124, 125, 126, 22, 128, 129, -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, -1, 120, 121, -1, -1, 124, 125, 126, -1, 128, 129, 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, -1, -1, -1, -1, 92, 93, -1, -1, 96, -1, -1, 22, 23, 24, 25, -1, -1, 105, -1, 107, -1, 32, 110, 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, -1, -1, -1, -1, 92, 93, -1, -1, 96, -1, -1, 22, 23, 24, 25, -1, -1, 105, -1, 107, -1, 32, 110, 34, -1, 36, 37, -1, 39, -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, -1, -1, 52, -1, -1, -1, 56, -1, -1, -1, 60, -1, -1, 63, 64, 65, 66, -1, -1, -1, -1, -1, 72, -1, 74, 75, -1, -1, 78, -1, -1, -1, -1, -1, 84, -1, -1, 87, -1, -1, -1, -1, 92, 93, -1, -1, 96, -1, -1, 22, 23, 24, 25, -1, -1, 105, -1, 107, -1, 32, 110, 34, -1, 36, 37, -1, 39, -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, -1, -1, 52, -1, -1, -1, 56, -1, -1, -1, 60, -1, -1, -1, 64, 65, 66, -1, -1, -1, -1, -1, 72, -1, 74, 75, -1, -1, 78, -1, -1, -1, -1, -1, 84, -1, -1, 87, -1, -1, -1, -1, 92, 93, -1, -1, 96, -1, -1, 22, 23, 24, 25, -1, -1, 105, -1, 107, -1, 32, 110, 34, -1, 36, 37, -1, 39, -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, -1, -1, 52, -1, -1, -1, 56, -1, -1, -1, 60, -1, -1, -1, 64, 65, 66, -1, -1, -1, -1, -1, 72, -1, 74, 75, -1, -1, 78, -1, -1, -1, -1, -1, 84, -1, -1, 87, -1, -1, -1, -1, 92, 93, -1, -1, 96, -1, -1, 22, 23, 24, 25, -1, -1, 105, -1, 107, -1, 32, 110, 34, -1, 36, 37, -1, 39, -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, -1, -1, 52, -1, -1, -1, 56, -1, -1, -1, 60, -1, -1, -1, 64, 65, 66, -1, -1, -1, -1, -1, 72, -1, 74, 75, -1, -1, 78, -1, -1, -1, -1, -1, 84, -1, -1, 87, -1, -1, -1, -1, 92, 93, -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, 105, -1, 107, -1, -1, 110 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 139, 140, 0, 25, 132, 141, 144, 145, 219, 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, 120, 121, 124, 125, 126, 128, 129, 223, 224, 94, 102, 128, 133, 143, 34, 52, 146, 26, 57, 22, 142, 224, 62, 125, 126, 166, 22, 25, 52, 147, 148, 149, 158, 224, 22, 23, 24, 25, 32, 36, 37, 39, 43, 47, 56, 63, 64, 65, 66, 72, 74, 75, 78, 84, 87, 92, 93, 96, 105, 107, 110, 144, 167, 168, 169, 170, 171, 177, 180, 185, 186, 187, 190, 192, 193, 194, 195, 196, 198, 199, 200, 201, 202, 204, 205, 206, 207, 210, 220, 223, 148, 28, 44, 89, 115, 151, 159, 223, 181, 22, 23, 24, 209, 30, 208, 211, 203, 48, 118, 172, 217, 203, 133, 209, 208, 133, 221, 223, 60, 68, 69, 83, 131, 26, 68, 115, 49, 160, 26, 130, 182, 183, 133, 38, 89, 133, 130, 212, 213, 209, 55, 166, 209, 133, 130, 133, 222, 221, 22, 23, 24, 188, 189, 189, 166, 197, 218, 22, 23, 157, 224, 150, 40, 161, 217, 58, 183, 184, 38, 214, 215, 223, 213, 79, 22, 23, 24, 173, 174, 176, 178, 133, 216, 197, 76, 116, 191, 60, 197, 133, 134, 153, 22, 23, 224, 90, 162, 166, 166, 60, 95, 122, 133, 136, 15, 137, 165, 58, 59, 179, 11, 76, 83, 154, 155, 158, 68, 80, 156, 92, 53, 133, 163, 164, 165, 37, 215, 166, 174, 175, 166, 217, 60, 31, 221, 135, 136, 160, 152, 133, 166, 74, 218, 133, 155, 133, 197 }; #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 363 "pl_gram.y" { plpgsql_parse_result = (PLpgSQL_stmt_block *) (yyvsp[(2) - (3)].stmt); ;} break; case 5: #line 373 "pl_gram.y" { plpgsql_DumpExecTree = true; ;} break; case 6: #line 377 "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 386 "pl_gram.y" { plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_ERROR; ;} break; case 8: #line 390 "pl_gram.y" { plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_VARIABLE; ;} break; case 9: #line 394 "pl_gram.y" { plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_COLUMN; ;} break; case 10: #line 400 "pl_gram.y" { (yyval.str) = (yyvsp[(1) - (1)].word).ident; ;} break; case 11: #line 404 "pl_gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 14: #line 413 "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 436 "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 444 "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 451 "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 460 "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 477 "pl_gram.y" { /* We allow useless extra DECLAREs */ ;} break; case 23: #line 481 "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 494 "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 532 "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 537 "pl_gram.y" { plpgsql_ns_push((yyvsp[(1) - (3)].varname).name, PLPGSQL_LABEL_OTHER); ;} break; case 27: #line 539 "pl_gram.y" { PLpgSQL_var *new; PLpgSQL_expr *curname_def; char buf[NAMEDATALEN * 2 + 64]; char *cp1; char *cp2; /* pop local namespace for cursor args */ plpgsql_ns_pop(); new = (PLpgSQL_var *) plpgsql_build_variable((yyvsp[(1) - (7)].varname).name, (yyvsp[(1) - (7)].varname).lineno, plpgsql_build_datatype(REFCURSOROID, -1, InvalidOid, NULL), true); curname_def = palloc0(sizeof(PLpgSQL_expr)); /* Note: refname has been truncated to NAMEDATALEN */ cp1 = new->refname; cp2 = buf; /* * Don't trust standard_conforming_strings here; * it might change before we use the string. */ if (strchr(cp1, '\\') != NULL) *cp2++ = ESCAPE_STRING_SYNTAX; *cp2++ = '\''; while (*cp1) { if (SQL_STR_DOUBLE(*cp1, true)) *cp2++ = *cp1; *cp2++ = *cp1++; } strcpy(cp2, "'::pg_catalog.refcursor"); curname_def->query = pstrdup(buf); curname_def->parseMode = RAW_PARSE_PLPGSQL_EXPR; new->default_val = curname_def; new->cursor_explicit_expr = (yyvsp[(7) - (7)].expr); if ((yyvsp[(5) - (7)].datum) == NULL) new->cursor_explicit_argrow = -1; else new->cursor_explicit_argrow = (yyvsp[(5) - (7)].datum)->dno; new->cursor_options = CURSOR_OPT_FAST_PLAN | (yyvsp[(2) - (7)].ival); ;} break; case 28: #line 590 "pl_gram.y" { (yyval.ival) = 0; ;} break; case 29: #line 594 "pl_gram.y" { (yyval.ival) = CURSOR_OPT_NO_SCROLL; ;} break; case 30: #line 598 "pl_gram.y" { (yyval.ival) = CURSOR_OPT_SCROLL; ;} break; case 31: #line 604 "pl_gram.y" { (yyval.expr) = read_sql_stmt(); ;} break; case 32: #line 610 "pl_gram.y" { (yyval.datum) = NULL; ;} break; case 33: #line 614 "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 645 "pl_gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].datum)); ;} break; case 35: #line 649 "pl_gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].datum)); ;} break; case 36: #line 655 "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 666 "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 681 "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 696 "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 724 "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 752 "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 782 "pl_gram.y" { (yyval.boolean) = false; ;} break; case 45: #line 784 "pl_gram.y" { (yyval.boolean) = true; ;} break; case 46: #line 788 "pl_gram.y" { /* * If there's a lookahead token, read_datatype * should consume it. */ (yyval.dtype) = read_datatype(yychar); yyclearin; ;} break; case 47: #line 799 "pl_gram.y" { (yyval.oid) = InvalidOid; ;} break; case 48: #line 801 "pl_gram.y" { (yyval.oid) = get_collation_oid(list_make1(makeString((yyvsp[(2) - (2)].word).ident)), false); ;} break; case 49: #line 806 "pl_gram.y" { (yyval.oid) = get_collation_oid(list_make1(makeString(pstrdup((yyvsp[(2) - (2)].keyword)))), false); ;} break; case 50: #line 811 "pl_gram.y" { (yyval.oid) = get_collation_oid((yyvsp[(2) - (2)].cword).idents, false); ;} break; case 51: #line 817 "pl_gram.y" { (yyval.boolean) = false; ;} break; case 52: #line 819 "pl_gram.y" { (yyval.boolean) = true; ;} break; case 53: #line 823 "pl_gram.y" { (yyval.expr) = NULL; ;} break; case 54: #line 825 "pl_gram.y" { (yyval.expr) = read_sql_expression(';', ";"); ;} break; case 59: #line 844 "pl_gram.y" { (yyval.list) = NIL; ;} break; case 60: #line 846 "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 856 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (2)].stmt); ;} break; case 62: #line 858 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 63: #line 860 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 64: #line 862 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 65: #line 864 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 66: #line 866 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 67: #line 868 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 68: #line 870 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 69: #line 872 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 70: #line 874 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 71: #line 876 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 72: #line 878 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 73: #line 880 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 74: #line 882 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 75: #line 884 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 76: #line 886 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 77: #line 888 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 78: #line 890 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 79: #line 892 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 80: #line 894 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 81: #line 896 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 82: #line 898 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 83: #line 900 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 84: #line 902 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 85: #line 906 "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, true, &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 942 "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 960 "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 981 "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, true, NULL, NULL); (yyval.stmt) = (PLpgSQL_stmt *) new; ;} break; case 89: #line 1020 "pl_gram.y" { PLpgSQL_stmt_getdiag *new; ListCell *lc; new = palloc0(sizeof(PLpgSQL_stmt_getdiag)); new->cmd_type = PLPGSQL_STMT_GETDIAG; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (5)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->is_stacked = (yyvsp[(2) - (5)].boolean); new->diag_items = (yyvsp[(4) - (5)].list); /* * Check information items are valid for area option. */ foreach(lc, new->diag_items) { PLpgSQL_diag_item *ditem = (PLpgSQL_diag_item *) lfirst(lc); switch (ditem->kind) { /* these fields are disallowed in stacked case */ case PLPGSQL_GETDIAG_ROW_COUNT: if (new->is_stacked) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("diagnostics item %s is not allowed in GET STACKED DIAGNOSTICS", plpgsql_getdiag_kindname(ditem->kind)), parser_errposition((yylsp[(1) - (5)])))); break; /* these fields are disallowed in current case */ case PLPGSQL_GETDIAG_ERROR_CONTEXT: case PLPGSQL_GETDIAG_ERROR_DETAIL: case PLPGSQL_GETDIAG_ERROR_HINT: case PLPGSQL_GETDIAG_RETURNED_SQLSTATE: case PLPGSQL_GETDIAG_COLUMN_NAME: case PLPGSQL_GETDIAG_CONSTRAINT_NAME: case PLPGSQL_GETDIAG_DATATYPE_NAME: case PLPGSQL_GETDIAG_MESSAGE_TEXT: case PLPGSQL_GETDIAG_TABLE_NAME: case PLPGSQL_GETDIAG_SCHEMA_NAME: if (!new->is_stacked) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("diagnostics item %s is not allowed in GET CURRENT DIAGNOSTICS", plpgsql_getdiag_kindname(ditem->kind)), parser_errposition((yylsp[(1) - (5)])))); break; /* these fields are allowed in either case */ case PLPGSQL_GETDIAG_CONTEXT: break; default: elog(ERROR, "unrecognized diagnostic item kind: %d", ditem->kind); break; } } (yyval.stmt) = (PLpgSQL_stmt *) new; ;} break; case 90: #line 1082 "pl_gram.y" { (yyval.boolean) = false; ;} break; case 91: #line 1086 "pl_gram.y" { (yyval.boolean) = false; ;} break; case 92: #line 1090 "pl_gram.y" { (yyval.boolean) = true; ;} break; case 93: #line 1096 "pl_gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].diagitem)); ;} break; case 94: #line 1100 "pl_gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].diagitem)); ;} break; case 95: #line 1106 "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 1118 "pl_gram.y" { int tok = yylex(); if (tok_is_keyword(tok, &yylval, K_ROW_COUNT, "row_count")) (yyval.ival) = PLPGSQL_GETDIAG_ROW_COUNT; else if (tok_is_keyword(tok, &yylval, K_PG_CONTEXT, "pg_context")) (yyval.ival) = PLPGSQL_GETDIAG_CONTEXT; else if (tok_is_keyword(tok, &yylval, K_PG_EXCEPTION_DETAIL, "pg_exception_detail")) (yyval.ival) = PLPGSQL_GETDIAG_ERROR_DETAIL; else if (tok_is_keyword(tok, &yylval, K_PG_EXCEPTION_HINT, "pg_exception_hint")) (yyval.ival) = PLPGSQL_GETDIAG_ERROR_HINT; else if (tok_is_keyword(tok, &yylval, K_PG_EXCEPTION_CONTEXT, "pg_exception_context")) (yyval.ival) = PLPGSQL_GETDIAG_ERROR_CONTEXT; else if (tok_is_keyword(tok, &yylval, K_COLUMN_NAME, "column_name")) (yyval.ival) = PLPGSQL_GETDIAG_COLUMN_NAME; else if (tok_is_keyword(tok, &yylval, K_CONSTRAINT_NAME, "constraint_name")) (yyval.ival) = PLPGSQL_GETDIAG_CONSTRAINT_NAME; else if (tok_is_keyword(tok, &yylval, K_PG_DATATYPE_NAME, "pg_datatype_name")) (yyval.ival) = PLPGSQL_GETDIAG_DATATYPE_NAME; else if (tok_is_keyword(tok, &yylval, K_MESSAGE_TEXT, "message_text")) (yyval.ival) = PLPGSQL_GETDIAG_MESSAGE_TEXT; else if (tok_is_keyword(tok, &yylval, K_TABLE_NAME, "table_name")) (yyval.ival) = PLPGSQL_GETDIAG_TABLE_NAME; else if (tok_is_keyword(tok, &yylval, K_SCHEMA_NAME, "schema_name")) (yyval.ival) = PLPGSQL_GETDIAG_SCHEMA_NAME; else if (tok_is_keyword(tok, &yylval, K_RETURNED_SQLSTATE, "returned_sqlstate")) (yyval.ival) = PLPGSQL_GETDIAG_RETURNED_SQLSTATE; else yyerror("unrecognized GET DIAGNOSTICS item"); ;} break; case 97: #line 1163 "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 1181 "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 1186 "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 1193 "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 1210 "pl_gram.y" { (yyval.list) = NIL; ;} break; case 102: #line 1214 "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 1227 "pl_gram.y" { (yyval.list) = NIL; ;} break; case 104: #line 1231 "pl_gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 105: #line 1237 "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 1243 "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 1258 "pl_gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].casewhen)); ;} break; case 108: #line 1262 "pl_gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].casewhen)); ;} break; case 109: #line 1268 "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 1279 "pl_gram.y" { (yyval.list) = NIL; ;} break; case 111: #line 1283 "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 1298 "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 1316 "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 1335 "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 1369 "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, true, &expr1loc, &tok); if (tok == DOT_DOT) { /* Saw "..", so it must be an integer loop */ PLpgSQL_expr *expr2; PLpgSQL_expr *expr_by; PLpgSQL_var *fvar; PLpgSQL_stmt_fori *new; /* * 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 1628 "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 1654 "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 1668 "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 1675 "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 1713 "pl_gram.y" { (yyval.ival) = 0; ;} break; case 121: #line 1717 "pl_gram.y" { (yyval.ival) = (yyvsp[(2) - (2)].ival); ;} break; case 122: #line 1723 "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 1776 "pl_gram.y" { (yyval.boolean) = true; ;} break; case 124: #line 1780 "pl_gram.y" { (yyval.boolean) = false; ;} break; case 125: #line 1786 "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 1812 "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, 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 1957 "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 1981 "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 1999 "pl_gram.y" { (yyval.stmt) = make_execsql_stmt(K_IMPORT, (yylsp[(1) - (1)])); ;} break; case 130: #line 2003 "pl_gram.y" { (yyval.stmt) = make_execsql_stmt(K_INSERT, (yylsp[(1) - (1)])); ;} break; case 131: #line 2007 "pl_gram.y" { (yyval.stmt) = make_execsql_stmt(K_MERGE, (yylsp[(1) - (1)])); ;} break; case 132: #line 2011 "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)])); ;} break; case 133: #line 2022 "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)])); ;} break; case 134: #line 2035 "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, 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, 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 2099 "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 2177 "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 2207 "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 2219 "pl_gram.y" { (yyval.fetch) = read_fetch_direction(); ;} break; case 139: #line 2225 "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 2239 "pl_gram.y" { /* We do not bother building a node for NULL */ (yyval.stmt) = NULL; ;} break; case 141: #line 2246 "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 2260 "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 2274 "pl_gram.y" { (yyval.ival) = true; ;} break; case 144: #line 2275 "pl_gram.y" { (yyval.ival) = false; ;} break; case 145: #line 2276 "pl_gram.y" { (yyval.ival) = false; ;} break; case 146: #line 2281 "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 2303 "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 2308 "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 2315 "pl_gram.y" { (yyval.exception_block) = NULL; ;} break; case 150: #line 2317 "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 2350 "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 2359 "pl_gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].exception)); ;} break; case 153: #line 2363 "pl_gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].exception)); ;} break; case 154: #line 2369 "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 2382 "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 2391 "pl_gram.y" { (yyval.condition) = (yyvsp[(1) - (1)].condition); ;} break; case 157: #line 2397 "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 2433 "pl_gram.y" { (yyval.expr) = read_sql_expression(';', ";"); ;} break; case 159: #line 2437 "pl_gram.y" { (yyval.expr) = read_sql_expression(K_THEN, "THEN"); ;} break; case 160: #line 2441 "pl_gram.y" { (yyval.expr) = read_sql_expression(K_LOOP, "LOOP"); ;} break; case 161: #line 2445 "pl_gram.y" { plpgsql_ns_push(NULL, PLPGSQL_LABEL_BLOCK); (yyval.str) = NULL; ;} break; case 162: #line 2450 "pl_gram.y" { plpgsql_ns_push((yyvsp[(2) - (3)].str), PLPGSQL_LABEL_BLOCK); (yyval.str) = (yyvsp[(2) - (3)].str); ;} break; case 163: #line 2457 "pl_gram.y" { plpgsql_ns_push(NULL, PLPGSQL_LABEL_LOOP); (yyval.str) = NULL; ;} break; case 164: #line 2462 "pl_gram.y" { plpgsql_ns_push((yyvsp[(2) - (3)].str), PLPGSQL_LABEL_LOOP); (yyval.str) = (yyvsp[(2) - (3)].str); ;} break; case 165: #line 2469 "pl_gram.y" { (yyval.str) = NULL; ;} break; case 166: #line 2473 "pl_gram.y" { /* label validity will be checked by outer production */ (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 167: #line 2480 "pl_gram.y" { (yyval.expr) = NULL; ;} break; case 168: #line 2482 "pl_gram.y" { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;} break; case 169: #line 2489 "pl_gram.y" { (yyval.str) = (yyvsp[(1) - (1)].word).ident; ;} break; case 170: #line 2493 "pl_gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 171: #line 2497 "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 4780 "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 2588 "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, 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, 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, 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 * trim: trim trailing whitespace * startloc: if not NULL, location of first token is stored at *startloc * endtoken: if not NULL, ending token is stored at *endtoken * (this is only interesting if until2 or until3 isn't zero) */ static PLpgSQL_expr * read_sql_construct(int until, int until2, int until3, const char *expected, RawParseMode parsemode, bool isexpression, bool valid_sql, bool trim, int *startloc, int *endtoken) { int tok; StringInfoData ds; IdentifierLookup save_IdentifierLookup; int startlocation = -1; int parenlevel = 0; PLpgSQL_expr *expr; initStringInfo(&ds); /* special lookup mode for identifiers within the SQL text */ save_IdentifierLookup = plpgsql_IdentifierLookup; plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_EXPR; for (;;) { tok = yylex(); if (startlocation < 0) /* remember loc of first token */ startlocation = yylloc; if (tok == until && parenlevel == 0) break; if (tok == until2 && parenlevel == 0) break; if (tok == until3 && parenlevel == 0) break; if (tok == '(' || tok == '[') parenlevel++; else if (tok == ')' || tok == ']') { parenlevel--; if (parenlevel < 0) yyerror("mismatched parentheses"); } /* * End of function definition is an error, and we don't expect to * hit a semicolon either (unless it's the until symbol, in which * case we should have fallen out above). */ if (tok == 0 || tok == ';') { if (parenlevel != 0) yyerror("mismatched parentheses"); if (isexpression) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("missing \"%s\" at end of SQL expression", expected), parser_errposition(yylloc))); else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("missing \"%s\" at end of SQL statement", expected), parser_errposition(yylloc))); } } plpgsql_IdentifierLookup = save_IdentifierLookup; if (startloc) *startloc = startlocation; if (endtoken) *endtoken = tok; /* give helpful complaint about empty input */ if (startlocation >= yylloc) { if (isexpression) yyerror("missing expression"); else yyerror("missing SQL statement"); } plpgsql_append_source_text(&ds, startlocation, yylloc); /* trim any trailing whitespace, for neatness */ if (trim) { while (ds.len > 0 && scanner_isspace(ds.data[ds.len - 1])) ds.data[--ds.len] = '\0'; } expr = palloc0(sizeof(PLpgSQL_expr)); expr->query = pstrdup(ds.data); expr->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; } static PLpgSQL_type * read_datatype(int tok) { StringInfoData ds; char *type_name; int startlocation; PLpgSQL_type *result; int parenlevel = 0; /* Should only be called while parsing DECLARE sections */ Assert(plpgsql_IdentifierLookup == IDENTIFIER_LOOKUP_DECLARE); /* Often there will be a lookahead token, but if not, get one */ if (tok == YYEMPTY) tok = yylex(); startlocation = yylloc; /* * If we have a simple or composite identifier, check for %TYPE * and %ROWTYPE constructs. */ if (tok == T_WORD) { char *dtname = yylval.word.ident; tok = yylex(); if (tok == '%') { tok = yylex(); if (tok_is_keyword(tok, &yylval, K_TYPE, "type")) { result = plpgsql_parse_wordtype(dtname); if (result) return result; } else if (tok_is_keyword(tok, &yylval, K_ROWTYPE, "rowtype")) { result = plpgsql_parse_wordrowtype(dtname); if (result) return result; } } } else if (plpgsql_token_is_unreserved_keyword(tok)) { char *dtname = pstrdup(yylval.keyword); tok = yylex(); if (tok == '%') { tok = yylex(); if (tok_is_keyword(tok, &yylval, K_TYPE, "type")) { result = plpgsql_parse_wordtype(dtname); if (result) return result; } else if (tok_is_keyword(tok, &yylval, K_ROWTYPE, "rowtype")) { result = plpgsql_parse_wordrowtype(dtname); if (result) return result; } } } else if (tok == T_CWORD) { List *dtnames = yylval.cword.idents; tok = yylex(); if (tok == '%') { tok = yylex(); if (tok_is_keyword(tok, &yylval, K_TYPE, "type")) { result = plpgsql_parse_cwordtype(dtnames); if (result) return result; } else if (tok_is_keyword(tok, &yylval, K_ROWTYPE, "rowtype")) { result = plpgsql_parse_cwordrowtype(dtnames); if (result) return result; } } } while (tok != ';') { if (tok == 0) { if (parenlevel != 0) yyerror("mismatched parentheses"); else yyerror("incomplete data type declaration"); } /* Possible followers for datatype in a declaration */ if (tok == K_COLLATE || tok == K_NOT || tok == '=' || tok == COLON_EQUALS || tok == K_DEFAULT) break; /* Possible followers for datatype in a cursor_arg list */ if ((tok == ',' || tok == ')') && parenlevel == 0) break; if (tok == '(') parenlevel++; else if (tok == ')') parenlevel--; tok = yylex(); } /* set up ds to contain complete typename text */ initStringInfo(&ds); plpgsql_append_source_text(&ds, startlocation, yylloc); type_name = ds.data; if (type_name[0] == '\0') yyerror("missing data type declaration"); result = parse_datatype(type_name, startlocation); pfree(ds.data); plpgsql_push_back_token(tok); return result; } static PLpgSQL_stmt * make_execsql_stmt(int firsttoken, int location) { StringInfoData ds; IdentifierLookup save_IdentifierLookup; PLpgSQL_stmt_execsql *execsql; PLpgSQL_expr *expr; PLpgSQL_variable *target = NULL; int tok; int prev_tok; bool have_into = false; bool have_strict = false; int into_start_loc = -1; int into_end_loc = -1; initStringInfo(&ds); /* special lookup mode for identifiers within the SQL text */ save_IdentifierLookup = plpgsql_IdentifierLookup; plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_EXPR; /* * Scan to the end of the SQL command. Identify any INTO-variables * clause lurking within it, and parse that via read_into_target(). * * Because INTO is sometimes used in the main SQL grammar, we have to be * careful not to take any such usage of INTO as a PL/pgSQL INTO clause. * There are currently three such cases: * * 1. SELECT ... INTO. We don't care, we just override that with the * PL/pgSQL definition. * * 2. INSERT INTO. This is relatively easy to recognize since the words * must appear adjacently; but we can't assume INSERT starts the command, * because it can appear in CREATE RULE or WITH. Unfortunately, INSERT is * *not* fully reserved, so that means there is a chance of a false match; * but it's not very likely. * * 3. IMPORT FOREIGN SCHEMA ... INTO. This is not allowed in CREATE RULE * or WITH, so we just check for IMPORT as the command's first token. * (If IMPORT FOREIGN SCHEMA returned data someone might wish to capture * with an INTO-variables clause, we'd have to work much harder here.) * * Fortunately, INTO is a fully reserved word in the main grammar, so * at least we need not worry about it appearing as an identifier. * * Any future additional uses of INTO in the main grammar will doubtless * break this logic again ... beware! */ tok = firsttoken; for (;;) { prev_tok = tok; tok = yylex(); if (have_into && into_end_loc < 0) into_end_loc = yylloc; /* token after the INTO part */ if (tok == ';') break; if (tok == 0) yyerror("unexpected end of function definition"); if (tok == K_INTO) { if (prev_tok == K_INSERT) continue; /* INSERT INTO is not an INTO-target */ if (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 we don't * document it because of the ambiguity with the omitted-direction * case. For instance, "MOVE n IN c" will fail if n is a variable. * Perhaps this can be improved someday, but it's hardly worth a * lot of work. */ plpgsql_push_back_token(tok); fetch->expr = read_sql_expression2(K_FROM, K_IN, "FROM or IN", NULL); fetch->returns_multiple_rows = true; check_FROM = false; } /* check FROM or IN keyword after direction's specification */ if (check_FROM) { tok = yylex(); if (tok != K_FROM && tok != K_IN) yyerror("expected FROM or IN"); } return fetch; } /* * Process remainder of FETCH/MOVE direction after FORWARD or BACKWARD. * Allows these cases: * FORWARD expr, FORWARD ALL, FORWARD * BACKWARD expr, BACKWARD ALL, BACKWARD */ static void complete_direction(PLpgSQL_stmt_fetch *fetch, bool *check_FROM) { int tok; tok = yylex(); if (tok == 0) yyerror("unexpected end of function definition"); if (tok == K_FROM || tok == K_IN) { *check_FROM = false; return; } if (tok == K_ALL) { fetch->how_many = FETCH_ALL; fetch->returns_multiple_rows = true; *check_FROM = true; return; } plpgsql_push_back_token(tok); fetch->expr = read_sql_expression2(K_FROM, K_IN, "FROM or IN", NULL); fetch->returns_multiple_rows = true; *check_FROM = false; } static PLpgSQL_stmt * make_return_stmt(int location) { PLpgSQL_stmt_return *new; Assert(plpgsql_curr_compile->fn_rettype == VOIDOID); new = palloc0(sizeof(PLpgSQL_stmt_return)); new->cmd_type = PLPGSQL_STMT_RETURN; new->lineno = plpgsql_location_to_lineno(location); new->expr = NULL; new->retvarno = -1; int tok = yylex(); if (tok != ';') { plpgsql_push_back_token(tok); new->expr = read_sql_expression(';', ";"); } return (PLpgSQL_stmt *) new; } static PLpgSQL_stmt * make_return_next_stmt(int location) { PLpgSQL_stmt_return_next *new; if (!plpgsql_curr_compile->fn_retset) ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), errmsg("cannot use RETURN NEXT in a non-SETOF function"), parser_errposition(location))); new = palloc0(sizeof(PLpgSQL_stmt_return_next)); new->cmd_type = PLPGSQL_STMT_RETURN_NEXT; new->lineno = plpgsql_location_to_lineno(location); new->stmtid = ++plpgsql_curr_compile->nstatements; new->expr = NULL; new->retvarno = -1; if (plpgsql_curr_compile->out_param_varno >= 0) { if (yylex() != ';') ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), errmsg("RETURN NEXT cannot have a parameter in function with OUT parameters"), parser_errposition(yylloc))); new->retvarno = plpgsql_curr_compile->out_param_varno; } else { /* * We want to special-case simple variable references for efficiency. * So peek ahead to see if that's what we have. */ int tok = yylex(); if (tok == T_DATUM && plpgsql_peek() == ';' && (yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_VAR || yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_PROMISE || yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_ROW || yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_REC)) { new->retvarno = yylval.wdatum.datum->dno; /* eat the semicolon token that we only peeked at above */ tok = yylex(); Assert(tok == ';'); } else { /* * Not (just) a variable name, so treat as expression. * * Note that a well-formed expression is _required_ here; * anything else is a compile-time error. */ plpgsql_push_back_token(tok); new->expr = read_sql_expression(';', ";"); } } return (PLpgSQL_stmt *) new; } static PLpgSQL_stmt * make_return_query_stmt(int location) { PLpgSQL_stmt_return_query *new; int tok; if (!plpgsql_curr_compile->fn_retset) ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), errmsg("cannot use RETURN QUERY in a non-SETOF function"), parser_errposition(location))); new = palloc0(sizeof(PLpgSQL_stmt_return_query)); new->cmd_type = PLPGSQL_STMT_RETURN_QUERY; new->lineno = plpgsql_location_to_lineno(location); new->stmtid = ++plpgsql_curr_compile->nstatements; /* check for RETURN QUERY EXECUTE */ if ((tok = yylex()) != K_EXECUTE) { /* ordinary static query */ plpgsql_push_back_token(tok); new->query = read_sql_stmt(); } else { /* dynamic SQL */ int term; new->dynquery = read_sql_expression2(';', K_USING, "; or USING", &term); if (term == K_USING) { do { PLpgSQL_expr *expr; expr = read_sql_expression2(',', ';', ", or ;", &term); new->params = lappend(new->params, expr); } while (term == ','); } } return (PLpgSQL_stmt *) new; } /* convenience routine to fetch the name of a T_DATUM */ static char * NameOfDatum(PLwdatum *wdatum) { if (wdatum->ident) return wdatum->ident; Assert(wdatum->idents != NIL); return NameListToString(wdatum->idents); } static void check_assignable(PLpgSQL_datum *datum, int location) { switch (datum->dtype) { case PLPGSQL_DTYPE_VAR: case PLPGSQL_DTYPE_PROMISE: case PLPGSQL_DTYPE_REC: if (((PLpgSQL_variable *) datum)->isconst) ereport(ERROR, (errcode(ERRCODE_ERROR_IN_ASSIGNMENT), errmsg("variable \"%s\" is declared CONSTANT", ((PLpgSQL_variable *) datum)->refname), parser_errposition(location))); break; case PLPGSQL_DTYPE_ROW: /* always assignable; member vars were checked at compile time */ break; case PLPGSQL_DTYPE_RECFIELD: /* assignable if parent record is */ check_assignable(plpgsql_Datums[((PLpgSQL_recfield *) datum)->recparentno], location); break; 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. */ static PLpgSQL_type * parse_datatype(const char *string, int location) { PLpgSQL_type *typ; typ = (PLpgSQL_type *) palloc0(sizeof(PLpgSQL_type)); typ->typname = pstrdup(string); typ->ttype = strcmp(string, "RECORD") == 0 ? PLPGSQL_TTYPE_REC : PLPGSQL_TTYPE_SCALAR; return typ; } /* * Check block starting and ending labels match. */ static void check_labels(const char *start_label, const char *end_label, int end_location) { if (end_label) { if (!start_label) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("end label \"%s\" specified for unlabeled block", end_label), parser_errposition(end_location))); if (strcmp(start_label, end_label) != 0) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("end label \"%s\" differs from block's label \"%s\"", end_label, start_label), parser_errposition(end_location))); } } /* * Read the arguments (if any) for a cursor, followed by the until token * * If cursor has no args, just swallow the until token and return NULL. * If it does have args, we expect to see "( arg [, arg ...] )" followed * by the until token, where arg may be a plain expression, or a named * parameter assignment of the form argname := expr. Consume all that and * return a SELECT query that evaluates the expression(s) (without the outer * parens). */ static PLpgSQL_expr * read_cursor_args(PLpgSQL_var *cursor, int until) { 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. Trailing whitespace must not be trimmed, because * otherwise input of the form (param -- comment\n, param) would be * translated into a form where the second parameter is commented * out. */ item = read_sql_construct(',', ')', 0, ",\" or \")", RAW_PARSE_PLPGSQL_EXPR, true, true, false, /* do not trim */ 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; } pg_query-4.2.3/ext/pg_query/pg_query_split.c0000644000004100000410000001355614510636647021276 0ustar www-datawww-data#include "pg_query.h" #include "pg_query_internal.h" #include "parser/gramparse.h" #include "lib/stringinfo.h" #include #include PgQuerySplitResult pg_query_split_with_scanner(const char* input) { MemoryContext ctx = NULL; PgQuerySplitResult result = {0}; core_yyscan_t yyscanner; core_yy_extra_type yyextra; core_YYSTYPE yylval; YYLTYPE yylloc; size_t curstmt = 0; bool keyword_before_terminator = false; int stmtstart = 0; bool is_keyword = false; size_t open_parens = 0; ctx = pg_query_enter_memory_context(); MemoryContext parse_context = CurrentMemoryContext; char stderr_buffer[STDERR_BUFFER_LEN + 1] = {0}; #ifndef DEBUG int stderr_global; int stderr_pipe[2]; #endif #ifndef DEBUG // Setup pipe for stderr redirection if (pipe(stderr_pipe) != 0) { PgQueryError* error = malloc(sizeof(PgQueryError)); error->message = strdup("Failed to open pipe, too many open file descriptors") result.error = error; return result; } fcntl(stderr_pipe[0], F_SETFL, fcntl(stderr_pipe[0], F_GETFL) | O_NONBLOCK); // Redirect stderr to the pipe stderr_global = dup(STDERR_FILENO); dup2(stderr_pipe[1], STDERR_FILENO); close(stderr_pipe[1]); #endif PG_TRY(); { // Really this is stupid, we only run twice so we can pre-allocate the output array correctly yyscanner = scanner_init(input, &yyextra, &ScanKeywords, ScanKeywordTokens); while (true) { int tok = core_yylex(&yylval, &yylloc, yyscanner); switch (tok) { #define PG_KEYWORD(a,b,c,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 = {}; ctx = pg_query_enter_memory_context(); parsetree_and_error = pg_query_raw_parse(input); // These are all malloc-ed and will survive exiting the memory context, the caller is responsible to free them now result.stderr_buffer = parsetree_and_error.stderr_buffer; result.error = parsetree_and_error.error; if (parsetree_and_error.tree != NULL) { ListCell *lc; result.n_stmts = list_length(parsetree_and_error.tree); result.stmts = malloc(sizeof(PgQuerySplitStmt*) * result.n_stmts); foreach (lc, parsetree_and_error.tree) { RawStmt *raw_stmt = castNode(RawStmt, lfirst(lc)); result.stmts[foreach_current_index(lc)] = malloc(sizeof(PgQuerySplitStmt)); result.stmts[foreach_current_index(lc)]->stmt_location = raw_stmt->stmt_location; if (raw_stmt->stmt_len == 0) result.stmts[foreach_current_index(lc)]->stmt_len = strlen(input) - raw_stmt->stmt_location; else result.stmts[foreach_current_index(lc)]->stmt_len = raw_stmt->stmt_len; } } else { result.n_stmts = 0; result.stmts = NULL; } pg_query_exit_memory_context(ctx); return result; } void pg_query_free_split_result(PgQuerySplitResult result) { if (result.error) { pg_query_free_error(result.error); } free(result.stderr_buffer); if (result.stmts != NULL) { for (int i = 0; i < result.n_stmts; ++i) { free(result.stmts[i]); } free(result.stmts); } } pg_query-4.2.3/ext/pg_query/src_backend_nodes_value.c0000644000004100000410000000265114510636647023044 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - makeString * - makeBoolean * - makeInteger * - makeFloat * - makeBitString *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * value.c * implementation of value nodes * * * Copyright (c) 2003-2022, 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; } pg_query-4.2.3/ext/pg_query/src_common_kwlookup.c0000644000004100000410000000501014510636647022304 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - ScanKeywordLookup *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * kwlookup.c * Key word lookup for PostgreSQL * * * Portions Copyright (c) 1996-2022, 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; } pg_query-4.2.3/ext/pg_query/src_backend_utils_adt_format_type.c0000644000004100000410000001110714510636647025135 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - format_type_be *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * format_type.c * Display type names "nicely". * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/src_backend_utils_adt_ruleutils.c0000644000004100000410000016046014510636647024643 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - quote_identifier * - quote_all_identifiers *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * ruleutils.c * Functions to convert stored expressions/querytrees back to * source text * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/adt/ruleutils.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include #include "access/amapi.h" #include "access/htup_details.h" #include "access/relation.h" #include "access/sysattr.h" #include "access/table.h" #include "catalog/pg_aggregate.h" #include "catalog/pg_am.h" #include "catalog/pg_authid.h" #include "catalog/pg_collation.h" #include "catalog/pg_constraint.h" #include "catalog/pg_depend.h" #include "catalog/pg_language.h" #include "catalog/pg_opclass.h" #include "catalog/pg_operator.h" #include "catalog/pg_partitioned_table.h" #include "catalog/pg_proc.h" #include "catalog/pg_statistic_ext.h" #include "catalog/pg_trigger.h" #include "catalog/pg_type.h" #include "commands/defrem.h" #include "commands/tablespace.h" #include "common/keywords.h" #include "executor/spi.h" #include "funcapi.h" #include "mb/pg_wchar.h" #include "miscadmin.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" #include "nodes/pathnodes.h" #include "optimizer/optimizer.h" #include "parser/parse_agg.h" #include "parser/parse_func.h" #include "parser/parse_node.h" #include "parser/parse_oper.h" #include "parser/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 */ List *windowClause; /* Current query level's WINDOW clause */ List *windowTList; /* targetlist for resolving WINDOW clause */ int prettyFlags; /* enabling of pretty-print functions */ int wrapColumn; /* max line length, or -1 for no limit */ int indentLevel; /* current indent level for pretty-print */ bool varprefix; /* true to print prefixes on Vars */ ParseExprKind special_exprkind; /* set only for exprkinds needing special * handling */ Bitmapset *appendparents; /* if not null, map child Vars of these relids * back to the parent rel */ } deparse_context; /* * Each level of query context around a subtree needs a level of Var namespace. * A Var having varlevelsup=N refers to the N'th item (counting from 0) in * the current context's namespaces list. * * rtable is the list of actual RTEs from the Query or PlannedStmt. * rtable_names holds the alias name to be used for each RTE (either a C * string, or NULL for nameless RTEs such as unnamed joins). * rtable_columns holds the column alias names to be used for each RTE. * * subplans is a list of Plan trees for SubPlans and CTEs (it's only used * in the PlannedStmt case). * ctes is a list of CommonTableExpr nodes (only used in the Query case). * appendrels, if not null (it's only used in the PlannedStmt case), is an * array of AppendRelInfo nodes, indexed by child relid. We use that to map * child-table Vars to their inheritance parents. * * In some cases we need to make names of merged JOIN USING columns unique * across the whole query, not only per-RTE. If so, unique_using is true * and using_names is a list of C strings representing names already assigned * to USING columns. * * When deparsing plan trees, there is always just a single item in the * deparse_namespace list (since a plan tree never contains Vars with * varlevelsup > 0). We store the Plan node that is the immediate * parent of the expression to be deparsed, as well as a list of that * Plan's ancestors. In addition, we store its outer and inner subplan nodes, * as well as their targetlists, and the index tlist if the current plan node * might contain INDEX_VAR Vars. (These fields could be derived on-the-fly * from the current Plan node, but it seems notationally clearer to set them * up as separate fields.) */ typedef struct { List *rtable; /* List of RangeTblEntry nodes */ List *rtable_names; /* Parallel list of names for RTEs */ List *rtable_columns; /* Parallel list of deparse_columns structs */ List *subplans; /* List of Plan trees for SubPlans */ List *ctes; /* List of CommonTableExpr nodes */ AppendRelInfo **appendrels; /* Array of AppendRelInfo nodes, or NULL */ /* Workspace for column alias assignment: */ bool unique_using; /* Are we making USING names globally unique */ List *using_names; /* List of assigned names for USING columns */ /* Remaining fields are used only when deparsing a Plan tree: */ Plan *plan; /* immediate parent of current expression */ List *ancestors; /* ancestors of plan */ Plan *outer_plan; /* outer subnode, or NULL if none */ Plan *inner_plan; /* inner subnode, or NULL if none */ List *outer_tlist; /* referent for OUTER_VAR Vars */ List *inner_tlist; /* referent for INNER_VAR Vars */ List *index_tlist; /* referent for INDEX_VAR Vars */ /* 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, const char *relname, int prettyFlags); static int print_function_arguments(StringInfo buf, HeapTuple proctup, bool print_table_args, bool print_defaults); static void print_function_rettype(StringInfo buf, HeapTuple proctup); static void print_function_trftypes(StringInfo buf, HeapTuple proctup); static void 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, TupleDesc resultDesc, bool colNamesVisible); static void get_insert_query_def(Query *query, deparse_context *context, bool colNamesVisible); static void get_update_query_def(Query *query, deparse_context *context, bool colNamesVisible); 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, bool colNamesVisible); static void get_utility_query_def(Query *query, deparse_context *context); static void get_basic_select_query(Query *query, deparse_context *context, TupleDesc resultDesc, bool colNamesVisible); static void get_target_list(List *targetList, deparse_context *context, TupleDesc resultDesc, bool colNamesVisible); static void get_setop_query(Node *setOp, Query *query, deparse_context *context, TupleDesc resultDesc, bool colNamesVisible); static Node *get_rule_sortgroupclause(Index ref, List *tlist, bool force_colno, deparse_context *context); static void get_rule_groupingset(GroupingSet *gset, List *targetlist, bool omit_parens, deparse_context *context); static void get_rule_orderby(List *orderList, List *targetList, bool force_colno, deparse_context *context); static void get_rule_windowclause(Query *query, deparse_context *context); static void get_rule_windowspec(WindowClause *wc, List *targetList, deparse_context *context); static char *get_variable(Var *var, int levelsup, bool istoplevel, deparse_context *context); static void get_special_variable(Node *node, deparse_context *context, void *callback_arg); static void resolve_special_varno(Node *node, deparse_context *context, rsv_callback callback, void *callback_arg); static Node *find_param_referent(Param *param, deparse_context *context, deparse_namespace **dpns_p, ListCell **ancestor_cell_p); static void get_parameter(Param *param, deparse_context *context); static const char *get_simple_binary_op_name(OpExpr *expr); static bool isSimpleNode(Node *node, Node *parentNode, int prettyFlags); static void appendContextKeyword(deparse_context *context, const char *str, int indentBefore, int indentAfter, int indentPlus); static void removeStringInfoSpaces(StringInfo str); static void get_rule_expr(Node *node, deparse_context *context, bool showimplicit); static void get_rule_expr_toplevel(Node *node, deparse_context *context, bool showimplicit); static void get_rule_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_combine_expr(Node *node, deparse_context *context, void *callback_arg); static void get_windowfunc_expr(WindowFunc *wfunc, deparse_context *context); 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 simple_quote_literal(StringInfo buf, const char *val); static void get_sublink_expr(SubLink *sublink, deparse_context *context); static void get_tablefunc(TableFunc *tf, deparse_context *context, bool showimplicit); static void get_from_clause(Query *query, const char *prefix, deparse_context *context); static void get_from_clause_item(Node *jtnode, Query *query, deparse_context *context); static void get_column_alias_list(deparse_columns *colinfo, deparse_context *context); static void get_from_clause_coldeflist(RangeTblFunction *rtfunc, deparse_columns *colinfo, deparse_context *context); static void get_tablesample_def(TableSampleClause *tablesample, deparse_context *context); static void get_opclass_name(Oid opclass, Oid actual_datatype, StringInfo buf); static Node *processIndirection(Node *node, deparse_context *context); static void printSubscripts(SubscriptingRef *sbsref, deparse_context *context); static char *get_relation_name(Oid relid); static char *generate_relation_name(Oid relid, List *namespaces); static char *generate_qualified_relation_name(Oid relid); static char *generate_function_name(Oid funcid, int nargs, List *argnames, Oid *argtypes, bool has_variadic, bool *use_variadic_p, ParseExprKind special_exprkind); static char *generate_operator_name(Oid operid, Oid arg1, Oid arg2); static void add_cast_to(StringInfo buf, Oid typid); static char *generate_qualified_type_name(Oid typid); static text *string_to_text(char *str); static char *flatten_reloptions(Oid relid); static void get_reloptions(StringInfo buf, Datum reloptions); #define only_marker(rte) ((rte)->inh ? "" : "ONLY ") /* ---------- * pg_get_ruledef - Do it all and return a text * that could be used as a statement * to recreate the rule * ---------- */ /* ---------- * pg_get_viewdef - Mainly the same thing, but we * only return the SELECT part of a view * ---------- */ /* * Common code for by-OID and by-name variants of pg_get_viewdef */ /* ---------- * pg_get_triggerdef - Get the definition of a trigger * ---------- */ /* ---------- * pg_get_indexdef - Get the definition of an index * * In the extended version, there is a colno argument as well as pretty bool. * if colno == 0, we want a complete index definition. * if colno > 0, we only want the Nth index key's variable or expression. * * Note that the SQL-function versions of this omit any info about the * index tablespace; this is intentional because pg_dump wants it that way. * However pg_get_indexdef_string() includes the index tablespace. * ---------- */ /* * Internal version for use by ALTER TABLE. * Includes a tablespace clause in the result. * Returns a palloc'd C string; no pretty-printing. */ /* Internal version that just reports the key-column definitions */ /* * Internal workhorse to decompile an index definition. * * This is now used for exclusion constraints as well: if excludeOps is not * NULL then it points to an array of exclusion operator OIDs. */ /* ---------- * pg_get_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: * * PARTITION BY { RANGE | LIST | HASH } (column opt_collation opt_opclass [, ...]) */ /* Internal version that just reports the column definitions */ /* * Internal workhorse to decompile a partition key definition. */ /* * pg_get_partition_constraintdef * * Returns partition constraint expression as a string for the input relation */ /* * pg_get_partconstrdef_string * * Returns the partition constraint as a C-string for the input relation, with * the given alias. No pretty-printing. */ /* * pg_get_constraintdef * * Returns the definition for the constraint, ie, everything that needs to * appear after "ALTER TABLE ... ADD CONSTRAINT ". */ /* * Internal version that returns a full ALTER TABLE ... ADD CONSTRAINT command */ /* * As of 9.4, we now use an MVCC snapshot for this. */ /* * Convert an int16[] Datum into a comma-separated list of column names * for the indicated relation; append the list to buf. Returns the number * of keys. */ /* ---------- * pg_get_expr - Decompile an expression tree * * Input: an expression tree in nodeToString form, and a relation OID * * Output: reverse-listed expression * * Currently, the expression can only refer to a single relation, namely * the one specified by the second parameter. This is sufficient for * partial indexes, column default expressions, etc. We also support * Var-free expressions, for which the OID can be InvalidOid. * * 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 ", 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. * * resultDesc and colNamesVisible are as for get_query_def() * ---------- */ /* * Display a sort/group clause. * * Also returns the expression tree, so caller need not find it again. */ /* * Display a GroupingSet */ /* * Display an ORDER BY list. */ /* * Display a WINDOW clause. * * Note that the windowClause list might contain only anonymous window * specifications, in which case we should print nothing here. */ /* * Display a window definition */ /* ---------- * get_insert_query_def - Parse back an INSERT parsetree * ---------- */ /* ---------- * get_update_query_def - Parse back an UPDATE parsetree * ---------- */ /* ---------- * get_update_query_targetlist_def - Parse back an UPDATE targetlist * ---------- */ /* ---------- * get_delete_query_def - Parse back a DELETE parsetree * ---------- */ /* ---------- * get_utility_query_def - Parse back a UTILITY parsetree * ---------- */ /* * Display a Var appropriately. * * In some cases (currently only when recursing into an unnamed join) * the Var's varlevelsup has to be interpreted with respect to a context * above the current one; levelsup indicates the offset. * * If istoplevel is true, the Var is at the top level of a SELECT's * targetlist, which means we need special treatment of whole-row Vars. * Instead of the normal "tab.*", we'll print "tab.*::typename", which is a * dirty hack to prevent "tab.*" from being expanded into multiple columns. * (The parser will strip the useless coercion, so no inefficiency is added in * dump and reload.) We used to print just "tab" in such cases, but that is * ambiguous and will yield the wrong result if "tab" is also a plain column * name in the query. * * Returns the attname of the Var, or NULL if the Var has no attname (because * it is a whole-row Var or a subplan output reference). */ /* * Deparse a Var which references OUTER_VAR, INNER_VAR, or INDEX_VAR. This * routine is actually a callback for resolve_special_varno, which handles * finding the correct TargetEntry. We get the expression contained in that * TargetEntry and just need to deparse it, a job we can throw back on * get_rule_expr. */ /* * Chase through plan references to special varnos (OUTER_VAR, INNER_VAR, * INDEX_VAR) until we find a real Var or some kind of non-Var node; then, * invoke the callback provided. */ /* * Get the name of a field of an expression of composite type. The * expression is usually a Var, but we handle other cases too. * * levelsup is an extra offset to interpret the Var's varlevelsup correctly. * * This is fairly straightforward when the expression has a named composite * type; we need only look up the type in the catalogs. However, the type * could also be RECORD. Since no actual table or view column is allowed to * have type RECORD, a Var of type RECORD must refer to a JOIN or FUNCTION RTE * or to a subquery output. We drill down to find the ultimate defining * expression and attempt to infer the field name from it. We ereport if we * can't determine the name. * * Similarly, a PARAM of type RECORD has to refer to some expression of * a determinable composite type. */ /* * Try to find the referenced expression for a PARAM_EXEC Param that might * reference a parameter supplied by an upper NestLoop or SubPlan plan node. * * If successful, return the expression and set *dpns_p and *ancestor_cell_p * appropriately for calling push_ancestor_plan(). If no referent can be * found, return NULL. */ /* * Display a Param appropriately. */ /* * get_simple_binary_op_name * * helper function for isSimpleNode * will return single char binary operator name, or NULL if it's not */ /* * isSimpleNode - check if given node is simple (doesn't need parenthesizing) * * true : simple in the context of parent node's type * false : not simple */ /* * appendContextKeyword - append a keyword to buffer * * If prettyPrint is enabled, perform a line break, and adjust indentation. * Otherwise, just append the keyword. */ /* * removeStringInfoSpaces - delete trailing spaces from a buffer. * * Possibly this should move to stringinfo.c at some point. */ /* * get_rule_expr_paren - deparse expr using get_rule_expr, * embracing the string with parentheses if necessary for prettyPrint. * * Never embrace if prettyFlags=0, because it's done in the calling node. * * Any node that does *not* embrace its argument node by sql syntax (with * parentheses, non-operator keywords like CASE/WHEN/ON, or comma etc) should * use get_rule_expr_paren instead of get_rule_expr so parentheses can be * added. */ /* ---------- * get_rule_expr - Parse back an expression * * Note: showimplicit determines whether we display any implicit cast that * is present at the top of the expression tree. It is a passed argument, * not a field of the context struct, because we change the value as we * recurse down into the expression. In general we suppress implicit casts * when the result type is known with certainty (eg, the arguments of an * OR must be boolean). We display implicit casts for arguments of functions * and operators, since this is needed to be certain that the same function * or operator will be chosen when the expression is re-parsed. * ---------- */ /* * get_rule_expr_toplevel - Parse back a toplevel expression * * Same as get_rule_expr(), except that if the expr is just a Var, we pass * istoplevel = true not false to get_variable(). This causes whole-row Vars * to get printed with decoration that will prevent expansion of "*". * We need to use this in contexts such as ROW() and VALUES(), where the * parser would expand "foo.*" appearing at top level. (In principle we'd * use this in get_target_list() too, but that has additional worries about * whether to print AS, so it needs to invoke get_variable() directly anyway.) */ /* * get_rule_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 */ /* * 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_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 */ /* * simple_quote_literal - Format a string as a SQL literal, append to buf */ /* ---------- * get_sublink_expr - Parse back a sublink * ---------- */ /* ---------- * get_tablefunc - Parse back a table function * ---------- */ /* ---------- * get_from_clause - Parse back a FROM clause * * "prefix" is the keyword that denotes the start of the list of FROM * elements. It is FROM when used to parse back SELECT and UPDATE, but * is USING when parsing back DELETE. * ---------- */ /* * get_column_alias_list - print column alias list for an RTE * * Caller must already have printed the relation's alias name. */ /* * get_from_clause_coldeflist - reproduce FROM clause coldeflist * * When printing a top-level coldeflist (which is syntactically also the * relation's column alias list), use column names from colinfo. But when * printing a coldeflist embedded inside ROWS FROM(), we prefer to use the * original coldeflist's names, which are available in rtfunc->funccolnames. * Pass NULL for colinfo to select the latter behavior. * * The coldeflist is appended immediately (no space) to buf. Caller is * responsible for ensuring that an alias or AS is present before it. */ /* * get_tablesample_def - print a TableSampleClause */ /* * get_opclass_name - fetch name of an index operator class * * The opclass name is appended (after a space) to buf. * * Output is suppressed if the opclass is the default for the given * actual_datatype. (If you don't want this behavior, just pass * InvalidOid for actual_datatype.) */ /* * generate_opclass_name * Compute the name to display for a opclass specified by OID * * The result includes all necessary quoting and schema-prefixing. */ /* * processIndirection - take care of array and subfield assignment * * We strip any top-level FieldStore or assignment SubscriptingRef nodes that * appear in the input, printing them as decoration for the base column * name (which we assume the caller just printed). We might also need to * strip CoerceToDomain nodes, but only ones that appear above assignment * nodes. * * Returns the subexpression that's to be assigned. */ /* * quote_identifier - Quote an identifier only if needed * * When quotes are needed, we palloc the required space; slightly * space-wasteful but well worth it for notational simplicity. */ const char * quote_identifier(const char *ident) { /* * Can avoid quoting if ident starts with a lowercase letter or underscore * and contains only lowercase letters, digits, and underscores, *and* is * not any SQL keyword. Otherwise, supply quotes. */ int nquotes = 0; bool safe; const char *ptr; char *result; char *optr; /* * would like to use macros here, but they might yield unwanted * locale-specific results... */ safe = ((ident[0] >= 'a' && ident[0] <= 'z') || ident[0] == '_'); for (ptr = ident; *ptr; ptr++) { char ch = *ptr; if ((ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9') || (ch == '_')) { /* okay */ } else { safe = false; if (ch == '"') nquotes++; } } if (quote_all_identifiers) safe = false; if (safe) { /* * Check for keyword. We quote keywords except for unreserved ones. * (In some cases we could avoid quoting a col_name or type_func_name * keyword, but it seems much harder than it's worth to tell that.) * * Note: ScanKeywordLookup() does case-insensitive comparison, but * that's fine, since we already know we have all-lower-case. */ int kwnum = ScanKeywordLookup(ident, &ScanKeywords); if (kwnum >= 0 && ScanKeywordCategories[kwnum] != UNRESERVED_KEYWORD) safe = false; } if (safe) return ident; /* no change needed */ result = (char *) palloc(strlen(ident) + nquotes + 2 + 1); optr = result; *optr++ = '"'; for (ptr = ident; *ptr; ptr++) { char ch = *ptr; if (ch == '"') *optr++ = '"'; *optr++ = ch; } *optr++ = '"'; *optr = '\0'; return result; } /* * quote_qualified_identifier - Quote a possibly-qualified identifier * * Return a name of the form qualifier.ident, or just ident if qualifier * is NULL, quoting each component if necessary. The result is palloc'd. */ /* * get_relation_name * Get the unqualified name of a relation specified by OID * * This differs from the underlying get_rel_name() function in that it will * throw error instead of silently returning NULL if the OID is bad. */ /* * generate_relation_name * Compute the name to display for a relation specified by OID * * The result includes all necessary quoting and schema-prefixing. * * If namespaces isn't NIL, it must be a list of deparse_namespace nodes. * We will forcibly qualify the relation name if it equals any CTE name * visible in the namespace list. */ /* * generate_qualified_relation_name * Compute the name to display for a relation specified by OID * * As above, but unconditionally schema-qualify the name. */ /* * generate_function_name * Compute the name to display for a function specified by OID, * given that it is being called with the specified actual arg names and * types. (Those matter because of ambiguous-function resolution rules.) * * If we're dealing with a potentially variadic function (in practice, this * means a FuncExpr or Aggref, not some other way of calling a function), then * has_variadic must specify whether variadic arguments have been merged, * and *use_variadic_p will be set to indicate whether to print VARIADIC in * the output. For non-FuncExpr cases, has_variadic should be false and * use_variadic_p can be NULL. * * The result includes all necessary quoting and schema-prefixing. */ /* * generate_operator_name * Compute the name to display for an operator specified by OID, * given that it is being called with the specified actual arg types. * (Arg types matter because of ambiguous-operator resolution rules. * Pass InvalidOid for unused arg of a unary operator.) * * The result includes all necessary quoting and schema-prefixing, * plus the OPERATOR() decoration needed to use a qualified operator name * in an expression. */ /* * generate_operator_clause --- generate a binary-operator WHERE clause * * This is used for internally-generated-and-executed SQL queries, where * precision is essential and readability is secondary. The basic * requirement is to append "leftop op rightop" to buf, where leftop and * rightop are given as strings and are assumed to yield types leftoptype * and rightoptype; the operator is identified by OID. The complexity * comes from needing to be sure that the parser will select the desired * operator when the query is parsed. We always name the operator using * OPERATOR(schema.op) syntax, so as to avoid search-path uncertainties. * We have to emit casts too, if either input isn't already the input type * of the operator; else we are at the mercy of the parser's heuristics for * ambiguous-operator resolution. The caller must ensure that leftop and * rightop are suitable arguments for a cast operation; it's best to insert * parentheses if they aren't just variables or parameters. */ /* * Add a cast specification to buf. We spell out the type name the hard way, * intentionally not using format_type_be(). This is to avoid corner cases * for CHARACTER, BIT, and perhaps other types, where specifying the type * using SQL-standard syntax results in undesirable data truncation. By * doing it this way we can be certain that the cast will have default (-1) * target typmod. */ /* * generate_qualified_type_name * Compute the name to display for a type specified by OID * * This is different from format_type_be() in that we unconditionally * schema-qualify the name. That also means no special syntax for * SQL-standard type names ... although in current usage, this should * only get used for domains, so such cases wouldn't occur anyway. */ /* * generate_collation_name * Compute the name to display for a collation specified by OID * * The result includes all necessary quoting and schema-prefixing. */ /* * Given a C string, produce a TEXT datum. * * We assume that the input was palloc'd and may be freed. */ /* * Generate a C string representing a relation options from text[] datum. */ /* * Generate a C string representing a relation's reloptions, or NULL if none. */ /* * get_range_partbound_string * A C string representation of one range partition bound */ pg_query-4.2.3/ext/pg_query/extconf.rb0000644000004100000410000000210114510636647020037 0ustar www-datawww-data# rubocop:disable Style/GlobalVars require 'digest' require 'mkmf' require 'open-uri' require 'pathname' $objs = Dir.glob(File.join(__dir__, '*.c')).map { |f| Pathname.new(f).sub_ext('.o').to_s } # -Wno-deprecated-non-prototype avoids warnings on Clang 15.0+, this can be removed in Postgres 16: # https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=1c27d16e6e5c1f463bbe1e9ece88dda811235165 $CFLAGS << " -fvisibility=hidden -O3 -Wall -fno-strict-aliasing -fwrapv -fstack-protector -Wno-unused-function -Wno-unused-variable -Wno-clobbered -Wno-sign-compare -Wno-discarded-qualifiers -Wno-deprecated-non-prototype -Wno-unknown-warning-option -g" $INCFLAGS = "-I#{File.join(__dir__, 'include')} " + $INCFLAGS SYMFILE = if RUBY_PLATFORM =~ /freebsd/ File.join(__dir__, 'pg_query_ruby_freebsd.sym') else File.join(__dir__, 'pg_query_ruby.sym') end if RUBY_PLATFORM =~ /darwin/ $DLDFLAGS << " -Wl,-exported_symbols_list #{SYMFILE}" unless defined?(::Rubinius) else $DLDFLAGS << " -Wl,--retain-symbols-file=#{SYMFILE}" end create_makefile 'pg_query/pg_query' pg_query-4.2.3/ext/pg_query/src_port_pgstrcasecmp.c0000644000004100000410000000441314510636647022626 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_toupper *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pgstrcasecmp.c * Portable SQL-like case-independent comparisons and conversions. * * SQL99 specifies Unicode-aware case normalization, which we don't yet * have the infrastructure for. Instead we use tolower() to provide a * locale-aware translation. However, there are some locales where this * is not right either (eg, Turkish may do strange things with 'i' and * 'I'). Our current compromise is to use tolower() for characters with * the high bit set, and use an ASCII-only downcasing for 7-bit * characters. * * NB: this code should match downcase_truncate_identifier() in scansup.c. * * We also provide strict ASCII-only case conversion functions, which can * be used to implement C/POSIX case folding semantics no matter what the * C library thinks the locale is. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * * src/port/pgstrcasecmp.c * *------------------------------------------------------------------------- */ #include "c.h" #include /* * Case-independent comparison of two null-terminated strings. */ /* * Case-independent comparison of two not-necessarily-null-terminated strings. * At most n bytes will be examined from each string. */ /* * Fold a character to upper case. * * Unlike some versions of toupper(), this is safe to apply to characters * that aren't lower case letters. Note however that the whole thing is * a bit bogus for multibyte character sets. */ unsigned char pg_toupper(unsigned char ch) { if (ch >= 'a' && ch <= 'z') ch += 'A' - 'a'; else if (IS_HIGHBIT_SET(ch) && islower(ch)) ch = toupper(ch); return ch; } /* * Fold a character to lower case. * * Unlike some versions of tolower(), this is safe to apply to characters * that aren't upper case letters. Note however that the whole thing is * a bit bogus for multibyte character sets. */ /* * Fold a character to upper case, following C/POSIX locale rules. */ /* * Fold a character to lower case, following C/POSIX locale rules. */ pg_query-4.2.3/ext/pg_query/src_backend_utils_activity_pgstat_database.c0000644000004100000410000000554214510636647027024 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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-2022, PostgreSQL Global Development Group * * IDENTIFICATION * src/backend/utils/activity/pgstat_database.c * ------------------------------------------------------------------------- */ #include "postgres.h" #include "utils/pgstat_internal.h" #include "utils/timestamp.h" #include "storage/procsignal.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 pg_query-4.2.3/ext/pg_query/pg_query_outfuncs_json.c0000644000004100000410000002071714510636647023037 0ustar www-datawww-data#include "pg_query_outfuncs.h" #include "postgres.h" #include #include "access/relation.h" #include "nodes/parsenodes.h" #include "nodes/plannodes.h" #include "nodes/value.h" #include "utils/datum.h" #include "pg_query_json_helper.c" #define OUT_TYPE(typename, typename_c) StringInfo #define OUT_NODE(typename, typename_c, typename_underscore, typename_underscore_upcase, typename_cast, fldname) \ { \ WRITE_NODE_TYPE(CppAsString(typename)); \ _out##typename_c(out, (const typename_cast *) obj); \ } /* Write the label for the node type */ #define WRITE_NODE_TYPE(nodelabel) \ appendStringInfoString(out, "\"" nodelabel "\":{") /* Write an integer field */ #define WRITE_INT_FIELD(outname, outname_json, fldname) \ if (node->fldname != 0) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":%d,", node->fldname); \ } /* Write an unsigned integer field */ #define WRITE_UINT_FIELD(outname, outname_json, fldname) \ if (node->fldname != 0) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":%u,", node->fldname); \ } /* Write a long-integer field */ #define WRITE_LONG_FIELD(outname, outname_json, fldname) \ if (node->fldname != 0) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":%ld,", node->fldname); \ } /* Write a char field (ie, one ascii character) */ #define WRITE_CHAR_FIELD(outname, outname_json, fldname) \ if (node->fldname != 0) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":\"%c\",", node->fldname); \ } /* Write an enumerated-type field */ #define WRITE_ENUM_FIELD(typename, outname, outname_json, fldname) \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":\"%s\",", \ _enumToString##typename(node->fldname)); /* Write a float field */ #define WRITE_FLOAT_FIELD(outname, outname_json, fldname) \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":%f,", node->fldname) /* Write a boolean field */ #define WRITE_BOOL_FIELD(outname, outname_json, fldname) \ if (node->fldname) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":%s,", \ booltostr(node->fldname)); \ } /* Write a character-string (possibly NULL) field */ #define WRITE_STRING_FIELD(outname, outname_json, fldname) \ if (node->fldname != NULL) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":"); \ _outToken(out, node->fldname); \ appendStringInfo(out, ","); \ } #define WRITE_LIST_FIELD(outname, outname_json, fldname) \ if (node->fldname != NULL) { \ const ListCell *lc; \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":"); \ appendStringInfoChar(out, '['); \ foreach(lc, node->fldname) { \ if (lfirst(lc) == NULL) \ appendStringInfoString(out, "{}"); \ else \ _outNode(out, lfirst(lc)); \ if (lnext(node->fldname, lc)) \ appendStringInfoString(out, ","); \ } \ appendStringInfo(out, "],"); \ } #define WRITE_NODE_FIELD(outname, outname_json, fldname) \ if (true) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":"); \ _outNode(out, &node->fldname); \ appendStringInfo(out, ","); \ } #define WRITE_NODE_PTR_FIELD(outname, outname_json, fldname) \ if (node->fldname != NULL) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":"); \ _outNode(out, node->fldname); \ appendStringInfo(out, ","); \ } #define WRITE_SPECIFIC_NODE_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":{"); \ _out##typename(out, &node->fldname); \ removeTrailingDelimiter(out); \ appendStringInfo(out, "},"); \ } #define WRITE_SPECIFIC_NODE_PTR_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ if (node->fldname != NULL) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":{"); \ _out##typename(out, node->fldname); \ removeTrailingDelimiter(out); \ appendStringInfo(out, "},"); \ } #define WRITE_BITMAPSET_FIELD(outname, outname_json, fldname) \ if (!bms_is_empty(node->fldname)) \ { \ int x = 0; \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":["); \ while ((x = bms_next_member(node->fldname, x)) >= 0) \ appendStringInfo(out, "%d,", x); \ removeTrailingDelimiter(out); \ appendStringInfo(out, "],"); \ } static void _outNode(StringInfo out, const void *obj); static void _outList(StringInfo out, const List *node) { const ListCell *lc; appendStringInfo(out, "\"items\":"); appendStringInfoChar(out, '['); foreach(lc, node) { if (lfirst(lc) == NULL) appendStringInfoString(out, "{}"); else _outNode(out, lfirst(lc)); if (lnext(node, lc)) appendStringInfoString(out, ","); } appendStringInfoChar(out, ']'); appendStringInfo(out, ","); } static void _outIntList(StringInfo out, const List *node) { const ListCell *lc; appendStringInfo(out, "\"items\":"); appendStringInfoChar(out, '['); foreach(lc, node) { appendStringInfo(out, "%d", lfirst_int(lc)); if (lnext(node, lc)) appendStringInfoString(out, ","); } appendStringInfoChar(out, ']'); appendStringInfo(out, ","); } static void _outOidList(StringInfo out, const List *node) { const ListCell *lc; appendStringInfo(out, "\"items\":"); appendStringInfoChar(out, '['); foreach(lc, node) { appendStringInfo(out, "%u", lfirst_oid(lc)); if (lnext(node, lc)) appendStringInfoString(out, ","); } appendStringInfoChar(out, ']'); appendStringInfo(out, ","); } static void _outInteger(StringInfo out, const Integer *node) { 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; } pg_query-4.2.3/ext/pg_query/pg_query_fingerprint.h0000644000004100000410000000040114510636647022460 0ustar www-datawww-data#ifndef PG_QUERY_FINGERPRINT_H #define PG_QUERY_FINGERPRINT_H #include extern PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, bool printTokens); extern uint64_t pg_query_fingerprint_node(const void * node); #endif pg_query-4.2.3/ext/pg_query/src_backend_utils_hash_dynahash.c0000644000004100000410000010522514510636647024563 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - hash_search * - hash_search_with_hash_value * - has_seq_scans * - num_seq_scans * - seq_scan_tables * - expand_table * - dir_realloc * - CurrentDynaHashCxt * - seg_alloc * - calc_bucket * - hash_corrupted * - DynaHashAlloc * - get_hash_entry * - element_alloc *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * dynahash.c * dynamic chained hash tables * * dynahash.c supports both local-to-a-backend hash tables and hash tables in * shared memory. For shared hash tables, it is the caller's responsibility * to provide appropriate access interlocking. The simplest convention is * that a single LWLock protects the whole hash table. Searches (HASH_FIND or * hash_seq_search) need only shared lock, but any update requires exclusive * lock. For heavily-used shared tables, the single-lock approach creates a * concurrency bottleneck, so we also support "partitioned" locking wherein * there are multiple LWLocks guarding distinct subsets of the table. To use * a hash table in partitioned mode, the HASH_PARTITION flag must be given * to hash_create. This prevents any attempt to split buckets on-the-fly. * Therefore, each hash bucket chain operates independently, and no fields * of the hash header change after init except nentries and freeList. * (A partitioned table uses multiple copies of those fields, guarded by * spinlocks, for additional concurrency.) * This lets any subset of the hash buckets be treated as a separately * lockable partition. We expect callers to use the low-order bits of a * lookup key's hash value as a partition number --- this will work because * of the way calc_bucket() maps hash values to bucket numbers. * * For hash tables in shared memory, the memory allocator function should * match malloc's semantics of returning NULL on failure. For hash tables * in local memory, we typically use palloc() which will throw error on * failure. The code in this file has to cope with both cases. * * dynahash.c provides support for these types of lookup keys: * * 1. Null-terminated C strings (truncated if necessary to fit in keysize), * compared as though by strcmp(). This is selected by specifying the * HASH_STRINGS flag to hash_create. * * 2. Arbitrary binary data of size keysize, compared as though by memcmp(). * (Caller must ensure there are no undefined padding bits in the keys!) * This is selected by specifying the HASH_BLOBS flag to hash_create. * * 3. More complex key behavior can be selected by specifying user-supplied * hashing, comparison, and/or key-copying functions. At least a hashing * function must be supplied; comparison defaults to memcmp() and key copying * to memcpy() when a user-defined hashing function is selected. * * Compared to simplehash, dynahash has the following benefits: * * - It supports partitioning, which is useful for shared memory access using * locks. * - Shared memory hashes are allocated in a fixed size area at startup and * are discoverable by name from other processes. * - Because entries don't need to be moved in the case of hash conflicts, * dynahash has better performance for large entries. * - Guarantees stable pointers to entries. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/hash/dynahash.c * *------------------------------------------------------------------------- */ /* * Original comments: * * Dynamic hashing, after CACM April 1988 pp 446-457, by Per-Ake Larson. * Coded into C, with minor code improvements, and with hsearch(3) interface, * by ejp@ausmelb.oz, Jul 26, 1988: 13:16; * also, hcreate/hdestroy routines added to simulate hsearch(3). * * These routines simulate hsearch(3) and family, with the important * difference that the hash table is dynamic - can grow indefinitely * beyond its original size (as supplied to hcreate()). * * Performance appears to be comparable to that of hsearch(3). * The 'source-code' options referred to in hsearch(3)'s 'man' page * are not implemented; otherwise functionality is identical. * * Compilation controls: * HASH_DEBUG controls some informative traces, mainly for debugging. * HASH_STATISTICS causes HashAccesses and HashCollisions to be maintained; * when combined with HASH_DEBUG, these are displayed by hdestroy(). * * Problems & fixes to ejp@ausmelb.oz. WARNING: relies on pre-processor * concatenation property, in probably unnecessary code 'optimization'. * * Modified margo@postgres.berkeley.edu February 1990 * added multiple table interface * Modified by sullivan@postgres.berkeley.edu April 1990 * changed ctl structure for shared memory */ #include "postgres.h" #include #include "access/xact.h" #include "common/hashfn.h" #include "port/pg_bitutils.h" #include "storage/shmem.h" #include "storage/spin.h" #include "utils/dynahash.h" #include "utils/memutils.h" /* * Constants * * A hash table has a top-level "directory", each of whose entries points * to a "segment" of ssize bucket headers. The maximum number of hash * buckets is thus dsize * ssize (but dsize may be expansible). Of course, * the number of records in the table can be larger, but we don't want a * whole lot of records per bucket or performance goes down. * * In a hash table allocated in shared memory, the directory cannot be * expanded because it must stay at a fixed address. The directory size * should be selected using hash_select_dirsize (and you'd better have * a good idea of the maximum number of entries!). For non-shared hash * tables, the initial directory size can be left at the default. */ #define DEF_SEGSIZE 256 #define DEF_SEGSIZE_SHIFT 8 /* must be log2(DEF_SEGSIZE) */ #define DEF_DIRSIZE 256 /* Number of freelists to be used for a partitioned hash table. */ #define NUM_FREELISTS 32 /* A hash bucket is a linked list of HASHELEMENTs */ typedef HASHELEMENT *HASHBUCKET; /* A hash segment is an array of bucket headers */ typedef HASHBUCKET *HASHSEGMENT; /* * Per-freelist data. * * In a partitioned hash table, each freelist is associated with a specific * set of hashcodes, as determined by the FREELIST_IDX() macro below. * nentries tracks the number of live hashtable entries having those hashcodes * (NOT the number of entries in the freelist, as you might expect). * * The coverage of a freelist might be more or less than one partition, so it * needs its own lock rather than relying on caller locking. Relying on that * wouldn't work even if the coverage was the same, because of the occasional * need to "borrow" entries from another freelist; see get_hash_entry(). * * Using an array of FreeListData instead of separate arrays of mutexes, * nentries and freeLists helps to reduce sharing of cache lines between * different mutexes. */ typedef struct { slock_t mutex; /* spinlock for this freelist */ long nentries; /* number of entries in associated buckets */ HASHELEMENT *freeList; /* chain of free elements */ } FreeListData; /* * Header structure for a hash table --- contains all changeable info * * In a shared-memory hash table, the HASHHDR is in shared memory, while * each backend has a local HTAB struct. For a non-shared table, there isn't * any functional difference between HASHHDR and HTAB, but we separate them * anyway to share code between shared and non-shared tables. */ struct HASHHDR { /* * The freelist can become a point of contention in high-concurrency hash * tables, so we use an array of freelists, each with its own mutex and * nentries count, instead of just a single one. Although the freelists * normally operate independently, we will scavenge entries from freelists * other than a hashcode's default freelist when necessary. * * If the hash table is not partitioned, only freeList[0] is used and its * spinlock is not used at all; callers' locking is assumed sufficient. */ FreeListData freeList[NUM_FREELISTS]; /* These fields can change, but not in a partitioned table */ /* Also, dsize can't change in a shared table, even if unpartitioned */ long dsize; /* directory size */ long nsegs; /* number of allocated segments (<= dsize) */ uint32 max_bucket; /* ID of maximum bucket in use */ uint32 high_mask; /* mask to modulo into entire table */ uint32 low_mask; /* mask to modulo into lower half of table */ /* These fields are fixed at hashtable creation */ Size keysize; /* hash key length in bytes */ Size entrysize; /* total user element size in bytes */ long num_partitions; /* # partitions (must be power of 2), or 0 */ long max_dsize; /* 'dsize' limit if directory is fixed size */ long ssize; /* segment size --- must be power of 2 */ int sshift; /* segment shift = log2(ssize) */ int nelem_alloc; /* number of entries to allocate at once */ #ifdef HASH_STATISTICS /* * Count statistics here. NB: stats code doesn't bother with mutex, so * counts could be corrupted a bit in a partitioned table. */ long accesses; long collisions; #endif }; #define IS_PARTITIONED(hctl) ((hctl)->num_partitions != 0) #define FREELIST_IDX(hctl, hashcode) \ (IS_PARTITIONED(hctl) ? (hashcode) % NUM_FREELISTS : 0) /* * Top control structure for a hashtable --- in a shared table, each backend * has its own copy (OK since no fields change at runtime) */ struct HTAB { HASHHDR *hctl; /* => shared control information */ HASHSEGMENT *dir; /* directory of segment starts */ HashValueFunc hash; /* hash function */ HashCompareFunc match; /* key comparison function */ HashCopyFunc keycopy; /* key copying function */ HashAllocFunc alloc; /* memory allocator */ MemoryContext hcxt; /* memory context if default allocator used */ char *tabname; /* table name (for error messages) */ bool isshared; /* true if table is in shared memory */ bool isfixed; /* if true, don't enlarge */ /* freezing a shared table isn't allowed, so we can keep state here */ bool frozen; /* true = no more inserts allowed */ /* We keep local copies of these fixed values to reduce contention */ Size keysize; /* hash key length in bytes */ long ssize; /* segment size --- must be power of 2 */ int sshift; /* segment shift = log2(ssize) */ }; /* * Key (also entry) part of a HASHELEMENT */ #define ELEMENTKEY(helem) (((char *)(helem)) + MAXALIGN(sizeof(HASHELEMENT))) /* * Obtain element pointer given pointer to key */ #define ELEMENT_FROM_KEY(key) \ ((HASHELEMENT *) (((char *) (key)) - MAXALIGN(sizeof(HASHELEMENT)))) /* * Fast MOD arithmetic, assuming that y is a power of 2 ! */ #define MOD(x,y) ((x) & ((y)-1)) #ifdef HASH_STATISTICS static long hash_accesses, hash_collisions, hash_expansions; #endif /* * Private function prototypes */ static void *DynaHashAlloc(Size size); static HASHSEGMENT seg_alloc(HTAB *hashp); static bool element_alloc(HTAB *hashp, int nelem, int freelist_idx); static bool dir_realloc(HTAB *hashp); static bool expand_table(HTAB *hashp); static HASHBUCKET get_hash_entry(HTAB *hashp, int freelist_idx); static void hdefault(HTAB *hashp); static int choose_nelem_alloc(Size entrysize); static bool init_htab(HTAB *hashp, long nelem); static void hash_corrupted(HTAB *hashp); static long next_pow2_long(long num); static int next_pow2_int(long num); static void register_seq_scan(HTAB *hashp); static void deregister_seq_scan(HTAB *hashp); static bool has_seq_scans(HTAB *hashp); /* * memory allocation support */ static __thread MemoryContext CurrentDynaHashCxt = NULL; static void * DynaHashAlloc(Size size) { Assert(MemoryContextIsValid(CurrentDynaHashCxt)); return MemoryContextAlloc(CurrentDynaHashCxt, size); } /* * HashCompareFunc for string keys * * Because we copy keys with strlcpy(), they will be truncated at keysize-1 * bytes, so we can only compare that many ... hence strncmp is almost but * not quite the right thing. */ /************************** CREATE ROUTINES **********************/ /* * hash_create -- create a new dynamic hash table * * tabname: a name for the table (for debugging purposes) * nelem: maximum number of elements expected * *info: additional table parameters, as indicated by flags * flags: bitmask indicating which parameters to take from *info * * The flags value *must* include HASH_ELEM. (Formerly, this was nominally * optional, but the default keysize and entrysize values were useless.) * The flags value must also include exactly one of HASH_STRINGS, HASH_BLOBS, * or HASH_FUNCTION, to define the key hashing semantics (C strings, * binary blobs, or custom, respectively). Callers specifying a custom * hash function will likely also want to use HASH_COMPARE, and perhaps * also HASH_KEYCOPY, to control key comparison and copying. * Another often-used flag is HASH_CONTEXT, to allocate the hash table * under info->hcxt rather than under TopMemoryContext; the default * behavior is only suitable for session-lifespan hash tables. * Other flags bits are special-purpose and seldom used, except for those * associated with shared-memory hash tables, for which see ShmemInitHash(). * * Fields in *info are read only when the associated flags bit is set. * It is not necessary to initialize other fields of *info. * Neither tabname nor *info need persist after the hash_create() call. * * Note: It is deprecated for callers of hash_create() to explicitly specify * string_hash, tag_hash, uint32_hash, or oid_hash. Just set HASH_STRINGS or * HASH_BLOBS. Use HASH_FUNCTION only when you want something other than * one of these. * * Note: for a shared-memory hashtable, nelem needs to be a pretty good * estimate, since we can't expand the table on the fly. But an unshared * hashtable can be expanded on-the-fly, so it's better for nelem to be * on the small side and let the table grow if it's exceeded. An overly * large nelem will penalize hash_seq_search speed without buying much. */ /* * Set default HASHHDR parameters. */ #ifdef HASH_STATISTICS #endif /* * Given the user-specified entry size, choose nelem_alloc, ie, how many * elements to add to the hash table when we need more. */ /* * Compute derived fields of hctl and build the initial directory/segment * arrays */ #ifdef HASH_DEBUG #endif /* * Estimate the space needed for a hashtable containing the given number * of entries of given size. * NOTE: this is used to estimate the footprint of hashtables in shared * memory; therefore it does not count HTAB which is in local memory. * NB: assumes that all hash structure parameters have default values! */ /* * Select an appropriate directory size for a hashtable with the given * maximum number of entries. * This is only needed for hashtables in shared memory, whose directories * cannot be expanded dynamically. * NB: assumes that all hash structure parameters have default values! * * XXX this had better agree with the behavior of init_htab()... */ /* * Compute the required initial memory allocation for a shared-memory * hashtable with the given parameters. We need space for the HASHHDR * and for the (non expansible) directory. */ /********************** DESTROY ROUTINES ************************/ #ifdef HASH_STATISTICS #endif /*******************************SEARCH ROUTINES *****************************/ /* * get_hash_value -- exported routine to calculate a key's hash value * * We export this because for partitioned tables, callers need to compute * the partition number (from the low-order bits of the hash value) before * searching. */ /* Convert a hash value to a bucket number */ static inline uint32 calc_bucket(HASHHDR *hctl, uint32 hash_val) { uint32 bucket; bucket = hash_val & hctl->high_mask; if (bucket > hctl->max_bucket) bucket = bucket & hctl->low_mask; return bucket; } /* * hash_search -- look up key in table and perform action * hash_search_with_hash_value -- same, with key's hash value already computed * * action is one of: * HASH_FIND: look up key in table * HASH_ENTER: look up key in table, creating entry if not present * HASH_ENTER_NULL: same, but return NULL if out of memory * HASH_REMOVE: look up key in table, remove entry if present * * Return value is a pointer to the element found/entered/removed if any, * or NULL if no match was found. (NB: in the case of the REMOVE action, * the result is a dangling pointer that shouldn't be dereferenced!) * * HASH_ENTER will normally ereport a generic "out of memory" error if * it is unable to create a new entry. The HASH_ENTER_NULL operation is * the same except it will return NULL if out of memory. Note that * HASH_ENTER_NULL cannot be used with the default palloc-based allocator, * since palloc internally ereports on out-of-memory. * * If foundPtr isn't NULL, then *foundPtr is set true if we found an * existing entry in the table, false otherwise. This is needed in the * HASH_ENTER case, but is redundant with the return value otherwise. * * For hash_search_with_hash_value, the hashvalue parameter must have been * calculated with get_hash_value(). */ void * hash_search(HTAB *hashp, const void *keyPtr, HASHACTION action, bool *foundPtr) { return hash_search_with_hash_value(hashp, keyPtr, hashp->hash(keyPtr, hashp->keysize), action, foundPtr); } void * hash_search_with_hash_value(HTAB *hashp, const void *keyPtr, uint32 hashvalue, HASHACTION action, bool *foundPtr) { HASHHDR *hctl = hashp->hctl; int freelist_idx = FREELIST_IDX(hctl, hashvalue); Size keysize; uint32 bucket; long segment_num; long segment_ndx; HASHSEGMENT segp; HASHBUCKET currBucket; HASHBUCKET *prevBucketPtr; HashCompareFunc match; #ifdef HASH_STATISTICS hash_accesses++; hctl->accesses++; #endif /* * If inserting, check if it is time to split a bucket. * * NOTE: failure to expand table is not a fatal error, it just means we * have to run at higher fill factor than we wanted. However, if we're * using the palloc allocator then it will throw error anyway on * out-of-memory, so we must do this before modifying the table. */ if (action == HASH_ENTER || action == HASH_ENTER_NULL) { /* * Can't split if running in partitioned mode, nor if frozen, nor if * table is the subject of any active hash_seq_search scans. */ if (hctl->freeList[0].nentries > (long) hctl->max_bucket && !IS_PARTITIONED(hctl) && !hashp->frozen && !has_seq_scans(hashp)) (void) expand_table(hashp); } /* * Do the initial lookup */ bucket = calc_bucket(hctl, hashvalue); segment_num = bucket >> hashp->sshift; segment_ndx = MOD(bucket, hashp->ssize); segp = hashp->dir[segment_num]; if (segp == NULL) hash_corrupted(hashp); prevBucketPtr = &segp[segment_ndx]; currBucket = *prevBucketPtr; /* * Follow collision chain looking for matching key */ match = hashp->match; /* save one fetch in inner loop */ keysize = hashp->keysize; /* ditto */ while (currBucket != NULL) { if (currBucket->hashvalue == hashvalue && match(ELEMENTKEY(currBucket), keyPtr, keysize) == 0) break; prevBucketPtr = &(currBucket->link); currBucket = *prevBucketPtr; #ifdef HASH_STATISTICS hash_collisions++; hctl->collisions++; #endif } if (foundPtr) *foundPtr = (bool) (currBucket != NULL); /* * OK, now what? */ switch (action) { case HASH_FIND: if (currBucket != NULL) return (void *) ELEMENTKEY(currBucket); return NULL; case HASH_REMOVE: if (currBucket != NULL) { /* if partitioned, must lock to touch nentries and freeList */ if (IS_PARTITIONED(hctl)) SpinLockAcquire(&(hctl->freeList[freelist_idx].mutex)); /* delete the record from the appropriate nentries counter. */ Assert(hctl->freeList[freelist_idx].nentries > 0); hctl->freeList[freelist_idx].nentries--; /* remove record from hash bucket's chain. */ *prevBucketPtr = currBucket->link; /* add the record to the appropriate freelist. */ currBucket->link = hctl->freeList[freelist_idx].freeList; hctl->freeList[freelist_idx].freeList = currBucket; if (IS_PARTITIONED(hctl)) SpinLockRelease(&hctl->freeList[freelist_idx].mutex); /* * better hope the caller is synchronizing access to this * element, because someone else is going to reuse it the next * time something is added to the table */ return (void *) ELEMENTKEY(currBucket); } return NULL; case HASH_ENTER_NULL: /* ENTER_NULL does not work with palloc-based allocator */ Assert(hashp->alloc != DynaHashAlloc); /* FALL THRU */ case HASH_ENTER: /* Return existing element if found, else create one */ if (currBucket != NULL) return (void *) ELEMENTKEY(currBucket); /* disallow inserts if frozen */ if (hashp->frozen) elog(ERROR, "cannot insert into frozen hashtable \"%s\"", hashp->tabname); currBucket = get_hash_entry(hashp, freelist_idx); if (currBucket == NULL) { /* out of memory */ if (action == HASH_ENTER_NULL) return NULL; /* report a generic message */ if (hashp->isshared) ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of shared memory"))); else ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"))); } /* link into hashbucket chain */ *prevBucketPtr = currBucket; currBucket->link = NULL; /* copy key into record */ currBucket->hashvalue = hashvalue; hashp->keycopy(ELEMENTKEY(currBucket), keyPtr, keysize); /* * Caller is expected to fill the data field on return. DO NOT * insert any code that could possibly throw error here, as doing * so would leave the table entry incomplete and hence corrupt the * caller's data structure. */ return (void *) ELEMENTKEY(currBucket); } elog(ERROR, "unrecognized hash action code: %d", (int) action); return NULL; /* keep compiler quiet */ } /* * hash_update_hash_key -- change the hash key of an existing table entry * * This is equivalent to removing the entry, making a new entry, and copying * over its data, except that the entry never goes to the table's freelist. * Therefore this cannot suffer an out-of-memory failure, even if there are * other processes operating in other partitions of the hashtable. * * Returns true if successful, false if the requested new hash key is already * present. Throws error if the specified entry pointer isn't actually a * table member. * * NB: currently, there is no special case for old and new hash keys being * identical, which means we'll report false for that situation. This is * preferable for existing uses. * * NB: for a partitioned hashtable, caller must hold lock on both relevant * partitions, if the new hash key would belong to a different partition. */ #ifdef HASH_STATISTICS #endif #ifdef HASH_STATISTICS #endif /* * Allocate a new hashtable entry if possible; return NULL if out of memory. * (Or, if the underlying space allocator throws error for out-of-memory, * we won't return at all.) */ static HASHBUCKET get_hash_entry(HTAB *hashp, int freelist_idx) { HASHHDR *hctl = hashp->hctl; HASHBUCKET newElement; for (;;) { /* if partitioned, must lock to touch nentries and freeList */ if (IS_PARTITIONED(hctl)) SpinLockAcquire(&hctl->freeList[freelist_idx].mutex); /* try to get an entry from the freelist */ newElement = hctl->freeList[freelist_idx].freeList; if (newElement != NULL) break; if (IS_PARTITIONED(hctl)) SpinLockRelease(&hctl->freeList[freelist_idx].mutex); /* * No free elements in this freelist. In a partitioned table, there * might be entries in other freelists, but to reduce contention we * prefer to first try to get another chunk of buckets from the main * shmem allocator. If that fails, though, we *MUST* root through all * the other freelists before giving up. There are multiple callers * that assume that they can allocate every element in the initially * requested table size, or that deleting an element guarantees they * can insert a new element, even if shared memory is entirely full. * Failing because the needed element is in a different freelist is * not acceptable. */ if (!element_alloc(hashp, hctl->nelem_alloc, freelist_idx)) { int borrow_from_idx; if (!IS_PARTITIONED(hctl)) return NULL; /* out of memory */ /* try to borrow element from another freelist */ borrow_from_idx = freelist_idx; for (;;) { borrow_from_idx = (borrow_from_idx + 1) % NUM_FREELISTS; if (borrow_from_idx == freelist_idx) break; /* examined all freelists, fail */ SpinLockAcquire(&(hctl->freeList[borrow_from_idx].mutex)); newElement = hctl->freeList[borrow_from_idx].freeList; if (newElement != NULL) { hctl->freeList[borrow_from_idx].freeList = newElement->link; SpinLockRelease(&(hctl->freeList[borrow_from_idx].mutex)); /* careful: count the new element in its proper freelist */ SpinLockAcquire(&hctl->freeList[freelist_idx].mutex); hctl->freeList[freelist_idx].nentries++; SpinLockRelease(&hctl->freeList[freelist_idx].mutex); return newElement; } SpinLockRelease(&(hctl->freeList[borrow_from_idx].mutex)); } /* no elements available to borrow either, so out of memory */ return NULL; } } /* remove entry from freelist, bump nentries */ hctl->freeList[freelist_idx].freeList = newElement->link; hctl->freeList[freelist_idx].nentries++; if (IS_PARTITIONED(hctl)) SpinLockRelease(&hctl->freeList[freelist_idx].mutex); return newElement; } /* * hash_get_num_entries -- get the number of entries in a hashtable */ /* * hash_seq_init/_search/_term * Sequentially search through hash table and return * all the elements one by one, return NULL when no more. * * hash_seq_term should be called if and only if the scan is abandoned before * completion; if hash_seq_search returns NULL then it has already done the * end-of-scan cleanup. * * NOTE: caller may delete the returned element before continuing the scan. * However, deleting any other element while the scan is in progress is * UNDEFINED (it might be the one that curIndex is pointing at!). Also, * if elements are added to the table while the scan is in progress, it is * unspecified whether they will be visited by the scan or not. * * NOTE: it is possible to use hash_seq_init/hash_seq_search without any * worry about hash_seq_term cleanup, if the hashtable is first locked against * further insertions by calling hash_freeze. * * NOTE: to use this with a partitioned hashtable, caller had better hold * at least shared lock on all partitions of the table throughout the scan! * We can cope with insertions or deletions by our own backend, but *not* * with concurrent insertions or deletions by another. */ /* * hash_freeze * Freeze a hashtable against future insertions (deletions are * still allowed) * * The reason for doing this is that by preventing any more bucket splits, * we no longer need to worry about registering hash_seq_search scans, * and thus caller need not be careful about ensuring hash_seq_term gets * called at the right times. * * Multiple calls to hash_freeze() are allowed, but you can't freeze a table * with active scans (since hash_seq_term would then do the wrong thing). */ /********************************* UTILITIES ************************/ /* * Expand the table by adding one more hash bucket. */ static bool expand_table(HTAB *hashp) { HASHHDR *hctl = hashp->hctl; HASHSEGMENT old_seg, new_seg; long old_bucket, new_bucket; long new_segnum, new_segndx; long old_segnum, old_segndx; HASHBUCKET *oldlink, *newlink; HASHBUCKET currElement, nextElement; Assert(!IS_PARTITIONED(hctl)); #ifdef HASH_STATISTICS hash_expansions++; #endif new_bucket = hctl->max_bucket + 1; new_segnum = new_bucket >> hashp->sshift; new_segndx = MOD(new_bucket, hashp->ssize); if (new_segnum >= hctl->nsegs) { /* Allocate new segment if necessary -- could fail if dir full */ if (new_segnum >= hctl->dsize) if (!dir_realloc(hashp)) return false; if (!(hashp->dir[new_segnum] = seg_alloc(hashp))) return false; hctl->nsegs++; } /* OK, we created a new bucket */ hctl->max_bucket++; /* * *Before* changing masks, find old bucket corresponding to same hash * values; values in that bucket may need to be relocated to new bucket. * Note that new_bucket is certainly larger than low_mask at this point, * so we can skip the first step of the regular hash mask calc. */ old_bucket = (new_bucket & hctl->low_mask); /* * If we crossed a power of 2, readjust masks. */ if ((uint32) new_bucket > hctl->high_mask) { hctl->low_mask = hctl->high_mask; hctl->high_mask = (uint32) new_bucket | hctl->low_mask; } /* * Relocate records to the new bucket. NOTE: because of the way the hash * masking is done in calc_bucket, only one old bucket can need to be * split at this point. With a different way of reducing the hash value, * that might not be true! */ old_segnum = old_bucket >> hashp->sshift; old_segndx = MOD(old_bucket, hashp->ssize); old_seg = hashp->dir[old_segnum]; new_seg = hashp->dir[new_segnum]; oldlink = &old_seg[old_segndx]; newlink = &new_seg[new_segndx]; for (currElement = *oldlink; currElement != NULL; currElement = nextElement) { nextElement = currElement->link; if ((long) calc_bucket(hctl, currElement->hashvalue) == old_bucket) { *oldlink = currElement; oldlink = &currElement->link; } else { *newlink = currElement; newlink = &currElement->link; } } /* don't forget to terminate the rebuilt hash chains... */ *oldlink = NULL; *newlink = NULL; return true; } static bool dir_realloc(HTAB *hashp) { HASHSEGMENT *p; HASHSEGMENT *old_p; long new_dsize; long old_dirsize; long new_dirsize; if (hashp->hctl->max_dsize != NO_MAX_DSIZE) return false; /* Reallocate directory */ new_dsize = hashp->hctl->dsize << 1; old_dirsize = hashp->hctl->dsize * sizeof(HASHSEGMENT); new_dirsize = new_dsize * sizeof(HASHSEGMENT); old_p = hashp->dir; CurrentDynaHashCxt = hashp->hcxt; p = (HASHSEGMENT *) hashp->alloc((Size) new_dirsize); if (p != NULL) { memcpy(p, old_p, old_dirsize); MemSet(((char *) p) + old_dirsize, 0, new_dirsize - old_dirsize); hashp->dir = p; hashp->hctl->dsize = new_dsize; /* XXX assume the allocator is palloc, so we know how to free */ Assert(hashp->alloc == DynaHashAlloc); pfree(old_p); return true; } return false; } static HASHSEGMENT seg_alloc(HTAB *hashp) { HASHSEGMENT segp; CurrentDynaHashCxt = hashp->hcxt; segp = (HASHSEGMENT) hashp->alloc(sizeof(HASHBUCKET) * hashp->ssize); if (!segp) return NULL; MemSet(segp, 0, sizeof(HASHBUCKET) * hashp->ssize); return segp; } /* * allocate some new elements and link them into the indicated free list */ static bool element_alloc(HTAB *hashp, int nelem, int freelist_idx) { HASHHDR *hctl = hashp->hctl; Size elementSize; HASHELEMENT *firstElement; HASHELEMENT *tmpElement; HASHELEMENT *prevElement; int i; if (hashp->isfixed) return false; /* Each element has a HASHELEMENT header plus user data. */ elementSize = MAXALIGN(sizeof(HASHELEMENT)) + MAXALIGN(hctl->entrysize); CurrentDynaHashCxt = hashp->hcxt; firstElement = (HASHELEMENT *) hashp->alloc(nelem * elementSize); if (!firstElement) return false; /* prepare to link all the new entries into the freelist */ prevElement = NULL; tmpElement = firstElement; for (i = 0; i < nelem; i++) { tmpElement->link = prevElement; prevElement = tmpElement; tmpElement = (HASHELEMENT *) (((char *) tmpElement) + elementSize); } /* if partitioned, must lock to touch freeList */ if (IS_PARTITIONED(hctl)) SpinLockAcquire(&hctl->freeList[freelist_idx].mutex); /* freelist could be nonempty if two backends did this concurrently */ firstElement->link = hctl->freeList[freelist_idx].freeList; hctl->freeList[freelist_idx].freeList = prevElement; if (IS_PARTITIONED(hctl)) SpinLockRelease(&hctl->freeList[freelist_idx].mutex); return true; } /* complain when we have detected a corrupted hashtable */ static void hash_corrupted(HTAB *hashp) { /* * If the corruption is in a shared hashtable, we'd better force a * systemwide restart. Otherwise, just shut down this one backend. */ if (hashp->isshared) elog(PANIC, "hash table \"%s\" corrupted", hashp->tabname); else elog(FATAL, "hash table \"%s\" corrupted", hashp->tabname); } /* calculate ceil(log base 2) of num */ #if SIZEOF_LONG < 8 #else #endif /* calculate first power of 2 >= num, bounded to what will fit in a long */ /* calculate first power of 2 >= num, bounded to what will fit in an int */ /************************* SEQ SCAN TRACKING ************************/ /* * We track active hash_seq_search scans here. The need for this mechanism * comes from the fact that a scan will get confused if a bucket split occurs * while it's in progress: it might visit entries twice, or even miss some * entirely (if it's partway through the same bucket that splits). Hence * we want to inhibit bucket splits if there are any active scans on the * table being inserted into. This is a fairly rare case in current usage, * so just postponing the split until the next insertion seems sufficient. * * Given present usages of the function, only a few scans are likely to be * open concurrently; so a finite-size stack of open scans seems sufficient, * and we don't worry that linear search is too slow. Note that we do * allow multiple scans of the same hashtable to be open concurrently. * * This mechanism can support concurrent scan and insertion in a shared * hashtable if it's the same backend doing both. It would fail otherwise, * but locking reasons seem to preclude any such scenario anyway, so we don't * worry. * * This arrangement is reasonably robust if a transient hashtable is deleted * without notifying us. The absolute worst case is we might inhibit splits * in another table created later at exactly the same address. We will give * a warning at transaction end for reference leaks, so any bugs leading to * lack of notification should be easy to catch. */ #define MAX_SEQ_SCANS 100 static __thread HTAB *seq_scan_tables[MAX_SEQ_SCANS]; /* tables being scanned */ /* subtransaction nest level */ static __thread int num_seq_scans = 0; /* Register a table as having an active hash_seq_search scan */ /* Deregister an active scan */ /* Check if a table has any active scan */ static bool has_seq_scans(HTAB *hashp) { int i; for (i = 0; i < num_seq_scans; i++) { if (seq_scan_tables[i] == hashp) return true; } return false; } /* Clean up any open scans at end of transaction */ /* Clean up any open scans at end of subtransaction */ pg_query-4.2.3/ext/pg_query/src_common_psprintf.c0000644000004100000410000001066514510636647022312 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pvsnprintf * - psprintf *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * psprintf.c * sprintf into an allocated-on-demand buffer * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/common/psprintf.c * *------------------------------------------------------------------------- */ #ifndef FRONTEND #include "postgres.h" #include "utils/memutils.h" #else #include "postgres_fe.h" /* It's possible we could use a different value for this in frontend code */ #define MaxAllocSize ((Size) 0x3fffffff) /* 1 gigabyte - 1 */ #endif /* * psprintf * * Format text data under the control of fmt (an sprintf-style format string) * and return it in an allocated-on-demand buffer. The buffer is allocated * with palloc in the backend, or malloc in frontend builds. Caller is * responsible to free the buffer when no longer needed, if appropriate. * * Errors are not returned to the caller, but are reported via elog(ERROR) * in the backend, or printf-to-stderr-and-exit() in frontend builds. * One should therefore think twice about using this in libpq. */ char * psprintf(const char *fmt,...) { int save_errno = errno; size_t len = 128; /* initial assumption about buffer size */ for (;;) { char *result; va_list args; size_t newlen; /* * Allocate result buffer. Note that in frontend this maps to malloc * with exit-on-error. */ result = (char *) palloc(len); /* Try to format the data. */ errno = save_errno; va_start(args, fmt); newlen = pvsnprintf(result, len, fmt, args); va_end(args); if (newlen < len) return result; /* success */ /* Release buffer and loop around to try again with larger len. */ pfree(result); len = newlen; } } /* * pvsnprintf * * Attempt to format text data under the control of fmt (an sprintf-style * format string) and insert it into buf (which has length len). * * If successful, return the number of bytes emitted, not counting the * trailing zero byte. This will always be strictly less than len. * * If there's not enough space in buf, return an estimate of the buffer size * needed to succeed (this *must* be more than the given len, else callers * might loop infinitely). * * Other error cases do not return, but exit via elog(ERROR) or exit(). * Hence, this shouldn't be used inside libpq. * * Caution: callers must be sure to preserve their entry-time errno * when looping, in case the fmt contains "%m". * * Note that the semantics of the return value are not exactly C99's. * First, we don't promise that the estimated buffer size is exactly right; * callers must be prepared to loop multiple times to get the right size. * (Given a C99-compliant vsnprintf, that won't happen, but it is rumored * that some implementations don't always return the same value ...) * Second, we return the recommended buffer size, not one less than that; * this lets overflow concerns be handled here rather than in the callers. */ size_t pvsnprintf(char *buf, size_t len, const char *fmt, va_list args) { int nprinted; nprinted = vsnprintf(buf, len, fmt, args); /* We assume failure means the fmt is bogus, hence hard failure is OK */ if (unlikely(nprinted < 0)) { #ifndef FRONTEND elog(ERROR, "vsnprintf failed: %m with format string \"%s\"", fmt); #else fprintf(stderr, "vsnprintf failed: %s with format string \"%s\"\n", strerror(errno), fmt); exit(EXIT_FAILURE); #endif } if ((size_t) nprinted < len) { /* Success. Note nprinted does not include trailing null. */ return (size_t) nprinted; } /* * We assume a C99-compliant vsnprintf, so believe its estimate of the * required space, and add one for the trailing null. (If it's wrong, the * logic will still work, but we may loop multiple times.) * * Choke if the required space would exceed MaxAllocSize. Note we use * this palloc-oriented overflow limit even when in frontend. */ if (unlikely((size_t) nprinted > MaxAllocSize - 1)) { #ifndef FRONTEND ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("out of memory"))); #else fprintf(stderr, _("out of memory\n")); exit(EXIT_FAILURE); #endif } return nprinted + 1; } pg_query-4.2.3/ext/pg_query/pg_query_deparse.c0000644000004100000410000000257614510636647021566 0ustar www-datawww-data#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); } pg_query-4.2.3/ext/pg_query/src_backend_utils_error_assert.c0000644000004100000410000000407714510636647024476 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - ExceptionalCondition *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * assert.c * Assert support code. * * Portions Copyright (c) 1996-2022, 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 *errorType, const char *fileName, int lineNumber) { /* Report the failure on stderr (or local equivalent) */ if (!PointerIsValid(conditionName) || !PointerIsValid(fileName) || !PointerIsValid(errorType)) write_stderr("TRAP: ExceptionalCondition: bad arguments in PID %d\n", (int) getpid()); else write_stderr("TRAP: %s(\"%s\", File: \"%s\", Line: %d, PID: %d)\n", errorType, 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(); } pg_query-4.2.3/ext/pg_query/src_backend_utils_init_globals.c0000644000004100000410000000633114510636647024425 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - CritSectionCount * - ExitOnAnyError * - InterruptHoldoffCount * - QueryCancelHoldoffCount * - InterruptPending *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * globals.c * global variable declarations * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/init/globals.c * * NOTES * Globals used all over the place should be declared here and not * in other modules. * *------------------------------------------------------------------------- */ #include "postgres.h" #include "common/file_perm.h" #include "libpq/libpq-be.h" #include "libpq/pqcomm.h" #include "miscadmin.h" #include "storage/backendid.h" __thread volatile sig_atomic_t InterruptPending = false; __thread volatile uint32 InterruptHoldoffCount = 0; __thread volatile uint32 QueryCancelHoldoffCount = 0; __thread volatile uint32 CritSectionCount = 0; /* * MyLatch points to the latch that should be used for signal handling by the * current process. It will either point to a process local latch if the * current process does not have a PGPROC entry in that moment, or to * PGPROC->procLatch if it has. Thus it can always be used in signal handlers, * without checking for its existence. */ /* * DataDir is the absolute path to the top level of the PGDATA directory tree. * Except during early startup, this is also the server's working directory; * most code therefore can simply use relative paths and not reference DataDir * explicitly. */ /* * Mode of the data directory. The default is 0700 but it may be changed in * checkDataDir() to 0750 if the data directory actually has that mode. */ /* debugging output file */ /* full path to my executable */ /* full path to lib directory */ #ifdef EXEC_BACKEND char postgres_exec_path[MAXPGPATH]; /* full path to backend */ /* note: currently this is not valid in backend processes */ #endif /* * DatabasePath is the path (relative to DataDir) of my database's * primary directory, ie, its directory in the default tablespace. */ /* * IsPostmasterEnvironment is true in a postmaster process and any postmaster * child process; it is false in a standalone process (bootstrap or * standalone backend). IsUnderPostmaster is true in postmaster child * processes. Note that "child process" includes all children, not only * regular backends. These should be set correctly as early as possible * in the execution of a process, so that error handling will do the right * things if an error should occur during process initialization. * * These are initialized for the bootstrap/standalone case. */ __thread bool 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 */ pg_query-4.2.3/ext/pg_query/src_port_snprintf.c0000644000004100000410000010414214510636647021776 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_vfprintf * - dopr * - pg_snprintf * - pg_vsnprintf * - strchrnul * - dostr * - find_arguments * - fmtint * - adjust_sign * - compute_padlen * - leading_pad * - dopr_outchmulti * - trailing_pad * - fmtchar * - fmtstr * - fmtptr * - fmtfloat * - dopr_outch * - flushbuffer * - pg_fprintf * - pg_sprintf * - pg_vsprintf * - pg_printf *-------------------------------------------------------------------- */ /* * Copyright (c) 1983, 1995, 1996 Eric P. Allman * Copyright (c) 1988, 1993 * The Regents of the University of California. All rights reserved. * Portions Copyright (c) 1996-2022, 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), it's a good bit faster than the * equivalent manual loop. If it doesn't exist, provide a replacement. * * Note: glibc declares this as returning "char *", but that would require * casting away const internally, so we don't follow that detail. */ #ifndef HAVE_STRCHRNUL static inline const char * strchrnul(const char *s, int c) { while (*s != '\0' && *s != c) s++; return s; } #else /* * glibc's declares strchrnul only if _GNU_SOURCE is defined. * While we typically use that on glibc platforms, configure will set * HAVE_STRCHRNUL whether it's used or not. Fill in the missing declaration * so that this file will compile cleanly with or without _GNU_SOURCE. */ #ifndef _GNU_SOURCE extern char *strchrnul(const char *s, int c); #endif #endif /* HAVE_STRCHRNUL */ /* * dopr(): the guts of *printf for all cases. */ static void dopr(PrintfTarget *target, const char *format, va_list args) { int save_errno = errno; const char *first_pct = NULL; int ch; bool have_dollar; bool have_star; bool afterstar; int accum; int longlongflag; int longflag; int pointflag; int leftjust; int fieldwidth; int precision; int zpad; int forcesign; int fmtpos; int cvalue; long long numvalue; double fvalue; 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; PrintfArgType argtypes[PG_NL_ARGMAX + 1]; /* Initialize to "no dollar arguments known" */ last_dollar = 0; MemSet(argtypes, 0, sizeof(argtypes)); /* * This loop must accept the same format strings as the one in dopr(). * However, we don't need to analyze them to the same level of detail. * * Since we're only called if there's a dollar-type spec somewhere, we can * fail immediately if we find a non-dollar spec. Per the C99 standard, * all argument references in the format string must be one or the other. */ while (*format != '\0') { /* Locate next conversion specifier */ if (*format != '%') { /* Unlike dopr, we can just quit if there's no more specifiers */ format = strchr(format + 1, '%'); if (format == NULL) break; } /* Process conversion spec starting at *format */ format++; longflag = longlongflag = 0; fmtpos = accum = 0; afterstar = false; nextch1: ch = *format++; switch (ch) { case '-': case '+': goto nextch1; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': accum = accum * 10 + (ch - '0'); goto nextch1; case '.': accum = 0; goto nextch1; case '*': if (afterstar) return false; /* previous star missing dollar */ afterstar = true; accum = 0; goto nextch1; case '$': if (accum <= 0 || accum > PG_NL_ARGMAX) return false; if (afterstar) { if (argtypes[accum] && argtypes[accum] != ATYPE_INT) return false; argtypes[accum] = ATYPE_INT; last_dollar = Max(last_dollar, accum); afterstar = false; } else fmtpos = accum; accum = 0; goto nextch1; case 'l': if (longflag) longlongflag = 1; else longflag = 1; goto nextch1; case 'z': #if SIZEOF_SIZE_T == 8 #ifdef HAVE_LONG_INT_64 longflag = 1; #elif defined(HAVE_LONG_LONG_INT_64) longlongflag = 1; #else #error "Don't know how to print 64bit integers" #endif #else /* assume size_t is same size as int */ #endif goto nextch1; case 'h': case '\'': /* ignore these */ goto nextch1; case 'd': case 'i': case 'o': case 'u': case 'x': case 'X': if (fmtpos) { PrintfArgType atype; if (longlongflag) atype = ATYPE_LONGLONG; else if (longflag) atype = ATYPE_LONG; else atype = ATYPE_INT; if (argtypes[fmtpos] && argtypes[fmtpos] != atype) return false; argtypes[fmtpos] = atype; last_dollar = Max(last_dollar, fmtpos); } else return false; /* non-dollar conversion spec */ break; case 'c': if (fmtpos) { if (argtypes[fmtpos] && argtypes[fmtpos] != ATYPE_INT) return false; argtypes[fmtpos] = ATYPE_INT; last_dollar = Max(last_dollar, fmtpos); } else return false; /* non-dollar conversion spec */ break; case 's': case 'p': if (fmtpos) { if (argtypes[fmtpos] && argtypes[fmtpos] != ATYPE_CHARPTR) return false; argtypes[fmtpos] = ATYPE_CHARPTR; last_dollar = Max(last_dollar, fmtpos); } else return false; /* non-dollar conversion spec */ break; case 'e': case 'E': case 'f': case 'g': case 'G': if (fmtpos) { if (argtypes[fmtpos] && argtypes[fmtpos] != ATYPE_DOUBLE) return false; argtypes[fmtpos] = ATYPE_DOUBLE; last_dollar = Max(last_dollar, fmtpos); } else return false; /* non-dollar conversion spec */ break; case 'm': case '%': break; default: return false; /* bogus format string */ } /* * If we finish the spec with afterstar still set, there's a * non-dollar star in there. */ if (afterstar) return false; /* non-dollar conversion spec */ } /* * Format appears valid so far, so collect the arguments in physical * order. (Since we rejected any non-dollar specs that would have * collected arguments, we know that dopr() hasn't collected any yet.) */ for (i = 1; i <= last_dollar; i++) { switch (argtypes[i]) { case ATYPE_NONE: return false; case ATYPE_INT: argvalues[i].i = va_arg(args, int); break; case ATYPE_LONG: argvalues[i].l = va_arg(args, long); break; case ATYPE_LONGLONG: argvalues[i].ll = va_arg(args, long long); break; case ATYPE_DOUBLE: argvalues[i].d = va_arg(args, double); break; case ATYPE_CHARPTR: argvalues[i].cptr = va_arg(args, char *); break; } } return true; } static void fmtstr(const char *value, int leftjust, int minlen, int maxwidth, int pointflag, PrintfTarget *target) { int padlen, vallen; /* amount to pad */ /* * If a maxwidth (precision) is specified, we must not fetch more bytes * than that. */ if (pointflag) vallen = strnlen(value, maxwidth); else vallen = strlen(value); padlen = compute_padlen(minlen, vallen, leftjust); if (padlen > 0) { dopr_outchmulti(' ', padlen, target); padlen = 0; } dostr(value, vallen, target); trailing_pad(padlen, target); } static void fmtptr(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); } pg_query-4.2.3/ext/pg_query/pg_query_readfuncs.h0000644000004100000410000000031114510636647022103 0ustar www-datawww-data#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 pg_query-4.2.3/ext/pg_query/src_backend_parser_scansup.c0000644000004100000410000000736114510636647023573 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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-2022, 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 == '\f') return true; return false; } pg_query-4.2.3/ext/pg_query/src_backend_storage_lmgr_s_lock.c0000644000004100000410000002320014510636647024550 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - s_lock * - perform_spin_delay * - spins_per_delay * - s_lock_stuck * - finish_spin_delay *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * s_lock.c * Hardware-dependent implementation of spinlocks. * * When waiting for a contended spinlock we loop tightly for awhile, then * delay using pg_usleep() and try again. Preferably, "awhile" should be a * small multiple of the maximum time we expect a spinlock to be held. 100 * iterations seems about right as an initial guess. However, on a * uniprocessor the loop is a waste of cycles, while in a multi-CPU scenario * it's usually better to spin a bit longer than to call the kernel, so we try * to adapt the spin loop count depending on whether we seem to be in a * uniprocessor or multiprocessor. * * Note: you might think MIN_SPINS_PER_DELAY should be just 1, but you'd * be wrong; there are platforms where that can result in a "stuck * spinlock" failure. This has been seen particularly on Alphas; it seems * that the first TAS after returning from kernel space will always fail * on that hardware. * * Once we do decide to block, we use randomly increasing pg_usleep() * delays. The first delay is 1 msec, then the delay randomly increases to * about one second, after which we reset to 1 msec and start again. The * idea here is that in the presence of heavy contention we need to * increase the delay, else the spinlock holder may never get to run and * release the lock. (Consider situation where spinlock holder has been * nice'd down in priority by the scheduler --- it will not get scheduled * until all would-be acquirers are sleeping, so if we always use a 1-msec * sleep, there is a real possibility of starvation.) But we can't just * clamp the delay to an upper bound, else it would take a long time to * make a reasonable number of tries. * * We time out and declare error after NUM_DELAYS delays (thus, exactly * that many tries). With the given settings, this will usually take 2 or * so minutes. It seems better to fix the total number of tries (and thus * the probability of unintended failure) than to fix the total time * spent. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/storage/lmgr/s_lock.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include "common/pg_prng.h" #include "port/atomics.h" #include "storage/s_lock.h" #define MIN_SPINS_PER_DELAY 10 #define MAX_SPINS_PER_DELAY 1000 #define NUM_DELAYS 1000 #define MIN_DELAY_USEC 1000L #define MAX_DELAY_USEC 1000000L static __thread int spins_per_delay = DEFAULT_SPINS_PER_DELAY; /* * s_lock_stuck() - complain about a stuck spinlock */ static void s_lock_stuck(const char *file, int line, const char *func) { if (!func) func = "(unknown)"; #if defined(S_LOCK_TEST) fprintf(stderr, "\nStuck spinlock detected at %s, %s:%d.\n", func, file, line); exit(1); #else elog(PANIC, "stuck spinlock detected at %s, %s:%d", func, file, line); #endif } /* * s_lock(lock) - platform-independent portion of waiting for a spinlock. */ int s_lock(volatile slock_t *lock, const char *file, int line, const char *func) { SpinDelayStatus delayStatus; init_spin_delay(&delayStatus, file, line, func); while (TAS_SPIN(lock)) { perform_spin_delay(&delayStatus); } finish_spin_delay(&delayStatus); return delayStatus.delays; } #ifdef USE_DEFAULT_S_UNLOCK void s_unlock(volatile slock_t *lock) { #ifdef TAS_ACTIVE_WORD /* HP's PA-RISC */ *TAS_ACTIVE_WORD(lock) = -1; #else *lock = 0; #endif } #endif /* * Wait while spinning on a contended spinlock. */ void perform_spin_delay(SpinDelayStatus *status) { /* CPU-specific delay each time through the loop */ SPIN_DELAY(); /* Block the process every spins_per_delay tries */ if (++(status->spins) >= spins_per_delay) { if (++(status->delays) > NUM_DELAYS) s_lock_stuck(status->file, status->line, status->func); if (status->cur_delay == 0) /* first time to delay? */ status->cur_delay = MIN_DELAY_USEC; pg_usleep(status->cur_delay); #if defined(S_LOCK_TEST) fprintf(stdout, "*"); fflush(stdout); #endif /* increase delay by a random fraction between 1X and 2X */ status->cur_delay += (int) (status->cur_delay * pg_prng_double(&pg_global_prng_state) + 0.5); /* wrap back to minimum delay when max is exceeded */ if (status->cur_delay > MAX_DELAY_USEC) status->cur_delay = MIN_DELAY_USEC; status->spins = 0; } } /* * After acquiring a spinlock, update estimates about how long to loop. * * If we were able to acquire the lock without delaying, it's a good * indication we are in a multiprocessor. If we had to delay, it's a sign * (but not a sure thing) that we are in a uniprocessor. Hence, we * decrement spins_per_delay slowly when we had to delay, and increase it * rapidly when we didn't. It's expected that spins_per_delay will * converge to the minimum value on a uniprocessor and to the maximum * value on a multiprocessor. * * Note: spins_per_delay is local within our current process. We want to * average these observations across multiple backends, since it's * relatively rare for this function to even get entered, and so a single * backend might not live long enough to converge on a good value. That * is handled by the two routines below. */ void finish_spin_delay(SpinDelayStatus *status) { if (status->cur_delay == 0) { /* we never had to delay */ if (spins_per_delay < MAX_SPINS_PER_DELAY) spins_per_delay = Min(spins_per_delay + 100, MAX_SPINS_PER_DELAY); } else { if (spins_per_delay > MIN_SPINS_PER_DELAY) spins_per_delay = Max(spins_per_delay - 1, MIN_SPINS_PER_DELAY); } } /* * Set local copy of spins_per_delay during backend startup. * * NB: this has to be pretty fast as it is called while holding a spinlock */ /* * Update shared estimate of spins_per_delay during backend exit. * * NB: this has to be pretty fast as it is called while holding a spinlock */ /* * Various TAS implementations that cannot live in s_lock.h as no inline * definition exists (yet). * In the future, get rid of tas.[cso] and fold it into this file. * * If you change something here, you will likely need to modify s_lock.h too, * because the definitions for these are split between this file and s_lock.h. */ #ifdef HAVE_SPINLOCKS /* skip spinlocks if requested */ #if defined(__GNUC__) /* * All the gcc flavors that are not inlined */ /* * Note: all the if-tests here probably ought to be testing gcc version * rather than platform, but I don't have adequate info to know what to * write. Ideally we'd flush all this in favor of the inline version. */ #if defined(__m68k__) && !defined(__linux__) /* really means: extern int tas(slock_t* **lock); */ static void tas_dummy() { __asm__ __volatile__( #if (defined(__NetBSD__) || defined(__OpenBSD__)) && defined(__ELF__) /* no underscore for label and % for registers */ "\ .global tas \n\ tas: \n\ movel %sp@(0x4),%a0 \n\ tas %a0@ \n\ beq _success \n\ moveq #-128,%d0 \n\ rts \n\ _success: \n\ moveq #0,%d0 \n\ rts \n" #else "\ .global _tas \n\ _tas: \n\ movel sp@(0x4),a0 \n\ tas a0@ \n\ beq _success \n\ moveq #-128,d0 \n\ rts \n\ _success: \n\ moveq #0,d0 \n\ rts \n" #endif /* (__NetBSD__ || __OpenBSD__) && __ELF__ */ ); } #endif /* __m68k__ && !__linux__ */ #endif /* not __GNUC__ */ #endif /* HAVE_SPINLOCKS */ /*****************************************************************************/ #if defined(S_LOCK_TEST) /* * test program for verifying a port's spinlock support. */ struct test_lock_struct { char pad1; slock_t lock; char pad2; }; volatile struct test_lock_struct test_lock; int main() { pg_prng_seed(&pg_global_prng_state, (uint64) time(NULL)); test_lock.pad1 = test_lock.pad2 = 0x44; S_INIT_LOCK(&test_lock.lock); if (test_lock.pad1 != 0x44 || test_lock.pad2 != 0x44) { printf("S_LOCK_TEST: failed, declared datatype is wrong size\n"); return 1; } if (!S_LOCK_FREE(&test_lock.lock)) { printf("S_LOCK_TEST: failed, lock not initialized\n"); return 1; } S_LOCK(&test_lock.lock); if (test_lock.pad1 != 0x44 || test_lock.pad2 != 0x44) { printf("S_LOCK_TEST: failed, declared datatype is wrong size\n"); return 1; } if (S_LOCK_FREE(&test_lock.lock)) { printf("S_LOCK_TEST: failed, lock not locked\n"); return 1; } S_UNLOCK(&test_lock.lock); if (test_lock.pad1 != 0x44 || test_lock.pad2 != 0x44) { printf("S_LOCK_TEST: failed, declared datatype is wrong size\n"); return 1; } if (!S_LOCK_FREE(&test_lock.lock)) { printf("S_LOCK_TEST: failed, lock not unlocked\n"); return 1; } S_LOCK(&test_lock.lock); if (test_lock.pad1 != 0x44 || test_lock.pad2 != 0x44) { printf("S_LOCK_TEST: failed, declared datatype is wrong size\n"); return 1; } if (S_LOCK_FREE(&test_lock.lock)) { printf("S_LOCK_TEST: failed, lock not re-locked\n"); return 1; } printf("S_LOCK_TEST: this will print %d stars and then\n", NUM_DELAYS); printf(" exit with a 'stuck spinlock' message\n"); printf(" if S_LOCK() and TAS() are working.\n"); fflush(stdout); s_lock(&test_lock.lock, __FILE__, __LINE__, PG_FUNCNAME_MACRO); printf("S_LOCK_TEST: failed, lock not locked\n"); return 1; } #endif /* S_LOCK_TEST */ pg_query-4.2.3/ext/pg_query/src_backend_utils_mmgr_mcxt.c0000644000004100000410000007640014510636647023760 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - ErrorContext * - MemoryContextReset * - MemoryContextDeleteChildren * - MemoryContextDelete * - TopMemoryContext * - CurrentMemoryContext * - MemoryContextSetParent * - MemoryContextCallResetCallbacks * - MemoryContextResetOnly * - repalloc * - MemoryContextStats * - MemoryContextStatsDetail * - MemoryContextStatsInternal * - MemoryContextStatsPrint * - pfree * - pstrdup * - MemoryContextStrdup * - MemoryContextAlloc * - palloc * - MemoryContextAllocZeroAligned * - MemoryContextAllocZero * - palloc0 * - MemoryContextCreate * - MemoryContextInit * - MemoryContextAllowInCriticalSection * - CurrentMemoryContext * - MemoryContextDelete * - palloc0 * - MemoryContextAllocExtended *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * mcxt.c * POSTGRES memory context management code. * * This module handles context management operations that are independent * of the particular kind of context being operated on. It calls * context-type-specific operations via the function pointers in a * context's MemoryContextMethods struct. * * * Portions Copyright (c) 1996-2022, 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 "storage/proc.h" #include "storage/procarray.h" #include "storage/procsignal.h" #include "utils/fmgrprotos.h" #include "utils/memdebug.h" #include "utils/memutils.h" /***************************************************************************** * GLOBAL MEMORY * *****************************************************************************/ /* * CurrentMemoryContext * Default memory context for allocations. */ __thread MemoryContext CurrentMemoryContext = NULL; /* * Standard top-level contexts. For a description of the purpose of each * of these contexts, refer to src/backend/utils/mmgr/README */ __thread MemoryContext TopMemoryContext = NULL; __thread MemoryContext ErrorContext = NULL; /* This is a transient link to the active portal's memory context: */ static void MemoryContextCallResetCallbacks(MemoryContext context); static void MemoryContextStatsInternal(MemoryContext context, int level, bool print, int max_children, MemoryContextCounters *totals, 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) /***************************************************************************** * EXPORTED ROUTINES * *****************************************************************************/ /* * MemoryContextInit * Start up the memory-context subsystem. * * This must be called before creating contexts or allocating memory in * contexts. TopMemoryContext and ErrorContext are initialized here; * other contexts must be created afterwards. * * In normal multi-backend operation, this is called once during * postmaster startup, and not at all by individual backend startup * (since the backends inherit an already-initialized context subsystem * by virtue of being forked off the postmaster). But in an EXEC_BACKEND * build, each process must do this for itself. * * In a standalone backend this must be called during backend startup. */ void MemoryContextInit(void) { AssertState(TopMemoryContext == NULL); /* * First, initialize TopMemoryContext, which is the parent of all others. */ TopMemoryContext = AllocSetContextCreate((MemoryContext) NULL, "TopMemoryContext", ALLOCSET_DEFAULT_SIZES); /* * Not having any other place to point CurrentMemoryContext, make it point * to TopMemoryContext. Caller should change this soon! */ CurrentMemoryContext = TopMemoryContext; /* * Initialize ErrorContext as an AllocSetContext with slow growth rate --- * we don't really expect much to be allocated in it. More to the point, * require it to contain at least 8K at all times. This is the only case * where retained memory in a context is *essential* --- we want to be * sure ErrorContext still has some memory even if we've run out * elsewhere! Also, allow allocations in ErrorContext within a critical * section. Otherwise a PANIC will cause an assertion failure in the error * reporting code, before printing out the real cause of the failure. * * This should be the last step in this function, as elog.c assumes memory * management works once ErrorContext is non-null. */ ErrorContext = AllocSetContextCreate(TopMemoryContext, "ErrorContext", 8 * 1024, 8 * 1024, 8 * 1024); MemoryContextAllowInCriticalSection(ErrorContext, true); } /* * MemoryContextReset * Release all space allocated within a context and delete all its * descendant contexts (but not the named context itself). */ void MemoryContextReset(MemoryContext context) { AssertArg(MemoryContextIsValid(context)); /* save a function call in common case where there are no children */ if (context->firstchild != NULL) MemoryContextDeleteChildren(context); /* save a function call if no pallocs since startup or last reset */ if (!context->isReset) MemoryContextResetOnly(context); } /* * MemoryContextResetOnly * Release all space allocated within a context. * Nothing is done to the context's descendant contexts. */ void MemoryContextResetOnly(MemoryContext context) { AssertArg(MemoryContextIsValid(context)); /* Nothing to do if no pallocs since startup or last reset */ if (!context->isReset) { MemoryContextCallResetCallbacks(context); /* * If context->ident points into the context's memory, it will become * a dangling pointer. We could prevent that by setting it to NULL * here, but that would break valid coding patterns that keep the * ident elsewhere, e.g. in a parent context. Another idea is to use * MemoryContextContains(), but we don't require ident strings to be * in separately-palloc'd chunks, so that risks false positives. So * for now we assume the programmer got it right. */ context->methods->reset(context); context->isReset = true; VALGRIND_DESTROY_MEMPOOL(context); VALGRIND_CREATE_MEMPOOL(context, 0, false); } } /* * MemoryContextResetChildren * Release all space allocated within a context's descendants, * but don't delete the contexts themselves. The named context * itself is not touched. */ /* * MemoryContextDelete * Delete a context and its descendants, and release all space * allocated therein. * * The type-specific delete routine removes all storage for the context, * but we have to recurse to handle the children. * We must also delink the context from its parent, if it has one. */ void MemoryContextDelete(MemoryContext context) { AssertArg(MemoryContextIsValid(context)); /* We had better not be deleting TopMemoryContext ... */ Assert(context != TopMemoryContext); /* And not CurrentMemoryContext, either */ Assert(context != CurrentMemoryContext); /* save a function call in common case where there are no children */ if (context->firstchild != NULL) MemoryContextDeleteChildren(context); /* * It's not entirely clear whether 'tis better to do this before or after * delinking the context; but an error in a callback will likely result in * leaking the whole context (if it's not a root context) if we do it * after, so let's do it before. */ MemoryContextCallResetCallbacks(context); /* * We delink the context from its parent before deleting it, so that if * there's an error we won't have deleted/busted contexts still attached * to the context tree. Better a leak than a crash. */ MemoryContextSetParent(context, NULL); /* * Also reset the context's ident pointer, in case it points into the * context. This would only matter if someone tries to get stats on the * (already unlinked) context, which is unlikely, but let's be safe. */ context->ident = NULL; context->methods->delete_context(context); VALGRIND_DESTROY_MEMPOOL(context); } /* * MemoryContextDeleteChildren * Delete all the descendants of the named context and release all * space allocated therein. The named context itself is not touched. */ void MemoryContextDeleteChildren(MemoryContext context) { AssertArg(MemoryContextIsValid(context)); /* * MemoryContextDelete will delink the child from me, so just iterate as * long as there is a child. */ while (context->firstchild != NULL) MemoryContextDelete(context->firstchild); } /* * MemoryContextRegisterResetCallback * Register a function to be called before next context reset/delete. * Such callbacks will be called in reverse order of registration. * * The caller is responsible for allocating a MemoryContextCallback struct * to hold the info about this callback request, and for filling in the * "func" and "arg" fields in the struct to show what function to call with * what argument. Typically the callback struct should be allocated within * the specified context, since that means it will automatically be freed * when no longer needed. * * There is no API for deregistering a callback once registered. If you * want it to not do anything anymore, adjust the state pointed to by its * "arg" to indicate that. */ /* * MemoryContextCallResetCallbacks * Internal function to call all registered callbacks for context. */ static void MemoryContextCallResetCallbacks(MemoryContext context) { MemoryContextCallback *cb; /* * We pop each callback from the list before calling. That way, if an * error occurs inside the callback, we won't try to call it a second time * in the likely event that we reset or delete the context later. */ while ((cb = context->reset_cbs) != NULL) { context->reset_cbs = cb->next; cb->func(cb->arg); } } /* * MemoryContextSetIdentifier * Set the identifier string for a memory context. * * An identifier can be provided to help distinguish among different contexts * of the same kind in memory context stats dumps. The identifier string * must live at least as long as the context it is for; typically it is * allocated inside that context, so that it automatically goes away on * context deletion. Pass id = NULL to forget any old identifier. */ /* * MemoryContextSetParent * Change a context to belong to a new parent (or no parent). * * We provide this as an API function because it is sometimes useful to * change a context's lifespan after creation. For example, a context * might be created underneath a transient context, filled with data, * and then reparented underneath CacheMemoryContext to make it long-lived. * In this way no special effort is needed to get rid of the context in case * a failure occurs before its contents are completely set up. * * Callers often assume that this function cannot fail, so don't put any * elog(ERROR) calls in it. * * A possible caller error is to reparent a context under itself, creating * a loop in the context graph. We assert here that context != new_parent, * but checking for multi-level loops seems more trouble than it's worth. */ void MemoryContextSetParent(MemoryContext context, MemoryContext new_parent) { AssertArg(MemoryContextIsValid(context)); AssertArg(context != new_parent); /* Fast path if it's got correct parent already */ if (new_parent == context->parent) return; /* Delink from existing parent, if any */ if (context->parent) { MemoryContext parent = context->parent; if (context->prevchild != NULL) context->prevchild->nextchild = context->nextchild; else { Assert(parent->firstchild == context); parent->firstchild = context->nextchild; } if (context->nextchild != NULL) context->nextchild->prevchild = context->prevchild; } /* And relink */ if (new_parent) { AssertArg(MemoryContextIsValid(new_parent)); context->parent = new_parent; context->prevchild = NULL; context->nextchild = new_parent->firstchild; if (new_parent->firstchild != NULL) new_parent->firstchild->prevchild = context; new_parent->firstchild = context; } else { context->parent = NULL; context->prevchild = NULL; context->nextchild = NULL; } } /* * MemoryContextAllowInCriticalSection * Allow/disallow allocations in this memory context within a critical * section. * * Normally, memory allocations are not allowed within a critical section, * because a failure would lead to PANIC. There are a few exceptions to * that, like allocations related to debugging code that is not supposed to * be enabled in production. This function can be used to exempt specific * memory contexts from the assertion in palloc(). */ void MemoryContextAllowInCriticalSection(MemoryContext context, bool allow) { AssertArg(MemoryContextIsValid(context)); context->allowInCritSection = allow; } /* * GetMemoryChunkSpace * Given a currently-allocated chunk, determine the total space * it occupies (including all memory-allocation overhead). * * This is useful for measuring the total space occupied by a set of * allocated chunks. */ /* * MemoryContextGetParent * Get the parent context (if any) of the specified context */ /* * MemoryContextIsEmpty * Is a memory context empty of any allocated space? */ /* * Find the memory allocated to blocks for this memory context. If recurse is * true, also include children. */ /* * MemoryContextStats * Print statistics about the named context and all its descendants. * * This is just a debugging utility, so it's not very fancy. However, we do * make some effort to summarize when the output would otherwise be very long. * The statistics are sent to stderr. */ void MemoryContextStats(MemoryContext context) { /* A hard-wired limit on the number of children is usually good enough */ MemoryContextStatsDetail(context, 100, 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_children, bool print_to_stderr) { MemoryContextCounters grand_totals; memset(&grand_totals, 0, sizeof(grand_totals)); MemoryContextStatsInternal(context, 0, true, 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. Otherwise which * may require the buffer to be enlarged very much and lead to OOM * error since there can 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 this context if print is true, but in any case accumulate counts into * *totals (if given). */ static void MemoryContextStatsInternal(MemoryContext context, int level, bool print, int max_children, MemoryContextCounters *totals, bool print_to_stderr) { MemoryContextCounters local_totals; MemoryContext child; int ichild; AssertArg(MemoryContextIsValid(context)); /* Examine the context itself */ context->methods->stats(context, print ? MemoryContextStatsPrint : NULL, (void *) &level, totals, print_to_stderr); /* * Examine children. If there are more than max_children of them, we do * not print the rest explicitly, but just summarize them. */ memset(&local_totals, 0, sizeof(local_totals)); for (child = context->firstchild, ichild = 0; child != NULL; child = child->nextchild, ichild++) { if (ichild < max_children) MemoryContextStatsInternal(child, level + 1, print, max_children, totals, print_to_stderr); else MemoryContextStatsInternal(child, level + 1, false, max_children, &local_totals, print_to_stderr); } /* Deal with excess children */ if (ichild > max_children) { if (print) { if (print_to_stderr) { int i; for (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 - max_children, 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 - max_children, local_totals.totalspace, local_totals.nblocks, local_totals.freespace, local_totals.freechunks, local_totals.totalspace - local_totals.freespace))); } if (totals) { totals->nblocks += local_totals.nblocks; totals->freechunks += local_totals.freechunks; totals->totalspace += local_totals.totalspace; totals->freespace += local_totals.freespace; } } } /* * MemoryContextStatsPrint * Print callback used by MemoryContextStatsInternal * * For now, the passthru pointer just points to "int level"; later we might * make that more complicated. */ static void MemoryContextStatsPrint(MemoryContext context, void *passthru, const char *stats_string, 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. * * This is just a debugging utility, so it's not fancy. */ #ifdef MEMORY_CONTEXT_CHECKING #endif /* * MemoryContextContains * Detect whether an allocated chunk of memory belongs to a given * context or not. * * Caution: this test is reliable as long as 'pointer' does point to * a chunk of memory allocated from *some* context. If 'pointer' points * at memory obtained in some other way, there is a small chance of a * false-positive result, since the bits right before it might look like * a valid chunk header by chance. */ /* * MemoryContextCreate * Context-type-independent part of context creation. * * This is only intended to be called by context-type-specific * context creation routines, not by the unwashed masses. * * The memory context creation procedure goes like this: * 1. Context-type-specific routine makes some initial space allocation, * including enough space for the context header. If it fails, * it can ereport() with no damage done. * 2. Context-type-specific routine sets up all type-specific fields of * the header (those beyond MemoryContextData proper), as well as any * other management fields it needs to have a fully valid context. * Usually, failure in this step is impossible, but if it's possible * the initial space allocation should be freed before ereport'ing. * 3. Context-type-specific routine calls MemoryContextCreate() to fill in * the generic header fields and link the context into the context tree. * 4. We return to the context-type-specific routine, which finishes * up type-specific initialization. This routine can now do things * that might fail (like allocate more memory), so long as it's * sure the node is left in a state that delete will handle. * * node: the as-yet-uninitialized common part of the context header node. * tag: NodeTag code identifying the memory context type. * methods: context-type-specific methods (usually statically allocated). * parent: parent context, or NULL if this will be a top-level context. * name: name of context (must be statically allocated). * * Context routines generally assume that MemoryContextCreate can't fail, * so this can contain Assert but not elog/ereport. */ void MemoryContextCreate(MemoryContext node, NodeTag tag, const MemoryContextMethods *methods, MemoryContext parent, const char *name) { /* Creating new memory contexts is not allowed in a critical section */ Assert(CritSectionCount == 0); /* Initialize all standard fields of memory context header */ node->type = tag; node->isReset = true; node->methods = methods; node->parent = parent; node->firstchild = NULL; node->mem_allocated = 0; node->prevchild = NULL; node->name = name; node->ident = NULL; node->reset_cbs = NULL; /* OK to link node into context tree */ if (parent) { node->nextchild = parent->firstchild; if (parent->firstchild != NULL) parent->firstchild->prevchild = node; parent->firstchild = node; /* inherit allowInCritSection flag from parent */ node->allowInCritSection = parent->allowInCritSection; } else { node->nextchild = NULL; node->allowInCritSection = false; } VALGRIND_CREATE_MEMPOOL(node, 0, false); } /* * MemoryContextAlloc * Allocate space within the specified context. * * This could be turned into a macro, but we'd have to import * nodes/memnodes.h into postgres.h which seems a bad idea. */ void * MemoryContextAlloc(MemoryContext context, Size size) { void *ret; AssertArg(MemoryContextIsValid(context)); AssertNotInCriticalSection(context); if (!AllocSizeIsValid(size)) elog(ERROR, "invalid memory alloc request size %zu", size); context->isReset = false; ret = context->methods->alloc(context, size); if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); /* * Here, and elsewhere in this module, we show the target context's * "name" but not its "ident" (if any) in user-visible error messages. * The "ident" string might contain security-sensitive data, such as * values in SQL commands. */ ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), errdetail("Failed on request of size %zu in memory context \"%s\".", size, context->name))); } VALGRIND_MEMPOOL_ALLOC(context, ret, size); return ret; } /* * MemoryContextAllocZero * Like MemoryContextAlloc, but clears allocated memory * * We could just call MemoryContextAlloc then clear the memory, but this * is a very common combination, so we provide the combined operation. */ void * MemoryContextAllocZero(MemoryContext context, Size size) { void *ret; AssertArg(MemoryContextIsValid(context)); AssertNotInCriticalSection(context); if (!AllocSizeIsValid(size)) elog(ERROR, "invalid memory alloc request size %zu", size); context->isReset = false; ret = context->methods->alloc(context, size); if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), errdetail("Failed on request of size %zu in memory context \"%s\".", size, context->name))); } VALGRIND_MEMPOOL_ALLOC(context, ret, size); MemSetAligned(ret, 0, size); return ret; } /* * MemoryContextAllocZeroAligned * MemoryContextAllocZero where length is suitable for MemSetLoop * * This might seem overly specialized, but it's not because newNode() * is so often called with compile-time-constant sizes. */ void * MemoryContextAllocZeroAligned(MemoryContext context, Size size) { void *ret; AssertArg(MemoryContextIsValid(context)); AssertNotInCriticalSection(context); if (!AllocSizeIsValid(size)) elog(ERROR, "invalid memory alloc request size %zu", size); context->isReset = false; ret = context->methods->alloc(context, size); if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), errdetail("Failed on request of size %zu in memory context \"%s\".", size, context->name))); } VALGRIND_MEMPOOL_ALLOC(context, ret, size); MemSetLoop(ret, 0, size); return ret; } /* * MemoryContextAllocExtended * Allocate space within the specified context using the given flags. */ void * MemoryContextAllocExtended(MemoryContext context, Size size, int flags) { void *ret; AssertArg(MemoryContextIsValid(context)); AssertNotInCriticalSection(context); if (((flags & MCXT_ALLOC_HUGE) != 0 && !AllocHugeSizeIsValid(size)) || ((flags & MCXT_ALLOC_HUGE) == 0 && !AllocSizeIsValid(size))) elog(ERROR, "invalid memory alloc request size %zu", size); context->isReset = false; ret = context->methods->alloc(context, size); if (unlikely(ret == NULL)) { if ((flags & MCXT_ALLOC_NO_OOM) == 0) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), errdetail("Failed on request of size %zu in memory context \"%s\".", size, context->name))); } return NULL; } VALGRIND_MEMPOOL_ALLOC(context, ret, size); if ((flags & MCXT_ALLOC_ZERO) != 0) MemSetAligned(ret, 0, size); return ret; } /* * 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; AssertArg(MemoryContextIsValid(context)); AssertNotInCriticalSection(context); if (!AllocSizeIsValid(size)) elog(ERROR, "invalid memory alloc request size %zu", size); context->isReset = false; ret = context->methods->alloc(context, size); if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), errdetail("Failed on request of size %zu in memory context \"%s\".", size, context->name))); } VALGRIND_MEMPOOL_ALLOC(context, ret, size); return ret; } void * palloc0(Size size) { /* duplicates MemoryContextAllocZero to avoid increased overhead */ void *ret; MemoryContext context = CurrentMemoryContext; AssertArg(MemoryContextIsValid(context)); AssertNotInCriticalSection(context); if (!AllocSizeIsValid(size)) elog(ERROR, "invalid memory alloc request size %zu", size); context->isReset = false; ret = context->methods->alloc(context, size); if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), errdetail("Failed on request of size %zu in memory context \"%s\".", size, context->name))); } VALGRIND_MEMPOOL_ALLOC(context, ret, size); MemSetAligned(ret, 0, size); return ret; } /* * pfree * Release an allocated chunk. */ void pfree(void *pointer) { MemoryContext context = GetMemoryChunkContext(pointer); context->methods->free_p(context, pointer); VALGRIND_MEMPOOL_FREE(context, pointer); } /* * repalloc * Adjust the size of a previously allocated chunk. */ void * repalloc(void *pointer, Size size) { MemoryContext context = GetMemoryChunkContext(pointer); void *ret; if (!AllocSizeIsValid(size)) elog(ERROR, "invalid memory alloc request size %zu", size); AssertNotInCriticalSection(context); /* isReset must be false already */ Assert(!context->isReset); ret = context->methods->realloc(context, pointer, size); if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), errdetail("Failed on request of size %zu in memory context \"%s\".", size, context->name))); } VALGRIND_MEMPOOL_CHANGE(context, pointer, ret, size); return ret; } /* * MemoryContextAllocHuge * Allocate (possibly-expansive) space within the specified context. * * See considerations in comment at MaxAllocHugeSize. */ /* * repalloc_huge * Adjust the size of a previously allocated chunk, permitting a large * value. The previous allocation need not have been "huge". */ /* * MemoryContextStrdup * Like strdup(), but allocate from the specified context */ char * MemoryContextStrdup(MemoryContext context, const char *string) { char *nstr; Size len = strlen(string) + 1; nstr = (char *) MemoryContextAlloc(context, len); memcpy(nstr, string, len); return nstr; } char * pstrdup(const char *in) { return MemoryContextStrdup(CurrentMemoryContext, in); } /* * pnstrdup * Like pstrdup(), but append null byte to a * not-necessarily-null-terminated input string. */ /* * Make copy of string with all trailing newline characters removed. */ pg_query-4.2.3/ext/pg_query/src_backend_utils_error_elog.c0000644000004100000410000014347614510636647024132 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - errstart_cold * - errstart * - PG_exception_stack * - write_stderr * - err_gettext * - 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 * - errmsg_internal * - errcode * - errmsg * - errdetail * - errhidestmt * - errhidecontext * - errfinish * - pg_re_throw * - EmitErrorReport * - emit_log_hook * - send_message_to_server_log * - send_message_to_frontend * - matches_backtrace_functions * - set_backtrace * - geterrcode * - errhint * - errposition * - internalerrposition * - internalerrquery * - geterrposition * - getinternalerrposition * - set_errcontext_domain * - errcontext_msg * - CopyErrorData * - FlushErrorState *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * elog.c * error logging and reporting * * Because of the extremely high rate at which log messages can be generated, * we need to be mindful of the performance cost of obtaining any information * that may be logged. Also, it's important to keep in mind that this code may * get called from within an aborted transaction, in which case operations * such as syscache lookups are unsafe. * * Some notes about recursion and errors during error processing: * * We need to be robust about recursive-error scenarios --- for example, * if we run out of memory, it's important to be able to report that fact. * There are a number of considerations that go into this. * * First, distinguish between re-entrant use and actual recursion. It * is possible for an error or warning message to be emitted while the * parameters for an error message are being computed. In this case * errstart has been called for the outer message, and some field values * may have already been saved, but we are not actually recursing. We handle * this by providing a (small) stack of ErrorData records. The inner message * can be computed and sent without disturbing the state of the outer message. * (If the inner message is actually an error, this isn't very interesting * because control won't come back to the outer message generator ... but * if the inner message is only debug or log data, this is critical.) * * Second, actual recursion will occur if an error is reported by one of * the elog.c routines or something they call. By far the most probable * scenario of this sort is "out of memory"; and it's also the nastiest * to handle because we'd likely also run out of memory while trying to * report this error! Our escape hatch for this case is to reset the * ErrorContext to empty before trying to process the inner error. Since * ErrorContext is guaranteed to have at least 8K of space in it (see mcxt.c), * we should be able to process an "out of memory" message successfully. * Since we lose the prior error state due to the reset, we won't be able * to return to processing the original error, but we wouldn't have anyway. * (NOTE: the escape hatch is not used for recursive situations where the * inner message is of less than ERROR severity; in that case we just * try to process it and return normally. Usually this will work, but if * it ends up in infinite recursion, we will PANIC due to error stack * overflow.) * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/error/elog.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include #include #include #ifdef HAVE_SYSLOG #include #endif #ifdef HAVE_EXECINFO_H #include #endif #include "access/transam.h" #include "access/xact.h" #include "libpq/libpq.h" #include "libpq/pqformat.h" #include "mb/pg_wchar.h" #include "miscadmin.h" #include "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.h" #include "utils/memutils.h" #include "utils/ps_status.h" /* In this module, access gettext() via err_gettext() */ #undef _ #define _(x) err_gettext(x) /* Global variables */ __thread ErrorContextCallback *error_context_stack = NULL; __thread sigjmp_buf *PG_exception_stack = NULL; extern bool redirection_done; /* * Hook for intercepting messages before they are sent to the server log. * Note that the hook will not get called for messages that are suppressed * by log_min_messages. Also note that logging hooks implemented in preload * libraries will miss any log messages that are generated before the * library is loaded. */ __thread emit_log_hook_type emit_log_hook = NULL; /* GUC parameters */ /* format for extra log line info */ #ifdef HAVE_SYSLOG /* * Max string length to send to syslog(). Note that this doesn't count the * sequence-number prefix we add, and of course it doesn't count the prefix * added by syslog itself. Solaris and sysklogd truncate the final message * at 1024 bytes, so this value leaves 124 bytes for those prefixes. (Most * other syslog implementations seem to have limits of 2KB or so.) */ #ifndef PG_SYSLOG_LIMIT #define PG_SYSLOG_LIMIT 900 #endif static void write_syslog(int level, const char *line); #endif #ifdef WIN32 extern char *event_source; static void write_eventlog(int level, const char *line, int len); #endif /* We provide a small stack of ErrorData records for re-entrant cases */ #define ERRORDATA_STACK_SIZE 5 static __thread ErrorData errordata[ERRORDATA_STACK_SIZE]; static __thread int errordata_stack_depth = -1; /* index of topmost active frame */ static __thread int recursion_depth = 0; /* to detect actual recursion */ /* * Saved timeval and buffers for formatted timestamps that might be used by * both log_line_prefix and csv logs. */ #define FORMATTED_TS_LEN 128 /* Macro for checking errordata_stack_depth is reasonable */ #define CHECK_STACK_DEPTH() \ do { \ if (errordata_stack_depth < 0) \ { \ errordata_stack_depth = -1; \ ereport(ERROR, (errmsg_internal("errstart was not called"))); \ } \ } while (0) static const char *err_gettext(const char *str) pg_attribute_format_arg(1); static pg_noinline void set_backtrace(ErrorData *edata, int num_skip); static void set_errdata_field(MemoryContextData *cxt, char **ptr, const char *str); static void write_console(const char *line, int len); static const char *process_log_prefix_padding(const char *p, int *padding); 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) { if (whereToSendOutput == DestRemote && elevel != LOG_SERVER_ONLY) { /* * client_min_messages is honored only after we complete the * authentication handshake. This is required both for security * reasons and because many clients can't handle NOTICE messages * during authentication. */ if (ClientAuthInProgress) return (elevel >= ERROR); else return (elevel >= client_min_messages || elevel == INFO); } 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. */ static inline const char * err_gettext(const char *str) { #ifdef ENABLE_NLS if (in_error_recursion_trouble()) return str; else return gettext(str); #else return str; #endif } /* * errstart_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; } } if (++errordata_stack_depth >= ERRORDATA_STACK_SIZE) { /* * Wups, stack not big enough. We treat this as a PANIC condition * because it suggests an infinite loop of errors during error * recovery. */ errordata_stack_depth = -1; /* make room on stack */ ereport(PANIC, (errmsg_internal("ERRORDATA_STACK_SIZE exceeded"))); } /* Initialize data for this error frame */ edata = &errordata[errordata_stack_depth]; MemSet(edata, 0, sizeof(ErrorData)); edata->elevel = elevel; edata->output_to_server = output_to_server; edata->output_to_client = output_to_client; /* the default text domain is the backend's */ edata->domain = domain ? domain : PG_TEXTDOMAIN("postgres"); /* initialize context_domain the same way (see set_errcontext_domain()) */ edata->context_domain = edata->domain; /* Select default errcode based on elevel */ if (elevel >= ERROR) edata->sqlerrcode = ERRCODE_INTERNAL_ERROR; else if (elevel >= WARNING) edata->sqlerrcode = ERRCODE_WARNING; else edata->sqlerrcode = ERRCODE_SUCCESSFUL_COMPLETION; /* errno is saved here so that error parameter eval can't change it */ edata->saved_errno = errno; /* * Any allocations for this error state level should go into ErrorContext */ edata->assoc_context = ErrorContext; recursion_depth--; return true; } /* * Checks whether the given funcname matches backtrace_functions; see * check_backtrace_functions. */ static bool matches_backtrace_functions(const char *funcname) { char *p; if (!backtrace_symbol_list || funcname == NULL || funcname[0] == '\0') return false; p = backtrace_symbol_list; for (;;) { if (*p == '\0') /* end of backtrace_symbol_list */ break; if (strcmp(funcname, p) == 0) return true; p += strlen(p) + 1; } return false; } /* * errfinish --- end an error-reporting cycle * * Produce the appropriate error report(s) and pop the error stack. * * If elevel, as passed to errstart(), is ERROR or worse, control does not * return to the caller. See elog.h for the error level definitions. */ void errfinish(const char *filename, int lineno, const char *funcname) { ErrorData *edata = &errordata[errordata_stack_depth]; int elevel; MemoryContext oldcontext; ErrorContextCallback *econtext; recursion_depth++; CHECK_STACK_DEPTH(); /* Save the last few bits of error state into the stack entry */ if (filename) { const char *slash; /* keep only base name, useful especially for vpath builds */ slash = strrchr(filename, '/'); if (slash) filename = slash + 1; /* 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; elevel = edata->elevel; /* * Do processing in ErrorContext, which we hope has enough reserved space * to report an error. */ oldcontext = MemoryContextSwitchTo(ErrorContext); if (!edata->backtrace && edata->funcname && backtrace_functions && matches_backtrace_functions(edata->funcname)) set_backtrace(edata, 2); /* * Call any context callback functions. Errors occurring in callback * functions will be treated as recursive errors --- this ensures we will * avoid infinite recursion (see errstart). */ for (econtext = error_context_stack; econtext != NULL; econtext = econtext->previous) econtext->callback(econtext->arg); /* * If ERROR (not more nor less) we pass it off to the current handler. * Printing it and popping the stack is the responsibility of the handler. */ if (elevel == ERROR) { /* * We do some minimal cleanup before longjmp'ing so that handlers can * execute in a reasonably sane state. * * Reset InterruptHoldoffCount in case we ereport'd from inside an * interrupt holdoff section. (We assume here that no handler will * itself be inside a holdoff section. If necessary, such a handler * could save and restore InterruptHoldoffCount for itself, but this * should make life easier for most.) */ InterruptHoldoffCount = 0; QueryCancelHoldoffCount = 0; CritSectionCount = 0; /* should be unnecessary, but... */ /* * Note that we leave CurrentMemoryContext set to ErrorContext. The * handler should reset it to something else soon. */ recursion_depth--; PG_RE_THROW(); } /* Emit the message to the right places */ EmitErrorReport(); /* Now free up subsidiary data attached to stack entry, and release it */ if (edata->message) pfree(edata->message); if (edata->detail) pfree(edata->detail); if (edata->detail_log) pfree(edata->detail_log); if (edata->hint) pfree(edata->hint); if (edata->context) pfree(edata->context); if (edata->backtrace) pfree(edata->backtrace); if (edata->schema_name) pfree(edata->schema_name); if (edata->table_name) pfree(edata->table_name); if (edata->column_name) pfree(edata->column_name); if (edata->datatype_name) pfree(edata->datatype_name); if (edata->constraint_name) pfree(edata->constraint_name); if (edata->internalquery) pfree(edata->internalquery); errordata_stack_depth--; /* Exit error-handling context */ MemoryContextSwitchTo(oldcontext); recursion_depth--; /* * Perform error recovery action as specified by elevel. */ if (elevel == FATAL) { /* * For a FATAL error, we let proc_exit clean up and exit. * * If we just reported a startup failure, the client will disconnect * on receiving it, so don't send any more to the client. */ if (PG_exception_stack == NULL && whereToSendOutput == DestRemote) whereToSendOutput = DestNone; /* * fflush here is just to improve the odds that we get to see the * error message, in case things are so hosed that proc_exit crashes. * Any other code you might be tempted to add here should probably be * in an on_proc_exit or on_shmem_exit callback instead. */ fflush(stdout); fflush(stderr); /* * 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(stdout); fflush(stderr); abort(); } /* * Check for cancel/die interrupt first --- this is so that the user can * stop a query emitting tons of notice or warning messages, even if it's * in a loop that otherwise fails to check for interrupts. */ CHECK_FOR_INTERRUPTS(); } /* * errcode --- add SQLSTATE error code to the current error * * The code is expected to be represented as per MAKE_SQLSTATE(). */ int errcode(int sqlerrcode) { ErrorData *edata = &errordata[errordata_stack_depth]; /* we don't bother incrementing recursion_depth */ CHECK_STACK_DEPTH(); edata->sqlerrcode = sqlerrcode; return 0; /* return value does not matter */ } /* * errcode_for_file_access --- add SQLSTATE error code to the current error * * The SQLSTATE code is chosen based on the saved errno value. We assume * that the failing operation was some type of disk file access. * * NOTE: the primary error message string should generally include %m * when this is used. */ #ifdef EROFS #endif #if defined(ENOTEMPTY) && (ENOTEMPTY != EEXIST) /* same code on AIX */ #endif /* * errcode_for_socket_access --- add SQLSTATE error code to the current error * * The SQLSTATE code is chosen based on the saved errno value. We assume * that the failing operation was some type of socket access. * * NOTE: the primary error message string should generally include %m * when this is used. */ /* * 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; } /* * geterrposition --- return the currently set error position (0 if none) * * This is only intended for use in error callback subroutines, since there * is no other place outside elog.c where the concept is meaningful. */ int geterrposition(void) { ErrorData *edata = &errordata[errordata_stack_depth]; /* we don't bother incrementing recursion_depth */ CHECK_STACK_DEPTH(); return edata->cursorpos; } /* * getinternalerrposition --- same for internal error position * * This is only intended for use in error callback subroutines, since there * is no other place outside elog.c where the concept is meaningful. */ int getinternalerrposition(void) { ErrorData *edata = &errordata[errordata_stack_depth]; /* we don't bother incrementing recursion_depth */ CHECK_STACK_DEPTH(); return edata->internalpos; } /* * Functions to allow construction of error message strings separately from * the ereport() call itself. * * The expected calling convention is * * pre_format_elog_string(errno, domain), var = format_elog_string(format,...) * * which can be hidden behind a macro such as GUC_check_errdetail(). We * assume that any functions called in the arguments of format_elog_string() * cannot result in re-entrant use of these functions --- otherwise the wrong * text domain might be used, or the wrong errno substituted for %m. This is * okay for the current usage with GUC check hooks, but might need further * effort someday. * * The result of format_elog_string() is stored in ErrorContext, and will * therefore survive until FlushErrorState() is called. */ /* * Actual output of the top-of-stack error message * * In the ereport(ERROR) case this is called from PostgresMain (or not at all, * if the error is caught by somebody). For all other severity levels this * is called by errfinish. */ void EmitErrorReport(void) { ErrorData *edata = &errordata[errordata_stack_depth]; MemoryContext oldcontext; recursion_depth++; CHECK_STACK_DEPTH(); oldcontext = MemoryContextSwitchTo(edata->assoc_context); /* * Call hook before sending message to log. The hook function is allowed * to turn off edata->output_to_server, so we must recheck that afterward. * Making any other change in the content of edata is not considered * supported. * * Note: the reason why the hook can only turn off output_to_server, and * not turn it on, is that it'd be unreliable: we will never get here at * all if errstart() deems the message uninteresting. A hook that could * make decisions in that direction would have to hook into errstart(), * where it would have much less information available. emit_log_hook is * intended for custom log filtering and custom log message transmission * mechanisms. * * The log hook has access to both the translated and original English * error message text, which is passed through to allow it to be used as a * message identifier. Note that the original text is not available for * detail, detail_log, hint and context text elements. */ if (edata->output_to_server && emit_log_hook) (*emit_log_hook) (edata); /* Send to server log, if enabled */ if (edata->output_to_server) send_message_to_server_log(edata); /* Send to client, if enabled */ if (edata->output_to_client) send_message_to_frontend(edata); MemoryContextSwitchTo(oldcontext); recursion_depth--; } /* * CopyErrorData --- obtain a copy of the topmost error stack entry * * This is only for use in error handler code. The data is copied into the * current memory context, so callers should always switch away from * ErrorContext first; otherwise it will be lost when FlushErrorState is done. */ ErrorData * CopyErrorData(void) { ErrorData *edata = &errordata[errordata_stack_depth]; ErrorData *newedata; /* * we don't increment recursion_depth because out-of-memory here does not * indicate a problem within the error subsystem. */ CHECK_STACK_DEPTH(); Assert(CurrentMemoryContext != ErrorContext); /* Copy the struct itself */ newedata = (ErrorData *) palloc(sizeof(ErrorData)); memcpy(newedata, edata, sizeof(ErrorData)); /* Make copies of separately-allocated fields */ if (newedata->message) newedata->message = pstrdup(newedata->message); if (newedata->detail) newedata->detail = pstrdup(newedata->detail); if (newedata->detail_log) newedata->detail_log = pstrdup(newedata->detail_log); if (newedata->hint) newedata->hint = pstrdup(newedata->hint); if (newedata->context) newedata->context = pstrdup(newedata->context); if (newedata->backtrace) newedata->backtrace = pstrdup(newedata->backtrace); if (newedata->schema_name) newedata->schema_name = pstrdup(newedata->schema_name); if (newedata->table_name) newedata->table_name = pstrdup(newedata->table_name); if (newedata->column_name) newedata->column_name = pstrdup(newedata->column_name); if (newedata->datatype_name) newedata->datatype_name = pstrdup(newedata->datatype_name); if (newedata->constraint_name) newedata->constraint_name = pstrdup(newedata->constraint_name); if (newedata->internalquery) newedata->internalquery = pstrdup(newedata->internalquery); /* Use the calling context for string allocation */ newedata->assoc_context = CurrentMemoryContext; return newedata; } /* * FreeErrorData --- free the structure returned by CopyErrorData. * * Error handlers should use this in preference to assuming they know all * the separately-allocated fields. */ /* * FlushErrorState --- flush the error state after error recovery * * This should be called by an error handler after it's done processing * the error; or as soon as it's done CopyErrorData, if it intends to * do stuff that is likely to provoke another error. You are not "out" of * the error subsystem until you have done this. */ void FlushErrorState(void) { /* * Reset stack to empty. The only case where it would be more than one * deep is if we serviced an error that interrupted construction of * another message. We assume control escaped out of that message * construction and won't ever go back. */ errordata_stack_depth = -1; recursion_depth = 0; /* Delete all data in ErrorContext */ MemoryContextResetAndDeleteChildren(ErrorContext); } /* * ThrowErrorData --- report an error described by an ErrorData structure * * This is somewhat like ReThrowError, but it allows elevels besides ERROR, * and the boolean flags such as output_to_server are computed via the * default rules rather than being copied from the given ErrorData. * This is primarily used to re-report errors originally reported by * background worker processes and then propagated (with or without * modification) to the backend responsible for them. */ /* * ReThrowError --- re-throw a previously copied error * * A handler can do CopyErrorData/FlushErrorState to get out of the error * subsystem, then do some processing, and finally ReThrowError to re-throw * the original error. This is slower than just PG_RE_THROW() but should * be used if the "some processing" is likely to incur another error. */ /* * pg_re_throw --- out-of-line implementation of PG_RE_THROW() macro */ void pg_re_throw(void) { /* If possible, throw the error to the next outer setjmp handler */ if (PG_exception_stack != NULL) siglongjmp(*PG_exception_stack, 1); else { /* * If we get here, elog(ERROR) was thrown inside a PG_TRY block, which * we have now exited only to discover that there is no outer setjmp * handler to pass the error to. Had the error been thrown outside * the block to begin with, we'd have promoted the error to FATAL, so * the correct behavior is to make it FATAL now; that is, emit it and * then call proc_exit. */ ErrorData *edata = &errordata[errordata_stack_depth]; Assert(errordata_stack_depth >= 0); Assert(edata->elevel == ERROR); edata->elevel = FATAL; /* * At least in principle, the increase in severity could have changed * where-to-output decisions, so recalculate. */ 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", "FailedAssertion", __FILE__, __LINE__); } /* * GetErrorContextStack - Return the context stack, for display/diags * * Returns a pstrdup'd string in the caller's context which includes the PG * error call stack. It is the caller's responsibility to ensure this string * is pfree'd (or its context cleaned up) when done. * * This information is collected by traversing the error contexts and calling * each context's callback function, each of which is expected to call * errcontext() to return a string which can be presented to the user. */ /* * Initialization of error output file */ #ifdef HAVE_SYSLOG /* * Set or update the parameters for syslog logging */ /* * Write a message line to syslog */ #endif /* HAVE_SYSLOG */ #ifdef WIN32 /* * Get the PostgreSQL equivalent of the Windows ANSI code page. "ANSI" system * interfaces (e.g. CreateFileA()) expect string arguments in this encoding. * Every process in a given system will find the same value at all times. */ static int GetACPEncoding(void) { static int encoding = -2; if (encoding == -2) encoding = pg_codepage_to_encoding(GetACP()); return encoding; } /* * Write a message line to the windows event log */ static void write_eventlog(int level, const char *line, int len) { WCHAR *utf16; int eventlevel = EVENTLOG_ERROR_TYPE; static HANDLE evtHandle = INVALID_HANDLE_VALUE; if (evtHandle == INVALID_HANDLE_VALUE) { evtHandle = RegisterEventSource(NULL, event_source ? event_source : DEFAULT_EVENT_SOURCE); if (evtHandle == NULL) { evtHandle = INVALID_HANDLE_VALUE; return; } } switch (level) { case DEBUG5: case DEBUG4: case DEBUG3: case DEBUG2: case DEBUG1: case LOG: case LOG_SERVER_ONLY: case INFO: case NOTICE: eventlevel = EVENTLOG_INFORMATION_TYPE; break; case WARNING: case WARNING_CLIENT_ONLY: eventlevel = EVENTLOG_WARNING_TYPE; break; case ERROR: case FATAL: case PANIC: default: eventlevel = EVENTLOG_ERROR_TYPE; break; } /* * If message character encoding matches the encoding expected by * ReportEventA(), call it to avoid the hazards of conversion. Otherwise, * try to convert the message to UTF16 and write it with ReportEventW(). * Fall back on ReportEventA() if conversion failed. * * Since we palloc the structure required for conversion, also fall * through to writing unconverted if we have not yet set up * CurrentMemoryContext. * * Also verify that we are not on our way into error recursion trouble due * to error messages thrown deep inside pgwin32_message_to_UTF16(). */ if (!in_error_recursion_trouble() && CurrentMemoryContext != NULL && GetMessageEncoding() != GetACPEncoding()) { utf16 = pgwin32_message_to_UTF16(line, len, NULL); if (utf16) { ReportEventW(evtHandle, eventlevel, 0, 0, /* All events are Id 0 */ NULL, 1, 0, (LPCWSTR *) &utf16, NULL); /* XXX Try ReportEventA() when ReportEventW() fails? */ pfree(utf16); return; } } ReportEventA(evtHandle, eventlevel, 0, 0, /* All events are Id 0 */ NULL, 1, 0, &line, NULL); } #endif /* WIN32 */ #ifdef WIN32 #else #endif /* * 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 tag info for log lines; 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; #ifdef WIN32 char errbuf[2048]; /* Arbitrary size? */ #endif fmt = _(fmt); va_start(ap, fmt); #ifndef WIN32 /* On Unix, we just fprintf to stderr */ vfprintf(stderr, fmt, ap); fflush(stderr); #else vsnprintf(errbuf, sizeof(errbuf), fmt, ap); /* * On Win32, we print to stderr if running on a console, or write to * eventlog if running as a service */ if (pgwin32_is_service()) /* Running as a service */ { write_eventlog(ERROR, errbuf, strlen(errbuf)); } else { /* Not running as service, write to stderr */ write_console(errbuf, strlen(errbuf)); fflush(stderr); } #endif va_end(ap); } /* * Adjust the level of a recovery-related message per trace_recovery_messages. * * The argument is the default log level of the message, eg, DEBUG2. (This * should only be applied to DEBUGn log messages, otherwise it's a no-op.) * If the level is >= trace_recovery_messages, we return LOG, causing the * message to be logged unconditionally (for most settings of * log_min_messages). Otherwise, we return the argument unchanged. * The message will then be shown based on the setting of log_min_messages. * * Intention is to keep this for at least the whole of the 9.0 production * release, so we can more easily diagnose production problems in the field. * It should go away eventually, though, because it's an ugly and * hard-to-explain kluge. */ pg_query-4.2.3/ext/pg_query/src_backend_tcop_postgres.c0000644000004100000410000005044414510636647023436 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - debug_query_string * - whereToSendOutput * - ProcessInterrupts * - check_stack_depth * - stack_is_too_deep * - stack_base_ptr * - max_stack_depth_bytes * - max_stack_depth *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * postgres.c * POSTGRES C Backend Interface * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/tcop/postgres.c * * NOTES * this is the "main" module of the postgres backend and * hence the main module of the "traffic cop". * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include #include #include #ifdef HAVE_SYS_SELECT_H #include #endif #ifdef HAVE_SYS_RESOURCE_H #include #include #endif #ifndef HAVE_GETRUSAGE #include "rusagestub.h" #endif #include "access/parallel.h" #include "access/printtup.h" #include "access/xact.h" #include "catalog/pg_type.h" #include "commands/async.h" #include "commands/prepare.h" #include "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/lsyscache.h" #include "utils/memutils.h" #include "utils/ps_status.h" #include "utils/snapmgr.h" #include "utils/timeout.h" #include "utils/timestamp.h" /* ---------------- * global variables * ---------------- */ __thread const char *debug_query_string; /* client-supplied query string */ /* Note: whereToSendOutput is initialized for the bootstrap/standalone case */ __thread CommandDest whereToSendOutput = DestDebug; /* flag for logging end of session */ /* GUC variable for maximum stack depth (measured in kilobytes) */ __thread int max_stack_depth = 100; /* wait N seconds to allow attach from a debugger */ /* Time between checks that the client is still connected. */ /* ---------------- * 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; /* * On IA64 we also have to remember the register stack base. */ #if defined(__ia64__) || defined(__ia64) static char *register_stack_base_ptr = NULL; #endif /* * Flag to keep track of whether we have started a transaction. * For extended query protocol this has to be remembered across messages. */ /* * Flag to indicate that we are doing the outer loop's read-from-client, * as opposed to any random read from client that might happen within * commands like COPY FROM STDIN. */ /* * Flags to implement skip-till-Sync-after-error behavior for messages of * the extended query protocol. */ /* * If an unnamed prepared statement exists, it's stored here. * We keep it separate from the hashtable kept by commands/prepare.c * in order to reduce overhead for short-lived queries. */ /* assorted command-line switches */ /* -D switch */ /* -E switch */ /* -j switch */ /* whether or not, and why, we were canceled by conflict with recovery */ /* reused buffer to pass to SendRowDescriptionMessage() */ /* ---------------------------------------------------------------- * decls for routines only used in this file * ---------------------------------------------------------------- */ static int InteractiveBackend(StringInfo inBuf); static int interactive_getc(void); static int SocketBackend(StringInfo inBuf); static int ReadCommand(StringInfo inBuf); static void forbidden_in_wal_sender(char firstchar); static bool check_log_statement(List *stmt_list); static int errdetail_execute(List *raw_parsetree_list); static int errdetail_params(ParamListInfo params); static int errdetail_abort(void); static int errdetail_recovery_conflict(void); static void 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); /* ---------------------------------------------------------------- * routines to obtain user input * ---------------------------------------------------------------- */ /* ---------------- * InteractiveBackend() is called for user interactive connections * * the string entered by the user is placed in its parameter inBuf, * and we act like a Q message was received. * * EOF is returned if end-of-file input is seen; time to shut down. * ---------------- */ /* * interactive_getc -- collect one character from stdin * * Even though we are not reading from a "client" process, we still want to * respond to signals, particularly SIGTERM/SIGQUIT. */ /* ---------------- * SocketBackend() Is called for frontend-backend connections * * Returns the message type code, and loads message body data into inBuf. * * EOF is returned if the connection is lost. * ---------------- */ /* ---------------- * ReadCommand reads a command from either the frontend or * standard input, places it in inBuf, and returns the * message type code (first byte of the message). * EOF is returned if end of file. * ---------------- */ /* * ProcessClientReadInterrupt() - Process interrupts specific to client reads * * This is called just before and after low-level reads. * 'blocked' is true if no data was available to read and we plan to retry, * false if about to read or done reading. * * Must preserve errno! */ /* * ProcessClientWriteInterrupt() - Process interrupts specific to client writes * * This is called just before and after low-level writes. * 'blocked' is true if no data could be written and we plan to retry, * false if about to write or done writing. * * Must preserve errno! */ /* * Do raw parsing (only). * * A list of parsetrees (RawStmt nodes) is returned, since there might be * multiple commands in the given string. * * NOTE: for interactive queries, it is important to keep this routine * separate from the analysis & rewrite stages. Analysis and rewriting * cannot be done in an aborted transaction, since they require access to * database tables. So, we rely on the raw parser to determine whether * we've seen a COMMIT or ABORT command; when we are in abort state, other * commands are not processed any further than the raw parse stage. */ #ifdef COPY_PARSE_PLAN_TREES #endif /* * Given a raw parsetree (gram.y output), and optionally information about * types of parameter symbols ($n), perform parse analysis and rule rewriting. * * A list of Query nodes is returned, since either the analyzer or the * rewriter might expand one query to several. * * NOTE: for reasons mentioned above, this must be separate from raw parsing. */ /* * Do parse analysis and rewriting. This is the same as * pg_analyze_and_rewrite_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 */ /* * RecoveryConflictInterrupt: out-of-line portion of recovery conflict * handling following receipt of SIGUSR1. Designed to be similar to die() * and StatementCancelHandler(). Called only by a normal user backend * that begins a transaction during recovery. */ /* * ProcessInterrupts: out-of-line portion of CHECK_FOR_INTERRUPTS() macro * * If an interrupt condition is pending, and it's safe to service it, * then clear the flag and accept the interrupt. Called only when * InterruptPending is true. * * 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) {} /* * IA64-specific code to fetch the AR.BSP register for stack depth checks. * * We currently support gcc, icc, and HP-UX's native compiler here. * * Note: while icc accepts gcc asm blocks on x86[_64], this is not true on * ia64 (at least not in icc versions before 12.x). So we have to carry a * separate implementation for it. */ #if defined(__ia64__) || defined(__ia64) #if defined(__hpux) && !defined(__GNUC__) && !defined(__INTEL_COMPILER) /* Assume it's HP-UX native compiler */ #include #define ia64_get_bsp() ((char *) (_Asm_mov_from_ar(_AREG_BSP, _NO_FENCE))) #elif defined(__INTEL_COMPILER) /* icc */ #include #define ia64_get_bsp() ((char *) __getReg(_IA64_REG_AR_BSP)) #else /* gcc */ static __inline__ char * ia64_get_bsp(void) { char *ret; /* the ;; is a "stop", seems to be required before fetching BSP */ __asm__ __volatile__( ";;\n" " mov %0=ar.bsp \n" : "=r"(ret)); return ret; } #endif #endif /* IA64 */ /* * set_stack_base: set up reference point for stack depth checking * * Returns the old reference point, if any. */ #ifndef HAVE__BUILTIN_FRAME_ADDRESS #endif #if defined(__ia64__) || defined(__ia64) #else #endif #ifdef HAVE__BUILTIN_FRAME_ADDRESS #else #endif #if defined(__ia64__) || defined(__ia64) #endif /* * restore_stack_base: restore reference point for stack depth checking * * This can be used after set_stack_base() to restore the old value. This * is currently only used in PL/Java. When PL/Java calls a backend function * from different thread, the thread's stack is at a different location than * the main thread's stack, so it sets the base pointer before the call, and * restores it afterwards. */ #if defined(__ia64__) || defined(__ia64) #else #endif /* * check_stack_depth/stack_is_too_deep: check for excessively deep recursion * * This should be called someplace in any recursive routine that might possibly * recurse deep enough to overflow the stack. Most Unixen treat stack * overflow as an unrecoverable SIGSEGV, so we want to error out ourselves * before hitting the hardware limit. * * check_stack_depth() just throws an error summarily. stack_is_too_deep() * can be used by code that wants to handle the error condition itself. */ void check_stack_depth(void) { if (stack_is_too_deep()) { ereport(ERROR, (errcode(ERRCODE_STATEMENT_TOO_COMPLEX), errmsg("stack depth limit exceeded"), errhint("Increase the configuration parameter \"max_stack_depth\" (currently %dkB), " "after ensuring the platform's stack depth limit is adequate.", max_stack_depth))); } } bool stack_is_too_deep(void) { char stack_top_loc; long stack_depth; /* * Compute distance from reference point to my local variables */ stack_depth = (long) (stack_base_ptr - &stack_top_loc); /* * Take abs value, since stacks grow up on some machines, down on others */ if (stack_depth < 0) stack_depth = -stack_depth; /* * Trouble? * * The test on stack_base_ptr prevents us from erroring out if called * during process setup or in a non-backend process. Logically it should * be done first, but putting it here avoids wasting cycles during normal * cases. */ if (stack_depth > max_stack_depth_bytes && stack_base_ptr != NULL) return true; /* * On IA64 there is a separate "register" stack that requires its own * independent check. For this, we have to measure the change in the * "BSP" pointer from PostgresMain to here. Logic is just as above, * except that we know IA64's register stack grows up. * * Note we assume that the same max_stack_depth applies to both stacks. */ #if defined(__ia64__) || defined(__ia64) stack_depth = (long) (ia64_get_bsp() - register_stack_base_ptr); if (stack_depth > max_stack_depth_bytes && register_stack_base_ptr != NULL) return true; #endif /* IA64 */ return false; } /* GUC check hook for max_stack_depth */ /* GUC assign hook for max_stack_depth */ /* * set_debug_options --- apply "-d N" command line option * * -d is not quite the same as setting log_min_messages because it enables * other output options. */ /* ---------------------------------------------------------------- * process_postgres_switches * Parse command line arguments for 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. * ---------------------------------------------------------------- */ /* * Throw an error if we're a WAL sender process. * * This is used to forbid anything else than simple query protocol messages * in a WAL sender process. 'firstchar' specifies what kind of a forbidden * message was received, and is used to construct the error message. */ /* * Obtain platform stack depth limit (in bytes) * * Return -1 if unknown */ #if defined(HAVE_GETRLIMIT) && defined(RLIMIT_STACK) #else /* no getrlimit */ #if defined(WIN32) || defined(__CYGWIN__) #else /* not windows ... give up */ #endif #endif #if defined(HAVE_GETRUSAGE) #if defined(__darwin__) #else #endif #endif /* HAVE_GETRUSAGE */ /* * on_proc_exit handler to log end of session */ /* * Start statement timeout timer, if enabled. * * If there's already a timeout running, don't restart the timer. That * enables compromises between accuracy of timeouts and cost of starting a * timeout. */ /* * Disable statement timeout, if active. */ pg_query-4.2.3/ext/pg_query/pg_query_parse.c0000644000004100000410000000712414510636647021247 0ustar www-datawww-data#include "pg_query.h" #include "pg_query_internal.h" #include "pg_query_outfuncs.h" #include "parser/parser.h" #include "parser/scanner.h" #include "parser/scansup.h" #include #include PgQueryInternalParsetreeAndError pg_query_raw_parse(const char* input) { PgQueryInternalParsetreeAndError result = {0}; MemoryContext parse_context = CurrentMemoryContext; char stderr_buffer[STDERR_BUFFER_LEN + 1] = {0}; #ifndef DEBUG int stderr_global; int stderr_pipe[2]; #endif #ifndef DEBUG // Setup pipe for stderr redirection if (pipe(stderr_pipe) != 0) { PgQueryError* error = malloc(sizeof(PgQueryError)); error->message = strdup("Failed to open pipe, too many open file descriptors") result.error = error; return result; } fcntl(stderr_pipe[0], F_SETFL, fcntl(stderr_pipe[0], F_GETFL) | O_NONBLOCK); // Redirect stderr to the pipe stderr_global = dup(STDERR_FILENO); dup2(stderr_pipe[1], STDERR_FILENO); close(stderr_pipe[1]); #endif PG_TRY(); { result.tree = raw_parser(input, RAW_PARSE_DEFAULT); #ifndef DEBUG // Save stderr for result read(stderr_pipe[0], stderr_buffer, STDERR_BUFFER_LEN); #endif result.stderr_buffer = strdup(stderr_buffer); } PG_CATCH(); { ErrorData* error_data; PgQueryError* error; MemoryContextSwitchTo(parse_context); error_data = CopyErrorData(); // Note: This is intentionally malloc so exiting the memory context doesn't free this error = malloc(sizeof(PgQueryError)); error->message = strdup(error_data->message); error->filename = strdup(error_data->filename); error->funcname = strdup(error_data->funcname); error->context = NULL; error->lineno = error_data->lineno; error->cursorpos = error_data->cursorpos; result.error = error; FlushErrorState(); } PG_END_TRY(); #ifndef DEBUG // Restore stderr, close pipe dup2(stderr_global, STDERR_FILENO); close(stderr_pipe[0]); close(stderr_global); #endif return result; } PgQueryParseResult pg_query_parse(const char* input) { MemoryContext ctx = NULL; PgQueryInternalParsetreeAndError parsetree_and_error; PgQueryParseResult result = {0}; char *tree_json = NULL; ctx = pg_query_enter_memory_context(); parsetree_and_error = pg_query_raw_parse(input); // These are all malloc-ed and will survive exiting the memory context, the caller is responsible to free them now result.stderr_buffer = parsetree_and_error.stderr_buffer; result.error = parsetree_and_error.error; tree_json = pg_query_nodes_to_json(parsetree_and_error.tree); result.parse_tree = strdup(tree_json); pfree(tree_json); pg_query_exit_memory_context(ctx); return result; } PgQueryProtobufParseResult pg_query_parse_protobuf(const char* input) { MemoryContext ctx = NULL; PgQueryInternalParsetreeAndError parsetree_and_error; PgQueryProtobufParseResult result = {}; ctx = pg_query_enter_memory_context(); parsetree_and_error = pg_query_raw_parse(input); // These are all malloc-ed and will survive exiting the memory context, the caller is responsible to free them now result.stderr_buffer = parsetree_and_error.stderr_buffer; result.error = parsetree_and_error.error; result.parse_tree = pg_query_nodes_to_protobuf(parsetree_and_error.tree); pg_query_exit_memory_context(ctx); return result; } void pg_query_free_parse_result(PgQueryParseResult result) { if (result.error) { pg_query_free_error(result.error); } free(result.parse_tree); free(result.stderr_buffer); } void pg_query_free_protobuf_parse_result(PgQueryProtobufParseResult result) { if (result.error) { pg_query_free_error(result.error); } free(result.parse_tree.data); free(result.stderr_buffer); } pg_query-4.2.3/ext/pg_query/pg_query.pb-c.c0000644000004100000410000463076014510636647020711 0ustar www-datawww-data/* 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__var__init (PgQuery__Var *message) { static const PgQuery__Var init_value = PG_QUERY__VAR__INIT; *message = init_value; } size_t pg_query__var__get_packed_size (const PgQuery__Var *message) { assert(message->base.descriptor == &pg_query__var__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__var__pack (const PgQuery__Var *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__var__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__var__pack_to_buffer (const PgQuery__Var *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__var__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__Var * pg_query__var__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__Var *) protobuf_c_message_unpack (&pg_query__var__descriptor, allocator, len, data); } void pg_query__var__free_unpacked (PgQuery__Var *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__var__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__param__init (PgQuery__Param *message) { static const PgQuery__Param init_value = PG_QUERY__PARAM__INIT; *message = init_value; } size_t pg_query__param__get_packed_size (const PgQuery__Param *message) { assert(message->base.descriptor == &pg_query__param__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__param__pack (const PgQuery__Param *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__param__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__param__pack_to_buffer (const PgQuery__Param *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__param__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__Param * pg_query__param__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__Param *) protobuf_c_message_unpack (&pg_query__param__descriptor, allocator, len, data); } void pg_query__param__free_unpacked (PgQuery__Param *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__param__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__aggref__init (PgQuery__Aggref *message) { static const PgQuery__Aggref init_value = PG_QUERY__AGGREF__INIT; *message = init_value; } size_t pg_query__aggref__get_packed_size (const PgQuery__Aggref *message) { assert(message->base.descriptor == &pg_query__aggref__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__aggref__pack (const PgQuery__Aggref *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__aggref__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__aggref__pack_to_buffer (const PgQuery__Aggref *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__aggref__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__Aggref * pg_query__aggref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__Aggref *) protobuf_c_message_unpack (&pg_query__aggref__descriptor, allocator, len, data); } void pg_query__aggref__free_unpacked (PgQuery__Aggref *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__aggref__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__grouping_func__init (PgQuery__GroupingFunc *message) { static const PgQuery__GroupingFunc init_value = PG_QUERY__GROUPING_FUNC__INIT; *message = init_value; } size_t pg_query__grouping_func__get_packed_size (const PgQuery__GroupingFunc *message) { assert(message->base.descriptor == &pg_query__grouping_func__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__grouping_func__pack (const PgQuery__GroupingFunc *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__grouping_func__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__grouping_func__pack_to_buffer (const PgQuery__GroupingFunc *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__grouping_func__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__GroupingFunc * pg_query__grouping_func__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__GroupingFunc *) protobuf_c_message_unpack (&pg_query__grouping_func__descriptor, allocator, len, data); } void pg_query__grouping_func__free_unpacked (PgQuery__GroupingFunc *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__grouping_func__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__window_func__init (PgQuery__WindowFunc *message) { static const PgQuery__WindowFunc init_value = PG_QUERY__WINDOW_FUNC__INIT; *message = init_value; } size_t pg_query__window_func__get_packed_size (const PgQuery__WindowFunc *message) { assert(message->base.descriptor == &pg_query__window_func__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__window_func__pack (const PgQuery__WindowFunc *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__window_func__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__window_func__pack_to_buffer (const PgQuery__WindowFunc *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__window_func__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__WindowFunc * pg_query__window_func__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__WindowFunc *) protobuf_c_message_unpack (&pg_query__window_func__descriptor, allocator, len, data); } void pg_query__window_func__free_unpacked (PgQuery__WindowFunc *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__window_func__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__subscripting_ref__init (PgQuery__SubscriptingRef *message) { static const PgQuery__SubscriptingRef init_value = PG_QUERY__SUBSCRIPTING_REF__INIT; *message = init_value; } size_t pg_query__subscripting_ref__get_packed_size (const PgQuery__SubscriptingRef *message) { assert(message->base.descriptor == &pg_query__subscripting_ref__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__subscripting_ref__pack (const PgQuery__SubscriptingRef *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__subscripting_ref__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__subscripting_ref__pack_to_buffer (const PgQuery__SubscriptingRef *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__subscripting_ref__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SubscriptingRef * pg_query__subscripting_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SubscriptingRef *) protobuf_c_message_unpack (&pg_query__subscripting_ref__descriptor, allocator, len, data); } void pg_query__subscripting_ref__free_unpacked (PgQuery__SubscriptingRef *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__subscripting_ref__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__func_expr__init (PgQuery__FuncExpr *message) { static const PgQuery__FuncExpr init_value = PG_QUERY__FUNC_EXPR__INIT; *message = init_value; } size_t pg_query__func_expr__get_packed_size (const PgQuery__FuncExpr *message) { assert(message->base.descriptor == &pg_query__func_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__func_expr__pack (const PgQuery__FuncExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__func_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__func_expr__pack_to_buffer (const PgQuery__FuncExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__func_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__FuncExpr * pg_query__func_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__FuncExpr *) protobuf_c_message_unpack (&pg_query__func_expr__descriptor, allocator, len, data); } void pg_query__func_expr__free_unpacked (PgQuery__FuncExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__func_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__named_arg_expr__init (PgQuery__NamedArgExpr *message) { static const PgQuery__NamedArgExpr init_value = PG_QUERY__NAMED_ARG_EXPR__INIT; *message = init_value; } size_t pg_query__named_arg_expr__get_packed_size (const PgQuery__NamedArgExpr *message) { assert(message->base.descriptor == &pg_query__named_arg_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__named_arg_expr__pack (const PgQuery__NamedArgExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__named_arg_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__named_arg_expr__pack_to_buffer (const PgQuery__NamedArgExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__named_arg_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__NamedArgExpr * pg_query__named_arg_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__NamedArgExpr *) protobuf_c_message_unpack (&pg_query__named_arg_expr__descriptor, allocator, len, data); } void pg_query__named_arg_expr__free_unpacked (PgQuery__NamedArgExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__named_arg_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__op_expr__init (PgQuery__OpExpr *message) { static const PgQuery__OpExpr init_value = PG_QUERY__OP_EXPR__INIT; *message = init_value; } size_t pg_query__op_expr__get_packed_size (const PgQuery__OpExpr *message) { assert(message->base.descriptor == &pg_query__op_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__op_expr__pack (const PgQuery__OpExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__op_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__op_expr__pack_to_buffer (const PgQuery__OpExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__op_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__OpExpr * pg_query__op_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__OpExpr *) protobuf_c_message_unpack (&pg_query__op_expr__descriptor, allocator, len, data); } void pg_query__op_expr__free_unpacked (PgQuery__OpExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__op_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__distinct_expr__init (PgQuery__DistinctExpr *message) { static const PgQuery__DistinctExpr init_value = PG_QUERY__DISTINCT_EXPR__INIT; *message = init_value; } size_t pg_query__distinct_expr__get_packed_size (const PgQuery__DistinctExpr *message) { assert(message->base.descriptor == &pg_query__distinct_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__distinct_expr__pack (const PgQuery__DistinctExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__distinct_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__distinct_expr__pack_to_buffer (const PgQuery__DistinctExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__distinct_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DistinctExpr * pg_query__distinct_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DistinctExpr *) protobuf_c_message_unpack (&pg_query__distinct_expr__descriptor, allocator, len, data); } void pg_query__distinct_expr__free_unpacked (PgQuery__DistinctExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__distinct_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__null_if_expr__init (PgQuery__NullIfExpr *message) { static const PgQuery__NullIfExpr init_value = PG_QUERY__NULL_IF_EXPR__INIT; *message = init_value; } size_t pg_query__null_if_expr__get_packed_size (const PgQuery__NullIfExpr *message) { assert(message->base.descriptor == &pg_query__null_if_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__null_if_expr__pack (const PgQuery__NullIfExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__null_if_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__null_if_expr__pack_to_buffer (const PgQuery__NullIfExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__null_if_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__NullIfExpr * pg_query__null_if_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__NullIfExpr *) protobuf_c_message_unpack (&pg_query__null_if_expr__descriptor, allocator, len, data); } void pg_query__null_if_expr__free_unpacked (PgQuery__NullIfExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__null_if_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__scalar_array_op_expr__init (PgQuery__ScalarArrayOpExpr *message) { static const PgQuery__ScalarArrayOpExpr init_value = PG_QUERY__SCALAR_ARRAY_OP_EXPR__INIT; *message = init_value; } size_t pg_query__scalar_array_op_expr__get_packed_size (const PgQuery__ScalarArrayOpExpr *message) { assert(message->base.descriptor == &pg_query__scalar_array_op_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__scalar_array_op_expr__pack (const PgQuery__ScalarArrayOpExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__scalar_array_op_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__scalar_array_op_expr__pack_to_buffer (const PgQuery__ScalarArrayOpExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__scalar_array_op_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ScalarArrayOpExpr * pg_query__scalar_array_op_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ScalarArrayOpExpr *) protobuf_c_message_unpack (&pg_query__scalar_array_op_expr__descriptor, allocator, len, data); } void pg_query__scalar_array_op_expr__free_unpacked (PgQuery__ScalarArrayOpExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__scalar_array_op_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__bool_expr__init (PgQuery__BoolExpr *message) { static const PgQuery__BoolExpr init_value = PG_QUERY__BOOL_EXPR__INIT; *message = init_value; } size_t pg_query__bool_expr__get_packed_size (const PgQuery__BoolExpr *message) { assert(message->base.descriptor == &pg_query__bool_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__bool_expr__pack (const PgQuery__BoolExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__bool_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__bool_expr__pack_to_buffer (const PgQuery__BoolExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__bool_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__BoolExpr * pg_query__bool_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__BoolExpr *) protobuf_c_message_unpack (&pg_query__bool_expr__descriptor, allocator, len, data); } void pg_query__bool_expr__free_unpacked (PgQuery__BoolExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__bool_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__sub_link__init (PgQuery__SubLink *message) { static const PgQuery__SubLink init_value = PG_QUERY__SUB_LINK__INIT; *message = init_value; } size_t pg_query__sub_link__get_packed_size (const PgQuery__SubLink *message) { assert(message->base.descriptor == &pg_query__sub_link__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__sub_link__pack (const PgQuery__SubLink *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__sub_link__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__sub_link__pack_to_buffer (const PgQuery__SubLink *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__sub_link__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SubLink * pg_query__sub_link__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SubLink *) protobuf_c_message_unpack (&pg_query__sub_link__descriptor, allocator, len, data); } void pg_query__sub_link__free_unpacked (PgQuery__SubLink *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__sub_link__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__sub_plan__init (PgQuery__SubPlan *message) { static const PgQuery__SubPlan init_value = PG_QUERY__SUB_PLAN__INIT; *message = init_value; } size_t pg_query__sub_plan__get_packed_size (const PgQuery__SubPlan *message) { assert(message->base.descriptor == &pg_query__sub_plan__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__sub_plan__pack (const PgQuery__SubPlan *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__sub_plan__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__sub_plan__pack_to_buffer (const PgQuery__SubPlan *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__sub_plan__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SubPlan * pg_query__sub_plan__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SubPlan *) protobuf_c_message_unpack (&pg_query__sub_plan__descriptor, allocator, len, data); } void pg_query__sub_plan__free_unpacked (PgQuery__SubPlan *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__sub_plan__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alternative_sub_plan__init (PgQuery__AlternativeSubPlan *message) { static const PgQuery__AlternativeSubPlan init_value = PG_QUERY__ALTERNATIVE_SUB_PLAN__INIT; *message = init_value; } size_t pg_query__alternative_sub_plan__get_packed_size (const PgQuery__AlternativeSubPlan *message) { assert(message->base.descriptor == &pg_query__alternative_sub_plan__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alternative_sub_plan__pack (const PgQuery__AlternativeSubPlan *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alternative_sub_plan__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alternative_sub_plan__pack_to_buffer (const PgQuery__AlternativeSubPlan *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alternative_sub_plan__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlternativeSubPlan * pg_query__alternative_sub_plan__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlternativeSubPlan *) protobuf_c_message_unpack (&pg_query__alternative_sub_plan__descriptor, allocator, len, data); } void pg_query__alternative_sub_plan__free_unpacked (PgQuery__AlternativeSubPlan *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alternative_sub_plan__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__field_select__init (PgQuery__FieldSelect *message) { static const PgQuery__FieldSelect init_value = PG_QUERY__FIELD_SELECT__INIT; *message = init_value; } size_t pg_query__field_select__get_packed_size (const PgQuery__FieldSelect *message) { assert(message->base.descriptor == &pg_query__field_select__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__field_select__pack (const PgQuery__FieldSelect *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__field_select__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__field_select__pack_to_buffer (const PgQuery__FieldSelect *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__field_select__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__FieldSelect * pg_query__field_select__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__FieldSelect *) protobuf_c_message_unpack (&pg_query__field_select__descriptor, allocator, len, data); } void pg_query__field_select__free_unpacked (PgQuery__FieldSelect *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__field_select__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__field_store__init (PgQuery__FieldStore *message) { static const PgQuery__FieldStore init_value = PG_QUERY__FIELD_STORE__INIT; *message = init_value; } size_t pg_query__field_store__get_packed_size (const PgQuery__FieldStore *message) { assert(message->base.descriptor == &pg_query__field_store__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__field_store__pack (const PgQuery__FieldStore *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__field_store__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__field_store__pack_to_buffer (const PgQuery__FieldStore *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__field_store__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__FieldStore * pg_query__field_store__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__FieldStore *) protobuf_c_message_unpack (&pg_query__field_store__descriptor, allocator, len, data); } void pg_query__field_store__free_unpacked (PgQuery__FieldStore *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__field_store__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__relabel_type__init (PgQuery__RelabelType *message) { static const PgQuery__RelabelType init_value = PG_QUERY__RELABEL_TYPE__INIT; *message = init_value; } size_t pg_query__relabel_type__get_packed_size (const PgQuery__RelabelType *message) { assert(message->base.descriptor == &pg_query__relabel_type__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__relabel_type__pack (const PgQuery__RelabelType *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__relabel_type__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__relabel_type__pack_to_buffer (const PgQuery__RelabelType *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__relabel_type__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RelabelType * pg_query__relabel_type__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RelabelType *) protobuf_c_message_unpack (&pg_query__relabel_type__descriptor, allocator, len, data); } void pg_query__relabel_type__free_unpacked (PgQuery__RelabelType *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__relabel_type__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__coerce_via_io__init (PgQuery__CoerceViaIO *message) { static const PgQuery__CoerceViaIO init_value = PG_QUERY__COERCE_VIA_IO__INIT; *message = init_value; } size_t pg_query__coerce_via_io__get_packed_size (const PgQuery__CoerceViaIO *message) { assert(message->base.descriptor == &pg_query__coerce_via_io__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__coerce_via_io__pack (const PgQuery__CoerceViaIO *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__coerce_via_io__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__coerce_via_io__pack_to_buffer (const PgQuery__CoerceViaIO *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__coerce_via_io__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CoerceViaIO * pg_query__coerce_via_io__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CoerceViaIO *) protobuf_c_message_unpack (&pg_query__coerce_via_io__descriptor, allocator, len, data); } void pg_query__coerce_via_io__free_unpacked (PgQuery__CoerceViaIO *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__coerce_via_io__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__array_coerce_expr__init (PgQuery__ArrayCoerceExpr *message) { static const PgQuery__ArrayCoerceExpr init_value = PG_QUERY__ARRAY_COERCE_EXPR__INIT; *message = init_value; } size_t pg_query__array_coerce_expr__get_packed_size (const PgQuery__ArrayCoerceExpr *message) { assert(message->base.descriptor == &pg_query__array_coerce_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__array_coerce_expr__pack (const PgQuery__ArrayCoerceExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__array_coerce_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__array_coerce_expr__pack_to_buffer (const PgQuery__ArrayCoerceExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__array_coerce_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ArrayCoerceExpr * pg_query__array_coerce_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ArrayCoerceExpr *) protobuf_c_message_unpack (&pg_query__array_coerce_expr__descriptor, allocator, len, data); } void pg_query__array_coerce_expr__free_unpacked (PgQuery__ArrayCoerceExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__array_coerce_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__convert_rowtype_expr__init (PgQuery__ConvertRowtypeExpr *message) { static const PgQuery__ConvertRowtypeExpr init_value = PG_QUERY__CONVERT_ROWTYPE_EXPR__INIT; *message = init_value; } size_t pg_query__convert_rowtype_expr__get_packed_size (const PgQuery__ConvertRowtypeExpr *message) { assert(message->base.descriptor == &pg_query__convert_rowtype_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__convert_rowtype_expr__pack (const PgQuery__ConvertRowtypeExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__convert_rowtype_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__convert_rowtype_expr__pack_to_buffer (const PgQuery__ConvertRowtypeExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__convert_rowtype_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ConvertRowtypeExpr * pg_query__convert_rowtype_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ConvertRowtypeExpr *) protobuf_c_message_unpack (&pg_query__convert_rowtype_expr__descriptor, allocator, len, data); } void pg_query__convert_rowtype_expr__free_unpacked (PgQuery__ConvertRowtypeExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__convert_rowtype_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__collate_expr__init (PgQuery__CollateExpr *message) { static const PgQuery__CollateExpr init_value = PG_QUERY__COLLATE_EXPR__INIT; *message = init_value; } size_t pg_query__collate_expr__get_packed_size (const PgQuery__CollateExpr *message) { assert(message->base.descriptor == &pg_query__collate_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__collate_expr__pack (const PgQuery__CollateExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__collate_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__collate_expr__pack_to_buffer (const PgQuery__CollateExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__collate_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CollateExpr * pg_query__collate_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CollateExpr *) protobuf_c_message_unpack (&pg_query__collate_expr__descriptor, allocator, len, data); } void pg_query__collate_expr__free_unpacked (PgQuery__CollateExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__collate_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__case_expr__init (PgQuery__CaseExpr *message) { static const PgQuery__CaseExpr init_value = PG_QUERY__CASE_EXPR__INIT; *message = init_value; } size_t pg_query__case_expr__get_packed_size (const PgQuery__CaseExpr *message) { assert(message->base.descriptor == &pg_query__case_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__case_expr__pack (const PgQuery__CaseExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__case_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__case_expr__pack_to_buffer (const PgQuery__CaseExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__case_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CaseExpr * pg_query__case_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CaseExpr *) protobuf_c_message_unpack (&pg_query__case_expr__descriptor, allocator, len, data); } void pg_query__case_expr__free_unpacked (PgQuery__CaseExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__case_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__case_when__init (PgQuery__CaseWhen *message) { static const PgQuery__CaseWhen init_value = PG_QUERY__CASE_WHEN__INIT; *message = init_value; } size_t pg_query__case_when__get_packed_size (const PgQuery__CaseWhen *message) { assert(message->base.descriptor == &pg_query__case_when__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__case_when__pack (const PgQuery__CaseWhen *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__case_when__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__case_when__pack_to_buffer (const PgQuery__CaseWhen *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__case_when__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CaseWhen * pg_query__case_when__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CaseWhen *) protobuf_c_message_unpack (&pg_query__case_when__descriptor, allocator, len, data); } void pg_query__case_when__free_unpacked (PgQuery__CaseWhen *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__case_when__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__case_test_expr__init (PgQuery__CaseTestExpr *message) { static const PgQuery__CaseTestExpr init_value = PG_QUERY__CASE_TEST_EXPR__INIT; *message = init_value; } size_t pg_query__case_test_expr__get_packed_size (const PgQuery__CaseTestExpr *message) { assert(message->base.descriptor == &pg_query__case_test_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__case_test_expr__pack (const PgQuery__CaseTestExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__case_test_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__case_test_expr__pack_to_buffer (const PgQuery__CaseTestExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__case_test_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CaseTestExpr * pg_query__case_test_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CaseTestExpr *) protobuf_c_message_unpack (&pg_query__case_test_expr__descriptor, allocator, len, data); } void pg_query__case_test_expr__free_unpacked (PgQuery__CaseTestExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__case_test_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__array_expr__init (PgQuery__ArrayExpr *message) { static const PgQuery__ArrayExpr init_value = PG_QUERY__ARRAY_EXPR__INIT; *message = init_value; } size_t pg_query__array_expr__get_packed_size (const PgQuery__ArrayExpr *message) { assert(message->base.descriptor == &pg_query__array_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__array_expr__pack (const PgQuery__ArrayExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__array_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__array_expr__pack_to_buffer (const PgQuery__ArrayExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__array_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ArrayExpr * pg_query__array_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ArrayExpr *) protobuf_c_message_unpack (&pg_query__array_expr__descriptor, allocator, len, data); } void pg_query__array_expr__free_unpacked (PgQuery__ArrayExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__array_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__row_expr__init (PgQuery__RowExpr *message) { static const PgQuery__RowExpr init_value = PG_QUERY__ROW_EXPR__INIT; *message = init_value; } size_t pg_query__row_expr__get_packed_size (const PgQuery__RowExpr *message) { assert(message->base.descriptor == &pg_query__row_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__row_expr__pack (const PgQuery__RowExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__row_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__row_expr__pack_to_buffer (const PgQuery__RowExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__row_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RowExpr * pg_query__row_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RowExpr *) protobuf_c_message_unpack (&pg_query__row_expr__descriptor, allocator, len, data); } void pg_query__row_expr__free_unpacked (PgQuery__RowExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__row_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__row_compare_expr__init (PgQuery__RowCompareExpr *message) { static const PgQuery__RowCompareExpr init_value = PG_QUERY__ROW_COMPARE_EXPR__INIT; *message = init_value; } size_t pg_query__row_compare_expr__get_packed_size (const PgQuery__RowCompareExpr *message) { assert(message->base.descriptor == &pg_query__row_compare_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__row_compare_expr__pack (const PgQuery__RowCompareExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__row_compare_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__row_compare_expr__pack_to_buffer (const PgQuery__RowCompareExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__row_compare_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RowCompareExpr * pg_query__row_compare_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RowCompareExpr *) protobuf_c_message_unpack (&pg_query__row_compare_expr__descriptor, allocator, len, data); } void pg_query__row_compare_expr__free_unpacked (PgQuery__RowCompareExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__row_compare_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__coalesce_expr__init (PgQuery__CoalesceExpr *message) { static const PgQuery__CoalesceExpr init_value = PG_QUERY__COALESCE_EXPR__INIT; *message = init_value; } size_t pg_query__coalesce_expr__get_packed_size (const PgQuery__CoalesceExpr *message) { assert(message->base.descriptor == &pg_query__coalesce_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__coalesce_expr__pack (const PgQuery__CoalesceExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__coalesce_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__coalesce_expr__pack_to_buffer (const PgQuery__CoalesceExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__coalesce_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CoalesceExpr * pg_query__coalesce_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CoalesceExpr *) protobuf_c_message_unpack (&pg_query__coalesce_expr__descriptor, allocator, len, data); } void pg_query__coalesce_expr__free_unpacked (PgQuery__CoalesceExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__coalesce_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__min_max_expr__init (PgQuery__MinMaxExpr *message) { static const PgQuery__MinMaxExpr init_value = PG_QUERY__MIN_MAX_EXPR__INIT; *message = init_value; } size_t pg_query__min_max_expr__get_packed_size (const PgQuery__MinMaxExpr *message) { assert(message->base.descriptor == &pg_query__min_max_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__min_max_expr__pack (const PgQuery__MinMaxExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__min_max_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__min_max_expr__pack_to_buffer (const PgQuery__MinMaxExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__min_max_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__MinMaxExpr * pg_query__min_max_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__MinMaxExpr *) protobuf_c_message_unpack (&pg_query__min_max_expr__descriptor, allocator, len, data); } void pg_query__min_max_expr__free_unpacked (PgQuery__MinMaxExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__min_max_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__sqlvalue_function__init (PgQuery__SQLValueFunction *message) { static const PgQuery__SQLValueFunction init_value = PG_QUERY__SQLVALUE_FUNCTION__INIT; *message = init_value; } size_t pg_query__sqlvalue_function__get_packed_size (const PgQuery__SQLValueFunction *message) { assert(message->base.descriptor == &pg_query__sqlvalue_function__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__sqlvalue_function__pack (const PgQuery__SQLValueFunction *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__sqlvalue_function__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__sqlvalue_function__pack_to_buffer (const PgQuery__SQLValueFunction *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__sqlvalue_function__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SQLValueFunction * pg_query__sqlvalue_function__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SQLValueFunction *) protobuf_c_message_unpack (&pg_query__sqlvalue_function__descriptor, allocator, len, data); } void pg_query__sqlvalue_function__free_unpacked (PgQuery__SQLValueFunction *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__sqlvalue_function__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__xml_expr__init (PgQuery__XmlExpr *message) { static const PgQuery__XmlExpr init_value = PG_QUERY__XML_EXPR__INIT; *message = init_value; } size_t pg_query__xml_expr__get_packed_size (const PgQuery__XmlExpr *message) { assert(message->base.descriptor == &pg_query__xml_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__xml_expr__pack (const PgQuery__XmlExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__xml_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__xml_expr__pack_to_buffer (const PgQuery__XmlExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__xml_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__XmlExpr * pg_query__xml_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__XmlExpr *) protobuf_c_message_unpack (&pg_query__xml_expr__descriptor, allocator, len, data); } void pg_query__xml_expr__free_unpacked (PgQuery__XmlExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__xml_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__null_test__init (PgQuery__NullTest *message) { static const PgQuery__NullTest init_value = PG_QUERY__NULL_TEST__INIT; *message = init_value; } size_t pg_query__null_test__get_packed_size (const PgQuery__NullTest *message) { assert(message->base.descriptor == &pg_query__null_test__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__null_test__pack (const PgQuery__NullTest *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__null_test__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__null_test__pack_to_buffer (const PgQuery__NullTest *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__null_test__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__NullTest * pg_query__null_test__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__NullTest *) protobuf_c_message_unpack (&pg_query__null_test__descriptor, allocator, len, data); } void pg_query__null_test__free_unpacked (PgQuery__NullTest *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__null_test__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__boolean_test__init (PgQuery__BooleanTest *message) { static const PgQuery__BooleanTest init_value = PG_QUERY__BOOLEAN_TEST__INIT; *message = init_value; } size_t pg_query__boolean_test__get_packed_size (const PgQuery__BooleanTest *message) { assert(message->base.descriptor == &pg_query__boolean_test__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__boolean_test__pack (const PgQuery__BooleanTest *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__boolean_test__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__boolean_test__pack_to_buffer (const PgQuery__BooleanTest *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__boolean_test__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__BooleanTest * pg_query__boolean_test__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__BooleanTest *) protobuf_c_message_unpack (&pg_query__boolean_test__descriptor, allocator, len, data); } void pg_query__boolean_test__free_unpacked (PgQuery__BooleanTest *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__boolean_test__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__coerce_to_domain__init (PgQuery__CoerceToDomain *message) { static const PgQuery__CoerceToDomain init_value = PG_QUERY__COERCE_TO_DOMAIN__INIT; *message = init_value; } size_t pg_query__coerce_to_domain__get_packed_size (const PgQuery__CoerceToDomain *message) { assert(message->base.descriptor == &pg_query__coerce_to_domain__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__coerce_to_domain__pack (const PgQuery__CoerceToDomain *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__coerce_to_domain__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__coerce_to_domain__pack_to_buffer (const PgQuery__CoerceToDomain *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__coerce_to_domain__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CoerceToDomain * pg_query__coerce_to_domain__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CoerceToDomain *) protobuf_c_message_unpack (&pg_query__coerce_to_domain__descriptor, allocator, len, data); } void pg_query__coerce_to_domain__free_unpacked (PgQuery__CoerceToDomain *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__coerce_to_domain__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__coerce_to_domain_value__init (PgQuery__CoerceToDomainValue *message) { static const PgQuery__CoerceToDomainValue init_value = PG_QUERY__COERCE_TO_DOMAIN_VALUE__INIT; *message = init_value; } size_t pg_query__coerce_to_domain_value__get_packed_size (const PgQuery__CoerceToDomainValue *message) { assert(message->base.descriptor == &pg_query__coerce_to_domain_value__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__coerce_to_domain_value__pack (const PgQuery__CoerceToDomainValue *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__coerce_to_domain_value__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__coerce_to_domain_value__pack_to_buffer (const PgQuery__CoerceToDomainValue *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__coerce_to_domain_value__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CoerceToDomainValue * pg_query__coerce_to_domain_value__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CoerceToDomainValue *) protobuf_c_message_unpack (&pg_query__coerce_to_domain_value__descriptor, allocator, len, data); } void pg_query__coerce_to_domain_value__free_unpacked (PgQuery__CoerceToDomainValue *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__coerce_to_domain_value__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__set_to_default__init (PgQuery__SetToDefault *message) { static const PgQuery__SetToDefault init_value = PG_QUERY__SET_TO_DEFAULT__INIT; *message = init_value; } size_t pg_query__set_to_default__get_packed_size (const PgQuery__SetToDefault *message) { assert(message->base.descriptor == &pg_query__set_to_default__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__set_to_default__pack (const PgQuery__SetToDefault *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__set_to_default__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__set_to_default__pack_to_buffer (const PgQuery__SetToDefault *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__set_to_default__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SetToDefault * pg_query__set_to_default__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SetToDefault *) protobuf_c_message_unpack (&pg_query__set_to_default__descriptor, allocator, len, data); } void pg_query__set_to_default__free_unpacked (PgQuery__SetToDefault *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__set_to_default__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__current_of_expr__init (PgQuery__CurrentOfExpr *message) { static const PgQuery__CurrentOfExpr init_value = PG_QUERY__CURRENT_OF_EXPR__INIT; *message = init_value; } size_t pg_query__current_of_expr__get_packed_size (const PgQuery__CurrentOfExpr *message) { assert(message->base.descriptor == &pg_query__current_of_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__current_of_expr__pack (const PgQuery__CurrentOfExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__current_of_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__current_of_expr__pack_to_buffer (const PgQuery__CurrentOfExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__current_of_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CurrentOfExpr * pg_query__current_of_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CurrentOfExpr *) protobuf_c_message_unpack (&pg_query__current_of_expr__descriptor, allocator, len, data); } void pg_query__current_of_expr__free_unpacked (PgQuery__CurrentOfExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__current_of_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__next_value_expr__init (PgQuery__NextValueExpr *message) { static const PgQuery__NextValueExpr init_value = PG_QUERY__NEXT_VALUE_EXPR__INIT; *message = init_value; } size_t pg_query__next_value_expr__get_packed_size (const PgQuery__NextValueExpr *message) { assert(message->base.descriptor == &pg_query__next_value_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__next_value_expr__pack (const PgQuery__NextValueExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__next_value_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__next_value_expr__pack_to_buffer (const PgQuery__NextValueExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__next_value_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__NextValueExpr * pg_query__next_value_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__NextValueExpr *) protobuf_c_message_unpack (&pg_query__next_value_expr__descriptor, allocator, len, data); } void pg_query__next_value_expr__free_unpacked (PgQuery__NextValueExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__next_value_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__inference_elem__init (PgQuery__InferenceElem *message) { static const PgQuery__InferenceElem init_value = PG_QUERY__INFERENCE_ELEM__INIT; *message = init_value; } size_t pg_query__inference_elem__get_packed_size (const PgQuery__InferenceElem *message) { assert(message->base.descriptor == &pg_query__inference_elem__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__inference_elem__pack (const PgQuery__InferenceElem *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__inference_elem__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__inference_elem__pack_to_buffer (const PgQuery__InferenceElem *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__inference_elem__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__InferenceElem * pg_query__inference_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__InferenceElem *) protobuf_c_message_unpack (&pg_query__inference_elem__descriptor, allocator, len, data); } void pg_query__inference_elem__free_unpacked (PgQuery__InferenceElem *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__inference_elem__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__target_entry__init (PgQuery__TargetEntry *message) { static const PgQuery__TargetEntry init_value = PG_QUERY__TARGET_ENTRY__INIT; *message = init_value; } size_t pg_query__target_entry__get_packed_size (const PgQuery__TargetEntry *message) { assert(message->base.descriptor == &pg_query__target_entry__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__target_entry__pack (const PgQuery__TargetEntry *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__target_entry__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__target_entry__pack_to_buffer (const PgQuery__TargetEntry *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__target_entry__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__TargetEntry * pg_query__target_entry__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__TargetEntry *) protobuf_c_message_unpack (&pg_query__target_entry__descriptor, allocator, len, data); } void pg_query__target_entry__free_unpacked (PgQuery__TargetEntry *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__target_entry__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__range_tbl_ref__init (PgQuery__RangeTblRef *message) { static const PgQuery__RangeTblRef init_value = PG_QUERY__RANGE_TBL_REF__INIT; *message = init_value; } size_t pg_query__range_tbl_ref__get_packed_size (const PgQuery__RangeTblRef *message) { assert(message->base.descriptor == &pg_query__range_tbl_ref__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__range_tbl_ref__pack (const PgQuery__RangeTblRef *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__range_tbl_ref__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__range_tbl_ref__pack_to_buffer (const PgQuery__RangeTblRef *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__range_tbl_ref__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RangeTblRef * pg_query__range_tbl_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RangeTblRef *) protobuf_c_message_unpack (&pg_query__range_tbl_ref__descriptor, allocator, len, data); } void pg_query__range_tbl_ref__free_unpacked (PgQuery__RangeTblRef *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__range_tbl_ref__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__join_expr__init (PgQuery__JoinExpr *message) { static const PgQuery__JoinExpr init_value = PG_QUERY__JOIN_EXPR__INIT; *message = init_value; } size_t pg_query__join_expr__get_packed_size (const PgQuery__JoinExpr *message) { assert(message->base.descriptor == &pg_query__join_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__join_expr__pack (const PgQuery__JoinExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__join_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__join_expr__pack_to_buffer (const PgQuery__JoinExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__join_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JoinExpr * pg_query__join_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JoinExpr *) protobuf_c_message_unpack (&pg_query__join_expr__descriptor, allocator, len, data); } void pg_query__join_expr__free_unpacked (PgQuery__JoinExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__join_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__from_expr__init (PgQuery__FromExpr *message) { static const PgQuery__FromExpr init_value = PG_QUERY__FROM_EXPR__INIT; *message = init_value; } size_t pg_query__from_expr__get_packed_size (const PgQuery__FromExpr *message) { assert(message->base.descriptor == &pg_query__from_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__from_expr__pack (const PgQuery__FromExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__from_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__from_expr__pack_to_buffer (const PgQuery__FromExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__from_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__FromExpr * pg_query__from_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__FromExpr *) protobuf_c_message_unpack (&pg_query__from_expr__descriptor, allocator, len, data); } void pg_query__from_expr__free_unpacked (PgQuery__FromExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__from_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__on_conflict_expr__init (PgQuery__OnConflictExpr *message) { static const PgQuery__OnConflictExpr init_value = PG_QUERY__ON_CONFLICT_EXPR__INIT; *message = init_value; } size_t pg_query__on_conflict_expr__get_packed_size (const PgQuery__OnConflictExpr *message) { assert(message->base.descriptor == &pg_query__on_conflict_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__on_conflict_expr__pack (const PgQuery__OnConflictExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__on_conflict_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__on_conflict_expr__pack_to_buffer (const PgQuery__OnConflictExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__on_conflict_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__OnConflictExpr * pg_query__on_conflict_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__OnConflictExpr *) protobuf_c_message_unpack (&pg_query__on_conflict_expr__descriptor, allocator, len, data); } void pg_query__on_conflict_expr__free_unpacked (PgQuery__OnConflictExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__on_conflict_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__into_clause__init (PgQuery__IntoClause *message) { static const PgQuery__IntoClause init_value = PG_QUERY__INTO_CLAUSE__INIT; *message = init_value; } size_t pg_query__into_clause__get_packed_size (const PgQuery__IntoClause *message) { assert(message->base.descriptor == &pg_query__into_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__into_clause__pack (const PgQuery__IntoClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__into_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__into_clause__pack_to_buffer (const PgQuery__IntoClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__into_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__IntoClause * pg_query__into_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__IntoClause *) protobuf_c_message_unpack (&pg_query__into_clause__descriptor, allocator, len, data); } void pg_query__into_clause__free_unpacked (PgQuery__IntoClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__into_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__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__raw_stmt__init (PgQuery__RawStmt *message) { static const PgQuery__RawStmt init_value = PG_QUERY__RAW_STMT__INIT; *message = init_value; } size_t pg_query__raw_stmt__get_packed_size (const PgQuery__RawStmt *message) { assert(message->base.descriptor == &pg_query__raw_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__raw_stmt__pack (const PgQuery__RawStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__raw_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__raw_stmt__pack_to_buffer (const PgQuery__RawStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__raw_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RawStmt * pg_query__raw_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RawStmt *) protobuf_c_message_unpack (&pg_query__raw_stmt__descriptor, allocator, len, data); } void pg_query__raw_stmt__free_unpacked (PgQuery__RawStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__raw_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__query__init (PgQuery__Query *message) { static const PgQuery__Query init_value = PG_QUERY__QUERY__INIT; *message = init_value; } size_t pg_query__query__get_packed_size (const PgQuery__Query *message) { assert(message->base.descriptor == &pg_query__query__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__query__pack (const PgQuery__Query *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__query__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__query__pack_to_buffer (const PgQuery__Query *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__query__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__Query * pg_query__query__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__Query *) protobuf_c_message_unpack (&pg_query__query__descriptor, allocator, len, data); } void pg_query__query__free_unpacked (PgQuery__Query *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__query__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__insert_stmt__init (PgQuery__InsertStmt *message) { static const PgQuery__InsertStmt init_value = PG_QUERY__INSERT_STMT__INIT; *message = init_value; } size_t pg_query__insert_stmt__get_packed_size (const PgQuery__InsertStmt *message) { assert(message->base.descriptor == &pg_query__insert_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__insert_stmt__pack (const PgQuery__InsertStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__insert_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__insert_stmt__pack_to_buffer (const PgQuery__InsertStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__insert_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__InsertStmt * pg_query__insert_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__InsertStmt *) protobuf_c_message_unpack (&pg_query__insert_stmt__descriptor, allocator, len, data); } void pg_query__insert_stmt__free_unpacked (PgQuery__InsertStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__insert_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__delete_stmt__init (PgQuery__DeleteStmt *message) { static const PgQuery__DeleteStmt init_value = PG_QUERY__DELETE_STMT__INIT; *message = init_value; } size_t pg_query__delete_stmt__get_packed_size (const PgQuery__DeleteStmt *message) { assert(message->base.descriptor == &pg_query__delete_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__delete_stmt__pack (const PgQuery__DeleteStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__delete_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__delete_stmt__pack_to_buffer (const PgQuery__DeleteStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__delete_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DeleteStmt * pg_query__delete_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DeleteStmt *) protobuf_c_message_unpack (&pg_query__delete_stmt__descriptor, allocator, len, data); } void pg_query__delete_stmt__free_unpacked (PgQuery__DeleteStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__delete_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__update_stmt__init (PgQuery__UpdateStmt *message) { static const PgQuery__UpdateStmt init_value = PG_QUERY__UPDATE_STMT__INIT; *message = init_value; } size_t pg_query__update_stmt__get_packed_size (const PgQuery__UpdateStmt *message) { assert(message->base.descriptor == &pg_query__update_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__update_stmt__pack (const PgQuery__UpdateStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__update_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__update_stmt__pack_to_buffer (const PgQuery__UpdateStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__update_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__UpdateStmt * pg_query__update_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__UpdateStmt *) protobuf_c_message_unpack (&pg_query__update_stmt__descriptor, allocator, len, data); } void pg_query__update_stmt__free_unpacked (PgQuery__UpdateStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__update_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__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__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__alter_table_stmt__init (PgQuery__AlterTableStmt *message) { static const PgQuery__AlterTableStmt init_value = PG_QUERY__ALTER_TABLE_STMT__INIT; *message = init_value; } size_t pg_query__alter_table_stmt__get_packed_size (const PgQuery__AlterTableStmt *message) { assert(message->base.descriptor == &pg_query__alter_table_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_table_stmt__pack (const PgQuery__AlterTableStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_table_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_table_stmt__pack_to_buffer (const PgQuery__AlterTableStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_table_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterTableStmt * pg_query__alter_table_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterTableStmt *) protobuf_c_message_unpack (&pg_query__alter_table_stmt__descriptor, allocator, len, data); } void pg_query__alter_table_stmt__free_unpacked (PgQuery__AlterTableStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_table_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_table_cmd__init (PgQuery__AlterTableCmd *message) { static const PgQuery__AlterTableCmd init_value = PG_QUERY__ALTER_TABLE_CMD__INIT; *message = init_value; } size_t pg_query__alter_table_cmd__get_packed_size (const PgQuery__AlterTableCmd *message) { assert(message->base.descriptor == &pg_query__alter_table_cmd__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_table_cmd__pack (const PgQuery__AlterTableCmd *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_table_cmd__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_table_cmd__pack_to_buffer (const PgQuery__AlterTableCmd *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_table_cmd__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterTableCmd * pg_query__alter_table_cmd__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterTableCmd *) protobuf_c_message_unpack (&pg_query__alter_table_cmd__descriptor, allocator, len, data); } void pg_query__alter_table_cmd__free_unpacked (PgQuery__AlterTableCmd *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_table_cmd__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_domain_stmt__init (PgQuery__AlterDomainStmt *message) { static const PgQuery__AlterDomainStmt init_value = PG_QUERY__ALTER_DOMAIN_STMT__INIT; *message = init_value; } size_t pg_query__alter_domain_stmt__get_packed_size (const PgQuery__AlterDomainStmt *message) { assert(message->base.descriptor == &pg_query__alter_domain_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_domain_stmt__pack (const PgQuery__AlterDomainStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_domain_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_domain_stmt__pack_to_buffer (const PgQuery__AlterDomainStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_domain_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterDomainStmt * pg_query__alter_domain_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterDomainStmt *) protobuf_c_message_unpack (&pg_query__alter_domain_stmt__descriptor, allocator, len, data); } void pg_query__alter_domain_stmt__free_unpacked (PgQuery__AlterDomainStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_domain_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__set_operation_stmt__init (PgQuery__SetOperationStmt *message) { static const PgQuery__SetOperationStmt init_value = PG_QUERY__SET_OPERATION_STMT__INIT; *message = init_value; } size_t pg_query__set_operation_stmt__get_packed_size (const PgQuery__SetOperationStmt *message) { assert(message->base.descriptor == &pg_query__set_operation_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__set_operation_stmt__pack (const PgQuery__SetOperationStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__set_operation_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__set_operation_stmt__pack_to_buffer (const PgQuery__SetOperationStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__set_operation_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SetOperationStmt * pg_query__set_operation_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SetOperationStmt *) protobuf_c_message_unpack (&pg_query__set_operation_stmt__descriptor, allocator, len, data); } void pg_query__set_operation_stmt__free_unpacked (PgQuery__SetOperationStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__set_operation_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__grant_stmt__init (PgQuery__GrantStmt *message) { static const PgQuery__GrantStmt init_value = PG_QUERY__GRANT_STMT__INIT; *message = init_value; } size_t pg_query__grant_stmt__get_packed_size (const PgQuery__GrantStmt *message) { assert(message->base.descriptor == &pg_query__grant_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__grant_stmt__pack (const PgQuery__GrantStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__grant_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__grant_stmt__pack_to_buffer (const PgQuery__GrantStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__grant_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__GrantStmt * pg_query__grant_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__GrantStmt *) protobuf_c_message_unpack (&pg_query__grant_stmt__descriptor, allocator, len, data); } void pg_query__grant_stmt__free_unpacked (PgQuery__GrantStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__grant_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__grant_role_stmt__init (PgQuery__GrantRoleStmt *message) { static const PgQuery__GrantRoleStmt init_value = PG_QUERY__GRANT_ROLE_STMT__INIT; *message = init_value; } size_t pg_query__grant_role_stmt__get_packed_size (const PgQuery__GrantRoleStmt *message) { assert(message->base.descriptor == &pg_query__grant_role_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__grant_role_stmt__pack (const PgQuery__GrantRoleStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__grant_role_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__grant_role_stmt__pack_to_buffer (const PgQuery__GrantRoleStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__grant_role_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__GrantRoleStmt * pg_query__grant_role_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__GrantRoleStmt *) protobuf_c_message_unpack (&pg_query__grant_role_stmt__descriptor, allocator, len, data); } void pg_query__grant_role_stmt__free_unpacked (PgQuery__GrantRoleStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__grant_role_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_default_privileges_stmt__init (PgQuery__AlterDefaultPrivilegesStmt *message) { static const PgQuery__AlterDefaultPrivilegesStmt init_value = PG_QUERY__ALTER_DEFAULT_PRIVILEGES_STMT__INIT; *message = init_value; } size_t pg_query__alter_default_privileges_stmt__get_packed_size (const PgQuery__AlterDefaultPrivilegesStmt *message) { assert(message->base.descriptor == &pg_query__alter_default_privileges_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_default_privileges_stmt__pack (const PgQuery__AlterDefaultPrivilegesStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_default_privileges_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_default_privileges_stmt__pack_to_buffer (const PgQuery__AlterDefaultPrivilegesStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_default_privileges_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterDefaultPrivilegesStmt * pg_query__alter_default_privileges_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterDefaultPrivilegesStmt *) protobuf_c_message_unpack (&pg_query__alter_default_privileges_stmt__descriptor, allocator, len, data); } void pg_query__alter_default_privileges_stmt__free_unpacked (PgQuery__AlterDefaultPrivilegesStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_default_privileges_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__close_portal_stmt__init (PgQuery__ClosePortalStmt *message) { static const PgQuery__ClosePortalStmt init_value = PG_QUERY__CLOSE_PORTAL_STMT__INIT; *message = init_value; } size_t pg_query__close_portal_stmt__get_packed_size (const PgQuery__ClosePortalStmt *message) { assert(message->base.descriptor == &pg_query__close_portal_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__close_portal_stmt__pack (const PgQuery__ClosePortalStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__close_portal_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__close_portal_stmt__pack_to_buffer (const PgQuery__ClosePortalStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__close_portal_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ClosePortalStmt * pg_query__close_portal_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ClosePortalStmt *) protobuf_c_message_unpack (&pg_query__close_portal_stmt__descriptor, allocator, len, data); } void pg_query__close_portal_stmt__free_unpacked (PgQuery__ClosePortalStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__close_portal_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__cluster_stmt__init (PgQuery__ClusterStmt *message) { static const PgQuery__ClusterStmt init_value = PG_QUERY__CLUSTER_STMT__INIT; *message = init_value; } size_t pg_query__cluster_stmt__get_packed_size (const PgQuery__ClusterStmt *message) { assert(message->base.descriptor == &pg_query__cluster_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__cluster_stmt__pack (const PgQuery__ClusterStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__cluster_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__cluster_stmt__pack_to_buffer (const PgQuery__ClusterStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__cluster_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ClusterStmt * pg_query__cluster_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ClusterStmt *) protobuf_c_message_unpack (&pg_query__cluster_stmt__descriptor, allocator, len, data); } void pg_query__cluster_stmt__free_unpacked (PgQuery__ClusterStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__cluster_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__copy_stmt__init (PgQuery__CopyStmt *message) { static const PgQuery__CopyStmt init_value = PG_QUERY__COPY_STMT__INIT; *message = init_value; } size_t pg_query__copy_stmt__get_packed_size (const PgQuery__CopyStmt *message) { assert(message->base.descriptor == &pg_query__copy_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__copy_stmt__pack (const PgQuery__CopyStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__copy_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__copy_stmt__pack_to_buffer (const PgQuery__CopyStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__copy_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CopyStmt * pg_query__copy_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CopyStmt *) protobuf_c_message_unpack (&pg_query__copy_stmt__descriptor, allocator, len, data); } void pg_query__copy_stmt__free_unpacked (PgQuery__CopyStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__copy_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_stmt__init (PgQuery__CreateStmt *message) { static const PgQuery__CreateStmt init_value = PG_QUERY__CREATE_STMT__INIT; *message = init_value; } size_t pg_query__create_stmt__get_packed_size (const PgQuery__CreateStmt *message) { assert(message->base.descriptor == &pg_query__create_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_stmt__pack (const PgQuery__CreateStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_stmt__pack_to_buffer (const PgQuery__CreateStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateStmt * pg_query__create_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateStmt *) protobuf_c_message_unpack (&pg_query__create_stmt__descriptor, allocator, len, data); } void pg_query__create_stmt__free_unpacked (PgQuery__CreateStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__define_stmt__init (PgQuery__DefineStmt *message) { static const PgQuery__DefineStmt init_value = PG_QUERY__DEFINE_STMT__INIT; *message = init_value; } size_t pg_query__define_stmt__get_packed_size (const PgQuery__DefineStmt *message) { assert(message->base.descriptor == &pg_query__define_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__define_stmt__pack (const PgQuery__DefineStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__define_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__define_stmt__pack_to_buffer (const PgQuery__DefineStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__define_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DefineStmt * pg_query__define_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DefineStmt *) protobuf_c_message_unpack (&pg_query__define_stmt__descriptor, allocator, len, data); } void pg_query__define_stmt__free_unpacked (PgQuery__DefineStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__define_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__drop_stmt__init (PgQuery__DropStmt *message) { static const PgQuery__DropStmt init_value = PG_QUERY__DROP_STMT__INIT; *message = init_value; } size_t pg_query__drop_stmt__get_packed_size (const PgQuery__DropStmt *message) { assert(message->base.descriptor == &pg_query__drop_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__drop_stmt__pack (const PgQuery__DropStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__drop_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__drop_stmt__pack_to_buffer (const PgQuery__DropStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__drop_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DropStmt * pg_query__drop_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DropStmt *) protobuf_c_message_unpack (&pg_query__drop_stmt__descriptor, allocator, len, data); } void pg_query__drop_stmt__free_unpacked (PgQuery__DropStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__drop_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__truncate_stmt__init (PgQuery__TruncateStmt *message) { static const PgQuery__TruncateStmt init_value = PG_QUERY__TRUNCATE_STMT__INIT; *message = init_value; } size_t pg_query__truncate_stmt__get_packed_size (const PgQuery__TruncateStmt *message) { assert(message->base.descriptor == &pg_query__truncate_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__truncate_stmt__pack (const PgQuery__TruncateStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__truncate_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__truncate_stmt__pack_to_buffer (const PgQuery__TruncateStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__truncate_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__TruncateStmt * pg_query__truncate_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__TruncateStmt *) protobuf_c_message_unpack (&pg_query__truncate_stmt__descriptor, allocator, len, data); } void pg_query__truncate_stmt__free_unpacked (PgQuery__TruncateStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__truncate_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__comment_stmt__init (PgQuery__CommentStmt *message) { static const PgQuery__CommentStmt init_value = PG_QUERY__COMMENT_STMT__INIT; *message = init_value; } size_t pg_query__comment_stmt__get_packed_size (const PgQuery__CommentStmt *message) { assert(message->base.descriptor == &pg_query__comment_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__comment_stmt__pack (const PgQuery__CommentStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__comment_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__comment_stmt__pack_to_buffer (const PgQuery__CommentStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__comment_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CommentStmt * pg_query__comment_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CommentStmt *) protobuf_c_message_unpack (&pg_query__comment_stmt__descriptor, allocator, len, data); } void pg_query__comment_stmt__free_unpacked (PgQuery__CommentStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__comment_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__fetch_stmt__init (PgQuery__FetchStmt *message) { static const PgQuery__FetchStmt init_value = PG_QUERY__FETCH_STMT__INIT; *message = init_value; } size_t pg_query__fetch_stmt__get_packed_size (const PgQuery__FetchStmt *message) { assert(message->base.descriptor == &pg_query__fetch_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__fetch_stmt__pack (const PgQuery__FetchStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__fetch_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__fetch_stmt__pack_to_buffer (const PgQuery__FetchStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__fetch_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__FetchStmt * pg_query__fetch_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__FetchStmt *) protobuf_c_message_unpack (&pg_query__fetch_stmt__descriptor, allocator, len, data); } void pg_query__fetch_stmt__free_unpacked (PgQuery__FetchStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__fetch_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__index_stmt__init (PgQuery__IndexStmt *message) { static const PgQuery__IndexStmt init_value = PG_QUERY__INDEX_STMT__INIT; *message = init_value; } size_t pg_query__index_stmt__get_packed_size (const PgQuery__IndexStmt *message) { assert(message->base.descriptor == &pg_query__index_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__index_stmt__pack (const PgQuery__IndexStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__index_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__index_stmt__pack_to_buffer (const PgQuery__IndexStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__index_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__IndexStmt * pg_query__index_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__IndexStmt *) protobuf_c_message_unpack (&pg_query__index_stmt__descriptor, allocator, len, data); } void pg_query__index_stmt__free_unpacked (PgQuery__IndexStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__index_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_function_stmt__init (PgQuery__CreateFunctionStmt *message) { static const PgQuery__CreateFunctionStmt init_value = PG_QUERY__CREATE_FUNCTION_STMT__INIT; *message = init_value; } size_t pg_query__create_function_stmt__get_packed_size (const PgQuery__CreateFunctionStmt *message) { assert(message->base.descriptor == &pg_query__create_function_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_function_stmt__pack (const PgQuery__CreateFunctionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_function_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_function_stmt__pack_to_buffer (const PgQuery__CreateFunctionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_function_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateFunctionStmt * pg_query__create_function_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateFunctionStmt *) protobuf_c_message_unpack (&pg_query__create_function_stmt__descriptor, allocator, len, data); } void pg_query__create_function_stmt__free_unpacked (PgQuery__CreateFunctionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_function_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_function_stmt__init (PgQuery__AlterFunctionStmt *message) { static const PgQuery__AlterFunctionStmt init_value = PG_QUERY__ALTER_FUNCTION_STMT__INIT; *message = init_value; } size_t pg_query__alter_function_stmt__get_packed_size (const PgQuery__AlterFunctionStmt *message) { assert(message->base.descriptor == &pg_query__alter_function_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_function_stmt__pack (const PgQuery__AlterFunctionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_function_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_function_stmt__pack_to_buffer (const PgQuery__AlterFunctionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_function_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterFunctionStmt * pg_query__alter_function_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterFunctionStmt *) protobuf_c_message_unpack (&pg_query__alter_function_stmt__descriptor, allocator, len, data); } void pg_query__alter_function_stmt__free_unpacked (PgQuery__AlterFunctionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_function_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__do_stmt__init (PgQuery__DoStmt *message) { static const PgQuery__DoStmt init_value = PG_QUERY__DO_STMT__INIT; *message = init_value; } size_t pg_query__do_stmt__get_packed_size (const PgQuery__DoStmt *message) { assert(message->base.descriptor == &pg_query__do_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__do_stmt__pack (const PgQuery__DoStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__do_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__do_stmt__pack_to_buffer (const PgQuery__DoStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__do_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DoStmt * pg_query__do_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DoStmt *) protobuf_c_message_unpack (&pg_query__do_stmt__descriptor, allocator, len, data); } void pg_query__do_stmt__free_unpacked (PgQuery__DoStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__do_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__rename_stmt__init (PgQuery__RenameStmt *message) { static const PgQuery__RenameStmt init_value = PG_QUERY__RENAME_STMT__INIT; *message = init_value; } size_t pg_query__rename_stmt__get_packed_size (const PgQuery__RenameStmt *message) { assert(message->base.descriptor == &pg_query__rename_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__rename_stmt__pack (const PgQuery__RenameStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__rename_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__rename_stmt__pack_to_buffer (const PgQuery__RenameStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__rename_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RenameStmt * pg_query__rename_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RenameStmt *) protobuf_c_message_unpack (&pg_query__rename_stmt__descriptor, allocator, len, data); } void pg_query__rename_stmt__free_unpacked (PgQuery__RenameStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__rename_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__rule_stmt__init (PgQuery__RuleStmt *message) { static const PgQuery__RuleStmt init_value = PG_QUERY__RULE_STMT__INIT; *message = init_value; } size_t pg_query__rule_stmt__get_packed_size (const PgQuery__RuleStmt *message) { assert(message->base.descriptor == &pg_query__rule_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__rule_stmt__pack (const PgQuery__RuleStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__rule_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__rule_stmt__pack_to_buffer (const PgQuery__RuleStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__rule_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RuleStmt * pg_query__rule_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RuleStmt *) protobuf_c_message_unpack (&pg_query__rule_stmt__descriptor, allocator, len, data); } void pg_query__rule_stmt__free_unpacked (PgQuery__RuleStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__rule_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__notify_stmt__init (PgQuery__NotifyStmt *message) { static const PgQuery__NotifyStmt init_value = PG_QUERY__NOTIFY_STMT__INIT; *message = init_value; } size_t pg_query__notify_stmt__get_packed_size (const PgQuery__NotifyStmt *message) { assert(message->base.descriptor == &pg_query__notify_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__notify_stmt__pack (const PgQuery__NotifyStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__notify_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__notify_stmt__pack_to_buffer (const PgQuery__NotifyStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__notify_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__NotifyStmt * pg_query__notify_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__NotifyStmt *) protobuf_c_message_unpack (&pg_query__notify_stmt__descriptor, allocator, len, data); } void pg_query__notify_stmt__free_unpacked (PgQuery__NotifyStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__notify_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__listen_stmt__init (PgQuery__ListenStmt *message) { static const PgQuery__ListenStmt init_value = PG_QUERY__LISTEN_STMT__INIT; *message = init_value; } size_t pg_query__listen_stmt__get_packed_size (const PgQuery__ListenStmt *message) { assert(message->base.descriptor == &pg_query__listen_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__listen_stmt__pack (const PgQuery__ListenStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__listen_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__listen_stmt__pack_to_buffer (const PgQuery__ListenStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__listen_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ListenStmt * pg_query__listen_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ListenStmt *) protobuf_c_message_unpack (&pg_query__listen_stmt__descriptor, allocator, len, data); } void pg_query__listen_stmt__free_unpacked (PgQuery__ListenStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__listen_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__unlisten_stmt__init (PgQuery__UnlistenStmt *message) { static const PgQuery__UnlistenStmt init_value = PG_QUERY__UNLISTEN_STMT__INIT; *message = init_value; } size_t pg_query__unlisten_stmt__get_packed_size (const PgQuery__UnlistenStmt *message) { assert(message->base.descriptor == &pg_query__unlisten_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__unlisten_stmt__pack (const PgQuery__UnlistenStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__unlisten_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__unlisten_stmt__pack_to_buffer (const PgQuery__UnlistenStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__unlisten_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__UnlistenStmt * pg_query__unlisten_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__UnlistenStmt *) protobuf_c_message_unpack (&pg_query__unlisten_stmt__descriptor, allocator, len, data); } void pg_query__unlisten_stmt__free_unpacked (PgQuery__UnlistenStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__unlisten_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__transaction_stmt__init (PgQuery__TransactionStmt *message) { static const PgQuery__TransactionStmt init_value = PG_QUERY__TRANSACTION_STMT__INIT; *message = init_value; } size_t pg_query__transaction_stmt__get_packed_size (const PgQuery__TransactionStmt *message) { assert(message->base.descriptor == &pg_query__transaction_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__transaction_stmt__pack (const PgQuery__TransactionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__transaction_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__transaction_stmt__pack_to_buffer (const PgQuery__TransactionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__transaction_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__TransactionStmt * pg_query__transaction_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__TransactionStmt *) protobuf_c_message_unpack (&pg_query__transaction_stmt__descriptor, allocator, len, data); } void pg_query__transaction_stmt__free_unpacked (PgQuery__TransactionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__transaction_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__view_stmt__init (PgQuery__ViewStmt *message) { static const PgQuery__ViewStmt init_value = PG_QUERY__VIEW_STMT__INIT; *message = init_value; } size_t pg_query__view_stmt__get_packed_size (const PgQuery__ViewStmt *message) { assert(message->base.descriptor == &pg_query__view_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__view_stmt__pack (const PgQuery__ViewStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__view_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__view_stmt__pack_to_buffer (const PgQuery__ViewStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__view_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ViewStmt * pg_query__view_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ViewStmt *) protobuf_c_message_unpack (&pg_query__view_stmt__descriptor, allocator, len, data); } void pg_query__view_stmt__free_unpacked (PgQuery__ViewStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__view_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__load_stmt__init (PgQuery__LoadStmt *message) { static const PgQuery__LoadStmt init_value = PG_QUERY__LOAD_STMT__INIT; *message = init_value; } size_t pg_query__load_stmt__get_packed_size (const PgQuery__LoadStmt *message) { assert(message->base.descriptor == &pg_query__load_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__load_stmt__pack (const PgQuery__LoadStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__load_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__load_stmt__pack_to_buffer (const PgQuery__LoadStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__load_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__LoadStmt * pg_query__load_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__LoadStmt *) protobuf_c_message_unpack (&pg_query__load_stmt__descriptor, allocator, len, data); } void pg_query__load_stmt__free_unpacked (PgQuery__LoadStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__load_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_domain_stmt__init (PgQuery__CreateDomainStmt *message) { static const PgQuery__CreateDomainStmt init_value = PG_QUERY__CREATE_DOMAIN_STMT__INIT; *message = init_value; } size_t pg_query__create_domain_stmt__get_packed_size (const PgQuery__CreateDomainStmt *message) { assert(message->base.descriptor == &pg_query__create_domain_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_domain_stmt__pack (const PgQuery__CreateDomainStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_domain_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_domain_stmt__pack_to_buffer (const PgQuery__CreateDomainStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_domain_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateDomainStmt * pg_query__create_domain_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateDomainStmt *) protobuf_c_message_unpack (&pg_query__create_domain_stmt__descriptor, allocator, len, data); } void pg_query__create_domain_stmt__free_unpacked (PgQuery__CreateDomainStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_domain_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__createdb_stmt__init (PgQuery__CreatedbStmt *message) { static const PgQuery__CreatedbStmt init_value = PG_QUERY__CREATEDB_STMT__INIT; *message = init_value; } size_t pg_query__createdb_stmt__get_packed_size (const PgQuery__CreatedbStmt *message) { assert(message->base.descriptor == &pg_query__createdb_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__createdb_stmt__pack (const PgQuery__CreatedbStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__createdb_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__createdb_stmt__pack_to_buffer (const PgQuery__CreatedbStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__createdb_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreatedbStmt * pg_query__createdb_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreatedbStmt *) protobuf_c_message_unpack (&pg_query__createdb_stmt__descriptor, allocator, len, data); } void pg_query__createdb_stmt__free_unpacked (PgQuery__CreatedbStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__createdb_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__dropdb_stmt__init (PgQuery__DropdbStmt *message) { static const PgQuery__DropdbStmt init_value = PG_QUERY__DROPDB_STMT__INIT; *message = init_value; } size_t pg_query__dropdb_stmt__get_packed_size (const PgQuery__DropdbStmt *message) { assert(message->base.descriptor == &pg_query__dropdb_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__dropdb_stmt__pack (const PgQuery__DropdbStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__dropdb_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__dropdb_stmt__pack_to_buffer (const PgQuery__DropdbStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__dropdb_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DropdbStmt * pg_query__dropdb_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DropdbStmt *) protobuf_c_message_unpack (&pg_query__dropdb_stmt__descriptor, allocator, len, data); } void pg_query__dropdb_stmt__free_unpacked (PgQuery__DropdbStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__dropdb_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__vacuum_stmt__init (PgQuery__VacuumStmt *message) { static const PgQuery__VacuumStmt init_value = PG_QUERY__VACUUM_STMT__INIT; *message = init_value; } size_t pg_query__vacuum_stmt__get_packed_size (const PgQuery__VacuumStmt *message) { assert(message->base.descriptor == &pg_query__vacuum_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__vacuum_stmt__pack (const PgQuery__VacuumStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__vacuum_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__vacuum_stmt__pack_to_buffer (const PgQuery__VacuumStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__vacuum_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__VacuumStmt * pg_query__vacuum_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__VacuumStmt *) protobuf_c_message_unpack (&pg_query__vacuum_stmt__descriptor, allocator, len, data); } void pg_query__vacuum_stmt__free_unpacked (PgQuery__VacuumStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__vacuum_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__explain_stmt__init (PgQuery__ExplainStmt *message) { static const PgQuery__ExplainStmt init_value = PG_QUERY__EXPLAIN_STMT__INIT; *message = init_value; } size_t pg_query__explain_stmt__get_packed_size (const PgQuery__ExplainStmt *message) { assert(message->base.descriptor == &pg_query__explain_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__explain_stmt__pack (const PgQuery__ExplainStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__explain_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__explain_stmt__pack_to_buffer (const PgQuery__ExplainStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__explain_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ExplainStmt * pg_query__explain_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ExplainStmt *) protobuf_c_message_unpack (&pg_query__explain_stmt__descriptor, allocator, len, data); } void pg_query__explain_stmt__free_unpacked (PgQuery__ExplainStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__explain_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_table_as_stmt__init (PgQuery__CreateTableAsStmt *message) { static const PgQuery__CreateTableAsStmt init_value = PG_QUERY__CREATE_TABLE_AS_STMT__INIT; *message = init_value; } size_t pg_query__create_table_as_stmt__get_packed_size (const PgQuery__CreateTableAsStmt *message) { assert(message->base.descriptor == &pg_query__create_table_as_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_table_as_stmt__pack (const PgQuery__CreateTableAsStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_table_as_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_table_as_stmt__pack_to_buffer (const PgQuery__CreateTableAsStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_table_as_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateTableAsStmt * pg_query__create_table_as_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateTableAsStmt *) protobuf_c_message_unpack (&pg_query__create_table_as_stmt__descriptor, allocator, len, data); } void pg_query__create_table_as_stmt__free_unpacked (PgQuery__CreateTableAsStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_table_as_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_seq_stmt__init (PgQuery__CreateSeqStmt *message) { static const PgQuery__CreateSeqStmt init_value = PG_QUERY__CREATE_SEQ_STMT__INIT; *message = init_value; } size_t pg_query__create_seq_stmt__get_packed_size (const PgQuery__CreateSeqStmt *message) { assert(message->base.descriptor == &pg_query__create_seq_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_seq_stmt__pack (const PgQuery__CreateSeqStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_seq_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_seq_stmt__pack_to_buffer (const PgQuery__CreateSeqStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_seq_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateSeqStmt * pg_query__create_seq_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateSeqStmt *) protobuf_c_message_unpack (&pg_query__create_seq_stmt__descriptor, allocator, len, data); } void pg_query__create_seq_stmt__free_unpacked (PgQuery__CreateSeqStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_seq_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_seq_stmt__init (PgQuery__AlterSeqStmt *message) { static const PgQuery__AlterSeqStmt init_value = PG_QUERY__ALTER_SEQ_STMT__INIT; *message = init_value; } size_t pg_query__alter_seq_stmt__get_packed_size (const PgQuery__AlterSeqStmt *message) { assert(message->base.descriptor == &pg_query__alter_seq_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_seq_stmt__pack (const PgQuery__AlterSeqStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_seq_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_seq_stmt__pack_to_buffer (const PgQuery__AlterSeqStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_seq_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterSeqStmt * pg_query__alter_seq_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterSeqStmt *) protobuf_c_message_unpack (&pg_query__alter_seq_stmt__descriptor, allocator, len, data); } void pg_query__alter_seq_stmt__free_unpacked (PgQuery__AlterSeqStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_seq_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__variable_set_stmt__init (PgQuery__VariableSetStmt *message) { static const PgQuery__VariableSetStmt init_value = PG_QUERY__VARIABLE_SET_STMT__INIT; *message = init_value; } size_t pg_query__variable_set_stmt__get_packed_size (const PgQuery__VariableSetStmt *message) { assert(message->base.descriptor == &pg_query__variable_set_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__variable_set_stmt__pack (const PgQuery__VariableSetStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__variable_set_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__variable_set_stmt__pack_to_buffer (const PgQuery__VariableSetStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__variable_set_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__VariableSetStmt * pg_query__variable_set_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__VariableSetStmt *) protobuf_c_message_unpack (&pg_query__variable_set_stmt__descriptor, allocator, len, data); } void pg_query__variable_set_stmt__free_unpacked (PgQuery__VariableSetStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__variable_set_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__variable_show_stmt__init (PgQuery__VariableShowStmt *message) { static const PgQuery__VariableShowStmt init_value = PG_QUERY__VARIABLE_SHOW_STMT__INIT; *message = init_value; } size_t pg_query__variable_show_stmt__get_packed_size (const PgQuery__VariableShowStmt *message) { assert(message->base.descriptor == &pg_query__variable_show_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__variable_show_stmt__pack (const PgQuery__VariableShowStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__variable_show_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__variable_show_stmt__pack_to_buffer (const PgQuery__VariableShowStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__variable_show_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__VariableShowStmt * pg_query__variable_show_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__VariableShowStmt *) protobuf_c_message_unpack (&pg_query__variable_show_stmt__descriptor, allocator, len, data); } void pg_query__variable_show_stmt__free_unpacked (PgQuery__VariableShowStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__variable_show_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__discard_stmt__init (PgQuery__DiscardStmt *message) { static const PgQuery__DiscardStmt init_value = PG_QUERY__DISCARD_STMT__INIT; *message = init_value; } size_t pg_query__discard_stmt__get_packed_size (const PgQuery__DiscardStmt *message) { assert(message->base.descriptor == &pg_query__discard_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__discard_stmt__pack (const PgQuery__DiscardStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__discard_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__discard_stmt__pack_to_buffer (const PgQuery__DiscardStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__discard_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DiscardStmt * pg_query__discard_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DiscardStmt *) protobuf_c_message_unpack (&pg_query__discard_stmt__descriptor, allocator, len, data); } void pg_query__discard_stmt__free_unpacked (PgQuery__DiscardStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__discard_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_trig_stmt__init (PgQuery__CreateTrigStmt *message) { static const PgQuery__CreateTrigStmt init_value = PG_QUERY__CREATE_TRIG_STMT__INIT; *message = init_value; } size_t pg_query__create_trig_stmt__get_packed_size (const PgQuery__CreateTrigStmt *message) { assert(message->base.descriptor == &pg_query__create_trig_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_trig_stmt__pack (const PgQuery__CreateTrigStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_trig_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_trig_stmt__pack_to_buffer (const PgQuery__CreateTrigStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_trig_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateTrigStmt * pg_query__create_trig_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateTrigStmt *) protobuf_c_message_unpack (&pg_query__create_trig_stmt__descriptor, allocator, len, data); } void pg_query__create_trig_stmt__free_unpacked (PgQuery__CreateTrigStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_trig_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_plang_stmt__init (PgQuery__CreatePLangStmt *message) { static const PgQuery__CreatePLangStmt init_value = PG_QUERY__CREATE_PLANG_STMT__INIT; *message = init_value; } size_t pg_query__create_plang_stmt__get_packed_size (const PgQuery__CreatePLangStmt *message) { assert(message->base.descriptor == &pg_query__create_plang_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_plang_stmt__pack (const PgQuery__CreatePLangStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_plang_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_plang_stmt__pack_to_buffer (const PgQuery__CreatePLangStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_plang_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreatePLangStmt * pg_query__create_plang_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreatePLangStmt *) protobuf_c_message_unpack (&pg_query__create_plang_stmt__descriptor, allocator, len, data); } void pg_query__create_plang_stmt__free_unpacked (PgQuery__CreatePLangStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_plang_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_role_stmt__init (PgQuery__CreateRoleStmt *message) { static const PgQuery__CreateRoleStmt init_value = PG_QUERY__CREATE_ROLE_STMT__INIT; *message = init_value; } size_t pg_query__create_role_stmt__get_packed_size (const PgQuery__CreateRoleStmt *message) { assert(message->base.descriptor == &pg_query__create_role_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_role_stmt__pack (const PgQuery__CreateRoleStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_role_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_role_stmt__pack_to_buffer (const PgQuery__CreateRoleStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_role_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateRoleStmt * pg_query__create_role_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateRoleStmt *) protobuf_c_message_unpack (&pg_query__create_role_stmt__descriptor, allocator, len, data); } void pg_query__create_role_stmt__free_unpacked (PgQuery__CreateRoleStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_role_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_role_stmt__init (PgQuery__AlterRoleStmt *message) { static const PgQuery__AlterRoleStmt init_value = PG_QUERY__ALTER_ROLE_STMT__INIT; *message = init_value; } size_t pg_query__alter_role_stmt__get_packed_size (const PgQuery__AlterRoleStmt *message) { assert(message->base.descriptor == &pg_query__alter_role_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_role_stmt__pack (const PgQuery__AlterRoleStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_role_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_role_stmt__pack_to_buffer (const PgQuery__AlterRoleStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_role_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterRoleStmt * pg_query__alter_role_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterRoleStmt *) protobuf_c_message_unpack (&pg_query__alter_role_stmt__descriptor, allocator, len, data); } void pg_query__alter_role_stmt__free_unpacked (PgQuery__AlterRoleStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_role_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__drop_role_stmt__init (PgQuery__DropRoleStmt *message) { static const PgQuery__DropRoleStmt init_value = PG_QUERY__DROP_ROLE_STMT__INIT; *message = init_value; } size_t pg_query__drop_role_stmt__get_packed_size (const PgQuery__DropRoleStmt *message) { assert(message->base.descriptor == &pg_query__drop_role_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__drop_role_stmt__pack (const PgQuery__DropRoleStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__drop_role_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__drop_role_stmt__pack_to_buffer (const PgQuery__DropRoleStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__drop_role_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DropRoleStmt * pg_query__drop_role_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DropRoleStmt *) protobuf_c_message_unpack (&pg_query__drop_role_stmt__descriptor, allocator, len, data); } void pg_query__drop_role_stmt__free_unpacked (PgQuery__DropRoleStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__drop_role_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__lock_stmt__init (PgQuery__LockStmt *message) { static const PgQuery__LockStmt init_value = PG_QUERY__LOCK_STMT__INIT; *message = init_value; } size_t pg_query__lock_stmt__get_packed_size (const PgQuery__LockStmt *message) { assert(message->base.descriptor == &pg_query__lock_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__lock_stmt__pack (const PgQuery__LockStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__lock_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__lock_stmt__pack_to_buffer (const PgQuery__LockStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__lock_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__LockStmt * pg_query__lock_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__LockStmt *) protobuf_c_message_unpack (&pg_query__lock_stmt__descriptor, allocator, len, data); } void pg_query__lock_stmt__free_unpacked (PgQuery__LockStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__lock_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__constraints_set_stmt__init (PgQuery__ConstraintsSetStmt *message) { static const PgQuery__ConstraintsSetStmt init_value = PG_QUERY__CONSTRAINTS_SET_STMT__INIT; *message = init_value; } size_t pg_query__constraints_set_stmt__get_packed_size (const PgQuery__ConstraintsSetStmt *message) { assert(message->base.descriptor == &pg_query__constraints_set_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__constraints_set_stmt__pack (const PgQuery__ConstraintsSetStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__constraints_set_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__constraints_set_stmt__pack_to_buffer (const PgQuery__ConstraintsSetStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__constraints_set_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ConstraintsSetStmt * pg_query__constraints_set_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ConstraintsSetStmt *) protobuf_c_message_unpack (&pg_query__constraints_set_stmt__descriptor, allocator, len, data); } void pg_query__constraints_set_stmt__free_unpacked (PgQuery__ConstraintsSetStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__constraints_set_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__reindex_stmt__init (PgQuery__ReindexStmt *message) { static const PgQuery__ReindexStmt init_value = PG_QUERY__REINDEX_STMT__INIT; *message = init_value; } size_t pg_query__reindex_stmt__get_packed_size (const PgQuery__ReindexStmt *message) { assert(message->base.descriptor == &pg_query__reindex_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__reindex_stmt__pack (const PgQuery__ReindexStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__reindex_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__reindex_stmt__pack_to_buffer (const PgQuery__ReindexStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__reindex_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ReindexStmt * pg_query__reindex_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ReindexStmt *) protobuf_c_message_unpack (&pg_query__reindex_stmt__descriptor, allocator, len, data); } void pg_query__reindex_stmt__free_unpacked (PgQuery__ReindexStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__reindex_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__check_point_stmt__init (PgQuery__CheckPointStmt *message) { static const PgQuery__CheckPointStmt init_value = PG_QUERY__CHECK_POINT_STMT__INIT; *message = init_value; } size_t pg_query__check_point_stmt__get_packed_size (const PgQuery__CheckPointStmt *message) { assert(message->base.descriptor == &pg_query__check_point_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__check_point_stmt__pack (const PgQuery__CheckPointStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__check_point_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__check_point_stmt__pack_to_buffer (const PgQuery__CheckPointStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__check_point_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CheckPointStmt * pg_query__check_point_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CheckPointStmt *) protobuf_c_message_unpack (&pg_query__check_point_stmt__descriptor, allocator, len, data); } void pg_query__check_point_stmt__free_unpacked (PgQuery__CheckPointStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__check_point_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_schema_stmt__init (PgQuery__CreateSchemaStmt *message) { static const PgQuery__CreateSchemaStmt init_value = PG_QUERY__CREATE_SCHEMA_STMT__INIT; *message = init_value; } size_t pg_query__create_schema_stmt__get_packed_size (const PgQuery__CreateSchemaStmt *message) { assert(message->base.descriptor == &pg_query__create_schema_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_schema_stmt__pack (const PgQuery__CreateSchemaStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_schema_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_schema_stmt__pack_to_buffer (const PgQuery__CreateSchemaStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_schema_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateSchemaStmt * pg_query__create_schema_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateSchemaStmt *) protobuf_c_message_unpack (&pg_query__create_schema_stmt__descriptor, allocator, len, data); } void pg_query__create_schema_stmt__free_unpacked (PgQuery__CreateSchemaStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_schema_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_database_stmt__init (PgQuery__AlterDatabaseStmt *message) { static const PgQuery__AlterDatabaseStmt init_value = PG_QUERY__ALTER_DATABASE_STMT__INIT; *message = init_value; } size_t pg_query__alter_database_stmt__get_packed_size (const PgQuery__AlterDatabaseStmt *message) { assert(message->base.descriptor == &pg_query__alter_database_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_database_stmt__pack (const PgQuery__AlterDatabaseStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_database_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_database_stmt__pack_to_buffer (const PgQuery__AlterDatabaseStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_database_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterDatabaseStmt * pg_query__alter_database_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterDatabaseStmt *) protobuf_c_message_unpack (&pg_query__alter_database_stmt__descriptor, allocator, len, data); } void pg_query__alter_database_stmt__free_unpacked (PgQuery__AlterDatabaseStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_database_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_database_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__alter_role_set_stmt__init (PgQuery__AlterRoleSetStmt *message) { static const PgQuery__AlterRoleSetStmt init_value = PG_QUERY__ALTER_ROLE_SET_STMT__INIT; *message = init_value; } size_t pg_query__alter_role_set_stmt__get_packed_size (const PgQuery__AlterRoleSetStmt *message) { assert(message->base.descriptor == &pg_query__alter_role_set_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_role_set_stmt__pack (const PgQuery__AlterRoleSetStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_role_set_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_role_set_stmt__pack_to_buffer (const PgQuery__AlterRoleSetStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_role_set_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterRoleSetStmt * pg_query__alter_role_set_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterRoleSetStmt *) protobuf_c_message_unpack (&pg_query__alter_role_set_stmt__descriptor, allocator, len, data); } void pg_query__alter_role_set_stmt__free_unpacked (PgQuery__AlterRoleSetStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_role_set_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_conversion_stmt__init (PgQuery__CreateConversionStmt *message) { static const PgQuery__CreateConversionStmt init_value = PG_QUERY__CREATE_CONVERSION_STMT__INIT; *message = init_value; } size_t pg_query__create_conversion_stmt__get_packed_size (const PgQuery__CreateConversionStmt *message) { assert(message->base.descriptor == &pg_query__create_conversion_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_conversion_stmt__pack (const PgQuery__CreateConversionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_conversion_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_conversion_stmt__pack_to_buffer (const PgQuery__CreateConversionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_conversion_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateConversionStmt * pg_query__create_conversion_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateConversionStmt *) protobuf_c_message_unpack (&pg_query__create_conversion_stmt__descriptor, allocator, len, data); } void pg_query__create_conversion_stmt__free_unpacked (PgQuery__CreateConversionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_conversion_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_cast_stmt__init (PgQuery__CreateCastStmt *message) { static const PgQuery__CreateCastStmt init_value = PG_QUERY__CREATE_CAST_STMT__INIT; *message = init_value; } size_t pg_query__create_cast_stmt__get_packed_size (const PgQuery__CreateCastStmt *message) { assert(message->base.descriptor == &pg_query__create_cast_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_cast_stmt__pack (const PgQuery__CreateCastStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_cast_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_cast_stmt__pack_to_buffer (const PgQuery__CreateCastStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_cast_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateCastStmt * pg_query__create_cast_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateCastStmt *) protobuf_c_message_unpack (&pg_query__create_cast_stmt__descriptor, allocator, len, data); } void pg_query__create_cast_stmt__free_unpacked (PgQuery__CreateCastStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_cast_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_op_class_stmt__init (PgQuery__CreateOpClassStmt *message) { static const PgQuery__CreateOpClassStmt init_value = PG_QUERY__CREATE_OP_CLASS_STMT__INIT; *message = init_value; } size_t pg_query__create_op_class_stmt__get_packed_size (const PgQuery__CreateOpClassStmt *message) { assert(message->base.descriptor == &pg_query__create_op_class_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_op_class_stmt__pack (const PgQuery__CreateOpClassStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_op_class_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_op_class_stmt__pack_to_buffer (const PgQuery__CreateOpClassStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_op_class_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateOpClassStmt * pg_query__create_op_class_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateOpClassStmt *) protobuf_c_message_unpack (&pg_query__create_op_class_stmt__descriptor, allocator, len, data); } void pg_query__create_op_class_stmt__free_unpacked (PgQuery__CreateOpClassStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_op_class_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_op_family_stmt__init (PgQuery__CreateOpFamilyStmt *message) { static const PgQuery__CreateOpFamilyStmt init_value = PG_QUERY__CREATE_OP_FAMILY_STMT__INIT; *message = init_value; } size_t pg_query__create_op_family_stmt__get_packed_size (const PgQuery__CreateOpFamilyStmt *message) { assert(message->base.descriptor == &pg_query__create_op_family_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_op_family_stmt__pack (const PgQuery__CreateOpFamilyStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_op_family_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_op_family_stmt__pack_to_buffer (const PgQuery__CreateOpFamilyStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_op_family_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateOpFamilyStmt * pg_query__create_op_family_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateOpFamilyStmt *) protobuf_c_message_unpack (&pg_query__create_op_family_stmt__descriptor, allocator, len, data); } void pg_query__create_op_family_stmt__free_unpacked (PgQuery__CreateOpFamilyStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_op_family_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_op_family_stmt__init (PgQuery__AlterOpFamilyStmt *message) { static const PgQuery__AlterOpFamilyStmt init_value = PG_QUERY__ALTER_OP_FAMILY_STMT__INIT; *message = init_value; } size_t pg_query__alter_op_family_stmt__get_packed_size (const PgQuery__AlterOpFamilyStmt *message) { assert(message->base.descriptor == &pg_query__alter_op_family_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_op_family_stmt__pack (const PgQuery__AlterOpFamilyStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_op_family_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_op_family_stmt__pack_to_buffer (const PgQuery__AlterOpFamilyStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_op_family_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterOpFamilyStmt * pg_query__alter_op_family_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterOpFamilyStmt *) protobuf_c_message_unpack (&pg_query__alter_op_family_stmt__descriptor, allocator, len, data); } void pg_query__alter_op_family_stmt__free_unpacked (PgQuery__AlterOpFamilyStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_op_family_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__prepare_stmt__init (PgQuery__PrepareStmt *message) { static const PgQuery__PrepareStmt init_value = PG_QUERY__PREPARE_STMT__INIT; *message = init_value; } size_t pg_query__prepare_stmt__get_packed_size (const PgQuery__PrepareStmt *message) { assert(message->base.descriptor == &pg_query__prepare_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__prepare_stmt__pack (const PgQuery__PrepareStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__prepare_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__prepare_stmt__pack_to_buffer (const PgQuery__PrepareStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__prepare_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__PrepareStmt * pg_query__prepare_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__PrepareStmt *) protobuf_c_message_unpack (&pg_query__prepare_stmt__descriptor, allocator, len, data); } void pg_query__prepare_stmt__free_unpacked (PgQuery__PrepareStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__prepare_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__execute_stmt__init (PgQuery__ExecuteStmt *message) { static const PgQuery__ExecuteStmt init_value = PG_QUERY__EXECUTE_STMT__INIT; *message = init_value; } size_t pg_query__execute_stmt__get_packed_size (const PgQuery__ExecuteStmt *message) { assert(message->base.descriptor == &pg_query__execute_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__execute_stmt__pack (const PgQuery__ExecuteStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__execute_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__execute_stmt__pack_to_buffer (const PgQuery__ExecuteStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__execute_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ExecuteStmt * pg_query__execute_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ExecuteStmt *) protobuf_c_message_unpack (&pg_query__execute_stmt__descriptor, allocator, len, data); } void pg_query__execute_stmt__free_unpacked (PgQuery__ExecuteStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__execute_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__deallocate_stmt__init (PgQuery__DeallocateStmt *message) { static const PgQuery__DeallocateStmt init_value = PG_QUERY__DEALLOCATE_STMT__INIT; *message = init_value; } size_t pg_query__deallocate_stmt__get_packed_size (const PgQuery__DeallocateStmt *message) { assert(message->base.descriptor == &pg_query__deallocate_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__deallocate_stmt__pack (const PgQuery__DeallocateStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__deallocate_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__deallocate_stmt__pack_to_buffer (const PgQuery__DeallocateStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__deallocate_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DeallocateStmt * pg_query__deallocate_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DeallocateStmt *) protobuf_c_message_unpack (&pg_query__deallocate_stmt__descriptor, allocator, len, data); } void pg_query__deallocate_stmt__free_unpacked (PgQuery__DeallocateStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__deallocate_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__declare_cursor_stmt__init (PgQuery__DeclareCursorStmt *message) { static const PgQuery__DeclareCursorStmt init_value = PG_QUERY__DECLARE_CURSOR_STMT__INIT; *message = init_value; } size_t pg_query__declare_cursor_stmt__get_packed_size (const PgQuery__DeclareCursorStmt *message) { assert(message->base.descriptor == &pg_query__declare_cursor_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__declare_cursor_stmt__pack (const PgQuery__DeclareCursorStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__declare_cursor_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__declare_cursor_stmt__pack_to_buffer (const PgQuery__DeclareCursorStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__declare_cursor_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DeclareCursorStmt * pg_query__declare_cursor_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DeclareCursorStmt *) protobuf_c_message_unpack (&pg_query__declare_cursor_stmt__descriptor, allocator, len, data); } void pg_query__declare_cursor_stmt__free_unpacked (PgQuery__DeclareCursorStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__declare_cursor_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_table_space_stmt__init (PgQuery__CreateTableSpaceStmt *message) { static const PgQuery__CreateTableSpaceStmt init_value = PG_QUERY__CREATE_TABLE_SPACE_STMT__INIT; *message = init_value; } size_t pg_query__create_table_space_stmt__get_packed_size (const PgQuery__CreateTableSpaceStmt *message) { assert(message->base.descriptor == &pg_query__create_table_space_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_table_space_stmt__pack (const PgQuery__CreateTableSpaceStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_table_space_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_table_space_stmt__pack_to_buffer (const PgQuery__CreateTableSpaceStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_table_space_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateTableSpaceStmt * pg_query__create_table_space_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateTableSpaceStmt *) protobuf_c_message_unpack (&pg_query__create_table_space_stmt__descriptor, allocator, len, data); } void pg_query__create_table_space_stmt__free_unpacked (PgQuery__CreateTableSpaceStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_table_space_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__drop_table_space_stmt__init (PgQuery__DropTableSpaceStmt *message) { static const PgQuery__DropTableSpaceStmt init_value = PG_QUERY__DROP_TABLE_SPACE_STMT__INIT; *message = init_value; } size_t pg_query__drop_table_space_stmt__get_packed_size (const PgQuery__DropTableSpaceStmt *message) { assert(message->base.descriptor == &pg_query__drop_table_space_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__drop_table_space_stmt__pack (const PgQuery__DropTableSpaceStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__drop_table_space_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__drop_table_space_stmt__pack_to_buffer (const PgQuery__DropTableSpaceStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__drop_table_space_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DropTableSpaceStmt * pg_query__drop_table_space_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DropTableSpaceStmt *) protobuf_c_message_unpack (&pg_query__drop_table_space_stmt__descriptor, allocator, len, data); } void pg_query__drop_table_space_stmt__free_unpacked (PgQuery__DropTableSpaceStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__drop_table_space_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_object_depends_stmt__init (PgQuery__AlterObjectDependsStmt *message) { static const PgQuery__AlterObjectDependsStmt init_value = PG_QUERY__ALTER_OBJECT_DEPENDS_STMT__INIT; *message = init_value; } size_t pg_query__alter_object_depends_stmt__get_packed_size (const PgQuery__AlterObjectDependsStmt *message) { assert(message->base.descriptor == &pg_query__alter_object_depends_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_object_depends_stmt__pack (const PgQuery__AlterObjectDependsStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_object_depends_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_object_depends_stmt__pack_to_buffer (const PgQuery__AlterObjectDependsStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_object_depends_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterObjectDependsStmt * pg_query__alter_object_depends_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterObjectDependsStmt *) protobuf_c_message_unpack (&pg_query__alter_object_depends_stmt__descriptor, allocator, len, data); } void pg_query__alter_object_depends_stmt__free_unpacked (PgQuery__AlterObjectDependsStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_object_depends_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_object_schema_stmt__init (PgQuery__AlterObjectSchemaStmt *message) { static const PgQuery__AlterObjectSchemaStmt init_value = PG_QUERY__ALTER_OBJECT_SCHEMA_STMT__INIT; *message = init_value; } size_t pg_query__alter_object_schema_stmt__get_packed_size (const PgQuery__AlterObjectSchemaStmt *message) { assert(message->base.descriptor == &pg_query__alter_object_schema_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_object_schema_stmt__pack (const PgQuery__AlterObjectSchemaStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_object_schema_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_object_schema_stmt__pack_to_buffer (const PgQuery__AlterObjectSchemaStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_object_schema_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterObjectSchemaStmt * pg_query__alter_object_schema_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterObjectSchemaStmt *) protobuf_c_message_unpack (&pg_query__alter_object_schema_stmt__descriptor, allocator, len, data); } void pg_query__alter_object_schema_stmt__free_unpacked (PgQuery__AlterObjectSchemaStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_object_schema_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_owner_stmt__init (PgQuery__AlterOwnerStmt *message) { static const PgQuery__AlterOwnerStmt init_value = PG_QUERY__ALTER_OWNER_STMT__INIT; *message = init_value; } size_t pg_query__alter_owner_stmt__get_packed_size (const PgQuery__AlterOwnerStmt *message) { assert(message->base.descriptor == &pg_query__alter_owner_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_owner_stmt__pack (const PgQuery__AlterOwnerStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_owner_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_owner_stmt__pack_to_buffer (const PgQuery__AlterOwnerStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_owner_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterOwnerStmt * pg_query__alter_owner_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterOwnerStmt *) protobuf_c_message_unpack (&pg_query__alter_owner_stmt__descriptor, allocator, len, data); } void pg_query__alter_owner_stmt__free_unpacked (PgQuery__AlterOwnerStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_owner_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_operator_stmt__init (PgQuery__AlterOperatorStmt *message) { static const PgQuery__AlterOperatorStmt init_value = PG_QUERY__ALTER_OPERATOR_STMT__INIT; *message = init_value; } size_t pg_query__alter_operator_stmt__get_packed_size (const PgQuery__AlterOperatorStmt *message) { assert(message->base.descriptor == &pg_query__alter_operator_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_operator_stmt__pack (const PgQuery__AlterOperatorStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_operator_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_operator_stmt__pack_to_buffer (const PgQuery__AlterOperatorStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_operator_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterOperatorStmt * pg_query__alter_operator_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterOperatorStmt *) protobuf_c_message_unpack (&pg_query__alter_operator_stmt__descriptor, allocator, len, data); } void pg_query__alter_operator_stmt__free_unpacked (PgQuery__AlterOperatorStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_operator_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_type_stmt__init (PgQuery__AlterTypeStmt *message) { static const PgQuery__AlterTypeStmt init_value = PG_QUERY__ALTER_TYPE_STMT__INIT; *message = init_value; } size_t pg_query__alter_type_stmt__get_packed_size (const PgQuery__AlterTypeStmt *message) { assert(message->base.descriptor == &pg_query__alter_type_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_type_stmt__pack (const PgQuery__AlterTypeStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_type_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_type_stmt__pack_to_buffer (const PgQuery__AlterTypeStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_type_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterTypeStmt * pg_query__alter_type_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterTypeStmt *) protobuf_c_message_unpack (&pg_query__alter_type_stmt__descriptor, allocator, len, data); } void pg_query__alter_type_stmt__free_unpacked (PgQuery__AlterTypeStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_type_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__drop_owned_stmt__init (PgQuery__DropOwnedStmt *message) { static const PgQuery__DropOwnedStmt init_value = PG_QUERY__DROP_OWNED_STMT__INIT; *message = init_value; } size_t pg_query__drop_owned_stmt__get_packed_size (const PgQuery__DropOwnedStmt *message) { assert(message->base.descriptor == &pg_query__drop_owned_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__drop_owned_stmt__pack (const PgQuery__DropOwnedStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__drop_owned_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__drop_owned_stmt__pack_to_buffer (const PgQuery__DropOwnedStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__drop_owned_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DropOwnedStmt * pg_query__drop_owned_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DropOwnedStmt *) protobuf_c_message_unpack (&pg_query__drop_owned_stmt__descriptor, allocator, len, data); } void pg_query__drop_owned_stmt__free_unpacked (PgQuery__DropOwnedStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__drop_owned_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__reassign_owned_stmt__init (PgQuery__ReassignOwnedStmt *message) { static const PgQuery__ReassignOwnedStmt init_value = PG_QUERY__REASSIGN_OWNED_STMT__INIT; *message = init_value; } size_t pg_query__reassign_owned_stmt__get_packed_size (const PgQuery__ReassignOwnedStmt *message) { assert(message->base.descriptor == &pg_query__reassign_owned_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__reassign_owned_stmt__pack (const PgQuery__ReassignOwnedStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__reassign_owned_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__reassign_owned_stmt__pack_to_buffer (const PgQuery__ReassignOwnedStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__reassign_owned_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ReassignOwnedStmt * pg_query__reassign_owned_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ReassignOwnedStmt *) protobuf_c_message_unpack (&pg_query__reassign_owned_stmt__descriptor, allocator, len, data); } void pg_query__reassign_owned_stmt__free_unpacked (PgQuery__ReassignOwnedStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__reassign_owned_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__composite_type_stmt__init (PgQuery__CompositeTypeStmt *message) { static const PgQuery__CompositeTypeStmt init_value = PG_QUERY__COMPOSITE_TYPE_STMT__INIT; *message = init_value; } size_t pg_query__composite_type_stmt__get_packed_size (const PgQuery__CompositeTypeStmt *message) { assert(message->base.descriptor == &pg_query__composite_type_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__composite_type_stmt__pack (const PgQuery__CompositeTypeStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__composite_type_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__composite_type_stmt__pack_to_buffer (const PgQuery__CompositeTypeStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__composite_type_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CompositeTypeStmt * pg_query__composite_type_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CompositeTypeStmt *) protobuf_c_message_unpack (&pg_query__composite_type_stmt__descriptor, allocator, len, data); } void pg_query__composite_type_stmt__free_unpacked (PgQuery__CompositeTypeStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__composite_type_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_enum_stmt__init (PgQuery__CreateEnumStmt *message) { static const PgQuery__CreateEnumStmt init_value = PG_QUERY__CREATE_ENUM_STMT__INIT; *message = init_value; } size_t pg_query__create_enum_stmt__get_packed_size (const PgQuery__CreateEnumStmt *message) { assert(message->base.descriptor == &pg_query__create_enum_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_enum_stmt__pack (const PgQuery__CreateEnumStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_enum_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_enum_stmt__pack_to_buffer (const PgQuery__CreateEnumStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_enum_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateEnumStmt * pg_query__create_enum_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateEnumStmt *) protobuf_c_message_unpack (&pg_query__create_enum_stmt__descriptor, allocator, len, data); } void pg_query__create_enum_stmt__free_unpacked (PgQuery__CreateEnumStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_enum_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_range_stmt__init (PgQuery__CreateRangeStmt *message) { static const PgQuery__CreateRangeStmt init_value = PG_QUERY__CREATE_RANGE_STMT__INIT; *message = init_value; } size_t pg_query__create_range_stmt__get_packed_size (const PgQuery__CreateRangeStmt *message) { assert(message->base.descriptor == &pg_query__create_range_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_range_stmt__pack (const PgQuery__CreateRangeStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_range_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_range_stmt__pack_to_buffer (const PgQuery__CreateRangeStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_range_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateRangeStmt * pg_query__create_range_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateRangeStmt *) protobuf_c_message_unpack (&pg_query__create_range_stmt__descriptor, allocator, len, data); } void pg_query__create_range_stmt__free_unpacked (PgQuery__CreateRangeStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_range_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_enum_stmt__init (PgQuery__AlterEnumStmt *message) { static const PgQuery__AlterEnumStmt init_value = PG_QUERY__ALTER_ENUM_STMT__INIT; *message = init_value; } size_t pg_query__alter_enum_stmt__get_packed_size (const PgQuery__AlterEnumStmt *message) { assert(message->base.descriptor == &pg_query__alter_enum_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_enum_stmt__pack (const PgQuery__AlterEnumStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_enum_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_enum_stmt__pack_to_buffer (const PgQuery__AlterEnumStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_enum_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterEnumStmt * pg_query__alter_enum_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterEnumStmt *) protobuf_c_message_unpack (&pg_query__alter_enum_stmt__descriptor, allocator, len, data); } void pg_query__alter_enum_stmt__free_unpacked (PgQuery__AlterEnumStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_enum_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_tsdictionary_stmt__init (PgQuery__AlterTSDictionaryStmt *message) { static const PgQuery__AlterTSDictionaryStmt init_value = PG_QUERY__ALTER_TSDICTIONARY_STMT__INIT; *message = init_value; } size_t pg_query__alter_tsdictionary_stmt__get_packed_size (const PgQuery__AlterTSDictionaryStmt *message) { assert(message->base.descriptor == &pg_query__alter_tsdictionary_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_tsdictionary_stmt__pack (const PgQuery__AlterTSDictionaryStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_tsdictionary_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_tsdictionary_stmt__pack_to_buffer (const PgQuery__AlterTSDictionaryStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_tsdictionary_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterTSDictionaryStmt * pg_query__alter_tsdictionary_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterTSDictionaryStmt *) protobuf_c_message_unpack (&pg_query__alter_tsdictionary_stmt__descriptor, allocator, len, data); } void pg_query__alter_tsdictionary_stmt__free_unpacked (PgQuery__AlterTSDictionaryStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_tsdictionary_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_tsconfiguration_stmt__init (PgQuery__AlterTSConfigurationStmt *message) { static const PgQuery__AlterTSConfigurationStmt init_value = PG_QUERY__ALTER_TSCONFIGURATION_STMT__INIT; *message = init_value; } size_t pg_query__alter_tsconfiguration_stmt__get_packed_size (const PgQuery__AlterTSConfigurationStmt *message) { assert(message->base.descriptor == &pg_query__alter_tsconfiguration_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_tsconfiguration_stmt__pack (const PgQuery__AlterTSConfigurationStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_tsconfiguration_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_tsconfiguration_stmt__pack_to_buffer (const PgQuery__AlterTSConfigurationStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_tsconfiguration_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterTSConfigurationStmt * pg_query__alter_tsconfiguration_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterTSConfigurationStmt *) protobuf_c_message_unpack (&pg_query__alter_tsconfiguration_stmt__descriptor, allocator, len, data); } void pg_query__alter_tsconfiguration_stmt__free_unpacked (PgQuery__AlterTSConfigurationStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_tsconfiguration_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_fdw_stmt__init (PgQuery__CreateFdwStmt *message) { static const PgQuery__CreateFdwStmt init_value = PG_QUERY__CREATE_FDW_STMT__INIT; *message = init_value; } size_t pg_query__create_fdw_stmt__get_packed_size (const PgQuery__CreateFdwStmt *message) { assert(message->base.descriptor == &pg_query__create_fdw_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_fdw_stmt__pack (const PgQuery__CreateFdwStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_fdw_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_fdw_stmt__pack_to_buffer (const PgQuery__CreateFdwStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_fdw_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateFdwStmt * pg_query__create_fdw_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateFdwStmt *) protobuf_c_message_unpack (&pg_query__create_fdw_stmt__descriptor, allocator, len, data); } void pg_query__create_fdw_stmt__free_unpacked (PgQuery__CreateFdwStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_fdw_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_fdw_stmt__init (PgQuery__AlterFdwStmt *message) { static const PgQuery__AlterFdwStmt init_value = PG_QUERY__ALTER_FDW_STMT__INIT; *message = init_value; } size_t pg_query__alter_fdw_stmt__get_packed_size (const PgQuery__AlterFdwStmt *message) { assert(message->base.descriptor == &pg_query__alter_fdw_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_fdw_stmt__pack (const PgQuery__AlterFdwStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_fdw_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_fdw_stmt__pack_to_buffer (const PgQuery__AlterFdwStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_fdw_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterFdwStmt * pg_query__alter_fdw_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterFdwStmt *) protobuf_c_message_unpack (&pg_query__alter_fdw_stmt__descriptor, allocator, len, data); } void pg_query__alter_fdw_stmt__free_unpacked (PgQuery__AlterFdwStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_fdw_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_foreign_server_stmt__init (PgQuery__CreateForeignServerStmt *message) { static const PgQuery__CreateForeignServerStmt init_value = PG_QUERY__CREATE_FOREIGN_SERVER_STMT__INIT; *message = init_value; } size_t pg_query__create_foreign_server_stmt__get_packed_size (const PgQuery__CreateForeignServerStmt *message) { assert(message->base.descriptor == &pg_query__create_foreign_server_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_foreign_server_stmt__pack (const PgQuery__CreateForeignServerStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_foreign_server_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_foreign_server_stmt__pack_to_buffer (const PgQuery__CreateForeignServerStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_foreign_server_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateForeignServerStmt * pg_query__create_foreign_server_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateForeignServerStmt *) protobuf_c_message_unpack (&pg_query__create_foreign_server_stmt__descriptor, allocator, len, data); } void pg_query__create_foreign_server_stmt__free_unpacked (PgQuery__CreateForeignServerStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_foreign_server_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_foreign_server_stmt__init (PgQuery__AlterForeignServerStmt *message) { static const PgQuery__AlterForeignServerStmt init_value = PG_QUERY__ALTER_FOREIGN_SERVER_STMT__INIT; *message = init_value; } size_t pg_query__alter_foreign_server_stmt__get_packed_size (const PgQuery__AlterForeignServerStmt *message) { assert(message->base.descriptor == &pg_query__alter_foreign_server_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_foreign_server_stmt__pack (const PgQuery__AlterForeignServerStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_foreign_server_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_foreign_server_stmt__pack_to_buffer (const PgQuery__AlterForeignServerStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_foreign_server_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterForeignServerStmt * pg_query__alter_foreign_server_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterForeignServerStmt *) protobuf_c_message_unpack (&pg_query__alter_foreign_server_stmt__descriptor, allocator, len, data); } void pg_query__alter_foreign_server_stmt__free_unpacked (PgQuery__AlterForeignServerStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_foreign_server_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_user_mapping_stmt__init (PgQuery__CreateUserMappingStmt *message) { static const PgQuery__CreateUserMappingStmt init_value = PG_QUERY__CREATE_USER_MAPPING_STMT__INIT; *message = init_value; } size_t pg_query__create_user_mapping_stmt__get_packed_size (const PgQuery__CreateUserMappingStmt *message) { assert(message->base.descriptor == &pg_query__create_user_mapping_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_user_mapping_stmt__pack (const PgQuery__CreateUserMappingStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_user_mapping_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_user_mapping_stmt__pack_to_buffer (const PgQuery__CreateUserMappingStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_user_mapping_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateUserMappingStmt * pg_query__create_user_mapping_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateUserMappingStmt *) protobuf_c_message_unpack (&pg_query__create_user_mapping_stmt__descriptor, allocator, len, data); } void pg_query__create_user_mapping_stmt__free_unpacked (PgQuery__CreateUserMappingStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_user_mapping_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_user_mapping_stmt__init (PgQuery__AlterUserMappingStmt *message) { static const PgQuery__AlterUserMappingStmt init_value = PG_QUERY__ALTER_USER_MAPPING_STMT__INIT; *message = init_value; } size_t pg_query__alter_user_mapping_stmt__get_packed_size (const PgQuery__AlterUserMappingStmt *message) { assert(message->base.descriptor == &pg_query__alter_user_mapping_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_user_mapping_stmt__pack (const PgQuery__AlterUserMappingStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_user_mapping_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_user_mapping_stmt__pack_to_buffer (const PgQuery__AlterUserMappingStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_user_mapping_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterUserMappingStmt * pg_query__alter_user_mapping_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterUserMappingStmt *) protobuf_c_message_unpack (&pg_query__alter_user_mapping_stmt__descriptor, allocator, len, data); } void pg_query__alter_user_mapping_stmt__free_unpacked (PgQuery__AlterUserMappingStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_user_mapping_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__drop_user_mapping_stmt__init (PgQuery__DropUserMappingStmt *message) { static const PgQuery__DropUserMappingStmt init_value = PG_QUERY__DROP_USER_MAPPING_STMT__INIT; *message = init_value; } size_t pg_query__drop_user_mapping_stmt__get_packed_size (const PgQuery__DropUserMappingStmt *message) { assert(message->base.descriptor == &pg_query__drop_user_mapping_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__drop_user_mapping_stmt__pack (const PgQuery__DropUserMappingStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__drop_user_mapping_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__drop_user_mapping_stmt__pack_to_buffer (const PgQuery__DropUserMappingStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__drop_user_mapping_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DropUserMappingStmt * pg_query__drop_user_mapping_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DropUserMappingStmt *) protobuf_c_message_unpack (&pg_query__drop_user_mapping_stmt__descriptor, allocator, len, data); } void pg_query__drop_user_mapping_stmt__free_unpacked (PgQuery__DropUserMappingStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__drop_user_mapping_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_table_space_options_stmt__init (PgQuery__AlterTableSpaceOptionsStmt *message) { static const PgQuery__AlterTableSpaceOptionsStmt init_value = PG_QUERY__ALTER_TABLE_SPACE_OPTIONS_STMT__INIT; *message = init_value; } size_t pg_query__alter_table_space_options_stmt__get_packed_size (const PgQuery__AlterTableSpaceOptionsStmt *message) { assert(message->base.descriptor == &pg_query__alter_table_space_options_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_table_space_options_stmt__pack (const PgQuery__AlterTableSpaceOptionsStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_table_space_options_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_table_space_options_stmt__pack_to_buffer (const PgQuery__AlterTableSpaceOptionsStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_table_space_options_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterTableSpaceOptionsStmt * pg_query__alter_table_space_options_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterTableSpaceOptionsStmt *) protobuf_c_message_unpack (&pg_query__alter_table_space_options_stmt__descriptor, allocator, len, data); } void pg_query__alter_table_space_options_stmt__free_unpacked (PgQuery__AlterTableSpaceOptionsStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_table_space_options_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_table_move_all_stmt__init (PgQuery__AlterTableMoveAllStmt *message) { static const PgQuery__AlterTableMoveAllStmt init_value = PG_QUERY__ALTER_TABLE_MOVE_ALL_STMT__INIT; *message = init_value; } size_t pg_query__alter_table_move_all_stmt__get_packed_size (const PgQuery__AlterTableMoveAllStmt *message) { assert(message->base.descriptor == &pg_query__alter_table_move_all_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_table_move_all_stmt__pack (const PgQuery__AlterTableMoveAllStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_table_move_all_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_table_move_all_stmt__pack_to_buffer (const PgQuery__AlterTableMoveAllStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_table_move_all_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterTableMoveAllStmt * pg_query__alter_table_move_all_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterTableMoveAllStmt *) protobuf_c_message_unpack (&pg_query__alter_table_move_all_stmt__descriptor, allocator, len, data); } void pg_query__alter_table_move_all_stmt__free_unpacked (PgQuery__AlterTableMoveAllStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_table_move_all_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__sec_label_stmt__init (PgQuery__SecLabelStmt *message) { static const PgQuery__SecLabelStmt init_value = PG_QUERY__SEC_LABEL_STMT__INIT; *message = init_value; } size_t pg_query__sec_label_stmt__get_packed_size (const PgQuery__SecLabelStmt *message) { assert(message->base.descriptor == &pg_query__sec_label_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__sec_label_stmt__pack (const PgQuery__SecLabelStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__sec_label_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__sec_label_stmt__pack_to_buffer (const PgQuery__SecLabelStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__sec_label_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SecLabelStmt * pg_query__sec_label_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SecLabelStmt *) protobuf_c_message_unpack (&pg_query__sec_label_stmt__descriptor, allocator, len, data); } void pg_query__sec_label_stmt__free_unpacked (PgQuery__SecLabelStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__sec_label_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_foreign_table_stmt__init (PgQuery__CreateForeignTableStmt *message) { static const PgQuery__CreateForeignTableStmt init_value = PG_QUERY__CREATE_FOREIGN_TABLE_STMT__INIT; *message = init_value; } size_t pg_query__create_foreign_table_stmt__get_packed_size (const PgQuery__CreateForeignTableStmt *message) { assert(message->base.descriptor == &pg_query__create_foreign_table_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_foreign_table_stmt__pack (const PgQuery__CreateForeignTableStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_foreign_table_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_foreign_table_stmt__pack_to_buffer (const PgQuery__CreateForeignTableStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_foreign_table_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateForeignTableStmt * pg_query__create_foreign_table_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateForeignTableStmt *) protobuf_c_message_unpack (&pg_query__create_foreign_table_stmt__descriptor, allocator, len, data); } void pg_query__create_foreign_table_stmt__free_unpacked (PgQuery__CreateForeignTableStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_foreign_table_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__import_foreign_schema_stmt__init (PgQuery__ImportForeignSchemaStmt *message) { static const PgQuery__ImportForeignSchemaStmt init_value = PG_QUERY__IMPORT_FOREIGN_SCHEMA_STMT__INIT; *message = init_value; } size_t pg_query__import_foreign_schema_stmt__get_packed_size (const PgQuery__ImportForeignSchemaStmt *message) { assert(message->base.descriptor == &pg_query__import_foreign_schema_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__import_foreign_schema_stmt__pack (const PgQuery__ImportForeignSchemaStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__import_foreign_schema_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__import_foreign_schema_stmt__pack_to_buffer (const PgQuery__ImportForeignSchemaStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__import_foreign_schema_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ImportForeignSchemaStmt * pg_query__import_foreign_schema_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ImportForeignSchemaStmt *) protobuf_c_message_unpack (&pg_query__import_foreign_schema_stmt__descriptor, allocator, len, data); } void pg_query__import_foreign_schema_stmt__free_unpacked (PgQuery__ImportForeignSchemaStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__import_foreign_schema_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_extension_stmt__init (PgQuery__CreateExtensionStmt *message) { static const PgQuery__CreateExtensionStmt init_value = PG_QUERY__CREATE_EXTENSION_STMT__INIT; *message = init_value; } size_t pg_query__create_extension_stmt__get_packed_size (const PgQuery__CreateExtensionStmt *message) { assert(message->base.descriptor == &pg_query__create_extension_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_extension_stmt__pack (const PgQuery__CreateExtensionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_extension_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_extension_stmt__pack_to_buffer (const PgQuery__CreateExtensionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_extension_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateExtensionStmt * pg_query__create_extension_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateExtensionStmt *) protobuf_c_message_unpack (&pg_query__create_extension_stmt__descriptor, allocator, len, data); } void pg_query__create_extension_stmt__free_unpacked (PgQuery__CreateExtensionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_extension_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_extension_stmt__init (PgQuery__AlterExtensionStmt *message) { static const PgQuery__AlterExtensionStmt init_value = PG_QUERY__ALTER_EXTENSION_STMT__INIT; *message = init_value; } size_t pg_query__alter_extension_stmt__get_packed_size (const PgQuery__AlterExtensionStmt *message) { assert(message->base.descriptor == &pg_query__alter_extension_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_extension_stmt__pack (const PgQuery__AlterExtensionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_extension_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_extension_stmt__pack_to_buffer (const PgQuery__AlterExtensionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_extension_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterExtensionStmt * pg_query__alter_extension_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterExtensionStmt *) protobuf_c_message_unpack (&pg_query__alter_extension_stmt__descriptor, allocator, len, data); } void pg_query__alter_extension_stmt__free_unpacked (PgQuery__AlterExtensionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_extension_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_extension_contents_stmt__init (PgQuery__AlterExtensionContentsStmt *message) { static const PgQuery__AlterExtensionContentsStmt init_value = PG_QUERY__ALTER_EXTENSION_CONTENTS_STMT__INIT; *message = init_value; } size_t pg_query__alter_extension_contents_stmt__get_packed_size (const PgQuery__AlterExtensionContentsStmt *message) { assert(message->base.descriptor == &pg_query__alter_extension_contents_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_extension_contents_stmt__pack (const PgQuery__AlterExtensionContentsStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_extension_contents_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_extension_contents_stmt__pack_to_buffer (const PgQuery__AlterExtensionContentsStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_extension_contents_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterExtensionContentsStmt * pg_query__alter_extension_contents_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterExtensionContentsStmt *) protobuf_c_message_unpack (&pg_query__alter_extension_contents_stmt__descriptor, allocator, len, data); } void pg_query__alter_extension_contents_stmt__free_unpacked (PgQuery__AlterExtensionContentsStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_extension_contents_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_event_trig_stmt__init (PgQuery__CreateEventTrigStmt *message) { static const PgQuery__CreateEventTrigStmt init_value = PG_QUERY__CREATE_EVENT_TRIG_STMT__INIT; *message = init_value; } size_t pg_query__create_event_trig_stmt__get_packed_size (const PgQuery__CreateEventTrigStmt *message) { assert(message->base.descriptor == &pg_query__create_event_trig_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_event_trig_stmt__pack (const PgQuery__CreateEventTrigStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_event_trig_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_event_trig_stmt__pack_to_buffer (const PgQuery__CreateEventTrigStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_event_trig_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateEventTrigStmt * pg_query__create_event_trig_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateEventTrigStmt *) protobuf_c_message_unpack (&pg_query__create_event_trig_stmt__descriptor, allocator, len, data); } void pg_query__create_event_trig_stmt__free_unpacked (PgQuery__CreateEventTrigStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_event_trig_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_event_trig_stmt__init (PgQuery__AlterEventTrigStmt *message) { static const PgQuery__AlterEventTrigStmt init_value = PG_QUERY__ALTER_EVENT_TRIG_STMT__INIT; *message = init_value; } size_t pg_query__alter_event_trig_stmt__get_packed_size (const PgQuery__AlterEventTrigStmt *message) { assert(message->base.descriptor == &pg_query__alter_event_trig_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_event_trig_stmt__pack (const PgQuery__AlterEventTrigStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_event_trig_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_event_trig_stmt__pack_to_buffer (const PgQuery__AlterEventTrigStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_event_trig_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterEventTrigStmt * pg_query__alter_event_trig_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterEventTrigStmt *) protobuf_c_message_unpack (&pg_query__alter_event_trig_stmt__descriptor, allocator, len, data); } void pg_query__alter_event_trig_stmt__free_unpacked (PgQuery__AlterEventTrigStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_event_trig_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__refresh_mat_view_stmt__init (PgQuery__RefreshMatViewStmt *message) { static const PgQuery__RefreshMatViewStmt init_value = PG_QUERY__REFRESH_MAT_VIEW_STMT__INIT; *message = init_value; } size_t pg_query__refresh_mat_view_stmt__get_packed_size (const PgQuery__RefreshMatViewStmt *message) { assert(message->base.descriptor == &pg_query__refresh_mat_view_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__refresh_mat_view_stmt__pack (const PgQuery__RefreshMatViewStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__refresh_mat_view_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__refresh_mat_view_stmt__pack_to_buffer (const PgQuery__RefreshMatViewStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__refresh_mat_view_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RefreshMatViewStmt * pg_query__refresh_mat_view_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RefreshMatViewStmt *) protobuf_c_message_unpack (&pg_query__refresh_mat_view_stmt__descriptor, allocator, len, data); } void pg_query__refresh_mat_view_stmt__free_unpacked (PgQuery__RefreshMatViewStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__refresh_mat_view_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__replica_identity_stmt__init (PgQuery__ReplicaIdentityStmt *message) { static const PgQuery__ReplicaIdentityStmt init_value = PG_QUERY__REPLICA_IDENTITY_STMT__INIT; *message = init_value; } size_t pg_query__replica_identity_stmt__get_packed_size (const PgQuery__ReplicaIdentityStmt *message) { assert(message->base.descriptor == &pg_query__replica_identity_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__replica_identity_stmt__pack (const PgQuery__ReplicaIdentityStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__replica_identity_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__replica_identity_stmt__pack_to_buffer (const PgQuery__ReplicaIdentityStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__replica_identity_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ReplicaIdentityStmt * pg_query__replica_identity_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ReplicaIdentityStmt *) protobuf_c_message_unpack (&pg_query__replica_identity_stmt__descriptor, allocator, len, data); } void pg_query__replica_identity_stmt__free_unpacked (PgQuery__ReplicaIdentityStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__replica_identity_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_system_stmt__init (PgQuery__AlterSystemStmt *message) { static const PgQuery__AlterSystemStmt init_value = PG_QUERY__ALTER_SYSTEM_STMT__INIT; *message = init_value; } size_t pg_query__alter_system_stmt__get_packed_size (const PgQuery__AlterSystemStmt *message) { assert(message->base.descriptor == &pg_query__alter_system_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_system_stmt__pack (const PgQuery__AlterSystemStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_system_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_system_stmt__pack_to_buffer (const PgQuery__AlterSystemStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_system_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterSystemStmt * pg_query__alter_system_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterSystemStmt *) protobuf_c_message_unpack (&pg_query__alter_system_stmt__descriptor, allocator, len, data); } void pg_query__alter_system_stmt__free_unpacked (PgQuery__AlterSystemStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_system_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_policy_stmt__init (PgQuery__CreatePolicyStmt *message) { static const PgQuery__CreatePolicyStmt init_value = PG_QUERY__CREATE_POLICY_STMT__INIT; *message = init_value; } size_t pg_query__create_policy_stmt__get_packed_size (const PgQuery__CreatePolicyStmt *message) { assert(message->base.descriptor == &pg_query__create_policy_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_policy_stmt__pack (const PgQuery__CreatePolicyStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_policy_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_policy_stmt__pack_to_buffer (const PgQuery__CreatePolicyStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_policy_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreatePolicyStmt * pg_query__create_policy_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreatePolicyStmt *) protobuf_c_message_unpack (&pg_query__create_policy_stmt__descriptor, allocator, len, data); } void pg_query__create_policy_stmt__free_unpacked (PgQuery__CreatePolicyStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_policy_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_policy_stmt__init (PgQuery__AlterPolicyStmt *message) { static const PgQuery__AlterPolicyStmt init_value = PG_QUERY__ALTER_POLICY_STMT__INIT; *message = init_value; } size_t pg_query__alter_policy_stmt__get_packed_size (const PgQuery__AlterPolicyStmt *message) { assert(message->base.descriptor == &pg_query__alter_policy_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_policy_stmt__pack (const PgQuery__AlterPolicyStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_policy_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_policy_stmt__pack_to_buffer (const PgQuery__AlterPolicyStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_policy_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterPolicyStmt * pg_query__alter_policy_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterPolicyStmt *) protobuf_c_message_unpack (&pg_query__alter_policy_stmt__descriptor, allocator, len, data); } void pg_query__alter_policy_stmt__free_unpacked (PgQuery__AlterPolicyStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_policy_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_transform_stmt__init (PgQuery__CreateTransformStmt *message) { static const PgQuery__CreateTransformStmt init_value = PG_QUERY__CREATE_TRANSFORM_STMT__INIT; *message = init_value; } size_t pg_query__create_transform_stmt__get_packed_size (const PgQuery__CreateTransformStmt *message) { assert(message->base.descriptor == &pg_query__create_transform_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_transform_stmt__pack (const PgQuery__CreateTransformStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_transform_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_transform_stmt__pack_to_buffer (const PgQuery__CreateTransformStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_transform_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateTransformStmt * pg_query__create_transform_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateTransformStmt *) protobuf_c_message_unpack (&pg_query__create_transform_stmt__descriptor, allocator, len, data); } void pg_query__create_transform_stmt__free_unpacked (PgQuery__CreateTransformStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_transform_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_am_stmt__init (PgQuery__CreateAmStmt *message) { static const PgQuery__CreateAmStmt init_value = PG_QUERY__CREATE_AM_STMT__INIT; *message = init_value; } size_t pg_query__create_am_stmt__get_packed_size (const PgQuery__CreateAmStmt *message) { assert(message->base.descriptor == &pg_query__create_am_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_am_stmt__pack (const PgQuery__CreateAmStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_am_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_am_stmt__pack_to_buffer (const PgQuery__CreateAmStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_am_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateAmStmt * pg_query__create_am_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateAmStmt *) protobuf_c_message_unpack (&pg_query__create_am_stmt__descriptor, allocator, len, data); } void pg_query__create_am_stmt__free_unpacked (PgQuery__CreateAmStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_am_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_publication_stmt__init (PgQuery__CreatePublicationStmt *message) { static const PgQuery__CreatePublicationStmt init_value = PG_QUERY__CREATE_PUBLICATION_STMT__INIT; *message = init_value; } size_t pg_query__create_publication_stmt__get_packed_size (const PgQuery__CreatePublicationStmt *message) { assert(message->base.descriptor == &pg_query__create_publication_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_publication_stmt__pack (const PgQuery__CreatePublicationStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_publication_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_publication_stmt__pack_to_buffer (const PgQuery__CreatePublicationStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_publication_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreatePublicationStmt * pg_query__create_publication_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreatePublicationStmt *) protobuf_c_message_unpack (&pg_query__create_publication_stmt__descriptor, allocator, len, data); } void pg_query__create_publication_stmt__free_unpacked (PgQuery__CreatePublicationStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_publication_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_publication_stmt__init (PgQuery__AlterPublicationStmt *message) { static const PgQuery__AlterPublicationStmt init_value = PG_QUERY__ALTER_PUBLICATION_STMT__INIT; *message = init_value; } size_t pg_query__alter_publication_stmt__get_packed_size (const PgQuery__AlterPublicationStmt *message) { assert(message->base.descriptor == &pg_query__alter_publication_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_publication_stmt__pack (const PgQuery__AlterPublicationStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_publication_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_publication_stmt__pack_to_buffer (const PgQuery__AlterPublicationStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_publication_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterPublicationStmt * pg_query__alter_publication_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterPublicationStmt *) protobuf_c_message_unpack (&pg_query__alter_publication_stmt__descriptor, allocator, len, data); } void pg_query__alter_publication_stmt__free_unpacked (PgQuery__AlterPublicationStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_publication_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_subscription_stmt__init (PgQuery__CreateSubscriptionStmt *message) { static const PgQuery__CreateSubscriptionStmt init_value = PG_QUERY__CREATE_SUBSCRIPTION_STMT__INIT; *message = init_value; } size_t pg_query__create_subscription_stmt__get_packed_size (const PgQuery__CreateSubscriptionStmt *message) { assert(message->base.descriptor == &pg_query__create_subscription_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_subscription_stmt__pack (const PgQuery__CreateSubscriptionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_subscription_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_subscription_stmt__pack_to_buffer (const PgQuery__CreateSubscriptionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_subscription_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateSubscriptionStmt * pg_query__create_subscription_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateSubscriptionStmt *) protobuf_c_message_unpack (&pg_query__create_subscription_stmt__descriptor, allocator, len, data); } void pg_query__create_subscription_stmt__free_unpacked (PgQuery__CreateSubscriptionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_subscription_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_subscription_stmt__init (PgQuery__AlterSubscriptionStmt *message) { static const PgQuery__AlterSubscriptionStmt init_value = PG_QUERY__ALTER_SUBSCRIPTION_STMT__INIT; *message = init_value; } size_t pg_query__alter_subscription_stmt__get_packed_size (const PgQuery__AlterSubscriptionStmt *message) { assert(message->base.descriptor == &pg_query__alter_subscription_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_subscription_stmt__pack (const PgQuery__AlterSubscriptionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_subscription_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_subscription_stmt__pack_to_buffer (const PgQuery__AlterSubscriptionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_subscription_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterSubscriptionStmt * pg_query__alter_subscription_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterSubscriptionStmt *) protobuf_c_message_unpack (&pg_query__alter_subscription_stmt__descriptor, allocator, len, data); } void pg_query__alter_subscription_stmt__free_unpacked (PgQuery__AlterSubscriptionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_subscription_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__drop_subscription_stmt__init (PgQuery__DropSubscriptionStmt *message) { static const PgQuery__DropSubscriptionStmt init_value = PG_QUERY__DROP_SUBSCRIPTION_STMT__INIT; *message = init_value; } size_t pg_query__drop_subscription_stmt__get_packed_size (const PgQuery__DropSubscriptionStmt *message) { assert(message->base.descriptor == &pg_query__drop_subscription_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__drop_subscription_stmt__pack (const PgQuery__DropSubscriptionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__drop_subscription_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__drop_subscription_stmt__pack_to_buffer (const PgQuery__DropSubscriptionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__drop_subscription_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DropSubscriptionStmt * pg_query__drop_subscription_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DropSubscriptionStmt *) protobuf_c_message_unpack (&pg_query__drop_subscription_stmt__descriptor, allocator, len, data); } void pg_query__drop_subscription_stmt__free_unpacked (PgQuery__DropSubscriptionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__drop_subscription_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_stats_stmt__init (PgQuery__CreateStatsStmt *message) { static const PgQuery__CreateStatsStmt init_value = PG_QUERY__CREATE_STATS_STMT__INIT; *message = init_value; } size_t pg_query__create_stats_stmt__get_packed_size (const PgQuery__CreateStatsStmt *message) { assert(message->base.descriptor == &pg_query__create_stats_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_stats_stmt__pack (const PgQuery__CreateStatsStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_stats_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_stats_stmt__pack_to_buffer (const PgQuery__CreateStatsStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_stats_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateStatsStmt * pg_query__create_stats_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateStatsStmt *) protobuf_c_message_unpack (&pg_query__create_stats_stmt__descriptor, allocator, len, data); } void pg_query__create_stats_stmt__free_unpacked (PgQuery__CreateStatsStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_stats_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_collation_stmt__init (PgQuery__AlterCollationStmt *message) { static const PgQuery__AlterCollationStmt init_value = PG_QUERY__ALTER_COLLATION_STMT__INIT; *message = init_value; } size_t pg_query__alter_collation_stmt__get_packed_size (const PgQuery__AlterCollationStmt *message) { assert(message->base.descriptor == &pg_query__alter_collation_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_collation_stmt__pack (const PgQuery__AlterCollationStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_collation_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_collation_stmt__pack_to_buffer (const PgQuery__AlterCollationStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_collation_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterCollationStmt * pg_query__alter_collation_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterCollationStmt *) protobuf_c_message_unpack (&pg_query__alter_collation_stmt__descriptor, allocator, len, data); } void pg_query__alter_collation_stmt__free_unpacked (PgQuery__AlterCollationStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_collation_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__call_stmt__init (PgQuery__CallStmt *message) { static const PgQuery__CallStmt init_value = PG_QUERY__CALL_STMT__INIT; *message = init_value; } size_t pg_query__call_stmt__get_packed_size (const PgQuery__CallStmt *message) { assert(message->base.descriptor == &pg_query__call_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__call_stmt__pack (const PgQuery__CallStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__call_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__call_stmt__pack_to_buffer (const PgQuery__CallStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__call_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CallStmt * pg_query__call_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CallStmt *) protobuf_c_message_unpack (&pg_query__call_stmt__descriptor, allocator, len, data); } void pg_query__call_stmt__free_unpacked (PgQuery__CallStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__call_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_stats_stmt__init (PgQuery__AlterStatsStmt *message) { static const PgQuery__AlterStatsStmt init_value = PG_QUERY__ALTER_STATS_STMT__INIT; *message = init_value; } size_t pg_query__alter_stats_stmt__get_packed_size (const PgQuery__AlterStatsStmt *message) { assert(message->base.descriptor == &pg_query__alter_stats_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_stats_stmt__pack (const PgQuery__AlterStatsStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_stats_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_stats_stmt__pack_to_buffer (const PgQuery__AlterStatsStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_stats_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterStatsStmt * pg_query__alter_stats_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterStatsStmt *) protobuf_c_message_unpack (&pg_query__alter_stats_stmt__descriptor, allocator, len, data); } void pg_query__alter_stats_stmt__free_unpacked (PgQuery__AlterStatsStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_stats_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__a__expr__init (PgQuery__AExpr *message) { static const PgQuery__AExpr init_value = PG_QUERY__A__EXPR__INIT; *message = init_value; } size_t pg_query__a__expr__get_packed_size (const PgQuery__AExpr *message) { assert(message->base.descriptor == &pg_query__a__expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__a__expr__pack (const PgQuery__AExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__a__expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__a__expr__pack_to_buffer (const PgQuery__AExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__a__expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AExpr * pg_query__a__expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AExpr *) protobuf_c_message_unpack (&pg_query__a__expr__descriptor, allocator, len, data); } void pg_query__a__expr__free_unpacked (PgQuery__AExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__a__expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__column_ref__init (PgQuery__ColumnRef *message) { static const PgQuery__ColumnRef init_value = PG_QUERY__COLUMN_REF__INIT; *message = init_value; } size_t pg_query__column_ref__get_packed_size (const PgQuery__ColumnRef *message) { assert(message->base.descriptor == &pg_query__column_ref__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__column_ref__pack (const PgQuery__ColumnRef *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__column_ref__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__column_ref__pack_to_buffer (const PgQuery__ColumnRef *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__column_ref__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ColumnRef * pg_query__column_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ColumnRef *) protobuf_c_message_unpack (&pg_query__column_ref__descriptor, allocator, len, data); } void pg_query__column_ref__free_unpacked (PgQuery__ColumnRef *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__column_ref__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__param_ref__init (PgQuery__ParamRef *message) { static const PgQuery__ParamRef init_value = PG_QUERY__PARAM_REF__INIT; *message = init_value; } size_t pg_query__param_ref__get_packed_size (const PgQuery__ParamRef *message) { assert(message->base.descriptor == &pg_query__param_ref__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__param_ref__pack (const PgQuery__ParamRef *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__param_ref__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__param_ref__pack_to_buffer (const PgQuery__ParamRef *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__param_ref__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ParamRef * pg_query__param_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ParamRef *) protobuf_c_message_unpack (&pg_query__param_ref__descriptor, allocator, len, data); } void pg_query__param_ref__free_unpacked (PgQuery__ParamRef *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__param_ref__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__func_call__init (PgQuery__FuncCall *message) { static const PgQuery__FuncCall init_value = PG_QUERY__FUNC_CALL__INIT; *message = init_value; } size_t pg_query__func_call__get_packed_size (const PgQuery__FuncCall *message) { assert(message->base.descriptor == &pg_query__func_call__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__func_call__pack (const PgQuery__FuncCall *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__func_call__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__func_call__pack_to_buffer (const PgQuery__FuncCall *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__func_call__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__FuncCall * pg_query__func_call__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__FuncCall *) protobuf_c_message_unpack (&pg_query__func_call__descriptor, allocator, len, data); } void pg_query__func_call__free_unpacked (PgQuery__FuncCall *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__func_call__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__a__star__init (PgQuery__AStar *message) { static const PgQuery__AStar init_value = PG_QUERY__A__STAR__INIT; *message = init_value; } size_t pg_query__a__star__get_packed_size (const PgQuery__AStar *message) { assert(message->base.descriptor == &pg_query__a__star__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__a__star__pack (const PgQuery__AStar *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__a__star__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__a__star__pack_to_buffer (const PgQuery__AStar *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__a__star__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AStar * pg_query__a__star__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AStar *) protobuf_c_message_unpack (&pg_query__a__star__descriptor, allocator, len, data); } void pg_query__a__star__free_unpacked (PgQuery__AStar *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__a__star__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__a__indices__init (PgQuery__AIndices *message) { static const PgQuery__AIndices init_value = PG_QUERY__A__INDICES__INIT; *message = init_value; } size_t pg_query__a__indices__get_packed_size (const PgQuery__AIndices *message) { assert(message->base.descriptor == &pg_query__a__indices__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__a__indices__pack (const PgQuery__AIndices *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__a__indices__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__a__indices__pack_to_buffer (const PgQuery__AIndices *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__a__indices__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AIndices * pg_query__a__indices__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AIndices *) protobuf_c_message_unpack (&pg_query__a__indices__descriptor, allocator, len, data); } void pg_query__a__indices__free_unpacked (PgQuery__AIndices *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__a__indices__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__a__indirection__init (PgQuery__AIndirection *message) { static const PgQuery__AIndirection init_value = PG_QUERY__A__INDIRECTION__INIT; *message = init_value; } size_t pg_query__a__indirection__get_packed_size (const PgQuery__AIndirection *message) { assert(message->base.descriptor == &pg_query__a__indirection__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__a__indirection__pack (const PgQuery__AIndirection *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__a__indirection__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__a__indirection__pack_to_buffer (const PgQuery__AIndirection *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__a__indirection__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AIndirection * pg_query__a__indirection__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AIndirection *) protobuf_c_message_unpack (&pg_query__a__indirection__descriptor, allocator, len, data); } void pg_query__a__indirection__free_unpacked (PgQuery__AIndirection *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__a__indirection__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__a__array_expr__init (PgQuery__AArrayExpr *message) { static const PgQuery__AArrayExpr init_value = PG_QUERY__A__ARRAY_EXPR__INIT; *message = init_value; } size_t pg_query__a__array_expr__get_packed_size (const PgQuery__AArrayExpr *message) { assert(message->base.descriptor == &pg_query__a__array_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__a__array_expr__pack (const PgQuery__AArrayExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__a__array_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__a__array_expr__pack_to_buffer (const PgQuery__AArrayExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__a__array_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AArrayExpr * pg_query__a__array_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AArrayExpr *) protobuf_c_message_unpack (&pg_query__a__array_expr__descriptor, allocator, len, data); } void pg_query__a__array_expr__free_unpacked (PgQuery__AArrayExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__a__array_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__res_target__init (PgQuery__ResTarget *message) { static const PgQuery__ResTarget init_value = PG_QUERY__RES_TARGET__INIT; *message = init_value; } size_t pg_query__res_target__get_packed_size (const PgQuery__ResTarget *message) { assert(message->base.descriptor == &pg_query__res_target__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__res_target__pack (const PgQuery__ResTarget *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__res_target__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__res_target__pack_to_buffer (const PgQuery__ResTarget *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__res_target__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ResTarget * pg_query__res_target__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ResTarget *) protobuf_c_message_unpack (&pg_query__res_target__descriptor, allocator, len, data); } void pg_query__res_target__free_unpacked (PgQuery__ResTarget *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__res_target__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__multi_assign_ref__init (PgQuery__MultiAssignRef *message) { static const PgQuery__MultiAssignRef init_value = PG_QUERY__MULTI_ASSIGN_REF__INIT; *message = init_value; } size_t pg_query__multi_assign_ref__get_packed_size (const PgQuery__MultiAssignRef *message) { assert(message->base.descriptor == &pg_query__multi_assign_ref__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__multi_assign_ref__pack (const PgQuery__MultiAssignRef *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__multi_assign_ref__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__multi_assign_ref__pack_to_buffer (const PgQuery__MultiAssignRef *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__multi_assign_ref__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__MultiAssignRef * pg_query__multi_assign_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__MultiAssignRef *) protobuf_c_message_unpack (&pg_query__multi_assign_ref__descriptor, allocator, len, data); } void pg_query__multi_assign_ref__free_unpacked (PgQuery__MultiAssignRef *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__multi_assign_ref__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__type_cast__init (PgQuery__TypeCast *message) { static const PgQuery__TypeCast init_value = PG_QUERY__TYPE_CAST__INIT; *message = init_value; } size_t pg_query__type_cast__get_packed_size (const PgQuery__TypeCast *message) { assert(message->base.descriptor == &pg_query__type_cast__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__type_cast__pack (const PgQuery__TypeCast *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__type_cast__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__type_cast__pack_to_buffer (const PgQuery__TypeCast *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__type_cast__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__TypeCast * pg_query__type_cast__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__TypeCast *) protobuf_c_message_unpack (&pg_query__type_cast__descriptor, allocator, len, data); } void pg_query__type_cast__free_unpacked (PgQuery__TypeCast *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__type_cast__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__collate_clause__init (PgQuery__CollateClause *message) { static const PgQuery__CollateClause init_value = PG_QUERY__COLLATE_CLAUSE__INIT; *message = init_value; } size_t pg_query__collate_clause__get_packed_size (const PgQuery__CollateClause *message) { assert(message->base.descriptor == &pg_query__collate_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__collate_clause__pack (const PgQuery__CollateClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__collate_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__collate_clause__pack_to_buffer (const PgQuery__CollateClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__collate_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CollateClause * pg_query__collate_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CollateClause *) protobuf_c_message_unpack (&pg_query__collate_clause__descriptor, allocator, len, data); } void pg_query__collate_clause__free_unpacked (PgQuery__CollateClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__collate_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__sort_by__init (PgQuery__SortBy *message) { static const PgQuery__SortBy init_value = PG_QUERY__SORT_BY__INIT; *message = init_value; } size_t pg_query__sort_by__get_packed_size (const PgQuery__SortBy *message) { assert(message->base.descriptor == &pg_query__sort_by__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__sort_by__pack (const PgQuery__SortBy *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__sort_by__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__sort_by__pack_to_buffer (const PgQuery__SortBy *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__sort_by__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SortBy * pg_query__sort_by__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SortBy *) protobuf_c_message_unpack (&pg_query__sort_by__descriptor, allocator, len, data); } void pg_query__sort_by__free_unpacked (PgQuery__SortBy *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__sort_by__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__window_def__init (PgQuery__WindowDef *message) { static const PgQuery__WindowDef init_value = PG_QUERY__WINDOW_DEF__INIT; *message = init_value; } size_t pg_query__window_def__get_packed_size (const PgQuery__WindowDef *message) { assert(message->base.descriptor == &pg_query__window_def__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__window_def__pack (const PgQuery__WindowDef *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__window_def__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__window_def__pack_to_buffer (const PgQuery__WindowDef *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__window_def__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__WindowDef * pg_query__window_def__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__WindowDef *) protobuf_c_message_unpack (&pg_query__window_def__descriptor, allocator, len, data); } void pg_query__window_def__free_unpacked (PgQuery__WindowDef *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__window_def__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__range_subselect__init (PgQuery__RangeSubselect *message) { static const PgQuery__RangeSubselect init_value = PG_QUERY__RANGE_SUBSELECT__INIT; *message = init_value; } size_t pg_query__range_subselect__get_packed_size (const PgQuery__RangeSubselect *message) { assert(message->base.descriptor == &pg_query__range_subselect__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__range_subselect__pack (const PgQuery__RangeSubselect *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__range_subselect__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__range_subselect__pack_to_buffer (const PgQuery__RangeSubselect *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__range_subselect__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RangeSubselect * pg_query__range_subselect__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RangeSubselect *) protobuf_c_message_unpack (&pg_query__range_subselect__descriptor, allocator, len, data); } void pg_query__range_subselect__free_unpacked (PgQuery__RangeSubselect *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__range_subselect__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__range_function__init (PgQuery__RangeFunction *message) { static const PgQuery__RangeFunction init_value = PG_QUERY__RANGE_FUNCTION__INIT; *message = init_value; } size_t pg_query__range_function__get_packed_size (const PgQuery__RangeFunction *message) { assert(message->base.descriptor == &pg_query__range_function__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__range_function__pack (const PgQuery__RangeFunction *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__range_function__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__range_function__pack_to_buffer (const PgQuery__RangeFunction *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__range_function__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RangeFunction * pg_query__range_function__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RangeFunction *) protobuf_c_message_unpack (&pg_query__range_function__descriptor, allocator, len, data); } void pg_query__range_function__free_unpacked (PgQuery__RangeFunction *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__range_function__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__range_table_sample__init (PgQuery__RangeTableSample *message) { static const PgQuery__RangeTableSample init_value = PG_QUERY__RANGE_TABLE_SAMPLE__INIT; *message = init_value; } size_t pg_query__range_table_sample__get_packed_size (const PgQuery__RangeTableSample *message) { assert(message->base.descriptor == &pg_query__range_table_sample__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__range_table_sample__pack (const PgQuery__RangeTableSample *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__range_table_sample__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__range_table_sample__pack_to_buffer (const PgQuery__RangeTableSample *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__range_table_sample__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RangeTableSample * pg_query__range_table_sample__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RangeTableSample *) protobuf_c_message_unpack (&pg_query__range_table_sample__descriptor, allocator, len, data); } void pg_query__range_table_sample__free_unpacked (PgQuery__RangeTableSample *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__range_table_sample__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__range_table_func__init (PgQuery__RangeTableFunc *message) { static const PgQuery__RangeTableFunc init_value = PG_QUERY__RANGE_TABLE_FUNC__INIT; *message = init_value; } size_t pg_query__range_table_func__get_packed_size (const PgQuery__RangeTableFunc *message) { assert(message->base.descriptor == &pg_query__range_table_func__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__range_table_func__pack (const PgQuery__RangeTableFunc *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__range_table_func__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__range_table_func__pack_to_buffer (const PgQuery__RangeTableFunc *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__range_table_func__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RangeTableFunc * pg_query__range_table_func__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RangeTableFunc *) protobuf_c_message_unpack (&pg_query__range_table_func__descriptor, allocator, len, data); } void pg_query__range_table_func__free_unpacked (PgQuery__RangeTableFunc *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__range_table_func__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__range_table_func_col__init (PgQuery__RangeTableFuncCol *message) { static const PgQuery__RangeTableFuncCol init_value = PG_QUERY__RANGE_TABLE_FUNC_COL__INIT; *message = init_value; } size_t pg_query__range_table_func_col__get_packed_size (const PgQuery__RangeTableFuncCol *message) { assert(message->base.descriptor == &pg_query__range_table_func_col__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__range_table_func_col__pack (const PgQuery__RangeTableFuncCol *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__range_table_func_col__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__range_table_func_col__pack_to_buffer (const PgQuery__RangeTableFuncCol *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__range_table_func_col__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RangeTableFuncCol * pg_query__range_table_func_col__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RangeTableFuncCol *) protobuf_c_message_unpack (&pg_query__range_table_func_col__descriptor, allocator, len, data); } void pg_query__range_table_func_col__free_unpacked (PgQuery__RangeTableFuncCol *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__range_table_func_col__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__type_name__init (PgQuery__TypeName *message) { static const PgQuery__TypeName init_value = PG_QUERY__TYPE_NAME__INIT; *message = init_value; } size_t pg_query__type_name__get_packed_size (const PgQuery__TypeName *message) { assert(message->base.descriptor == &pg_query__type_name__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__type_name__pack (const PgQuery__TypeName *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__type_name__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__type_name__pack_to_buffer (const PgQuery__TypeName *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__type_name__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__TypeName * pg_query__type_name__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__TypeName *) protobuf_c_message_unpack (&pg_query__type_name__descriptor, allocator, len, data); } void pg_query__type_name__free_unpacked (PgQuery__TypeName *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__type_name__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__column_def__init (PgQuery__ColumnDef *message) { static const PgQuery__ColumnDef init_value = PG_QUERY__COLUMN_DEF__INIT; *message = init_value; } size_t pg_query__column_def__get_packed_size (const PgQuery__ColumnDef *message) { assert(message->base.descriptor == &pg_query__column_def__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__column_def__pack (const PgQuery__ColumnDef *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__column_def__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__column_def__pack_to_buffer (const PgQuery__ColumnDef *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__column_def__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ColumnDef * pg_query__column_def__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ColumnDef *) protobuf_c_message_unpack (&pg_query__column_def__descriptor, allocator, len, data); } void pg_query__column_def__free_unpacked (PgQuery__ColumnDef *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__column_def__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__index_elem__init (PgQuery__IndexElem *message) { static const PgQuery__IndexElem init_value = PG_QUERY__INDEX_ELEM__INIT; *message = init_value; } size_t pg_query__index_elem__get_packed_size (const PgQuery__IndexElem *message) { assert(message->base.descriptor == &pg_query__index_elem__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__index_elem__pack (const PgQuery__IndexElem *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__index_elem__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__index_elem__pack_to_buffer (const PgQuery__IndexElem *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__index_elem__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__IndexElem * pg_query__index_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__IndexElem *) protobuf_c_message_unpack (&pg_query__index_elem__descriptor, allocator, len, data); } void pg_query__index_elem__free_unpacked (PgQuery__IndexElem *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__index_elem__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__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__constraint__init (PgQuery__Constraint *message) { static const PgQuery__Constraint init_value = PG_QUERY__CONSTRAINT__INIT; *message = init_value; } size_t pg_query__constraint__get_packed_size (const PgQuery__Constraint *message) { assert(message->base.descriptor == &pg_query__constraint__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__constraint__pack (const PgQuery__Constraint *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__constraint__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__constraint__pack_to_buffer (const PgQuery__Constraint *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__constraint__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__Constraint * pg_query__constraint__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__Constraint *) protobuf_c_message_unpack (&pg_query__constraint__descriptor, allocator, len, data); } void pg_query__constraint__free_unpacked (PgQuery__Constraint *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__constraint__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__def_elem__init (PgQuery__DefElem *message) { static const PgQuery__DefElem init_value = PG_QUERY__DEF_ELEM__INIT; *message = init_value; } size_t pg_query__def_elem__get_packed_size (const PgQuery__DefElem *message) { assert(message->base.descriptor == &pg_query__def_elem__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__def_elem__pack (const PgQuery__DefElem *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__def_elem__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__def_elem__pack_to_buffer (const PgQuery__DefElem *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__def_elem__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DefElem * pg_query__def_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DefElem *) protobuf_c_message_unpack (&pg_query__def_elem__descriptor, allocator, len, data); } void pg_query__def_elem__free_unpacked (PgQuery__DefElem *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__def_elem__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__range_tbl_entry__init (PgQuery__RangeTblEntry *message) { static const PgQuery__RangeTblEntry init_value = PG_QUERY__RANGE_TBL_ENTRY__INIT; *message = init_value; } size_t pg_query__range_tbl_entry__get_packed_size (const PgQuery__RangeTblEntry *message) { assert(message->base.descriptor == &pg_query__range_tbl_entry__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__range_tbl_entry__pack (const PgQuery__RangeTblEntry *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__range_tbl_entry__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__range_tbl_entry__pack_to_buffer (const PgQuery__RangeTblEntry *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__range_tbl_entry__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RangeTblEntry * pg_query__range_tbl_entry__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RangeTblEntry *) protobuf_c_message_unpack (&pg_query__range_tbl_entry__descriptor, allocator, len, data); } void pg_query__range_tbl_entry__free_unpacked (PgQuery__RangeTblEntry *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__range_tbl_entry__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__range_tbl_function__init (PgQuery__RangeTblFunction *message) { static const PgQuery__RangeTblFunction init_value = PG_QUERY__RANGE_TBL_FUNCTION__INIT; *message = init_value; } size_t pg_query__range_tbl_function__get_packed_size (const PgQuery__RangeTblFunction *message) { assert(message->base.descriptor == &pg_query__range_tbl_function__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__range_tbl_function__pack (const PgQuery__RangeTblFunction *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__range_tbl_function__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__range_tbl_function__pack_to_buffer (const PgQuery__RangeTblFunction *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__range_tbl_function__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RangeTblFunction * pg_query__range_tbl_function__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RangeTblFunction *) protobuf_c_message_unpack (&pg_query__range_tbl_function__descriptor, allocator, len, data); } void pg_query__range_tbl_function__free_unpacked (PgQuery__RangeTblFunction *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__range_tbl_function__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__table_sample_clause__init (PgQuery__TableSampleClause *message) { static const PgQuery__TableSampleClause init_value = PG_QUERY__TABLE_SAMPLE_CLAUSE__INIT; *message = init_value; } size_t pg_query__table_sample_clause__get_packed_size (const PgQuery__TableSampleClause *message) { assert(message->base.descriptor == &pg_query__table_sample_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__table_sample_clause__pack (const PgQuery__TableSampleClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__table_sample_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__table_sample_clause__pack_to_buffer (const PgQuery__TableSampleClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__table_sample_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__TableSampleClause * pg_query__table_sample_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__TableSampleClause *) protobuf_c_message_unpack (&pg_query__table_sample_clause__descriptor, allocator, len, data); } void pg_query__table_sample_clause__free_unpacked (PgQuery__TableSampleClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__table_sample_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__with_check_option__init (PgQuery__WithCheckOption *message) { static const PgQuery__WithCheckOption init_value = PG_QUERY__WITH_CHECK_OPTION__INIT; *message = init_value; } size_t pg_query__with_check_option__get_packed_size (const PgQuery__WithCheckOption *message) { assert(message->base.descriptor == &pg_query__with_check_option__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__with_check_option__pack (const PgQuery__WithCheckOption *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__with_check_option__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__with_check_option__pack_to_buffer (const PgQuery__WithCheckOption *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__with_check_option__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__WithCheckOption * pg_query__with_check_option__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__WithCheckOption *) protobuf_c_message_unpack (&pg_query__with_check_option__descriptor, allocator, len, data); } void pg_query__with_check_option__free_unpacked (PgQuery__WithCheckOption *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__with_check_option__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__sort_group_clause__init (PgQuery__SortGroupClause *message) { static const PgQuery__SortGroupClause init_value = PG_QUERY__SORT_GROUP_CLAUSE__INIT; *message = init_value; } size_t pg_query__sort_group_clause__get_packed_size (const PgQuery__SortGroupClause *message) { assert(message->base.descriptor == &pg_query__sort_group_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__sort_group_clause__pack (const PgQuery__SortGroupClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__sort_group_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__sort_group_clause__pack_to_buffer (const PgQuery__SortGroupClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__sort_group_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SortGroupClause * pg_query__sort_group_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SortGroupClause *) protobuf_c_message_unpack (&pg_query__sort_group_clause__descriptor, allocator, len, data); } void pg_query__sort_group_clause__free_unpacked (PgQuery__SortGroupClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__sort_group_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__grouping_set__init (PgQuery__GroupingSet *message) { static const PgQuery__GroupingSet init_value = PG_QUERY__GROUPING_SET__INIT; *message = init_value; } size_t pg_query__grouping_set__get_packed_size (const PgQuery__GroupingSet *message) { assert(message->base.descriptor == &pg_query__grouping_set__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__grouping_set__pack (const PgQuery__GroupingSet *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__grouping_set__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__grouping_set__pack_to_buffer (const PgQuery__GroupingSet *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__grouping_set__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__GroupingSet * pg_query__grouping_set__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__GroupingSet *) protobuf_c_message_unpack (&pg_query__grouping_set__descriptor, allocator, len, data); } void pg_query__grouping_set__free_unpacked (PgQuery__GroupingSet *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__grouping_set__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__window_clause__init (PgQuery__WindowClause *message) { static const PgQuery__WindowClause init_value = PG_QUERY__WINDOW_CLAUSE__INIT; *message = init_value; } size_t pg_query__window_clause__get_packed_size (const PgQuery__WindowClause *message) { assert(message->base.descriptor == &pg_query__window_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__window_clause__pack (const PgQuery__WindowClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__window_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__window_clause__pack_to_buffer (const PgQuery__WindowClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__window_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__WindowClause * pg_query__window_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__WindowClause *) protobuf_c_message_unpack (&pg_query__window_clause__descriptor, allocator, len, data); } void pg_query__window_clause__free_unpacked (PgQuery__WindowClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__window_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__object_with_args__init (PgQuery__ObjectWithArgs *message) { static const PgQuery__ObjectWithArgs init_value = PG_QUERY__OBJECT_WITH_ARGS__INIT; *message = init_value; } size_t pg_query__object_with_args__get_packed_size (const PgQuery__ObjectWithArgs *message) { assert(message->base.descriptor == &pg_query__object_with_args__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__object_with_args__pack (const PgQuery__ObjectWithArgs *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__object_with_args__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__object_with_args__pack_to_buffer (const PgQuery__ObjectWithArgs *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__object_with_args__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ObjectWithArgs * pg_query__object_with_args__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ObjectWithArgs *) protobuf_c_message_unpack (&pg_query__object_with_args__descriptor, allocator, len, data); } void pg_query__object_with_args__free_unpacked (PgQuery__ObjectWithArgs *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__object_with_args__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__access_priv__init (PgQuery__AccessPriv *message) { static const PgQuery__AccessPriv init_value = PG_QUERY__ACCESS_PRIV__INIT; *message = init_value; } size_t pg_query__access_priv__get_packed_size (const PgQuery__AccessPriv *message) { assert(message->base.descriptor == &pg_query__access_priv__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__access_priv__pack (const PgQuery__AccessPriv *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__access_priv__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__access_priv__pack_to_buffer (const PgQuery__AccessPriv *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__access_priv__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AccessPriv * pg_query__access_priv__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AccessPriv *) protobuf_c_message_unpack (&pg_query__access_priv__descriptor, allocator, len, data); } void pg_query__access_priv__free_unpacked (PgQuery__AccessPriv *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__access_priv__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_op_class_item__init (PgQuery__CreateOpClassItem *message) { static const PgQuery__CreateOpClassItem init_value = PG_QUERY__CREATE_OP_CLASS_ITEM__INIT; *message = init_value; } size_t pg_query__create_op_class_item__get_packed_size (const PgQuery__CreateOpClassItem *message) { assert(message->base.descriptor == &pg_query__create_op_class_item__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_op_class_item__pack (const PgQuery__CreateOpClassItem *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_op_class_item__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_op_class_item__pack_to_buffer (const PgQuery__CreateOpClassItem *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_op_class_item__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateOpClassItem * pg_query__create_op_class_item__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateOpClassItem *) protobuf_c_message_unpack (&pg_query__create_op_class_item__descriptor, allocator, len, data); } void pg_query__create_op_class_item__free_unpacked (PgQuery__CreateOpClassItem *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_op_class_item__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__table_like_clause__init (PgQuery__TableLikeClause *message) { static const PgQuery__TableLikeClause init_value = PG_QUERY__TABLE_LIKE_CLAUSE__INIT; *message = init_value; } size_t pg_query__table_like_clause__get_packed_size (const PgQuery__TableLikeClause *message) { assert(message->base.descriptor == &pg_query__table_like_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__table_like_clause__pack (const PgQuery__TableLikeClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__table_like_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__table_like_clause__pack_to_buffer (const PgQuery__TableLikeClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__table_like_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__TableLikeClause * pg_query__table_like_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__TableLikeClause *) protobuf_c_message_unpack (&pg_query__table_like_clause__descriptor, allocator, len, data); } void pg_query__table_like_clause__free_unpacked (PgQuery__TableLikeClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__table_like_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__function_parameter__init (PgQuery__FunctionParameter *message) { static const PgQuery__FunctionParameter init_value = PG_QUERY__FUNCTION_PARAMETER__INIT; *message = init_value; } size_t pg_query__function_parameter__get_packed_size (const PgQuery__FunctionParameter *message) { assert(message->base.descriptor == &pg_query__function_parameter__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__function_parameter__pack (const PgQuery__FunctionParameter *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__function_parameter__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__function_parameter__pack_to_buffer (const PgQuery__FunctionParameter *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__function_parameter__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__FunctionParameter * pg_query__function_parameter__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__FunctionParameter *) protobuf_c_message_unpack (&pg_query__function_parameter__descriptor, allocator, len, data); } void pg_query__function_parameter__free_unpacked (PgQuery__FunctionParameter *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__function_parameter__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__locking_clause__init (PgQuery__LockingClause *message) { static const PgQuery__LockingClause init_value = PG_QUERY__LOCKING_CLAUSE__INIT; *message = init_value; } size_t pg_query__locking_clause__get_packed_size (const PgQuery__LockingClause *message) { assert(message->base.descriptor == &pg_query__locking_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__locking_clause__pack (const PgQuery__LockingClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__locking_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__locking_clause__pack_to_buffer (const PgQuery__LockingClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__locking_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__LockingClause * pg_query__locking_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__LockingClause *) protobuf_c_message_unpack (&pg_query__locking_clause__descriptor, allocator, len, data); } void pg_query__locking_clause__free_unpacked (PgQuery__LockingClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__locking_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__row_mark_clause__init (PgQuery__RowMarkClause *message) { static const PgQuery__RowMarkClause init_value = PG_QUERY__ROW_MARK_CLAUSE__INIT; *message = init_value; } size_t pg_query__row_mark_clause__get_packed_size (const PgQuery__RowMarkClause *message) { assert(message->base.descriptor == &pg_query__row_mark_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__row_mark_clause__pack (const PgQuery__RowMarkClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__row_mark_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__row_mark_clause__pack_to_buffer (const PgQuery__RowMarkClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__row_mark_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RowMarkClause * pg_query__row_mark_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RowMarkClause *) protobuf_c_message_unpack (&pg_query__row_mark_clause__descriptor, allocator, len, data); } void pg_query__row_mark_clause__free_unpacked (PgQuery__RowMarkClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__row_mark_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__xml_serialize__init (PgQuery__XmlSerialize *message) { static const PgQuery__XmlSerialize init_value = PG_QUERY__XML_SERIALIZE__INIT; *message = init_value; } size_t pg_query__xml_serialize__get_packed_size (const PgQuery__XmlSerialize *message) { assert(message->base.descriptor == &pg_query__xml_serialize__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__xml_serialize__pack (const PgQuery__XmlSerialize *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__xml_serialize__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__xml_serialize__pack_to_buffer (const PgQuery__XmlSerialize *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__xml_serialize__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__XmlSerialize * pg_query__xml_serialize__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__XmlSerialize *) protobuf_c_message_unpack (&pg_query__xml_serialize__descriptor, allocator, len, data); } void pg_query__xml_serialize__free_unpacked (PgQuery__XmlSerialize *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__xml_serialize__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__with_clause__init (PgQuery__WithClause *message) { static const PgQuery__WithClause init_value = PG_QUERY__WITH_CLAUSE__INIT; *message = init_value; } size_t pg_query__with_clause__get_packed_size (const PgQuery__WithClause *message) { assert(message->base.descriptor == &pg_query__with_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__with_clause__pack (const PgQuery__WithClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__with_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__with_clause__pack_to_buffer (const PgQuery__WithClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__with_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__WithClause * pg_query__with_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__WithClause *) protobuf_c_message_unpack (&pg_query__with_clause__descriptor, allocator, len, data); } void pg_query__with_clause__free_unpacked (PgQuery__WithClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__with_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__infer_clause__init (PgQuery__InferClause *message) { static const PgQuery__InferClause init_value = PG_QUERY__INFER_CLAUSE__INIT; *message = init_value; } size_t pg_query__infer_clause__get_packed_size (const PgQuery__InferClause *message) { assert(message->base.descriptor == &pg_query__infer_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__infer_clause__pack (const PgQuery__InferClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__infer_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__infer_clause__pack_to_buffer (const PgQuery__InferClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__infer_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__InferClause * pg_query__infer_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__InferClause *) protobuf_c_message_unpack (&pg_query__infer_clause__descriptor, allocator, len, data); } void pg_query__infer_clause__free_unpacked (PgQuery__InferClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__infer_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__on_conflict_clause__init (PgQuery__OnConflictClause *message) { static const PgQuery__OnConflictClause init_value = PG_QUERY__ON_CONFLICT_CLAUSE__INIT; *message = init_value; } size_t pg_query__on_conflict_clause__get_packed_size (const PgQuery__OnConflictClause *message) { assert(message->base.descriptor == &pg_query__on_conflict_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__on_conflict_clause__pack (const PgQuery__OnConflictClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__on_conflict_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__on_conflict_clause__pack_to_buffer (const PgQuery__OnConflictClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__on_conflict_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__OnConflictClause * pg_query__on_conflict_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__OnConflictClause *) protobuf_c_message_unpack (&pg_query__on_conflict_clause__descriptor, allocator, len, data); } void pg_query__on_conflict_clause__free_unpacked (PgQuery__OnConflictClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__on_conflict_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__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__role_spec__init (PgQuery__RoleSpec *message) { static const PgQuery__RoleSpec init_value = PG_QUERY__ROLE_SPEC__INIT; *message = init_value; } size_t pg_query__role_spec__get_packed_size (const PgQuery__RoleSpec *message) { assert(message->base.descriptor == &pg_query__role_spec__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__role_spec__pack (const PgQuery__RoleSpec *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__role_spec__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__role_spec__pack_to_buffer (const PgQuery__RoleSpec *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__role_spec__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RoleSpec * pg_query__role_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RoleSpec *) protobuf_c_message_unpack (&pg_query__role_spec__descriptor, allocator, len, data); } void pg_query__role_spec__free_unpacked (PgQuery__RoleSpec *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__role_spec__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__trigger_transition__init (PgQuery__TriggerTransition *message) { static const PgQuery__TriggerTransition init_value = PG_QUERY__TRIGGER_TRANSITION__INIT; *message = init_value; } size_t pg_query__trigger_transition__get_packed_size (const PgQuery__TriggerTransition *message) { assert(message->base.descriptor == &pg_query__trigger_transition__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__trigger_transition__pack (const PgQuery__TriggerTransition *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__trigger_transition__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__trigger_transition__pack_to_buffer (const PgQuery__TriggerTransition *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__trigger_transition__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__TriggerTransition * pg_query__trigger_transition__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__TriggerTransition *) protobuf_c_message_unpack (&pg_query__trigger_transition__descriptor, allocator, len, data); } void pg_query__trigger_transition__free_unpacked (PgQuery__TriggerTransition *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__trigger_transition__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__partition_elem__init (PgQuery__PartitionElem *message) { static const PgQuery__PartitionElem init_value = PG_QUERY__PARTITION_ELEM__INIT; *message = init_value; } size_t pg_query__partition_elem__get_packed_size (const PgQuery__PartitionElem *message) { assert(message->base.descriptor == &pg_query__partition_elem__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__partition_elem__pack (const PgQuery__PartitionElem *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__partition_elem__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__partition_elem__pack_to_buffer (const PgQuery__PartitionElem *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__partition_elem__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__PartitionElem * pg_query__partition_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__PartitionElem *) protobuf_c_message_unpack (&pg_query__partition_elem__descriptor, allocator, len, data); } void pg_query__partition_elem__free_unpacked (PgQuery__PartitionElem *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__partition_elem__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__partition_spec__init (PgQuery__PartitionSpec *message) { static const PgQuery__PartitionSpec init_value = PG_QUERY__PARTITION_SPEC__INIT; *message = init_value; } size_t pg_query__partition_spec__get_packed_size (const PgQuery__PartitionSpec *message) { assert(message->base.descriptor == &pg_query__partition_spec__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__partition_spec__pack (const PgQuery__PartitionSpec *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__partition_spec__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__partition_spec__pack_to_buffer (const PgQuery__PartitionSpec *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__partition_spec__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__PartitionSpec * pg_query__partition_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__PartitionSpec *) protobuf_c_message_unpack (&pg_query__partition_spec__descriptor, allocator, len, data); } void pg_query__partition_spec__free_unpacked (PgQuery__PartitionSpec *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__partition_spec__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__partition_bound_spec__init (PgQuery__PartitionBoundSpec *message) { static const PgQuery__PartitionBoundSpec init_value = PG_QUERY__PARTITION_BOUND_SPEC__INIT; *message = init_value; } size_t pg_query__partition_bound_spec__get_packed_size (const PgQuery__PartitionBoundSpec *message) { assert(message->base.descriptor == &pg_query__partition_bound_spec__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__partition_bound_spec__pack (const PgQuery__PartitionBoundSpec *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__partition_bound_spec__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__partition_bound_spec__pack_to_buffer (const PgQuery__PartitionBoundSpec *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__partition_bound_spec__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__PartitionBoundSpec * pg_query__partition_bound_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__PartitionBoundSpec *) protobuf_c_message_unpack (&pg_query__partition_bound_spec__descriptor, allocator, len, data); } void pg_query__partition_bound_spec__free_unpacked (PgQuery__PartitionBoundSpec *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__partition_bound_spec__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__partition_range_datum__init (PgQuery__PartitionRangeDatum *message) { static const PgQuery__PartitionRangeDatum init_value = PG_QUERY__PARTITION_RANGE_DATUM__INIT; *message = init_value; } size_t pg_query__partition_range_datum__get_packed_size (const PgQuery__PartitionRangeDatum *message) { assert(message->base.descriptor == &pg_query__partition_range_datum__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__partition_range_datum__pack (const PgQuery__PartitionRangeDatum *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__partition_range_datum__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__partition_range_datum__pack_to_buffer (const PgQuery__PartitionRangeDatum *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__partition_range_datum__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__PartitionRangeDatum * pg_query__partition_range_datum__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__PartitionRangeDatum *) protobuf_c_message_unpack (&pg_query__partition_range_datum__descriptor, allocator, len, data); } void pg_query__partition_range_datum__free_unpacked (PgQuery__PartitionRangeDatum *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__partition_range_datum__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__partition_cmd__init (PgQuery__PartitionCmd *message) { static const PgQuery__PartitionCmd init_value = PG_QUERY__PARTITION_CMD__INIT; *message = init_value; } size_t pg_query__partition_cmd__get_packed_size (const PgQuery__PartitionCmd *message) { assert(message->base.descriptor == &pg_query__partition_cmd__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__partition_cmd__pack (const PgQuery__PartitionCmd *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__partition_cmd__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__partition_cmd__pack_to_buffer (const PgQuery__PartitionCmd *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__partition_cmd__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__PartitionCmd * pg_query__partition_cmd__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__PartitionCmd *) protobuf_c_message_unpack (&pg_query__partition_cmd__descriptor, allocator, len, data); } void pg_query__partition_cmd__free_unpacked (PgQuery__PartitionCmd *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__partition_cmd__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__vacuum_relation__init (PgQuery__VacuumRelation *message) { static const PgQuery__VacuumRelation init_value = PG_QUERY__VACUUM_RELATION__INIT; *message = init_value; } size_t pg_query__vacuum_relation__get_packed_size (const PgQuery__VacuumRelation *message) { assert(message->base.descriptor == &pg_query__vacuum_relation__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__vacuum_relation__pack (const PgQuery__VacuumRelation *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__vacuum_relation__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__vacuum_relation__pack_to_buffer (const PgQuery__VacuumRelation *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__vacuum_relation__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__VacuumRelation * pg_query__vacuum_relation__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__VacuumRelation *) protobuf_c_message_unpack (&pg_query__vacuum_relation__descriptor, allocator, len, data); } void pg_query__vacuum_relation__free_unpacked (PgQuery__VacuumRelation *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__vacuum_relation__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__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__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__inline_code_block__init (PgQuery__InlineCodeBlock *message) { static const PgQuery__InlineCodeBlock init_value = PG_QUERY__INLINE_CODE_BLOCK__INIT; *message = init_value; } size_t pg_query__inline_code_block__get_packed_size (const PgQuery__InlineCodeBlock *message) { assert(message->base.descriptor == &pg_query__inline_code_block__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__inline_code_block__pack (const PgQuery__InlineCodeBlock *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__inline_code_block__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__inline_code_block__pack_to_buffer (const PgQuery__InlineCodeBlock *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__inline_code_block__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__InlineCodeBlock * pg_query__inline_code_block__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__InlineCodeBlock *) protobuf_c_message_unpack (&pg_query__inline_code_block__descriptor, allocator, len, data); } void pg_query__inline_code_block__free_unpacked (PgQuery__InlineCodeBlock *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__inline_code_block__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__call_context__init (PgQuery__CallContext *message) { static const PgQuery__CallContext init_value = PG_QUERY__CALL_CONTEXT__INIT; *message = init_value; } size_t pg_query__call_context__get_packed_size (const PgQuery__CallContext *message) { assert(message->base.descriptor == &pg_query__call_context__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__call_context__pack (const PgQuery__CallContext *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__call_context__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__call_context__pack_to_buffer (const PgQuery__CallContext *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__call_context__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CallContext * pg_query__call_context__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CallContext *) protobuf_c_message_unpack (&pg_query__call_context__descriptor, allocator, len, data); } void pg_query__call_context__free_unpacked (PgQuery__CallContext *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__call_context__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__scan_token__init (PgQuery__ScanToken *message) { static const PgQuery__ScanToken init_value = PG_QUERY__SCAN_TOKEN__INIT; *message = init_value; } size_t pg_query__scan_token__get_packed_size (const PgQuery__ScanToken *message) { assert(message->base.descriptor == &pg_query__scan_token__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__scan_token__pack (const PgQuery__ScanToken *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__scan_token__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__scan_token__pack_to_buffer (const PgQuery__ScanToken *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__scan_token__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ScanToken * pg_query__scan_token__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ScanToken *) protobuf_c_message_unpack (&pg_query__scan_token__descriptor, allocator, len, data); } void pg_query__scan_token__free_unpacked (PgQuery__ScanToken *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__scan_token__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } static const ProtobufCFieldDescriptor pg_query__parse_result__field_descriptors[2] = { { "version", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ParseResult, version), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "stmts", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ParseResult, n_stmts), offsetof(PgQuery__ParseResult, stmts), &pg_query__raw_stmt__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__parse_result__field_indices_by_name[] = { 1, /* field[1] = stmts */ 0, /* field[0] = version */ }; static const ProtobufCIntRange pg_query__parse_result__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__parse_result__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ParseResult", "ParseResult", "PgQuery__ParseResult", "pg_query", sizeof(PgQuery__ParseResult), 2, pg_query__parse_result__field_descriptors, pg_query__parse_result__field_indices_by_name, 1, pg_query__parse_result__number_ranges, (ProtobufCMessageInit) pg_query__parse_result__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__scan_result__field_descriptors[2] = { { "version", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ScanResult, version), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "tokens", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ScanResult, n_tokens), offsetof(PgQuery__ScanResult, tokens), &pg_query__scan_token__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__scan_result__field_indices_by_name[] = { 1, /* field[1] = tokens */ 0, /* field[0] = version */ }; static const ProtobufCIntRange pg_query__scan_result__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__scan_result__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ScanResult", "ScanResult", "PgQuery__ScanResult", "pg_query", sizeof(PgQuery__ScanResult), 2, pg_query__scan_result__field_descriptors, pg_query__scan_result__field_indices_by_name, 1, pg_query__scan_result__number_ranges, (ProtobufCMessageInit) pg_query__scan_result__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__node__field_descriptors[238] = { { "alias", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alias), &pg_query__alias__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_var", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_var), &pg_query__range_var__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table_func", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, table_func), &pg_query__table_func__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "var", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, var), &pg_query__var__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "param", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, param), &pg_query__param__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggref", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, aggref), &pg_query__aggref__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grouping_func", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, grouping_func), &pg_query__grouping_func__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "window_func", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, window_func), &pg_query__window_func__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "subscripting_ref", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, subscripting_ref), &pg_query__subscripting_ref__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func_expr", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, func_expr), &pg_query__func_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "named_arg_expr", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, named_arg_expr), &pg_query__named_arg_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "op_expr", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, op_expr), &pg_query__op_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "distinct_expr", 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, distinct_expr), &pg_query__distinct_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "null_if_expr", 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, null_if_expr), &pg_query__null_if_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "scalar_array_op_expr", 15, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, scalar_array_op_expr), &pg_query__scalar_array_op_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "bool_expr", 16, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, bool_expr), &pg_query__bool_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sub_link", 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, sub_link), &pg_query__sub_link__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sub_plan", 18, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, sub_plan), &pg_query__sub_plan__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alternative_sub_plan", 19, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alternative_sub_plan), &pg_query__alternative_sub_plan__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "field_select", 20, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, field_select), &pg_query__field_select__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "field_store", 21, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, field_store), &pg_query__field_store__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relabel_type", 22, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, relabel_type), &pg_query__relabel_type__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coerce_via_io", 23, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, coerce_via_io), &pg_query__coerce_via_io__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "array_coerce_expr", 24, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, array_coerce_expr), &pg_query__array_coerce_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "convert_rowtype_expr", 25, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, convert_rowtype_expr), &pg_query__convert_rowtype_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collate_expr", 26, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, collate_expr), &pg_query__collate_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "case_expr", 27, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, case_expr), &pg_query__case_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "case_when", 28, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, case_when), &pg_query__case_when__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "case_test_expr", 29, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, case_test_expr), &pg_query__case_test_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "array_expr", 30, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, array_expr), &pg_query__array_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "row_expr", 31, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, row_expr), &pg_query__row_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "row_compare_expr", 32, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, row_compare_expr), &pg_query__row_compare_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coalesce_expr", 33, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, coalesce_expr), &pg_query__coalesce_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "min_max_expr", 34, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, min_max_expr), &pg_query__min_max_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sqlvalue_function", 35, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, sqlvalue_function), &pg_query__sqlvalue_function__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "xml_expr", 36, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, xml_expr), &pg_query__xml_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "null_test", 37, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, null_test), &pg_query__null_test__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "boolean_test", 38, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, boolean_test), &pg_query__boolean_test__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coerce_to_domain", 39, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, coerce_to_domain), &pg_query__coerce_to_domain__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coerce_to_domain_value", 40, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, coerce_to_domain_value), &pg_query__coerce_to_domain_value__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "set_to_default", 41, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, set_to_default), &pg_query__set_to_default__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "current_of_expr", 42, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, current_of_expr), &pg_query__current_of_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "next_value_expr", 43, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, next_value_expr), &pg_query__next_value_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inference_elem", 44, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, inference_elem), &pg_query__inference_elem__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "target_entry", 45, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, target_entry), &pg_query__target_entry__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_tbl_ref", 46, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_tbl_ref), &pg_query__range_tbl_ref__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "join_expr", 47, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, join_expr), &pg_query__join_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "from_expr", 48, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, from_expr), &pg_query__from_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_conflict_expr", 49, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, on_conflict_expr), &pg_query__on_conflict_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "into_clause", 50, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, into_clause), &pg_query__into_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "merge_action", 51, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, merge_action), &pg_query__merge_action__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "raw_stmt", 52, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, raw_stmt), &pg_query__raw_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "query", 53, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, query), &pg_query__query__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "insert_stmt", 54, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, insert_stmt), &pg_query__insert_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "delete_stmt", 55, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, delete_stmt), &pg_query__delete_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "update_stmt", 56, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, update_stmt), &pg_query__update_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "merge_stmt", 57, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, merge_stmt), &pg_query__merge_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "select_stmt", 58, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, select_stmt), &pg_query__select_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "return_stmt", 59, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, return_stmt), &pg_query__return_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "plassign_stmt", 60, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, plassign_stmt), &pg_query__plassign_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_table_stmt", 61, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_table_stmt), &pg_query__alter_table_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_table_cmd", 62, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_table_cmd), &pg_query__alter_table_cmd__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_domain_stmt", 63, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_domain_stmt), &pg_query__alter_domain_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "set_operation_stmt", 64, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, set_operation_stmt), &pg_query__set_operation_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grant_stmt", 65, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, grant_stmt), &pg_query__grant_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grant_role_stmt", 66, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, grant_role_stmt), &pg_query__grant_role_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_default_privileges_stmt", 67, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_default_privileges_stmt), &pg_query__alter_default_privileges_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "close_portal_stmt", 68, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, close_portal_stmt), &pg_query__close_portal_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cluster_stmt", 69, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, cluster_stmt), &pg_query__cluster_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "copy_stmt", 70, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, copy_stmt), &pg_query__copy_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_stmt", 71, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_stmt), &pg_query__create_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "define_stmt", 72, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, define_stmt), &pg_query__define_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_stmt", 73, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, drop_stmt), &pg_query__drop_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "truncate_stmt", 74, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, truncate_stmt), &pg_query__truncate_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "comment_stmt", 75, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, comment_stmt), &pg_query__comment_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "fetch_stmt", 76, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, fetch_stmt), &pg_query__fetch_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "index_stmt", 77, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, index_stmt), &pg_query__index_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_function_stmt", 78, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_function_stmt), &pg_query__create_function_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_function_stmt", 79, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_function_stmt), &pg_query__alter_function_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "do_stmt", 80, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, do_stmt), &pg_query__do_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rename_stmt", 81, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, rename_stmt), &pg_query__rename_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rule_stmt", 82, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, rule_stmt), &pg_query__rule_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "notify_stmt", 83, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, notify_stmt), &pg_query__notify_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "listen_stmt", 84, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, listen_stmt), &pg_query__listen_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "unlisten_stmt", 85, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, unlisten_stmt), &pg_query__unlisten_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "transaction_stmt", 86, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, transaction_stmt), &pg_query__transaction_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "view_stmt", 87, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, view_stmt), &pg_query__view_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "load_stmt", 88, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, load_stmt), &pg_query__load_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_domain_stmt", 89, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_domain_stmt), &pg_query__create_domain_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "createdb_stmt", 90, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, createdb_stmt), &pg_query__createdb_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "dropdb_stmt", 91, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, dropdb_stmt), &pg_query__dropdb_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "vacuum_stmt", 92, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, vacuum_stmt), &pg_query__vacuum_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "explain_stmt", 93, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, explain_stmt), &pg_query__explain_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_table_as_stmt", 94, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_table_as_stmt), &pg_query__create_table_as_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_seq_stmt", 95, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_seq_stmt), &pg_query__create_seq_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_seq_stmt", 96, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_seq_stmt), &pg_query__alter_seq_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "variable_set_stmt", 97, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, variable_set_stmt), &pg_query__variable_set_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "variable_show_stmt", 98, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, variable_show_stmt), &pg_query__variable_show_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "discard_stmt", 99, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, discard_stmt), &pg_query__discard_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_trig_stmt", 100, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_trig_stmt), &pg_query__create_trig_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_plang_stmt", 101, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_plang_stmt), &pg_query__create_plang_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_role_stmt", 102, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_role_stmt), &pg_query__create_role_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_role_stmt", 103, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_role_stmt), &pg_query__alter_role_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_role_stmt", 104, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, drop_role_stmt), &pg_query__drop_role_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lock_stmt", 105, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, lock_stmt), &pg_query__lock_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "constraints_set_stmt", 106, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, constraints_set_stmt), &pg_query__constraints_set_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "reindex_stmt", 107, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, reindex_stmt), &pg_query__reindex_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "check_point_stmt", 108, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, check_point_stmt), &pg_query__check_point_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_schema_stmt", 109, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_schema_stmt), &pg_query__create_schema_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_database_stmt", 110, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_database_stmt), &pg_query__alter_database_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_database_refresh_coll_stmt", 111, 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, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_database_set_stmt", 112, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_database_set_stmt), &pg_query__alter_database_set_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_role_set_stmt", 113, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_role_set_stmt), &pg_query__alter_role_set_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_conversion_stmt", 114, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_conversion_stmt), &pg_query__create_conversion_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_cast_stmt", 115, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_cast_stmt), &pg_query__create_cast_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_op_class_stmt", 116, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_op_class_stmt), &pg_query__create_op_class_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_op_family_stmt", 117, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_op_family_stmt), &pg_query__create_op_family_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_op_family_stmt", 118, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_op_family_stmt), &pg_query__alter_op_family_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "prepare_stmt", 119, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, prepare_stmt), &pg_query__prepare_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "execute_stmt", 120, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, execute_stmt), &pg_query__execute_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "deallocate_stmt", 121, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, deallocate_stmt), &pg_query__deallocate_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "declare_cursor_stmt", 122, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, declare_cursor_stmt), &pg_query__declare_cursor_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_table_space_stmt", 123, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_table_space_stmt), &pg_query__create_table_space_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_table_space_stmt", 124, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, drop_table_space_stmt), &pg_query__drop_table_space_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_object_depends_stmt", 125, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_object_depends_stmt), &pg_query__alter_object_depends_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_object_schema_stmt", 126, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_object_schema_stmt), &pg_query__alter_object_schema_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_owner_stmt", 127, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_owner_stmt), &pg_query__alter_owner_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_operator_stmt", 128, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_operator_stmt), &pg_query__alter_operator_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_type_stmt", 129, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_type_stmt), &pg_query__alter_type_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_owned_stmt", 130, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, drop_owned_stmt), &pg_query__drop_owned_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "reassign_owned_stmt", 131, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, reassign_owned_stmt), &pg_query__reassign_owned_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "composite_type_stmt", 132, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, composite_type_stmt), &pg_query__composite_type_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_enum_stmt", 133, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_enum_stmt), &pg_query__create_enum_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_range_stmt", 134, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_range_stmt), &pg_query__create_range_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_enum_stmt", 135, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_enum_stmt), &pg_query__alter_enum_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_tsdictionary_stmt", 136, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_tsdictionary_stmt), &pg_query__alter_tsdictionary_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_tsconfiguration_stmt", 137, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_tsconfiguration_stmt), &pg_query__alter_tsconfiguration_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_fdw_stmt", 138, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_fdw_stmt), &pg_query__create_fdw_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_fdw_stmt", 139, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_fdw_stmt), &pg_query__alter_fdw_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_foreign_server_stmt", 140, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_foreign_server_stmt), &pg_query__create_foreign_server_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_foreign_server_stmt", 141, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_foreign_server_stmt), &pg_query__alter_foreign_server_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_user_mapping_stmt", 142, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_user_mapping_stmt), &pg_query__create_user_mapping_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_user_mapping_stmt", 143, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_user_mapping_stmt), &pg_query__alter_user_mapping_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_user_mapping_stmt", 144, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, drop_user_mapping_stmt), &pg_query__drop_user_mapping_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_table_space_options_stmt", 145, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_table_space_options_stmt), &pg_query__alter_table_space_options_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_table_move_all_stmt", 146, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_table_move_all_stmt), &pg_query__alter_table_move_all_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sec_label_stmt", 147, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, sec_label_stmt), &pg_query__sec_label_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_foreign_table_stmt", 148, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_foreign_table_stmt), &pg_query__create_foreign_table_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "import_foreign_schema_stmt", 149, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, import_foreign_schema_stmt), &pg_query__import_foreign_schema_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_extension_stmt", 150, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_extension_stmt), &pg_query__create_extension_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_extension_stmt", 151, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_extension_stmt), &pg_query__alter_extension_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_extension_contents_stmt", 152, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_extension_contents_stmt), &pg_query__alter_extension_contents_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_event_trig_stmt", 153, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_event_trig_stmt), &pg_query__create_event_trig_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_event_trig_stmt", 154, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_event_trig_stmt), &pg_query__alter_event_trig_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "refresh_mat_view_stmt", 155, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, refresh_mat_view_stmt), &pg_query__refresh_mat_view_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "replica_identity_stmt", 156, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, replica_identity_stmt), &pg_query__replica_identity_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_system_stmt", 157, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_system_stmt), &pg_query__alter_system_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_policy_stmt", 158, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_policy_stmt), &pg_query__create_policy_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_policy_stmt", 159, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_policy_stmt), &pg_query__alter_policy_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_transform_stmt", 160, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_transform_stmt), &pg_query__create_transform_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_am_stmt", 161, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_am_stmt), &pg_query__create_am_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_publication_stmt", 162, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_publication_stmt), &pg_query__create_publication_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_publication_stmt", 163, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_publication_stmt), &pg_query__alter_publication_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_subscription_stmt", 164, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_subscription_stmt), &pg_query__create_subscription_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_subscription_stmt", 165, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_subscription_stmt), &pg_query__alter_subscription_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_subscription_stmt", 166, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, drop_subscription_stmt), &pg_query__drop_subscription_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_stats_stmt", 167, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_stats_stmt), &pg_query__create_stats_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_collation_stmt", 168, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_collation_stmt), &pg_query__alter_collation_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "call_stmt", 169, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, call_stmt), &pg_query__call_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_stats_stmt", 170, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_stats_stmt), &pg_query__alter_stats_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_expr", 171, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, a_expr), &pg_query__a__expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "column_ref", 172, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, column_ref), &pg_query__column_ref__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "param_ref", 173, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, param_ref), &pg_query__param_ref__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func_call", 174, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, func_call), &pg_query__func_call__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_star", 175, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, a_star), &pg_query__a__star__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_indices", 176, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, a_indices), &pg_query__a__indices__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_indirection", 177, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, a_indirection), &pg_query__a__indirection__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_array_expr", 178, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, a_array_expr), &pg_query__a__array_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "res_target", 179, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, res_target), &pg_query__res_target__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "multi_assign_ref", 180, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, multi_assign_ref), &pg_query__multi_assign_ref__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_cast", 181, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, type_cast), &pg_query__type_cast__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collate_clause", 182, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, collate_clause), &pg_query__collate_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sort_by", 183, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, sort_by), &pg_query__sort_by__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "window_def", 184, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, window_def), &pg_query__window_def__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_subselect", 185, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_subselect), &pg_query__range_subselect__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_function", 186, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_function), &pg_query__range_function__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_table_sample", 187, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_table_sample), &pg_query__range_table_sample__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_table_func", 188, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_table_func), &pg_query__range_table_func__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_table_func_col", 189, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_table_func_col), &pg_query__range_table_func_col__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_name", 190, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, type_name), &pg_query__type_name__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "column_def", 191, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, column_def), &pg_query__column_def__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "index_elem", 192, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, index_elem), &pg_query__index_elem__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "stats_elem", 193, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, stats_elem), &pg_query__stats_elem__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "constraint", 194, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, constraint), &pg_query__constraint__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "def_elem", 195, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, def_elem), &pg_query__def_elem__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_tbl_entry", 196, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_tbl_entry), &pg_query__range_tbl_entry__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_tbl_function", 197, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_tbl_function), &pg_query__range_tbl_function__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table_sample_clause", 198, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, table_sample_clause), &pg_query__table_sample_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_check_option", 199, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, with_check_option), &pg_query__with_check_option__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sort_group_clause", 200, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, sort_group_clause), &pg_query__sort_group_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grouping_set", 201, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, grouping_set), &pg_query__grouping_set__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "window_clause", 202, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, window_clause), &pg_query__window_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "object_with_args", 203, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, object_with_args), &pg_query__object_with_args__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "access_priv", 204, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, access_priv), &pg_query__access_priv__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_op_class_item", 205, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_op_class_item), &pg_query__create_op_class_item__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table_like_clause", 206, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, table_like_clause), &pg_query__table_like_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "function_parameter", 207, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, function_parameter), &pg_query__function_parameter__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "locking_clause", 208, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, locking_clause), &pg_query__locking_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "row_mark_clause", 209, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, row_mark_clause), &pg_query__row_mark_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "xml_serialize", 210, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, xml_serialize), &pg_query__xml_serialize__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_clause", 211, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, with_clause), &pg_query__with_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "infer_clause", 212, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, infer_clause), &pg_query__infer_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_conflict_clause", 213, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, on_conflict_clause), &pg_query__on_conflict_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ctesearch_clause", 214, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, ctesearch_clause), &pg_query__ctesearch_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ctecycle_clause", 215, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, ctecycle_clause), &pg_query__ctecycle_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "common_table_expr", 216, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, common_table_expr), &pg_query__common_table_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "merge_when_clause", 217, 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, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "role_spec", 218, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, role_spec), &pg_query__role_spec__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "trigger_transition", 219, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, trigger_transition), &pg_query__trigger_transition__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_elem", 220, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, partition_elem), &pg_query__partition_elem__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_spec", 221, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, partition_spec), &pg_query__partition_spec__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_bound_spec", 222, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, partition_bound_spec), &pg_query__partition_bound_spec__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_range_datum", 223, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, partition_range_datum), &pg_query__partition_range_datum__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_cmd", 224, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, partition_cmd), &pg_query__partition_cmd__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "vacuum_relation", 225, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, vacuum_relation), &pg_query__vacuum_relation__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "publication_obj_spec", 226, 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, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "publication_table", 227, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, publication_table), &pg_query__publication_table__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inline_code_block", 228, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, inline_code_block), &pg_query__inline_code_block__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "call_context", 229, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, call_context), &pg_query__call_context__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "integer", 230, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, integer), &pg_query__integer__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "float", 231, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, float_), &pg_query__float__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "boolean", 232, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, boolean), &pg_query__boolean__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "string", 233, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, string), &pg_query__string__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "bit_string", 234, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, bit_string), &pg_query__bit_string__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "list", 235, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, list), &pg_query__list__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "int_list", 236, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, int_list), &pg_query__int_list__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "oid_list", 237, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, oid_list), &pg_query__oid_list__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_const", 238, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, a_const), &pg_query__a__const__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__node__field_indices_by_name[] = { 177, /* field[177] = a_array_expr */ 237, /* field[237] = a_const */ 170, /* field[170] = a_expr */ 175, /* field[175] = a_indices */ 176, /* field[176] = a_indirection */ 174, /* field[174] = a_star */ 203, /* field[203] = access_priv */ 5, /* field[5] = aggref */ 0, /* field[0] = alias */ 167, /* field[167] = alter_collation_stmt */ 110, /* field[110] = alter_database_refresh_coll_stmt */ 111, /* field[111] = alter_database_set_stmt */ 109, /* field[109] = alter_database_stmt */ 66, /* field[66] = alter_default_privileges_stmt */ 62, /* field[62] = alter_domain_stmt */ 134, /* field[134] = alter_enum_stmt */ 153, /* field[153] = alter_event_trig_stmt */ 151, /* field[151] = alter_extension_contents_stmt */ 150, /* field[150] = alter_extension_stmt */ 138, /* field[138] = alter_fdw_stmt */ 140, /* field[140] = alter_foreign_server_stmt */ 78, /* field[78] = alter_function_stmt */ 124, /* field[124] = alter_object_depends_stmt */ 125, /* field[125] = alter_object_schema_stmt */ 117, /* field[117] = alter_op_family_stmt */ 127, /* field[127] = alter_operator_stmt */ 126, /* field[126] = alter_owner_stmt */ 158, /* field[158] = alter_policy_stmt */ 162, /* field[162] = alter_publication_stmt */ 112, /* field[112] = alter_role_set_stmt */ 102, /* field[102] = alter_role_stmt */ 95, /* field[95] = alter_seq_stmt */ 169, /* field[169] = alter_stats_stmt */ 164, /* field[164] = alter_subscription_stmt */ 156, /* field[156] = alter_system_stmt */ 61, /* field[61] = alter_table_cmd */ 145, /* field[145] = alter_table_move_all_stmt */ 144, /* field[144] = alter_table_space_options_stmt */ 60, /* field[60] = alter_table_stmt */ 136, /* field[136] = alter_tsconfiguration_stmt */ 135, /* field[135] = alter_tsdictionary_stmt */ 128, /* field[128] = alter_type_stmt */ 142, /* field[142] = alter_user_mapping_stmt */ 18, /* field[18] = alternative_sub_plan */ 23, /* field[23] = array_coerce_expr */ 29, /* field[29] = array_expr */ 233, /* field[233] = bit_string */ 15, /* field[15] = bool_expr */ 231, /* field[231] = boolean */ 37, /* field[37] = boolean_test */ 228, /* field[228] = call_context */ 168, /* field[168] = call_stmt */ 26, /* field[26] = case_expr */ 28, /* field[28] = case_test_expr */ 27, /* field[27] = case_when */ 107, /* field[107] = check_point_stmt */ 67, /* field[67] = close_portal_stmt */ 68, /* field[68] = cluster_stmt */ 32, /* field[32] = coalesce_expr */ 38, /* field[38] = coerce_to_domain */ 39, /* field[39] = coerce_to_domain_value */ 22, /* field[22] = coerce_via_io */ 181, /* field[181] = collate_clause */ 25, /* field[25] = collate_expr */ 190, /* field[190] = column_def */ 171, /* field[171] = column_ref */ 74, /* field[74] = comment_stmt */ 215, /* field[215] = common_table_expr */ 131, /* field[131] = composite_type_stmt */ 193, /* field[193] = constraint */ 105, /* field[105] = constraints_set_stmt */ 24, /* field[24] = convert_rowtype_expr */ 69, /* field[69] = copy_stmt */ 160, /* field[160] = create_am_stmt */ 114, /* field[114] = create_cast_stmt */ 113, /* field[113] = create_conversion_stmt */ 88, /* field[88] = create_domain_stmt */ 132, /* field[132] = create_enum_stmt */ 152, /* field[152] = create_event_trig_stmt */ 149, /* field[149] = create_extension_stmt */ 137, /* field[137] = create_fdw_stmt */ 139, /* field[139] = create_foreign_server_stmt */ 147, /* field[147] = create_foreign_table_stmt */ 77, /* field[77] = create_function_stmt */ 204, /* field[204] = create_op_class_item */ 115, /* field[115] = create_op_class_stmt */ 116, /* field[116] = create_op_family_stmt */ 100, /* field[100] = create_plang_stmt */ 157, /* field[157] = create_policy_stmt */ 161, /* field[161] = create_publication_stmt */ 133, /* field[133] = create_range_stmt */ 101, /* field[101] = create_role_stmt */ 108, /* field[108] = create_schema_stmt */ 94, /* field[94] = create_seq_stmt */ 166, /* field[166] = create_stats_stmt */ 70, /* field[70] = create_stmt */ 163, /* field[163] = create_subscription_stmt */ 93, /* field[93] = create_table_as_stmt */ 122, /* field[122] = create_table_space_stmt */ 159, /* field[159] = create_transform_stmt */ 99, /* field[99] = create_trig_stmt */ 141, /* field[141] = create_user_mapping_stmt */ 89, /* field[89] = createdb_stmt */ 214, /* field[214] = ctecycle_clause */ 213, /* field[213] = ctesearch_clause */ 41, /* field[41] = current_of_expr */ 120, /* field[120] = deallocate_stmt */ 121, /* field[121] = declare_cursor_stmt */ 194, /* field[194] = def_elem */ 71, /* field[71] = define_stmt */ 54, /* field[54] = delete_stmt */ 98, /* field[98] = discard_stmt */ 12, /* field[12] = distinct_expr */ 79, /* field[79] = do_stmt */ 129, /* field[129] = drop_owned_stmt */ 103, /* field[103] = drop_role_stmt */ 72, /* field[72] = drop_stmt */ 165, /* field[165] = drop_subscription_stmt */ 123, /* field[123] = drop_table_space_stmt */ 143, /* field[143] = drop_user_mapping_stmt */ 90, /* field[90] = dropdb_stmt */ 119, /* field[119] = execute_stmt */ 92, /* field[92] = explain_stmt */ 75, /* field[75] = fetch_stmt */ 19, /* field[19] = field_select */ 20, /* field[20] = field_store */ 230, /* field[230] = float */ 47, /* field[47] = from_expr */ 173, /* field[173] = func_call */ 9, /* field[9] = func_expr */ 206, /* field[206] = function_parameter */ 65, /* field[65] = grant_role_stmt */ 64, /* field[64] = grant_stmt */ 6, /* field[6] = grouping_func */ 200, /* field[200] = grouping_set */ 148, /* field[148] = import_foreign_schema_stmt */ 191, /* field[191] = index_elem */ 76, /* field[76] = index_stmt */ 211, /* field[211] = infer_clause */ 43, /* field[43] = inference_elem */ 227, /* field[227] = inline_code_block */ 53, /* field[53] = insert_stmt */ 235, /* field[235] = int_list */ 229, /* field[229] = integer */ 49, /* field[49] = into_clause */ 46, /* field[46] = join_expr */ 234, /* field[234] = list */ 83, /* field[83] = listen_stmt */ 87, /* field[87] = load_stmt */ 104, /* field[104] = lock_stmt */ 207, /* field[207] = locking_clause */ 50, /* field[50] = merge_action */ 56, /* field[56] = merge_stmt */ 216, /* field[216] = merge_when_clause */ 33, /* field[33] = min_max_expr */ 179, /* field[179] = multi_assign_ref */ 10, /* field[10] = named_arg_expr */ 42, /* field[42] = next_value_expr */ 82, /* field[82] = notify_stmt */ 13, /* field[13] = null_if_expr */ 36, /* field[36] = null_test */ 202, /* field[202] = object_with_args */ 236, /* field[236] = oid_list */ 212, /* field[212] = on_conflict_clause */ 48, /* field[48] = on_conflict_expr */ 11, /* field[11] = op_expr */ 4, /* field[4] = param */ 172, /* field[172] = param_ref */ 221, /* field[221] = partition_bound_spec */ 223, /* field[223] = partition_cmd */ 219, /* field[219] = partition_elem */ 222, /* field[222] = partition_range_datum */ 220, /* field[220] = partition_spec */ 59, /* field[59] = plassign_stmt */ 118, /* field[118] = prepare_stmt */ 225, /* field[225] = publication_obj_spec */ 226, /* field[226] = publication_table */ 52, /* field[52] = query */ 185, /* field[185] = range_function */ 184, /* field[184] = range_subselect */ 187, /* field[187] = range_table_func */ 188, /* field[188] = range_table_func_col */ 186, /* field[186] = range_table_sample */ 195, /* field[195] = range_tbl_entry */ 196, /* field[196] = range_tbl_function */ 45, /* field[45] = range_tbl_ref */ 1, /* field[1] = range_var */ 51, /* field[51] = raw_stmt */ 130, /* field[130] = reassign_owned_stmt */ 154, /* field[154] = refresh_mat_view_stmt */ 106, /* field[106] = reindex_stmt */ 21, /* field[21] = relabel_type */ 80, /* field[80] = rename_stmt */ 155, /* field[155] = replica_identity_stmt */ 178, /* field[178] = res_target */ 58, /* field[58] = return_stmt */ 217, /* field[217] = role_spec */ 31, /* field[31] = row_compare_expr */ 30, /* field[30] = row_expr */ 208, /* field[208] = row_mark_clause */ 81, /* field[81] = rule_stmt */ 14, /* field[14] = scalar_array_op_expr */ 146, /* field[146] = sec_label_stmt */ 57, /* field[57] = select_stmt */ 63, /* field[63] = set_operation_stmt */ 40, /* field[40] = set_to_default */ 182, /* field[182] = sort_by */ 199, /* field[199] = sort_group_clause */ 34, /* field[34] = sqlvalue_function */ 192, /* field[192] = stats_elem */ 232, /* field[232] = string */ 16, /* field[16] = sub_link */ 17, /* field[17] = sub_plan */ 8, /* field[8] = subscripting_ref */ 2, /* field[2] = table_func */ 205, /* field[205] = table_like_clause */ 197, /* field[197] = table_sample_clause */ 44, /* field[44] = target_entry */ 85, /* field[85] = transaction_stmt */ 218, /* field[218] = trigger_transition */ 73, /* field[73] = truncate_stmt */ 180, /* field[180] = type_cast */ 189, /* field[189] = type_name */ 84, /* field[84] = unlisten_stmt */ 55, /* field[55] = update_stmt */ 224, /* field[224] = vacuum_relation */ 91, /* field[91] = vacuum_stmt */ 3, /* field[3] = var */ 96, /* field[96] = variable_set_stmt */ 97, /* field[97] = variable_show_stmt */ 86, /* field[86] = view_stmt */ 201, /* field[201] = window_clause */ 183, /* field[183] = window_def */ 7, /* field[7] = window_func */ 198, /* field[198] = with_check_option */ 210, /* field[210] = with_clause */ 35, /* field[35] = xml_expr */ 209, /* field[209] = xml_serialize */ }; static const ProtobufCIntRange pg_query__node__number_ranges[1 + 1] = { { 1, 0 }, { 0, 238 } }; const ProtobufCMessageDescriptor pg_query__node__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Node", "Node", "PgQuery__Node", "pg_query", sizeof(PgQuery__Node), 238, 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, 0 | 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, 0 | 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, 0 | 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, 0 | 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, 0 | 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[13] = { { "ns_uris", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_ns_uris), offsetof(PgQuery__TableFunc, ns_uris), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ns_names", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_ns_names), offsetof(PgQuery__TableFunc, ns_names), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "docexpr", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__TableFunc, docexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rowexpr", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__TableFunc, rowexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "colnames", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_colnames), offsetof(PgQuery__TableFunc, colnames), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coltypes", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_coltypes), offsetof(PgQuery__TableFunc, coltypes), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coltypmods", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_coltypmods), offsetof(PgQuery__TableFunc, coltypmods), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "colcollations", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_colcollations), offsetof(PgQuery__TableFunc, colcollations), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "colexprs", 9, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_colexprs), offsetof(PgQuery__TableFunc, colexprs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coldefexprs", 10, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_coldefexprs), offsetof(PgQuery__TableFunc, coldefexprs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "notnulls", 11, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, offsetof(PgQuery__TableFunc, n_notnulls), offsetof(PgQuery__TableFunc, notnulls), NULL, NULL, 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ordinalitycol", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__TableFunc, ordinalitycol), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__TableFunc, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__table_func__field_indices_by_name[] = { 7, /* field[7] = colcollations */ 9, /* field[9] = coldefexprs */ 8, /* field[8] = colexprs */ 4, /* field[4] = colnames */ 5, /* field[5] = coltypes */ 6, /* field[6] = coltypmods */ 2, /* field[2] = docexpr */ 12, /* field[12] = location */ 10, /* field[10] = notnulls */ 1, /* field[1] = ns_names */ 0, /* field[0] = ns_uris */ 11, /* field[11] = ordinalitycol */ 3, /* field[3] = rowexpr */ }; static const ProtobufCIntRange pg_query__table_func__number_ranges[1 + 1] = { { 1, 0 }, { 0, 13 } }; const ProtobufCMessageDescriptor pg_query__table_func__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TableFunc", "TableFunc", "PgQuery__TableFunc", "pg_query", sizeof(PgQuery__TableFunc), 13, pg_query__table_func__field_descriptors, pg_query__table_func__field_indices_by_name, 1, pg_query__table_func__number_ranges, (ProtobufCMessageInit) pg_query__table_func__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__var__field_descriptors[10] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Var, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "varno", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_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 */ }, { "varlevelsup", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Var, varlevelsup), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "varnosyn", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Var, varnosyn), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "varattnosyn", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Var, varattnosyn), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Var, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__var__field_indices_by_name[] = { 9, /* field[9] = location */ 2, /* field[2] = varattno */ 8, /* field[8] = varattnosyn */ 5, /* field[5] = varcollid */ 6, /* field[6] = varlevelsup */ 1, /* field[1] = varno */ 7, /* field[7] = varnosyn */ 3, /* field[3] = vartype */ 4, /* field[4] = vartypmod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__var__number_ranges[1 + 1] = { { 1, 0 }, { 0, 10 } }; const ProtobufCMessageDescriptor pg_query__var__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Var", "Var", "PgQuery__Var", "pg_query", sizeof(PgQuery__Var), 10, pg_query__var__field_descriptors, pg_query__var__field_indices_by_name, 1, pg_query__var__number_ranges, (ProtobufCMessageInit) pg_query__var__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__param__field_descriptors[7] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Param, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "paramkind", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__Param, paramkind), &pg_query__param_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "paramid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Param, paramid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "paramtype", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Param, paramtype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "paramtypmod", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Param, paramtypmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "paramcollid", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Param, paramcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Param, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__param__field_indices_by_name[] = { 6, /* field[6] = location */ 5, /* field[5] = paramcollid */ 2, /* field[2] = paramid */ 1, /* field[1] = paramkind */ 3, /* field[3] = paramtype */ 4, /* field[4] = paramtypmod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__param__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__param__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Param", "Param", "PgQuery__Param", "pg_query", sizeof(PgQuery__Param), 7, pg_query__param__field_descriptors, pg_query__param__field_indices_by_name, 1, pg_query__param__number_ranges, (ProtobufCMessageInit) pg_query__param__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__aggref__field_descriptors[20] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggfnoid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggfnoid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggtype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggtype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggcollid", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inputcollid", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, inputcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggtranstype", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggtranstype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggargtypes", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Aggref, n_aggargtypes), offsetof(PgQuery__Aggref, aggargtypes), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggdirectargs", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Aggref, n_aggdirectargs), offsetof(PgQuery__Aggref, aggdirectargs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 9, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Aggref, n_args), offsetof(PgQuery__Aggref, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggorder", 10, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Aggref, n_aggorder), offsetof(PgQuery__Aggref, aggorder), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggdistinct", 11, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Aggref, n_aggdistinct), offsetof(PgQuery__Aggref, aggdistinct), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggfilter", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggfilter), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggstar", 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggstar), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggvariadic", 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggvariadic), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggkind", 15, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggkind), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "agglevelsup", 16, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, agglevelsup), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggsplit", 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggsplit), &pg_query__agg_split__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggno", 18, 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", 19, 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", 20, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__aggref__field_indices_by_name[] = { 6, /* field[6] = aggargtypes */ 3, /* field[3] = aggcollid */ 7, /* field[7] = aggdirectargs */ 10, /* field[10] = aggdistinct */ 11, /* field[11] = aggfilter */ 1, /* field[1] = aggfnoid */ 14, /* field[14] = aggkind */ 15, /* field[15] = agglevelsup */ 17, /* field[17] = aggno */ 9, /* field[9] = aggorder */ 16, /* field[16] = aggsplit */ 12, /* field[12] = aggstar */ 18, /* field[18] = aggtransno */ 5, /* field[5] = aggtranstype */ 2, /* field[2] = aggtype */ 13, /* field[13] = aggvariadic */ 8, /* field[8] = args */ 4, /* field[4] = inputcollid */ 19, /* field[19] = location */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__aggref__number_ranges[1 + 1] = { { 1, 0 }, { 0, 20 } }; const ProtobufCMessageDescriptor pg_query__aggref__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Aggref", "Aggref", "PgQuery__Aggref", "pg_query", sizeof(PgQuery__Aggref), 20, pg_query__aggref__field_descriptors, pg_query__aggref__field_indices_by_name, 1, pg_query__aggref__number_ranges, (ProtobufCMessageInit) pg_query__aggref__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__grouping_func__field_descriptors[6] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__GroupingFunc, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__GroupingFunc, n_args), offsetof(PgQuery__GroupingFunc, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "refs", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__GroupingFunc, n_refs), offsetof(PgQuery__GroupingFunc, refs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cols", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__GroupingFunc, n_cols), offsetof(PgQuery__GroupingFunc, cols), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "agglevelsup", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__GroupingFunc, agglevelsup), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__GroupingFunc, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__grouping_func__field_indices_by_name[] = { 4, /* field[4] = agglevelsup */ 1, /* field[1] = args */ 3, /* field[3] = cols */ 5, /* field[5] = location */ 2, /* field[2] = refs */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__grouping_func__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__grouping_func__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.GroupingFunc", "GroupingFunc", "PgQuery__GroupingFunc", "pg_query", sizeof(PgQuery__GroupingFunc), 6, pg_query__grouping_func__field_descriptors, pg_query__grouping_func__field_indices_by_name, 1, pg_query__grouping_func__number_ranges, (ProtobufCMessageInit) pg_query__grouping_func__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__window_func__field_descriptors[11] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "winfnoid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, winfnoid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "wintype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, wintype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "wincollid", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, wincollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inputcollid", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, inputcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__WindowFunc, n_args), offsetof(PgQuery__WindowFunc, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggfilter", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, aggfilter), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "winref", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, winref), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "winstar", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, winstar), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "winagg", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, winagg), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__window_func__field_indices_by_name[] = { 6, /* field[6] = aggfilter */ 5, /* field[5] = args */ 4, /* field[4] = inputcollid */ 10, /* field[10] = location */ 9, /* field[9] = winagg */ 3, /* field[3] = wincollid */ 1, /* field[1] = winfnoid */ 7, /* field[7] = winref */ 8, /* field[8] = winstar */ 2, /* field[2] = wintype */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__window_func__number_ranges[1 + 1] = { { 1, 0 }, { 0, 11 } }; const ProtobufCMessageDescriptor pg_query__window_func__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.WindowFunc", "WindowFunc", "PgQuery__WindowFunc", "pg_query", sizeof(PgQuery__WindowFunc), 11, pg_query__window_func__field_descriptors, pg_query__window_func__field_indices_by_name, 1, pg_query__window_func__number_ranges, (ProtobufCMessageInit) pg_query__window_func__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__subscripting_ref__field_descriptors[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[9] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__OpExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opno", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__OpExpr, opno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opfuncid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__OpExpr, opfuncid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opresulttype", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__OpExpr, opresulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opretset", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__OpExpr, opretset), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opcollid", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__OpExpr, opcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inputcollid", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__OpExpr, inputcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__OpExpr, n_args), offsetof(PgQuery__OpExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__OpExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__op_expr__field_indices_by_name[] = { 7, /* field[7] = args */ 6, /* field[6] = inputcollid */ 8, /* field[8] = location */ 5, /* field[5] = opcollid */ 2, /* field[2] = opfuncid */ 1, /* field[1] = opno */ 3, /* field[3] = opresulttype */ 4, /* field[4] = opretset */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__op_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 9 } }; const ProtobufCMessageDescriptor pg_query__op_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.OpExpr", "OpExpr", "PgQuery__OpExpr", "pg_query", sizeof(PgQuery__OpExpr), 9, pg_query__op_expr__field_descriptors, pg_query__op_expr__field_indices_by_name, 1, pg_query__op_expr__number_ranges, (ProtobufCMessageInit) pg_query__op_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__distinct_expr__field_descriptors[9] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__DistinctExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opno", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__DistinctExpr, opno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opfuncid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__DistinctExpr, opfuncid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opresulttype", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__DistinctExpr, opresulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opretset", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DistinctExpr, opretset), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opcollid", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__DistinctExpr, opcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inputcollid", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__DistinctExpr, inputcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DistinctExpr, n_args), offsetof(PgQuery__DistinctExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__DistinctExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__distinct_expr__field_indices_by_name[] = { 7, /* field[7] = args */ 6, /* field[6] = inputcollid */ 8, /* field[8] = location */ 5, /* field[5] = opcollid */ 2, /* field[2] = opfuncid */ 1, /* field[1] = opno */ 3, /* field[3] = opresulttype */ 4, /* field[4] = opretset */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__distinct_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 9 } }; const ProtobufCMessageDescriptor pg_query__distinct_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DistinctExpr", "DistinctExpr", "PgQuery__DistinctExpr", "pg_query", sizeof(PgQuery__DistinctExpr), 9, pg_query__distinct_expr__field_descriptors, pg_query__distinct_expr__field_indices_by_name, 1, pg_query__distinct_expr__number_ranges, (ProtobufCMessageInit) pg_query__distinct_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__null_if_expr__field_descriptors[9] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__NullIfExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opno", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__NullIfExpr, opno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opfuncid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__NullIfExpr, opfuncid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opresulttype", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__NullIfExpr, opresulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opretset", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__NullIfExpr, opretset), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opcollid", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__NullIfExpr, opcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inputcollid", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__NullIfExpr, inputcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__NullIfExpr, n_args), offsetof(PgQuery__NullIfExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__NullIfExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__null_if_expr__field_indices_by_name[] = { 7, /* field[7] = args */ 6, /* field[6] = inputcollid */ 8, /* field[8] = location */ 5, /* field[5] = opcollid */ 2, /* field[2] = opfuncid */ 1, /* field[1] = opno */ 3, /* field[3] = opresulttype */ 4, /* field[4] = opretset */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__null_if_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 9 } }; const ProtobufCMessageDescriptor pg_query__null_if_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.NullIfExpr", "NullIfExpr", "PgQuery__NullIfExpr", "pg_query", sizeof(PgQuery__NullIfExpr), 9, pg_query__null_if_expr__field_descriptors, pg_query__null_if_expr__field_indices_by_name, 1, pg_query__null_if_expr__number_ranges, (ProtobufCMessageInit) pg_query__null_if_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__scalar_array_op_expr__field_descriptors[9] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ScalarArrayOpExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opno", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ScalarArrayOpExpr, opno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opfuncid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ScalarArrayOpExpr, opfuncid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "hashfuncid", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ScalarArrayOpExpr, hashfuncid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "negfuncid", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ScalarArrayOpExpr, negfuncid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "use_or", 6, 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", 7, 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", 8, 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", 9, 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[] = { 7, /* field[7] = args */ 3, /* field[3] = hashfuncid */ 6, /* field[6] = inputcollid */ 8, /* field[8] = location */ 4, /* field[4] = negfuncid */ 2, /* field[2] = opfuncid */ 1, /* field[1] = opno */ 5, /* field[5] = use_or */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__scalar_array_op_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 9 } }; 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), 9, pg_query__scalar_array_op_expr__field_descriptors, pg_query__scalar_array_op_expr__field_indices_by_name, 1, pg_query__scalar_array_op_expr__number_ranges, (ProtobufCMessageInit) pg_query__scalar_array_op_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__bool_expr__field_descriptors[4] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__BoolExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "boolop", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__BoolExpr, boolop), &pg_query__bool_expr_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__BoolExpr, n_args), offsetof(PgQuery__BoolExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__BoolExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__bool_expr__field_indices_by_name[] = { 2, /* field[2] = args */ 1, /* field[1] = boolop */ 3, /* field[3] = location */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__bool_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__bool_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.BoolExpr", "BoolExpr", "PgQuery__BoolExpr", "pg_query", sizeof(PgQuery__BoolExpr), 4, pg_query__bool_expr__field_descriptors, pg_query__bool_expr__field_indices_by_name, 1, pg_query__bool_expr__number_ranges, (ProtobufCMessageInit) pg_query__bool_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__sub_link__field_descriptors[7] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SubLink, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sub_link_type", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__SubLink, sub_link_type), &pg_query__sub_link_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sub_link_id", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SubLink, sub_link_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "testexpr", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SubLink, testexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "oper_name", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SubLink, n_oper_name), offsetof(PgQuery__SubLink, oper_name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "subselect", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SubLink, subselect), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SubLink, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__sub_link__field_indices_by_name[] = { 6, /* field[6] = location */ 4, /* field[4] = oper_name */ 2, /* field[2] = sub_link_id */ 1, /* field[1] = sub_link_type */ 5, /* field[5] = subselect */ 3, /* field[3] = testexpr */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__sub_link__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__sub_link__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SubLink", "SubLink", "PgQuery__SubLink", "pg_query", sizeof(PgQuery__SubLink), 7, pg_query__sub_link__field_descriptors, pg_query__sub_link__field_indices_by_name, 1, pg_query__sub_link__number_ranges, (ProtobufCMessageInit) pg_query__sub_link__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__sub_plan__field_descriptors[17] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sub_link_type", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, sub_link_type), &pg_query__sub_link_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "testexpr", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, testexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "param_ids", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SubPlan, n_param_ids), offsetof(PgQuery__SubPlan, param_ids), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "plan_id", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, plan_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "plan_name", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, plan_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "first_col_type", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, first_col_type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "first_col_typmod", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, first_col_typmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "first_col_collation", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, first_col_collation), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "use_hash_table", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, use_hash_table), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "unknown_eq_false", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, unknown_eq_false), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "parallel_safe", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, parallel_safe), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "set_param", 13, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SubPlan, n_set_param), offsetof(PgQuery__SubPlan, set_param), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "par_param", 14, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SubPlan, n_par_param), offsetof(PgQuery__SubPlan, par_param), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 15, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SubPlan, n_args), offsetof(PgQuery__SubPlan, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "startup_cost", 16, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_DOUBLE, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, startup_cost), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "per_call_cost", 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_DOUBLE, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, per_call_cost), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__sub_plan__field_indices_by_name[] = { 14, /* field[14] = args */ 8, /* field[8] = first_col_collation */ 6, /* field[6] = first_col_type */ 7, /* field[7] = first_col_typmod */ 13, /* field[13] = par_param */ 11, /* field[11] = parallel_safe */ 3, /* field[3] = param_ids */ 16, /* field[16] = per_call_cost */ 4, /* field[4] = plan_id */ 5, /* field[5] = plan_name */ 12, /* field[12] = set_param */ 15, /* field[15] = startup_cost */ 1, /* field[1] = sub_link_type */ 2, /* field[2] = testexpr */ 10, /* field[10] = unknown_eq_false */ 9, /* field[9] = use_hash_table */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__sub_plan__number_ranges[1 + 1] = { { 1, 0 }, { 0, 17 } }; const ProtobufCMessageDescriptor pg_query__sub_plan__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SubPlan", "SubPlan", "PgQuery__SubPlan", "pg_query", sizeof(PgQuery__SubPlan), 17, pg_query__sub_plan__field_descriptors, pg_query__sub_plan__field_indices_by_name, 1, pg_query__sub_plan__number_ranges, (ProtobufCMessageInit) pg_query__sub_plan__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alternative_sub_plan__field_descriptors[2] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlternativeSubPlan, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "subplans", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlternativeSubPlan, n_subplans), offsetof(PgQuery__AlternativeSubPlan, subplans), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alternative_sub_plan__field_indices_by_name[] = { 1, /* field[1] = subplans */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__alternative_sub_plan__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__alternative_sub_plan__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlternativeSubPlan", "AlternativeSubPlan", "PgQuery__AlternativeSubPlan", "pg_query", sizeof(PgQuery__AlternativeSubPlan), 2, pg_query__alternative_sub_plan__field_descriptors, pg_query__alternative_sub_plan__field_indices_by_name, 1, pg_query__alternative_sub_plan__number_ranges, (ProtobufCMessageInit) pg_query__alternative_sub_plan__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__field_select__field_descriptors[6] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__FieldSelect, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__FieldSelect, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "fieldnum", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__FieldSelect, fieldnum), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttype", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__FieldSelect, resulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttypmod", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__FieldSelect, resulttypmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resultcollid", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__FieldSelect, resultcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__field_select__field_indices_by_name[] = { 1, /* field[1] = arg */ 2, /* field[2] = fieldnum */ 5, /* field[5] = resultcollid */ 3, /* field[3] = resulttype */ 4, /* field[4] = resulttypmod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__field_select__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__field_select__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.FieldSelect", "FieldSelect", "PgQuery__FieldSelect", "pg_query", sizeof(PgQuery__FieldSelect), 6, pg_query__field_select__field_descriptors, pg_query__field_select__field_indices_by_name, 1, pg_query__field_select__number_ranges, (ProtobufCMessageInit) pg_query__field_select__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__field_store__field_descriptors[5] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__FieldStore, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__FieldStore, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "newvals", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__FieldStore, n_newvals), offsetof(PgQuery__FieldStore, newvals), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "fieldnums", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__FieldStore, n_fieldnums), offsetof(PgQuery__FieldStore, fieldnums), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttype", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__FieldStore, resulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__field_store__field_indices_by_name[] = { 1, /* field[1] = arg */ 3, /* field[3] = fieldnums */ 2, /* field[2] = newvals */ 4, /* field[4] = resulttype */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__field_store__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__field_store__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.FieldStore", "FieldStore", "PgQuery__FieldStore", "pg_query", sizeof(PgQuery__FieldStore), 5, pg_query__field_store__field_descriptors, pg_query__field_store__field_indices_by_name, 1, pg_query__field_store__number_ranges, (ProtobufCMessageInit) pg_query__field_store__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__relabel_type__field_descriptors[7] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RelabelType, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RelabelType, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RelabelType, resulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttypmod", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RelabelType, resulttypmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resultcollid", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RelabelType, resultcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relabelformat", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RelabelType, relabelformat), &pg_query__coercion_form__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RelabelType, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__relabel_type__field_indices_by_name[] = { 1, /* field[1] = arg */ 6, /* field[6] = location */ 5, /* field[5] = relabelformat */ 4, /* field[4] = resultcollid */ 2, /* field[2] = resulttype */ 3, /* field[3] = resulttypmod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__relabel_type__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__relabel_type__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RelabelType", "RelabelType", "PgQuery__RelabelType", "pg_query", sizeof(PgQuery__RelabelType), 7, pg_query__relabel_type__field_descriptors, pg_query__relabel_type__field_indices_by_name, 1, pg_query__relabel_type__number_ranges, (ProtobufCMessageInit) pg_query__relabel_type__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__coerce_via_io__field_descriptors[6] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceViaIO, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceViaIO, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceViaIO, resulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resultcollid", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceViaIO, resultcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coerceformat", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceViaIO, coerceformat), &pg_query__coercion_form__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceViaIO, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__coerce_via_io__field_indices_by_name[] = { 1, /* field[1] = arg */ 4, /* field[4] = coerceformat */ 5, /* field[5] = location */ 3, /* field[3] = resultcollid */ 2, /* field[2] = resulttype */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__coerce_via_io__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__coerce_via_io__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CoerceViaIO", "CoerceViaIO", "PgQuery__CoerceViaIO", "pg_query", sizeof(PgQuery__CoerceViaIO), 6, pg_query__coerce_via_io__field_descriptors, pg_query__coerce_via_io__field_indices_by_name, 1, pg_query__coerce_via_io__number_ranges, (ProtobufCMessageInit) pg_query__coerce_via_io__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__array_coerce_expr__field_descriptors[8] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayCoerceExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayCoerceExpr, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "elemexpr", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayCoerceExpr, elemexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttype", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayCoerceExpr, resulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttypmod", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayCoerceExpr, resulttypmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resultcollid", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayCoerceExpr, resultcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coerceformat", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayCoerceExpr, coerceformat), &pg_query__coercion_form__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayCoerceExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__array_coerce_expr__field_indices_by_name[] = { 1, /* field[1] = arg */ 6, /* field[6] = coerceformat */ 2, /* field[2] = elemexpr */ 7, /* field[7] = location */ 5, /* field[5] = resultcollid */ 3, /* field[3] = resulttype */ 4, /* field[4] = resulttypmod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__array_coerce_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__array_coerce_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ArrayCoerceExpr", "ArrayCoerceExpr", "PgQuery__ArrayCoerceExpr", "pg_query", sizeof(PgQuery__ArrayCoerceExpr), 8, pg_query__array_coerce_expr__field_descriptors, pg_query__array_coerce_expr__field_indices_by_name, 1, pg_query__array_coerce_expr__number_ranges, (ProtobufCMessageInit) pg_query__array_coerce_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__convert_rowtype_expr__field_descriptors[5] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ConvertRowtypeExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ConvertRowtypeExpr, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ConvertRowtypeExpr, resulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "convertformat", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__ConvertRowtypeExpr, convertformat), &pg_query__coercion_form__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ConvertRowtypeExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__convert_rowtype_expr__field_indices_by_name[] = { 1, /* field[1] = arg */ 3, /* field[3] = convertformat */ 4, /* field[4] = location */ 2, /* field[2] = resulttype */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__convert_rowtype_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__convert_rowtype_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ConvertRowtypeExpr", "ConvertRowtypeExpr", "PgQuery__ConvertRowtypeExpr", "pg_query", sizeof(PgQuery__ConvertRowtypeExpr), 5, pg_query__convert_rowtype_expr__field_descriptors, pg_query__convert_rowtype_expr__field_indices_by_name, 1, pg_query__convert_rowtype_expr__number_ranges, (ProtobufCMessageInit) pg_query__convert_rowtype_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__collate_expr__field_descriptors[4] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CollateExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CollateExpr, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coll_oid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CollateExpr, coll_oid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CollateExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__collate_expr__field_indices_by_name[] = { 1, /* field[1] = arg */ 2, /* field[2] = coll_oid */ 3, /* field[3] = location */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__collate_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__collate_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CollateExpr", "CollateExpr", "PgQuery__CollateExpr", "pg_query", sizeof(PgQuery__CollateExpr), 4, pg_query__collate_expr__field_descriptors, pg_query__collate_expr__field_indices_by_name, 1, pg_query__collate_expr__number_ranges, (ProtobufCMessageInit) pg_query__collate_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__case_expr__field_descriptors[7] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CaseExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "casetype", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CaseExpr, casetype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "casecollid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CaseExpr, casecollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CaseExpr, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CaseExpr, n_args), offsetof(PgQuery__CaseExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "defresult", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CaseExpr, defresult), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CaseExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__case_expr__field_indices_by_name[] = { 3, /* field[3] = arg */ 4, /* field[4] = args */ 2, /* field[2] = casecollid */ 1, /* field[1] = casetype */ 5, /* field[5] = defresult */ 6, /* field[6] = location */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__case_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__case_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CaseExpr", "CaseExpr", "PgQuery__CaseExpr", "pg_query", sizeof(PgQuery__CaseExpr), 7, pg_query__case_expr__field_descriptors, pg_query__case_expr__field_indices_by_name, 1, pg_query__case_expr__number_ranges, (ProtobufCMessageInit) pg_query__case_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__case_when__field_descriptors[4] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CaseWhen, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "expr", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CaseWhen, expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "result", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CaseWhen, result), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CaseWhen, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__case_when__field_indices_by_name[] = { 1, /* field[1] = expr */ 3, /* field[3] = location */ 2, /* field[2] = result */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__case_when__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__case_when__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CaseWhen", "CaseWhen", "PgQuery__CaseWhen", "pg_query", sizeof(PgQuery__CaseWhen), 4, pg_query__case_when__field_descriptors, pg_query__case_when__field_indices_by_name, 1, pg_query__case_when__number_ranges, (ProtobufCMessageInit) pg_query__case_when__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__case_test_expr__field_descriptors[4] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CaseTestExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_id", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CaseTestExpr, type_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_mod", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CaseTestExpr, type_mod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collation", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CaseTestExpr, collation), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__case_test_expr__field_indices_by_name[] = { 3, /* field[3] = collation */ 1, /* field[1] = type_id */ 2, /* field[2] = type_mod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__case_test_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__case_test_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CaseTestExpr", "CaseTestExpr", "PgQuery__CaseTestExpr", "pg_query", sizeof(PgQuery__CaseTestExpr), 4, pg_query__case_test_expr__field_descriptors, pg_query__case_test_expr__field_indices_by_name, 1, pg_query__case_test_expr__number_ranges, (ProtobufCMessageInit) pg_query__case_test_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__array_expr__field_descriptors[7] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "array_typeid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayExpr, array_typeid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "array_collid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayExpr, array_collid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "element_typeid", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayExpr, element_typeid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "elements", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ArrayExpr, n_elements), offsetof(PgQuery__ArrayExpr, elements), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "multidims", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayExpr, multidims), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__array_expr__field_indices_by_name[] = { 2, /* field[2] = array_collid */ 1, /* field[1] = array_typeid */ 3, /* field[3] = element_typeid */ 4, /* field[4] = elements */ 6, /* field[6] = location */ 5, /* field[5] = multidims */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__array_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__array_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ArrayExpr", "ArrayExpr", "PgQuery__ArrayExpr", "pg_query", sizeof(PgQuery__ArrayExpr), 7, pg_query__array_expr__field_descriptors, pg_query__array_expr__field_indices_by_name, 1, pg_query__array_expr__number_ranges, (ProtobufCMessageInit) pg_query__array_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__row_expr__field_descriptors[6] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RowExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RowExpr, n_args), offsetof(PgQuery__RowExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "row_typeid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RowExpr, row_typeid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "row_format", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RowExpr, row_format), &pg_query__coercion_form__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "colnames", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RowExpr, n_colnames), offsetof(PgQuery__RowExpr, colnames), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RowExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__row_expr__field_indices_by_name[] = { 1, /* field[1] = args */ 4, /* field[4] = colnames */ 5, /* field[5] = location */ 3, /* field[3] = row_format */ 2, /* field[2] = row_typeid */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__row_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__row_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RowExpr", "RowExpr", "PgQuery__RowExpr", "pg_query", sizeof(PgQuery__RowExpr), 6, pg_query__row_expr__field_descriptors, pg_query__row_expr__field_indices_by_name, 1, pg_query__row_expr__number_ranges, (ProtobufCMessageInit) pg_query__row_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__row_compare_expr__field_descriptors[7] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RowCompareExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rctype", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RowCompareExpr, rctype), &pg_query__row_compare_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opnos", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RowCompareExpr, n_opnos), offsetof(PgQuery__RowCompareExpr, opnos), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opfamilies", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RowCompareExpr, n_opfamilies), offsetof(PgQuery__RowCompareExpr, opfamilies), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inputcollids", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RowCompareExpr, n_inputcollids), offsetof(PgQuery__RowCompareExpr, inputcollids), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "largs", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RowCompareExpr, n_largs), offsetof(PgQuery__RowCompareExpr, largs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rargs", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RowCompareExpr, n_rargs), offsetof(PgQuery__RowCompareExpr, rargs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__row_compare_expr__field_indices_by_name[] = { 4, /* field[4] = inputcollids */ 5, /* field[5] = largs */ 3, /* field[3] = opfamilies */ 2, /* field[2] = opnos */ 6, /* field[6] = rargs */ 1, /* field[1] = rctype */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__row_compare_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__row_compare_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RowCompareExpr", "RowCompareExpr", "PgQuery__RowCompareExpr", "pg_query", sizeof(PgQuery__RowCompareExpr), 7, pg_query__row_compare_expr__field_descriptors, pg_query__row_compare_expr__field_indices_by_name, 1, pg_query__row_compare_expr__number_ranges, (ProtobufCMessageInit) pg_query__row_compare_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__coalesce_expr__field_descriptors[5] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CoalesceExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coalescetype", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoalesceExpr, coalescetype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coalescecollid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoalesceExpr, coalescecollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CoalesceExpr, n_args), offsetof(PgQuery__CoalesceExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoalesceExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__coalesce_expr__field_indices_by_name[] = { 3, /* field[3] = args */ 2, /* field[2] = coalescecollid */ 1, /* field[1] = coalescetype */ 4, /* field[4] = location */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__coalesce_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__coalesce_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CoalesceExpr", "CoalesceExpr", "PgQuery__CoalesceExpr", "pg_query", sizeof(PgQuery__CoalesceExpr), 5, pg_query__coalesce_expr__field_descriptors, pg_query__coalesce_expr__field_indices_by_name, 1, pg_query__coalesce_expr__number_ranges, (ProtobufCMessageInit) pg_query__coalesce_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__min_max_expr__field_descriptors[7] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__MinMaxExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "minmaxtype", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__MinMaxExpr, minmaxtype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "minmaxcollid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__MinMaxExpr, minmaxcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inputcollid", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__MinMaxExpr, inputcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "op", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__MinMaxExpr, op), &pg_query__min_max_op__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__MinMaxExpr, n_args), offsetof(PgQuery__MinMaxExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__MinMaxExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__min_max_expr__field_indices_by_name[] = { 5, /* field[5] = args */ 3, /* field[3] = inputcollid */ 6, /* field[6] = location */ 2, /* field[2] = minmaxcollid */ 1, /* field[1] = minmaxtype */ 4, /* field[4] = op */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__min_max_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__min_max_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.MinMaxExpr", "MinMaxExpr", "PgQuery__MinMaxExpr", "pg_query", sizeof(PgQuery__MinMaxExpr), 7, pg_query__min_max_expr__field_descriptors, pg_query__min_max_expr__field_indices_by_name, 1, pg_query__min_max_expr__number_ranges, (ProtobufCMessageInit) pg_query__min_max_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__sqlvalue_function__field_descriptors[5] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SQLValueFunction, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "op", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__SQLValueFunction, op), &pg_query__sqlvalue_function_op__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SQLValueFunction, type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "typmod", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SQLValueFunction, typmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SQLValueFunction, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__sqlvalue_function__field_indices_by_name[] = { 4, /* field[4] = location */ 1, /* field[1] = op */ 2, /* field[2] = type */ 3, /* field[3] = typmod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__sqlvalue_function__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__sqlvalue_function__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SQLValueFunction", "SQLValueFunction", "PgQuery__SQLValueFunction", "pg_query", sizeof(PgQuery__SQLValueFunction), 5, pg_query__sqlvalue_function__field_descriptors, pg_query__sqlvalue_function__field_indices_by_name, 1, pg_query__sqlvalue_function__number_ranges, (ProtobufCMessageInit) pg_query__sqlvalue_function__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__xml_expr__field_descriptors[10] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__XmlExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "op", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__XmlExpr, op), &pg_query__xml_expr_op__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__XmlExpr, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "named_args", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__XmlExpr, n_named_args), offsetof(PgQuery__XmlExpr, named_args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg_names", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__XmlExpr, n_arg_names), offsetof(PgQuery__XmlExpr, arg_names), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__XmlExpr, n_args), offsetof(PgQuery__XmlExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "xmloption", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__XmlExpr, xmloption), &pg_query__xml_option_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__XmlExpr, type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "typmod", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__XmlExpr, typmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__XmlExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__xml_expr__field_indices_by_name[] = { 4, /* field[4] = arg_names */ 5, /* field[5] = args */ 9, /* field[9] = location */ 2, /* field[2] = name */ 3, /* field[3] = named_args */ 1, /* field[1] = op */ 7, /* field[7] = type */ 8, /* field[8] = typmod */ 6, /* field[6] = xmloption */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__xml_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 10 } }; const ProtobufCMessageDescriptor pg_query__xml_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.XmlExpr", "XmlExpr", "PgQuery__XmlExpr", "pg_query", sizeof(PgQuery__XmlExpr), 10, pg_query__xml_expr__field_descriptors, pg_query__xml_expr__field_indices_by_name, 1, pg_query__xml_expr__number_ranges, (ProtobufCMessageInit) pg_query__xml_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__null_test__field_descriptors[5] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__NullTest, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__NullTest, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "nulltesttype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__NullTest, nulltesttype), &pg_query__null_test_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "argisrow", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__NullTest, argisrow), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__NullTest, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__null_test__field_indices_by_name[] = { 1, /* field[1] = arg */ 3, /* field[3] = argisrow */ 4, /* field[4] = location */ 2, /* field[2] = nulltesttype */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__null_test__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__null_test__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.NullTest", "NullTest", "PgQuery__NullTest", "pg_query", sizeof(PgQuery__NullTest), 5, pg_query__null_test__field_descriptors, pg_query__null_test__field_indices_by_name, 1, pg_query__null_test__number_ranges, (ProtobufCMessageInit) pg_query__null_test__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__boolean_test__field_descriptors[4] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__BooleanTest, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__BooleanTest, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "booltesttype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__BooleanTest, booltesttype), &pg_query__bool_test_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__BooleanTest, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__boolean_test__field_indices_by_name[] = { 1, /* field[1] = arg */ 2, /* field[2] = booltesttype */ 3, /* field[3] = location */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__boolean_test__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__boolean_test__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.BooleanTest", "BooleanTest", "PgQuery__BooleanTest", "pg_query", sizeof(PgQuery__BooleanTest), 4, pg_query__boolean_test__field_descriptors, pg_query__boolean_test__field_indices_by_name, 1, pg_query__boolean_test__number_ranges, (ProtobufCMessageInit) pg_query__boolean_test__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__coerce_to_domain__field_descriptors[7] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomain, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomain, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomain, resulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttypmod", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomain, resulttypmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resultcollid", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomain, resultcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coercionformat", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomain, coercionformat), &pg_query__coercion_form__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomain, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__coerce_to_domain__field_indices_by_name[] = { 1, /* field[1] = arg */ 5, /* field[5] = coercionformat */ 6, /* field[6] = location */ 4, /* field[4] = resultcollid */ 2, /* field[2] = resulttype */ 3, /* field[3] = resulttypmod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__coerce_to_domain__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__coerce_to_domain__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CoerceToDomain", "CoerceToDomain", "PgQuery__CoerceToDomain", "pg_query", sizeof(PgQuery__CoerceToDomain), 7, pg_query__coerce_to_domain__field_descriptors, pg_query__coerce_to_domain__field_indices_by_name, 1, pg_query__coerce_to_domain__number_ranges, (ProtobufCMessageInit) pg_query__coerce_to_domain__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__coerce_to_domain_value__field_descriptors[5] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomainValue, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_id", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomainValue, type_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_mod", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomainValue, type_mod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collation", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomainValue, collation), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomainValue, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__coerce_to_domain_value__field_indices_by_name[] = { 3, /* field[3] = collation */ 4, /* field[4] = location */ 1, /* field[1] = type_id */ 2, /* field[2] = type_mod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__coerce_to_domain_value__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__coerce_to_domain_value__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CoerceToDomainValue", "CoerceToDomainValue", "PgQuery__CoerceToDomainValue", "pg_query", sizeof(PgQuery__CoerceToDomainValue), 5, pg_query__coerce_to_domain_value__field_descriptors, pg_query__coerce_to_domain_value__field_indices_by_name, 1, pg_query__coerce_to_domain_value__number_ranges, (ProtobufCMessageInit) pg_query__coerce_to_domain_value__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__set_to_default__field_descriptors[5] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SetToDefault, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_id", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SetToDefault, type_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_mod", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SetToDefault, type_mod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collation", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SetToDefault, collation), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SetToDefault, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__set_to_default__field_indices_by_name[] = { 3, /* field[3] = collation */ 4, /* field[4] = location */ 1, /* field[1] = type_id */ 2, /* field[2] = type_mod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__set_to_default__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__set_to_default__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SetToDefault", "SetToDefault", "PgQuery__SetToDefault", "pg_query", sizeof(PgQuery__SetToDefault), 5, pg_query__set_to_default__field_descriptors, pg_query__set_to_default__field_indices_by_name, 1, pg_query__set_to_default__number_ranges, (ProtobufCMessageInit) pg_query__set_to_default__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__current_of_expr__field_descriptors[4] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CurrentOfExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cvarno", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CurrentOfExpr, cvarno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cursor_name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CurrentOfExpr, cursor_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cursor_param", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CurrentOfExpr, cursor_param), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__current_of_expr__field_indices_by_name[] = { 2, /* field[2] = cursor_name */ 3, /* field[3] = cursor_param */ 1, /* field[1] = cvarno */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__current_of_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__current_of_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CurrentOfExpr", "CurrentOfExpr", "PgQuery__CurrentOfExpr", "pg_query", sizeof(PgQuery__CurrentOfExpr), 4, pg_query__current_of_expr__field_descriptors, pg_query__current_of_expr__field_indices_by_name, 1, pg_query__current_of_expr__number_ranges, (ProtobufCMessageInit) pg_query__current_of_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__next_value_expr__field_descriptors[3] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__NextValueExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "seqid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__NextValueExpr, seqid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_id", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__NextValueExpr, type_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__next_value_expr__field_indices_by_name[] = { 1, /* field[1] = seqid */ 2, /* field[2] = type_id */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__next_value_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__next_value_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.NextValueExpr", "NextValueExpr", "PgQuery__NextValueExpr", "pg_query", sizeof(PgQuery__NextValueExpr), 3, pg_query__next_value_expr__field_descriptors, pg_query__next_value_expr__field_indices_by_name, 1, pg_query__next_value_expr__number_ranges, (ProtobufCMessageInit) pg_query__next_value_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__inference_elem__field_descriptors[4] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__InferenceElem, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "expr", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__InferenceElem, expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "infercollid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__InferenceElem, infercollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inferopclass", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__InferenceElem, inferopclass), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__inference_elem__field_indices_by_name[] = { 1, /* field[1] = expr */ 2, /* field[2] = infercollid */ 3, /* field[3] = inferopclass */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__inference_elem__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__inference_elem__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.InferenceElem", "InferenceElem", "PgQuery__InferenceElem", "pg_query", sizeof(PgQuery__InferenceElem), 4, pg_query__inference_elem__field_descriptors, pg_query__inference_elem__field_indices_by_name, 1, pg_query__inference_elem__number_ranges, (ProtobufCMessageInit) pg_query__inference_elem__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__target_entry__field_descriptors[8] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__TargetEntry, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "expr", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__TargetEntry, expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resno", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__TargetEntry, resno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resname", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__TargetEntry, resname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ressortgroupref", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__TargetEntry, ressortgroupref), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resorigtbl", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__TargetEntry, resorigtbl), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resorigcol", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__TargetEntry, resorigcol), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resjunk", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__TargetEntry, resjunk), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__target_entry__field_indices_by_name[] = { 1, /* field[1] = expr */ 7, /* field[7] = resjunk */ 3, /* field[3] = resname */ 2, /* field[2] = resno */ 6, /* field[6] = resorigcol */ 5, /* field[5] = resorigtbl */ 4, /* field[4] = ressortgroupref */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__target_entry__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__target_entry__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TargetEntry", "TargetEntry", "PgQuery__TargetEntry", "pg_query", sizeof(PgQuery__TargetEntry), 8, pg_query__target_entry__field_descriptors, pg_query__target_entry__field_indices_by_name, 1, pg_query__target_entry__number_ranges, (ProtobufCMessageInit) pg_query__target_entry__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__range_tbl_ref__field_descriptors[1] = { { "rtindex", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblRef, rtindex), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__range_tbl_ref__field_indices_by_name[] = { 0, /* field[0] = rtindex */ }; static const ProtobufCIntRange pg_query__range_tbl_ref__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__range_tbl_ref__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeTblRef", "RangeTblRef", "PgQuery__RangeTblRef", "pg_query", sizeof(PgQuery__RangeTblRef), 1, pg_query__range_tbl_ref__field_descriptors, pg_query__range_tbl_ref__field_indices_by_name, 1, pg_query__range_tbl_ref__number_ranges, (ProtobufCMessageInit) pg_query__range_tbl_ref__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__join_expr__field_descriptors[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__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__merge_action__field_descriptors[6] = { { "matched", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__MergeAction, matched), NULL, 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] = matched */ 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__raw_stmt__field_descriptors[3] = { { "stmt", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RawStmt, stmt), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "stmt_location", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RawStmt, stmt_location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "stmt_len", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RawStmt, stmt_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__raw_stmt__field_indices_by_name[] = { 0, /* field[0] = stmt */ 2, /* field[2] = stmt_len */ 1, /* field[1] = stmt_location */ }; static const ProtobufCIntRange pg_query__raw_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__raw_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RawStmt", "RawStmt", "PgQuery__RawStmt", "pg_query", sizeof(PgQuery__RawStmt), 3, pg_query__raw_stmt__field_descriptors, pg_query__raw_stmt__field_indices_by_name, 1, pg_query__raw_stmt__number_ranges, (ProtobufCMessageInit) pg_query__raw_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__query__field_descriptors[40] = { { "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 */ }, { "jointree", 18, 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", 19, 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_use_outer_join", 20, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Query, merge_use_outer_join), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "target_list", 21, 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", 22, 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", 23, 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", 24, 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", 25, 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", 26, 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", 27, 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", 28, 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", 29, 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", 30, 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", 31, 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", 32, 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", 33, 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", 34, 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", 35, 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", 36, 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", 37, 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", 38, 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", 39, 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", 40, 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 */ 36, /* field[36] = constraint_deps */ 15, /* field[15] = cte_list */ 29, /* field[29] = distinct_clause */ 24, /* field[24] = group_clause */ 25, /* field[25] = group_distinct */ 26, /* field[26] = 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 */ 27, /* field[27] = having_qual */ 14, /* field[14] = is_return */ 17, /* field[17] = jointree */ 32, /* field[32] = limit_count */ 31, /* field[31] = limit_offset */ 33, /* field[33] = limit_option */ 18, /* field[18] = merge_action_list */ 19, /* field[19] = merge_use_outer_join */ 22, /* field[22] = on_conflict */ 21, /* field[21] = override */ 1, /* field[1] = query_source */ 4, /* field[4] = result_relation */ 23, /* field[23] = returning_list */ 34, /* field[34] = row_marks */ 16, /* field[16] = rtable */ 35, /* field[35] = set_operations */ 30, /* field[30] = sort_clause */ 39, /* field[39] = stmt_len */ 38, /* field[38] = stmt_location */ 20, /* field[20] = target_list */ 3, /* field[3] = utility_stmt */ 28, /* field[28] = window_clause */ 37, /* field[37] = with_check_options */ }; static const ProtobufCIntRange pg_query__query__number_ranges[1 + 1] = { { 1, 0 }, { 0, 40 } }; const ProtobufCMessageDescriptor pg_query__query__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Query", "Query", "PgQuery__Query", "pg_query", sizeof(PgQuery__Query), 40, pg_query__query__field_descriptors, pg_query__query__field_indices_by_name, 1, pg_query__query__number_ranges, (ProtobufCMessageInit) pg_query__query__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__insert_stmt__field_descriptors[7] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__InsertStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cols", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__InsertStmt, n_cols), offsetof(PgQuery__InsertStmt, cols), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "select_stmt", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__InsertStmt, select_stmt), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_conflict_clause", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__InsertStmt, on_conflict_clause), &pg_query__on_conflict_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "returning_list", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__InsertStmt, n_returning_list), offsetof(PgQuery__InsertStmt, returning_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_clause", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__InsertStmt, with_clause), &pg_query__with_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "override", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__InsertStmt, override), &pg_query__overriding_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__insert_stmt__field_indices_by_name[] = { 1, /* field[1] = cols */ 3, /* field[3] = on_conflict_clause */ 6, /* field[6] = override */ 0, /* field[0] = relation */ 4, /* field[4] = returning_list */ 2, /* field[2] = select_stmt */ 5, /* field[5] = with_clause */ }; static const ProtobufCIntRange pg_query__insert_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__insert_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.InsertStmt", "InsertStmt", "PgQuery__InsertStmt", "pg_query", sizeof(PgQuery__InsertStmt), 7, pg_query__insert_stmt__field_descriptors, pg_query__insert_stmt__field_indices_by_name, 1, pg_query__insert_stmt__number_ranges, (ProtobufCMessageInit) pg_query__insert_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__delete_stmt__field_descriptors[5] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__DeleteStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "using_clause", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DeleteStmt, n_using_clause), offsetof(PgQuery__DeleteStmt, using_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "where_clause", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__DeleteStmt, where_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "returning_list", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DeleteStmt, n_returning_list), offsetof(PgQuery__DeleteStmt, returning_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_clause", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__DeleteStmt, with_clause), &pg_query__with_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__delete_stmt__field_indices_by_name[] = { 0, /* field[0] = relation */ 3, /* field[3] = returning_list */ 1, /* field[1] = using_clause */ 2, /* field[2] = where_clause */ 4, /* field[4] = with_clause */ }; static const ProtobufCIntRange pg_query__delete_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__delete_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DeleteStmt", "DeleteStmt", "PgQuery__DeleteStmt", "pg_query", sizeof(PgQuery__DeleteStmt), 5, pg_query__delete_stmt__field_descriptors, pg_query__delete_stmt__field_indices_by_name, 1, pg_query__delete_stmt__number_ranges, (ProtobufCMessageInit) pg_query__delete_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__update_stmt__field_descriptors[6] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__UpdateStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "target_list", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__UpdateStmt, n_target_list), offsetof(PgQuery__UpdateStmt, target_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "where_clause", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__UpdateStmt, where_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "from_clause", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__UpdateStmt, n_from_clause), offsetof(PgQuery__UpdateStmt, from_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "returning_list", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__UpdateStmt, n_returning_list), offsetof(PgQuery__UpdateStmt, returning_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_clause", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__UpdateStmt, with_clause), &pg_query__with_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__update_stmt__field_indices_by_name[] = { 3, /* field[3] = from_clause */ 0, /* field[0] = relation */ 4, /* field[4] = returning_list */ 1, /* field[1] = target_list */ 2, /* field[2] = where_clause */ 5, /* field[5] = with_clause */ }; static const ProtobufCIntRange pg_query__update_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__update_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.UpdateStmt", "UpdateStmt", "PgQuery__UpdateStmt", "pg_query", sizeof(PgQuery__UpdateStmt), 6, pg_query__update_stmt__field_descriptors, pg_query__update_stmt__field_indices_by_name, 1, pg_query__update_stmt__number_ranges, (ProtobufCMessageInit) pg_query__update_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__merge_stmt__field_descriptors[5] = { { "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 */ }, { "with_clause", 5, 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 */ 1, /* field[1] = source_relation */ 4, /* field[4] = with_clause */ }; static const ProtobufCIntRange pg_query__merge_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__merge_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.MergeStmt", "MergeStmt", "PgQuery__MergeStmt", "pg_query", sizeof(PgQuery__MergeStmt), 5, 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__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__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__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_domain_stmt__field_descriptors[6] = { { "subtype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterDomainStmt, subtype), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_name", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterDomainStmt, n_type_name), offsetof(PgQuery__AlterDomainStmt, type_name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterDomainStmt, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "def", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterDomainStmt, def), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "behavior", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterDomainStmt, behavior), &pg_query__drop_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterDomainStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_domain_stmt__field_indices_by_name[] = { 4, /* field[4] = behavior */ 3, /* field[3] = def */ 5, /* field[5] = missing_ok */ 2, /* field[2] = name */ 0, /* field[0] = subtype */ 1, /* field[1] = type_name */ }; static const ProtobufCIntRange pg_query__alter_domain_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__alter_domain_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterDomainStmt", "AlterDomainStmt", "PgQuery__AlterDomainStmt", "pg_query", sizeof(PgQuery__AlterDomainStmt), 6, pg_query__alter_domain_stmt__field_descriptors, pg_query__alter_domain_stmt__field_indices_by_name, 1, pg_query__alter_domain_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_domain_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__set_operation_stmt__field_descriptors[8] = { { "op", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__SetOperationStmt, op), &pg_query__set_operation__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "all", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__SetOperationStmt, all), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "larg", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SetOperationStmt, larg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rarg", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SetOperationStmt, rarg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "col_types", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SetOperationStmt, n_col_types), offsetof(PgQuery__SetOperationStmt, col_types), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "col_typmods", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SetOperationStmt, n_col_typmods), offsetof(PgQuery__SetOperationStmt, col_typmods), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "col_collations", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SetOperationStmt, n_col_collations), offsetof(PgQuery__SetOperationStmt, col_collations), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "group_clauses", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SetOperationStmt, n_group_clauses), offsetof(PgQuery__SetOperationStmt, group_clauses), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__set_operation_stmt__field_indices_by_name[] = { 1, /* field[1] = all */ 6, /* field[6] = col_collations */ 4, /* field[4] = col_types */ 5, /* field[5] = col_typmods */ 7, /* field[7] = group_clauses */ 2, /* field[2] = larg */ 0, /* field[0] = op */ 3, /* field[3] = rarg */ }; static const ProtobufCIntRange pg_query__set_operation_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__set_operation_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SetOperationStmt", "SetOperationStmt", "PgQuery__SetOperationStmt", "pg_query", sizeof(PgQuery__SetOperationStmt), 8, pg_query__set_operation_stmt__field_descriptors, pg_query__set_operation_stmt__field_indices_by_name, 1, pg_query__set_operation_stmt__number_ranges, (ProtobufCMessageInit) pg_query__set_operation_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__grant_stmt__field_descriptors[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__grant_role_stmt__field_descriptors[6] = { { "granted_roles", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__GrantRoleStmt, n_granted_roles), offsetof(PgQuery__GrantRoleStmt, granted_roles), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grantee_roles", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__GrantRoleStmt, n_grantee_roles), offsetof(PgQuery__GrantRoleStmt, grantee_roles), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_grant", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__GrantRoleStmt, is_grant), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "admin_opt", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__GrantRoleStmt, admin_opt), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grantor", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__GrantRoleStmt, grantor), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "behavior", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__GrantRoleStmt, behavior), &pg_query__drop_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__grant_role_stmt__field_indices_by_name[] = { 3, /* field[3] = admin_opt */ 5, /* field[5] = behavior */ 0, /* field[0] = granted_roles */ 1, /* field[1] = grantee_roles */ 4, /* field[4] = grantor */ 2, /* field[2] = is_grant */ }; static const ProtobufCIntRange pg_query__grant_role_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__grant_role_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.GrantRoleStmt", "GrantRoleStmt", "PgQuery__GrantRoleStmt", "pg_query", sizeof(PgQuery__GrantRoleStmt), 6, pg_query__grant_role_stmt__field_descriptors, pg_query__grant_role_stmt__field_indices_by_name, 1, pg_query__grant_role_stmt__number_ranges, (ProtobufCMessageInit) pg_query__grant_role_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_default_privileges_stmt__field_descriptors[2] = { { "options", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterDefaultPrivilegesStmt, n_options), offsetof(PgQuery__AlterDefaultPrivilegesStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "action", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterDefaultPrivilegesStmt, action), &pg_query__grant_stmt__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_default_privileges_stmt__field_indices_by_name[] = { 1, /* field[1] = action */ 0, /* field[0] = options */ }; static const ProtobufCIntRange pg_query__alter_default_privileges_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__alter_default_privileges_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterDefaultPrivilegesStmt", "AlterDefaultPrivilegesStmt", "PgQuery__AlterDefaultPrivilegesStmt", "pg_query", sizeof(PgQuery__AlterDefaultPrivilegesStmt), 2, pg_query__alter_default_privileges_stmt__field_descriptors, pg_query__alter_default_privileges_stmt__field_indices_by_name, 1, pg_query__alter_default_privileges_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_default_privileges_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__close_portal_stmt__field_descriptors[1] = { { "portalname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ClosePortalStmt, portalname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__close_portal_stmt__field_indices_by_name[] = { 0, /* field[0] = portalname */ }; static const ProtobufCIntRange pg_query__close_portal_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__close_portal_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ClosePortalStmt", "ClosePortalStmt", "PgQuery__ClosePortalStmt", "pg_query", sizeof(PgQuery__ClosePortalStmt), 1, pg_query__close_portal_stmt__field_descriptors, pg_query__close_portal_stmt__field_indices_by_name, 1, pg_query__close_portal_stmt__number_ranges, (ProtobufCMessageInit) pg_query__close_portal_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__cluster_stmt__field_descriptors[3] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ClusterStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "indexname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ClusterStmt, indexname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "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__copy_stmt__field_descriptors[8] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CopyStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "query", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CopyStmt, query), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "attlist", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CopyStmt, n_attlist), offsetof(PgQuery__CopyStmt, attlist), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_from", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CopyStmt, is_from), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_program", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CopyStmt, is_program), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "filename", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CopyStmt, filename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CopyStmt, n_options), offsetof(PgQuery__CopyStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "where_clause", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CopyStmt, where_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__copy_stmt__field_indices_by_name[] = { 2, /* field[2] = attlist */ 5, /* field[5] = filename */ 3, /* field[3] = is_from */ 4, /* field[4] = is_program */ 6, /* field[6] = options */ 1, /* field[1] = query */ 0, /* field[0] = relation */ 7, /* field[7] = where_clause */ }; static const ProtobufCIntRange pg_query__copy_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__copy_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CopyStmt", "CopyStmt", "PgQuery__CopyStmt", "pg_query", sizeof(PgQuery__CopyStmt), 8, pg_query__copy_stmt__field_descriptors, pg_query__copy_stmt__field_indices_by_name, 1, pg_query__copy_stmt__number_ranges, (ProtobufCMessageInit) pg_query__copy_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_stmt__field_descriptors[12] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table_elts", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateStmt, n_table_elts), offsetof(PgQuery__CreateStmt, table_elts), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inh_relations", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateStmt, n_inh_relations), offsetof(PgQuery__CreateStmt, inh_relations), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partbound", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStmt, partbound), &pg_query__partition_bound_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partspec", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStmt, partspec), &pg_query__partition_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "of_typename", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStmt, of_typename), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "constraints", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateStmt, n_constraints), offsetof(PgQuery__CreateStmt, constraints), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateStmt, n_options), offsetof(PgQuery__CreateStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "oncommit", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStmt, oncommit), &pg_query__on_commit_action__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "tablespacename", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStmt, tablespacename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "access_method", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStmt, access_method), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStmt, if_not_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_stmt__field_indices_by_name[] = { 10, /* field[10] = access_method */ 6, /* field[6] = constraints */ 11, /* field[11] = if_not_exists */ 2, /* field[2] = inh_relations */ 5, /* field[5] = of_typename */ 8, /* field[8] = oncommit */ 7, /* field[7] = options */ 3, /* field[3] = partbound */ 4, /* field[4] = partspec */ 0, /* field[0] = relation */ 1, /* field[1] = table_elts */ 9, /* field[9] = tablespacename */ }; static const ProtobufCIntRange pg_query__create_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 12 } }; const ProtobufCMessageDescriptor pg_query__create_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateStmt", "CreateStmt", "PgQuery__CreateStmt", "pg_query", sizeof(PgQuery__CreateStmt), 12, pg_query__create_stmt__field_descriptors, pg_query__create_stmt__field_indices_by_name, 1, pg_query__create_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__define_stmt__field_descriptors[7] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__DefineStmt, kind), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "oldstyle", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DefineStmt, oldstyle), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "defnames", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DefineStmt, n_defnames), offsetof(PgQuery__DefineStmt, defnames), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DefineStmt, n_args), offsetof(PgQuery__DefineStmt, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "definition", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DefineStmt, n_definition), offsetof(PgQuery__DefineStmt, definition), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DefineStmt, if_not_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "replace", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DefineStmt, replace), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__define_stmt__field_indices_by_name[] = { 3, /* field[3] = args */ 4, /* field[4] = definition */ 2, /* field[2] = defnames */ 5, /* field[5] = if_not_exists */ 0, /* field[0] = kind */ 1, /* field[1] = oldstyle */ 6, /* field[6] = replace */ }; static const ProtobufCIntRange pg_query__define_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__define_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DefineStmt", "DefineStmt", "PgQuery__DefineStmt", "pg_query", sizeof(PgQuery__DefineStmt), 7, pg_query__define_stmt__field_descriptors, pg_query__define_stmt__field_indices_by_name, 1, pg_query__define_stmt__number_ranges, (ProtobufCMessageInit) pg_query__define_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__drop_stmt__field_descriptors[5] = { { "objects", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DropStmt, n_objects), offsetof(PgQuery__DropStmt, objects), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "remove_type", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__DropStmt, remove_type), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "behavior", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__DropStmt, behavior), &pg_query__drop_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DropStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "concurrent", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DropStmt, concurrent), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__drop_stmt__field_indices_by_name[] = { 2, /* field[2] = behavior */ 4, /* field[4] = concurrent */ 3, /* field[3] = missing_ok */ 0, /* field[0] = objects */ 1, /* field[1] = remove_type */ }; static const ProtobufCIntRange pg_query__drop_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__drop_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DropStmt", "DropStmt", "PgQuery__DropStmt", "pg_query", sizeof(PgQuery__DropStmt), 5, pg_query__drop_stmt__field_descriptors, pg_query__drop_stmt__field_indices_by_name, 1, pg_query__drop_stmt__number_ranges, (ProtobufCMessageInit) pg_query__drop_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__truncate_stmt__field_descriptors[3] = { { "relations", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TruncateStmt, n_relations), offsetof(PgQuery__TruncateStmt, relations), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "restart_seqs", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__TruncateStmt, restart_seqs), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "behavior", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__TruncateStmt, behavior), &pg_query__drop_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__truncate_stmt__field_indices_by_name[] = { 2, /* field[2] = behavior */ 0, /* field[0] = relations */ 1, /* field[1] = restart_seqs */ }; static const ProtobufCIntRange pg_query__truncate_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__truncate_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TruncateStmt", "TruncateStmt", "PgQuery__TruncateStmt", "pg_query", sizeof(PgQuery__TruncateStmt), 3, pg_query__truncate_stmt__field_descriptors, pg_query__truncate_stmt__field_indices_by_name, 1, pg_query__truncate_stmt__number_ranges, (ProtobufCMessageInit) pg_query__truncate_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__comment_stmt__field_descriptors[3] = { { "objtype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__CommentStmt, objtype), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "object", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CommentStmt, object), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "comment", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CommentStmt, comment), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__comment_stmt__field_indices_by_name[] = { 2, /* field[2] = comment */ 1, /* field[1] = object */ 0, /* field[0] = objtype */ }; static const ProtobufCIntRange pg_query__comment_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__comment_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CommentStmt", "CommentStmt", "PgQuery__CommentStmt", "pg_query", sizeof(PgQuery__CommentStmt), 3, pg_query__comment_stmt__field_descriptors, pg_query__comment_stmt__field_indices_by_name, 1, pg_query__comment_stmt__number_ranges, (ProtobufCMessageInit) pg_query__comment_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__fetch_stmt__field_descriptors[4] = { { "direction", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__FetchStmt, direction), &pg_query__fetch_direction__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "how_many", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT64, 0, /* quantifier_offset */ offsetof(PgQuery__FetchStmt, how_many), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "portalname", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__FetchStmt, portalname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ismove", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__FetchStmt, ismove), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__fetch_stmt__field_indices_by_name[] = { 0, /* field[0] = direction */ 1, /* field[1] = how_many */ 3, /* field[3] = ismove */ 2, /* field[2] = portalname */ }; static const ProtobufCIntRange pg_query__fetch_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__fetch_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.FetchStmt", "FetchStmt", "PgQuery__FetchStmt", "pg_query", sizeof(PgQuery__FetchStmt), 4, pg_query__fetch_stmt__field_descriptors, pg_query__fetch_stmt__field_indices_by_name, 1, pg_query__fetch_stmt__number_ranges, (ProtobufCMessageInit) pg_query__fetch_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__index_stmt__field_descriptors[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_node", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, old_node), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "old_create_subid", 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, old_create_subid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "old_first_relfilenode_subid", 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, old_first_relfilenode_subid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "unique", 15, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, unique), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "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_relfilenode_subid */ 11, /* field[11] = old_node */ 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_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__alter_function_stmt__field_descriptors[3] = { { "objtype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterFunctionStmt, objtype), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterFunctionStmt, func), &pg_query__object_with_args__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "actions", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterFunctionStmt, n_actions), offsetof(PgQuery__AlterFunctionStmt, actions), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_function_stmt__field_indices_by_name[] = { 2, /* field[2] = actions */ 1, /* field[1] = func */ 0, /* field[0] = objtype */ }; static const ProtobufCIntRange pg_query__alter_function_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__alter_function_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterFunctionStmt", "AlterFunctionStmt", "PgQuery__AlterFunctionStmt", "pg_query", sizeof(PgQuery__AlterFunctionStmt), 3, pg_query__alter_function_stmt__field_descriptors, pg_query__alter_function_stmt__field_indices_by_name, 1, pg_query__alter_function_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_function_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__do_stmt__field_descriptors[1] = { { "args", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DoStmt, n_args), offsetof(PgQuery__DoStmt, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__do_stmt__field_indices_by_name[] = { 0, /* field[0] = args */ }; static const ProtobufCIntRange pg_query__do_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__do_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DoStmt", "DoStmt", "PgQuery__DoStmt", "pg_query", sizeof(PgQuery__DoStmt), 1, pg_query__do_stmt__field_descriptors, pg_query__do_stmt__field_indices_by_name, 1, pg_query__do_stmt__number_ranges, (ProtobufCMessageInit) pg_query__do_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__rename_stmt__field_descriptors[8] = { { "rename_type", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RenameStmt, rename_type), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relation_type", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RenameStmt, relation_type), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relation", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RenameStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "object", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RenameStmt, object), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "subname", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RenameStmt, subname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "newname", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RenameStmt, newname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "behavior", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RenameStmt, behavior), &pg_query__drop_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RenameStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__rename_stmt__field_indices_by_name[] = { 6, /* field[6] = behavior */ 7, /* field[7] = missing_ok */ 5, /* field[5] = newname */ 3, /* field[3] = object */ 2, /* field[2] = relation */ 1, /* field[1] = relation_type */ 0, /* field[0] = rename_type */ 4, /* field[4] = subname */ }; static const ProtobufCIntRange pg_query__rename_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__rename_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RenameStmt", "RenameStmt", "PgQuery__RenameStmt", "pg_query", sizeof(PgQuery__RenameStmt), 8, pg_query__rename_stmt__field_descriptors, pg_query__rename_stmt__field_indices_by_name, 1, pg_query__rename_stmt__number_ranges, (ProtobufCMessageInit) pg_query__rename_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__rule_stmt__field_descriptors[7] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RuleStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rulename", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RuleStmt, rulename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "where_clause", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RuleStmt, where_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "event", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RuleStmt, event), &pg_query__cmd_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "instead", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RuleStmt, instead), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "actions", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RuleStmt, n_actions), offsetof(PgQuery__RuleStmt, actions), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "replace", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RuleStmt, replace), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__rule_stmt__field_indices_by_name[] = { 5, /* field[5] = actions */ 3, /* field[3] = event */ 4, /* field[4] = instead */ 0, /* field[0] = relation */ 6, /* field[6] = replace */ 1, /* field[1] = rulename */ 2, /* field[2] = where_clause */ }; static const ProtobufCIntRange pg_query__rule_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__rule_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RuleStmt", "RuleStmt", "PgQuery__RuleStmt", "pg_query", sizeof(PgQuery__RuleStmt), 7, pg_query__rule_stmt__field_descriptors, pg_query__rule_stmt__field_indices_by_name, 1, pg_query__rule_stmt__number_ranges, (ProtobufCMessageInit) pg_query__rule_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__notify_stmt__field_descriptors[2] = { { "conditionname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__NotifyStmt, conditionname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "payload", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__NotifyStmt, payload), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__notify_stmt__field_indices_by_name[] = { 0, /* field[0] = conditionname */ 1, /* field[1] = payload */ }; static const ProtobufCIntRange pg_query__notify_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__notify_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.NotifyStmt", "NotifyStmt", "PgQuery__NotifyStmt", "pg_query", sizeof(PgQuery__NotifyStmt), 2, pg_query__notify_stmt__field_descriptors, pg_query__notify_stmt__field_indices_by_name, 1, pg_query__notify_stmt__number_ranges, (ProtobufCMessageInit) pg_query__notify_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__listen_stmt__field_descriptors[1] = { { "conditionname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ListenStmt, conditionname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__listen_stmt__field_indices_by_name[] = { 0, /* field[0] = conditionname */ }; static const ProtobufCIntRange pg_query__listen_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__listen_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ListenStmt", "ListenStmt", "PgQuery__ListenStmt", "pg_query", sizeof(PgQuery__ListenStmt), 1, pg_query__listen_stmt__field_descriptors, pg_query__listen_stmt__field_indices_by_name, 1, pg_query__listen_stmt__number_ranges, (ProtobufCMessageInit) pg_query__listen_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__unlisten_stmt__field_descriptors[1] = { { "conditionname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__UnlistenStmt, conditionname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__unlisten_stmt__field_indices_by_name[] = { 0, /* field[0] = conditionname */ }; static const ProtobufCIntRange pg_query__unlisten_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__unlisten_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.UnlistenStmt", "UnlistenStmt", "PgQuery__UnlistenStmt", "pg_query", sizeof(PgQuery__UnlistenStmt), 1, pg_query__unlisten_stmt__field_descriptors, pg_query__unlisten_stmt__field_indices_by_name, 1, pg_query__unlisten_stmt__number_ranges, (ProtobufCMessageInit) pg_query__unlisten_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__transaction_stmt__field_descriptors[5] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__TransactionStmt, kind), &pg_query__transaction_stmt_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TransactionStmt, n_options), offsetof(PgQuery__TransactionStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "savepoint_name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__TransactionStmt, savepoint_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "gid", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__TransactionStmt, gid), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "chain", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__TransactionStmt, chain), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__transaction_stmt__field_indices_by_name[] = { 4, /* field[4] = chain */ 3, /* field[3] = gid */ 0, /* field[0] = kind */ 1, /* field[1] = options */ 2, /* field[2] = savepoint_name */ }; static const ProtobufCIntRange pg_query__transaction_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__transaction_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TransactionStmt", "TransactionStmt", "PgQuery__TransactionStmt", "pg_query", sizeof(PgQuery__TransactionStmt), 5, pg_query__transaction_stmt__field_descriptors, pg_query__transaction_stmt__field_indices_by_name, 1, pg_query__transaction_stmt__number_ranges, (ProtobufCMessageInit) pg_query__transaction_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__view_stmt__field_descriptors[6] = { { "view", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ViewStmt, view), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aliases", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ViewStmt, n_aliases), offsetof(PgQuery__ViewStmt, aliases), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "query", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ViewStmt, query), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "replace", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__ViewStmt, replace), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ViewStmt, n_options), offsetof(PgQuery__ViewStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_check_option", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__ViewStmt, with_check_option), &pg_query__view_check_option__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__view_stmt__field_indices_by_name[] = { 1, /* field[1] = aliases */ 4, /* field[4] = options */ 2, /* field[2] = query */ 3, /* field[3] = replace */ 0, /* field[0] = view */ 5, /* field[5] = with_check_option */ }; static const ProtobufCIntRange pg_query__view_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__view_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ViewStmt", "ViewStmt", "PgQuery__ViewStmt", "pg_query", sizeof(PgQuery__ViewStmt), 6, pg_query__view_stmt__field_descriptors, pg_query__view_stmt__field_indices_by_name, 1, pg_query__view_stmt__number_ranges, (ProtobufCMessageInit) pg_query__view_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__load_stmt__field_descriptors[1] = { { "filename", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__LoadStmt, filename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__load_stmt__field_indices_by_name[] = { 0, /* field[0] = filename */ }; static const ProtobufCIntRange pg_query__load_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__load_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.LoadStmt", "LoadStmt", "PgQuery__LoadStmt", "pg_query", sizeof(PgQuery__LoadStmt), 1, pg_query__load_stmt__field_descriptors, pg_query__load_stmt__field_indices_by_name, 1, pg_query__load_stmt__number_ranges, (ProtobufCMessageInit) pg_query__load_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_domain_stmt__field_descriptors[4] = { { "domainname", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateDomainStmt, n_domainname), offsetof(PgQuery__CreateDomainStmt, domainname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateDomainStmt, type_name), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coll_clause", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateDomainStmt, coll_clause), &pg_query__collate_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "constraints", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateDomainStmt, n_constraints), offsetof(PgQuery__CreateDomainStmt, constraints), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_domain_stmt__field_indices_by_name[] = { 2, /* field[2] = coll_clause */ 3, /* field[3] = constraints */ 0, /* field[0] = domainname */ 1, /* field[1] = type_name */ }; static const ProtobufCIntRange pg_query__create_domain_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__create_domain_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateDomainStmt", "CreateDomainStmt", "PgQuery__CreateDomainStmt", "pg_query", sizeof(PgQuery__CreateDomainStmt), 4, pg_query__create_domain_stmt__field_descriptors, pg_query__create_domain_stmt__field_indices_by_name, 1, pg_query__create_domain_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_domain_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__createdb_stmt__field_descriptors[2] = { { "dbname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreatedbStmt, dbname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreatedbStmt, n_options), offsetof(PgQuery__CreatedbStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__createdb_stmt__field_indices_by_name[] = { 0, /* field[0] = dbname */ 1, /* field[1] = options */ }; static const ProtobufCIntRange pg_query__createdb_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__createdb_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreatedbStmt", "CreatedbStmt", "PgQuery__CreatedbStmt", "pg_query", sizeof(PgQuery__CreatedbStmt), 2, pg_query__createdb_stmt__field_descriptors, pg_query__createdb_stmt__field_indices_by_name, 1, pg_query__createdb_stmt__number_ranges, (ProtobufCMessageInit) pg_query__createdb_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__dropdb_stmt__field_descriptors[3] = { { "dbname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__DropdbStmt, dbname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DropdbStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DropdbStmt, n_options), offsetof(PgQuery__DropdbStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__dropdb_stmt__field_indices_by_name[] = { 0, /* field[0] = dbname */ 1, /* field[1] = missing_ok */ 2, /* field[2] = options */ }; static const ProtobufCIntRange pg_query__dropdb_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__dropdb_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DropdbStmt", "DropdbStmt", "PgQuery__DropdbStmt", "pg_query", sizeof(PgQuery__DropdbStmt), 3, pg_query__dropdb_stmt__field_descriptors, pg_query__dropdb_stmt__field_indices_by_name, 1, pg_query__dropdb_stmt__number_ranges, (ProtobufCMessageInit) pg_query__dropdb_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__vacuum_stmt__field_descriptors[3] = { { "options", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__VacuumStmt, n_options), offsetof(PgQuery__VacuumStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rels", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__VacuumStmt, n_rels), offsetof(PgQuery__VacuumStmt, rels), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_vacuumcmd", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__VacuumStmt, is_vacuumcmd), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__vacuum_stmt__field_indices_by_name[] = { 2, /* field[2] = is_vacuumcmd */ 0, /* field[0] = options */ 1, /* field[1] = rels */ }; static const ProtobufCIntRange pg_query__vacuum_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__vacuum_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.VacuumStmt", "VacuumStmt", "PgQuery__VacuumStmt", "pg_query", sizeof(PgQuery__VacuumStmt), 3, pg_query__vacuum_stmt__field_descriptors, pg_query__vacuum_stmt__field_indices_by_name, 1, pg_query__vacuum_stmt__number_ranges, (ProtobufCMessageInit) pg_query__vacuum_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__explain_stmt__field_descriptors[2] = { { "query", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ExplainStmt, query), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ExplainStmt, n_options), offsetof(PgQuery__ExplainStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__explain_stmt__field_indices_by_name[] = { 1, /* field[1] = options */ 0, /* field[0] = query */ }; static const ProtobufCIntRange pg_query__explain_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__explain_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ExplainStmt", "ExplainStmt", "PgQuery__ExplainStmt", "pg_query", sizeof(PgQuery__ExplainStmt), 2, pg_query__explain_stmt__field_descriptors, pg_query__explain_stmt__field_indices_by_name, 1, pg_query__explain_stmt__number_ranges, (ProtobufCMessageInit) pg_query__explain_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_table_as_stmt__field_descriptors[5] = { { "query", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTableAsStmt, query), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "into", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTableAsStmt, into), &pg_query__into_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "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__create_seq_stmt__field_descriptors[5] = { { "sequence", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateSeqStmt, sequence), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateSeqStmt, n_options), offsetof(PgQuery__CreateSeqStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "owner_id", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CreateSeqStmt, owner_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "for_identity", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateSeqStmt, for_identity), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateSeqStmt, if_not_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_seq_stmt__field_indices_by_name[] = { 3, /* field[3] = for_identity */ 4, /* field[4] = if_not_exists */ 1, /* field[1] = options */ 2, /* field[2] = owner_id */ 0, /* field[0] = sequence */ }; static const ProtobufCIntRange pg_query__create_seq_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__create_seq_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateSeqStmt", "CreateSeqStmt", "PgQuery__CreateSeqStmt", "pg_query", sizeof(PgQuery__CreateSeqStmt), 5, pg_query__create_seq_stmt__field_descriptors, pg_query__create_seq_stmt__field_indices_by_name, 1, pg_query__create_seq_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_seq_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_seq_stmt__field_descriptors[4] = { { "sequence", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterSeqStmt, sequence), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterSeqStmt, n_options), offsetof(PgQuery__AlterSeqStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "for_identity", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterSeqStmt, for_identity), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterSeqStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_seq_stmt__field_indices_by_name[] = { 2, /* field[2] = for_identity */ 3, /* field[3] = missing_ok */ 1, /* field[1] = options */ 0, /* field[0] = sequence */ }; static const ProtobufCIntRange pg_query__alter_seq_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__alter_seq_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterSeqStmt", "AlterSeqStmt", "PgQuery__AlterSeqStmt", "pg_query", sizeof(PgQuery__AlterSeqStmt), 4, pg_query__alter_seq_stmt__field_descriptors, pg_query__alter_seq_stmt__field_indices_by_name, 1, pg_query__alter_seq_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_seq_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__variable_set_stmt__field_descriptors[4] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__VariableSetStmt, kind), &pg_query__variable_set_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__VariableSetStmt, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__VariableSetStmt, n_args), offsetof(PgQuery__VariableSetStmt, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_local", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__VariableSetStmt, is_local), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__variable_set_stmt__field_indices_by_name[] = { 2, /* field[2] = args */ 3, /* field[3] = is_local */ 0, /* field[0] = kind */ 1, /* field[1] = name */ }; static const ProtobufCIntRange pg_query__variable_set_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__variable_set_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.VariableSetStmt", "VariableSetStmt", "PgQuery__VariableSetStmt", "pg_query", sizeof(PgQuery__VariableSetStmt), 4, pg_query__variable_set_stmt__field_descriptors, pg_query__variable_set_stmt__field_indices_by_name, 1, pg_query__variable_set_stmt__number_ranges, (ProtobufCMessageInit) pg_query__variable_set_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__variable_show_stmt__field_descriptors[1] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__VariableShowStmt, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__variable_show_stmt__field_indices_by_name[] = { 0, /* field[0] = name */ }; static const ProtobufCIntRange pg_query__variable_show_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__variable_show_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.VariableShowStmt", "VariableShowStmt", "PgQuery__VariableShowStmt", "pg_query", sizeof(PgQuery__VariableShowStmt), 1, pg_query__variable_show_stmt__field_descriptors, pg_query__variable_show_stmt__field_indices_by_name, 1, pg_query__variable_show_stmt__number_ranges, (ProtobufCMessageInit) pg_query__variable_show_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__discard_stmt__field_descriptors[1] = { { "target", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__DiscardStmt, target), &pg_query__discard_mode__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__discard_stmt__field_indices_by_name[] = { 0, /* field[0] = target */ }; static const ProtobufCIntRange pg_query__discard_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__discard_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DiscardStmt", "DiscardStmt", "PgQuery__DiscardStmt", "pg_query", sizeof(PgQuery__DiscardStmt), 1, pg_query__discard_stmt__field_descriptors, pg_query__discard_stmt__field_indices_by_name, 1, pg_query__discard_stmt__number_ranges, (ProtobufCMessageInit) pg_query__discard_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_trig_stmt__field_descriptors[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_plang_stmt__field_descriptors[6] = { { "replace", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePLangStmt, replace), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "plname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePLangStmt, plname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "plhandler", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreatePLangStmt, n_plhandler), offsetof(PgQuery__CreatePLangStmt, plhandler), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "plinline", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreatePLangStmt, n_plinline), offsetof(PgQuery__CreatePLangStmt, plinline), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "plvalidator", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreatePLangStmt, n_plvalidator), offsetof(PgQuery__CreatePLangStmt, plvalidator), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "pltrusted", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePLangStmt, pltrusted), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_plang_stmt__field_indices_by_name[] = { 2, /* field[2] = plhandler */ 3, /* field[3] = plinline */ 1, /* field[1] = plname */ 5, /* field[5] = pltrusted */ 4, /* field[4] = plvalidator */ 0, /* field[0] = replace */ }; static const ProtobufCIntRange pg_query__create_plang_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__create_plang_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreatePLangStmt", "CreatePLangStmt", "PgQuery__CreatePLangStmt", "pg_query", sizeof(PgQuery__CreatePLangStmt), 6, pg_query__create_plang_stmt__field_descriptors, pg_query__create_plang_stmt__field_indices_by_name, 1, pg_query__create_plang_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_plang_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_role_stmt__field_descriptors[3] = { { "stmt_type", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__CreateRoleStmt, stmt_type), &pg_query__role_stmt_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "role", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateRoleStmt, role), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateRoleStmt, n_options), offsetof(PgQuery__CreateRoleStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_role_stmt__field_indices_by_name[] = { 2, /* field[2] = options */ 1, /* field[1] = role */ 0, /* field[0] = stmt_type */ }; static const ProtobufCIntRange pg_query__create_role_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__create_role_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateRoleStmt", "CreateRoleStmt", "PgQuery__CreateRoleStmt", "pg_query", sizeof(PgQuery__CreateRoleStmt), 3, pg_query__create_role_stmt__field_descriptors, pg_query__create_role_stmt__field_indices_by_name, 1, pg_query__create_role_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_role_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_role_stmt__field_descriptors[3] = { { "role", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterRoleStmt, role), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterRoleStmt, n_options), offsetof(PgQuery__AlterRoleStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "action", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__AlterRoleStmt, action), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_role_stmt__field_indices_by_name[] = { 2, /* field[2] = action */ 1, /* field[1] = options */ 0, /* field[0] = role */ }; static const ProtobufCIntRange pg_query__alter_role_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__alter_role_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterRoleStmt", "AlterRoleStmt", "PgQuery__AlterRoleStmt", "pg_query", sizeof(PgQuery__AlterRoleStmt), 3, pg_query__alter_role_stmt__field_descriptors, pg_query__alter_role_stmt__field_indices_by_name, 1, pg_query__alter_role_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_role_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__drop_role_stmt__field_descriptors[2] = { { "roles", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DropRoleStmt, n_roles), offsetof(PgQuery__DropRoleStmt, roles), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DropRoleStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__drop_role_stmt__field_indices_by_name[] = { 1, /* field[1] = missing_ok */ 0, /* field[0] = roles */ }; static const ProtobufCIntRange pg_query__drop_role_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__drop_role_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DropRoleStmt", "DropRoleStmt", "PgQuery__DropRoleStmt", "pg_query", sizeof(PgQuery__DropRoleStmt), 2, pg_query__drop_role_stmt__field_descriptors, pg_query__drop_role_stmt__field_indices_by_name, 1, pg_query__drop_role_stmt__number_ranges, (ProtobufCMessageInit) pg_query__drop_role_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__lock_stmt__field_descriptors[3] = { { "relations", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__LockStmt, n_relations), offsetof(PgQuery__LockStmt, relations), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "mode", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__LockStmt, mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "nowait", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__LockStmt, nowait), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__lock_stmt__field_indices_by_name[] = { 1, /* field[1] = mode */ 2, /* field[2] = nowait */ 0, /* field[0] = relations */ }; static const ProtobufCIntRange pg_query__lock_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__lock_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.LockStmt", "LockStmt", "PgQuery__LockStmt", "pg_query", sizeof(PgQuery__LockStmt), 3, pg_query__lock_stmt__field_descriptors, pg_query__lock_stmt__field_indices_by_name, 1, pg_query__lock_stmt__number_ranges, (ProtobufCMessageInit) pg_query__lock_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__constraints_set_stmt__field_descriptors[2] = { { "constraints", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ConstraintsSetStmt, n_constraints), offsetof(PgQuery__ConstraintsSetStmt, constraints), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "deferred", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__ConstraintsSetStmt, deferred), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__constraints_set_stmt__field_indices_by_name[] = { 0, /* field[0] = constraints */ 1, /* field[1] = deferred */ }; static const ProtobufCIntRange pg_query__constraints_set_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__constraints_set_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ConstraintsSetStmt", "ConstraintsSetStmt", "PgQuery__ConstraintsSetStmt", "pg_query", sizeof(PgQuery__ConstraintsSetStmt), 2, pg_query__constraints_set_stmt__field_descriptors, pg_query__constraints_set_stmt__field_indices_by_name, 1, pg_query__constraints_set_stmt__number_ranges, (ProtobufCMessageInit) pg_query__constraints_set_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__reindex_stmt__field_descriptors[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] */ }; #define pg_query__check_point_stmt__field_descriptors NULL #define pg_query__check_point_stmt__field_indices_by_name NULL #define pg_query__check_point_stmt__number_ranges NULL const ProtobufCMessageDescriptor pg_query__check_point_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CheckPointStmt", "CheckPointStmt", "PgQuery__CheckPointStmt", "pg_query", sizeof(PgQuery__CheckPointStmt), 0, pg_query__check_point_stmt__field_descriptors, pg_query__check_point_stmt__field_indices_by_name, 0, pg_query__check_point_stmt__number_ranges, (ProtobufCMessageInit) pg_query__check_point_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_schema_stmt__field_descriptors[4] = { { "schemaname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateSchemaStmt, schemaname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "authrole", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateSchemaStmt, authrole), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "schema_elts", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateSchemaStmt, n_schema_elts), offsetof(PgQuery__CreateSchemaStmt, schema_elts), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateSchemaStmt, if_not_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_schema_stmt__field_indices_by_name[] = { 1, /* field[1] = authrole */ 3, /* field[3] = if_not_exists */ 2, /* field[2] = schema_elts */ 0, /* field[0] = schemaname */ }; static const ProtobufCIntRange pg_query__create_schema_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__create_schema_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateSchemaStmt", "CreateSchemaStmt", "PgQuery__CreateSchemaStmt", "pg_query", sizeof(PgQuery__CreateSchemaStmt), 4, pg_query__create_schema_stmt__field_descriptors, pg_query__create_schema_stmt__field_indices_by_name, 1, pg_query__create_schema_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_schema_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_database_stmt__field_descriptors[2] = { { "dbname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterDatabaseStmt, dbname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterDatabaseStmt, n_options), offsetof(PgQuery__AlterDatabaseStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_database_stmt__field_indices_by_name[] = { 0, /* field[0] = dbname */ 1, /* field[1] = options */ }; static const ProtobufCIntRange pg_query__alter_database_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__alter_database_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterDatabaseStmt", "AlterDatabaseStmt", "PgQuery__AlterDatabaseStmt", "pg_query", sizeof(PgQuery__AlterDatabaseStmt), 2, pg_query__alter_database_stmt__field_descriptors, pg_query__alter_database_stmt__field_indices_by_name, 1, pg_query__alter_database_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_database_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_database_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__alter_role_set_stmt__field_descriptors[3] = { { "role", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterRoleSetStmt, role), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "database", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterRoleSetStmt, database), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "setstmt", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterRoleSetStmt, setstmt), &pg_query__variable_set_stmt__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_role_set_stmt__field_indices_by_name[] = { 1, /* field[1] = database */ 0, /* field[0] = role */ 2, /* field[2] = setstmt */ }; static const ProtobufCIntRange pg_query__alter_role_set_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__alter_role_set_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterRoleSetStmt", "AlterRoleSetStmt", "PgQuery__AlterRoleSetStmt", "pg_query", sizeof(PgQuery__AlterRoleSetStmt), 3, pg_query__alter_role_set_stmt__field_descriptors, pg_query__alter_role_set_stmt__field_indices_by_name, 1, pg_query__alter_role_set_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_role_set_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_conversion_stmt__field_descriptors[5] = { { "conversion_name", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateConversionStmt, n_conversion_name), offsetof(PgQuery__CreateConversionStmt, conversion_name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "for_encoding_name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateConversionStmt, for_encoding_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "to_encoding_name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateConversionStmt, to_encoding_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func_name", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateConversionStmt, n_func_name), offsetof(PgQuery__CreateConversionStmt, func_name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "def", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateConversionStmt, def), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_conversion_stmt__field_indices_by_name[] = { 0, /* field[0] = conversion_name */ 4, /* field[4] = def */ 1, /* field[1] = for_encoding_name */ 3, /* field[3] = func_name */ 2, /* field[2] = to_encoding_name */ }; static const ProtobufCIntRange pg_query__create_conversion_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__create_conversion_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateConversionStmt", "CreateConversionStmt", "PgQuery__CreateConversionStmt", "pg_query", sizeof(PgQuery__CreateConversionStmt), 5, pg_query__create_conversion_stmt__field_descriptors, pg_query__create_conversion_stmt__field_indices_by_name, 1, pg_query__create_conversion_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_conversion_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_cast_stmt__field_descriptors[5] = { { "sourcetype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateCastStmt, sourcetype), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "targettype", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateCastStmt, targettype), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateCastStmt, func), &pg_query__object_with_args__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "context", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__CreateCastStmt, context), &pg_query__coercion_context__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inout", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateCastStmt, inout), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_cast_stmt__field_indices_by_name[] = { 3, /* field[3] = context */ 2, /* field[2] = func */ 4, /* field[4] = inout */ 0, /* field[0] = sourcetype */ 1, /* field[1] = targettype */ }; static const ProtobufCIntRange pg_query__create_cast_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__create_cast_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateCastStmt", "CreateCastStmt", "PgQuery__CreateCastStmt", "pg_query", sizeof(PgQuery__CreateCastStmt), 5, pg_query__create_cast_stmt__field_descriptors, pg_query__create_cast_stmt__field_indices_by_name, 1, pg_query__create_cast_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_cast_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_op_class_stmt__field_descriptors[6] = { { "opclassname", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateOpClassStmt, n_opclassname), offsetof(PgQuery__CreateOpClassStmt, opclassname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opfamilyname", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateOpClassStmt, n_opfamilyname), offsetof(PgQuery__CreateOpClassStmt, opfamilyname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "amname", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateOpClassStmt, amname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "datatype", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateOpClassStmt, datatype), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "items", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateOpClassStmt, n_items), offsetof(PgQuery__CreateOpClassStmt, items), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_default", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateOpClassStmt, is_default), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_op_class_stmt__field_indices_by_name[] = { 2, /* field[2] = amname */ 3, /* field[3] = datatype */ 5, /* field[5] = is_default */ 4, /* field[4] = items */ 0, /* field[0] = opclassname */ 1, /* field[1] = opfamilyname */ }; static const ProtobufCIntRange pg_query__create_op_class_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__create_op_class_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateOpClassStmt", "CreateOpClassStmt", "PgQuery__CreateOpClassStmt", "pg_query", sizeof(PgQuery__CreateOpClassStmt), 6, pg_query__create_op_class_stmt__field_descriptors, pg_query__create_op_class_stmt__field_indices_by_name, 1, pg_query__create_op_class_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_op_class_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_op_family_stmt__field_descriptors[2] = { { "opfamilyname", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateOpFamilyStmt, n_opfamilyname), offsetof(PgQuery__CreateOpFamilyStmt, opfamilyname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "amname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateOpFamilyStmt, amname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_op_family_stmt__field_indices_by_name[] = { 1, /* field[1] = amname */ 0, /* field[0] = opfamilyname */ }; static const ProtobufCIntRange pg_query__create_op_family_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__create_op_family_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateOpFamilyStmt", "CreateOpFamilyStmt", "PgQuery__CreateOpFamilyStmt", "pg_query", sizeof(PgQuery__CreateOpFamilyStmt), 2, pg_query__create_op_family_stmt__field_descriptors, pg_query__create_op_family_stmt__field_indices_by_name, 1, pg_query__create_op_family_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_op_family_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_op_family_stmt__field_descriptors[4] = { { "opfamilyname", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterOpFamilyStmt, n_opfamilyname), offsetof(PgQuery__AlterOpFamilyStmt, opfamilyname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "amname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterOpFamilyStmt, amname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_drop", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterOpFamilyStmt, is_drop), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "items", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterOpFamilyStmt, n_items), offsetof(PgQuery__AlterOpFamilyStmt, items), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_op_family_stmt__field_indices_by_name[] = { 1, /* field[1] = amname */ 2, /* field[2] = is_drop */ 3, /* field[3] = items */ 0, /* field[0] = opfamilyname */ }; static const ProtobufCIntRange pg_query__alter_op_family_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__alter_op_family_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterOpFamilyStmt", "AlterOpFamilyStmt", "PgQuery__AlterOpFamilyStmt", "pg_query", sizeof(PgQuery__AlterOpFamilyStmt), 4, pg_query__alter_op_family_stmt__field_descriptors, pg_query__alter_op_family_stmt__field_indices_by_name, 1, pg_query__alter_op_family_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_op_family_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__prepare_stmt__field_descriptors[3] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__PrepareStmt, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "argtypes", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__PrepareStmt, n_argtypes), offsetof(PgQuery__PrepareStmt, argtypes), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "query", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__PrepareStmt, query), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__prepare_stmt__field_indices_by_name[] = { 1, /* field[1] = argtypes */ 0, /* field[0] = name */ 2, /* field[2] = query */ }; static const ProtobufCIntRange pg_query__prepare_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__prepare_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.PrepareStmt", "PrepareStmt", "PgQuery__PrepareStmt", "pg_query", sizeof(PgQuery__PrepareStmt), 3, pg_query__prepare_stmt__field_descriptors, pg_query__prepare_stmt__field_indices_by_name, 1, pg_query__prepare_stmt__number_ranges, (ProtobufCMessageInit) pg_query__prepare_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__execute_stmt__field_descriptors[2] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ExecuteStmt, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "params", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ExecuteStmt, n_params), offsetof(PgQuery__ExecuteStmt, params), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__execute_stmt__field_indices_by_name[] = { 0, /* field[0] = name */ 1, /* field[1] = params */ }; static const ProtobufCIntRange pg_query__execute_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__execute_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ExecuteStmt", "ExecuteStmt", "PgQuery__ExecuteStmt", "pg_query", sizeof(PgQuery__ExecuteStmt), 2, pg_query__execute_stmt__field_descriptors, pg_query__execute_stmt__field_indices_by_name, 1, pg_query__execute_stmt__number_ranges, (ProtobufCMessageInit) pg_query__execute_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__deallocate_stmt__field_descriptors[1] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__DeallocateStmt, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__deallocate_stmt__field_indices_by_name[] = { 0, /* field[0] = name */ }; static const ProtobufCIntRange pg_query__deallocate_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__deallocate_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DeallocateStmt", "DeallocateStmt", "PgQuery__DeallocateStmt", "pg_query", sizeof(PgQuery__DeallocateStmt), 1, pg_query__deallocate_stmt__field_descriptors, pg_query__deallocate_stmt__field_indices_by_name, 1, pg_query__deallocate_stmt__number_ranges, (ProtobufCMessageInit) pg_query__deallocate_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__declare_cursor_stmt__field_descriptors[3] = { { "portalname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__DeclareCursorStmt, portalname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__DeclareCursorStmt, options), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "query", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__DeclareCursorStmt, query), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__declare_cursor_stmt__field_indices_by_name[] = { 1, /* field[1] = options */ 0, /* field[0] = portalname */ 2, /* field[2] = query */ }; static const ProtobufCIntRange pg_query__declare_cursor_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__declare_cursor_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DeclareCursorStmt", "DeclareCursorStmt", "PgQuery__DeclareCursorStmt", "pg_query", sizeof(PgQuery__DeclareCursorStmt), 3, pg_query__declare_cursor_stmt__field_descriptors, pg_query__declare_cursor_stmt__field_indices_by_name, 1, pg_query__declare_cursor_stmt__number_ranges, (ProtobufCMessageInit) pg_query__declare_cursor_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_table_space_stmt__field_descriptors[4] = { { "tablespacename", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTableSpaceStmt, tablespacename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "owner", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTableSpaceStmt, owner), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTableSpaceStmt, location), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateTableSpaceStmt, n_options), offsetof(PgQuery__CreateTableSpaceStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_table_space_stmt__field_indices_by_name[] = { 2, /* field[2] = location */ 3, /* field[3] = options */ 1, /* field[1] = owner */ 0, /* field[0] = tablespacename */ }; static const ProtobufCIntRange pg_query__create_table_space_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__create_table_space_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateTableSpaceStmt", "CreateTableSpaceStmt", "PgQuery__CreateTableSpaceStmt", "pg_query", sizeof(PgQuery__CreateTableSpaceStmt), 4, pg_query__create_table_space_stmt__field_descriptors, pg_query__create_table_space_stmt__field_indices_by_name, 1, pg_query__create_table_space_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_table_space_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__drop_table_space_stmt__field_descriptors[2] = { { "tablespacename", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__DropTableSpaceStmt, tablespacename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DropTableSpaceStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__drop_table_space_stmt__field_indices_by_name[] = { 1, /* field[1] = missing_ok */ 0, /* field[0] = tablespacename */ }; static const ProtobufCIntRange pg_query__drop_table_space_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__drop_table_space_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DropTableSpaceStmt", "DropTableSpaceStmt", "PgQuery__DropTableSpaceStmt", "pg_query", sizeof(PgQuery__DropTableSpaceStmt), 2, pg_query__drop_table_space_stmt__field_descriptors, pg_query__drop_table_space_stmt__field_indices_by_name, 1, pg_query__drop_table_space_stmt__number_ranges, (ProtobufCMessageInit) pg_query__drop_table_space_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_object_depends_stmt__field_descriptors[5] = { { "object_type", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterObjectDependsStmt, object_type), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relation", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterObjectDependsStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "object", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterObjectDependsStmt, object), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "extname", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterObjectDependsStmt, extname), &pg_query__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__drop_owned_stmt__field_descriptors[2] = { { "roles", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DropOwnedStmt, n_roles), offsetof(PgQuery__DropOwnedStmt, roles), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "behavior", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__DropOwnedStmt, behavior), &pg_query__drop_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__drop_owned_stmt__field_indices_by_name[] = { 1, /* field[1] = behavior */ 0, /* field[0] = roles */ }; static const ProtobufCIntRange pg_query__drop_owned_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__drop_owned_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DropOwnedStmt", "DropOwnedStmt", "PgQuery__DropOwnedStmt", "pg_query", sizeof(PgQuery__DropOwnedStmt), 2, pg_query__drop_owned_stmt__field_descriptors, pg_query__drop_owned_stmt__field_indices_by_name, 1, pg_query__drop_owned_stmt__number_ranges, (ProtobufCMessageInit) pg_query__drop_owned_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__reassign_owned_stmt__field_descriptors[2] = { { "roles", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ReassignOwnedStmt, n_roles), offsetof(PgQuery__ReassignOwnedStmt, roles), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "newrole", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ReassignOwnedStmt, newrole), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__reassign_owned_stmt__field_indices_by_name[] = { 1, /* field[1] = newrole */ 0, /* field[0] = roles */ }; static const ProtobufCIntRange pg_query__reassign_owned_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__reassign_owned_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ReassignOwnedStmt", "ReassignOwnedStmt", "PgQuery__ReassignOwnedStmt", "pg_query", sizeof(PgQuery__ReassignOwnedStmt), 2, pg_query__reassign_owned_stmt__field_descriptors, pg_query__reassign_owned_stmt__field_indices_by_name, 1, pg_query__reassign_owned_stmt__number_ranges, (ProtobufCMessageInit) pg_query__reassign_owned_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__composite_type_stmt__field_descriptors[2] = { { "typevar", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CompositeTypeStmt, typevar), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coldeflist", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CompositeTypeStmt, n_coldeflist), offsetof(PgQuery__CompositeTypeStmt, coldeflist), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__composite_type_stmt__field_indices_by_name[] = { 1, /* field[1] = coldeflist */ 0, /* field[0] = typevar */ }; static const ProtobufCIntRange pg_query__composite_type_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__composite_type_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CompositeTypeStmt", "CompositeTypeStmt", "PgQuery__CompositeTypeStmt", "pg_query", sizeof(PgQuery__CompositeTypeStmt), 2, pg_query__composite_type_stmt__field_descriptors, pg_query__composite_type_stmt__field_indices_by_name, 1, pg_query__composite_type_stmt__number_ranges, (ProtobufCMessageInit) pg_query__composite_type_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_enum_stmt__field_descriptors[2] = { { "type_name", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateEnumStmt, n_type_name), offsetof(PgQuery__CreateEnumStmt, type_name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "vals", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateEnumStmt, n_vals), offsetof(PgQuery__CreateEnumStmt, vals), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_enum_stmt__field_indices_by_name[] = { 0, /* field[0] = type_name */ 1, /* field[1] = vals */ }; static const ProtobufCIntRange pg_query__create_enum_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__create_enum_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateEnumStmt", "CreateEnumStmt", "PgQuery__CreateEnumStmt", "pg_query", sizeof(PgQuery__CreateEnumStmt), 2, pg_query__create_enum_stmt__field_descriptors, pg_query__create_enum_stmt__field_indices_by_name, 1, pg_query__create_enum_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_enum_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_range_stmt__field_descriptors[2] = { { "type_name", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateRangeStmt, n_type_name), offsetof(PgQuery__CreateRangeStmt, type_name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "params", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateRangeStmt, n_params), offsetof(PgQuery__CreateRangeStmt, params), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_range_stmt__field_indices_by_name[] = { 1, /* field[1] = params */ 0, /* field[0] = type_name */ }; static const ProtobufCIntRange pg_query__create_range_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__create_range_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateRangeStmt", "CreateRangeStmt", "PgQuery__CreateRangeStmt", "pg_query", sizeof(PgQuery__CreateRangeStmt), 2, pg_query__create_range_stmt__field_descriptors, pg_query__create_range_stmt__field_indices_by_name, 1, pg_query__create_range_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_range_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_enum_stmt__field_descriptors[6] = { { "type_name", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterEnumStmt, n_type_name), offsetof(PgQuery__AlterEnumStmt, type_name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "old_val", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterEnumStmt, old_val), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "new_val", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterEnumStmt, new_val), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "new_val_neighbor", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterEnumStmt, new_val_neighbor), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "new_val_is_after", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterEnumStmt, new_val_is_after), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "skip_if_new_val_exists", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterEnumStmt, skip_if_new_val_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_enum_stmt__field_indices_by_name[] = { 2, /* field[2] = new_val */ 4, /* field[4] = new_val_is_after */ 3, /* field[3] = new_val_neighbor */ 1, /* field[1] = old_val */ 5, /* field[5] = skip_if_new_val_exists */ 0, /* field[0] = type_name */ }; static const ProtobufCIntRange pg_query__alter_enum_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__alter_enum_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterEnumStmt", "AlterEnumStmt", "PgQuery__AlterEnumStmt", "pg_query", sizeof(PgQuery__AlterEnumStmt), 6, pg_query__alter_enum_stmt__field_descriptors, pg_query__alter_enum_stmt__field_indices_by_name, 1, pg_query__alter_enum_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_enum_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_tsdictionary_stmt__field_descriptors[2] = { { "dictname", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterTSDictionaryStmt, n_dictname), offsetof(PgQuery__AlterTSDictionaryStmt, dictname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterTSDictionaryStmt, n_options), offsetof(PgQuery__AlterTSDictionaryStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_tsdictionary_stmt__field_indices_by_name[] = { 0, /* field[0] = dictname */ 1, /* field[1] = options */ }; static const ProtobufCIntRange pg_query__alter_tsdictionary_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__alter_tsdictionary_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterTSDictionaryStmt", "AlterTSDictionaryStmt", "PgQuery__AlterTSDictionaryStmt", "pg_query", sizeof(PgQuery__AlterTSDictionaryStmt), 2, pg_query__alter_tsdictionary_stmt__field_descriptors, pg_query__alter_tsdictionary_stmt__field_indices_by_name, 1, pg_query__alter_tsdictionary_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_tsdictionary_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_tsconfiguration_stmt__field_descriptors[7] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTSConfigurationStmt, kind), &pg_query__alter_tsconfig_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cfgname", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterTSConfigurationStmt, n_cfgname), offsetof(PgQuery__AlterTSConfigurationStmt, cfgname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "tokentype", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterTSConfigurationStmt, n_tokentype), offsetof(PgQuery__AlterTSConfigurationStmt, tokentype), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "dicts", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterTSConfigurationStmt, n_dicts), offsetof(PgQuery__AlterTSConfigurationStmt, dicts), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "override", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTSConfigurationStmt, override), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "replace", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTSConfigurationStmt, replace), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTSConfigurationStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_tsconfiguration_stmt__field_indices_by_name[] = { 1, /* field[1] = cfgname */ 3, /* field[3] = dicts */ 0, /* field[0] = kind */ 6, /* field[6] = missing_ok */ 4, /* field[4] = override */ 5, /* field[5] = replace */ 2, /* field[2] = tokentype */ }; static const ProtobufCIntRange pg_query__alter_tsconfiguration_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__alter_tsconfiguration_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterTSConfigurationStmt", "AlterTSConfigurationStmt", "PgQuery__AlterTSConfigurationStmt", "pg_query", sizeof(PgQuery__AlterTSConfigurationStmt), 7, pg_query__alter_tsconfiguration_stmt__field_descriptors, pg_query__alter_tsconfiguration_stmt__field_indices_by_name, 1, pg_query__alter_tsconfiguration_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_tsconfiguration_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_fdw_stmt__field_descriptors[3] = { { "fdwname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateFdwStmt, fdwname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func_options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateFdwStmt, n_func_options), offsetof(PgQuery__CreateFdwStmt, func_options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateFdwStmt, n_options), offsetof(PgQuery__CreateFdwStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_fdw_stmt__field_indices_by_name[] = { 0, /* field[0] = fdwname */ 1, /* field[1] = func_options */ 2, /* field[2] = options */ }; static const ProtobufCIntRange pg_query__create_fdw_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__create_fdw_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateFdwStmt", "CreateFdwStmt", "PgQuery__CreateFdwStmt", "pg_query", sizeof(PgQuery__CreateFdwStmt), 3, pg_query__create_fdw_stmt__field_descriptors, pg_query__create_fdw_stmt__field_indices_by_name, 1, pg_query__create_fdw_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_fdw_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_fdw_stmt__field_descriptors[3] = { { "fdwname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterFdwStmt, fdwname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func_options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterFdwStmt, n_func_options), offsetof(PgQuery__AlterFdwStmt, func_options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterFdwStmt, n_options), offsetof(PgQuery__AlterFdwStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_fdw_stmt__field_indices_by_name[] = { 0, /* field[0] = fdwname */ 1, /* field[1] = func_options */ 2, /* field[2] = options */ }; static const ProtobufCIntRange pg_query__alter_fdw_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__alter_fdw_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterFdwStmt", "AlterFdwStmt", "PgQuery__AlterFdwStmt", "pg_query", sizeof(PgQuery__AlterFdwStmt), 3, pg_query__alter_fdw_stmt__field_descriptors, pg_query__alter_fdw_stmt__field_indices_by_name, 1, pg_query__alter_fdw_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_fdw_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_foreign_server_stmt__field_descriptors[6] = { { "servername", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateForeignServerStmt, servername), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "servertype", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateForeignServerStmt, servertype), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "version", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateForeignServerStmt, version), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "fdwname", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateForeignServerStmt, fdwname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateForeignServerStmt, if_not_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateForeignServerStmt, n_options), offsetof(PgQuery__CreateForeignServerStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_foreign_server_stmt__field_indices_by_name[] = { 3, /* field[3] = fdwname */ 4, /* field[4] = if_not_exists */ 5, /* field[5] = options */ 0, /* field[0] = servername */ 1, /* field[1] = servertype */ 2, /* field[2] = version */ }; static const ProtobufCIntRange pg_query__create_foreign_server_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__create_foreign_server_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateForeignServerStmt", "CreateForeignServerStmt", "PgQuery__CreateForeignServerStmt", "pg_query", sizeof(PgQuery__CreateForeignServerStmt), 6, pg_query__create_foreign_server_stmt__field_descriptors, pg_query__create_foreign_server_stmt__field_indices_by_name, 1, pg_query__create_foreign_server_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_foreign_server_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_foreign_server_stmt__field_descriptors[4] = { { "servername", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterForeignServerStmt, servername), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "version", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterForeignServerStmt, version), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterForeignServerStmt, n_options), offsetof(PgQuery__AlterForeignServerStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "has_version", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterForeignServerStmt, has_version), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_foreign_server_stmt__field_indices_by_name[] = { 3, /* field[3] = has_version */ 2, /* field[2] = options */ 0, /* field[0] = servername */ 1, /* field[1] = version */ }; static const ProtobufCIntRange pg_query__alter_foreign_server_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__alter_foreign_server_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterForeignServerStmt", "AlterForeignServerStmt", "PgQuery__AlterForeignServerStmt", "pg_query", sizeof(PgQuery__AlterForeignServerStmt), 4, pg_query__alter_foreign_server_stmt__field_descriptors, pg_query__alter_foreign_server_stmt__field_indices_by_name, 1, pg_query__alter_foreign_server_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_foreign_server_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_user_mapping_stmt__field_descriptors[4] = { { "user", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateUserMappingStmt, user), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "servername", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateUserMappingStmt, servername), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateUserMappingStmt, if_not_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateUserMappingStmt, n_options), offsetof(PgQuery__CreateUserMappingStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_user_mapping_stmt__field_indices_by_name[] = { 2, /* field[2] = if_not_exists */ 3, /* field[3] = options */ 1, /* field[1] = servername */ 0, /* field[0] = user */ }; static const ProtobufCIntRange pg_query__create_user_mapping_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__create_user_mapping_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateUserMappingStmt", "CreateUserMappingStmt", "PgQuery__CreateUserMappingStmt", "pg_query", sizeof(PgQuery__CreateUserMappingStmt), 4, pg_query__create_user_mapping_stmt__field_descriptors, pg_query__create_user_mapping_stmt__field_indices_by_name, 1, pg_query__create_user_mapping_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_user_mapping_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_user_mapping_stmt__field_descriptors[3] = { { "user", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterUserMappingStmt, user), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "servername", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterUserMappingStmt, servername), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterUserMappingStmt, n_options), offsetof(PgQuery__AlterUserMappingStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_user_mapping_stmt__field_indices_by_name[] = { 2, /* field[2] = options */ 1, /* field[1] = servername */ 0, /* field[0] = user */ }; static const ProtobufCIntRange pg_query__alter_user_mapping_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__alter_user_mapping_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterUserMappingStmt", "AlterUserMappingStmt", "PgQuery__AlterUserMappingStmt", "pg_query", sizeof(PgQuery__AlterUserMappingStmt), 3, pg_query__alter_user_mapping_stmt__field_descriptors, pg_query__alter_user_mapping_stmt__field_indices_by_name, 1, pg_query__alter_user_mapping_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_user_mapping_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__drop_user_mapping_stmt__field_descriptors[3] = { { "user", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__DropUserMappingStmt, user), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "servername", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__DropUserMappingStmt, servername), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DropUserMappingStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__drop_user_mapping_stmt__field_indices_by_name[] = { 2, /* field[2] = missing_ok */ 1, /* field[1] = servername */ 0, /* field[0] = user */ }; static const ProtobufCIntRange pg_query__drop_user_mapping_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__drop_user_mapping_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DropUserMappingStmt", "DropUserMappingStmt", "PgQuery__DropUserMappingStmt", "pg_query", sizeof(PgQuery__DropUserMappingStmt), 3, pg_query__drop_user_mapping_stmt__field_descriptors, pg_query__drop_user_mapping_stmt__field_indices_by_name, 1, pg_query__drop_user_mapping_stmt__number_ranges, (ProtobufCMessageInit) pg_query__drop_user_mapping_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_table_space_options_stmt__field_descriptors[3] = { { "tablespacename", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableSpaceOptionsStmt, tablespacename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterTableSpaceOptionsStmt, n_options), offsetof(PgQuery__AlterTableSpaceOptionsStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_reset", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableSpaceOptionsStmt, is_reset), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_table_space_options_stmt__field_indices_by_name[] = { 2, /* field[2] = is_reset */ 1, /* field[1] = options */ 0, /* field[0] = tablespacename */ }; static const ProtobufCIntRange pg_query__alter_table_space_options_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__alter_table_space_options_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterTableSpaceOptionsStmt", "AlterTableSpaceOptionsStmt", "PgQuery__AlterTableSpaceOptionsStmt", "pg_query", sizeof(PgQuery__AlterTableSpaceOptionsStmt), 3, pg_query__alter_table_space_options_stmt__field_descriptors, pg_query__alter_table_space_options_stmt__field_indices_by_name, 1, pg_query__alter_table_space_options_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_table_space_options_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_table_move_all_stmt__field_descriptors[5] = { { "orig_tablespacename", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableMoveAllStmt, orig_tablespacename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "objtype", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableMoveAllStmt, objtype), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "roles", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterTableMoveAllStmt, n_roles), offsetof(PgQuery__AlterTableMoveAllStmt, roles), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "new_tablespacename", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableMoveAllStmt, new_tablespacename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "nowait", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableMoveAllStmt, nowait), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_table_move_all_stmt__field_indices_by_name[] = { 3, /* field[3] = new_tablespacename */ 4, /* field[4] = nowait */ 1, /* field[1] = objtype */ 0, /* field[0] = orig_tablespacename */ 2, /* field[2] = roles */ }; static const ProtobufCIntRange pg_query__alter_table_move_all_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__alter_table_move_all_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterTableMoveAllStmt", "AlterTableMoveAllStmt", "PgQuery__AlterTableMoveAllStmt", "pg_query", sizeof(PgQuery__AlterTableMoveAllStmt), 5, pg_query__alter_table_move_all_stmt__field_descriptors, pg_query__alter_table_move_all_stmt__field_indices_by_name, 1, pg_query__alter_table_move_all_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_table_move_all_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__sec_label_stmt__field_descriptors[4] = { { "objtype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__SecLabelStmt, objtype), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "object", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SecLabelStmt, object), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "provider", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__SecLabelStmt, provider), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "label", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__SecLabelStmt, label), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__sec_label_stmt__field_indices_by_name[] = { 3, /* field[3] = label */ 1, /* field[1] = object */ 0, /* field[0] = objtype */ 2, /* field[2] = provider */ }; static const ProtobufCIntRange pg_query__sec_label_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__sec_label_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SecLabelStmt", "SecLabelStmt", "PgQuery__SecLabelStmt", "pg_query", sizeof(PgQuery__SecLabelStmt), 4, pg_query__sec_label_stmt__field_descriptors, pg_query__sec_label_stmt__field_indices_by_name, 1, pg_query__sec_label_stmt__number_ranges, (ProtobufCMessageInit) pg_query__sec_label_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_foreign_table_stmt__field_descriptors[3] = { { "base_stmt", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateForeignTableStmt, base_stmt), &pg_query__create_stmt__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "servername", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateForeignTableStmt, servername), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateForeignTableStmt, n_options), offsetof(PgQuery__CreateForeignTableStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_foreign_table_stmt__field_indices_by_name[] = { 0, /* field[0] = base_stmt */ 2, /* field[2] = options */ 1, /* field[1] = servername */ }; static const ProtobufCIntRange pg_query__create_foreign_table_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__create_foreign_table_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateForeignTableStmt", "CreateForeignTableStmt", "PgQuery__CreateForeignTableStmt", "pg_query", sizeof(PgQuery__CreateForeignTableStmt), 3, pg_query__create_foreign_table_stmt__field_descriptors, pg_query__create_foreign_table_stmt__field_indices_by_name, 1, pg_query__create_foreign_table_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_foreign_table_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__import_foreign_schema_stmt__field_descriptors[6] = { { "server_name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ImportForeignSchemaStmt, server_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "remote_schema", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ImportForeignSchemaStmt, remote_schema), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "local_schema", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ImportForeignSchemaStmt, local_schema), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "list_type", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__ImportForeignSchemaStmt, list_type), &pg_query__import_foreign_schema_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table_list", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ImportForeignSchemaStmt, n_table_list), offsetof(PgQuery__ImportForeignSchemaStmt, table_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ImportForeignSchemaStmt, n_options), offsetof(PgQuery__ImportForeignSchemaStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__import_foreign_schema_stmt__field_indices_by_name[] = { 3, /* field[3] = list_type */ 2, /* field[2] = local_schema */ 5, /* field[5] = options */ 1, /* field[1] = remote_schema */ 0, /* field[0] = server_name */ 4, /* field[4] = table_list */ }; static const ProtobufCIntRange pg_query__import_foreign_schema_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__import_foreign_schema_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ImportForeignSchemaStmt", "ImportForeignSchemaStmt", "PgQuery__ImportForeignSchemaStmt", "pg_query", sizeof(PgQuery__ImportForeignSchemaStmt), 6, pg_query__import_foreign_schema_stmt__field_descriptors, pg_query__import_foreign_schema_stmt__field_indices_by_name, 1, pg_query__import_foreign_schema_stmt__number_ranges, (ProtobufCMessageInit) pg_query__import_foreign_schema_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_extension_stmt__field_descriptors[3] = { { "extname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateExtensionStmt, extname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateExtensionStmt, if_not_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateExtensionStmt, n_options), offsetof(PgQuery__CreateExtensionStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_extension_stmt__field_indices_by_name[] = { 0, /* field[0] = extname */ 1, /* field[1] = if_not_exists */ 2, /* field[2] = options */ }; static const ProtobufCIntRange pg_query__create_extension_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__create_extension_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateExtensionStmt", "CreateExtensionStmt", "PgQuery__CreateExtensionStmt", "pg_query", sizeof(PgQuery__CreateExtensionStmt), 3, pg_query__create_extension_stmt__field_descriptors, pg_query__create_extension_stmt__field_indices_by_name, 1, pg_query__create_extension_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_extension_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_extension_stmt__field_descriptors[2] = { { "extname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterExtensionStmt, extname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterExtensionStmt, n_options), offsetof(PgQuery__AlterExtensionStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_extension_stmt__field_indices_by_name[] = { 0, /* field[0] = extname */ 1, /* field[1] = options */ }; static const ProtobufCIntRange pg_query__alter_extension_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__alter_extension_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterExtensionStmt", "AlterExtensionStmt", "PgQuery__AlterExtensionStmt", "pg_query", sizeof(PgQuery__AlterExtensionStmt), 2, pg_query__alter_extension_stmt__field_descriptors, pg_query__alter_extension_stmt__field_indices_by_name, 1, pg_query__alter_extension_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_extension_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_extension_contents_stmt__field_descriptors[4] = { { "extname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterExtensionContentsStmt, extname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "action", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__AlterExtensionContentsStmt, action), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "objtype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterExtensionContentsStmt, objtype), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "object", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterExtensionContentsStmt, object), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_extension_contents_stmt__field_indices_by_name[] = { 1, /* field[1] = action */ 0, /* field[0] = extname */ 3, /* field[3] = object */ 2, /* field[2] = objtype */ }; static const ProtobufCIntRange pg_query__alter_extension_contents_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__alter_extension_contents_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterExtensionContentsStmt", "AlterExtensionContentsStmt", "PgQuery__AlterExtensionContentsStmt", "pg_query", sizeof(PgQuery__AlterExtensionContentsStmt), 4, pg_query__alter_extension_contents_stmt__field_descriptors, pg_query__alter_extension_contents_stmt__field_indices_by_name, 1, pg_query__alter_extension_contents_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_extension_contents_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_event_trig_stmt__field_descriptors[4] = { { "trigname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateEventTrigStmt, trigname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "eventname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateEventTrigStmt, eventname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "whenclause", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateEventTrigStmt, n_whenclause), offsetof(PgQuery__CreateEventTrigStmt, whenclause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funcname", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateEventTrigStmt, n_funcname), offsetof(PgQuery__CreateEventTrigStmt, funcname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_event_trig_stmt__field_indices_by_name[] = { 1, /* field[1] = eventname */ 3, /* field[3] = funcname */ 0, /* field[0] = trigname */ 2, /* field[2] = whenclause */ }; static const ProtobufCIntRange pg_query__create_event_trig_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__create_event_trig_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateEventTrigStmt", "CreateEventTrigStmt", "PgQuery__CreateEventTrigStmt", "pg_query", sizeof(PgQuery__CreateEventTrigStmt), 4, pg_query__create_event_trig_stmt__field_descriptors, pg_query__create_event_trig_stmt__field_indices_by_name, 1, pg_query__create_event_trig_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_event_trig_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_event_trig_stmt__field_descriptors[2] = { { "trigname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterEventTrigStmt, trigname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "tgenabled", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterEventTrigStmt, tgenabled), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_event_trig_stmt__field_indices_by_name[] = { 1, /* field[1] = tgenabled */ 0, /* field[0] = trigname */ }; static const ProtobufCIntRange pg_query__alter_event_trig_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__alter_event_trig_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterEventTrigStmt", "AlterEventTrigStmt", "PgQuery__AlterEventTrigStmt", "pg_query", sizeof(PgQuery__AlterEventTrigStmt), 2, pg_query__alter_event_trig_stmt__field_descriptors, pg_query__alter_event_trig_stmt__field_indices_by_name, 1, pg_query__alter_event_trig_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_event_trig_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__refresh_mat_view_stmt__field_descriptors[3] = { { "concurrent", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RefreshMatViewStmt, concurrent), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "skip_data", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RefreshMatViewStmt, skip_data), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relation", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RefreshMatViewStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__refresh_mat_view_stmt__field_indices_by_name[] = { 0, /* field[0] = concurrent */ 2, /* field[2] = relation */ 1, /* field[1] = skip_data */ }; static const ProtobufCIntRange pg_query__refresh_mat_view_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__refresh_mat_view_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RefreshMatViewStmt", "RefreshMatViewStmt", "PgQuery__RefreshMatViewStmt", "pg_query", sizeof(PgQuery__RefreshMatViewStmt), 3, pg_query__refresh_mat_view_stmt__field_descriptors, pg_query__refresh_mat_view_stmt__field_indices_by_name, 1, pg_query__refresh_mat_view_stmt__number_ranges, (ProtobufCMessageInit) pg_query__refresh_mat_view_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__replica_identity_stmt__field_descriptors[2] = { { "identity_type", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ReplicaIdentityStmt, identity_type), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ReplicaIdentityStmt, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__replica_identity_stmt__field_indices_by_name[] = { 0, /* field[0] = identity_type */ 1, /* field[1] = name */ }; static const ProtobufCIntRange pg_query__replica_identity_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__replica_identity_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ReplicaIdentityStmt", "ReplicaIdentityStmt", "PgQuery__ReplicaIdentityStmt", "pg_query", sizeof(PgQuery__ReplicaIdentityStmt), 2, pg_query__replica_identity_stmt__field_descriptors, pg_query__replica_identity_stmt__field_indices_by_name, 1, pg_query__replica_identity_stmt__number_ranges, (ProtobufCMessageInit) pg_query__replica_identity_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_system_stmt__field_descriptors[1] = { { "setstmt", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterSystemStmt, setstmt), &pg_query__variable_set_stmt__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_system_stmt__field_indices_by_name[] = { 0, /* field[0] = setstmt */ }; static const ProtobufCIntRange pg_query__alter_system_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__alter_system_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterSystemStmt", "AlterSystemStmt", "PgQuery__AlterSystemStmt", "pg_query", sizeof(PgQuery__AlterSystemStmt), 1, pg_query__alter_system_stmt__field_descriptors, pg_query__alter_system_stmt__field_indices_by_name, 1, pg_query__alter_system_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_system_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_policy_stmt__field_descriptors[7] = { { "policy_name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePolicyStmt, policy_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePolicyStmt, table), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cmd_name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePolicyStmt, cmd_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "permissive", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePolicyStmt, permissive), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "roles", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreatePolicyStmt, n_roles), offsetof(PgQuery__CreatePolicyStmt, roles), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "qual", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePolicyStmt, qual), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_check", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePolicyStmt, with_check), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_policy_stmt__field_indices_by_name[] = { 2, /* field[2] = cmd_name */ 3, /* field[3] = permissive */ 0, /* field[0] = policy_name */ 5, /* field[5] = qual */ 4, /* field[4] = roles */ 1, /* field[1] = table */ 6, /* field[6] = with_check */ }; static const ProtobufCIntRange pg_query__create_policy_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__create_policy_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreatePolicyStmt", "CreatePolicyStmt", "PgQuery__CreatePolicyStmt", "pg_query", sizeof(PgQuery__CreatePolicyStmt), 7, pg_query__create_policy_stmt__field_descriptors, pg_query__create_policy_stmt__field_indices_by_name, 1, pg_query__create_policy_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_policy_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_policy_stmt__field_descriptors[5] = { { "policy_name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterPolicyStmt, policy_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterPolicyStmt, table), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "roles", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterPolicyStmt, n_roles), offsetof(PgQuery__AlterPolicyStmt, roles), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "qual", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterPolicyStmt, qual), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_check", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterPolicyStmt, with_check), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_policy_stmt__field_indices_by_name[] = { 0, /* field[0] = policy_name */ 3, /* field[3] = qual */ 2, /* field[2] = roles */ 1, /* field[1] = table */ 4, /* field[4] = with_check */ }; static const ProtobufCIntRange pg_query__alter_policy_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__alter_policy_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterPolicyStmt", "AlterPolicyStmt", "PgQuery__AlterPolicyStmt", "pg_query", sizeof(PgQuery__AlterPolicyStmt), 5, pg_query__alter_policy_stmt__field_descriptors, pg_query__alter_policy_stmt__field_indices_by_name, 1, pg_query__alter_policy_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_policy_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_transform_stmt__field_descriptors[5] = { { "replace", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTransformStmt, replace), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTransformStmt, type_name), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lang", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTransformStmt, lang), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "fromsql", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTransformStmt, fromsql), &pg_query__object_with_args__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "tosql", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTransformStmt, tosql), &pg_query__object_with_args__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_transform_stmt__field_indices_by_name[] = { 3, /* field[3] = fromsql */ 2, /* field[2] = lang */ 0, /* field[0] = replace */ 4, /* field[4] = tosql */ 1, /* field[1] = type_name */ }; static const ProtobufCIntRange pg_query__create_transform_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__create_transform_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateTransformStmt", "CreateTransformStmt", "PgQuery__CreateTransformStmt", "pg_query", sizeof(PgQuery__CreateTransformStmt), 5, pg_query__create_transform_stmt__field_descriptors, pg_query__create_transform_stmt__field_indices_by_name, 1, pg_query__create_transform_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_transform_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_am_stmt__field_descriptors[3] = { { "amname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateAmStmt, amname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "handler_name", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateAmStmt, n_handler_name), offsetof(PgQuery__CreateAmStmt, handler_name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "amtype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateAmStmt, amtype), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_am_stmt__field_indices_by_name[] = { 0, /* field[0] = amname */ 2, /* field[2] = amtype */ 1, /* field[1] = handler_name */ }; static const ProtobufCIntRange pg_query__create_am_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__create_am_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateAmStmt", "CreateAmStmt", "PgQuery__CreateAmStmt", "pg_query", sizeof(PgQuery__CreateAmStmt), 3, pg_query__create_am_stmt__field_descriptors, pg_query__create_am_stmt__field_indices_by_name, 1, pg_query__create_am_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_am_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_publication_stmt__field_descriptors[4] = { { "pubname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePublicationStmt, pubname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreatePublicationStmt, n_options), offsetof(PgQuery__CreatePublicationStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "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__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__alter_collation_stmt__field_descriptors[1] = { { "collname", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterCollationStmt, n_collname), offsetof(PgQuery__AlterCollationStmt, collname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_collation_stmt__field_indices_by_name[] = { 0, /* field[0] = collname */ }; static const ProtobufCIntRange pg_query__alter_collation_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__alter_collation_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterCollationStmt", "AlterCollationStmt", "PgQuery__AlterCollationStmt", "pg_query", sizeof(PgQuery__AlterCollationStmt), 1, pg_query__alter_collation_stmt__field_descriptors, pg_query__alter_collation_stmt__field_indices_by_name, 1, pg_query__alter_collation_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_collation_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__call_stmt__field_descriptors[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__alter_stats_stmt__field_descriptors[3] = { { "defnames", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterStatsStmt, n_defnames), offsetof(PgQuery__AlterStatsStmt, defnames), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "stxstattarget", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__AlterStatsStmt, stxstattarget), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterStatsStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_stats_stmt__field_indices_by_name[] = { 0, /* field[0] = defnames */ 2, /* field[2] = missing_ok */ 1, /* field[1] = stxstattarget */ }; static const ProtobufCIntRange pg_query__alter_stats_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__alter_stats_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterStatsStmt", "AlterStatsStmt", "PgQuery__AlterStatsStmt", "pg_query", sizeof(PgQuery__AlterStatsStmt), 3, pg_query__alter_stats_stmt__field_descriptors, pg_query__alter_stats_stmt__field_indices_by_name, 1, pg_query__alter_stats_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_stats_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__a__expr__field_descriptors[5] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AExpr, kind), &pg_query__a__expr__kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "name", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AExpr, n_name), offsetof(PgQuery__AExpr, name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lexpr", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AExpr, lexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rexpr", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AExpr, rexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__AExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__a__expr__field_indices_by_name[] = { 0, /* field[0] = kind */ 2, /* field[2] = lexpr */ 4, /* field[4] = location */ 1, /* field[1] = name */ 3, /* field[3] = rexpr */ }; static const ProtobufCIntRange pg_query__a__expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__a__expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.A_Expr", "AExpr", "PgQuery__AExpr", "pg_query", sizeof(PgQuery__AExpr), 5, pg_query__a__expr__field_descriptors, pg_query__a__expr__field_indices_by_name, 1, pg_query__a__expr__number_ranges, (ProtobufCMessageInit) pg_query__a__expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__column_ref__field_descriptors[2] = { { "fields", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ColumnRef, n_fields), offsetof(PgQuery__ColumnRef, fields), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnRef, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__column_ref__field_indices_by_name[] = { 0, /* field[0] = fields */ 1, /* field[1] = location */ }; static const ProtobufCIntRange pg_query__column_ref__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__column_ref__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ColumnRef", "ColumnRef", "PgQuery__ColumnRef", "pg_query", sizeof(PgQuery__ColumnRef), 2, pg_query__column_ref__field_descriptors, pg_query__column_ref__field_indices_by_name, 1, pg_query__column_ref__number_ranges, (ProtobufCMessageInit) pg_query__column_ref__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__param_ref__field_descriptors[2] = { { "number", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ParamRef, number), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ParamRef, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__param_ref__field_indices_by_name[] = { 1, /* field[1] = location */ 0, /* field[0] = number */ }; static const ProtobufCIntRange pg_query__param_ref__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__param_ref__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ParamRef", "ParamRef", "PgQuery__ParamRef", "pg_query", sizeof(PgQuery__ParamRef), 2, pg_query__param_ref__field_descriptors, pg_query__param_ref__field_indices_by_name, 1, pg_query__param_ref__number_ranges, (ProtobufCMessageInit) pg_query__param_ref__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__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__type_cast__field_descriptors[3] = { { "arg", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__TypeCast, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__TypeCast, type_name), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__TypeCast, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__type_cast__field_indices_by_name[] = { 0, /* field[0] = arg */ 2, /* field[2] = location */ 1, /* field[1] = type_name */ }; static const ProtobufCIntRange pg_query__type_cast__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__type_cast__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TypeCast", "TypeCast", "PgQuery__TypeCast", "pg_query", sizeof(PgQuery__TypeCast), 3, pg_query__type_cast__field_descriptors, pg_query__type_cast__field_indices_by_name, 1, pg_query__type_cast__number_ranges, (ProtobufCMessageInit) pg_query__type_cast__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__collate_clause__field_descriptors[3] = { { "arg", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CollateClause, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collname", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CollateClause, n_collname), offsetof(PgQuery__CollateClause, collname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CollateClause, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__collate_clause__field_indices_by_name[] = { 0, /* field[0] = arg */ 1, /* field[1] = collname */ 2, /* field[2] = location */ }; static const ProtobufCIntRange pg_query__collate_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__collate_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CollateClause", "CollateClause", "PgQuery__CollateClause", "pg_query", sizeof(PgQuery__CollateClause), 3, pg_query__collate_clause__field_descriptors, pg_query__collate_clause__field_indices_by_name, 1, pg_query__collate_clause__number_ranges, (ProtobufCMessageInit) pg_query__collate_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__sort_by__field_descriptors[5] = { { "node", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SortBy, node), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sortby_dir", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__SortBy, sortby_dir), &pg_query__sort_by_dir__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sortby_nulls", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__SortBy, sortby_nulls), &pg_query__sort_by_nulls__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "use_op", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SortBy, n_use_op), offsetof(PgQuery__SortBy, use_op), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SortBy, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__sort_by__field_indices_by_name[] = { 4, /* field[4] = location */ 0, /* field[0] = node */ 1, /* field[1] = sortby_dir */ 2, /* field[2] = sortby_nulls */ 3, /* field[3] = use_op */ }; static const ProtobufCIntRange pg_query__sort_by__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__sort_by__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SortBy", "SortBy", "PgQuery__SortBy", "pg_query", sizeof(PgQuery__SortBy), 5, pg_query__sort_by__field_descriptors, pg_query__sort_by__field_indices_by_name, 1, pg_query__sort_by__number_ranges, (ProtobufCMessageInit) pg_query__sort_by__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__window_def__field_descriptors[8] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__WindowDef, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "refname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__WindowDef, refname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_clause", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__WindowDef, n_partition_clause), offsetof(PgQuery__WindowDef, partition_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "order_clause", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__WindowDef, n_order_clause), offsetof(PgQuery__WindowDef, order_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "frame_options", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowDef, frame_options), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "start_offset", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__WindowDef, start_offset), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "end_offset", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__WindowDef, end_offset), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowDef, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__window_def__field_indices_by_name[] = { 6, /* field[6] = end_offset */ 4, /* field[4] = frame_options */ 7, /* field[7] = location */ 0, /* field[0] = name */ 3, /* field[3] = order_clause */ 2, /* field[2] = partition_clause */ 1, /* field[1] = refname */ 5, /* field[5] = start_offset */ }; static const ProtobufCIntRange pg_query__window_def__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__window_def__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.WindowDef", "WindowDef", "PgQuery__WindowDef", "pg_query", sizeof(PgQuery__WindowDef), 8, pg_query__window_def__field_descriptors, pg_query__window_def__field_indices_by_name, 1, pg_query__window_def__number_ranges, (ProtobufCMessageInit) pg_query__window_def__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__range_subselect__field_descriptors[3] = { { "lateral", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeSubselect, lateral), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "subquery", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeSubselect, subquery), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alias", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeSubselect, alias), &pg_query__alias__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__range_subselect__field_indices_by_name[] = { 2, /* field[2] = alias */ 0, /* field[0] = lateral */ 1, /* field[1] = subquery */ }; static const ProtobufCIntRange pg_query__range_subselect__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__range_subselect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeSubselect", "RangeSubselect", "PgQuery__RangeSubselect", "pg_query", sizeof(PgQuery__RangeSubselect), 3, pg_query__range_subselect__field_descriptors, pg_query__range_subselect__field_indices_by_name, 1, pg_query__range_subselect__number_ranges, (ProtobufCMessageInit) pg_query__range_subselect__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__range_function__field_descriptors[6] = { { "lateral", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeFunction, lateral), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ordinality", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeFunction, ordinality), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_rowsfrom", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeFunction, is_rowsfrom), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "functions", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeFunction, n_functions), offsetof(PgQuery__RangeFunction, functions), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alias", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeFunction, alias), &pg_query__alias__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coldeflist", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeFunction, n_coldeflist), offsetof(PgQuery__RangeFunction, coldeflist), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__range_function__field_indices_by_name[] = { 4, /* field[4] = alias */ 5, /* field[5] = coldeflist */ 3, /* field[3] = functions */ 2, /* field[2] = is_rowsfrom */ 0, /* field[0] = lateral */ 1, /* field[1] = ordinality */ }; static const ProtobufCIntRange pg_query__range_function__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__range_function__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeFunction", "RangeFunction", "PgQuery__RangeFunction", "pg_query", sizeof(PgQuery__RangeFunction), 6, pg_query__range_function__field_descriptors, pg_query__range_function__field_indices_by_name, 1, pg_query__range_function__number_ranges, (ProtobufCMessageInit) pg_query__range_function__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__range_table_sample__field_descriptors[5] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableSample, relation), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "method", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTableSample, n_method), offsetof(PgQuery__RangeTableSample, method), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTableSample, n_args), offsetof(PgQuery__RangeTableSample, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "repeatable", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableSample, repeatable), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableSample, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__range_table_sample__field_indices_by_name[] = { 2, /* field[2] = args */ 4, /* field[4] = location */ 1, /* field[1] = method */ 0, /* field[0] = relation */ 3, /* field[3] = repeatable */ }; static const ProtobufCIntRange pg_query__range_table_sample__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__range_table_sample__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeTableSample", "RangeTableSample", "PgQuery__RangeTableSample", "pg_query", sizeof(PgQuery__RangeTableSample), 5, pg_query__range_table_sample__field_descriptors, pg_query__range_table_sample__field_indices_by_name, 1, pg_query__range_table_sample__number_ranges, (ProtobufCMessageInit) pg_query__range_table_sample__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__range_table_func__field_descriptors[7] = { { "lateral", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFunc, lateral), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "docexpr", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFunc, docexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rowexpr", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFunc, rowexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "namespaces", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTableFunc, n_namespaces), offsetof(PgQuery__RangeTableFunc, namespaces), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "columns", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTableFunc, n_columns), offsetof(PgQuery__RangeTableFunc, columns), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alias", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFunc, alias), &pg_query__alias__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFunc, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__range_table_func__field_indices_by_name[] = { 5, /* field[5] = alias */ 4, /* field[4] = columns */ 1, /* field[1] = docexpr */ 0, /* field[0] = lateral */ 6, /* field[6] = location */ 3, /* field[3] = namespaces */ 2, /* field[2] = rowexpr */ }; static const ProtobufCIntRange pg_query__range_table_func__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__range_table_func__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeTableFunc", "RangeTableFunc", "PgQuery__RangeTableFunc", "pg_query", sizeof(PgQuery__RangeTableFunc), 7, pg_query__range_table_func__field_descriptors, pg_query__range_table_func__field_indices_by_name, 1, pg_query__range_table_func__number_ranges, (ProtobufCMessageInit) pg_query__range_table_func__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__range_table_func_col__field_descriptors[7] = { { "colname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFuncCol, colname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFuncCol, type_name), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "for_ordinality", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFuncCol, for_ordinality), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_not_null", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFuncCol, is_not_null), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "colexpr", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFuncCol, colexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coldefexpr", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFuncCol, coldefexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFuncCol, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__range_table_func_col__field_indices_by_name[] = { 5, /* field[5] = coldefexpr */ 4, /* field[4] = colexpr */ 0, /* field[0] = colname */ 2, /* field[2] = for_ordinality */ 3, /* field[3] = is_not_null */ 6, /* field[6] = location */ 1, /* field[1] = type_name */ }; static const ProtobufCIntRange pg_query__range_table_func_col__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__range_table_func_col__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeTableFuncCol", "RangeTableFuncCol", "PgQuery__RangeTableFuncCol", "pg_query", sizeof(PgQuery__RangeTableFuncCol), 7, pg_query__range_table_func_col__field_descriptors, pg_query__range_table_func_col__field_indices_by_name, 1, pg_query__range_table_func_col__number_ranges, (ProtobufCMessageInit) pg_query__range_table_func_col__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__type_name__field_descriptors[8] = { { "names", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TypeName, n_names), offsetof(PgQuery__TypeName, names), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_oid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__TypeName, type_oid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "setof", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__TypeName, setof), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "pct_type", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__TypeName, pct_type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "typmods", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TypeName, n_typmods), offsetof(PgQuery__TypeName, typmods), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "typemod", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__TypeName, typemod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "array_bounds", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TypeName, n_array_bounds), offsetof(PgQuery__TypeName, array_bounds), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__TypeName, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__type_name__field_indices_by_name[] = { 6, /* field[6] = array_bounds */ 7, /* field[7] = location */ 0, /* field[0] = names */ 3, /* field[3] = pct_type */ 2, /* field[2] = setof */ 1, /* field[1] = type_oid */ 5, /* field[5] = typemod */ 4, /* field[4] = typmods */ }; static const ProtobufCIntRange pg_query__type_name__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__type_name__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TypeName", "TypeName", "PgQuery__TypeName", "pg_query", sizeof(PgQuery__TypeName), 8, pg_query__type_name__field_descriptors, pg_query__type_name__field_indices_by_name, 1, pg_query__type_name__number_ranges, (ProtobufCMessageInit) pg_query__type_name__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__column_def__field_descriptors[18] = { { "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 */ }, { "raw_default", 9, 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", 10, 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", 11, 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", 12, 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", 13, 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", 14, 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", 15, 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", 16, 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", 17, 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", 18, 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[] = { 13, /* field[13] = coll_clause */ 14, /* field[14] = coll_oid */ 0, /* field[0] = colname */ 2, /* field[2] = compression */ 15, /* field[15] = constraints */ 9, /* field[9] = cooked_default */ 16, /* field[16] = fdwoptions */ 12, /* field[12] = generated */ 10, /* field[10] = identity */ 11, /* field[11] = identity_sequence */ 3, /* field[3] = inhcount */ 6, /* field[6] = is_from_type */ 4, /* field[4] = is_local */ 5, /* field[5] = is_not_null */ 17, /* field[17] = location */ 8, /* field[8] = raw_default */ 7, /* field[7] = storage */ 1, /* field[1] = type_name */ }; static const ProtobufCIntRange pg_query__column_def__number_ranges[1 + 1] = { { 1, 0 }, { 0, 18 } }; const ProtobufCMessageDescriptor pg_query__column_def__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ColumnDef", "ColumnDef", "PgQuery__ColumnDef", "pg_query", sizeof(PgQuery__ColumnDef), 18, pg_query__column_def__field_descriptors, pg_query__column_def__field_indices_by_name, 1, pg_query__column_def__number_ranges, (ProtobufCMessageInit) pg_query__column_def__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__index_elem__field_descriptors[8] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__IndexElem, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "expr", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__IndexElem, expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "indexcolname", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__IndexElem, indexcolname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collation", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__IndexElem, n_collation), offsetof(PgQuery__IndexElem, collation), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opclass", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__IndexElem, n_opclass), offsetof(PgQuery__IndexElem, opclass), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opclassopts", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__IndexElem, n_opclassopts), offsetof(PgQuery__IndexElem, opclassopts), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ordering", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__IndexElem, ordering), &pg_query__sort_by_dir__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "nulls_ordering", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__IndexElem, nulls_ordering), &pg_query__sort_by_nulls__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__index_elem__field_indices_by_name[] = { 3, /* field[3] = collation */ 1, /* field[1] = expr */ 2, /* field[2] = indexcolname */ 0, /* field[0] = name */ 7, /* field[7] = nulls_ordering */ 4, /* field[4] = opclass */ 5, /* field[5] = opclassopts */ 6, /* field[6] = ordering */ }; static const ProtobufCIntRange pg_query__index_elem__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__index_elem__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.IndexElem", "IndexElem", "PgQuery__IndexElem", "pg_query", sizeof(PgQuery__IndexElem), 8, pg_query__index_elem__field_descriptors, pg_query__index_elem__field_indices_by_name, 1, pg_query__index_elem__number_ranges, (ProtobufCMessageInit) pg_query__index_elem__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__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__constraint__field_descriptors[30] = { { "contype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, contype), &pg_query__constr_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "conname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, conname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "deferrable", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, deferrable), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "initdeferred", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, initdeferred), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_no_inherit", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, is_no_inherit), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "raw_expr", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, raw_expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cooked_expr", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, cooked_expr), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "generated_when", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, generated_when), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "nulls_not_distinct", 10, 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", 11, 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", 12, 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", 13, 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", 14, 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", 15, 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", 16, 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", 17, 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", 18, 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", 19, 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", 20, 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", 21, 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", 22, 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", 23, 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", 24, 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", 25, 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", 26, 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", 27, 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", 28, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, old_pktable_oid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "skip_validation", 29, 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", 30, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, initially_valid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__constraint__field_indices_by_name[] = { 17, /* field[17] = access_method */ 1, /* field[1] = conname */ 0, /* field[0] = contype */ 7, /* field[7] = cooked_expr */ 2, /* field[2] = deferrable */ 12, /* field[12] = exclusions */ 20, /* field[20] = fk_attrs */ 24, /* field[24] = fk_del_action */ 25, /* field[25] = fk_del_set_cols */ 22, /* field[22] = fk_matchtype */ 23, /* field[23] = fk_upd_action */ 8, /* field[8] = generated_when */ 11, /* field[11] = including */ 14, /* field[14] = indexname */ 15, /* field[15] = indexspace */ 3, /* field[3] = initdeferred */ 29, /* field[29] = initially_valid */ 5, /* field[5] = is_no_inherit */ 10, /* field[10] = keys */ 4, /* field[4] = location */ 9, /* field[9] = nulls_not_distinct */ 26, /* field[26] = old_conpfeqop */ 27, /* field[27] = old_pktable_oid */ 13, /* field[13] = options */ 21, /* field[21] = pk_attrs */ 19, /* field[19] = pktable */ 6, /* field[6] = raw_expr */ 16, /* field[16] = reset_default_tblspc */ 28, /* field[28] = skip_validation */ 18, /* field[18] = where_clause */ }; static const ProtobufCIntRange pg_query__constraint__number_ranges[1 + 1] = { { 1, 0 }, { 0, 30 } }; const ProtobufCMessageDescriptor pg_query__constraint__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Constraint", "Constraint", "PgQuery__Constraint", "pg_query", sizeof(PgQuery__Constraint), 30, pg_query__constraint__field_descriptors, pg_query__constraint__field_indices_by_name, 1, pg_query__constraint__number_ranges, (ProtobufCMessageInit) pg_query__constraint__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__def_elem__field_descriptors[5] = { { "defnamespace", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__DefElem, defnamespace), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "defname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__DefElem, defname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__DefElem, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "defaction", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__DefElem, defaction), &pg_query__def_elem_action__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__DefElem, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__def_elem__field_indices_by_name[] = { 2, /* field[2] = arg */ 3, /* field[3] = defaction */ 1, /* field[1] = defname */ 0, /* field[0] = defnamespace */ 4, /* field[4] = location */ }; static const ProtobufCIntRange pg_query__def_elem__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__def_elem__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DefElem", "DefElem", "PgQuery__DefElem", "pg_query", sizeof(PgQuery__DefElem), 5, pg_query__def_elem__field_descriptors, pg_query__def_elem__field_indices_by_name, 1, pg_query__def_elem__number_ranges, (ProtobufCMessageInit) pg_query__def_elem__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__range_tbl_entry__field_descriptors[37] = { { "rtekind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, rtekind), &pg_query__rtekind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, relid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relkind", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, relkind), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rellockmode", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, rellockmode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "tablesample", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, tablesample), &pg_query__table_sample_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "subquery", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, subquery), &pg_query__query__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "security_barrier", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, security_barrier), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "jointype", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, jointype), &pg_query__join_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "joinmergedcols", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, joinmergedcols), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "joinaliasvars", 10, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblEntry, n_joinaliasvars), offsetof(PgQuery__RangeTblEntry, joinaliasvars), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "joinleftcols", 11, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblEntry, n_joinleftcols), offsetof(PgQuery__RangeTblEntry, joinleftcols), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "joinrightcols", 12, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblEntry, n_joinrightcols), offsetof(PgQuery__RangeTblEntry, joinrightcols), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "join_using_alias", 13, 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", 14, 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", 15, 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", 16, 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", 17, 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", 18, 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", 19, 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", 20, 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", 21, 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", 22, 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", 23, 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", 24, 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", 25, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_DOUBLE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, enrtuples), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alias", 26, 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", 27, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, eref), &pg_query__alias__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lateral", 28, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, lateral), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inh", 29, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, inh), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "in_from_cl", 30, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, in_from_cl), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "required_perms", 31, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, required_perms), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "check_as_user", 32, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, check_as_user), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "selected_cols", 33, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, offsetof(PgQuery__RangeTblEntry, n_selected_cols), offsetof(PgQuery__RangeTblEntry, selected_cols), NULL, NULL, 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inserted_cols", 34, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, offsetof(PgQuery__RangeTblEntry, n_inserted_cols), offsetof(PgQuery__RangeTblEntry, inserted_cols), NULL, NULL, 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "updated_cols", 35, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, offsetof(PgQuery__RangeTblEntry, n_updated_cols), offsetof(PgQuery__RangeTblEntry, updated_cols), NULL, NULL, 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "extra_updated_cols", 36, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, offsetof(PgQuery__RangeTblEntry, n_extra_updated_cols), offsetof(PgQuery__RangeTblEntry, extra_updated_cols), NULL, NULL, 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "security_quals", 37, 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[] = { 25, /* field[25] = alias */ 31, /* field[31] = check_as_user */ 22, /* field[22] = colcollations */ 20, /* field[20] = coltypes */ 21, /* field[21] = coltypmods */ 18, /* field[18] = ctelevelsup */ 17, /* field[17] = ctename */ 23, /* field[23] = enrname */ 24, /* field[24] = enrtuples */ 26, /* field[26] = eref */ 35, /* field[35] = extra_updated_cols */ 14, /* field[14] = funcordinality */ 13, /* field[13] = functions */ 29, /* field[29] = in_from_cl */ 28, /* field[28] = inh */ 33, /* field[33] = inserted_cols */ 12, /* field[12] = join_using_alias */ 9, /* field[9] = joinaliasvars */ 10, /* field[10] = joinleftcols */ 8, /* field[8] = joinmergedcols */ 11, /* field[11] = joinrightcols */ 7, /* field[7] = jointype */ 27, /* field[27] = lateral */ 1, /* field[1] = relid */ 2, /* field[2] = relkind */ 3, /* field[3] = rellockmode */ 30, /* field[30] = required_perms */ 0, /* field[0] = rtekind */ 6, /* field[6] = security_barrier */ 36, /* field[36] = security_quals */ 32, /* field[32] = selected_cols */ 19, /* field[19] = self_reference */ 5, /* field[5] = subquery */ 15, /* field[15] = tablefunc */ 4, /* field[4] = tablesample */ 34, /* field[34] = updated_cols */ 16, /* field[16] = values_lists */ }; static const ProtobufCIntRange pg_query__range_tbl_entry__number_ranges[1 + 1] = { { 1, 0 }, { 0, 37 } }; const ProtobufCMessageDescriptor pg_query__range_tbl_entry__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeTblEntry", "RangeTblEntry", "PgQuery__RangeTblEntry", "pg_query", sizeof(PgQuery__RangeTblEntry), 37, pg_query__range_tbl_entry__field_descriptors, pg_query__range_tbl_entry__field_indices_by_name, 1, pg_query__range_tbl_entry__number_ranges, (ProtobufCMessageInit) pg_query__range_tbl_entry__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__range_tbl_function__field_descriptors[7] = { { "funcexpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblFunction, funcexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funccolcount", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblFunction, funccolcount), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funccolnames", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblFunction, n_funccolnames), offsetof(PgQuery__RangeTblFunction, funccolnames), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funccoltypes", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblFunction, n_funccoltypes), offsetof(PgQuery__RangeTblFunction, funccoltypes), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funccoltypmods", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblFunction, n_funccoltypmods), offsetof(PgQuery__RangeTblFunction, funccoltypmods), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funccolcollations", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblFunction, n_funccolcollations), offsetof(PgQuery__RangeTblFunction, funccolcollations), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funcparams", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, offsetof(PgQuery__RangeTblFunction, n_funcparams), offsetof(PgQuery__RangeTblFunction, funcparams), NULL, NULL, 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__range_tbl_function__field_indices_by_name[] = { 5, /* field[5] = funccolcollations */ 1, /* field[1] = funccolcount */ 2, /* field[2] = funccolnames */ 3, /* field[3] = funccoltypes */ 4, /* field[4] = funccoltypmods */ 0, /* field[0] = funcexpr */ 6, /* field[6] = funcparams */ }; static const ProtobufCIntRange pg_query__range_tbl_function__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__range_tbl_function__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeTblFunction", "RangeTblFunction", "PgQuery__RangeTblFunction", "pg_query", sizeof(PgQuery__RangeTblFunction), 7, pg_query__range_tbl_function__field_descriptors, pg_query__range_tbl_function__field_indices_by_name, 1, pg_query__range_tbl_function__number_ranges, (ProtobufCMessageInit) pg_query__range_tbl_function__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__table_sample_clause__field_descriptors[3] = { { "tsmhandler", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__TableSampleClause, tsmhandler), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableSampleClause, n_args), offsetof(PgQuery__TableSampleClause, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "repeatable", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__TableSampleClause, repeatable), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__table_sample_clause__field_indices_by_name[] = { 1, /* field[1] = args */ 2, /* field[2] = repeatable */ 0, /* field[0] = tsmhandler */ }; static const ProtobufCIntRange pg_query__table_sample_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__table_sample_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TableSampleClause", "TableSampleClause", "PgQuery__TableSampleClause", "pg_query", sizeof(PgQuery__TableSampleClause), 3, pg_query__table_sample_clause__field_descriptors, pg_query__table_sample_clause__field_indices_by_name, 1, pg_query__table_sample_clause__number_ranges, (ProtobufCMessageInit) pg_query__table_sample_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__with_check_option__field_descriptors[5] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__WithCheckOption, kind), &pg_query__wcokind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__WithCheckOption, relname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "polname", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__WithCheckOption, polname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "qual", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__WithCheckOption, qual), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cascaded", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__WithCheckOption, cascaded), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__with_check_option__field_indices_by_name[] = { 4, /* field[4] = cascaded */ 0, /* field[0] = kind */ 2, /* field[2] = polname */ 3, /* field[3] = qual */ 1, /* field[1] = relname */ }; static const ProtobufCIntRange pg_query__with_check_option__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__with_check_option__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.WithCheckOption", "WithCheckOption", "PgQuery__WithCheckOption", "pg_query", sizeof(PgQuery__WithCheckOption), 5, pg_query__with_check_option__field_descriptors, pg_query__with_check_option__field_indices_by_name, 1, pg_query__with_check_option__number_ranges, (ProtobufCMessageInit) pg_query__with_check_option__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__sort_group_clause__field_descriptors[5] = { { "tle_sort_group_ref", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SortGroupClause, tle_sort_group_ref), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "eqop", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SortGroupClause, eqop), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sortop", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SortGroupClause, sortop), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "nulls_first", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__SortGroupClause, nulls_first), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "hashable", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__SortGroupClause, hashable), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__sort_group_clause__field_indices_by_name[] = { 1, /* field[1] = eqop */ 4, /* field[4] = hashable */ 3, /* field[3] = nulls_first */ 2, /* field[2] = sortop */ 0, /* field[0] = tle_sort_group_ref */ }; static const ProtobufCIntRange pg_query__sort_group_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__sort_group_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SortGroupClause", "SortGroupClause", "PgQuery__SortGroupClause", "pg_query", sizeof(PgQuery__SortGroupClause), 5, pg_query__sort_group_clause__field_descriptors, pg_query__sort_group_clause__field_indices_by_name, 1, pg_query__sort_group_clause__number_ranges, (ProtobufCMessageInit) pg_query__sort_group_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__grouping_set__field_descriptors[3] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__GroupingSet, kind), &pg_query__grouping_set_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "content", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__GroupingSet, n_content), offsetof(PgQuery__GroupingSet, content), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__GroupingSet, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__grouping_set__field_indices_by_name[] = { 1, /* field[1] = content */ 0, /* field[0] = kind */ 2, /* field[2] = location */ }; static const ProtobufCIntRange pg_query__grouping_set__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__grouping_set__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.GroupingSet", "GroupingSet", "PgQuery__GroupingSet", "pg_query", sizeof(PgQuery__GroupingSet), 3, pg_query__grouping_set__field_descriptors, pg_query__grouping_set__field_indices_by_name, 1, pg_query__grouping_set__number_ranges, (ProtobufCMessageInit) pg_query__grouping_set__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__window_clause__field_descriptors[15] = { { "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 */ }, { "run_condition", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__WindowClause, n_run_condition), offsetof(PgQuery__WindowClause, run_condition), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "start_in_range_func", 9, 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", 10, 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", 11, 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", 12, 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", 13, 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", 14, 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", 15, 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[] = { 14, /* field[14] = copied_order */ 9, /* field[9] = end_in_range_func */ 6, /* field[6] = end_offset */ 4, /* field[4] = frame_options */ 11, /* field[11] = in_range_asc */ 10, /* field[10] = in_range_coll */ 12, /* field[12] = 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] = run_condition */ 8, /* field[8] = start_in_range_func */ 5, /* field[5] = start_offset */ 13, /* field[13] = winref */ }; static const ProtobufCIntRange pg_query__window_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 15 } }; const ProtobufCMessageDescriptor pg_query__window_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.WindowClause", "WindowClause", "PgQuery__WindowClause", "pg_query", sizeof(PgQuery__WindowClause), 15, pg_query__window_clause__field_descriptors, pg_query__window_clause__field_indices_by_name, 1, pg_query__window_clause__number_ranges, (ProtobufCMessageInit) pg_query__window_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__object_with_args__field_descriptors[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__create_op_class_item__field_descriptors[6] = { { "itemtype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CreateOpClassItem, itemtype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateOpClassItem, name), &pg_query__object_with_args__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "number", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CreateOpClassItem, number), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "order_family", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateOpClassItem, n_order_family), offsetof(PgQuery__CreateOpClassItem, order_family), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "class_args", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateOpClassItem, n_class_args), offsetof(PgQuery__CreateOpClassItem, class_args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "storedtype", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateOpClassItem, storedtype), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_op_class_item__field_indices_by_name[] = { 4, /* field[4] = class_args */ 0, /* field[0] = itemtype */ 1, /* field[1] = name */ 2, /* field[2] = number */ 3, /* field[3] = order_family */ 5, /* field[5] = storedtype */ }; static const ProtobufCIntRange pg_query__create_op_class_item__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__create_op_class_item__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateOpClassItem", "CreateOpClassItem", "PgQuery__CreateOpClassItem", "pg_query", sizeof(PgQuery__CreateOpClassItem), 6, pg_query__create_op_class_item__field_descriptors, pg_query__create_op_class_item__field_indices_by_name, 1, pg_query__create_op_class_item__number_ranges, (ProtobufCMessageInit) pg_query__create_op_class_item__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__table_like_clause__field_descriptors[3] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__TableLikeClause, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__TableLikeClause, options), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relation_oid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__TableLikeClause, relation_oid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__table_like_clause__field_indices_by_name[] = { 1, /* field[1] = options */ 0, /* field[0] = relation */ 2, /* field[2] = relation_oid */ }; static const ProtobufCIntRange pg_query__table_like_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__table_like_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TableLikeClause", "TableLikeClause", "PgQuery__TableLikeClause", "pg_query", sizeof(PgQuery__TableLikeClause), 3, pg_query__table_like_clause__field_descriptors, pg_query__table_like_clause__field_indices_by_name, 1, pg_query__table_like_clause__number_ranges, (ProtobufCMessageInit) pg_query__table_like_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__function_parameter__field_descriptors[4] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__FunctionParameter, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg_type", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__FunctionParameter, arg_type), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "mode", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__FunctionParameter, mode), &pg_query__function_parameter_mode__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "defexpr", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__FunctionParameter, defexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__function_parameter__field_indices_by_name[] = { 1, /* field[1] = arg_type */ 3, /* field[3] = defexpr */ 2, /* field[2] = mode */ 0, /* field[0] = name */ }; static const ProtobufCIntRange pg_query__function_parameter__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__function_parameter__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.FunctionParameter", "FunctionParameter", "PgQuery__FunctionParameter", "pg_query", sizeof(PgQuery__FunctionParameter), 4, pg_query__function_parameter__field_descriptors, pg_query__function_parameter__field_indices_by_name, 1, pg_query__function_parameter__number_ranges, (ProtobufCMessageInit) pg_query__function_parameter__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__locking_clause__field_descriptors[3] = { { "locked_rels", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__LockingClause, n_locked_rels), offsetof(PgQuery__LockingClause, locked_rels), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "strength", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__LockingClause, strength), &pg_query__lock_clause_strength__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "wait_policy", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__LockingClause, wait_policy), &pg_query__lock_wait_policy__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__locking_clause__field_indices_by_name[] = { 0, /* field[0] = locked_rels */ 1, /* field[1] = strength */ 2, /* field[2] = wait_policy */ }; static const ProtobufCIntRange pg_query__locking_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__locking_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.LockingClause", "LockingClause", "PgQuery__LockingClause", "pg_query", sizeof(PgQuery__LockingClause), 3, pg_query__locking_clause__field_descriptors, pg_query__locking_clause__field_indices_by_name, 1, pg_query__locking_clause__number_ranges, (ProtobufCMessageInit) pg_query__locking_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__row_mark_clause__field_descriptors[4] = { { "rti", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RowMarkClause, rti), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "strength", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RowMarkClause, strength), &pg_query__lock_clause_strength__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "wait_policy", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RowMarkClause, wait_policy), &pg_query__lock_wait_policy__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "pushed_down", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RowMarkClause, pushed_down), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__row_mark_clause__field_indices_by_name[] = { 3, /* field[3] = pushed_down */ 0, /* field[0] = rti */ 1, /* field[1] = strength */ 2, /* field[2] = wait_policy */ }; static const ProtobufCIntRange pg_query__row_mark_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__row_mark_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RowMarkClause", "RowMarkClause", "PgQuery__RowMarkClause", "pg_query", sizeof(PgQuery__RowMarkClause), 4, pg_query__row_mark_clause__field_descriptors, pg_query__row_mark_clause__field_indices_by_name, 1, pg_query__row_mark_clause__number_ranges, (ProtobufCMessageInit) pg_query__row_mark_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__xml_serialize__field_descriptors[4] = { { "xmloption", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__XmlSerialize, xmloption), &pg_query__xml_option_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "expr", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__XmlSerialize, expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__XmlSerialize, type_name), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__XmlSerialize, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__xml_serialize__field_indices_by_name[] = { 1, /* field[1] = expr */ 3, /* field[3] = location */ 2, /* field[2] = type_name */ 0, /* field[0] = xmloption */ }; static const ProtobufCIntRange pg_query__xml_serialize__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__xml_serialize__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.XmlSerialize", "XmlSerialize", "PgQuery__XmlSerialize", "pg_query", sizeof(PgQuery__XmlSerialize), 4, pg_query__xml_serialize__field_descriptors, pg_query__xml_serialize__field_indices_by_name, 1, pg_query__xml_serialize__number_ranges, (ProtobufCMessageInit) pg_query__xml_serialize__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__with_clause__field_descriptors[3] = { { "ctes", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__WithClause, n_ctes), offsetof(PgQuery__WithClause, ctes), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "recursive", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__WithClause, recursive), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__WithClause, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__with_clause__field_indices_by_name[] = { 0, /* field[0] = ctes */ 2, /* field[2] = location */ 1, /* field[1] = recursive */ }; static const ProtobufCIntRange pg_query__with_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__with_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.WithClause", "WithClause", "PgQuery__WithClause", "pg_query", sizeof(PgQuery__WithClause), 3, pg_query__with_clause__field_descriptors, pg_query__with_clause__field_indices_by_name, 1, pg_query__with_clause__number_ranges, (ProtobufCMessageInit) pg_query__with_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__infer_clause__field_descriptors[4] = { { "index_elems", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__InferClause, n_index_elems), offsetof(PgQuery__InferClause, index_elems), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "where_clause", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__InferClause, where_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "conname", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__InferClause, conname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__InferClause, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__infer_clause__field_indices_by_name[] = { 2, /* field[2] = conname */ 0, /* field[0] = index_elems */ 3, /* field[3] = location */ 1, /* field[1] = where_clause */ }; static const ProtobufCIntRange pg_query__infer_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__infer_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.InferClause", "InferClause", "PgQuery__InferClause", "pg_query", sizeof(PgQuery__InferClause), 4, pg_query__infer_clause__field_descriptors, pg_query__infer_clause__field_indices_by_name, 1, pg_query__infer_clause__number_ranges, (ProtobufCMessageInit) pg_query__infer_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__on_conflict_clause__field_descriptors[5] = { { "action", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__OnConflictClause, action), &pg_query__on_conflict_action__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "infer", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__OnConflictClause, infer), &pg_query__infer_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "target_list", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__OnConflictClause, n_target_list), offsetof(PgQuery__OnConflictClause, target_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "where_clause", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__OnConflictClause, where_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__OnConflictClause, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__on_conflict_clause__field_indices_by_name[] = { 0, /* field[0] = action */ 1, /* field[1] = infer */ 4, /* field[4] = location */ 2, /* field[2] = target_list */ 3, /* field[3] = where_clause */ }; static const ProtobufCIntRange pg_query__on_conflict_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__on_conflict_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.OnConflictClause", "OnConflictClause", "PgQuery__OnConflictClause", "pg_query", sizeof(PgQuery__OnConflictClause), 5, pg_query__on_conflict_clause__field_descriptors, pg_query__on_conflict_clause__field_indices_by_name, 1, pg_query__on_conflict_clause__number_ranges, (ProtobufCMessageInit) pg_query__on_conflict_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__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] = { { "matched", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__MergeWhenClause, matched), NULL, 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] = matched */ 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__role_spec__field_descriptors[3] = { { "roletype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RoleSpec, roletype), &pg_query__role_spec_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rolename", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RoleSpec, rolename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RoleSpec, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__role_spec__field_indices_by_name[] = { 2, /* field[2] = location */ 1, /* field[1] = rolename */ 0, /* field[0] = roletype */ }; static const ProtobufCIntRange pg_query__role_spec__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__role_spec__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RoleSpec", "RoleSpec", "PgQuery__RoleSpec", "pg_query", sizeof(PgQuery__RoleSpec), 3, pg_query__role_spec__field_descriptors, pg_query__role_spec__field_indices_by_name, 1, pg_query__role_spec__number_ranges, (ProtobufCMessageInit) pg_query__role_spec__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__trigger_transition__field_descriptors[3] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__TriggerTransition, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_new", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__TriggerTransition, is_new), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_table", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__TriggerTransition, is_table), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__trigger_transition__field_indices_by_name[] = { 1, /* field[1] = is_new */ 2, /* field[2] = is_table */ 0, /* field[0] = name */ }; static const ProtobufCIntRange pg_query__trigger_transition__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__trigger_transition__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TriggerTransition", "TriggerTransition", "PgQuery__TriggerTransition", "pg_query", sizeof(PgQuery__TriggerTransition), 3, pg_query__trigger_transition__field_descriptors, pg_query__trigger_transition__field_indices_by_name, 1, pg_query__trigger_transition__number_ranges, (ProtobufCMessageInit) pg_query__trigger_transition__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__partition_elem__field_descriptors[5] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionElem, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "expr", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionElem, expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collation", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__PartitionElem, n_collation), offsetof(PgQuery__PartitionElem, collation), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opclass", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__PartitionElem, n_opclass), offsetof(PgQuery__PartitionElem, opclass), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionElem, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__partition_elem__field_indices_by_name[] = { 2, /* field[2] = collation */ 1, /* field[1] = expr */ 4, /* field[4] = location */ 0, /* field[0] = name */ 3, /* field[3] = opclass */ }; static const ProtobufCIntRange pg_query__partition_elem__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__partition_elem__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.PartitionElem", "PartitionElem", "PgQuery__PartitionElem", "pg_query", sizeof(PgQuery__PartitionElem), 5, pg_query__partition_elem__field_descriptors, pg_query__partition_elem__field_indices_by_name, 1, pg_query__partition_elem__number_ranges, (ProtobufCMessageInit) pg_query__partition_elem__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__partition_spec__field_descriptors[3] = { { "strategy", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionSpec, strategy), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "part_params", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__PartitionSpec, n_part_params), offsetof(PgQuery__PartitionSpec, part_params), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionSpec, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__partition_spec__field_indices_by_name[] = { 2, /* field[2] = location */ 1, /* field[1] = part_params */ 0, /* field[0] = strategy */ }; static const ProtobufCIntRange pg_query__partition_spec__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__partition_spec__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.PartitionSpec", "PartitionSpec", "PgQuery__PartitionSpec", "pg_query", sizeof(PgQuery__PartitionSpec), 3, pg_query__partition_spec__field_descriptors, pg_query__partition_spec__field_indices_by_name, 1, pg_query__partition_spec__number_ranges, (ProtobufCMessageInit) pg_query__partition_spec__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__partition_bound_spec__field_descriptors[8] = { { "strategy", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionBoundSpec, strategy), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_default", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionBoundSpec, is_default), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "modulus", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionBoundSpec, modulus), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "remainder", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionBoundSpec, remainder), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "listdatums", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__PartitionBoundSpec, n_listdatums), offsetof(PgQuery__PartitionBoundSpec, listdatums), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lowerdatums", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__PartitionBoundSpec, n_lowerdatums), offsetof(PgQuery__PartitionBoundSpec, lowerdatums), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "upperdatums", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__PartitionBoundSpec, n_upperdatums), offsetof(PgQuery__PartitionBoundSpec, upperdatums), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionBoundSpec, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__partition_bound_spec__field_indices_by_name[] = { 1, /* field[1] = is_default */ 4, /* field[4] = listdatums */ 7, /* field[7] = location */ 5, /* field[5] = lowerdatums */ 2, /* field[2] = modulus */ 3, /* field[3] = remainder */ 0, /* field[0] = strategy */ 6, /* field[6] = upperdatums */ }; static const ProtobufCIntRange pg_query__partition_bound_spec__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__partition_bound_spec__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.PartitionBoundSpec", "PartitionBoundSpec", "PgQuery__PartitionBoundSpec", "pg_query", sizeof(PgQuery__PartitionBoundSpec), 8, pg_query__partition_bound_spec__field_descriptors, pg_query__partition_bound_spec__field_indices_by_name, 1, pg_query__partition_bound_spec__number_ranges, (ProtobufCMessageInit) pg_query__partition_bound_spec__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__partition_range_datum__field_descriptors[3] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionRangeDatum, kind), &pg_query__partition_range_datum_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "value", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionRangeDatum, value), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionRangeDatum, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__partition_range_datum__field_indices_by_name[] = { 0, /* field[0] = kind */ 2, /* field[2] = location */ 1, /* field[1] = value */ }; static const ProtobufCIntRange pg_query__partition_range_datum__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__partition_range_datum__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.PartitionRangeDatum", "PartitionRangeDatum", "PgQuery__PartitionRangeDatum", "pg_query", sizeof(PgQuery__PartitionRangeDatum), 3, pg_query__partition_range_datum__field_descriptors, pg_query__partition_range_datum__field_indices_by_name, 1, pg_query__partition_range_datum__number_ranges, (ProtobufCMessageInit) pg_query__partition_range_datum__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__partition_cmd__field_descriptors[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__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__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__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__inline_code_block__field_descriptors[4] = { { "source_text", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__InlineCodeBlock, source_text), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lang_oid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__InlineCodeBlock, lang_oid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lang_is_trusted", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__InlineCodeBlock, lang_is_trusted), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "atomic", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__InlineCodeBlock, atomic), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__inline_code_block__field_indices_by_name[] = { 3, /* field[3] = atomic */ 2, /* field[2] = lang_is_trusted */ 1, /* field[1] = lang_oid */ 0, /* field[0] = source_text */ }; static const ProtobufCIntRange pg_query__inline_code_block__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__inline_code_block__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.InlineCodeBlock", "InlineCodeBlock", "PgQuery__InlineCodeBlock", "pg_query", sizeof(PgQuery__InlineCodeBlock), 4, pg_query__inline_code_block__field_descriptors, pg_query__inline_code_block__field_indices_by_name, 1, pg_query__inline_code_block__number_ranges, (ProtobufCMessageInit) pg_query__inline_code_block__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__call_context__field_descriptors[1] = { { "atomic", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CallContext, atomic), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__call_context__field_indices_by_name[] = { 0, /* field[0] = atomic */ }; static const ProtobufCIntRange pg_query__call_context__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__call_context__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CallContext", "CallContext", "PgQuery__CallContext", "pg_query", sizeof(PgQuery__CallContext), 1, pg_query__call_context__field_descriptors, pg_query__call_context__field_indices_by_name, 1, pg_query__call_context__number_ranges, (ProtobufCMessageInit) pg_query__call_context__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__scan_token__field_descriptors[4] = { { "start", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ScanToken, start), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "end", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ScanToken, end), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "token", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__ScanToken, token), &pg_query__token__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "keyword_kind", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__ScanToken, keyword_kind), &pg_query__keyword_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__scan_token__field_indices_by_name[] = { 1, /* field[1] = end */ 3, /* field[3] = keyword_kind */ 0, /* field[0] = start */ 2, /* field[2] = token */ }; static const ProtobufCIntRange pg_query__scan_token__number_ranges[2 + 1] = { { 1, 0 }, { 4, 2 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__scan_token__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ScanToken", "ScanToken", "PgQuery__ScanToken", "pg_query", sizeof(PgQuery__ScanToken), 4, pg_query__scan_token__field_descriptors, pg_query__scan_token__field_indices_by_name, 2, pg_query__scan_token__number_ranges, (ProtobufCMessageInit) pg_query__scan_token__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCEnumValue pg_query__overriding_kind__enum_values_by_number[4] = { { "OVERRIDING_KIND_UNDEFINED", "PG_QUERY__OVERRIDING_KIND__OVERRIDING_KIND_UNDEFINED", 0 }, { "OVERRIDING_NOT_SET", "PG_QUERY__OVERRIDING_KIND__OVERRIDING_NOT_SET", 1 }, { "OVERRIDING_USER_VALUE", "PG_QUERY__OVERRIDING_KIND__OVERRIDING_USER_VALUE", 2 }, { "OVERRIDING_SYSTEM_VALUE", "PG_QUERY__OVERRIDING_KIND__OVERRIDING_SYSTEM_VALUE", 3 }, }; static const ProtobufCIntRange pg_query__overriding_kind__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__overriding_kind__enum_values_by_name[4] = { { "OVERRIDING_KIND_UNDEFINED", 0 }, { "OVERRIDING_NOT_SET", 1 }, { "OVERRIDING_SYSTEM_VALUE", 3 }, { "OVERRIDING_USER_VALUE", 2 }, }; const ProtobufCEnumDescriptor pg_query__overriding_kind__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.OverridingKind", "OverridingKind", "PgQuery__OverridingKind", "pg_query", 4, pg_query__overriding_kind__enum_values_by_number, 4, pg_query__overriding_kind__enum_values_by_name, 1, pg_query__overriding_kind__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__query_source__enum_values_by_number[6] = { { "QUERY_SOURCE_UNDEFINED", "PG_QUERY__QUERY_SOURCE__QUERY_SOURCE_UNDEFINED", 0 }, { "QSRC_ORIGINAL", "PG_QUERY__QUERY_SOURCE__QSRC_ORIGINAL", 1 }, { "QSRC_PARSER", "PG_QUERY__QUERY_SOURCE__QSRC_PARSER", 2 }, { "QSRC_INSTEAD_RULE", "PG_QUERY__QUERY_SOURCE__QSRC_INSTEAD_RULE", 3 }, { "QSRC_QUAL_INSTEAD_RULE", "PG_QUERY__QUERY_SOURCE__QSRC_QUAL_INSTEAD_RULE", 4 }, { "QSRC_NON_INSTEAD_RULE", "PG_QUERY__QUERY_SOURCE__QSRC_NON_INSTEAD_RULE", 5 }, }; static const ProtobufCIntRange pg_query__query_source__value_ranges[] = { {0, 0},{0, 6} }; static const ProtobufCEnumValueIndex pg_query__query_source__enum_values_by_name[6] = { { "QSRC_INSTEAD_RULE", 3 }, { "QSRC_NON_INSTEAD_RULE", 5 }, { "QSRC_ORIGINAL", 1 }, { "QSRC_PARSER", 2 }, { "QSRC_QUAL_INSTEAD_RULE", 4 }, { "QUERY_SOURCE_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__query_source__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.QuerySource", "QuerySource", "PgQuery__QuerySource", "pg_query", 6, pg_query__query_source__enum_values_by_number, 6, pg_query__query_source__enum_values_by_name, 1, pg_query__query_source__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__sort_by_dir__enum_values_by_number[5] = { { "SORT_BY_DIR_UNDEFINED", "PG_QUERY__SORT_BY_DIR__SORT_BY_DIR_UNDEFINED", 0 }, { "SORTBY_DEFAULT", "PG_QUERY__SORT_BY_DIR__SORTBY_DEFAULT", 1 }, { "SORTBY_ASC", "PG_QUERY__SORT_BY_DIR__SORTBY_ASC", 2 }, { "SORTBY_DESC", "PG_QUERY__SORT_BY_DIR__SORTBY_DESC", 3 }, { "SORTBY_USING", "PG_QUERY__SORT_BY_DIR__SORTBY_USING", 4 }, }; static const ProtobufCIntRange pg_query__sort_by_dir__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__sort_by_dir__enum_values_by_name[5] = { { "SORTBY_ASC", 2 }, { "SORTBY_DEFAULT", 1 }, { "SORTBY_DESC", 3 }, { "SORTBY_USING", 4 }, { "SORT_BY_DIR_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__sort_by_dir__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.SortByDir", "SortByDir", "PgQuery__SortByDir", "pg_query", 5, pg_query__sort_by_dir__enum_values_by_number, 5, pg_query__sort_by_dir__enum_values_by_name, 1, pg_query__sort_by_dir__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__sort_by_nulls__enum_values_by_number[4] = { { "SORT_BY_NULLS_UNDEFINED", "PG_QUERY__SORT_BY_NULLS__SORT_BY_NULLS_UNDEFINED", 0 }, { "SORTBY_NULLS_DEFAULT", "PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_DEFAULT", 1 }, { "SORTBY_NULLS_FIRST", "PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_FIRST", 2 }, { "SORTBY_NULLS_LAST", "PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_LAST", 3 }, }; static const ProtobufCIntRange pg_query__sort_by_nulls__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__sort_by_nulls__enum_values_by_name[4] = { { "SORTBY_NULLS_DEFAULT", 1 }, { "SORTBY_NULLS_FIRST", 2 }, { "SORTBY_NULLS_LAST", 3 }, { "SORT_BY_NULLS_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__sort_by_nulls__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.SortByNulls", "SortByNulls", "PgQuery__SortByNulls", "pg_query", 4, pg_query__sort_by_nulls__enum_values_by_number, 4, pg_query__sort_by_nulls__enum_values_by_name, 1, pg_query__sort_by_nulls__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__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_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__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[72] = { { "ALTER_TABLE_TYPE_UNDEFINED", "PG_QUERY__ALTER_TABLE_TYPE__ALTER_TABLE_TYPE_UNDEFINED", 0 }, { "AT_AddColumn", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddColumn", 1 }, { "AT_AddColumnRecurse", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddColumnRecurse", 2 }, { "AT_AddColumnToView", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddColumnToView", 3 }, { "AT_ColumnDefault", "PG_QUERY__ALTER_TABLE_TYPE__AT_ColumnDefault", 4 }, { "AT_CookedColumnDefault", "PG_QUERY__ALTER_TABLE_TYPE__AT_CookedColumnDefault", 5 }, { "AT_DropNotNull", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropNotNull", 6 }, { "AT_SetNotNull", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetNotNull", 7 }, { "AT_DropExpression", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropExpression", 8 }, { "AT_CheckNotNull", "PG_QUERY__ALTER_TABLE_TYPE__AT_CheckNotNull", 9 }, { "AT_SetStatistics", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetStatistics", 10 }, { "AT_SetOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetOptions", 11 }, { "AT_ResetOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_ResetOptions", 12 }, { "AT_SetStorage", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetStorage", 13 }, { "AT_SetCompression", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetCompression", 14 }, { "AT_DropColumn", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropColumn", 15 }, { "AT_DropColumnRecurse", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropColumnRecurse", 16 }, { "AT_AddIndex", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddIndex", 17 }, { "AT_ReAddIndex", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddIndex", 18 }, { "AT_AddConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddConstraint", 19 }, { "AT_AddConstraintRecurse", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddConstraintRecurse", 20 }, { "AT_ReAddConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddConstraint", 21 }, { "AT_ReAddDomainConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddDomainConstraint", 22 }, { "AT_AlterConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_AlterConstraint", 23 }, { "AT_ValidateConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_ValidateConstraint", 24 }, { "AT_ValidateConstraintRecurse", "PG_QUERY__ALTER_TABLE_TYPE__AT_ValidateConstraintRecurse", 25 }, { "AT_AddIndexConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddIndexConstraint", 26 }, { "AT_DropConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropConstraint", 27 }, { "AT_DropConstraintRecurse", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropConstraintRecurse", 28 }, { "AT_ReAddComment", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddComment", 29 }, { "AT_AlterColumnType", "PG_QUERY__ALTER_TABLE_TYPE__AT_AlterColumnType", 30 }, { "AT_AlterColumnGenericOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_AlterColumnGenericOptions", 31 }, { "AT_ChangeOwner", "PG_QUERY__ALTER_TABLE_TYPE__AT_ChangeOwner", 32 }, { "AT_ClusterOn", "PG_QUERY__ALTER_TABLE_TYPE__AT_ClusterOn", 33 }, { "AT_DropCluster", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropCluster", 34 }, { "AT_SetLogged", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetLogged", 35 }, { "AT_SetUnLogged", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetUnLogged", 36 }, { "AT_DropOids", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropOids", 37 }, { "AT_SetAccessMethod", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetAccessMethod", 38 }, { "AT_SetTableSpace", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetTableSpace", 39 }, { "AT_SetRelOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetRelOptions", 40 }, { "AT_ResetRelOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_ResetRelOptions", 41 }, { "AT_ReplaceRelOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReplaceRelOptions", 42 }, { "AT_EnableTrig", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrig", 43 }, { "AT_EnableAlwaysTrig", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableAlwaysTrig", 44 }, { "AT_EnableReplicaTrig", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableReplicaTrig", 45 }, { "AT_DisableTrig", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrig", 46 }, { "AT_EnableTrigAll", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrigAll", 47 }, { "AT_DisableTrigAll", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrigAll", 48 }, { "AT_EnableTrigUser", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrigUser", 49 }, { "AT_DisableTrigUser", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrigUser", 50 }, { "AT_EnableRule", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableRule", 51 }, { "AT_EnableAlwaysRule", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableAlwaysRule", 52 }, { "AT_EnableReplicaRule", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableReplicaRule", 53 }, { "AT_DisableRule", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableRule", 54 }, { "AT_AddInherit", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddInherit", 55 }, { "AT_DropInherit", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropInherit", 56 }, { "AT_AddOf", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddOf", 57 }, { "AT_DropOf", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropOf", 58 }, { "AT_ReplicaIdentity", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReplicaIdentity", 59 }, { "AT_EnableRowSecurity", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableRowSecurity", 60 }, { "AT_DisableRowSecurity", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableRowSecurity", 61 }, { "AT_ForceRowSecurity", "PG_QUERY__ALTER_TABLE_TYPE__AT_ForceRowSecurity", 62 }, { "AT_NoForceRowSecurity", "PG_QUERY__ALTER_TABLE_TYPE__AT_NoForceRowSecurity", 63 }, { "AT_GenericOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_GenericOptions", 64 }, { "AT_AttachPartition", "PG_QUERY__ALTER_TABLE_TYPE__AT_AttachPartition", 65 }, { "AT_DetachPartition", "PG_QUERY__ALTER_TABLE_TYPE__AT_DetachPartition", 66 }, { "AT_DetachPartitionFinalize", "PG_QUERY__ALTER_TABLE_TYPE__AT_DetachPartitionFinalize", 67 }, { "AT_AddIdentity", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddIdentity", 68 }, { "AT_SetIdentity", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetIdentity", 69 }, { "AT_DropIdentity", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropIdentity", 70 }, { "AT_ReAddStatistics", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddStatistics", 71 }, }; static const ProtobufCIntRange pg_query__alter_table_type__value_ranges[] = { {0, 0},{0, 72} }; static const ProtobufCEnumValueIndex pg_query__alter_table_type__enum_values_by_name[72] = { { "ALTER_TABLE_TYPE_UNDEFINED", 0 }, { "AT_AddColumn", 1 }, { "AT_AddColumnRecurse", 2 }, { "AT_AddColumnToView", 3 }, { "AT_AddConstraint", 19 }, { "AT_AddConstraintRecurse", 20 }, { "AT_AddIdentity", 68 }, { "AT_AddIndex", 17 }, { "AT_AddIndexConstraint", 26 }, { "AT_AddInherit", 55 }, { "AT_AddOf", 57 }, { "AT_AlterColumnGenericOptions", 31 }, { "AT_AlterColumnType", 30 }, { "AT_AlterConstraint", 23 }, { "AT_AttachPartition", 65 }, { "AT_ChangeOwner", 32 }, { "AT_CheckNotNull", 9 }, { "AT_ClusterOn", 33 }, { "AT_ColumnDefault", 4 }, { "AT_CookedColumnDefault", 5 }, { "AT_DetachPartition", 66 }, { "AT_DetachPartitionFinalize", 67 }, { "AT_DisableRowSecurity", 61 }, { "AT_DisableRule", 54 }, { "AT_DisableTrig", 46 }, { "AT_DisableTrigAll", 48 }, { "AT_DisableTrigUser", 50 }, { "AT_DropCluster", 34 }, { "AT_DropColumn", 15 }, { "AT_DropColumnRecurse", 16 }, { "AT_DropConstraint", 27 }, { "AT_DropConstraintRecurse", 28 }, { "AT_DropExpression", 8 }, { "AT_DropIdentity", 70 }, { "AT_DropInherit", 56 }, { "AT_DropNotNull", 6 }, { "AT_DropOf", 58 }, { "AT_DropOids", 37 }, { "AT_EnableAlwaysRule", 52 }, { "AT_EnableAlwaysTrig", 44 }, { "AT_EnableReplicaRule", 53 }, { "AT_EnableReplicaTrig", 45 }, { "AT_EnableRowSecurity", 60 }, { "AT_EnableRule", 51 }, { "AT_EnableTrig", 43 }, { "AT_EnableTrigAll", 47 }, { "AT_EnableTrigUser", 49 }, { "AT_ForceRowSecurity", 62 }, { "AT_GenericOptions", 64 }, { "AT_NoForceRowSecurity", 63 }, { "AT_ReAddComment", 29 }, { "AT_ReAddConstraint", 21 }, { "AT_ReAddDomainConstraint", 22 }, { "AT_ReAddIndex", 18 }, { "AT_ReAddStatistics", 71 }, { "AT_ReplaceRelOptions", 42 }, { "AT_ReplicaIdentity", 59 }, { "AT_ResetOptions", 12 }, { "AT_ResetRelOptions", 41 }, { "AT_SetAccessMethod", 38 }, { "AT_SetCompression", 14 }, { "AT_SetIdentity", 69 }, { "AT_SetLogged", 35 }, { "AT_SetNotNull", 7 }, { "AT_SetOptions", 11 }, { "AT_SetRelOptions", 40 }, { "AT_SetStatistics", 10 }, { "AT_SetStorage", 13 }, { "AT_SetTableSpace", 39 }, { "AT_SetUnLogged", 36 }, { "AT_ValidateConstraint", 24 }, { "AT_ValidateConstraintRecurse", 25 }, }; const ProtobufCEnumDescriptor pg_query__alter_table_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.AlterTableType", "AlterTableType", "PgQuery__AlterTableType", "pg_query", 72, pg_query__alter_table_type__enum_values_by_number, 72, 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__on_commit_action__enum_values_by_number[5] = { { "ON_COMMIT_ACTION_UNDEFINED", "PG_QUERY__ON_COMMIT_ACTION__ON_COMMIT_ACTION_UNDEFINED", 0 }, { "ONCOMMIT_NOOP", "PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_NOOP", 1 }, { "ONCOMMIT_PRESERVE_ROWS", "PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_PRESERVE_ROWS", 2 }, { "ONCOMMIT_DELETE_ROWS", "PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_DELETE_ROWS", 3 }, { "ONCOMMIT_DROP", "PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_DROP", 4 }, }; static const ProtobufCIntRange pg_query__on_commit_action__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__on_commit_action__enum_values_by_name[5] = { { "ONCOMMIT_DELETE_ROWS", 3 }, { "ONCOMMIT_DROP", 4 }, { "ONCOMMIT_NOOP", 1 }, { "ONCOMMIT_PRESERVE_ROWS", 2 }, { "ON_COMMIT_ACTION_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__on_commit_action__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.OnCommitAction", "OnCommitAction", "PgQuery__OnCommitAction", "pg_query", 5, pg_query__on_commit_action__enum_values_by_number, 5, pg_query__on_commit_action__enum_values_by_name, 1, pg_query__on_commit_action__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__param_kind__enum_values_by_number[5] = { { "PARAM_KIND_UNDEFINED", "PG_QUERY__PARAM_KIND__PARAM_KIND_UNDEFINED", 0 }, { "PARAM_EXTERN", "PG_QUERY__PARAM_KIND__PARAM_EXTERN", 1 }, { "PARAM_EXEC", "PG_QUERY__PARAM_KIND__PARAM_EXEC", 2 }, { "PARAM_SUBLINK", "PG_QUERY__PARAM_KIND__PARAM_SUBLINK", 3 }, { "PARAM_MULTIEXPR", "PG_QUERY__PARAM_KIND__PARAM_MULTIEXPR", 4 }, }; static const ProtobufCIntRange pg_query__param_kind__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__param_kind__enum_values_by_name[5] = { { "PARAM_EXEC", 2 }, { "PARAM_EXTERN", 1 }, { "PARAM_KIND_UNDEFINED", 0 }, { "PARAM_MULTIEXPR", 4 }, { "PARAM_SUBLINK", 3 }, }; const ProtobufCEnumDescriptor pg_query__param_kind__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.ParamKind", "ParamKind", "PgQuery__ParamKind", "pg_query", 5, pg_query__param_kind__enum_values_by_number, 5, pg_query__param_kind__enum_values_by_name, 1, pg_query__param_kind__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__coercion_context__enum_values_by_number[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__null_test_type__enum_values_by_number[3] = { { "NULL_TEST_TYPE_UNDEFINED", "PG_QUERY__NULL_TEST_TYPE__NULL_TEST_TYPE_UNDEFINED", 0 }, { "IS_NULL", "PG_QUERY__NULL_TEST_TYPE__IS_NULL", 1 }, { "IS_NOT_NULL", "PG_QUERY__NULL_TEST_TYPE__IS_NOT_NULL", 2 }, }; static const ProtobufCIntRange pg_query__null_test_type__value_ranges[] = { {0, 0},{0, 3} }; static const ProtobufCEnumValueIndex pg_query__null_test_type__enum_values_by_name[3] = { { "IS_NOT_NULL", 2 }, { "IS_NULL", 1 }, { "NULL_TEST_TYPE_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__null_test_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.NullTestType", "NullTestType", "PgQuery__NullTestType", "pg_query", 3, pg_query__null_test_type__enum_values_by_number, 3, pg_query__null_test_type__enum_values_by_name, 1, pg_query__null_test_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__bool_test_type__enum_values_by_number[7] = { { "BOOL_TEST_TYPE_UNDEFINED", "PG_QUERY__BOOL_TEST_TYPE__BOOL_TEST_TYPE_UNDEFINED", 0 }, { "IS_TRUE", "PG_QUERY__BOOL_TEST_TYPE__IS_TRUE", 1 }, { "IS_NOT_TRUE", "PG_QUERY__BOOL_TEST_TYPE__IS_NOT_TRUE", 2 }, { "IS_FALSE", "PG_QUERY__BOOL_TEST_TYPE__IS_FALSE", 3 }, { "IS_NOT_FALSE", "PG_QUERY__BOOL_TEST_TYPE__IS_NOT_FALSE", 4 }, { "IS_UNKNOWN", "PG_QUERY__BOOL_TEST_TYPE__IS_UNKNOWN", 5 }, { "IS_NOT_UNKNOWN", "PG_QUERY__BOOL_TEST_TYPE__IS_NOT_UNKNOWN", 6 }, }; static const ProtobufCIntRange pg_query__bool_test_type__value_ranges[] = { {0, 0},{0, 7} }; static const ProtobufCEnumValueIndex pg_query__bool_test_type__enum_values_by_name[7] = { { "BOOL_TEST_TYPE_UNDEFINED", 0 }, { "IS_FALSE", 3 }, { "IS_NOT_FALSE", 4 }, { "IS_NOT_TRUE", 2 }, { "IS_NOT_UNKNOWN", 6 }, { "IS_TRUE", 1 }, { "IS_UNKNOWN", 5 }, }; const ProtobufCEnumDescriptor pg_query__bool_test_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.BoolTestType", "BoolTestType", "PgQuery__BoolTestType", "pg_query", 7, pg_query__bool_test_type__enum_values_by_number, 7, pg_query__bool_test_type__enum_values_by_name, 1, pg_query__bool_test_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__cmd_type__enum_values_by_number[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[9] = { { "JOIN_TYPE_UNDEFINED", "PG_QUERY__JOIN_TYPE__JOIN_TYPE_UNDEFINED", 0 }, { "JOIN_INNER", "PG_QUERY__JOIN_TYPE__JOIN_INNER", 1 }, { "JOIN_LEFT", "PG_QUERY__JOIN_TYPE__JOIN_LEFT", 2 }, { "JOIN_FULL", "PG_QUERY__JOIN_TYPE__JOIN_FULL", 3 }, { "JOIN_RIGHT", "PG_QUERY__JOIN_TYPE__JOIN_RIGHT", 4 }, { "JOIN_SEMI", "PG_QUERY__JOIN_TYPE__JOIN_SEMI", 5 }, { "JOIN_ANTI", "PG_QUERY__JOIN_TYPE__JOIN_ANTI", 6 }, { "JOIN_UNIQUE_OUTER", "PG_QUERY__JOIN_TYPE__JOIN_UNIQUE_OUTER", 7 }, { "JOIN_UNIQUE_INNER", "PG_QUERY__JOIN_TYPE__JOIN_UNIQUE_INNER", 8 }, }; static const ProtobufCIntRange pg_query__join_type__value_ranges[] = { {0, 0},{0, 9} }; static const ProtobufCEnumValueIndex pg_query__join_type__enum_values_by_name[9] = { { "JOIN_ANTI", 6 }, { "JOIN_FULL", 3 }, { "JOIN_INNER", 1 }, { "JOIN_LEFT", 2 }, { "JOIN_RIGHT", 4 }, { "JOIN_SEMI", 5 }, { "JOIN_TYPE_UNDEFINED", 0 }, { "JOIN_UNIQUE_INNER", 8 }, { "JOIN_UNIQUE_OUTER", 7 }, }; const ProtobufCEnumDescriptor pg_query__join_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.JoinType", "JoinType", "PgQuery__JoinType", "pg_query", 9, pg_query__join_type__enum_values_by_number, 9, pg_query__join_type__enum_values_by_name, 1, pg_query__join_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__agg_strategy__enum_values_by_number[5] = { { "AGG_STRATEGY_UNDEFINED", "PG_QUERY__AGG_STRATEGY__AGG_STRATEGY_UNDEFINED", 0 }, { "AGG_PLAIN", "PG_QUERY__AGG_STRATEGY__AGG_PLAIN", 1 }, { "AGG_SORTED", "PG_QUERY__AGG_STRATEGY__AGG_SORTED", 2 }, { "AGG_HASHED", "PG_QUERY__AGG_STRATEGY__AGG_HASHED", 3 }, { "AGG_MIXED", "PG_QUERY__AGG_STRATEGY__AGG_MIXED", 4 }, }; static const ProtobufCIntRange pg_query__agg_strategy__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__agg_strategy__enum_values_by_name[5] = { { "AGG_HASHED", 3 }, { "AGG_MIXED", 4 }, { "AGG_PLAIN", 1 }, { "AGG_SORTED", 2 }, { "AGG_STRATEGY_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__agg_strategy__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.AggStrategy", "AggStrategy", "PgQuery__AggStrategy", "pg_query", 5, pg_query__agg_strategy__enum_values_by_number, 5, pg_query__agg_strategy__enum_values_by_name, 1, pg_query__agg_strategy__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__agg_split__enum_values_by_number[4] = { { "AGG_SPLIT_UNDEFINED", "PG_QUERY__AGG_SPLIT__AGG_SPLIT_UNDEFINED", 0 }, { "AGGSPLIT_SIMPLE", "PG_QUERY__AGG_SPLIT__AGGSPLIT_SIMPLE", 1 }, { "AGGSPLIT_INITIAL_SERIAL", "PG_QUERY__AGG_SPLIT__AGGSPLIT_INITIAL_SERIAL", 2 }, { "AGGSPLIT_FINAL_DESERIAL", "PG_QUERY__AGG_SPLIT__AGGSPLIT_FINAL_DESERIAL", 3 }, }; static const ProtobufCIntRange pg_query__agg_split__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__agg_split__enum_values_by_name[4] = { { "AGGSPLIT_FINAL_DESERIAL", 3 }, { "AGGSPLIT_INITIAL_SERIAL", 2 }, { "AGGSPLIT_SIMPLE", 1 }, { "AGG_SPLIT_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__agg_split__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.AggSplit", "AggSplit", "PgQuery__AggSplit", "pg_query", 4, pg_query__agg_split__enum_values_by_number, 4, pg_query__agg_split__enum_values_by_name, 1, pg_query__agg_split__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__set_op_cmd__enum_values_by_number[5] = { { "SET_OP_CMD_UNDEFINED", "PG_QUERY__SET_OP_CMD__SET_OP_CMD_UNDEFINED", 0 }, { "SETOPCMD_INTERSECT", "PG_QUERY__SET_OP_CMD__SETOPCMD_INTERSECT", 1 }, { "SETOPCMD_INTERSECT_ALL", "PG_QUERY__SET_OP_CMD__SETOPCMD_INTERSECT_ALL", 2 }, { "SETOPCMD_EXCEPT", "PG_QUERY__SET_OP_CMD__SETOPCMD_EXCEPT", 3 }, { "SETOPCMD_EXCEPT_ALL", "PG_QUERY__SET_OP_CMD__SETOPCMD_EXCEPT_ALL", 4 }, }; static const ProtobufCIntRange pg_query__set_op_cmd__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__set_op_cmd__enum_values_by_name[5] = { { "SETOPCMD_EXCEPT", 3 }, { "SETOPCMD_EXCEPT_ALL", 4 }, { "SETOPCMD_INTERSECT", 1 }, { "SETOPCMD_INTERSECT_ALL", 2 }, { "SET_OP_CMD_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__set_op_cmd__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.SetOpCmd", "SetOpCmd", "PgQuery__SetOpCmd", "pg_query", 5, pg_query__set_op_cmd__enum_values_by_number, 5, pg_query__set_op_cmd__enum_values_by_name, 1, pg_query__set_op_cmd__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__set_op_strategy__enum_values_by_number[3] = { { "SET_OP_STRATEGY_UNDEFINED", "PG_QUERY__SET_OP_STRATEGY__SET_OP_STRATEGY_UNDEFINED", 0 }, { "SETOP_SORTED", "PG_QUERY__SET_OP_STRATEGY__SETOP_SORTED", 1 }, { "SETOP_HASHED", "PG_QUERY__SET_OP_STRATEGY__SETOP_HASHED", 2 }, }; static const ProtobufCIntRange pg_query__set_op_strategy__value_ranges[] = { {0, 0},{0, 3} }; static const ProtobufCEnumValueIndex pg_query__set_op_strategy__enum_values_by_name[3] = { { "SETOP_HASHED", 2 }, { "SETOP_SORTED", 1 }, { "SET_OP_STRATEGY_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__set_op_strategy__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.SetOpStrategy", "SetOpStrategy", "PgQuery__SetOpStrategy", "pg_query", 3, pg_query__set_op_strategy__enum_values_by_number, 3, pg_query__set_op_strategy__enum_values_by_name, 1, pg_query__set_op_strategy__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__on_conflict_action__enum_values_by_number[4] = { { "ON_CONFLICT_ACTION_UNDEFINED", "PG_QUERY__ON_CONFLICT_ACTION__ON_CONFLICT_ACTION_UNDEFINED", 0 }, { "ONCONFLICT_NONE", "PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_NONE", 1 }, { "ONCONFLICT_NOTHING", "PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_NOTHING", 2 }, { "ONCONFLICT_UPDATE", "PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_UPDATE", 3 }, }; static const ProtobufCIntRange pg_query__on_conflict_action__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__on_conflict_action__enum_values_by_name[4] = { { "ONCONFLICT_NONE", 1 }, { "ONCONFLICT_NOTHING", 2 }, { "ONCONFLICT_UPDATE", 3 }, { "ON_CONFLICT_ACTION_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__on_conflict_action__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.OnConflictAction", "OnConflictAction", "PgQuery__OnConflictAction", "pg_query", 4, pg_query__on_conflict_action__enum_values_by_number, 4, pg_query__on_conflict_action__enum_values_by_name, 1, pg_query__on_conflict_action__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__limit_option__enum_values_by_number[4] = { { "LIMIT_OPTION_UNDEFINED", "PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_UNDEFINED", 0 }, { "LIMIT_OPTION_DEFAULT", "PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_DEFAULT", 1 }, { "LIMIT_OPTION_COUNT", "PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_COUNT", 2 }, { "LIMIT_OPTION_WITH_TIES", "PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_WITH_TIES", 3 }, }; static const ProtobufCIntRange pg_query__limit_option__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__limit_option__enum_values_by_name[4] = { { "LIMIT_OPTION_COUNT", 2 }, { "LIMIT_OPTION_DEFAULT", 1 }, { "LIMIT_OPTION_UNDEFINED", 0 }, { "LIMIT_OPTION_WITH_TIES", 3 }, }; const ProtobufCEnumDescriptor pg_query__limit_option__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.LimitOption", "LimitOption", "PgQuery__LimitOption", "pg_query", 4, pg_query__limit_option__enum_values_by_number, 4, pg_query__limit_option__enum_values_by_name, 1, pg_query__limit_option__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__lock_clause_strength__enum_values_by_number[6] = { { "LOCK_CLAUSE_STRENGTH_UNDEFINED", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LOCK_CLAUSE_STRENGTH_UNDEFINED", 0 }, { "LCS_NONE", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_NONE", 1 }, { "LCS_FORKEYSHARE", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORKEYSHARE", 2 }, { "LCS_FORSHARE", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORSHARE", 3 }, { "LCS_FORNOKEYUPDATE", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORNOKEYUPDATE", 4 }, { "LCS_FORUPDATE", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORUPDATE", 5 }, }; static const ProtobufCIntRange pg_query__lock_clause_strength__value_ranges[] = { {0, 0},{0, 6} }; static const ProtobufCEnumValueIndex pg_query__lock_clause_strength__enum_values_by_name[6] = { { "LCS_FORKEYSHARE", 2 }, { "LCS_FORNOKEYUPDATE", 4 }, { "LCS_FORSHARE", 3 }, { "LCS_FORUPDATE", 5 }, { "LCS_NONE", 1 }, { "LOCK_CLAUSE_STRENGTH_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__lock_clause_strength__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.LockClauseStrength", "LockClauseStrength", "PgQuery__LockClauseStrength", "pg_query", 6, pg_query__lock_clause_strength__enum_values_by_number, 6, pg_query__lock_clause_strength__enum_values_by_name, 1, pg_query__lock_clause_strength__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__lock_wait_policy__enum_values_by_number[4] = { { "LOCK_WAIT_POLICY_UNDEFINED", "PG_QUERY__LOCK_WAIT_POLICY__LOCK_WAIT_POLICY_UNDEFINED", 0 }, { "LockWaitBlock", "PG_QUERY__LOCK_WAIT_POLICY__LockWaitBlock", 1 }, { "LockWaitSkip", "PG_QUERY__LOCK_WAIT_POLICY__LockWaitSkip", 2 }, { "LockWaitError", "PG_QUERY__LOCK_WAIT_POLICY__LockWaitError", 3 }, }; static const ProtobufCIntRange pg_query__lock_wait_policy__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__lock_wait_policy__enum_values_by_name[4] = { { "LOCK_WAIT_POLICY_UNDEFINED", 0 }, { "LockWaitBlock", 1 }, { "LockWaitError", 3 }, { "LockWaitSkip", 2 }, }; const ProtobufCEnumDescriptor pg_query__lock_wait_policy__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.LockWaitPolicy", "LockWaitPolicy", "PgQuery__LockWaitPolicy", "pg_query", 4, pg_query__lock_wait_policy__enum_values_by_number, 4, pg_query__lock_wait_policy__enum_values_by_name, 1, pg_query__lock_wait_policy__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__lock_tuple_mode__enum_values_by_number[5] = { { "LOCK_TUPLE_MODE_UNDEFINED", "PG_QUERY__LOCK_TUPLE_MODE__LOCK_TUPLE_MODE_UNDEFINED", 0 }, { "LockTupleKeyShare", "PG_QUERY__LOCK_TUPLE_MODE__LockTupleKeyShare", 1 }, { "LockTupleShare", "PG_QUERY__LOCK_TUPLE_MODE__LockTupleShare", 2 }, { "LockTupleNoKeyExclusive", "PG_QUERY__LOCK_TUPLE_MODE__LockTupleNoKeyExclusive", 3 }, { "LockTupleExclusive", "PG_QUERY__LOCK_TUPLE_MODE__LockTupleExclusive", 4 }, }; static const ProtobufCIntRange pg_query__lock_tuple_mode__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__lock_tuple_mode__enum_values_by_name[5] = { { "LOCK_TUPLE_MODE_UNDEFINED", 0 }, { "LockTupleExclusive", 4 }, { "LockTupleKeyShare", 1 }, { "LockTupleNoKeyExclusive", 3 }, { "LockTupleShare", 2 }, }; const ProtobufCEnumDescriptor pg_query__lock_tuple_mode__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.LockTupleMode", "LockTupleMode", "PgQuery__LockTupleMode", "pg_query", 5, pg_query__lock_tuple_mode__enum_values_by_number, 5, pg_query__lock_tuple_mode__enum_values_by_name, 1, pg_query__lock_tuple_mode__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__keyword_kind__enum_values_by_number[5] = { { "NO_KEYWORD", "PG_QUERY__KEYWORD_KIND__NO_KEYWORD", 0 }, { "UNRESERVED_KEYWORD", "PG_QUERY__KEYWORD_KIND__UNRESERVED_KEYWORD", 1 }, { "COL_NAME_KEYWORD", "PG_QUERY__KEYWORD_KIND__COL_NAME_KEYWORD", 2 }, { "TYPE_FUNC_NAME_KEYWORD", "PG_QUERY__KEYWORD_KIND__TYPE_FUNC_NAME_KEYWORD", 3 }, { "RESERVED_KEYWORD", "PG_QUERY__KEYWORD_KIND__RESERVED_KEYWORD", 4 }, }; static const ProtobufCIntRange pg_query__keyword_kind__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__keyword_kind__enum_values_by_name[5] = { { "COL_NAME_KEYWORD", 2 }, { "NO_KEYWORD", 0 }, { "RESERVED_KEYWORD", 4 }, { "TYPE_FUNC_NAME_KEYWORD", 3 }, { "UNRESERVED_KEYWORD", 1 }, }; const ProtobufCEnumDescriptor pg_query__keyword_kind__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.KeywordKind", "KeywordKind", "PgQuery__KeywordKind", "pg_query", 5, pg_query__keyword_kind__enum_values_by_number, 5, pg_query__keyword_kind__enum_values_by_name, 1, pg_query__keyword_kind__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__token__enum_values_by_number[508] = { { "NUL", "PG_QUERY__TOKEN__NUL", 0 }, { "ASCII_37", "PG_QUERY__TOKEN__ASCII_37", 37 }, { "ASCII_40", "PG_QUERY__TOKEN__ASCII_40", 40 }, { "ASCII_41", "PG_QUERY__TOKEN__ASCII_41", 41 }, { "ASCII_42", "PG_QUERY__TOKEN__ASCII_42", 42 }, { "ASCII_43", "PG_QUERY__TOKEN__ASCII_43", 43 }, { "ASCII_44", "PG_QUERY__TOKEN__ASCII_44", 44 }, { "ASCII_45", "PG_QUERY__TOKEN__ASCII_45", 45 }, { "ASCII_46", "PG_QUERY__TOKEN__ASCII_46", 46 }, { "ASCII_47", "PG_QUERY__TOKEN__ASCII_47", 47 }, { "ASCII_58", "PG_QUERY__TOKEN__ASCII_58", 58 }, { "ASCII_59", "PG_QUERY__TOKEN__ASCII_59", 59 }, { "ASCII_60", "PG_QUERY__TOKEN__ASCII_60", 60 }, { "ASCII_61", "PG_QUERY__TOKEN__ASCII_61", 61 }, { "ASCII_62", "PG_QUERY__TOKEN__ASCII_62", 62 }, { "ASCII_63", "PG_QUERY__TOKEN__ASCII_63", 63 }, { "ASCII_91", "PG_QUERY__TOKEN__ASCII_91", 91 }, { "ASCII_92", "PG_QUERY__TOKEN__ASCII_92", 92 }, { "ASCII_93", "PG_QUERY__TOKEN__ASCII_93", 93 }, { "ASCII_94", "PG_QUERY__TOKEN__ASCII_94", 94 }, { "IDENT", "PG_QUERY__TOKEN__IDENT", 258 }, { "UIDENT", "PG_QUERY__TOKEN__UIDENT", 259 }, { "FCONST", "PG_QUERY__TOKEN__FCONST", 260 }, { "SCONST", "PG_QUERY__TOKEN__SCONST", 261 }, { "USCONST", "PG_QUERY__TOKEN__USCONST", 262 }, { "BCONST", "PG_QUERY__TOKEN__BCONST", 263 }, { "XCONST", "PG_QUERY__TOKEN__XCONST", 264 }, { "Op", "PG_QUERY__TOKEN__Op", 265 }, { "ICONST", "PG_QUERY__TOKEN__ICONST", 266 }, { "PARAM", "PG_QUERY__TOKEN__PARAM", 267 }, { "TYPECAST", "PG_QUERY__TOKEN__TYPECAST", 268 }, { "DOT_DOT", "PG_QUERY__TOKEN__DOT_DOT", 269 }, { "COLON_EQUALS", "PG_QUERY__TOKEN__COLON_EQUALS", 270 }, { "EQUALS_GREATER", "PG_QUERY__TOKEN__EQUALS_GREATER", 271 }, { "LESS_EQUALS", "PG_QUERY__TOKEN__LESS_EQUALS", 272 }, { "GREATER_EQUALS", "PG_QUERY__TOKEN__GREATER_EQUALS", 273 }, { "NOT_EQUALS", "PG_QUERY__TOKEN__NOT_EQUALS", 274 }, { "SQL_COMMENT", "PG_QUERY__TOKEN__SQL_COMMENT", 275 }, { "C_COMMENT", "PG_QUERY__TOKEN__C_COMMENT", 276 }, { "ABORT_P", "PG_QUERY__TOKEN__ABORT_P", 277 }, { "ABSOLUTE_P", "PG_QUERY__TOKEN__ABSOLUTE_P", 278 }, { "ACCESS", "PG_QUERY__TOKEN__ACCESS", 279 }, { "ACTION", "PG_QUERY__TOKEN__ACTION", 280 }, { "ADD_P", "PG_QUERY__TOKEN__ADD_P", 281 }, { "ADMIN", "PG_QUERY__TOKEN__ADMIN", 282 }, { "AFTER", "PG_QUERY__TOKEN__AFTER", 283 }, { "AGGREGATE", "PG_QUERY__TOKEN__AGGREGATE", 284 }, { "ALL", "PG_QUERY__TOKEN__ALL", 285 }, { "ALSO", "PG_QUERY__TOKEN__ALSO", 286 }, { "ALTER", "PG_QUERY__TOKEN__ALTER", 287 }, { "ALWAYS", "PG_QUERY__TOKEN__ALWAYS", 288 }, { "ANALYSE", "PG_QUERY__TOKEN__ANALYSE", 289 }, { "ANALYZE", "PG_QUERY__TOKEN__ANALYZE", 290 }, { "AND", "PG_QUERY__TOKEN__AND", 291 }, { "ANY", "PG_QUERY__TOKEN__ANY", 292 }, { "ARRAY", "PG_QUERY__TOKEN__ARRAY", 293 }, { "AS", "PG_QUERY__TOKEN__AS", 294 }, { "ASC", "PG_QUERY__TOKEN__ASC", 295 }, { "ASENSITIVE", "PG_QUERY__TOKEN__ASENSITIVE", 296 }, { "ASSERTION", "PG_QUERY__TOKEN__ASSERTION", 297 }, { "ASSIGNMENT", "PG_QUERY__TOKEN__ASSIGNMENT", 298 }, { "ASYMMETRIC", "PG_QUERY__TOKEN__ASYMMETRIC", 299 }, { "ATOMIC", "PG_QUERY__TOKEN__ATOMIC", 300 }, { "AT", "PG_QUERY__TOKEN__AT", 301 }, { "ATTACH", "PG_QUERY__TOKEN__ATTACH", 302 }, { "ATTRIBUTE", "PG_QUERY__TOKEN__ATTRIBUTE", 303 }, { "AUTHORIZATION", "PG_QUERY__TOKEN__AUTHORIZATION", 304 }, { "BACKWARD", "PG_QUERY__TOKEN__BACKWARD", 305 }, { "BEFORE", "PG_QUERY__TOKEN__BEFORE", 306 }, { "BEGIN_P", "PG_QUERY__TOKEN__BEGIN_P", 307 }, { "BETWEEN", "PG_QUERY__TOKEN__BETWEEN", 308 }, { "BIGINT", "PG_QUERY__TOKEN__BIGINT", 309 }, { "BINARY", "PG_QUERY__TOKEN__BINARY", 310 }, { "BIT", "PG_QUERY__TOKEN__BIT", 311 }, { "BOOLEAN_P", "PG_QUERY__TOKEN__BOOLEAN_P", 312 }, { "BOTH", "PG_QUERY__TOKEN__BOTH", 313 }, { "BREADTH", "PG_QUERY__TOKEN__BREADTH", 314 }, { "BY", "PG_QUERY__TOKEN__BY", 315 }, { "CACHE", "PG_QUERY__TOKEN__CACHE", 316 }, { "CALL", "PG_QUERY__TOKEN__CALL", 317 }, { "CALLED", "PG_QUERY__TOKEN__CALLED", 318 }, { "CASCADE", "PG_QUERY__TOKEN__CASCADE", 319 }, { "CASCADED", "PG_QUERY__TOKEN__CASCADED", 320 }, { "CASE", "PG_QUERY__TOKEN__CASE", 321 }, { "CAST", "PG_QUERY__TOKEN__CAST", 322 }, { "CATALOG_P", "PG_QUERY__TOKEN__CATALOG_P", 323 }, { "CHAIN", "PG_QUERY__TOKEN__CHAIN", 324 }, { "CHAR_P", "PG_QUERY__TOKEN__CHAR_P", 325 }, { "CHARACTER", "PG_QUERY__TOKEN__CHARACTER", 326 }, { "CHARACTERISTICS", "PG_QUERY__TOKEN__CHARACTERISTICS", 327 }, { "CHECK", "PG_QUERY__TOKEN__CHECK", 328 }, { "CHECKPOINT", "PG_QUERY__TOKEN__CHECKPOINT", 329 }, { "CLASS", "PG_QUERY__TOKEN__CLASS", 330 }, { "CLOSE", "PG_QUERY__TOKEN__CLOSE", 331 }, { "CLUSTER", "PG_QUERY__TOKEN__CLUSTER", 332 }, { "COALESCE", "PG_QUERY__TOKEN__COALESCE", 333 }, { "COLLATE", "PG_QUERY__TOKEN__COLLATE", 334 }, { "COLLATION", "PG_QUERY__TOKEN__COLLATION", 335 }, { "COLUMN", "PG_QUERY__TOKEN__COLUMN", 336 }, { "COLUMNS", "PG_QUERY__TOKEN__COLUMNS", 337 }, { "COMMENT", "PG_QUERY__TOKEN__COMMENT", 338 }, { "COMMENTS", "PG_QUERY__TOKEN__COMMENTS", 339 }, { "COMMIT", "PG_QUERY__TOKEN__COMMIT", 340 }, { "COMMITTED", "PG_QUERY__TOKEN__COMMITTED", 341 }, { "COMPRESSION", "PG_QUERY__TOKEN__COMPRESSION", 342 }, { "CONCURRENTLY", "PG_QUERY__TOKEN__CONCURRENTLY", 343 }, { "CONFIGURATION", "PG_QUERY__TOKEN__CONFIGURATION", 344 }, { "CONFLICT", "PG_QUERY__TOKEN__CONFLICT", 345 }, { "CONNECTION", "PG_QUERY__TOKEN__CONNECTION", 346 }, { "CONSTRAINT", "PG_QUERY__TOKEN__CONSTRAINT", 347 }, { "CONSTRAINTS", "PG_QUERY__TOKEN__CONSTRAINTS", 348 }, { "CONTENT_P", "PG_QUERY__TOKEN__CONTENT_P", 349 }, { "CONTINUE_P", "PG_QUERY__TOKEN__CONTINUE_P", 350 }, { "CONVERSION_P", "PG_QUERY__TOKEN__CONVERSION_P", 351 }, { "COPY", "PG_QUERY__TOKEN__COPY", 352 }, { "COST", "PG_QUERY__TOKEN__COST", 353 }, { "CREATE", "PG_QUERY__TOKEN__CREATE", 354 }, { "CROSS", "PG_QUERY__TOKEN__CROSS", 355 }, { "CSV", "PG_QUERY__TOKEN__CSV", 356 }, { "CUBE", "PG_QUERY__TOKEN__CUBE", 357 }, { "CURRENT_P", "PG_QUERY__TOKEN__CURRENT_P", 358 }, { "CURRENT_CATALOG", "PG_QUERY__TOKEN__CURRENT_CATALOG", 359 }, { "CURRENT_DATE", "PG_QUERY__TOKEN__CURRENT_DATE", 360 }, { "CURRENT_ROLE", "PG_QUERY__TOKEN__CURRENT_ROLE", 361 }, { "CURRENT_SCHEMA", "PG_QUERY__TOKEN__CURRENT_SCHEMA", 362 }, { "CURRENT_TIME", "PG_QUERY__TOKEN__CURRENT_TIME", 363 }, { "CURRENT_TIMESTAMP", "PG_QUERY__TOKEN__CURRENT_TIMESTAMP", 364 }, { "CURRENT_USER", "PG_QUERY__TOKEN__CURRENT_USER", 365 }, { "CURSOR", "PG_QUERY__TOKEN__CURSOR", 366 }, { "CYCLE", "PG_QUERY__TOKEN__CYCLE", 367 }, { "DATA_P", "PG_QUERY__TOKEN__DATA_P", 368 }, { "DATABASE", "PG_QUERY__TOKEN__DATABASE", 369 }, { "DAY_P", "PG_QUERY__TOKEN__DAY_P", 370 }, { "DEALLOCATE", "PG_QUERY__TOKEN__DEALLOCATE", 371 }, { "DEC", "PG_QUERY__TOKEN__DEC", 372 }, { "DECIMAL_P", "PG_QUERY__TOKEN__DECIMAL_P", 373 }, { "DECLARE", "PG_QUERY__TOKEN__DECLARE", 374 }, { "DEFAULT", "PG_QUERY__TOKEN__DEFAULT", 375 }, { "DEFAULTS", "PG_QUERY__TOKEN__DEFAULTS", 376 }, { "DEFERRABLE", "PG_QUERY__TOKEN__DEFERRABLE", 377 }, { "DEFERRED", "PG_QUERY__TOKEN__DEFERRED", 378 }, { "DEFINER", "PG_QUERY__TOKEN__DEFINER", 379 }, { "DELETE_P", "PG_QUERY__TOKEN__DELETE_P", 380 }, { "DELIMITER", "PG_QUERY__TOKEN__DELIMITER", 381 }, { "DELIMITERS", "PG_QUERY__TOKEN__DELIMITERS", 382 }, { "DEPENDS", "PG_QUERY__TOKEN__DEPENDS", 383 }, { "DEPTH", "PG_QUERY__TOKEN__DEPTH", 384 }, { "DESC", "PG_QUERY__TOKEN__DESC", 385 }, { "DETACH", "PG_QUERY__TOKEN__DETACH", 386 }, { "DICTIONARY", "PG_QUERY__TOKEN__DICTIONARY", 387 }, { "DISABLE_P", "PG_QUERY__TOKEN__DISABLE_P", 388 }, { "DISCARD", "PG_QUERY__TOKEN__DISCARD", 389 }, { "DISTINCT", "PG_QUERY__TOKEN__DISTINCT", 390 }, { "DO", "PG_QUERY__TOKEN__DO", 391 }, { "DOCUMENT_P", "PG_QUERY__TOKEN__DOCUMENT_P", 392 }, { "DOMAIN_P", "PG_QUERY__TOKEN__DOMAIN_P", 393 }, { "DOUBLE_P", "PG_QUERY__TOKEN__DOUBLE_P", 394 }, { "DROP", "PG_QUERY__TOKEN__DROP", 395 }, { "EACH", "PG_QUERY__TOKEN__EACH", 396 }, { "ELSE", "PG_QUERY__TOKEN__ELSE", 397 }, { "ENABLE_P", "PG_QUERY__TOKEN__ENABLE_P", 398 }, { "ENCODING", "PG_QUERY__TOKEN__ENCODING", 399 }, { "ENCRYPTED", "PG_QUERY__TOKEN__ENCRYPTED", 400 }, { "END_P", "PG_QUERY__TOKEN__END_P", 401 }, { "ENUM_P", "PG_QUERY__TOKEN__ENUM_P", 402 }, { "ESCAPE", "PG_QUERY__TOKEN__ESCAPE", 403 }, { "EVENT", "PG_QUERY__TOKEN__EVENT", 404 }, { "EXCEPT", "PG_QUERY__TOKEN__EXCEPT", 405 }, { "EXCLUDE", "PG_QUERY__TOKEN__EXCLUDE", 406 }, { "EXCLUDING", "PG_QUERY__TOKEN__EXCLUDING", 407 }, { "EXCLUSIVE", "PG_QUERY__TOKEN__EXCLUSIVE", 408 }, { "EXECUTE", "PG_QUERY__TOKEN__EXECUTE", 409 }, { "EXISTS", "PG_QUERY__TOKEN__EXISTS", 410 }, { "EXPLAIN", "PG_QUERY__TOKEN__EXPLAIN", 411 }, { "EXPRESSION", "PG_QUERY__TOKEN__EXPRESSION", 412 }, { "EXTENSION", "PG_QUERY__TOKEN__EXTENSION", 413 }, { "EXTERNAL", "PG_QUERY__TOKEN__EXTERNAL", 414 }, { "EXTRACT", "PG_QUERY__TOKEN__EXTRACT", 415 }, { "FALSE_P", "PG_QUERY__TOKEN__FALSE_P", 416 }, { "FAMILY", "PG_QUERY__TOKEN__FAMILY", 417 }, { "FETCH", "PG_QUERY__TOKEN__FETCH", 418 }, { "FILTER", "PG_QUERY__TOKEN__FILTER", 419 }, { "FINALIZE", "PG_QUERY__TOKEN__FINALIZE", 420 }, { "FIRST_P", "PG_QUERY__TOKEN__FIRST_P", 421 }, { "FLOAT_P", "PG_QUERY__TOKEN__FLOAT_P", 422 }, { "FOLLOWING", "PG_QUERY__TOKEN__FOLLOWING", 423 }, { "FOR", "PG_QUERY__TOKEN__FOR", 424 }, { "FORCE", "PG_QUERY__TOKEN__FORCE", 425 }, { "FOREIGN", "PG_QUERY__TOKEN__FOREIGN", 426 }, { "FORWARD", "PG_QUERY__TOKEN__FORWARD", 427 }, { "FREEZE", "PG_QUERY__TOKEN__FREEZE", 428 }, { "FROM", "PG_QUERY__TOKEN__FROM", 429 }, { "FULL", "PG_QUERY__TOKEN__FULL", 430 }, { "FUNCTION", "PG_QUERY__TOKEN__FUNCTION", 431 }, { "FUNCTIONS", "PG_QUERY__TOKEN__FUNCTIONS", 432 }, { "GENERATED", "PG_QUERY__TOKEN__GENERATED", 433 }, { "GLOBAL", "PG_QUERY__TOKEN__GLOBAL", 434 }, { "GRANT", "PG_QUERY__TOKEN__GRANT", 435 }, { "GRANTED", "PG_QUERY__TOKEN__GRANTED", 436 }, { "GREATEST", "PG_QUERY__TOKEN__GREATEST", 437 }, { "GROUP_P", "PG_QUERY__TOKEN__GROUP_P", 438 }, { "GROUPING", "PG_QUERY__TOKEN__GROUPING", 439 }, { "GROUPS", "PG_QUERY__TOKEN__GROUPS", 440 }, { "HANDLER", "PG_QUERY__TOKEN__HANDLER", 441 }, { "HAVING", "PG_QUERY__TOKEN__HAVING", 442 }, { "HEADER_P", "PG_QUERY__TOKEN__HEADER_P", 443 }, { "HOLD", "PG_QUERY__TOKEN__HOLD", 444 }, { "HOUR_P", "PG_QUERY__TOKEN__HOUR_P", 445 }, { "IDENTITY_P", "PG_QUERY__TOKEN__IDENTITY_P", 446 }, { "IF_P", "PG_QUERY__TOKEN__IF_P", 447 }, { "ILIKE", "PG_QUERY__TOKEN__ILIKE", 448 }, { "IMMEDIATE", "PG_QUERY__TOKEN__IMMEDIATE", 449 }, { "IMMUTABLE", "PG_QUERY__TOKEN__IMMUTABLE", 450 }, { "IMPLICIT_P", "PG_QUERY__TOKEN__IMPLICIT_P", 451 }, { "IMPORT_P", "PG_QUERY__TOKEN__IMPORT_P", 452 }, { "IN_P", "PG_QUERY__TOKEN__IN_P", 453 }, { "INCLUDE", "PG_QUERY__TOKEN__INCLUDE", 454 }, { "INCLUDING", "PG_QUERY__TOKEN__INCLUDING", 455 }, { "INCREMENT", "PG_QUERY__TOKEN__INCREMENT", 456 }, { "INDEX", "PG_QUERY__TOKEN__INDEX", 457 }, { "INDEXES", "PG_QUERY__TOKEN__INDEXES", 458 }, { "INHERIT", "PG_QUERY__TOKEN__INHERIT", 459 }, { "INHERITS", "PG_QUERY__TOKEN__INHERITS", 460 }, { "INITIALLY", "PG_QUERY__TOKEN__INITIALLY", 461 }, { "INLINE_P", "PG_QUERY__TOKEN__INLINE_P", 462 }, { "INNER_P", "PG_QUERY__TOKEN__INNER_P", 463 }, { "INOUT", "PG_QUERY__TOKEN__INOUT", 464 }, { "INPUT_P", "PG_QUERY__TOKEN__INPUT_P", 465 }, { "INSENSITIVE", "PG_QUERY__TOKEN__INSENSITIVE", 466 }, { "INSERT", "PG_QUERY__TOKEN__INSERT", 467 }, { "INSTEAD", "PG_QUERY__TOKEN__INSTEAD", 468 }, { "INT_P", "PG_QUERY__TOKEN__INT_P", 469 }, { "INTEGER", "PG_QUERY__TOKEN__INTEGER", 470 }, { "INTERSECT", "PG_QUERY__TOKEN__INTERSECT", 471 }, { "INTERVAL", "PG_QUERY__TOKEN__INTERVAL", 472 }, { "INTO", "PG_QUERY__TOKEN__INTO", 473 }, { "INVOKER", "PG_QUERY__TOKEN__INVOKER", 474 }, { "IS", "PG_QUERY__TOKEN__IS", 475 }, { "ISNULL", "PG_QUERY__TOKEN__ISNULL", 476 }, { "ISOLATION", "PG_QUERY__TOKEN__ISOLATION", 477 }, { "JOIN", "PG_QUERY__TOKEN__JOIN", 478 }, { "KEY", "PG_QUERY__TOKEN__KEY", 479 }, { "LABEL", "PG_QUERY__TOKEN__LABEL", 480 }, { "LANGUAGE", "PG_QUERY__TOKEN__LANGUAGE", 481 }, { "LARGE_P", "PG_QUERY__TOKEN__LARGE_P", 482 }, { "LAST_P", "PG_QUERY__TOKEN__LAST_P", 483 }, { "LATERAL_P", "PG_QUERY__TOKEN__LATERAL_P", 484 }, { "LEADING", "PG_QUERY__TOKEN__LEADING", 485 }, { "LEAKPROOF", "PG_QUERY__TOKEN__LEAKPROOF", 486 }, { "LEAST", "PG_QUERY__TOKEN__LEAST", 487 }, { "LEFT", "PG_QUERY__TOKEN__LEFT", 488 }, { "LEVEL", "PG_QUERY__TOKEN__LEVEL", 489 }, { "LIKE", "PG_QUERY__TOKEN__LIKE", 490 }, { "LIMIT", "PG_QUERY__TOKEN__LIMIT", 491 }, { "LISTEN", "PG_QUERY__TOKEN__LISTEN", 492 }, { "LOAD", "PG_QUERY__TOKEN__LOAD", 493 }, { "LOCAL", "PG_QUERY__TOKEN__LOCAL", 494 }, { "LOCALTIME", "PG_QUERY__TOKEN__LOCALTIME", 495 }, { "LOCALTIMESTAMP", "PG_QUERY__TOKEN__LOCALTIMESTAMP", 496 }, { "LOCATION", "PG_QUERY__TOKEN__LOCATION", 497 }, { "LOCK_P", "PG_QUERY__TOKEN__LOCK_P", 498 }, { "LOCKED", "PG_QUERY__TOKEN__LOCKED", 499 }, { "LOGGED", "PG_QUERY__TOKEN__LOGGED", 500 }, { "MAPPING", "PG_QUERY__TOKEN__MAPPING", 501 }, { "MATCH", "PG_QUERY__TOKEN__MATCH", 502 }, { "MATCHED", "PG_QUERY__TOKEN__MATCHED", 503 }, { "MATERIALIZED", "PG_QUERY__TOKEN__MATERIALIZED", 504 }, { "MAXVALUE", "PG_QUERY__TOKEN__MAXVALUE", 505 }, { "MERGE", "PG_QUERY__TOKEN__MERGE", 506 }, { "METHOD", "PG_QUERY__TOKEN__METHOD", 507 }, { "MINUTE_P", "PG_QUERY__TOKEN__MINUTE_P", 508 }, { "MINVALUE", "PG_QUERY__TOKEN__MINVALUE", 509 }, { "MODE", "PG_QUERY__TOKEN__MODE", 510 }, { "MONTH_P", "PG_QUERY__TOKEN__MONTH_P", 511 }, { "MOVE", "PG_QUERY__TOKEN__MOVE", 512 }, { "NAME_P", "PG_QUERY__TOKEN__NAME_P", 513 }, { "NAMES", "PG_QUERY__TOKEN__NAMES", 514 }, { "NATIONAL", "PG_QUERY__TOKEN__NATIONAL", 515 }, { "NATURAL", "PG_QUERY__TOKEN__NATURAL", 516 }, { "NCHAR", "PG_QUERY__TOKEN__NCHAR", 517 }, { "NEW", "PG_QUERY__TOKEN__NEW", 518 }, { "NEXT", "PG_QUERY__TOKEN__NEXT", 519 }, { "NFC", "PG_QUERY__TOKEN__NFC", 520 }, { "NFD", "PG_QUERY__TOKEN__NFD", 521 }, { "NFKC", "PG_QUERY__TOKEN__NFKC", 522 }, { "NFKD", "PG_QUERY__TOKEN__NFKD", 523 }, { "NO", "PG_QUERY__TOKEN__NO", 524 }, { "NONE", "PG_QUERY__TOKEN__NONE", 525 }, { "NORMALIZE", "PG_QUERY__TOKEN__NORMALIZE", 526 }, { "NORMALIZED", "PG_QUERY__TOKEN__NORMALIZED", 527 }, { "NOT", "PG_QUERY__TOKEN__NOT", 528 }, { "NOTHING", "PG_QUERY__TOKEN__NOTHING", 529 }, { "NOTIFY", "PG_QUERY__TOKEN__NOTIFY", 530 }, { "NOTNULL", "PG_QUERY__TOKEN__NOTNULL", 531 }, { "NOWAIT", "PG_QUERY__TOKEN__NOWAIT", 532 }, { "NULL_P", "PG_QUERY__TOKEN__NULL_P", 533 }, { "NULLIF", "PG_QUERY__TOKEN__NULLIF", 534 }, { "NULLS_P", "PG_QUERY__TOKEN__NULLS_P", 535 }, { "NUMERIC", "PG_QUERY__TOKEN__NUMERIC", 536 }, { "OBJECT_P", "PG_QUERY__TOKEN__OBJECT_P", 537 }, { "OF", "PG_QUERY__TOKEN__OF", 538 }, { "OFF", "PG_QUERY__TOKEN__OFF", 539 }, { "OFFSET", "PG_QUERY__TOKEN__OFFSET", 540 }, { "OIDS", "PG_QUERY__TOKEN__OIDS", 541 }, { "OLD", "PG_QUERY__TOKEN__OLD", 542 }, { "ON", "PG_QUERY__TOKEN__ON", 543 }, { "ONLY", "PG_QUERY__TOKEN__ONLY", 544 }, { "OPERATOR", "PG_QUERY__TOKEN__OPERATOR", 545 }, { "OPTION", "PG_QUERY__TOKEN__OPTION", 546 }, { "OPTIONS", "PG_QUERY__TOKEN__OPTIONS", 547 }, { "OR", "PG_QUERY__TOKEN__OR", 548 }, { "ORDER", "PG_QUERY__TOKEN__ORDER", 549 }, { "ORDINALITY", "PG_QUERY__TOKEN__ORDINALITY", 550 }, { "OTHERS", "PG_QUERY__TOKEN__OTHERS", 551 }, { "OUT_P", "PG_QUERY__TOKEN__OUT_P", 552 }, { "OUTER_P", "PG_QUERY__TOKEN__OUTER_P", 553 }, { "OVER", "PG_QUERY__TOKEN__OVER", 554 }, { "OVERLAPS", "PG_QUERY__TOKEN__OVERLAPS", 555 }, { "OVERLAY", "PG_QUERY__TOKEN__OVERLAY", 556 }, { "OVERRIDING", "PG_QUERY__TOKEN__OVERRIDING", 557 }, { "OWNED", "PG_QUERY__TOKEN__OWNED", 558 }, { "OWNER", "PG_QUERY__TOKEN__OWNER", 559 }, { "PARALLEL", "PG_QUERY__TOKEN__PARALLEL", 560 }, { "PARAMETER", "PG_QUERY__TOKEN__PARAMETER", 561 }, { "PARSER", "PG_QUERY__TOKEN__PARSER", 562 }, { "PARTIAL", "PG_QUERY__TOKEN__PARTIAL", 563 }, { "PARTITION", "PG_QUERY__TOKEN__PARTITION", 564 }, { "PASSING", "PG_QUERY__TOKEN__PASSING", 565 }, { "PASSWORD", "PG_QUERY__TOKEN__PASSWORD", 566 }, { "PLACING", "PG_QUERY__TOKEN__PLACING", 567 }, { "PLANS", "PG_QUERY__TOKEN__PLANS", 568 }, { "POLICY", "PG_QUERY__TOKEN__POLICY", 569 }, { "POSITION", "PG_QUERY__TOKEN__POSITION", 570 }, { "PRECEDING", "PG_QUERY__TOKEN__PRECEDING", 571 }, { "PRECISION", "PG_QUERY__TOKEN__PRECISION", 572 }, { "PRESERVE", "PG_QUERY__TOKEN__PRESERVE", 573 }, { "PREPARE", "PG_QUERY__TOKEN__PREPARE", 574 }, { "PREPARED", "PG_QUERY__TOKEN__PREPARED", 575 }, { "PRIMARY", "PG_QUERY__TOKEN__PRIMARY", 576 }, { "PRIOR", "PG_QUERY__TOKEN__PRIOR", 577 }, { "PRIVILEGES", "PG_QUERY__TOKEN__PRIVILEGES", 578 }, { "PROCEDURAL", "PG_QUERY__TOKEN__PROCEDURAL", 579 }, { "PROCEDURE", "PG_QUERY__TOKEN__PROCEDURE", 580 }, { "PROCEDURES", "PG_QUERY__TOKEN__PROCEDURES", 581 }, { "PROGRAM", "PG_QUERY__TOKEN__PROGRAM", 582 }, { "PUBLICATION", "PG_QUERY__TOKEN__PUBLICATION", 583 }, { "QUOTE", "PG_QUERY__TOKEN__QUOTE", 584 }, { "RANGE", "PG_QUERY__TOKEN__RANGE", 585 }, { "READ", "PG_QUERY__TOKEN__READ", 586 }, { "REAL", "PG_QUERY__TOKEN__REAL", 587 }, { "REASSIGN", "PG_QUERY__TOKEN__REASSIGN", 588 }, { "RECHECK", "PG_QUERY__TOKEN__RECHECK", 589 }, { "RECURSIVE", "PG_QUERY__TOKEN__RECURSIVE", 590 }, { "REF_P", "PG_QUERY__TOKEN__REF_P", 591 }, { "REFERENCES", "PG_QUERY__TOKEN__REFERENCES", 592 }, { "REFERENCING", "PG_QUERY__TOKEN__REFERENCING", 593 }, { "REFRESH", "PG_QUERY__TOKEN__REFRESH", 594 }, { "REINDEX", "PG_QUERY__TOKEN__REINDEX", 595 }, { "RELATIVE_P", "PG_QUERY__TOKEN__RELATIVE_P", 596 }, { "RELEASE", "PG_QUERY__TOKEN__RELEASE", 597 }, { "RENAME", "PG_QUERY__TOKEN__RENAME", 598 }, { "REPEATABLE", "PG_QUERY__TOKEN__REPEATABLE", 599 }, { "REPLACE", "PG_QUERY__TOKEN__REPLACE", 600 }, { "REPLICA", "PG_QUERY__TOKEN__REPLICA", 601 }, { "RESET", "PG_QUERY__TOKEN__RESET", 602 }, { "RESTART", "PG_QUERY__TOKEN__RESTART", 603 }, { "RESTRICT", "PG_QUERY__TOKEN__RESTRICT", 604 }, { "RETURN", "PG_QUERY__TOKEN__RETURN", 605 }, { "RETURNING", "PG_QUERY__TOKEN__RETURNING", 606 }, { "RETURNS", "PG_QUERY__TOKEN__RETURNS", 607 }, { "REVOKE", "PG_QUERY__TOKEN__REVOKE", 608 }, { "RIGHT", "PG_QUERY__TOKEN__RIGHT", 609 }, { "ROLE", "PG_QUERY__TOKEN__ROLE", 610 }, { "ROLLBACK", "PG_QUERY__TOKEN__ROLLBACK", 611 }, { "ROLLUP", "PG_QUERY__TOKEN__ROLLUP", 612 }, { "ROUTINE", "PG_QUERY__TOKEN__ROUTINE", 613 }, { "ROUTINES", "PG_QUERY__TOKEN__ROUTINES", 614 }, { "ROW", "PG_QUERY__TOKEN__ROW", 615 }, { "ROWS", "PG_QUERY__TOKEN__ROWS", 616 }, { "RULE", "PG_QUERY__TOKEN__RULE", 617 }, { "SAVEPOINT", "PG_QUERY__TOKEN__SAVEPOINT", 618 }, { "SCHEMA", "PG_QUERY__TOKEN__SCHEMA", 619 }, { "SCHEMAS", "PG_QUERY__TOKEN__SCHEMAS", 620 }, { "SCROLL", "PG_QUERY__TOKEN__SCROLL", 621 }, { "SEARCH", "PG_QUERY__TOKEN__SEARCH", 622 }, { "SECOND_P", "PG_QUERY__TOKEN__SECOND_P", 623 }, { "SECURITY", "PG_QUERY__TOKEN__SECURITY", 624 }, { "SELECT", "PG_QUERY__TOKEN__SELECT", 625 }, { "SEQUENCE", "PG_QUERY__TOKEN__SEQUENCE", 626 }, { "SEQUENCES", "PG_QUERY__TOKEN__SEQUENCES", 627 }, { "SERIALIZABLE", "PG_QUERY__TOKEN__SERIALIZABLE", 628 }, { "SERVER", "PG_QUERY__TOKEN__SERVER", 629 }, { "SESSION", "PG_QUERY__TOKEN__SESSION", 630 }, { "SESSION_USER", "PG_QUERY__TOKEN__SESSION_USER", 631 }, { "SET", "PG_QUERY__TOKEN__SET", 632 }, { "SETS", "PG_QUERY__TOKEN__SETS", 633 }, { "SETOF", "PG_QUERY__TOKEN__SETOF", 634 }, { "SHARE", "PG_QUERY__TOKEN__SHARE", 635 }, { "SHOW", "PG_QUERY__TOKEN__SHOW", 636 }, { "SIMILAR", "PG_QUERY__TOKEN__SIMILAR", 637 }, { "SIMPLE", "PG_QUERY__TOKEN__SIMPLE", 638 }, { "SKIP", "PG_QUERY__TOKEN__SKIP", 639 }, { "SMALLINT", "PG_QUERY__TOKEN__SMALLINT", 640 }, { "SNAPSHOT", "PG_QUERY__TOKEN__SNAPSHOT", 641 }, { "SOME", "PG_QUERY__TOKEN__SOME", 642 }, { "SQL_P", "PG_QUERY__TOKEN__SQL_P", 643 }, { "STABLE", "PG_QUERY__TOKEN__STABLE", 644 }, { "STANDALONE_P", "PG_QUERY__TOKEN__STANDALONE_P", 645 }, { "START", "PG_QUERY__TOKEN__START", 646 }, { "STATEMENT", "PG_QUERY__TOKEN__STATEMENT", 647 }, { "STATISTICS", "PG_QUERY__TOKEN__STATISTICS", 648 }, { "STDIN", "PG_QUERY__TOKEN__STDIN", 649 }, { "STDOUT", "PG_QUERY__TOKEN__STDOUT", 650 }, { "STORAGE", "PG_QUERY__TOKEN__STORAGE", 651 }, { "STORED", "PG_QUERY__TOKEN__STORED", 652 }, { "STRICT_P", "PG_QUERY__TOKEN__STRICT_P", 653 }, { "STRIP_P", "PG_QUERY__TOKEN__STRIP_P", 654 }, { "SUBSCRIPTION", "PG_QUERY__TOKEN__SUBSCRIPTION", 655 }, { "SUBSTRING", "PG_QUERY__TOKEN__SUBSTRING", 656 }, { "SUPPORT", "PG_QUERY__TOKEN__SUPPORT", 657 }, { "SYMMETRIC", "PG_QUERY__TOKEN__SYMMETRIC", 658 }, { "SYSID", "PG_QUERY__TOKEN__SYSID", 659 }, { "SYSTEM_P", "PG_QUERY__TOKEN__SYSTEM_P", 660 }, { "TABLE", "PG_QUERY__TOKEN__TABLE", 661 }, { "TABLES", "PG_QUERY__TOKEN__TABLES", 662 }, { "TABLESAMPLE", "PG_QUERY__TOKEN__TABLESAMPLE", 663 }, { "TABLESPACE", "PG_QUERY__TOKEN__TABLESPACE", 664 }, { "TEMP", "PG_QUERY__TOKEN__TEMP", 665 }, { "TEMPLATE", "PG_QUERY__TOKEN__TEMPLATE", 666 }, { "TEMPORARY", "PG_QUERY__TOKEN__TEMPORARY", 667 }, { "TEXT_P", "PG_QUERY__TOKEN__TEXT_P", 668 }, { "THEN", "PG_QUERY__TOKEN__THEN", 669 }, { "TIES", "PG_QUERY__TOKEN__TIES", 670 }, { "TIME", "PG_QUERY__TOKEN__TIME", 671 }, { "TIMESTAMP", "PG_QUERY__TOKEN__TIMESTAMP", 672 }, { "TO", "PG_QUERY__TOKEN__TO", 673 }, { "TRAILING", "PG_QUERY__TOKEN__TRAILING", 674 }, { "TRANSACTION", "PG_QUERY__TOKEN__TRANSACTION", 675 }, { "TRANSFORM", "PG_QUERY__TOKEN__TRANSFORM", 676 }, { "TREAT", "PG_QUERY__TOKEN__TREAT", 677 }, { "TRIGGER", "PG_QUERY__TOKEN__TRIGGER", 678 }, { "TRIM", "PG_QUERY__TOKEN__TRIM", 679 }, { "TRUE_P", "PG_QUERY__TOKEN__TRUE_P", 680 }, { "TRUNCATE", "PG_QUERY__TOKEN__TRUNCATE", 681 }, { "TRUSTED", "PG_QUERY__TOKEN__TRUSTED", 682 }, { "TYPE_P", "PG_QUERY__TOKEN__TYPE_P", 683 }, { "TYPES_P", "PG_QUERY__TOKEN__TYPES_P", 684 }, { "UESCAPE", "PG_QUERY__TOKEN__UESCAPE", 685 }, { "UNBOUNDED", "PG_QUERY__TOKEN__UNBOUNDED", 686 }, { "UNCOMMITTED", "PG_QUERY__TOKEN__UNCOMMITTED", 687 }, { "UNENCRYPTED", "PG_QUERY__TOKEN__UNENCRYPTED", 688 }, { "UNION", "PG_QUERY__TOKEN__UNION", 689 }, { "UNIQUE", "PG_QUERY__TOKEN__UNIQUE", 690 }, { "UNKNOWN", "PG_QUERY__TOKEN__UNKNOWN", 691 }, { "UNLISTEN", "PG_QUERY__TOKEN__UNLISTEN", 692 }, { "UNLOGGED", "PG_QUERY__TOKEN__UNLOGGED", 693 }, { "UNTIL", "PG_QUERY__TOKEN__UNTIL", 694 }, { "UPDATE", "PG_QUERY__TOKEN__UPDATE", 695 }, { "USER", "PG_QUERY__TOKEN__USER", 696 }, { "USING", "PG_QUERY__TOKEN__USING", 697 }, { "VACUUM", "PG_QUERY__TOKEN__VACUUM", 698 }, { "VALID", "PG_QUERY__TOKEN__VALID", 699 }, { "VALIDATE", "PG_QUERY__TOKEN__VALIDATE", 700 }, { "VALIDATOR", "PG_QUERY__TOKEN__VALIDATOR", 701 }, { "VALUE_P", "PG_QUERY__TOKEN__VALUE_P", 702 }, { "VALUES", "PG_QUERY__TOKEN__VALUES", 703 }, { "VARCHAR", "PG_QUERY__TOKEN__VARCHAR", 704 }, { "VARIADIC", "PG_QUERY__TOKEN__VARIADIC", 705 }, { "VARYING", "PG_QUERY__TOKEN__VARYING", 706 }, { "VERBOSE", "PG_QUERY__TOKEN__VERBOSE", 707 }, { "VERSION_P", "PG_QUERY__TOKEN__VERSION_P", 708 }, { "VIEW", "PG_QUERY__TOKEN__VIEW", 709 }, { "VIEWS", "PG_QUERY__TOKEN__VIEWS", 710 }, { "VOLATILE", "PG_QUERY__TOKEN__VOLATILE", 711 }, { "WHEN", "PG_QUERY__TOKEN__WHEN", 712 }, { "WHERE", "PG_QUERY__TOKEN__WHERE", 713 }, { "WHITESPACE_P", "PG_QUERY__TOKEN__WHITESPACE_P", 714 }, { "WINDOW", "PG_QUERY__TOKEN__WINDOW", 715 }, { "WITH", "PG_QUERY__TOKEN__WITH", 716 }, { "WITHIN", "PG_QUERY__TOKEN__WITHIN", 717 }, { "WITHOUT", "PG_QUERY__TOKEN__WITHOUT", 718 }, { "WORK", "PG_QUERY__TOKEN__WORK", 719 }, { "WRAPPER", "PG_QUERY__TOKEN__WRAPPER", 720 }, { "WRITE", "PG_QUERY__TOKEN__WRITE", 721 }, { "XML_P", "PG_QUERY__TOKEN__XML_P", 722 }, { "XMLATTRIBUTES", "PG_QUERY__TOKEN__XMLATTRIBUTES", 723 }, { "XMLCONCAT", "PG_QUERY__TOKEN__XMLCONCAT", 724 }, { "XMLELEMENT", "PG_QUERY__TOKEN__XMLELEMENT", 725 }, { "XMLEXISTS", "PG_QUERY__TOKEN__XMLEXISTS", 726 }, { "XMLFOREST", "PG_QUERY__TOKEN__XMLFOREST", 727 }, { "XMLNAMESPACES", "PG_QUERY__TOKEN__XMLNAMESPACES", 728 }, { "XMLPARSE", "PG_QUERY__TOKEN__XMLPARSE", 729 }, { "XMLPI", "PG_QUERY__TOKEN__XMLPI", 730 }, { "XMLROOT", "PG_QUERY__TOKEN__XMLROOT", 731 }, { "XMLSERIALIZE", "PG_QUERY__TOKEN__XMLSERIALIZE", 732 }, { "XMLTABLE", "PG_QUERY__TOKEN__XMLTABLE", 733 }, { "YEAR_P", "PG_QUERY__TOKEN__YEAR_P", 734 }, { "YES_P", "PG_QUERY__TOKEN__YES_P", 735 }, { "ZONE", "PG_QUERY__TOKEN__ZONE", 736 }, { "NOT_LA", "PG_QUERY__TOKEN__NOT_LA", 737 }, { "NULLS_LA", "PG_QUERY__TOKEN__NULLS_LA", 738 }, { "WITH_LA", "PG_QUERY__TOKEN__WITH_LA", 739 }, { "MODE_TYPE_NAME", "PG_QUERY__TOKEN__MODE_TYPE_NAME", 740 }, { "MODE_PLPGSQL_EXPR", "PG_QUERY__TOKEN__MODE_PLPGSQL_EXPR", 741 }, { "MODE_PLPGSQL_ASSIGN1", "PG_QUERY__TOKEN__MODE_PLPGSQL_ASSIGN1", 742 }, { "MODE_PLPGSQL_ASSIGN2", "PG_QUERY__TOKEN__MODE_PLPGSQL_ASSIGN2", 743 }, { "MODE_PLPGSQL_ASSIGN3", "PG_QUERY__TOKEN__MODE_PLPGSQL_ASSIGN3", 744 }, { "UMINUS", "PG_QUERY__TOKEN__UMINUS", 745 }, }; static const ProtobufCIntRange pg_query__token__value_ranges[] = { {0, 0},{37, 1},{40, 2},{58, 10},{91, 16},{258, 20},{0, 508} }; static const ProtobufCEnumValueIndex pg_query__token__enum_values_by_name[508] = { { "ABORT_P", 39 }, { "ABSOLUTE_P", 40 }, { "ACCESS", 41 }, { "ACTION", 42 }, { "ADD_P", 43 }, { "ADMIN", 44 }, { "AFTER", 45 }, { "AGGREGATE", 46 }, { "ALL", 47 }, { "ALSO", 48 }, { "ALTER", 49 }, { "ALWAYS", 50 }, { "ANALYSE", 51 }, { "ANALYZE", 52 }, { "AND", 53 }, { "ANY", 54 }, { "ARRAY", 55 }, { "AS", 56 }, { "ASC", 57 }, { "ASCII_37", 1 }, { "ASCII_40", 2 }, { "ASCII_41", 3 }, { "ASCII_42", 4 }, { "ASCII_43", 5 }, { "ASCII_44", 6 }, { "ASCII_45", 7 }, { "ASCII_46", 8 }, { "ASCII_47", 9 }, { "ASCII_58", 10 }, { "ASCII_59", 11 }, { "ASCII_60", 12 }, { "ASCII_61", 13 }, { "ASCII_62", 14 }, { "ASCII_63", 15 }, { "ASCII_91", 16 }, { "ASCII_92", 17 }, { "ASCII_93", 18 }, { "ASCII_94", 19 }, { "ASENSITIVE", 58 }, { "ASSERTION", 59 }, { "ASSIGNMENT", 60 }, { "ASYMMETRIC", 61 }, { "AT", 63 }, { "ATOMIC", 62 }, { "ATTACH", 64 }, { "ATTRIBUTE", 65 }, { "AUTHORIZATION", 66 }, { "BACKWARD", 67 }, { "BCONST", 25 }, { "BEFORE", 68 }, { "BEGIN_P", 69 }, { "BETWEEN", 70 }, { "BIGINT", 71 }, { "BINARY", 72 }, { "BIT", 73 }, { "BOOLEAN_P", 74 }, { "BOTH", 75 }, { "BREADTH", 76 }, { "BY", 77 }, { "CACHE", 78 }, { "CALL", 79 }, { "CALLED", 80 }, { "CASCADE", 81 }, { "CASCADED", 82 }, { "CASE", 83 }, { "CAST", 84 }, { "CATALOG_P", 85 }, { "CHAIN", 86 }, { "CHARACTER", 88 }, { "CHARACTERISTICS", 89 }, { "CHAR_P", 87 }, { "CHECK", 90 }, { "CHECKPOINT", 91 }, { "CLASS", 92 }, { "CLOSE", 93 }, { "CLUSTER", 94 }, { "COALESCE", 95 }, { "COLLATE", 96 }, { "COLLATION", 97 }, { "COLON_EQUALS", 32 }, { "COLUMN", 98 }, { "COLUMNS", 99 }, { "COMMENT", 100 }, { "COMMENTS", 101 }, { "COMMIT", 102 }, { "COMMITTED", 103 }, { "COMPRESSION", 104 }, { "CONCURRENTLY", 105 }, { "CONFIGURATION", 106 }, { "CONFLICT", 107 }, { "CONNECTION", 108 }, { "CONSTRAINT", 109 }, { "CONSTRAINTS", 110 }, { "CONTENT_P", 111 }, { "CONTINUE_P", 112 }, { "CONVERSION_P", 113 }, { "COPY", 114 }, { "COST", 115 }, { "CREATE", 116 }, { "CROSS", 117 }, { "CSV", 118 }, { "CUBE", 119 }, { "CURRENT_CATALOG", 121 }, { "CURRENT_DATE", 122 }, { "CURRENT_P", 120 }, { "CURRENT_ROLE", 123 }, { "CURRENT_SCHEMA", 124 }, { "CURRENT_TIME", 125 }, { "CURRENT_TIMESTAMP", 126 }, { "CURRENT_USER", 127 }, { "CURSOR", 128 }, { "CYCLE", 129 }, { "C_COMMENT", 38 }, { "DATABASE", 131 }, { "DATA_P", 130 }, { "DAY_P", 132 }, { "DEALLOCATE", 133 }, { "DEC", 134 }, { "DECIMAL_P", 135 }, { "DECLARE", 136 }, { "DEFAULT", 137 }, { "DEFAULTS", 138 }, { "DEFERRABLE", 139 }, { "DEFERRED", 140 }, { "DEFINER", 141 }, { "DELETE_P", 142 }, { "DELIMITER", 143 }, { "DELIMITERS", 144 }, { "DEPENDS", 145 }, { "DEPTH", 146 }, { "DESC", 147 }, { "DETACH", 148 }, { "DICTIONARY", 149 }, { "DISABLE_P", 150 }, { "DISCARD", 151 }, { "DISTINCT", 152 }, { "DO", 153 }, { "DOCUMENT_P", 154 }, { "DOMAIN_P", 155 }, { "DOT_DOT", 31 }, { "DOUBLE_P", 156 }, { "DROP", 157 }, { "EACH", 158 }, { "ELSE", 159 }, { "ENABLE_P", 160 }, { "ENCODING", 161 }, { "ENCRYPTED", 162 }, { "END_P", 163 }, { "ENUM_P", 164 }, { "EQUALS_GREATER", 33 }, { "ESCAPE", 165 }, { "EVENT", 166 }, { "EXCEPT", 167 }, { "EXCLUDE", 168 }, { "EXCLUDING", 169 }, { "EXCLUSIVE", 170 }, { "EXECUTE", 171 }, { "EXISTS", 172 }, { "EXPLAIN", 173 }, { "EXPRESSION", 174 }, { "EXTENSION", 175 }, { "EXTERNAL", 176 }, { "EXTRACT", 177 }, { "FALSE_P", 178 }, { "FAMILY", 179 }, { "FCONST", 22 }, { "FETCH", 180 }, { "FILTER", 181 }, { "FINALIZE", 182 }, { "FIRST_P", 183 }, { "FLOAT_P", 184 }, { "FOLLOWING", 185 }, { "FOR", 186 }, { "FORCE", 187 }, { "FOREIGN", 188 }, { "FORWARD", 189 }, { "FREEZE", 190 }, { "FROM", 191 }, { "FULL", 192 }, { "FUNCTION", 193 }, { "FUNCTIONS", 194 }, { "GENERATED", 195 }, { "GLOBAL", 196 }, { "GRANT", 197 }, { "GRANTED", 198 }, { "GREATER_EQUALS", 35 }, { "GREATEST", 199 }, { "GROUPING", 201 }, { "GROUPS", 202 }, { "GROUP_P", 200 }, { "HANDLER", 203 }, { "HAVING", 204 }, { "HEADER_P", 205 }, { "HOLD", 206 }, { "HOUR_P", 207 }, { "ICONST", 28 }, { "IDENT", 20 }, { "IDENTITY_P", 208 }, { "IF_P", 209 }, { "ILIKE", 210 }, { "IMMEDIATE", 211 }, { "IMMUTABLE", 212 }, { "IMPLICIT_P", 213 }, { "IMPORT_P", 214 }, { "INCLUDE", 216 }, { "INCLUDING", 217 }, { "INCREMENT", 218 }, { "INDEX", 219 }, { "INDEXES", 220 }, { "INHERIT", 221 }, { "INHERITS", 222 }, { "INITIALLY", 223 }, { "INLINE_P", 224 }, { "INNER_P", 225 }, { "INOUT", 226 }, { "INPUT_P", 227 }, { "INSENSITIVE", 228 }, { "INSERT", 229 }, { "INSTEAD", 230 }, { "INTEGER", 232 }, { "INTERSECT", 233 }, { "INTERVAL", 234 }, { "INTO", 235 }, { "INT_P", 231 }, { "INVOKER", 236 }, { "IN_P", 215 }, { "IS", 237 }, { "ISNULL", 238 }, { "ISOLATION", 239 }, { "JOIN", 240 }, { "KEY", 241 }, { "LABEL", 242 }, { "LANGUAGE", 243 }, { "LARGE_P", 244 }, { "LAST_P", 245 }, { "LATERAL_P", 246 }, { "LEADING", 247 }, { "LEAKPROOF", 248 }, { "LEAST", 249 }, { "LEFT", 250 }, { "LESS_EQUALS", 34 }, { "LEVEL", 251 }, { "LIKE", 252 }, { "LIMIT", 253 }, { "LISTEN", 254 }, { "LOAD", 255 }, { "LOCAL", 256 }, { "LOCALTIME", 257 }, { "LOCALTIMESTAMP", 258 }, { "LOCATION", 259 }, { "LOCKED", 261 }, { "LOCK_P", 260 }, { "LOGGED", 262 }, { "MAPPING", 263 }, { "MATCH", 264 }, { "MATCHED", 265 }, { "MATERIALIZED", 266 }, { "MAXVALUE", 267 }, { "MERGE", 268 }, { "METHOD", 269 }, { "MINUTE_P", 270 }, { "MINVALUE", 271 }, { "MODE", 272 }, { "MODE_PLPGSQL_ASSIGN1", 504 }, { "MODE_PLPGSQL_ASSIGN2", 505 }, { "MODE_PLPGSQL_ASSIGN3", 506 }, { "MODE_PLPGSQL_EXPR", 503 }, { "MODE_TYPE_NAME", 502 }, { "MONTH_P", 273 }, { "MOVE", 274 }, { "NAMES", 276 }, { "NAME_P", 275 }, { "NATIONAL", 277 }, { "NATURAL", 278 }, { "NCHAR", 279 }, { "NEW", 280 }, { "NEXT", 281 }, { "NFC", 282 }, { "NFD", 283 }, { "NFKC", 284 }, { "NFKD", 285 }, { "NO", 286 }, { "NONE", 287 }, { "NORMALIZE", 288 }, { "NORMALIZED", 289 }, { "NOT", 290 }, { "NOTHING", 291 }, { "NOTIFY", 292 }, { "NOTNULL", 293 }, { "NOT_EQUALS", 36 }, { "NOT_LA", 499 }, { "NOWAIT", 294 }, { "NUL", 0 }, { "NULLIF", 296 }, { "NULLS_LA", 500 }, { "NULLS_P", 297 }, { "NULL_P", 295 }, { "NUMERIC", 298 }, { "OBJECT_P", 299 }, { "OF", 300 }, { "OFF", 301 }, { "OFFSET", 302 }, { "OIDS", 303 }, { "OLD", 304 }, { "ON", 305 }, { "ONLY", 306 }, { "OPERATOR", 307 }, { "OPTION", 308 }, { "OPTIONS", 309 }, { "OR", 310 }, { "ORDER", 311 }, { "ORDINALITY", 312 }, { "OTHERS", 313 }, { "OUTER_P", 315 }, { "OUT_P", 314 }, { "OVER", 316 }, { "OVERLAPS", 317 }, { "OVERLAY", 318 }, { "OVERRIDING", 319 }, { "OWNED", 320 }, { "OWNER", 321 }, { "Op", 27 }, { "PARALLEL", 322 }, { "PARAM", 29 }, { "PARAMETER", 323 }, { "PARSER", 324 }, { "PARTIAL", 325 }, { "PARTITION", 326 }, { "PASSING", 327 }, { "PASSWORD", 328 }, { "PLACING", 329 }, { "PLANS", 330 }, { "POLICY", 331 }, { "POSITION", 332 }, { "PRECEDING", 333 }, { "PRECISION", 334 }, { "PREPARE", 336 }, { "PREPARED", 337 }, { "PRESERVE", 335 }, { "PRIMARY", 338 }, { "PRIOR", 339 }, { "PRIVILEGES", 340 }, { "PROCEDURAL", 341 }, { "PROCEDURE", 342 }, { "PROCEDURES", 343 }, { "PROGRAM", 344 }, { "PUBLICATION", 345 }, { "QUOTE", 346 }, { "RANGE", 347 }, { "READ", 348 }, { "REAL", 349 }, { "REASSIGN", 350 }, { "RECHECK", 351 }, { "RECURSIVE", 352 }, { "REFERENCES", 354 }, { "REFERENCING", 355 }, { "REFRESH", 356 }, { "REF_P", 353 }, { "REINDEX", 357 }, { "RELATIVE_P", 358 }, { "RELEASE", 359 }, { "RENAME", 360 }, { "REPEATABLE", 361 }, { "REPLACE", 362 }, { "REPLICA", 363 }, { "RESET", 364 }, { "RESTART", 365 }, { "RESTRICT", 366 }, { "RETURN", 367 }, { "RETURNING", 368 }, { "RETURNS", 369 }, { "REVOKE", 370 }, { "RIGHT", 371 }, { "ROLE", 372 }, { "ROLLBACK", 373 }, { "ROLLUP", 374 }, { "ROUTINE", 375 }, { "ROUTINES", 376 }, { "ROW", 377 }, { "ROWS", 378 }, { "RULE", 379 }, { "SAVEPOINT", 380 }, { "SCHEMA", 381 }, { "SCHEMAS", 382 }, { "SCONST", 23 }, { "SCROLL", 383 }, { "SEARCH", 384 }, { "SECOND_P", 385 }, { "SECURITY", 386 }, { "SELECT", 387 }, { "SEQUENCE", 388 }, { "SEQUENCES", 389 }, { "SERIALIZABLE", 390 }, { "SERVER", 391 }, { "SESSION", 392 }, { "SESSION_USER", 393 }, { "SET", 394 }, { "SETOF", 396 }, { "SETS", 395 }, { "SHARE", 397 }, { "SHOW", 398 }, { "SIMILAR", 399 }, { "SIMPLE", 400 }, { "SKIP", 401 }, { "SMALLINT", 402 }, { "SNAPSHOT", 403 }, { "SOME", 404 }, { "SQL_COMMENT", 37 }, { "SQL_P", 405 }, { "STABLE", 406 }, { "STANDALONE_P", 407 }, { "START", 408 }, { "STATEMENT", 409 }, { "STATISTICS", 410 }, { "STDIN", 411 }, { "STDOUT", 412 }, { "STORAGE", 413 }, { "STORED", 414 }, { "STRICT_P", 415 }, { "STRIP_P", 416 }, { "SUBSCRIPTION", 417 }, { "SUBSTRING", 418 }, { "SUPPORT", 419 }, { "SYMMETRIC", 420 }, { "SYSID", 421 }, { "SYSTEM_P", 422 }, { "TABLE", 423 }, { "TABLES", 424 }, { "TABLESAMPLE", 425 }, { "TABLESPACE", 426 }, { "TEMP", 427 }, { "TEMPLATE", 428 }, { "TEMPORARY", 429 }, { "TEXT_P", 430 }, { "THEN", 431 }, { "TIES", 432 }, { "TIME", 433 }, { "TIMESTAMP", 434 }, { "TO", 435 }, { "TRAILING", 436 }, { "TRANSACTION", 437 }, { "TRANSFORM", 438 }, { "TREAT", 439 }, { "TRIGGER", 440 }, { "TRIM", 441 }, { "TRUE_P", 442 }, { "TRUNCATE", 443 }, { "TRUSTED", 444 }, { "TYPECAST", 30 }, { "TYPES_P", 446 }, { "TYPE_P", 445 }, { "UESCAPE", 447 }, { "UIDENT", 21 }, { "UMINUS", 507 }, { "UNBOUNDED", 448 }, { "UNCOMMITTED", 449 }, { "UNENCRYPTED", 450 }, { "UNION", 451 }, { "UNIQUE", 452 }, { "UNKNOWN", 453 }, { "UNLISTEN", 454 }, { "UNLOGGED", 455 }, { "UNTIL", 456 }, { "UPDATE", 457 }, { "USCONST", 24 }, { "USER", 458 }, { "USING", 459 }, { "VACUUM", 460 }, { "VALID", 461 }, { "VALIDATE", 462 }, { "VALIDATOR", 463 }, { "VALUES", 465 }, { "VALUE_P", 464 }, { "VARCHAR", 466 }, { "VARIADIC", 467 }, { "VARYING", 468 }, { "VERBOSE", 469 }, { "VERSION_P", 470 }, { "VIEW", 471 }, { "VIEWS", 472 }, { "VOLATILE", 473 }, { "WHEN", 474 }, { "WHERE", 475 }, { "WHITESPACE_P", 476 }, { "WINDOW", 477 }, { "WITH", 478 }, { "WITHIN", 479 }, { "WITHOUT", 480 }, { "WITH_LA", 501 }, { "WORK", 481 }, { "WRAPPER", 482 }, { "WRITE", 483 }, { "XCONST", 26 }, { "XMLATTRIBUTES", 485 }, { "XMLCONCAT", 486 }, { "XMLELEMENT", 487 }, { "XMLEXISTS", 488 }, { "XMLFOREST", 489 }, { "XMLNAMESPACES", 490 }, { "XMLPARSE", 491 }, { "XMLPI", 492 }, { "XMLROOT", 493 }, { "XMLSERIALIZE", 494 }, { "XMLTABLE", 495 }, { "XML_P", 484 }, { "YEAR_P", 496 }, { "YES_P", 497 }, { "ZONE", 498 }, }; const ProtobufCEnumDescriptor pg_query__token__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.Token", "Token", "PgQuery__Token", "pg_query", 508, pg_query__token__enum_values_by_number, 508, pg_query__token__enum_values_by_name, 6, pg_query__token__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; pg_query-4.2.3/ext/pg_query/src_common_stringinfo.c0000644000004100000410000002077414510636647022631 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/common/stringinfo.c * *------------------------------------------------------------------------- */ #ifndef FRONTEND #include "postgres.h" #include "utils/memutils.h" #else #include "postgres_fe.h" /* It's possible we could use a different value for this in frontend code */ #define MaxAllocSize ((Size) 0x3fffffff) /* 1 gigabyte - 1 */ #endif #include "lib/stringinfo.h" /* * makeStringInfo * * Create an empty 'StringInfoData' & return a pointer to it. */ /* * initStringInfo * * Initialize a StringInfoData struct (with previously undefined contents) * to describe an empty string. */ void initStringInfo(StringInfo str) { int size = 1024; /* initial default buffer size */ str->data = (char *) palloc(size); str->maxlen = size; resetStringInfo(str); } /* * resetStringInfo * * Reset the StringInfo: the data buffer remains valid, but its * previous content, if any, is cleared. */ void resetStringInfo(StringInfo str) { str->data[0] = '\0'; str->len = 0; str->cursor = 0; } /* * appendStringInfo * * Format text data under the control of fmt (an sprintf-style format string) * and append it to whatever is already in str. More space is allocated * to str if necessary. This is sort of like a combination of sprintf and * strcat. */ void appendStringInfo(StringInfo str, const char *fmt,...) { int save_errno = errno; for (;;) { va_list args; int needed; /* Try to format the data. */ errno = save_errno; va_start(args, fmt); needed = appendStringInfoVA(str, fmt, args); va_end(args); if (needed == 0) break; /* success */ /* Increase the buffer size and try again. */ enlargeStringInfo(str, needed); } } /* * appendStringInfoVA * * Attempt to format text data under the control of fmt (an sprintf-style * format string) and append it to whatever is already in str. If successful * return zero; if not (because there's not enough space), return an estimate * of the space needed, without modifying str. Typically the caller should * pass the return value to enlargeStringInfo() before trying again; see * appendStringInfo for standard usage pattern. * * Caution: callers must be sure to preserve their entry-time errno * when looping, in case the fmt contains "%m". * * XXX This API is ugly, but there seems no alternative given the C spec's * restrictions on what can portably be done with va_list arguments: you have * to redo va_start before you can rescan the argument list, and we can't do * that from here. */ int appendStringInfoVA(StringInfo str, const char *fmt, va_list args) { int avail; size_t nprinted; Assert(str != NULL); /* * If there's hardly any space, don't bother trying, just fail to make the * caller enlarge the buffer first. We have to guess at how much to * enlarge, since we're skipping the formatting work. */ avail = str->maxlen - str->len; if (avail < 16) return 32; nprinted = pvsnprintf(str->data + str->len, (size_t) avail, fmt, args); if (nprinted < (size_t) avail) { /* Success. Note nprinted does not include trailing null. */ str->len += (int) nprinted; return 0; } /* Restore the trailing null so that str is unmodified. */ str->data[str->len] = '\0'; /* * Return pvsnprintf's estimate of the space needed. (Although this is * given as a size_t, we know it will fit in int because it's not more * than MaxAllocSize.) */ return (int) nprinted; } /* * appendStringInfoString * * Append a null-terminated string to str. * Like appendStringInfo(str, "%s", s) but faster. */ void appendStringInfoString(StringInfo str, const char *s) { appendBinaryStringInfo(str, s, strlen(s)); } /* * appendStringInfoChar * * Append a single byte to str. * Like appendStringInfo(str, "%c", ch) but much faster. */ void appendStringInfoChar(StringInfo str, char ch) { /* Make more room if needed */ if (str->len + 1 >= str->maxlen) enlargeStringInfo(str, 1); /* OK, append the character */ str->data[str->len] = ch; str->len++; str->data[str->len] = '\0'; } /* * appendStringInfoSpaces * * Append the specified number of spaces to a buffer. */ void appendStringInfoSpaces(StringInfo str, int count) { if (count > 0) { /* Make more room if needed */ enlargeStringInfo(str, count); /* OK, append the spaces */ while (--count >= 0) str->data[str->len++] = ' '; str->data[str->len] = '\0'; } } /* * appendBinaryStringInfo * * Append arbitrary binary data to a StringInfo, allocating more space * if necessary. Ensures that a trailing null byte is present. */ void appendBinaryStringInfo(StringInfo str, const char *data, int datalen) { Assert(str != NULL); /* Make more room if needed */ enlargeStringInfo(str, datalen); /* OK, append the data */ memcpy(str->data + str->len, data, datalen); str->len += datalen; /* * Keep a trailing null in place, even though it's probably useless for * binary data. (Some callers are dealing with text but call this because * their input isn't null-terminated.) */ str->data[str->len] = '\0'; } /* * appendBinaryStringInfoNT * * Append arbitrary binary data to a StringInfo, allocating more space * if necessary. Does not ensure a trailing null-byte exists. */ /* * enlargeStringInfo * * Make sure there is enough space for 'needed' more bytes * ('needed' does not include the terminating null). * * External callers usually need not concern themselves with this, since * all stringinfo.c routines do it automatically. However, if a caller * knows that a StringInfo will eventually become X bytes large, it * can save some palloc overhead by enlarging the buffer before starting * to store data in it. * * NB: In the backend, because we use repalloc() to enlarge the buffer, the * string buffer will remain allocated in the same memory context that was * current when initStringInfo was called, even if another context is now * current. This is the desired and indeed critical behavior! */ void enlargeStringInfo(StringInfo str, int needed) { int newlen; /* * Guard against out-of-range "needed" values. Without this, we can get * an overflow or infinite loop in the following. */ if (needed < 0) /* should not happen */ { #ifndef FRONTEND elog(ERROR, "invalid string enlargement request size: %d", needed); #else fprintf(stderr, "invalid string enlargement request size: %d\n", needed); exit(EXIT_FAILURE); #endif } if (((Size) needed) >= (MaxAllocSize - (Size) str->len)) { #ifndef FRONTEND ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("out of memory"), errdetail("Cannot enlarge string buffer containing %d bytes by %d more bytes.", str->len, needed))); #else fprintf(stderr, _("out of memory\n\nCannot enlarge string buffer containing %d bytes by %d more bytes.\n"), str->len, needed); exit(EXIT_FAILURE); #endif } needed += str->len + 1; /* total space required now */ /* Because of the above test, we now have needed <= MaxAllocSize */ if (needed <= str->maxlen) return; /* got enough space already */ /* * We don't want to allocate just a little more space with each append; * for efficiency, double the buffer size each time it overflows. * Actually, we might need to more than double it if 'needed' is big... */ newlen = 2 * str->maxlen; while (needed > newlen) newlen = 2 * newlen; /* * Clamp to MaxAllocSize in case we went past it. Note we are assuming * here that MaxAllocSize <= INT_MAX/2, else the above loop could * overflow. We will still have newlen >= needed. */ if (newlen > (int) MaxAllocSize) newlen = (int) MaxAllocSize; str->data = (char *) repalloc(str->data, newlen); str->maxlen = newlen; } pg_query-4.2.3/ext/pg_query/src_common_string.c0000644000004100000410000000454214510636647021750 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - strtoint *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * string.c * string handling helpers * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/common/string.c * *------------------------------------------------------------------------- */ #ifndef FRONTEND #include "postgres.h" #else #include "postgres_fe.h" #endif #include "common/string.h" /* * Returns whether the string `str' has the postfix `end'. */ /* * strtoint --- just like strtol, but returns int not long */ int strtoint(const char *pg_restrict str, char **pg_restrict endptr, int base) { long val; val = strtol(str, endptr, base); if (val != (int) val) errno = ERANGE; return (int) val; } /* * pg_clean_ascii -- Replace any non-ASCII chars with a '?' char * * Modifies the string passed in which must be '\0'-terminated. * * This function exists specifically to deal with filtering out * non-ASCII characters in a few places where the client can provide an almost * arbitrary string (and it isn't checked to ensure it's a valid username or * database name or similar) and we don't want to have control characters or other * things ending up in the log file where server admins might end up with a * messed up terminal when looking at them. * * In general, this function should NOT be used- instead, consider how to handle * the string without needing to filter out the non-ASCII characters. * * Ultimately, we'd like to improve the situation to not require stripping out * all non-ASCII but perform more intelligent filtering which would allow UTF or * similar, but it's unclear exactly what we should allow, so stick to ASCII only * for now. */ /* * pg_is_ascii -- Check if string is made only of ASCII characters */ /* * pg_strip_crlf -- Remove any trailing newline and carriage return * * Removes any trailing newline and carriage return characters (\r on * Windows) in the input string, zero-terminating it. * * The passed in string must be zero-terminated. This function returns * the new length of the string. */ pg_query-4.2.3/ext/pg_query/src_backend_postmaster_postmaster.c0000644000004100000410000017072114510636647025226 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - ClientAuthInProgress *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * postmaster.c * This program acts as a clearing house for requests to the * POSTGRES system. Frontend programs send a startup message * to the Postmaster and the postmaster uses the info in the * message to setup a backend process. * * The postmaster also manages system-wide operations such as * startup and shutdown. The postmaster itself doesn't do those * operations, mind you --- it just forks off a subprocess to do them * at the right times. It also takes care of resetting the system * if a backend crashes. * * The postmaster process creates the shared memory and semaphore * pools during startup, but as a rule does not touch them itself. * In particular, it is not a member of the PGPROC array of backends * and so it cannot participate in lock-manager operations. Keeping * the postmaster away from shared memory operations makes it simpler * and more reliable. The postmaster is almost always able to recover * from crashes of individual backends by resetting shared memory; * if it did much with shared memory then it would be prone to crashing * along with the backends. * * When a request message is received, we now fork() immediately. * The child process performs authentication of the request, and * then becomes a backend if successful. This allows the auth code * to be written in a simple single-threaded style (as opposed to the * crufty "poor man's multitasking" code that used to be needed). * More importantly, it ensures that blockages in non-multithreaded * libraries like SSL or PAM cannot cause denial of service to other * clients. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/postmaster/postmaster.c * * NOTES * * Initialization: * The Postmaster sets up shared memory data structures * for the backends. * * Synchronization: * The Postmaster shares memory with the backends but should avoid * touching shared memory, so as not to become stuck if a crashing * backend screws up locks or shared memory. Likewise, the Postmaster * should never block on messages from frontend clients. * * Garbage Collection: * The Postmaster cleans up after backends if they have an emergency * exit and/or core dump. * * Error Reporting: * Use write_stderr() only for reporting "interactive" errors * (essentially, bogus arguments on the command line). Once the * postmaster is launched, use ereport(). * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_SYS_SELECT_H #include #endif #ifdef USE_BONJOUR #include #endif #ifdef USE_SYSTEMD #include #endif #ifdef HAVE_PTHREAD_IS_THREADED_NP #include #endif #include "access/transam.h" #include "access/xlog.h" #include "access/xlogrecovery.h" #include "catalog/pg_control.h" #include "common/file_perm.h" #include "common/ip.h" #include "common/pg_prng.h" #include "common/string.h" #include "lib/ilist.h" #include "libpq/auth.h" #include "libpq/libpq.h" #include "libpq/pqformat.h" #include "libpq/pqsignal.h" #include "pg_getopt.h" #include "pgstat.h" #include "port/pg_bswap.h" #include "postmaster/autovacuum.h" #include "postmaster/auxprocess.h" #include "postmaster/bgworker_internals.h" #include "postmaster/fork_process.h" #include "postmaster/interrupt.h" #include "postmaster/pgarch.h" #include "postmaster/postmaster.h" #include "postmaster/syslogger.h" #include "replication/logicallauncher.h" #include "replication/walsender.h" #include "storage/fd.h" #include "storage/ipc.h" #include "storage/pg_shmem.h" #include "storage/pmsignal.h" #include "storage/proc.h" #include "tcop/tcopprot.h" #include "utils/builtins.h" #include "utils/datetime.h" #include "utils/memutils.h" #include "utils/pidfile.h" #include "utils/ps_status.h" #include "utils/queryjumble.h" #include "utils/timeout.h" #include "utils/timestamp.h" #include "utils/varlena.h" #ifdef EXEC_BACKEND #include "storage/spin.h" #endif /* * Possible types of a backend. Beyond being the possible bkend_type values in * struct bkend, these are OR-able request flag bits for SignalSomeChildren() * and CountChildren(). */ #define BACKEND_TYPE_NORMAL 0x0001 /* normal backend */ #define BACKEND_TYPE_AUTOVAC 0x0002 /* autovacuum worker process */ #define BACKEND_TYPE_WALSND 0x0004 /* walsender process */ #define BACKEND_TYPE_BGWORKER 0x0008 /* bgworker process */ #define BACKEND_TYPE_ALL 0x000F /* OR of all the above */ /* * List of active backends (or child processes anyway; we don't actually * know whether a given child has become a backend or is still in the * authorization phase). This is used mainly to keep track of how many * children we have and send them appropriate signals when necessary. * * As shown in the above set of backend types, this list includes not only * "normal" client sessions, but also autovacuum workers, walsenders, and * background workers. (Note that at the time of launch, walsenders are * labeled BACKEND_TYPE_NORMAL; we relabel them to BACKEND_TYPE_WALSND * upon noticing they've changed their PMChildFlags entry. Hence that check * must be done before any operation that needs to distinguish walsenders * from normal backends.) * * Also, "dead_end" children are in it: these are children launched just for * the purpose of sending a friendly rejection message to a would-be client. * We must track them because they are attached to shared memory, but we know * they will never become live backends. dead_end children are not assigned a * PMChildSlot. dead_end children have bkend_type NORMAL. * * "Special" children such as the startup, bgwriter and autovacuum launcher * tasks are not in this list. They are tracked via StartupPID and other * pid_t variables below. (Thus, there can't be more than one of any given * "special" child process type. We use BackendList entries for any child * process there can be more than one of.) */ typedef struct bkend { pid_t pid; /* process id of backend */ int32 cancel_key; /* cancel key for cancels for this backend */ int child_slot; /* PMChildSlot for this backend, if any */ int bkend_type; /* child process flavor, see above */ bool dead_end; /* is it going to send an error and quit? */ bool bgworker_notify; /* gets bgworker start/stop notifications */ dlist_node elem; /* list link in BackendList */ } Backend; #ifdef EXEC_BACKEND static Backend *ShmemBackendArray; #endif /* The socket number we are listening for connections on */ /* The directory names for Unix socket(s) */ /* The TCP listen address(es) */ /* * ReservedBackends is the number of backends reserved for superuser use. * This number is taken out of the pool size given by MaxConnections so * number of backend slots available to non-superusers is * (MaxConnections - ReservedBackends). Note what this really means is * "if there are <= ReservedBackends connections available, only superusers * can make new connections" --- pre-existing superuser connections don't * count against the limit. */ /* The socket(s) we're listening to. */ #define MAXLISTEN 64 /* * These globals control the behavior of the postmaster in case some * backend dumps core. Normally, it kills all peers of the dead backend * and reinitializes shared memory. By specifying -s or -n, we can have * the postmaster stop (rather than kill) peers and not reinitialize * shared data structures. (Reinit is currently dead code, though.) */ /* still more option variables */ /* for ps display and logging */ /* PIDs of special child processes; 0 when not running */ /* Startup process's status */ typedef enum { STARTUP_NOT_RUNNING, STARTUP_RUNNING, STARTUP_SIGNALED, /* we sent it a SIGQUIT or SIGKILL */ STARTUP_CRASHED } StartupStatusEnum; /* Startup/shutdown state */ #define NoShutdown 0 #define SmartShutdown 1 #define FastShutdown 2 #define ImmediateShutdown 3 /* T if recovering from backend crash */ /* * We use a simple state machine to control startup, shutdown, and * crash recovery (which is rather like shutdown followed by startup). * * After doing all the postmaster initialization work, we enter PM_STARTUP * state and the startup process is launched. The startup process begins by * reading the control file and other preliminary initialization steps. * In a normal startup, or after crash recovery, the startup process exits * with exit code 0 and we switch to PM_RUN state. However, archive recovery * is handled specially since it takes much longer and we would like to support * hot standby during archive recovery. * * When the startup process is ready to start archive recovery, it signals the * postmaster, and we switch to PM_RECOVERY state. The background writer and * checkpointer are launched, while the startup process continues applying WAL. * If Hot Standby is enabled, then, after reaching a consistent point in WAL * redo, startup process signals us again, and we switch to PM_HOT_STANDBY * state and begin accepting connections to perform read-only queries. When * archive recovery is finished, the startup process exits with exit code 0 * and we switch to PM_RUN state. * * Normal child backends can only be launched when we are in PM_RUN or * PM_HOT_STANDBY state. (connsAllowed can also restrict launching.) * In other states we handle connection requests by launching "dead_end" * child processes, which will simply send the client an error message and * quit. (We track these in the BackendList so that we can know when they * are all gone; this is important because they're still connected to shared * memory, and would interfere with an attempt to destroy the shmem segment, * possibly leading to SHMALL failure when we try to make a new one.) * In PM_WAIT_DEAD_END state we are waiting for all the dead_end children * to drain out of the system, and therefore stop accepting connection * requests at all until the last existing child has quit (which hopefully * will not be very long). * * Notice that this state variable does not distinguish *why* we entered * states later than PM_RUN --- Shutdown and FatalError must be consulted * to find that out. FatalError is never true in PM_RECOVERY, PM_HOT_STANDBY, * or PM_RUN states, nor in PM_SHUTDOWN states (because we don't enter those * states when trying to recover from a crash). It can be true in PM_STARTUP * state, because we don't clear it until we've successfully started WAL redo. */ typedef enum { PM_INIT, /* postmaster starting */ PM_STARTUP, /* waiting for startup subprocess */ PM_RECOVERY, /* in archive recovery mode */ PM_HOT_STANDBY, /* in hot standby mode */ PM_RUN, /* normal "database is alive" state */ PM_STOP_BACKENDS, /* need to stop remaining backends */ PM_WAIT_BACKENDS, /* waiting for live backends to exit */ PM_SHUTDOWN, /* waiting for checkpointer to do shutdown * ckpt */ PM_SHUTDOWN_2, /* waiting for archiver and walsenders to * finish */ PM_WAIT_DEAD_END, /* waiting for dead_end children to exit */ PM_NO_CHILDREN /* all important children have exited */ } PMState; /* * While performing a "smart shutdown", we restrict new connections but stay * in PM_RUN or PM_HOT_STANDBY state until all the client backends are gone. * connsAllowed is a sub-state indicator showing the active restriction. * It is of no interest unless pmState is PM_RUN or PM_HOT_STANDBY. */ /* Start time of SIGKILL timeout during immediate shutdown or child crash */ /* Zero means timeout is not running */ /* Length of said timeout */ #define SIGKILL_CHILDREN_AFTER_SECS 5 /* T if we've reached PM_RUN */ __thread bool ClientAuthInProgress = false; /* T during new-client * authentication */ /* stderr redirected for syslogger? */ /* received START_AUTOVAC_LAUNCHER signal */ /* the launcher needs to be signaled to communicate some condition */ /* received START_WALRECEIVER signal */ /* set when there's a worker that needs to be started up */ #ifdef USE_SSL /* Set when and if SSL has been initialized properly */ static bool LoadedSSL = false; #endif #ifdef USE_BONJOUR static DNSServiceRef bonjour_sdref = NULL; #endif /* * postmaster.c - function prototypes */ static void CloseServerPorts(int status, Datum arg); static void unlink_external_pid_file(int status, Datum arg); static void getInstallationPaths(const char *argv0); static void checkControlFile(void); static Port *ConnCreate(int serverFd); static void ConnFree(Port *port); static void reset_shared(void); static void SIGHUP_handler(SIGNAL_ARGS); static void pmdie(SIGNAL_ARGS); static void reaper(SIGNAL_ARGS); static void sigusr1_handler(SIGNAL_ARGS); static void process_startup_packet_die(SIGNAL_ARGS); static void dummy_handler(SIGNAL_ARGS); static void StartupPacketTimeoutHandler(void); static void CleanupBackend(int pid, int exitstatus); static bool CleanupBackgroundWorker(int pid, int exitstatus); static void HandleChildCrash(int pid, int exitstatus, const char *procname); static void LogChildExit(int lev, const char *procname, int pid, int exitstatus); static void PostmasterStateMachine(void); static void BackendInitialize(Port *port); static void BackendRun(Port *port) pg_attribute_noreturn(); static void ExitPostmaster(int status) pg_attribute_noreturn(); static int ServerLoop(void); static int BackendStartup(Port *port); static int ProcessStartupPacket(Port *port, bool ssl_done, bool gss_done); static void SendNegotiateProtocolVersion(List *unrecognized_protocol_options); static void processCancelRequest(Port *port, void *pkt); static int initMasks(fd_set *rmask); static void report_fork_failure_to_client(Port *port, int errnum); static CAC_state canAcceptConnections(int backend_type); static bool RandomCancelKey(int32 *cancel_key); static void signal_child(pid_t pid, int signal); static bool SignalSomeChildren(int signal, int targets); static void TerminateChildren(int signal); #define SignalChildren(sig) SignalSomeChildren(sig, BACKEND_TYPE_ALL) static int CountChildren(int target); static bool assign_backendlist_entry(RegisteredBgWorker *rw); static void maybe_start_bgworkers(void); static bool CreateOptsFile(int argc, char *argv[], char *fullprogname); static pid_t StartChildProcess(AuxProcType type); static void StartAutovacuumWorker(void); static void MaybeStartWalReceiver(void); static void InitPostmasterDeathWatchHandle(void); /* * Archiver is allowed to start up at the current postmaster state? * * If WAL archiving is enabled always, we are allowed to start archiver * even during recovery. */ #define PgArchStartupAllowed() \ (((XLogArchivingActive() && pmState == PM_RUN) || \ (XLogArchivingAlways() && \ (pmState == PM_RECOVERY || pmState == PM_HOT_STANDBY))) && \ PgArchCanRestart()) #ifdef EXEC_BACKEND #ifdef WIN32 #define WNOHANG 0 /* ignored, so any integer value will do */ static pid_t waitpid(pid_t pid, int *exitstatus, int options); static void WINAPI pgwin32_deadchild_callback(PVOID lpParameter, BOOLEAN TimerOrWaitFired); static HANDLE win32ChildQueue; typedef struct { HANDLE waitHandle; HANDLE procHandle; DWORD procId; } win32_deadchild_waitinfo; #endif /* WIN32 */ static pid_t backend_forkexec(Port *port); static pid_t internal_forkexec(int argc, char *argv[], Port *port); /* Type for a socket that can be inherited to a client process */ #ifdef WIN32 typedef struct { SOCKET origsocket; /* Original socket value, or PGINVALID_SOCKET * if not a socket */ WSAPROTOCOL_INFO wsainfo; } InheritableSocket; #else typedef int InheritableSocket; #endif /* * Structure contains all variables passed to exec:ed backends */ typedef struct { Port port; InheritableSocket portsocket; char DataDir[MAXPGPATH]; pgsocket ListenSocket[MAXLISTEN]; int32 MyCancelKey; int MyPMChildSlot; #ifndef WIN32 unsigned long UsedShmemSegID; #else void *ShmemProtectiveRegion; HANDLE UsedShmemSegID; #endif void *UsedShmemSegAddr; slock_t *ShmemLock; VariableCache ShmemVariableCache; Backend *ShmemBackendArray; #ifndef HAVE_SPINLOCKS PGSemaphore *SpinlockSemaArray; #endif int NamedLWLockTrancheRequests; NamedLWLockTranche *NamedLWLockTrancheArray; LWLockPadded *MainLWLockArray; slock_t *ProcStructLock; PROC_HDR *ProcGlobal; PGPROC *AuxiliaryProcs; PGPROC *PreparedXactProcs; PMSignalData *PMSignalState; pid_t PostmasterPid; TimestampTz PgStartTime; TimestampTz PgReloadTime; pg_time_t first_syslogger_file_time; bool redirection_done; bool IsBinaryUpgrade; bool query_id_enabled; int max_safe_fds; int MaxBackends; #ifdef WIN32 HANDLE PostmasterHandle; HANDLE initial_signal_pipe; HANDLE syslogPipe[2]; #else int postmaster_alive_fds[2]; int syslogPipe[2]; #endif char my_exec_path[MAXPGPATH]; char pkglib_path[MAXPGPATH]; } BackendParameters; static void read_backend_variables(char *id, Port *port); static void restore_backend_variables(BackendParameters *param, Port *port); #ifndef WIN32 static bool save_backend_variables(BackendParameters *param, Port *port); #else static bool save_backend_variables(BackendParameters *param, Port *port, HANDLE childProcess, pid_t childPid); #endif static void ShmemBackendArrayAdd(Backend *bn); static void ShmemBackendArrayRemove(Backend *bn); #endif /* EXEC_BACKEND */ #define StartupDataBase() StartChildProcess(StartupProcess) #define StartArchiver() StartChildProcess(ArchiverProcess) #define StartBackgroundWriter() StartChildProcess(BgWriterProcess) #define StartCheckpointer() StartChildProcess(CheckpointerProcess) #define StartWalWriter() StartChildProcess(WalWriterProcess) #define StartWalReceiver() StartChildProcess(WalReceiverProcess) /* Macros to check exit status of a child process */ #define EXIT_STATUS_0(st) ((st) == 0) #define EXIT_STATUS_1(st) (WIFEXITED(st) && WEXITSTATUS(st) == 1) #define EXIT_STATUS_3(st) (WIFEXITED(st) && WEXITSTATUS(st) == 3) #ifndef WIN32 /* * File descriptors for pipe used to monitor if postmaster is alive. * First is POSTMASTER_FD_WATCH, second is POSTMASTER_FD_OWN. */ #else /* Process handle of postmaster used for the same purpose on Windows */ HANDLE PostmasterHandle; #endif /* * Postmaster main entry point */ #ifdef WIN32 #endif #ifdef SIGURG #endif #ifdef SIGTTIN #endif #ifdef SIGTTOU #endif #ifdef SIGXFSZ #endif #ifdef HAVE_INT_OPTRESET #endif #ifdef USE_SSL #endif #ifdef WIN32 #endif #ifdef EXEC_BACKEND #endif #ifdef USE_BONJOUR #endif #ifdef HAVE_UNIX_SOCKETS #endif #ifdef HAVE_PTHREAD_IS_THREADED_NP #endif /* * on_proc_exit callback to close server's listen sockets */ /* * on_proc_exit callback to delete external_pid_file */ /* * Compute and check the directory paths to files that are part of the * installation (as deduced from the postgres executable's own location) */ #ifdef EXEC_BACKEND #endif /* * Check that pg_control exists in the correct location in the data directory. * * No attempt is made to validate the contents of pg_control here. This is * just a sanity check to see if we are looking at a real data directory. */ /* * Determine how long should we let ServerLoop sleep. * * In normal conditions we wait at most one minute, to ensure that the other * background tasks handled by ServerLoop get done even when no requests are * arriving. However, if there are background workers waiting to be started, * we don't actually sleep so that they are quickly serviced. Other exception * cases are as shown in the code. */ /* * Main idle loop of postmaster * * NB: Needs to be called with signals blocked */ #ifdef HAVE_PTHREAD_IS_THREADED_NP #endif /* * Initialise the masks for select() for the ports we are listening on. * Return the number of sockets to listen on. */ /* * Read a client's startup packet and do something according to it. * * Returns STATUS_OK or STATUS_ERROR, or might call ereport(FATAL) and * not return at all. * * (Note that ereport(FATAL) stuff is sent to the client, so only use it * if that's what you want. Return STATUS_ERROR if you don't want to * send anything to the client, which would typically be appropriate * if we detect a communications failure.) * * Set ssl_done and/or gss_done when negotiation of an encrypted layer * (currently, TLS or GSSAPI) is completed. A successful negotiation of either * encryption layer sets both flags, but a rejected negotiation sets only the * flag for that layer, since the client may wish to try the other one. We * should make no assumption here about the order in which the client may make * requests. */ #ifdef USE_SSL #else #endif #ifdef USE_SSL #endif #ifdef ENABLE_GSS #endif #ifdef ENABLE_GSS #endif /* * Send a NegotiateProtocolVersion to the client. This lets the client know * that they have requested a newer minor protocol version than we are able * to speak. We'll speak the highest version we know about; the client can, * of course, abandon the connection if that's a problem. * * We also include in the response a list of protocol options we didn't * understand. This allows clients to include optional parameters that might * be present either in newer protocol versions or third-party protocol * extensions without fear of having to reconnect if those options are not * understood, while at the same time making certain that the client is aware * of which options were actually accepted. */ /* * The client has sent a cancel request packet, not a normal * start-a-new-connection packet. Perform the necessary processing. * Nothing is sent back to the client. */ #ifndef EXEC_BACKEND #else #endif #ifndef EXEC_BACKEND #else #endif #ifndef EXEC_BACKEND /* make GNU Emacs 26.1 see brace balance */ #else #endif /* * canAcceptConnections --- check to see if database state allows connections * of the specified type. backend_type can be BACKEND_TYPE_NORMAL, * BACKEND_TYPE_AUTOVAC, or BACKEND_TYPE_BGWORKER. (Note that we don't yet * know whether a NORMAL connection might turn into a walsender.) */ /* * ConnCreate -- create a local connection data structure * * Returns NULL on failure, other than out-of-memory which is fatal. */ /* * ConnFree -- free a local connection data structure * * Caller has already closed the socket if any, so there's not much * to do here. */ /* * ClosePostmasterPorts -- close all the postmaster's open sockets * * This is called during child process startup to release file descriptors * that are not needed by that child process. The postmaster still has * them open, of course. * * Note: we pass am_syslogger as a boolean because we don't want to set * the global variable yet when this is called. */ #ifndef WIN32 #endif #ifndef WIN32 #else #endif #ifdef USE_BONJOUR #endif /* * InitProcessGlobals -- set MyProcPid, MyStartTime[stamp], random seeds * * Called early in the postmaster and every backend. */ #ifndef WIN32 #endif /* * reset_shared -- reset shared memory and semaphores */ /* * SIGHUP -- reread config files, and tell children to do same */ #ifdef WIN32 #endif #ifdef USE_SSL #endif #ifdef EXEC_BACKEND #endif #ifdef WIN32 #endif /* * pmdie -- signal handler for processing various postmaster signals. */ #ifdef WIN32 #endif #ifdef USE_SYSTEMD #endif #ifdef USE_SYSTEMD #endif #ifdef USE_SYSTEMD #endif #ifdef WIN32 #endif /* * Reaper -- signal handler to cleanup after a child process dies. */ #ifdef WIN32 #endif #ifdef USE_SYSTEMD #endif #ifdef WIN32 #endif /* * Scan the bgworkers list and see if the given PID (which has just stopped * or crashed) is in it. Handle its shutdown if so, and return true. If not a * bgworker, return false. * * This is heavily based on CleanupBackend. One important difference is that * we don't know yet that the dying process is a bgworker, so we must be silent * until we're sure it is. */ #ifdef WIN32 #endif #ifdef EXEC_BACKEND #endif /* * CleanupBackend -- cleanup after terminated backend. * * Remove all local state associated with backend. * * If you change this, see also CleanupBackgroundWorker. */ #ifdef WIN32 #endif #ifdef EXEC_BACKEND #endif /* * HandleChildCrash -- cleanup after failed backend, bgwriter, checkpointer, * walwriter, autovacuum, archiver or background worker. * * The objectives here are to clean up our local state about the child * process, and to signal all other remaining children to quickdie. */ #ifdef EXEC_BACKEND #endif #ifdef EXEC_BACKEND #endif /* * Log the death of a child process. */ #if defined(WIN32) #else #endif /* * Advance the postmaster's state machine and take actions as appropriate * * This is common code for pmdie(), reaper() and sigusr1_handler(), which * receive the signals that might mean we need to change state. */ /* * Send a signal to a postmaster child process * * On systems that have setsid(), each child process sets itself up as a * process group leader. For signals that are generally interpreted in the * appropriate fashion, we signal the entire process group not just the * direct child process. This allows us to, for example, SIGQUIT a blocked * archive_recovery script, or SIGINT a script being run by a backend via * system(). * * There is a race condition for recently-forked children: they might not * have executed setsid() yet. So we signal the child directly as well as * the group. We assume such a child will handle the signal before trying * to spawn any grandchild processes. We also assume that signaling the * child twice will not cause any problems. */ #ifdef HAVE_SETSID #endif /* * Send a signal to the targeted children (but NOT special children; * dead_end children are never signaled, either). */ /* * Send a termination signal to children. This considers all of our children * processes, except syslogger and dead_end backends. */ /* * BackendStartup -- start backend process * * returns: STATUS_ERROR if the fork failed, STATUS_OK otherwise. * * Note: if you change this code, also consider StartAutovacuumWorker. */ #ifdef EXEC_BACKEND #else /* !EXEC_BACKEND */ #endif /* EXEC_BACKEND */ #ifdef EXEC_BACKEND #endif /* * Try to report backend fork() failure to client before we close the * connection. Since we do not care to risk blocking the postmaster on * this connection, we set the connection to non-blocking and try only once. * * This is grungy special-purpose code; we cannot use backend libpq since * it's not up and running. */ /* * BackendInitialize -- initialize an interactive (postmaster-child) * backend process, and collect the client's startup packet. * * returns: nothing. Will not return at all if there's any failure. * * Note: this code does not depend on having any access to shared memory. * Indeed, our approach to SIGTERM/timeout handling *requires* that * shared memory not have been touched yet; see comments within. * In the EXEC_BACKEND case, we are physically attached to shared memory * but have not yet set up most of our local pointers to shmem structures. */ /* * BackendRun -- set up the backend's argument list and invoke PostgresMain() * * returns: * Doesn't return at all. */ #ifdef EXEC_BACKEND /* * postmaster_forkexec -- fork and exec a postmaster subprocess * * The caller must have set up the argv array already, except for argv[2] * which will be filled with the name of the temp variable file. * * Returns the child process PID, or -1 on fork failure (a suitable error * message has been logged on failure). * * All uses of this routine will dispatch to SubPostmasterMain in the * child process. */ pid_t postmaster_forkexec(int argc, char *argv[]) { Port port; /* This entry point passes dummy values for the Port variables */ memset(&port, 0, sizeof(port)); return internal_forkexec(argc, argv, &port); } /* * backend_forkexec -- fork/exec off a backend process * * Some operating systems (WIN32) don't have fork() so we have to simulate * it by storing parameters that need to be passed to the child and * then create a new child process. * * returns the pid of the fork/exec'd process, or -1 on failure */ static pid_t backend_forkexec(Port *port) { char *av[4]; int ac = 0; av[ac++] = "postgres"; av[ac++] = "--forkbackend"; av[ac++] = NULL; /* filled in by internal_forkexec */ av[ac] = NULL; Assert(ac < lengthof(av)); return internal_forkexec(ac, av, port); } #ifndef WIN32 /* * internal_forkexec non-win32 implementation * * - writes out backend variables to the parameter file * - fork():s, and then exec():s the child process */ static pid_t internal_forkexec(int argc, char *argv[], Port *port) { static unsigned long tmpBackendFileNum = 0; pid_t pid; char tmpfilename[MAXPGPATH]; BackendParameters param; FILE *fp; if (!save_backend_variables(¶m, port)) return -1; /* log made by save_backend_variables */ /* Calculate name for temp file */ snprintf(tmpfilename, MAXPGPATH, "%s/%s.backend_var.%d.%lu", PG_TEMP_FILES_DIR, PG_TEMP_FILE_PREFIX, MyProcPid, ++tmpBackendFileNum); /* Open file */ fp = AllocateFile(tmpfilename, PG_BINARY_W); if (!fp) { /* * As in OpenTemporaryFileInTablespace, try to make the temp-file * directory, ignoring errors. */ (void) MakePGDirectory(PG_TEMP_FILES_DIR); fp = AllocateFile(tmpfilename, PG_BINARY_W); if (!fp) { ereport(LOG, (errcode_for_file_access(), errmsg("could not create file \"%s\": %m", tmpfilename))); return -1; } } if (fwrite(¶m, sizeof(param), 1, fp) != 1) { ereport(LOG, (errcode_for_file_access(), errmsg("could not write to file \"%s\": %m", tmpfilename))); FreeFile(fp); return -1; } /* Release file */ if (FreeFile(fp)) { ereport(LOG, (errcode_for_file_access(), errmsg("could not write to file \"%s\": %m", tmpfilename))); return -1; } /* Make sure caller set up argv properly */ Assert(argc >= 3); Assert(argv[argc] == NULL); Assert(strncmp(argv[1], "--fork", 6) == 0); Assert(argv[2] == NULL); /* Insert temp file name after --fork argument */ argv[2] = tmpfilename; /* Fire off execv in child */ if ((pid = fork_process()) == 0) { if (execv(postgres_exec_path, argv) < 0) { ereport(LOG, (errmsg("could not execute server process \"%s\": %m", postgres_exec_path))); /* We're already in the child process here, can't return */ exit(1); } } return pid; /* Parent returns pid, or -1 on fork failure */ } #else /* WIN32 */ /* * internal_forkexec win32 implementation * * - starts backend using CreateProcess(), in suspended state * - writes out backend variables to the parameter file * - during this, duplicates handles and sockets required for * inheritance into the new process * - resumes execution of the new process once the backend parameter * file is complete. */ static pid_t internal_forkexec(int argc, char *argv[], Port *port) { int retry_count = 0; STARTUPINFO si; PROCESS_INFORMATION pi; int i; int j; char cmdLine[MAXPGPATH * 2]; HANDLE paramHandle; BackendParameters *param; SECURITY_ATTRIBUTES sa; char paramHandleStr[32]; win32_deadchild_waitinfo *childinfo; /* Make sure caller set up argv properly */ Assert(argc >= 3); Assert(argv[argc] == NULL); Assert(strncmp(argv[1], "--fork", 6) == 0); Assert(argv[2] == NULL); /* Resume here if we need to retry */ retry: /* Set up shared memory for parameter passing */ ZeroMemory(&sa, sizeof(sa)); sa.nLength = sizeof(sa); sa.bInheritHandle = TRUE; paramHandle = CreateFileMapping(INVALID_HANDLE_VALUE, &sa, PAGE_READWRITE, 0, sizeof(BackendParameters), NULL); if (paramHandle == INVALID_HANDLE_VALUE) { ereport(LOG, (errmsg("could not create backend parameter file mapping: error code %lu", GetLastError()))); return -1; } param = MapViewOfFile(paramHandle, FILE_MAP_WRITE, 0, 0, sizeof(BackendParameters)); if (!param) { ereport(LOG, (errmsg("could not map backend parameter memory: error code %lu", GetLastError()))); CloseHandle(paramHandle); return -1; } /* Insert temp file name after --fork argument */ #ifdef _WIN64 sprintf(paramHandleStr, "%llu", (LONG_PTR) paramHandle); #else sprintf(paramHandleStr, "%lu", (DWORD) paramHandle); #endif argv[2] = paramHandleStr; /* Format the cmd line */ cmdLine[sizeof(cmdLine) - 1] = '\0'; cmdLine[sizeof(cmdLine) - 2] = '\0'; snprintf(cmdLine, sizeof(cmdLine) - 1, "\"%s\"", postgres_exec_path); i = 0; while (argv[++i] != NULL) { j = strlen(cmdLine); snprintf(cmdLine + j, sizeof(cmdLine) - 1 - j, " \"%s\"", argv[i]); } if (cmdLine[sizeof(cmdLine) - 2] != '\0') { ereport(LOG, (errmsg("subprocess command line too long"))); UnmapViewOfFile(param); CloseHandle(paramHandle); return -1; } memset(&pi, 0, sizeof(pi)); memset(&si, 0, sizeof(si)); si.cb = sizeof(si); /* * Create the subprocess in a suspended state. This will be resumed later, * once we have written out the parameter file. */ if (!CreateProcess(NULL, cmdLine, NULL, NULL, TRUE, CREATE_SUSPENDED, NULL, NULL, &si, &pi)) { ereport(LOG, (errmsg("CreateProcess() call failed: %m (error code %lu)", GetLastError()))); UnmapViewOfFile(param); CloseHandle(paramHandle); return -1; } if (!save_backend_variables(param, port, pi.hProcess, pi.dwProcessId)) { /* * log made by save_backend_variables, but we have to clean up the * mess with the half-started process */ if (!TerminateProcess(pi.hProcess, 255)) ereport(LOG, (errmsg_internal("could not terminate unstarted process: error code %lu", GetLastError()))); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); UnmapViewOfFile(param); CloseHandle(paramHandle); return -1; /* log made by save_backend_variables */ } /* Drop the parameter shared memory that is now inherited to the backend */ if (!UnmapViewOfFile(param)) ereport(LOG, (errmsg("could not unmap view of backend parameter file: error code %lu", GetLastError()))); if (!CloseHandle(paramHandle)) ereport(LOG, (errmsg("could not close handle to backend parameter file: error code %lu", GetLastError()))); /* * Reserve the memory region used by our main shared memory segment before * we resume the child process. Normally this should succeed, but if ASLR * is active then it might sometimes fail due to the stack or heap having * gotten mapped into that range. In that case, just terminate the * process and retry. */ if (!pgwin32_ReserveSharedMemoryRegion(pi.hProcess)) { /* pgwin32_ReserveSharedMemoryRegion already made a log entry */ if (!TerminateProcess(pi.hProcess, 255)) ereport(LOG, (errmsg_internal("could not terminate process that failed to reserve memory: error code %lu", GetLastError()))); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); if (++retry_count < 100) goto retry; ereport(LOG, (errmsg("giving up after too many tries to reserve shared memory"), errhint("This might be caused by ASLR or antivirus software."))); return -1; } /* * Now that the backend variables are written out, we start the child * thread so it can start initializing while we set up the rest of the * parent state. */ if (ResumeThread(pi.hThread) == -1) { if (!TerminateProcess(pi.hProcess, 255)) { ereport(LOG, (errmsg_internal("could not terminate unstartable process: error code %lu", GetLastError()))); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); return -1; } CloseHandle(pi.hProcess); CloseHandle(pi.hThread); ereport(LOG, (errmsg_internal("could not resume thread of unstarted process: error code %lu", GetLastError()))); return -1; } /* * Queue a waiter to signal when this child dies. The wait will be handled * automatically by an operating system thread pool. * * Note: use malloc instead of palloc, since it needs to be thread-safe. * Struct will be free():d from the callback function that runs on a * different thread. */ childinfo = malloc(sizeof(win32_deadchild_waitinfo)); if (!childinfo) ereport(FATAL, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"))); childinfo->procHandle = pi.hProcess; childinfo->procId = pi.dwProcessId; if (!RegisterWaitForSingleObject(&childinfo->waitHandle, pi.hProcess, pgwin32_deadchild_callback, childinfo, INFINITE, WT_EXECUTEONLYONCE | WT_EXECUTEINWAITTHREAD)) ereport(FATAL, (errmsg_internal("could not register process for wait: error code %lu", GetLastError()))); /* Don't close pi.hProcess here - the wait thread needs access to it */ CloseHandle(pi.hThread); return pi.dwProcessId; } #endif /* WIN32 */ /* * SubPostmasterMain -- Get the fork/exec'd process into a state equivalent * to what it would be if we'd simply forked on Unix, and then * dispatch to the appropriate place. * * The first two command line arguments are expected to be "--forkFOO" * (where FOO indicates which postmaster child we are to become), and * the name of a variables file that we can read to load data that would * have been inherited by fork() on Unix. Remaining arguments go to the * subprocess FooMain() routine. */ void SubPostmasterMain(int argc, char *argv[]) { Port port; /* In EXEC_BACKEND case we will not have inherited these settings */ IsPostmasterEnvironment = true; whereToSendOutput = DestNone; /* Setup essential subsystems (to ensure elog() behaves sanely) */ InitializeGUCOptions(); /* Check we got appropriate args */ if (argc < 3) elog(FATAL, "invalid subpostmaster invocation"); /* Read in the variables file */ memset(&port, 0, sizeof(Port)); read_backend_variables(argv[2], &port); /* Close the postmaster's sockets (as soon as we know them) */ ClosePostmasterPorts(strcmp(argv[1], "--forklog") == 0); /* Setup as postmaster child */ InitPostmasterChild(); /* * If appropriate, physically re-attach to shared memory segment. We want * to do this before going any further to ensure that we can attach at the * same address the postmaster used. On the other hand, if we choose not * to re-attach, we may have other cleanup to do. * * If testing EXEC_BACKEND on Linux, you should run this as root before * starting the postmaster: * * sysctl -w kernel.randomize_va_space=0 * * This prevents using randomized stack and code addresses that cause the * child process's memory map to be different from the parent's, making it * sometimes impossible to attach to shared memory at the desired address. * Return the setting to its old value (usually '1' or '2') when finished. */ if (strcmp(argv[1], "--forkbackend") == 0 || strcmp(argv[1], "--forkavlauncher") == 0 || strcmp(argv[1], "--forkavworker") == 0 || strcmp(argv[1], "--forkaux") == 0 || strncmp(argv[1], "--forkbgworker=", 15) == 0) PGSharedMemoryReAttach(); else PGSharedMemoryNoReAttach(); /* autovacuum needs this set before calling InitProcess */ if (strcmp(argv[1], "--forkavlauncher") == 0) AutovacuumLauncherIAm(); if (strcmp(argv[1], "--forkavworker") == 0) AutovacuumWorkerIAm(); /* Read in remaining GUC variables */ read_nondefault_variables(); /* * Check that the data directory looks valid, which will also check the * privileges on the data directory and update our umask and file/group * variables for creating files later. Note: this should really be done * before we create any files or directories. */ checkDataDir(); /* * (re-)read control file, as it contains config. The postmaster will * already have read this, but this process doesn't know about that. */ LocalProcessControlFile(false); /* * Reload any libraries that were preloaded by the postmaster. Since we * exec'd this process, those libraries didn't come along with us; but we * should load them into all child processes to be consistent with the * non-EXEC_BACKEND behavior. */ process_shared_preload_libraries(); /* Run backend or appropriate child */ if (strcmp(argv[1], "--forkbackend") == 0) { Assert(argc == 3); /* shouldn't be any more args */ /* * Need to reinitialize the SSL library in the backend, since the * context structures contain function pointers and cannot be passed * through the parameter file. * * If for some reason reload fails (maybe the user installed broken * key files), soldier on without SSL; that's better than all * connections becoming impossible. * * XXX should we do this in all child processes? For the moment it's * enough to do it in backend children. */ #ifdef USE_SSL if (EnableSSL) { if (secure_initialize(false) == 0) LoadedSSL = true; else ereport(LOG, (errmsg("SSL configuration could not be loaded in child process"))); } #endif /* * Perform additional initialization and collect startup packet. * * We want to do this before InitProcess() for a couple of reasons: 1. * so that we aren't eating up a PGPROC slot while waiting on the * client. 2. so that if InitProcess() fails due to being out of * PGPROC slots, we have already initialized libpq and are able to * report the error to the client. */ BackendInitialize(&port); /* Restore basic shared memory pointers */ InitShmemAccess(UsedShmemSegAddr); /* Need a PGPROC to run CreateSharedMemoryAndSemaphores */ InitProcess(); /* Attach process to shared data structures */ CreateSharedMemoryAndSemaphores(); /* And run the backend */ BackendRun(&port); /* does not return */ } if (strcmp(argv[1], "--forkaux") == 0) { AuxProcType auxtype; Assert(argc == 4); /* Restore basic shared memory pointers */ InitShmemAccess(UsedShmemSegAddr); /* Need a PGPROC to run CreateSharedMemoryAndSemaphores */ InitAuxiliaryProcess(); /* Attach process to shared data structures */ CreateSharedMemoryAndSemaphores(); auxtype = atoi(argv[3]); AuxiliaryProcessMain(auxtype); /* does not return */ } if (strcmp(argv[1], "--forkavlauncher") == 0) { /* Restore basic shared memory pointers */ InitShmemAccess(UsedShmemSegAddr); /* Need a PGPROC to run CreateSharedMemoryAndSemaphores */ InitProcess(); /* Attach process to shared data structures */ CreateSharedMemoryAndSemaphores(); AutoVacLauncherMain(argc - 2, argv + 2); /* does not return */ } if (strcmp(argv[1], "--forkavworker") == 0) { /* Restore basic shared memory pointers */ InitShmemAccess(UsedShmemSegAddr); /* Need a PGPROC to run CreateSharedMemoryAndSemaphores */ InitProcess(); /* Attach process to shared data structures */ CreateSharedMemoryAndSemaphores(); AutoVacWorkerMain(argc - 2, argv + 2); /* does not return */ } if (strncmp(argv[1], "--forkbgworker=", 15) == 0) { int shmem_slot; /* do this as early as possible; in particular, before InitProcess() */ IsBackgroundWorker = true; /* Restore basic shared memory pointers */ InitShmemAccess(UsedShmemSegAddr); /* Need a PGPROC to run CreateSharedMemoryAndSemaphores */ InitProcess(); /* Attach process to shared data structures */ CreateSharedMemoryAndSemaphores(); /* Fetch MyBgworkerEntry from shared memory */ shmem_slot = atoi(argv[1] + 15); MyBgworkerEntry = BackgroundWorkerEntry(shmem_slot); StartBackgroundWorker(); } if (strcmp(argv[1], "--forklog") == 0) { /* Do not want to attach to shared memory */ SysLoggerMain(argc, argv); /* does not return */ } abort(); /* shouldn't get here */ } #endif /* EXEC_BACKEND */ /* * ExitPostmaster -- cleanup * * Do NOT call exit() directly --- always go through here! */ #ifdef HAVE_PTHREAD_IS_THREADED_NP #endif /* * sigusr1_handler - handle signal conditions from child processes */ #ifdef WIN32 #endif #ifdef USE_SYSTEMD #endif #ifdef USE_SYSTEMD #endif #ifdef WIN32 #endif /* * SIGTERM while processing startup packet. * * Running proc_exit() from a signal handler would be quite unsafe. * However, since we have not yet touched shared memory, we can just * pull the plug and exit without running any atexit handlers. * * One might be tempted to try to send a message, or log one, indicating * why we are disconnecting. However, that would be quite unsafe in itself. * Also, it seems undesirable to provide clues about the database's state * to a client that has not yet completed authentication, or even sent us * a startup packet. */ /* * Dummy signal handler * * We use this for signals that we don't actually use in the postmaster, * but we do use in backends. If we were to SIG_IGN such signals in the * postmaster, then a newly started backend might drop a signal that arrives * before it's able to reconfigure its signal processing. (See notes in * tcop/postgres.c.) */ /* * Timeout while processing startup packet. * As for process_startup_packet_die(), we exit via _exit(1). */ /* * Generate a random cancel key. */ /* * Count up number of child processes of specified types (dead_end children * are always excluded). */ /* * StartChildProcess -- start an auxiliary process for the postmaster * * "type" determines what kind of child will be started. All child types * initially go to AuxiliaryProcessMain, which will handle common setup. * * Return value of StartChildProcess is subprocess' PID, or 0 if failed * to start subprocess. */ #ifdef EXEC_BACKEND #else /* !EXEC_BACKEND */ #endif /* EXEC_BACKEND */ /* * StartAutovacuumWorker * Start an autovac worker process. * * This function is here because it enters the resulting PID into the * postmaster's private backends list. * * NB -- this code very roughly matches BackendStartup. */ #ifdef EXEC_BACKEND #endif /* * MaybeStartWalReceiver * Start the WAL receiver process, if not running and our state allows. * * Note: if WalReceiverPID is already nonzero, it might seem that we should * clear WalReceiverRequested. However, there's a race condition if the * walreceiver terminates and the startup process immediately requests a new * one: it's quite possible to get the signal for the request before reaping * the dead walreceiver process. Better to risk launching an extra * walreceiver than to miss launching one we need. (The walreceiver code * has logic to recognize that it should go away if not needed.) */ /* * Create the opts file */ #define OPTS_FILE "postmaster.opts" /* * MaxLivePostmasterChildren * * This reports the number of entries needed in per-child-process arrays * (the PMChildFlags array, and if EXEC_BACKEND the ShmemBackendArray). * These arrays include regular backends, autovac workers, walsenders * and background workers, but not special children nor dead_end children. * This allows the arrays to have a fixed maximum size, to wit the same * too-many-children limit enforced by canAcceptConnections(). The exact value * isn't too critical as long as it's more than MaxBackends. */ /* * Connect background worker to a database. */ /* * Connect background worker to a database using OIDs. */ /* * Block/unblock signals in a background worker */ #ifdef EXEC_BACKEND static pid_t bgworker_forkexec(int shmem_slot) { char *av[10]; int ac = 0; char forkav[MAXPGPATH]; snprintf(forkav, MAXPGPATH, "--forkbgworker=%d", shmem_slot); av[ac++] = "postgres"; av[ac++] = forkav; av[ac++] = NULL; /* filled in by postmaster_forkexec */ av[ac] = NULL; Assert(ac < lengthof(av)); return postmaster_forkexec(ac, av); } #endif /* * Start a new bgworker. * Starting time conditions must have been checked already. * * Returns true on success, false on failure. * In either case, update the RegisteredBgWorker's state appropriately. * * This code is heavily based on autovacuum.c, q.v. */ #ifdef EXEC_BACKEND #else #endif #ifndef EXEC_BACKEND #endif #ifdef EXEC_BACKEND #endif /* * Does the current postmaster state require starting a worker with the * specified start_time? */ /* * Allocate the Backend struct for a connected background worker, but don't * add it to the list of backends just yet. * * On failure, return false without changing any worker state. * * Some info from the Backend is copied into the passed rw. */ /* * If the time is right, start background worker(s). * * As a side effect, the bgworker control variables are set or reset * depending on whether more workers may need to be started. * * We limit the number of workers started per call, to avoid consuming the * postmaster's attention for too long when many such requests are pending. * As long as StartWorkerNeeded is true, ServerLoop will not block and will * call this function again after dealing with any other issues. */ #define MAX_BGWORKERS_TO_LAUNCH 100 /* * When a backend asks to be notified about worker state changes, we * set a flag in its backend entry. The background worker machinery needs * to know when such backends exit. */ #ifdef EXEC_BACKEND /* * The following need to be available to the save/restore_backend_variables * functions. They are marked NON_EXEC_STATIC in their home modules. */ extern slock_t *ShmemLock; extern slock_t *ProcStructLock; extern PGPROC *AuxiliaryProcs; extern PMSignalData *PMSignalState; extern pg_time_t first_syslogger_file_time; #ifndef WIN32 #define write_inheritable_socket(dest, src, childpid) ((*(dest) = (src)), true) #define read_inheritable_socket(dest, src) (*(dest) = *(src)) #else static bool write_duplicated_handle(HANDLE *dest, HANDLE src, HANDLE child); static bool write_inheritable_socket(InheritableSocket *dest, SOCKET src, pid_t childPid); static void read_inheritable_socket(SOCKET *dest, InheritableSocket *src); #endif /* Save critical backend variables into the BackendParameters struct */ #ifndef WIN32 static bool save_backend_variables(BackendParameters *param, Port *port) #else static bool save_backend_variables(BackendParameters *param, Port *port, HANDLE childProcess, pid_t childPid) #endif { memcpy(¶m->port, port, sizeof(Port)); if (!write_inheritable_socket(¶m->portsocket, port->sock, childPid)) return false; strlcpy(param->DataDir, DataDir, MAXPGPATH); memcpy(¶m->ListenSocket, &ListenSocket, sizeof(ListenSocket)); param->MyCancelKey = MyCancelKey; param->MyPMChildSlot = MyPMChildSlot; #ifdef WIN32 param->ShmemProtectiveRegion = ShmemProtectiveRegion; #endif param->UsedShmemSegID = UsedShmemSegID; param->UsedShmemSegAddr = UsedShmemSegAddr; param->ShmemLock = ShmemLock; param->ShmemVariableCache = ShmemVariableCache; param->ShmemBackendArray = ShmemBackendArray; #ifndef HAVE_SPINLOCKS param->SpinlockSemaArray = SpinlockSemaArray; #endif param->NamedLWLockTrancheRequests = NamedLWLockTrancheRequests; param->NamedLWLockTrancheArray = NamedLWLockTrancheArray; param->MainLWLockArray = MainLWLockArray; param->ProcStructLock = ProcStructLock; param->ProcGlobal = ProcGlobal; param->AuxiliaryProcs = AuxiliaryProcs; param->PreparedXactProcs = PreparedXactProcs; param->PMSignalState = PMSignalState; param->PostmasterPid = PostmasterPid; param->PgStartTime = PgStartTime; param->PgReloadTime = PgReloadTime; param->first_syslogger_file_time = first_syslogger_file_time; param->redirection_done = redirection_done; param->IsBinaryUpgrade = IsBinaryUpgrade; param->query_id_enabled = query_id_enabled; param->max_safe_fds = max_safe_fds; param->MaxBackends = MaxBackends; #ifdef WIN32 param->PostmasterHandle = PostmasterHandle; if (!write_duplicated_handle(¶m->initial_signal_pipe, pgwin32_create_signal_listener(childPid), childProcess)) return false; #else memcpy(¶m->postmaster_alive_fds, &postmaster_alive_fds, sizeof(postmaster_alive_fds)); #endif memcpy(¶m->syslogPipe, &syslogPipe, sizeof(syslogPipe)); strlcpy(param->my_exec_path, my_exec_path, MAXPGPATH); strlcpy(param->pkglib_path, pkglib_path, MAXPGPATH); return true; } #ifdef WIN32 /* * Duplicate a handle for usage in a child process, and write the child * process instance of the handle to the parameter file. */ static bool write_duplicated_handle(HANDLE *dest, HANDLE src, HANDLE childProcess) { HANDLE hChild = INVALID_HANDLE_VALUE; if (!DuplicateHandle(GetCurrentProcess(), src, childProcess, &hChild, 0, TRUE, DUPLICATE_CLOSE_SOURCE | DUPLICATE_SAME_ACCESS)) { ereport(LOG, (errmsg_internal("could not duplicate handle to be written to backend parameter file: error code %lu", GetLastError()))); return false; } *dest = hChild; return true; } /* * Duplicate a socket for usage in a child process, and write the resulting * structure to the parameter file. * This is required because a number of LSPs (Layered Service Providers) very * common on Windows (antivirus, firewalls, download managers etc) break * straight socket inheritance. */ static bool write_inheritable_socket(InheritableSocket *dest, SOCKET src, pid_t childpid) { dest->origsocket = src; if (src != 0 && src != PGINVALID_SOCKET) { /* Actual socket */ if (WSADuplicateSocket(src, childpid, &dest->wsainfo) != 0) { ereport(LOG, (errmsg("could not duplicate socket %d for use in backend: error code %d", (int) src, WSAGetLastError()))); return false; } } return true; } /* * Read a duplicate socket structure back, and get the socket descriptor. */ static void read_inheritable_socket(SOCKET *dest, InheritableSocket *src) { SOCKET s; if (src->origsocket == PGINVALID_SOCKET || src->origsocket == 0) { /* Not a real socket! */ *dest = src->origsocket; } else { /* Actual socket, so create from structure */ s = WSASocket(FROM_PROTOCOL_INFO, FROM_PROTOCOL_INFO, FROM_PROTOCOL_INFO, &src->wsainfo, 0, 0); if (s == INVALID_SOCKET) { write_stderr("could not create inherited socket: error code %d\n", WSAGetLastError()); exit(1); } *dest = s; /* * To make sure we don't get two references to the same socket, close * the original one. (This would happen when inheritance actually * works.. */ closesocket(src->origsocket); } } #endif static void read_backend_variables(char *id, Port *port) { BackendParameters param; #ifndef WIN32 /* Non-win32 implementation reads from file */ FILE *fp; /* Open file */ fp = AllocateFile(id, PG_BINARY_R); if (!fp) { write_stderr("could not open backend variables file \"%s\": %s\n", id, strerror(errno)); exit(1); } if (fread(¶m, sizeof(param), 1, fp) != 1) { write_stderr("could not read from backend variables file \"%s\": %s\n", id, strerror(errno)); exit(1); } /* Release file */ FreeFile(fp); if (unlink(id) != 0) { write_stderr("could not remove file \"%s\": %s\n", id, strerror(errno)); exit(1); } #else /* Win32 version uses mapped file */ HANDLE paramHandle; BackendParameters *paramp; #ifdef _WIN64 paramHandle = (HANDLE) _atoi64(id); #else paramHandle = (HANDLE) atol(id); #endif paramp = MapViewOfFile(paramHandle, FILE_MAP_READ, 0, 0, 0); if (!paramp) { write_stderr("could not map view of backend variables: error code %lu\n", GetLastError()); exit(1); } memcpy(¶m, paramp, sizeof(BackendParameters)); if (!UnmapViewOfFile(paramp)) { write_stderr("could not unmap view of backend variables: error code %lu\n", GetLastError()); exit(1); } if (!CloseHandle(paramHandle)) { write_stderr("could not close handle to backend parameter variables: error code %lu\n", GetLastError()); exit(1); } #endif restore_backend_variables(¶m, port); } /* Restore critical backend variables from the BackendParameters struct */ static void restore_backend_variables(BackendParameters *param, Port *port) { memcpy(port, ¶m->port, sizeof(Port)); read_inheritable_socket(&port->sock, ¶m->portsocket); SetDataDir(param->DataDir); memcpy(&ListenSocket, ¶m->ListenSocket, sizeof(ListenSocket)); MyCancelKey = param->MyCancelKey; MyPMChildSlot = param->MyPMChildSlot; #ifdef WIN32 ShmemProtectiveRegion = param->ShmemProtectiveRegion; #endif UsedShmemSegID = param->UsedShmemSegID; UsedShmemSegAddr = param->UsedShmemSegAddr; ShmemLock = param->ShmemLock; ShmemVariableCache = param->ShmemVariableCache; ShmemBackendArray = param->ShmemBackendArray; #ifndef HAVE_SPINLOCKS SpinlockSemaArray = param->SpinlockSemaArray; #endif NamedLWLockTrancheRequests = param->NamedLWLockTrancheRequests; NamedLWLockTrancheArray = param->NamedLWLockTrancheArray; MainLWLockArray = param->MainLWLockArray; ProcStructLock = param->ProcStructLock; ProcGlobal = param->ProcGlobal; AuxiliaryProcs = param->AuxiliaryProcs; PreparedXactProcs = param->PreparedXactProcs; PMSignalState = param->PMSignalState; PostmasterPid = param->PostmasterPid; PgStartTime = param->PgStartTime; PgReloadTime = param->PgReloadTime; first_syslogger_file_time = param->first_syslogger_file_time; redirection_done = param->redirection_done; IsBinaryUpgrade = param->IsBinaryUpgrade; query_id_enabled = param->query_id_enabled; max_safe_fds = param->max_safe_fds; MaxBackends = param->MaxBackends; #ifdef WIN32 PostmasterHandle = param->PostmasterHandle; pgwin32_initial_signal_pipe = param->initial_signal_pipe; #else memcpy(&postmaster_alive_fds, ¶m->postmaster_alive_fds, sizeof(postmaster_alive_fds)); #endif memcpy(&syslogPipe, ¶m->syslogPipe, sizeof(syslogPipe)); strlcpy(my_exec_path, param->my_exec_path, MAXPGPATH); strlcpy(pkglib_path, param->pkglib_path, MAXPGPATH); /* * We need to restore fd.c's counts of externally-opened FDs; to avoid * confusion, be sure to do this after restoring max_safe_fds. (Note: * BackendInitialize will handle this for port->sock.) */ #ifndef WIN32 if (postmaster_alive_fds[0] >= 0) ReserveExternalFD(); if (postmaster_alive_fds[1] >= 0) ReserveExternalFD(); #endif } Size ShmemBackendArraySize(void) { return mul_size(MaxLivePostmasterChildren(), sizeof(Backend)); } void ShmemBackendArrayAllocation(void) { Size size = ShmemBackendArraySize(); ShmemBackendArray = (Backend *) ShmemAlloc(size); /* Mark all slots as empty */ memset(ShmemBackendArray, 0, size); } static void ShmemBackendArrayAdd(Backend *bn) { /* The array slot corresponding to my PMChildSlot should be free */ int i = bn->child_slot - 1; Assert(ShmemBackendArray[i].pid == 0); ShmemBackendArray[i] = *bn; } static void ShmemBackendArrayRemove(Backend *bn) { int i = bn->child_slot - 1; Assert(ShmemBackendArray[i].pid == bn->pid); /* Mark the slot as empty */ ShmemBackendArray[i].pid = 0; } #endif /* EXEC_BACKEND */ #ifdef WIN32 /* * Subset implementation of waitpid() for Windows. We assume pid is -1 * (that is, check all child processes) and options is WNOHANG (don't wait). */ static pid_t waitpid(pid_t pid, int *exitstatus, int options) { DWORD dwd; ULONG_PTR key; OVERLAPPED *ovl; /* * Check if there are any dead children. If there are, return the pid of * the first one that died. */ if (GetQueuedCompletionStatus(win32ChildQueue, &dwd, &key, &ovl, 0)) { *exitstatus = (int) key; return dwd; } return -1; } /* * Note! Code below executes on a thread pool! All operations must * be thread safe! Note that elog() and friends must *not* be used. */ static void WINAPI pgwin32_deadchild_callback(PVOID lpParameter, BOOLEAN TimerOrWaitFired) { win32_deadchild_waitinfo *childinfo = (win32_deadchild_waitinfo *) lpParameter; DWORD exitcode; if (TimerOrWaitFired) return; /* timeout. Should never happen, since we use * INFINITE as timeout value. */ /* * Remove handle from wait - required even though it's set to wait only * once */ UnregisterWaitEx(childinfo->waitHandle, NULL); if (!GetExitCodeProcess(childinfo->procHandle, &exitcode)) { /* * Should never happen. Inform user and set a fixed exitcode. */ write_stderr("could not read exit code for process\n"); exitcode = 255; } if (!PostQueuedCompletionStatus(win32ChildQueue, childinfo->procId, (ULONG_PTR) exitcode, NULL)) write_stderr("could not post child completion status\n"); /* * Handle is per-process, so we close it here instead of in the * originating thread */ CloseHandle(childinfo->procHandle); /* * Free struct that was allocated before the call to * RegisterWaitForSingleObject() */ free(childinfo); /* Queue SIGCHLD signal */ pg_queue_signal(SIGCHLD); } #endif /* WIN32 */ /* * Initialize one and only handle for monitoring postmaster death. * * Called once in the postmaster, so that child processes can subsequently * monitor if their parent is dead. */ #ifndef WIN32 #else #endif /* WIN32 */ pg_query-4.2.3/ext/pg_query/include/0000755000004100000410000000000014510636647017475 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/protobuf-c/0000755000004100000410000000000014510636647021555 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/protobuf-c/protobuf-c.h0000644000004100000410000010161214510636647024007 0ustar www-datawww-data/* * 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 */pg_query-4.2.3/ext/pg_query/include/plerrcodes.h0000644000004100000410000004142014510636647022011 0ustar www-datawww-data/* 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 }, { "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 }, { "snapshot_too_old", ERRCODE_SNAPSHOT_TOO_OLD }, { "config_file_error", ERRCODE_CONFIG_FILE_ERROR }, { "lock_file_exists", ERRCODE_LOCK_FILE_EXISTS }, { "fdw_error", ERRCODE_FDW_ERROR }, { "fdw_column_name_not_found", ERRCODE_FDW_COLUMN_NAME_NOT_FOUND }, { "fdw_dynamic_parameter_value_needed", ERRCODE_FDW_DYNAMIC_PARAMETER_VALUE_NEEDED }, { "fdw_function_sequence_error", ERRCODE_FDW_FUNCTION_SEQUENCE_ERROR }, { "fdw_inconsistent_descriptor_information", ERRCODE_FDW_INCONSISTENT_DESCRIPTOR_INFORMATION }, { "fdw_invalid_attribute_value", ERRCODE_FDW_INVALID_ATTRIBUTE_VALUE }, { "fdw_invalid_column_name", ERRCODE_FDW_INVALID_COLUMN_NAME }, { "fdw_invalid_column_number", ERRCODE_FDW_INVALID_COLUMN_NUMBER }, { "fdw_invalid_data_type", ERRCODE_FDW_INVALID_DATA_TYPE }, { "fdw_invalid_data_type_descriptors", ERRCODE_FDW_INVALID_DATA_TYPE_DESCRIPTORS }, { "fdw_invalid_descriptor_field_identifier", ERRCODE_FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER }, { "fdw_invalid_handle", ERRCODE_FDW_INVALID_HANDLE }, { "fdw_invalid_option_index", ERRCODE_FDW_INVALID_OPTION_INDEX }, { "fdw_invalid_option_name", ERRCODE_FDW_INVALID_OPTION_NAME }, { "fdw_invalid_string_length_or_buffer_length", ERRCODE_FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH }, { "fdw_invalid_string_format", ERRCODE_FDW_INVALID_STRING_FORMAT }, { "fdw_invalid_use_of_null_pointer", ERRCODE_FDW_INVALID_USE_OF_NULL_POINTER }, { "fdw_too_many_handles", ERRCODE_FDW_TOO_MANY_HANDLES }, { "fdw_out_of_memory", ERRCODE_FDW_OUT_OF_MEMORY }, { "fdw_no_schemas", ERRCODE_FDW_NO_SCHEMAS }, { "fdw_option_name_not_found", ERRCODE_FDW_OPTION_NAME_NOT_FOUND }, { "fdw_reply_handle", ERRCODE_FDW_REPLY_HANDLE }, { "fdw_schema_not_found", ERRCODE_FDW_SCHEMA_NOT_FOUND }, { "fdw_table_not_found", ERRCODE_FDW_TABLE_NOT_FOUND }, { "fdw_unable_to_create_execution", ERRCODE_FDW_UNABLE_TO_CREATE_EXECUTION }, { "fdw_unable_to_create_reply", ERRCODE_FDW_UNABLE_TO_CREATE_REPLY }, { "fdw_unable_to_establish_connection", ERRCODE_FDW_UNABLE_TO_ESTABLISH_CONNECTION }, { "plpgsql_error", ERRCODE_PLPGSQL_ERROR }, { "raise_exception", ERRCODE_RAISE_EXCEPTION }, { "no_data_found", ERRCODE_NO_DATA_FOUND }, { "too_many_rows", ERRCODE_TOO_MANY_ROWS }, { "assert_failure", ERRCODE_ASSERT_FAILURE }, { "internal_error", ERRCODE_INTERNAL_ERROR }, { "data_corrupted", ERRCODE_DATA_CORRUPTED }, { "index_corrupted", ERRCODE_INDEX_CORRUPTED }, pg_query-4.2.3/ext/pg_query/include/pg_query_fingerprint_defs.c0000644000004100000410000157117414510636647025124 0ustar www-datawww-datastatic 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 _fingerprintVar(FingerprintContext *ctx, const Var *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintConst(FingerprintContext *ctx, const Const *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintParam(FingerprintContext *ctx, const Param *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAggref(FingerprintContext *ctx, const Aggref *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintGroupingFunc(FingerprintContext *ctx, const GroupingFunc *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintWindowFunc(FingerprintContext *ctx, const WindowFunc *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSubscriptingRef(FingerprintContext *ctx, const SubscriptingRef *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintFuncExpr(FingerprintContext *ctx, const FuncExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintNamedArgExpr(FingerprintContext *ctx, const NamedArgExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintOpExpr(FingerprintContext *ctx, const OpExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintScalarArrayOpExpr(FingerprintContext *ctx, const ScalarArrayOpExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintBoolExpr(FingerprintContext *ctx, const BoolExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSubLink(FingerprintContext *ctx, const SubLink *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSubPlan(FingerprintContext *ctx, const SubPlan *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlternativeSubPlan(FingerprintContext *ctx, const AlternativeSubPlan *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintFieldSelect(FingerprintContext *ctx, const FieldSelect *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintFieldStore(FingerprintContext *ctx, const FieldStore *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRelabelType(FingerprintContext *ctx, const RelabelType *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCoerceViaIO(FingerprintContext *ctx, const CoerceViaIO *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintArrayCoerceExpr(FingerprintContext *ctx, const ArrayCoerceExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintConvertRowtypeExpr(FingerprintContext *ctx, const ConvertRowtypeExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCollateExpr(FingerprintContext *ctx, const CollateExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCaseExpr(FingerprintContext *ctx, const CaseExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCaseWhen(FingerprintContext *ctx, const CaseWhen *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCaseTestExpr(FingerprintContext *ctx, const CaseTestExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintArrayExpr(FingerprintContext *ctx, const ArrayExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRowExpr(FingerprintContext *ctx, const RowExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRowCompareExpr(FingerprintContext *ctx, const RowCompareExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCoalesceExpr(FingerprintContext *ctx, const CoalesceExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintMinMaxExpr(FingerprintContext *ctx, const MinMaxExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSQLValueFunction(FingerprintContext *ctx, const SQLValueFunction *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintXmlExpr(FingerprintContext *ctx, const XmlExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintNullTest(FingerprintContext *ctx, const NullTest *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintBooleanTest(FingerprintContext *ctx, const BooleanTest *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCoerceToDomain(FingerprintContext *ctx, const CoerceToDomain *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCoerceToDomainValue(FingerprintContext *ctx, const CoerceToDomainValue *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSetToDefault(FingerprintContext *ctx, const SetToDefault *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCurrentOfExpr(FingerprintContext *ctx, const CurrentOfExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintNextValueExpr(FingerprintContext *ctx, const NextValueExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintInferenceElem(FingerprintContext *ctx, const InferenceElem *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintTargetEntry(FingerprintContext *ctx, const TargetEntry *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRangeTblRef(FingerprintContext *ctx, const RangeTblRef *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJoinExpr(FingerprintContext *ctx, const JoinExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintFromExpr(FingerprintContext *ctx, const FromExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintOnConflictExpr(FingerprintContext *ctx, const OnConflictExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintIntoClause(FingerprintContext *ctx, const IntoClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintMergeAction(FingerprintContext *ctx, const MergeAction *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRawStmt(FingerprintContext *ctx, const RawStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintQuery(FingerprintContext *ctx, const Query *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintInsertStmt(FingerprintContext *ctx, const InsertStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDeleteStmt(FingerprintContext *ctx, const DeleteStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintUpdateStmt(FingerprintContext *ctx, const UpdateStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _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 _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 _fingerprintAlterTableStmt(FingerprintContext *ctx, const AlterTableStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterTableCmd(FingerprintContext *ctx, const AlterTableCmd *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterDomainStmt(FingerprintContext *ctx, const AlterDomainStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSetOperationStmt(FingerprintContext *ctx, const SetOperationStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintGrantStmt(FingerprintContext *ctx, const GrantStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintGrantRoleStmt(FingerprintContext *ctx, const GrantRoleStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterDefaultPrivilegesStmt(FingerprintContext *ctx, const AlterDefaultPrivilegesStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintClosePortalStmt(FingerprintContext *ctx, const ClosePortalStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintClusterStmt(FingerprintContext *ctx, const ClusterStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCopyStmt(FingerprintContext *ctx, const CopyStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateStmt(FingerprintContext *ctx, const CreateStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDefineStmt(FingerprintContext *ctx, const DefineStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDropStmt(FingerprintContext *ctx, const DropStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintTruncateStmt(FingerprintContext *ctx, const TruncateStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCommentStmt(FingerprintContext *ctx, const CommentStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintFetchStmt(FingerprintContext *ctx, const FetchStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintIndexStmt(FingerprintContext *ctx, const IndexStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateFunctionStmt(FingerprintContext *ctx, const CreateFunctionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterFunctionStmt(FingerprintContext *ctx, const AlterFunctionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDoStmt(FingerprintContext *ctx, const DoStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRenameStmt(FingerprintContext *ctx, const RenameStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRuleStmt(FingerprintContext *ctx, const RuleStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintNotifyStmt(FingerprintContext *ctx, const NotifyStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintListenStmt(FingerprintContext *ctx, const ListenStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintUnlistenStmt(FingerprintContext *ctx, const UnlistenStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintTransactionStmt(FingerprintContext *ctx, const TransactionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintViewStmt(FingerprintContext *ctx, const ViewStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintLoadStmt(FingerprintContext *ctx, const LoadStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateDomainStmt(FingerprintContext *ctx, const CreateDomainStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreatedbStmt(FingerprintContext *ctx, const CreatedbStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDropdbStmt(FingerprintContext *ctx, const DropdbStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintVacuumStmt(FingerprintContext *ctx, const VacuumStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintExplainStmt(FingerprintContext *ctx, const ExplainStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateTableAsStmt(FingerprintContext *ctx, const CreateTableAsStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateSeqStmt(FingerprintContext *ctx, const CreateSeqStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterSeqStmt(FingerprintContext *ctx, const AlterSeqStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintVariableSetStmt(FingerprintContext *ctx, const VariableSetStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintVariableShowStmt(FingerprintContext *ctx, const VariableShowStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDiscardStmt(FingerprintContext *ctx, const DiscardStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateTrigStmt(FingerprintContext *ctx, const CreateTrigStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreatePLangStmt(FingerprintContext *ctx, const CreatePLangStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateRoleStmt(FingerprintContext *ctx, const CreateRoleStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterRoleStmt(FingerprintContext *ctx, const AlterRoleStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDropRoleStmt(FingerprintContext *ctx, const DropRoleStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintLockStmt(FingerprintContext *ctx, const LockStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintConstraintsSetStmt(FingerprintContext *ctx, const ConstraintsSetStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintReindexStmt(FingerprintContext *ctx, const ReindexStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCheckPointStmt(FingerprintContext *ctx, const CheckPointStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateSchemaStmt(FingerprintContext *ctx, const CreateSchemaStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterDatabaseStmt(FingerprintContext *ctx, const AlterDatabaseStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _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 _fingerprintAlterRoleSetStmt(FingerprintContext *ctx, const AlterRoleSetStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateConversionStmt(FingerprintContext *ctx, const CreateConversionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateCastStmt(FingerprintContext *ctx, const CreateCastStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateOpClassStmt(FingerprintContext *ctx, const CreateOpClassStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateOpFamilyStmt(FingerprintContext *ctx, const CreateOpFamilyStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterOpFamilyStmt(FingerprintContext *ctx, const AlterOpFamilyStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintPrepareStmt(FingerprintContext *ctx, const PrepareStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintExecuteStmt(FingerprintContext *ctx, const ExecuteStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDeallocateStmt(FingerprintContext *ctx, const DeallocateStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDeclareCursorStmt(FingerprintContext *ctx, const DeclareCursorStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateTableSpaceStmt(FingerprintContext *ctx, const CreateTableSpaceStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDropTableSpaceStmt(FingerprintContext *ctx, const DropTableSpaceStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterObjectDependsStmt(FingerprintContext *ctx, const AlterObjectDependsStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterObjectSchemaStmt(FingerprintContext *ctx, const AlterObjectSchemaStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterOwnerStmt(FingerprintContext *ctx, const AlterOwnerStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterOperatorStmt(FingerprintContext *ctx, const AlterOperatorStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterTypeStmt(FingerprintContext *ctx, const AlterTypeStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDropOwnedStmt(FingerprintContext *ctx, const DropOwnedStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintReassignOwnedStmt(FingerprintContext *ctx, const ReassignOwnedStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCompositeTypeStmt(FingerprintContext *ctx, const CompositeTypeStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateEnumStmt(FingerprintContext *ctx, const CreateEnumStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateRangeStmt(FingerprintContext *ctx, const CreateRangeStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterEnumStmt(FingerprintContext *ctx, const AlterEnumStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterTSDictionaryStmt(FingerprintContext *ctx, const AlterTSDictionaryStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterTSConfigurationStmt(FingerprintContext *ctx, const AlterTSConfigurationStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateFdwStmt(FingerprintContext *ctx, const CreateFdwStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterFdwStmt(FingerprintContext *ctx, const AlterFdwStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateForeignServerStmt(FingerprintContext *ctx, const CreateForeignServerStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterForeignServerStmt(FingerprintContext *ctx, const AlterForeignServerStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateUserMappingStmt(FingerprintContext *ctx, const CreateUserMappingStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterUserMappingStmt(FingerprintContext *ctx, const AlterUserMappingStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDropUserMappingStmt(FingerprintContext *ctx, const DropUserMappingStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterTableSpaceOptionsStmt(FingerprintContext *ctx, const AlterTableSpaceOptionsStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterTableMoveAllStmt(FingerprintContext *ctx, const AlterTableMoveAllStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSecLabelStmt(FingerprintContext *ctx, const SecLabelStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateForeignTableStmt(FingerprintContext *ctx, const CreateForeignTableStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintImportForeignSchemaStmt(FingerprintContext *ctx, const ImportForeignSchemaStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateExtensionStmt(FingerprintContext *ctx, const CreateExtensionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterExtensionStmt(FingerprintContext *ctx, const AlterExtensionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterExtensionContentsStmt(FingerprintContext *ctx, const AlterExtensionContentsStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateEventTrigStmt(FingerprintContext *ctx, const CreateEventTrigStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterEventTrigStmt(FingerprintContext *ctx, const AlterEventTrigStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRefreshMatViewStmt(FingerprintContext *ctx, const RefreshMatViewStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintReplicaIdentityStmt(FingerprintContext *ctx, const ReplicaIdentityStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterSystemStmt(FingerprintContext *ctx, const AlterSystemStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreatePolicyStmt(FingerprintContext *ctx, const CreatePolicyStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterPolicyStmt(FingerprintContext *ctx, const AlterPolicyStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateTransformStmt(FingerprintContext *ctx, const CreateTransformStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateAmStmt(FingerprintContext *ctx, const CreateAmStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreatePublicationStmt(FingerprintContext *ctx, const CreatePublicationStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterPublicationStmt(FingerprintContext *ctx, const AlterPublicationStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateSubscriptionStmt(FingerprintContext *ctx, const CreateSubscriptionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterSubscriptionStmt(FingerprintContext *ctx, const AlterSubscriptionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDropSubscriptionStmt(FingerprintContext *ctx, const DropSubscriptionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateStatsStmt(FingerprintContext *ctx, const CreateStatsStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterCollationStmt(FingerprintContext *ctx, const AlterCollationStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCallStmt(FingerprintContext *ctx, const CallStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterStatsStmt(FingerprintContext *ctx, const AlterStatsStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintA_Expr(FingerprintContext *ctx, const A_Expr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintColumnRef(FingerprintContext *ctx, const ColumnRef *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintParamRef(FingerprintContext *ctx, const ParamRef *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintFuncCall(FingerprintContext *ctx, const FuncCall *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintA_Star(FingerprintContext *ctx, const A_Star *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintA_Indices(FingerprintContext *ctx, const A_Indices *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintA_Indirection(FingerprintContext *ctx, const A_Indirection *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintA_ArrayExpr(FingerprintContext *ctx, const A_ArrayExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintResTarget(FingerprintContext *ctx, const ResTarget *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintMultiAssignRef(FingerprintContext *ctx, const MultiAssignRef *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintTypeCast(FingerprintContext *ctx, const TypeCast *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCollateClause(FingerprintContext *ctx, const CollateClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSortBy(FingerprintContext *ctx, const SortBy *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintWindowDef(FingerprintContext *ctx, const WindowDef *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRangeSubselect(FingerprintContext *ctx, const RangeSubselect *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRangeFunction(FingerprintContext *ctx, const RangeFunction *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRangeTableSample(FingerprintContext *ctx, const RangeTableSample *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRangeTableFunc(FingerprintContext *ctx, const RangeTableFunc *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRangeTableFuncCol(FingerprintContext *ctx, const RangeTableFuncCol *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintTypeName(FingerprintContext *ctx, const TypeName *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintColumnDef(FingerprintContext *ctx, const ColumnDef *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintIndexElem(FingerprintContext *ctx, const IndexElem *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintStatsElem(FingerprintContext *ctx, const StatsElem *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintConstraint(FingerprintContext *ctx, const Constraint *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDefElem(FingerprintContext *ctx, const DefElem *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRangeTblEntry(FingerprintContext *ctx, const RangeTblEntry *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRangeTblFunction(FingerprintContext *ctx, const RangeTblFunction *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintTableSampleClause(FingerprintContext *ctx, const TableSampleClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintWithCheckOption(FingerprintContext *ctx, const WithCheckOption *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSortGroupClause(FingerprintContext *ctx, const SortGroupClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintGroupingSet(FingerprintContext *ctx, const GroupingSet *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintWindowClause(FingerprintContext *ctx, const WindowClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintObjectWithArgs(FingerprintContext *ctx, const ObjectWithArgs *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAccessPriv(FingerprintContext *ctx, const AccessPriv *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateOpClassItem(FingerprintContext *ctx, const CreateOpClassItem *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintTableLikeClause(FingerprintContext *ctx, const TableLikeClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintFunctionParameter(FingerprintContext *ctx, const FunctionParameter *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintLockingClause(FingerprintContext *ctx, const LockingClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRowMarkClause(FingerprintContext *ctx, const RowMarkClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintXmlSerialize(FingerprintContext *ctx, const XmlSerialize *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintWithClause(FingerprintContext *ctx, const WithClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintInferClause(FingerprintContext *ctx, const InferClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintOnConflictClause(FingerprintContext *ctx, const OnConflictClause *node, const void *parent, const char *field_name, unsigned int depth); static void _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 _fingerprintRoleSpec(FingerprintContext *ctx, const RoleSpec *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintTriggerTransition(FingerprintContext *ctx, const TriggerTransition *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintPartitionElem(FingerprintContext *ctx, const PartitionElem *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintPartitionSpec(FingerprintContext *ctx, const PartitionSpec *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintPartitionBoundSpec(FingerprintContext *ctx, const PartitionBoundSpec *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintPartitionRangeDatum(FingerprintContext *ctx, const PartitionRangeDatum *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintPartitionCmd(FingerprintContext *ctx, const PartitionCmd *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintVacuumRelation(FingerprintContext *ctx, const VacuumRelation *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintPublicationObjSpec(FingerprintContext *ctx, const PublicationObjSpec *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 _fingerprintInlineCodeBlock(FingerprintContext *ctx, const InlineCodeBlock *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCallContext(FingerprintContext *ctx, const CallContext *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlias(FingerprintContext *ctx, const Alias *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring all fields for fingerprinting } static void _fingerprintRangeVar(FingerprintContext *ctx, const RangeVar *node, const void *parent, const char *field_name, unsigned int depth) { if (node->alias != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "alias"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintAlias(ctx, node->alias, node, "alias", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->catalogname != NULL) { _fingerprintString(ctx, "catalogname"); _fingerprintString(ctx, node->catalogname); } if (node->inh) { _fingerprintString(ctx, "inh"); _fingerprintString(ctx, "true"); } // Intentionally ignoring node->location for fingerprinting if (node->relname != NULL && node->relpersistence != 't') { int len = strlen(node->relname); char *r = palloc0((len + 1) * sizeof(char)); char *p = r; for (int i = 0; i < len; i++) { if (node->relname[i] >= '0' && node->relname[i] <= '9' && ((i + 1 < len && node->relname[i + 1] >= '0' && node->relname[i + 1] <= '9') || (i > 0 && node->relname[i - 1] >= '0' && node->relname[i - 1] <= '9'))) { // Skip } else { *p = node->relname[i]; p++; } } *p = 0; _fingerprintString(ctx, "relname"); _fingerprintString(ctx, r); pfree(r); } if (node->relpersistence != 0) { char buffer[2] = {node->relpersistence, '\0'}; _fingerprintString(ctx, "relpersistence"); _fingerprintString(ctx, buffer); } if (node->schemaname != NULL) { _fingerprintString(ctx, "schemaname"); _fingerprintString(ctx, node->schemaname); } } static void _fingerprintTableFunc(FingerprintContext *ctx, const TableFunc *node, const void *parent, const char *field_name, unsigned int depth) { if (node->colcollations != NULL && node->colcollations->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "colcollations"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->colcollations, node, "colcollations", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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->docexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "docexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->docexpr, node, "docexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (true) { int x; Bitmapset *bms = bms_copy(node->notnulls); _fingerprintString(ctx, "notnulls"); while ((x = bms_first_member(bms)) >= 0) { char buffer[50]; sprintf(buffer, "%d", x); _fingerprintString(ctx, buffer); } bms_free(bms); } if (node->ns_names != NULL && node->ns_names->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "ns_names"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->ns_names, node, "ns_names", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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->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 _fingerprintVar(FingerprintContext *ctx, const Var *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->location for fingerprinting if (node->varattno != 0) { char buffer[50]; sprintf(buffer, "%d", node->varattno); _fingerprintString(ctx, "varattno"); _fingerprintString(ctx, buffer); } if (node->varattnosyn != 0) { char buffer[50]; sprintf(buffer, "%d", node->varattnosyn); _fingerprintString(ctx, "varattnosyn"); _fingerprintString(ctx, buffer); } if (node->varcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->varcollid); _fingerprintString(ctx, "varcollid"); _fingerprintString(ctx, buffer); } if (node->varlevelsup != 0) { char buffer[50]; sprintf(buffer, "%d", node->varlevelsup); _fingerprintString(ctx, "varlevelsup"); _fingerprintString(ctx, buffer); } if (node->varno != 0) { char buffer[50]; sprintf(buffer, "%d", node->varno); _fingerprintString(ctx, "varno"); _fingerprintString(ctx, buffer); } if (node->varnosyn != 0) { char buffer[50]; sprintf(buffer, "%d", node->varnosyn); _fingerprintString(ctx, "varnosyn"); _fingerprintString(ctx, buffer); } if (node->vartype != 0) { char buffer[50]; sprintf(buffer, "%d", node->vartype); _fingerprintString(ctx, "vartype"); _fingerprintString(ctx, buffer); } if (node->vartypmod != 0) { char buffer[50]; sprintf(buffer, "%d", node->vartypmod); _fingerprintString(ctx, "vartypmod"); _fingerprintString(ctx, buffer); } } static void _fingerprintConst(FingerprintContext *ctx, const Const *node, const void *parent, const char *field_name, unsigned int depth) { if (node->constbyval) { _fingerprintString(ctx, "constbyval"); _fingerprintString(ctx, "true"); } if (node->constcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->constcollid); _fingerprintString(ctx, "constcollid"); _fingerprintString(ctx, buffer); } if (node->constisnull) { _fingerprintString(ctx, "constisnull"); _fingerprintString(ctx, "true"); } if (node->constlen != 0) { char buffer[50]; sprintf(buffer, "%d", node->constlen); _fingerprintString(ctx, "constlen"); _fingerprintString(ctx, buffer); } if (node->consttype != 0) { char buffer[50]; sprintf(buffer, "%d", node->consttype); _fingerprintString(ctx, "consttype"); _fingerprintString(ctx, buffer); } if (node->consttypmod != 0) { char buffer[50]; sprintf(buffer, "%d", node->consttypmod); _fingerprintString(ctx, "consttypmod"); _fingerprintString(ctx, buffer); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintParam(FingerprintContext *ctx, const Param *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->location for fingerprinting if (node->paramcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->paramcollid); _fingerprintString(ctx, "paramcollid"); _fingerprintString(ctx, buffer); } if (node->paramid != 0) { char buffer[50]; sprintf(buffer, "%d", node->paramid); _fingerprintString(ctx, "paramid"); _fingerprintString(ctx, buffer); } if (true) { _fingerprintString(ctx, "paramkind"); _fingerprintString(ctx, _enumToStringParamKind(node->paramkind)); } if (node->paramtype != 0) { char buffer[50]; sprintf(buffer, "%d", node->paramtype); _fingerprintString(ctx, "paramtype"); _fingerprintString(ctx, buffer); } if (node->paramtypmod != 0) { char buffer[50]; sprintf(buffer, "%d", node->paramtypmod); _fingerprintString(ctx, "paramtypmod"); _fingerprintString(ctx, buffer); } } static void _fingerprintAggref(FingerprintContext *ctx, const Aggref *node, const void *parent, const char *field_name, unsigned int depth) { if (node->aggargtypes != NULL && node->aggargtypes->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "aggargtypes"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->aggargtypes, node, "aggargtypes", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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->aggtranstype != 0) { char buffer[50]; sprintf(buffer, "%d", node->aggtranstype); _fingerprintString(ctx, "aggtranstype"); _fingerprintString(ctx, buffer); } if (node->aggtype != 0) { char buffer[50]; sprintf(buffer, "%d", node->aggtype); _fingerprintString(ctx, "aggtype"); _fingerprintString(ctx, buffer); } if (node->aggvariadic) { _fingerprintString(ctx, "aggvariadic"); _fingerprintString(ctx, "true"); } if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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); } 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); } // 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->winagg) { _fingerprintString(ctx, "winagg"); _fingerprintString(ctx, "true"); } if (node->wincollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->wincollid); _fingerprintString(ctx, "wincollid"); _fingerprintString(ctx, buffer); } if (node->winfnoid != 0) { char buffer[50]; sprintf(buffer, "%d", node->winfnoid); _fingerprintString(ctx, "winfnoid"); _fingerprintString(ctx, buffer); } if (node->winref != 0) { char buffer[50]; sprintf(buffer, "%d", node->winref); _fingerprintString(ctx, "winref"); _fingerprintString(ctx, buffer); } if (node->winstar) { _fingerprintString(ctx, "winstar"); _fingerprintString(ctx, "true"); } if (node->wintype != 0) { char buffer[50]; sprintf(buffer, "%d", node->wintype); _fingerprintString(ctx, "wintype"); _fingerprintString(ctx, buffer); } } static void _fingerprintSubscriptingRef(FingerprintContext *ctx, const SubscriptingRef *node, const void *parent, const char *field_name, unsigned int depth) { if (node->refassgnexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "refassgnexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->refassgnexpr, node, "refassgnexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->refcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->refcollid); _fingerprintString(ctx, "refcollid"); _fingerprintString(ctx, buffer); } if (node->refcontainertype != 0) { char buffer[50]; sprintf(buffer, "%d", node->refcontainertype); _fingerprintString(ctx, "refcontainertype"); _fingerprintString(ctx, buffer); } if (node->refelemtype != 0) { char buffer[50]; sprintf(buffer, "%d", node->refelemtype); _fingerprintString(ctx, "refelemtype"); _fingerprintString(ctx, buffer); } if (node->refexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "refexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->refexpr, node, "refexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->reflowerindexpr != NULL && node->reflowerindexpr->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "reflowerindexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->reflowerindexpr, node, "reflowerindexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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->opfuncid != 0) { char buffer[50]; sprintf(buffer, "%d", node->opfuncid); _fingerprintString(ctx, "opfuncid"); _fingerprintString(ctx, buffer); } if (node->opno != 0) { char buffer[50]; sprintf(buffer, "%d", node->opno); _fingerprintString(ctx, "opno"); _fingerprintString(ctx, buffer); } if (node->opresulttype != 0) { char buffer[50]; sprintf(buffer, "%d", node->opresulttype); _fingerprintString(ctx, "opresulttype"); _fingerprintString(ctx, buffer); } if (node->opretset) { _fingerprintString(ctx, "opretset"); _fingerprintString(ctx, "true"); } } static void _fingerprintScalarArrayOpExpr(FingerprintContext *ctx, const ScalarArrayOpExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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->hashfuncid != 0) { char buffer[50]; sprintf(buffer, "%d", node->hashfuncid); _fingerprintString(ctx, "hashfuncid"); _fingerprintString(ctx, buffer); } 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->negfuncid != 0) { char buffer[50]; sprintf(buffer, "%d", node->negfuncid); _fingerprintString(ctx, "negfuncid"); _fingerprintString(ctx, buffer); } if (node->opfuncid != 0) { char buffer[50]; sprintf(buffer, "%d", node->opfuncid); _fingerprintString(ctx, "opfuncid"); _fingerprintString(ctx, buffer); } if (node->opno != 0) { char buffer[50]; sprintf(buffer, "%d", node->opno); _fingerprintString(ctx, "opno"); _fingerprintString(ctx, buffer); } if (node->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); } // 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 _fingerprintNullTest(FingerprintContext *ctx, const NullTest *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->argisrow) { _fingerprintString(ctx, "argisrow"); _fingerprintString(ctx, "true"); } // Intentionally ignoring node->location for fingerprinting if (true) { _fingerprintString(ctx, "nulltesttype"); _fingerprintString(ctx, _enumToStringNullTestType(node->nulltesttype)); } } static void _fingerprintBooleanTest(FingerprintContext *ctx, const BooleanTest *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "booltesttype"); _fingerprintString(ctx, _enumToStringBoolTestType(node->booltesttype)); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintCoerceToDomain(FingerprintContext *ctx, const CoerceToDomain *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "coercionformat"); _fingerprintString(ctx, _enumToStringCoercionForm(node->coercionformat)); } // Intentionally ignoring node->location for fingerprinting if (node->resultcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->resultcollid); _fingerprintString(ctx, "resultcollid"); _fingerprintString(ctx, buffer); } if (node->resulttype != 0) { char buffer[50]; sprintf(buffer, "%d", node->resulttype); _fingerprintString(ctx, "resulttype"); _fingerprintString(ctx, buffer); } if (node->resulttypmod != 0) { char buffer[50]; sprintf(buffer, "%d", node->resulttypmod); _fingerprintString(ctx, "resulttypmod"); _fingerprintString(ctx, buffer); } } static void _fingerprintCoerceToDomainValue(FingerprintContext *ctx, const CoerceToDomainValue *node, const void *parent, const char *field_name, unsigned int depth) { if (node->collation != 0) { char buffer[50]; sprintf(buffer, "%d", node->collation); _fingerprintString(ctx, "collation"); _fingerprintString(ctx, buffer); } // Intentionally ignoring node->location for fingerprinting if (node->typeId != 0) { char buffer[50]; sprintf(buffer, "%d", node->typeId); _fingerprintString(ctx, "typeId"); _fingerprintString(ctx, buffer); } if (node->typeMod != 0) { char buffer[50]; sprintf(buffer, "%d", node->typeMod); _fingerprintString(ctx, "typeMod"); _fingerprintString(ctx, buffer); } } static void _fingerprintSetToDefault(FingerprintContext *ctx, const SetToDefault *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring all fields for fingerprinting } static void _fingerprintCurrentOfExpr(FingerprintContext *ctx, const CurrentOfExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->cursor_name != NULL) { _fingerprintString(ctx, "cursor_name"); _fingerprintString(ctx, node->cursor_name); } if (node->cursor_param != 0) { char buffer[50]; sprintf(buffer, "%d", node->cursor_param); _fingerprintString(ctx, "cursor_param"); _fingerprintString(ctx, buffer); } if (node->cvarno != 0) { char buffer[50]; sprintf(buffer, "%d", node->cvarno); _fingerprintString(ctx, "cvarno"); _fingerprintString(ctx, buffer); } } static void _fingerprintNextValueExpr(FingerprintContext *ctx, const NextValueExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->seqid != 0) { char buffer[50]; sprintf(buffer, "%d", node->seqid); _fingerprintString(ctx, "seqid"); _fingerprintString(ctx, buffer); } if (node->typeId != 0) { char buffer[50]; sprintf(buffer, "%d", node->typeId); _fingerprintString(ctx, "typeId"); _fingerprintString(ctx, buffer); } } static void _fingerprintInferenceElem(FingerprintContext *ctx, const InferenceElem *node, const void *parent, const char *field_name, unsigned int depth) { if (node->expr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "expr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->expr, node, "expr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->infercollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->infercollid); _fingerprintString(ctx, "infercollid"); _fingerprintString(ctx, buffer); } if (node->inferopclass != 0) { char buffer[50]; sprintf(buffer, "%d", node->inferopclass); _fingerprintString(ctx, "inferopclass"); _fingerprintString(ctx, buffer); } } static void _fingerprintTargetEntry(FingerprintContext *ctx, const TargetEntry *node, const void *parent, const char *field_name, unsigned int depth) { if (node->expr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "expr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->expr, node, "expr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->resjunk) { _fingerprintString(ctx, "resjunk"); _fingerprintString(ctx, "true"); } if (node->resname != NULL) { _fingerprintString(ctx, "resname"); _fingerprintString(ctx, node->resname); } if (node->resno != 0) { char buffer[50]; sprintf(buffer, "%d", node->resno); _fingerprintString(ctx, "resno"); _fingerprintString(ctx, buffer); } if (node->resorigcol != 0) { char buffer[50]; sprintf(buffer, "%d", node->resorigcol); _fingerprintString(ctx, "resorigcol"); _fingerprintString(ctx, buffer); } if (node->resorigtbl != 0) { char buffer[50]; sprintf(buffer, "%d", node->resorigtbl); _fingerprintString(ctx, "resorigtbl"); _fingerprintString(ctx, buffer); } if (node->ressortgroupref != 0) { char buffer[50]; sprintf(buffer, "%d", node->ressortgroupref); _fingerprintString(ctx, "ressortgroupref"); _fingerprintString(ctx, buffer); } } static void _fingerprintRangeTblRef(FingerprintContext *ctx, const RangeTblRef *node, const void *parent, const char *field_name, unsigned int depth) { if (node->rtindex != 0) { char buffer[50]; sprintf(buffer, "%d", node->rtindex); _fingerprintString(ctx, "rtindex"); _fingerprintString(ctx, buffer); } } static void _fingerprintJoinExpr(FingerprintContext *ctx, const JoinExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->alias != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "alias"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintAlias(ctx, node->alias, node, "alias", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->isNatural) { _fingerprintString(ctx, "isNatural"); _fingerprintString(ctx, "true"); } if (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 _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 _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 (node->matched) { _fingerprintString(ctx, "matched"); _fingerprintString(ctx, "true"); } 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 _fingerprintRawStmt(FingerprintContext *ctx, const RawStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->stmt != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "stmt"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->stmt, node, "stmt", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->stmt_len for fingerprinting // Intentionally ignoring node->stmt_location for fingerprinting } static void _fingerprintQuery(FingerprintContext *ctx, const Query *node, const void *parent, const char *field_name, unsigned int depth) { if (node->canSetTag) { _fingerprintString(ctx, "canSetTag"); _fingerprintString(ctx, "true"); } if (true) { _fingerprintString(ctx, "commandType"); _fingerprintString(ctx, _enumToStringCmdType(node->commandType)); } if (node->constraintDeps != NULL && node->constraintDeps->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "constraintDeps"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->constraintDeps, node, "constraintDeps", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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->mergeUseOuterJoin) { _fingerprintString(ctx, "mergeUseOuterJoin"); _fingerprintString(ctx, "true"); } if (node->onConflict != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "onConflict"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintOnConflictExpr(ctx, node->onConflict, node, "onConflict", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "override"); _fingerprintString(ctx, _enumToStringOverridingKind(node->override)); } if (node->queryId != 0) { char buffer[50]; sprintf(buffer, "%ld", node->queryId); _fingerprintString(ctx, "queryId"); _fingerprintString(ctx, buffer); } if (true) { _fingerprintString(ctx, "querySource"); _fingerprintString(ctx, _enumToStringQuerySource(node->querySource)); } if (node->resultRelation != 0) { char buffer[50]; sprintf(buffer, "%d", node->resultRelation); _fingerprintString(ctx, "resultRelation"); _fingerprintString(ctx, buffer); } if (node->returningList != NULL && node->returningList->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "returningList"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->returningList, node, "returningList", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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->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 _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->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 _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 _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 _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 _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 _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 _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 _fingerprintGrantRoleStmt(FingerprintContext *ctx, const GrantRoleStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->admin_opt) { _fingerprintString(ctx, "admin_opt"); _fingerprintString(ctx, "true"); } if (true) { _fingerprintString(ctx, "behavior"); _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->granted_roles != NULL && node->granted_roles->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "granted_roles"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->granted_roles, node, "granted_roles", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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"); } } 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 _fingerprintClosePortalStmt(FingerprintContext *ctx, const ClosePortalStmt *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->portalname for fingerprinting } static void _fingerprintClusterStmt(FingerprintContext *ctx, const ClusterStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->indexname != NULL) { _fingerprintString(ctx, "indexname"); _fingerprintString(ctx, node->indexname); } if (node->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 _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 _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 _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 _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 _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->oldFirstRelfilenodeSubid != 0) { char buffer[50]; sprintf(buffer, "%d", node->oldFirstRelfilenodeSubid); _fingerprintString(ctx, "oldFirstRelfilenodeSubid"); _fingerprintString(ctx, buffer); } if (node->oldNode != 0) { char buffer[50]; sprintf(buffer, "%d", node->oldNode); _fingerprintString(ctx, "oldNode"); _fingerprintString(ctx, buffer); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 _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 _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 _fingerprintRenameStmt(FingerprintContext *ctx, const RenameStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "behavior"); _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); } if (node->newname != NULL) { _fingerprintString(ctx, "newname"); _fingerprintString(ctx, node->newname); } if (node->object != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "object"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->object, node, "object", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "relationType"); _fingerprintString(ctx, _enumToStringObjectType(node->relationType)); } if (true) { _fingerprintString(ctx, "renameType"); _fingerprintString(ctx, _enumToStringObjectType(node->renameType)); } if (node->subname != NULL) { _fingerprintString(ctx, "subname"); _fingerprintString(ctx, node->subname); } } static void _fingerprintRuleStmt(FingerprintContext *ctx, const RuleStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->actions != NULL && node->actions->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "actions"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->actions, node, "actions", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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->options for fingerprinting // Intentionally ignoring node->savepoint_name for fingerprinting } static void _fingerprintViewStmt(FingerprintContext *ctx, const ViewStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->aliases != NULL && node->aliases->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "aliases"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->aliases, node, "aliases", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 _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 _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 _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 _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 _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 _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 _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 _fingerprintDiscardStmt(FingerprintContext *ctx, const DiscardStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "target"); _fingerprintString(ctx, _enumToStringDiscardMode(node->target)); } } static void _fingerprintCreateTrigStmt(FingerprintContext *ctx, const CreateTrigStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 _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 _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 _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 _fingerprintCheckPointStmt(FingerprintContext *ctx, const CheckPointStmt *node, const void *parent, const char *field_name, unsigned int depth) { } static void _fingerprintCreateSchemaStmt(FingerprintContext *ctx, const CreateSchemaStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->authrole != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "authrole"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRoleSpec(ctx, node->authrole, node, "authrole", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->if_not_exists) { _fingerprintString(ctx, "if_not_exists"); _fingerprintString(ctx, "true"); } if (node->schemaElts != NULL && node->schemaElts->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "schemaElts"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->schemaElts, node, "schemaElts", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 _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 _fingerprintAlterRoleSetStmt(FingerprintContext *ctx, const AlterRoleSetStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->database != NULL) { _fingerprintString(ctx, "database"); _fingerprintString(ctx, node->database); } if (node->role != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "role"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRoleSpec(ctx, node->role, node, "role", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->setstmt != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "setstmt"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintVariableSetStmt(ctx, node->setstmt, node, "setstmt", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateConversionStmt(FingerprintContext *ctx, const CreateConversionStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->conversion_name != NULL && node->conversion_name->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "conversion_name"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->conversion_name, node, "conversion_name", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 _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 _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 _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) { // Intentionally ignoring node->name for fingerprinting } static void _fingerprintDeclareCursorStmt(FingerprintContext *ctx, const DeclareCursorStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->options != 0) { char buffer[50]; sprintf(buffer, "%d", node->options); _fingerprintString(ctx, "options"); _fingerprintString(ctx, buffer); } // Intentionally ignoring node->portalname for fingerprinting if (node->query != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "query"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->query, node, "query", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateTableSpaceStmt(FingerprintContext *ctx, const CreateTableSpaceStmt *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->location for fingerprinting if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 _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 _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 _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 _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 _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 _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 _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 _fingerprintSecLabelStmt(FingerprintContext *ctx, const SecLabelStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->label != NULL) { _fingerprintString(ctx, "label"); _fingerprintString(ctx, node->label); } if (node->object != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "object"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->object, node, "object", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "objtype"); _fingerprintString(ctx, _enumToStringObjectType(node->objtype)); } if (node->provider != NULL) { _fingerprintString(ctx, "provider"); _fingerprintString(ctx, node->provider); } } static void _fingerprintCreateForeignTableStmt(FingerprintContext *ctx, const CreateForeignTableStmt *node, const void *parent, const char *field_name, unsigned int depth) { _fingerprintString(ctx, "base"); _fingerprintCreateStmt(ctx, (const CreateStmt*) &node->base, node, "base", depth); if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 _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 _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 _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 _fingerprintRefreshMatViewStmt(FingerprintContext *ctx, const RefreshMatViewStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->concurrent) { _fingerprintString(ctx, "concurrent"); _fingerprintString(ctx, "true"); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->skipData) { _fingerprintString(ctx, "skipData"); _fingerprintString(ctx, "true"); } } static void _fingerprintReplicaIdentityStmt(FingerprintContext *ctx, const ReplicaIdentityStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->identity_type != 0) { char buffer[2] = {node->identity_type, '\0'}; _fingerprintString(ctx, "identity_type"); _fingerprintString(ctx, buffer); } if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } } static void _fingerprintAlterSystemStmt(FingerprintContext *ctx, const AlterSystemStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->setstmt != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "setstmt"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintVariableSetStmt(ctx, node->setstmt, node, "setstmt", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreatePolicyStmt(FingerprintContext *ctx, const CreatePolicyStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->cmd_name != NULL) { _fingerprintString(ctx, "cmd_name"); _fingerprintString(ctx, node->cmd_name); } if (node->permissive) { _fingerprintString(ctx, "permissive"); _fingerprintString(ctx, "true"); } if (node->policy_name != NULL) { _fingerprintString(ctx, "policy_name"); _fingerprintString(ctx, node->policy_name); } if (node->qual != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "qual"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->qual, node, "qual", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->roles != NULL && node->roles->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "roles"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->roles, node, "roles", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 _fingerprintCreateTransformStmt(FingerprintContext *ctx, const CreateTransformStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->fromsql != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "fromsql"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintObjectWithArgs(ctx, node->fromsql, node, "fromsql", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->lang != NULL) { _fingerprintString(ctx, "lang"); _fingerprintString(ctx, node->lang); } if (node->replace) { _fingerprintString(ctx, "replace"); _fingerprintString(ctx, "true"); } if (node->tosql != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "tosql"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintObjectWithArgs(ctx, node->tosql, node, "tosql", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->type_name != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "type_name"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTypeName(ctx, node->type_name, node, "type_name", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateAmStmt(FingerprintContext *ctx, const CreateAmStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->amname != NULL) { _fingerprintString(ctx, "amname"); _fingerprintString(ctx, node->amname); } if (node->amtype != 0) { char buffer[2] = {node->amtype, '\0'}; _fingerprintString(ctx, "amtype"); _fingerprintString(ctx, buffer); } if (node->handler_name != NULL && node->handler_name->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "handler_name"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->handler_name, node, "handler_name", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 _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); } } 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 _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 _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 _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 != 0) { char buffer[50]; sprintf(buffer, "%d", node->stxstattarget); _fingerprintString(ctx, "stxstattarget"); _fingerprintString(ctx, buffer); } } static void _fingerprintA_Expr(FingerprintContext *ctx, const A_Expr *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "kind"); if (node->kind == AEXPR_OP_ANY || node->kind == AEXPR_IN) _fingerprintString(ctx, "AEXPR_OP"); else _fingerprintString(ctx, _enumToStringA_Expr_Kind(node->kind)); } if (node->lexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "lexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->lexpr, node, "lexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->name != NULL && node->name->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "name"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->name, node, "name", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 _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 _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 _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 _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 _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 _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 _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 _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->typeName != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "typeName"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTypeName(ctx, node->typeName, node, "typeName", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintIndexElem(FingerprintContext *ctx, const IndexElem *node, const void *parent, const char *field_name, unsigned int depth) { if (node->collation != NULL && node->collation->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "collation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->collation, node, "collation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 _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 _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->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 _fingerprintDefElem(FingerprintContext *ctx, const DefElem *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "defaction"); _fingerprintString(ctx, _enumToStringDefElemAction(node->defaction)); } if (node->defname != NULL) { _fingerprintString(ctx, "defname"); _fingerprintString(ctx, node->defname); } if (node->defnamespace != NULL) { _fingerprintString(ctx, "defnamespace"); _fingerprintString(ctx, node->defnamespace); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintRangeTblEntry(FingerprintContext *ctx, const RangeTblEntry *node, const void *parent, const char *field_name, unsigned int depth) { if (node->alias != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "alias"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintAlias(ctx, node->alias, node, "alias", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->checkAsUser != 0) { char buffer[50]; sprintf(buffer, "%d", node->checkAsUser); _fingerprintString(ctx, "checkAsUser"); _fingerprintString(ctx, buffer); } if (node->colcollations != NULL && node->colcollations->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "colcollations"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->colcollations, node, "colcollations", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 (true) { int x; Bitmapset *bms = bms_copy(node->extraUpdatedCols); _fingerprintString(ctx, "extraUpdatedCols"); while ((x = bms_first_member(bms)) >= 0) { char buffer[50]; sprintf(buffer, "%d", x); _fingerprintString(ctx, buffer); } bms_free(bms); } if (node->funcordinality) { _fingerprintString(ctx, "funcordinality"); _fingerprintString(ctx, "true"); } if (node->functions != NULL && node->functions->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "functions"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->functions, node, "functions", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 (true) { int x; Bitmapset *bms = bms_copy(node->insertedCols); _fingerprintString(ctx, "insertedCols"); while ((x = bms_first_member(bms)) >= 0) { char buffer[50]; sprintf(buffer, "%d", x); _fingerprintString(ctx, buffer); } bms_free(bms); } if (node->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->relid != 0) { char buffer[50]; sprintf(buffer, "%d", node->relid); _fingerprintString(ctx, "relid"); _fingerprintString(ctx, buffer); } if (node->relkind != 0) { char buffer[2] = {node->relkind, '\0'}; _fingerprintString(ctx, "relkind"); _fingerprintString(ctx, buffer); } if (node->rellockmode != 0) { char buffer[50]; sprintf(buffer, "%d", node->rellockmode); _fingerprintString(ctx, "rellockmode"); _fingerprintString(ctx, buffer); } if (node->requiredPerms != 0) { char buffer[50]; sprintf(buffer, "%d", node->requiredPerms); _fingerprintString(ctx, "requiredPerms"); _fingerprintString(ctx, buffer); } if (true) { _fingerprintString(ctx, "rtekind"); _fingerprintString(ctx, _enumToStringRTEKind(node->rtekind)); } if (node->securityQuals != NULL && node->securityQuals->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "securityQuals"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->securityQuals, node, "securityQuals", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 (true) { int x; Bitmapset *bms = bms_copy(node->selectedCols); _fingerprintString(ctx, "selectedCols"); while ((x = bms_first_member(bms)) >= 0) { char buffer[50]; sprintf(buffer, "%d", x); _fingerprintString(ctx, buffer); } bms_free(bms); } if (node->self_reference) { _fingerprintString(ctx, "self_reference"); _fingerprintString(ctx, "true"); } if (node->subquery != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "subquery"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintQuery(ctx, node->subquery, node, "subquery", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->tablefunc != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "tablefunc"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTableFunc(ctx, node->tablefunc, node, "tablefunc", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->tablesample != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "tablesample"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTableSampleClause(ctx, node->tablesample, node, "tablesample", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { int x; Bitmapset *bms = bms_copy(node->updatedCols); _fingerprintString(ctx, "updatedCols"); while ((x = bms_first_member(bms)) >= 0) { char buffer[50]; sprintf(buffer, "%d", x); _fingerprintString(ctx, buffer); } bms_free(bms); } if (node->values_lists != NULL && node->values_lists->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "values_lists"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->values_lists, node, "values_lists", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 _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; Bitmapset *bms = bms_copy(node->funcparams); _fingerprintString(ctx, "funcparams"); while ((x = bms_first_member(bms)) >= 0) { char buffer[50]; sprintf(buffer, "%d", x); _fingerprintString(ctx, buffer); } bms_free(bms); } } static void _fingerprintTableSampleClause(FingerprintContext *ctx, const TableSampleClause *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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->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->startInRangeFunc != 0) { char buffer[50]; sprintf(buffer, "%d", node->startInRangeFunc); _fingerprintString(ctx, "startInRangeFunc"); _fingerprintString(ctx, buffer); } if (node->startOffset != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "startOffset"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->startOffset, node, "startOffset", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->winref != 0) { char buffer[50]; sprintf(buffer, "%d", node->winref); _fingerprintString(ctx, "winref"); _fingerprintString(ctx, buffer); } } static void _fingerprintObjectWithArgs(FingerprintContext *ctx, const ObjectWithArgs *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args_unspecified) { _fingerprintString(ctx, "args_unspecified"); _fingerprintString(ctx, "true"); } if (node->objargs != NULL && node->objargs->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "objargs"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->objargs, node, "objargs", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 _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 _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 _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 _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 _fingerprintRowMarkClause(FingerprintContext *ctx, const RowMarkClause *node, const void *parent, const char *field_name, unsigned int depth) { if (node->pushedDown) { _fingerprintString(ctx, "pushedDown"); _fingerprintString(ctx, "true"); } if (node->rti != 0) { char buffer[50]; sprintf(buffer, "%d", node->rti); _fingerprintString(ctx, "rti"); _fingerprintString(ctx, buffer); } if (true) { _fingerprintString(ctx, "strength"); _fingerprintString(ctx, _enumToStringLockClauseStrength(node->strength)); } if (true) { _fingerprintString(ctx, "waitPolicy"); _fingerprintString(ctx, _enumToStringLockWaitPolicy(node->waitPolicy)); } } static void _fingerprintXmlSerialize(FingerprintContext *ctx, const XmlSerialize *node, const void *parent, const char *field_name, unsigned int depth) { if (node->expr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "expr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->expr, node, "expr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->typeName != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "typeName"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTypeName(ctx, node->typeName, node, "typeName", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "xmloption"); _fingerprintString(ctx, _enumToStringXmlOptionType(node->xmloption)); } } static void _fingerprintWithClause(FingerprintContext *ctx, const WithClause *node, const void *parent, const char *field_name, unsigned int depth) { if (node->ctes != NULL && node->ctes->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "ctes"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->ctes, node, "ctes", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 (node->matched) { _fingerprintString(ctx, "matched"); _fingerprintString(ctx, "true"); } 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 _fingerprintRoleSpec(FingerprintContext *ctx, const RoleSpec *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->location for fingerprinting if (node->rolename != NULL) { _fingerprintString(ctx, "rolename"); _fingerprintString(ctx, node->rolename); } if (true) { _fingerprintString(ctx, "roletype"); _fingerprintString(ctx, _enumToStringRoleSpecType(node->roletype)); } } static void _fingerprintTriggerTransition(FingerprintContext *ctx, const TriggerTransition *node, const void *parent, const char *field_name, unsigned int depth) { if (node->isNew) { _fingerprintString(ctx, "isNew"); _fingerprintString(ctx, "true"); } if (node->isTable) { _fingerprintString(ctx, "isTable"); _fingerprintString(ctx, "true"); } if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } } static void _fingerprintPartitionElem(FingerprintContext *ctx, const PartitionElem *node, const void *parent, const char *field_name, unsigned int depth) { if (node->collation != NULL && node->collation->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "collation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->collation, node, "collation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 (node->strategy != NULL) { _fingerprintString(ctx, "strategy"); _fingerprintString(ctx, node->strategy); } } static void _fingerprintPartitionBoundSpec(FingerprintContext *ctx, const PartitionBoundSpec *node, const void *parent, const char *field_name, unsigned int depth) { if (node->is_default) { _fingerprintString(ctx, "is_default"); _fingerprintString(ctx, "true"); } if (node->listdatums != NULL && node->listdatums->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "listdatums"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->listdatums, node, "listdatums", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(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 _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 _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 _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 _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 _fingerprintInlineCodeBlock(FingerprintContext *ctx, const InlineCodeBlock *node, const void *parent, const char *field_name, unsigned int depth) { if (node->atomic) { _fingerprintString(ctx, "atomic"); _fingerprintString(ctx, "true"); } if (node->langIsTrusted) { _fingerprintString(ctx, "langIsTrusted"); _fingerprintString(ctx, "true"); } if (node->langOid != 0) { char buffer[50]; sprintf(buffer, "%d", node->langOid); _fingerprintString(ctx, "langOid"); _fingerprintString(ctx, buffer); } if (node->source_text != NULL) { _fingerprintString(ctx, "source_text"); _fingerprintString(ctx, node->source_text); } } static void _fingerprintCallContext(FingerprintContext *ctx, const CallContext *node, const void *parent, const char *field_name, unsigned int depth) { if (node->atomic) { _fingerprintString(ctx, "atomic"); _fingerprintString(ctx, "true"); } } pg_query-4.2.3/ext/pg_query/include/pg_query_outfuncs_defs.c0000644000004100000410000034541014510636647024432 0ustar www-datawww-data// 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 _outVar(OUT_TYPE(Var, Var) out_node, const Var *node); static void _outParam(OUT_TYPE(Param, Param) out_node, const Param *node); static void _outAggref(OUT_TYPE(Aggref, Aggref) out_node, const Aggref *node); static void _outGroupingFunc(OUT_TYPE(GroupingFunc, GroupingFunc) out_node, const GroupingFunc *node); static void _outWindowFunc(OUT_TYPE(WindowFunc, WindowFunc) out_node, const WindowFunc *node); static void _outSubscriptingRef(OUT_TYPE(SubscriptingRef, SubscriptingRef) out_node, const SubscriptingRef *node); static void _outFuncExpr(OUT_TYPE(FuncExpr, FuncExpr) out_node, const FuncExpr *node); static void _outNamedArgExpr(OUT_TYPE(NamedArgExpr, NamedArgExpr) out_node, const NamedArgExpr *node); static void _outOpExpr(OUT_TYPE(OpExpr, OpExpr) out_node, const OpExpr *node); static void _outDistinctExpr(OUT_TYPE(DistinctExpr, DistinctExpr) out_node, const DistinctExpr *node); static void _outNullIfExpr(OUT_TYPE(NullIfExpr, NullIfExpr) out_node, const NullIfExpr *node); static void _outScalarArrayOpExpr(OUT_TYPE(ScalarArrayOpExpr, ScalarArrayOpExpr) out_node, const ScalarArrayOpExpr *node); static void _outBoolExpr(OUT_TYPE(BoolExpr, BoolExpr) out_node, const BoolExpr *node); static void _outSubLink(OUT_TYPE(SubLink, SubLink) out_node, const SubLink *node); static void _outSubPlan(OUT_TYPE(SubPlan, SubPlan) out_node, const SubPlan *node); static void _outAlternativeSubPlan(OUT_TYPE(AlternativeSubPlan, AlternativeSubPlan) out_node, const AlternativeSubPlan *node); static void _outFieldSelect(OUT_TYPE(FieldSelect, FieldSelect) out_node, const FieldSelect *node); static void _outFieldStore(OUT_TYPE(FieldStore, FieldStore) out_node, const FieldStore *node); static void _outRelabelType(OUT_TYPE(RelabelType, RelabelType) out_node, const RelabelType *node); static void _outCoerceViaIO(OUT_TYPE(CoerceViaIO, CoerceViaIO) out_node, const CoerceViaIO *node); static void _outArrayCoerceExpr(OUT_TYPE(ArrayCoerceExpr, ArrayCoerceExpr) out_node, const ArrayCoerceExpr *node); static void _outConvertRowtypeExpr(OUT_TYPE(ConvertRowtypeExpr, ConvertRowtypeExpr) out_node, const ConvertRowtypeExpr *node); static void _outCollateExpr(OUT_TYPE(CollateExpr, CollateExpr) out_node, const CollateExpr *node); static void _outCaseExpr(OUT_TYPE(CaseExpr, CaseExpr) out_node, const CaseExpr *node); static void _outCaseWhen(OUT_TYPE(CaseWhen, CaseWhen) out_node, const CaseWhen *node); static void _outCaseTestExpr(OUT_TYPE(CaseTestExpr, CaseTestExpr) out_node, const CaseTestExpr *node); static void _outArrayExpr(OUT_TYPE(ArrayExpr, ArrayExpr) out_node, const ArrayExpr *node); static void _outRowExpr(OUT_TYPE(RowExpr, RowExpr) out_node, const RowExpr *node); static void _outRowCompareExpr(OUT_TYPE(RowCompareExpr, RowCompareExpr) out_node, const RowCompareExpr *node); static void _outCoalesceExpr(OUT_TYPE(CoalesceExpr, CoalesceExpr) out_node, const CoalesceExpr *node); static void _outMinMaxExpr(OUT_TYPE(MinMaxExpr, MinMaxExpr) out_node, const MinMaxExpr *node); static void _outSQLValueFunction(OUT_TYPE(SQLValueFunction, SQLValueFunction) out_node, const SQLValueFunction *node); static void _outXmlExpr(OUT_TYPE(XmlExpr, XmlExpr) out_node, const XmlExpr *node); static void _outNullTest(OUT_TYPE(NullTest, NullTest) out_node, const NullTest *node); static void _outBooleanTest(OUT_TYPE(BooleanTest, BooleanTest) out_node, const BooleanTest *node); static void _outCoerceToDomain(OUT_TYPE(CoerceToDomain, CoerceToDomain) out_node, const CoerceToDomain *node); static void _outCoerceToDomainValue(OUT_TYPE(CoerceToDomainValue, CoerceToDomainValue) out_node, const CoerceToDomainValue *node); static void _outSetToDefault(OUT_TYPE(SetToDefault, SetToDefault) out_node, const SetToDefault *node); static void _outCurrentOfExpr(OUT_TYPE(CurrentOfExpr, CurrentOfExpr) out_node, const CurrentOfExpr *node); static void _outNextValueExpr(OUT_TYPE(NextValueExpr, NextValueExpr) out_node, const NextValueExpr *node); static void _outInferenceElem(OUT_TYPE(InferenceElem, InferenceElem) out_node, const InferenceElem *node); static void _outTargetEntry(OUT_TYPE(TargetEntry, TargetEntry) out_node, const TargetEntry *node); static void _outRangeTblRef(OUT_TYPE(RangeTblRef, RangeTblRef) out_node, const RangeTblRef *node); static void _outJoinExpr(OUT_TYPE(JoinExpr, JoinExpr) out_node, const JoinExpr *node); static void _outFromExpr(OUT_TYPE(FromExpr, FromExpr) out_node, const FromExpr *node); static void _outOnConflictExpr(OUT_TYPE(OnConflictExpr, OnConflictExpr) out_node, const OnConflictExpr *node); static void _outIntoClause(OUT_TYPE(IntoClause, IntoClause) out_node, const IntoClause *node); static void _outMergeAction(OUT_TYPE(MergeAction, MergeAction) out_node, const MergeAction *node); static void _outRawStmt(OUT_TYPE(RawStmt, RawStmt) out_node, const RawStmt *node); static void _outQuery(OUT_TYPE(Query, Query) out_node, const Query *node); static void _outInsertStmt(OUT_TYPE(InsertStmt, InsertStmt) out_node, const InsertStmt *node); static void _outDeleteStmt(OUT_TYPE(DeleteStmt, DeleteStmt) out_node, const DeleteStmt *node); static void _outUpdateStmt(OUT_TYPE(UpdateStmt, UpdateStmt) out_node, const UpdateStmt *node); static void _outMergeStmt(OUT_TYPE(MergeStmt, MergeStmt) out_node, const MergeStmt *node); static void _outSelectStmt(OUT_TYPE(SelectStmt, SelectStmt) out_node, const SelectStmt *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 _outAlterTableStmt(OUT_TYPE(AlterTableStmt, AlterTableStmt) out_node, const AlterTableStmt *node); static void _outAlterTableCmd(OUT_TYPE(AlterTableCmd, AlterTableCmd) out_node, const AlterTableCmd *node); static void _outAlterDomainStmt(OUT_TYPE(AlterDomainStmt, AlterDomainStmt) out_node, const AlterDomainStmt *node); static void _outSetOperationStmt(OUT_TYPE(SetOperationStmt, SetOperationStmt) out_node, const SetOperationStmt *node); static void _outGrantStmt(OUT_TYPE(GrantStmt, GrantStmt) out_node, const GrantStmt *node); static void _outGrantRoleStmt(OUT_TYPE(GrantRoleStmt, GrantRoleStmt) out_node, const GrantRoleStmt *node); static void _outAlterDefaultPrivilegesStmt(OUT_TYPE(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt) out_node, const AlterDefaultPrivilegesStmt *node); static void _outClosePortalStmt(OUT_TYPE(ClosePortalStmt, ClosePortalStmt) out_node, const ClosePortalStmt *node); static void _outClusterStmt(OUT_TYPE(ClusterStmt, ClusterStmt) out_node, const ClusterStmt *node); static void _outCopyStmt(OUT_TYPE(CopyStmt, CopyStmt) out_node, const CopyStmt *node); static void _outCreateStmt(OUT_TYPE(CreateStmt, CreateStmt) out_node, const CreateStmt *node); static void _outDefineStmt(OUT_TYPE(DefineStmt, DefineStmt) out_node, const DefineStmt *node); static void _outDropStmt(OUT_TYPE(DropStmt, DropStmt) out_node, const DropStmt *node); static void _outTruncateStmt(OUT_TYPE(TruncateStmt, TruncateStmt) out_node, const TruncateStmt *node); static void _outCommentStmt(OUT_TYPE(CommentStmt, CommentStmt) out_node, const CommentStmt *node); static void _outFetchStmt(OUT_TYPE(FetchStmt, FetchStmt) out_node, const FetchStmt *node); static void _outIndexStmt(OUT_TYPE(IndexStmt, IndexStmt) out_node, const IndexStmt *node); static void _outCreateFunctionStmt(OUT_TYPE(CreateFunctionStmt, CreateFunctionStmt) out_node, const CreateFunctionStmt *node); static void _outAlterFunctionStmt(OUT_TYPE(AlterFunctionStmt, AlterFunctionStmt) out_node, const AlterFunctionStmt *node); static void _outDoStmt(OUT_TYPE(DoStmt, DoStmt) out_node, const DoStmt *node); static void _outRenameStmt(OUT_TYPE(RenameStmt, RenameStmt) out_node, const RenameStmt *node); static void _outRuleStmt(OUT_TYPE(RuleStmt, RuleStmt) out_node, const RuleStmt *node); static void _outNotifyStmt(OUT_TYPE(NotifyStmt, NotifyStmt) out_node, const NotifyStmt *node); static void _outListenStmt(OUT_TYPE(ListenStmt, ListenStmt) out_node, const ListenStmt *node); static void _outUnlistenStmt(OUT_TYPE(UnlistenStmt, UnlistenStmt) out_node, const UnlistenStmt *node); static void _outTransactionStmt(OUT_TYPE(TransactionStmt, TransactionStmt) out_node, const TransactionStmt *node); static void _outViewStmt(OUT_TYPE(ViewStmt, ViewStmt) out_node, const ViewStmt *node); static void _outLoadStmt(OUT_TYPE(LoadStmt, LoadStmt) out_node, const LoadStmt *node); static void _outCreateDomainStmt(OUT_TYPE(CreateDomainStmt, CreateDomainStmt) out_node, const CreateDomainStmt *node); static void _outCreatedbStmt(OUT_TYPE(CreatedbStmt, CreatedbStmt) out_node, const CreatedbStmt *node); static void _outDropdbStmt(OUT_TYPE(DropdbStmt, DropdbStmt) out_node, const DropdbStmt *node); static void _outVacuumStmt(OUT_TYPE(VacuumStmt, VacuumStmt) out_node, const VacuumStmt *node); static void _outExplainStmt(OUT_TYPE(ExplainStmt, ExplainStmt) out_node, const ExplainStmt *node); static void _outCreateTableAsStmt(OUT_TYPE(CreateTableAsStmt, CreateTableAsStmt) out_node, const CreateTableAsStmt *node); static void _outCreateSeqStmt(OUT_TYPE(CreateSeqStmt, CreateSeqStmt) out_node, const CreateSeqStmt *node); static void _outAlterSeqStmt(OUT_TYPE(AlterSeqStmt, AlterSeqStmt) out_node, const AlterSeqStmt *node); static void _outVariableSetStmt(OUT_TYPE(VariableSetStmt, VariableSetStmt) out_node, const VariableSetStmt *node); static void _outVariableShowStmt(OUT_TYPE(VariableShowStmt, VariableShowStmt) out_node, const VariableShowStmt *node); static void _outDiscardStmt(OUT_TYPE(DiscardStmt, DiscardStmt) out_node, const DiscardStmt *node); static void _outCreateTrigStmt(OUT_TYPE(CreateTrigStmt, CreateTrigStmt) out_node, const CreateTrigStmt *node); static void _outCreatePLangStmt(OUT_TYPE(CreatePLangStmt, CreatePLangStmt) out_node, const CreatePLangStmt *node); static void _outCreateRoleStmt(OUT_TYPE(CreateRoleStmt, CreateRoleStmt) out_node, const CreateRoleStmt *node); static void _outAlterRoleStmt(OUT_TYPE(AlterRoleStmt, AlterRoleStmt) out_node, const AlterRoleStmt *node); static void _outDropRoleStmt(OUT_TYPE(DropRoleStmt, DropRoleStmt) out_node, const DropRoleStmt *node); static void _outLockStmt(OUT_TYPE(LockStmt, LockStmt) out_node, const LockStmt *node); static void _outConstraintsSetStmt(OUT_TYPE(ConstraintsSetStmt, ConstraintsSetStmt) out_node, const ConstraintsSetStmt *node); static void _outReindexStmt(OUT_TYPE(ReindexStmt, ReindexStmt) out_node, const ReindexStmt *node); static void _outCheckPointStmt(OUT_TYPE(CheckPointStmt, CheckPointStmt) out_node, const CheckPointStmt *node); static void _outCreateSchemaStmt(OUT_TYPE(CreateSchemaStmt, CreateSchemaStmt) out_node, const CreateSchemaStmt *node); static void _outAlterDatabaseStmt(OUT_TYPE(AlterDatabaseStmt, AlterDatabaseStmt) out_node, const AlterDatabaseStmt *node); static void _outAlterDatabaseRefreshCollStmt(OUT_TYPE(AlterDatabaseRefreshCollStmt, AlterDatabaseRefreshCollStmt) out_node, const AlterDatabaseRefreshCollStmt *node); static void _outAlterDatabaseSetStmt(OUT_TYPE(AlterDatabaseSetStmt, AlterDatabaseSetStmt) out_node, const AlterDatabaseSetStmt *node); static void _outAlterRoleSetStmt(OUT_TYPE(AlterRoleSetStmt, AlterRoleSetStmt) out_node, const AlterRoleSetStmt *node); static void _outCreateConversionStmt(OUT_TYPE(CreateConversionStmt, CreateConversionStmt) out_node, const CreateConversionStmt *node); static void _outCreateCastStmt(OUT_TYPE(CreateCastStmt, CreateCastStmt) out_node, const CreateCastStmt *node); static void _outCreateOpClassStmt(OUT_TYPE(CreateOpClassStmt, CreateOpClassStmt) out_node, const CreateOpClassStmt *node); static void _outCreateOpFamilyStmt(OUT_TYPE(CreateOpFamilyStmt, CreateOpFamilyStmt) out_node, const CreateOpFamilyStmt *node); static void _outAlterOpFamilyStmt(OUT_TYPE(AlterOpFamilyStmt, AlterOpFamilyStmt) out_node, const AlterOpFamilyStmt *node); static void _outPrepareStmt(OUT_TYPE(PrepareStmt, PrepareStmt) out_node, const PrepareStmt *node); static void _outExecuteStmt(OUT_TYPE(ExecuteStmt, ExecuteStmt) out_node, const ExecuteStmt *node); static void _outDeallocateStmt(OUT_TYPE(DeallocateStmt, DeallocateStmt) out_node, const DeallocateStmt *node); static void _outDeclareCursorStmt(OUT_TYPE(DeclareCursorStmt, DeclareCursorStmt) out_node, const DeclareCursorStmt *node); static void _outCreateTableSpaceStmt(OUT_TYPE(CreateTableSpaceStmt, CreateTableSpaceStmt) out_node, const CreateTableSpaceStmt *node); static void _outDropTableSpaceStmt(OUT_TYPE(DropTableSpaceStmt, DropTableSpaceStmt) out_node, const DropTableSpaceStmt *node); static void _outAlterObjectDependsStmt(OUT_TYPE(AlterObjectDependsStmt, AlterObjectDependsStmt) out_node, const AlterObjectDependsStmt *node); static void _outAlterObjectSchemaStmt(OUT_TYPE(AlterObjectSchemaStmt, AlterObjectSchemaStmt) out_node, const AlterObjectSchemaStmt *node); static void _outAlterOwnerStmt(OUT_TYPE(AlterOwnerStmt, AlterOwnerStmt) out_node, const AlterOwnerStmt *node); static void _outAlterOperatorStmt(OUT_TYPE(AlterOperatorStmt, AlterOperatorStmt) out_node, const AlterOperatorStmt *node); static void _outAlterTypeStmt(OUT_TYPE(AlterTypeStmt, AlterTypeStmt) out_node, const AlterTypeStmt *node); static void _outDropOwnedStmt(OUT_TYPE(DropOwnedStmt, DropOwnedStmt) out_node, const DropOwnedStmt *node); static void _outReassignOwnedStmt(OUT_TYPE(ReassignOwnedStmt, ReassignOwnedStmt) out_node, const ReassignOwnedStmt *node); static void _outCompositeTypeStmt(OUT_TYPE(CompositeTypeStmt, CompositeTypeStmt) out_node, const CompositeTypeStmt *node); static void _outCreateEnumStmt(OUT_TYPE(CreateEnumStmt, CreateEnumStmt) out_node, const CreateEnumStmt *node); static void _outCreateRangeStmt(OUT_TYPE(CreateRangeStmt, CreateRangeStmt) out_node, const CreateRangeStmt *node); static void _outAlterEnumStmt(OUT_TYPE(AlterEnumStmt, AlterEnumStmt) out_node, const AlterEnumStmt *node); static void _outAlterTSDictionaryStmt(OUT_TYPE(AlterTSDictionaryStmt, AlterTSDictionaryStmt) out_node, const AlterTSDictionaryStmt *node); static void _outAlterTSConfigurationStmt(OUT_TYPE(AlterTSConfigurationStmt, AlterTSConfigurationStmt) out_node, const AlterTSConfigurationStmt *node); static void _outCreateFdwStmt(OUT_TYPE(CreateFdwStmt, CreateFdwStmt) out_node, const CreateFdwStmt *node); static void _outAlterFdwStmt(OUT_TYPE(AlterFdwStmt, AlterFdwStmt) out_node, const AlterFdwStmt *node); static void _outCreateForeignServerStmt(OUT_TYPE(CreateForeignServerStmt, CreateForeignServerStmt) out_node, const CreateForeignServerStmt *node); static void _outAlterForeignServerStmt(OUT_TYPE(AlterForeignServerStmt, AlterForeignServerStmt) out_node, const AlterForeignServerStmt *node); static void _outCreateUserMappingStmt(OUT_TYPE(CreateUserMappingStmt, CreateUserMappingStmt) out_node, const CreateUserMappingStmt *node); static void _outAlterUserMappingStmt(OUT_TYPE(AlterUserMappingStmt, AlterUserMappingStmt) out_node, const AlterUserMappingStmt *node); static void _outDropUserMappingStmt(OUT_TYPE(DropUserMappingStmt, DropUserMappingStmt) out_node, const DropUserMappingStmt *node); static void _outAlterTableSpaceOptionsStmt(OUT_TYPE(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt) out_node, const AlterTableSpaceOptionsStmt *node); static void _outAlterTableMoveAllStmt(OUT_TYPE(AlterTableMoveAllStmt, AlterTableMoveAllStmt) out_node, const AlterTableMoveAllStmt *node); static void _outSecLabelStmt(OUT_TYPE(SecLabelStmt, SecLabelStmt) out_node, const SecLabelStmt *node); static void _outCreateForeignTableStmt(OUT_TYPE(CreateForeignTableStmt, CreateForeignTableStmt) out_node, const CreateForeignTableStmt *node); static void _outImportForeignSchemaStmt(OUT_TYPE(ImportForeignSchemaStmt, ImportForeignSchemaStmt) out_node, const ImportForeignSchemaStmt *node); static void _outCreateExtensionStmt(OUT_TYPE(CreateExtensionStmt, CreateExtensionStmt) out_node, const CreateExtensionStmt *node); static void _outAlterExtensionStmt(OUT_TYPE(AlterExtensionStmt, AlterExtensionStmt) out_node, const AlterExtensionStmt *node); static void _outAlterExtensionContentsStmt(OUT_TYPE(AlterExtensionContentsStmt, AlterExtensionContentsStmt) out_node, const AlterExtensionContentsStmt *node); static void _outCreateEventTrigStmt(OUT_TYPE(CreateEventTrigStmt, CreateEventTrigStmt) out_node, const CreateEventTrigStmt *node); static void _outAlterEventTrigStmt(OUT_TYPE(AlterEventTrigStmt, AlterEventTrigStmt) out_node, const AlterEventTrigStmt *node); static void _outRefreshMatViewStmt(OUT_TYPE(RefreshMatViewStmt, RefreshMatViewStmt) out_node, const RefreshMatViewStmt *node); static void _outReplicaIdentityStmt(OUT_TYPE(ReplicaIdentityStmt, ReplicaIdentityStmt) out_node, const ReplicaIdentityStmt *node); static void _outAlterSystemStmt(OUT_TYPE(AlterSystemStmt, AlterSystemStmt) out_node, const AlterSystemStmt *node); static void _outCreatePolicyStmt(OUT_TYPE(CreatePolicyStmt, CreatePolicyStmt) out_node, const CreatePolicyStmt *node); static void _outAlterPolicyStmt(OUT_TYPE(AlterPolicyStmt, AlterPolicyStmt) out_node, const AlterPolicyStmt *node); static void _outCreateTransformStmt(OUT_TYPE(CreateTransformStmt, CreateTransformStmt) out_node, const CreateTransformStmt *node); static void _outCreateAmStmt(OUT_TYPE(CreateAmStmt, CreateAmStmt) out_node, const CreateAmStmt *node); static void _outCreatePublicationStmt(OUT_TYPE(CreatePublicationStmt, CreatePublicationStmt) out_node, const CreatePublicationStmt *node); static void _outAlterPublicationStmt(OUT_TYPE(AlterPublicationStmt, AlterPublicationStmt) out_node, const AlterPublicationStmt *node); static void _outCreateSubscriptionStmt(OUT_TYPE(CreateSubscriptionStmt, CreateSubscriptionStmt) out_node, const CreateSubscriptionStmt *node); static void _outAlterSubscriptionStmt(OUT_TYPE(AlterSubscriptionStmt, AlterSubscriptionStmt) out_node, const AlterSubscriptionStmt *node); static void _outDropSubscriptionStmt(OUT_TYPE(DropSubscriptionStmt, DropSubscriptionStmt) out_node, const DropSubscriptionStmt *node); static void _outCreateStatsStmt(OUT_TYPE(CreateStatsStmt, CreateStatsStmt) out_node, const CreateStatsStmt *node); static void _outAlterCollationStmt(OUT_TYPE(AlterCollationStmt, AlterCollationStmt) out_node, const AlterCollationStmt *node); static void _outCallStmt(OUT_TYPE(CallStmt, CallStmt) out_node, const CallStmt *node); static void _outAlterStatsStmt(OUT_TYPE(AlterStatsStmt, AlterStatsStmt) out_node, const AlterStatsStmt *node); static void _outAExpr(OUT_TYPE(A_Expr, AExpr) out_node, const A_Expr *node); static void _outColumnRef(OUT_TYPE(ColumnRef, ColumnRef) out_node, const ColumnRef *node); static void _outParamRef(OUT_TYPE(ParamRef, ParamRef) out_node, const ParamRef *node); static void _outFuncCall(OUT_TYPE(FuncCall, FuncCall) out_node, const FuncCall *node); static void _outAStar(OUT_TYPE(A_Star, AStar) out_node, const A_Star *node); static void _outAIndices(OUT_TYPE(A_Indices, AIndices) out_node, const A_Indices *node); static void _outAIndirection(OUT_TYPE(A_Indirection, AIndirection) out_node, const A_Indirection *node); static void _outAArrayExpr(OUT_TYPE(A_ArrayExpr, AArrayExpr) out_node, const A_ArrayExpr *node); static void _outResTarget(OUT_TYPE(ResTarget, ResTarget) out_node, const ResTarget *node); static void _outMultiAssignRef(OUT_TYPE(MultiAssignRef, MultiAssignRef) out_node, const MultiAssignRef *node); static void _outTypeCast(OUT_TYPE(TypeCast, TypeCast) out_node, const TypeCast *node); static void _outCollateClause(OUT_TYPE(CollateClause, CollateClause) out_node, const CollateClause *node); static void _outSortBy(OUT_TYPE(SortBy, SortBy) out_node, const SortBy *node); static void _outWindowDef(OUT_TYPE(WindowDef, WindowDef) out_node, const WindowDef *node); static void _outRangeSubselect(OUT_TYPE(RangeSubselect, RangeSubselect) out_node, const RangeSubselect *node); static void _outRangeFunction(OUT_TYPE(RangeFunction, RangeFunction) out_node, const RangeFunction *node); static void _outRangeTableSample(OUT_TYPE(RangeTableSample, RangeTableSample) out_node, const RangeTableSample *node); static void _outRangeTableFunc(OUT_TYPE(RangeTableFunc, RangeTableFunc) out_node, const RangeTableFunc *node); static void _outRangeTableFuncCol(OUT_TYPE(RangeTableFuncCol, RangeTableFuncCol) out_node, const RangeTableFuncCol *node); static void _outTypeName(OUT_TYPE(TypeName, TypeName) out_node, const TypeName *node); static void _outColumnDef(OUT_TYPE(ColumnDef, ColumnDef) out_node, const ColumnDef *node); static void _outIndexElem(OUT_TYPE(IndexElem, IndexElem) out_node, const IndexElem *node); static void _outStatsElem(OUT_TYPE(StatsElem, StatsElem) out_node, const StatsElem *node); static void _outConstraint(OUT_TYPE(Constraint, Constraint) out_node, const Constraint *node); static void _outDefElem(OUT_TYPE(DefElem, DefElem) out_node, const DefElem *node); static void _outRangeTblEntry(OUT_TYPE(RangeTblEntry, RangeTblEntry) out_node, const RangeTblEntry *node); static void _outRangeTblFunction(OUT_TYPE(RangeTblFunction, RangeTblFunction) out_node, const RangeTblFunction *node); static void _outTableSampleClause(OUT_TYPE(TableSampleClause, TableSampleClause) out_node, const TableSampleClause *node); static void _outWithCheckOption(OUT_TYPE(WithCheckOption, WithCheckOption) out_node, const WithCheckOption *node); static void _outSortGroupClause(OUT_TYPE(SortGroupClause, SortGroupClause) out_node, const SortGroupClause *node); static void _outGroupingSet(OUT_TYPE(GroupingSet, GroupingSet) out_node, const GroupingSet *node); static void _outWindowClause(OUT_TYPE(WindowClause, WindowClause) out_node, const WindowClause *node); static void _outObjectWithArgs(OUT_TYPE(ObjectWithArgs, ObjectWithArgs) out_node, const ObjectWithArgs *node); static void _outAccessPriv(OUT_TYPE(AccessPriv, AccessPriv) out_node, const AccessPriv *node); static void _outCreateOpClassItem(OUT_TYPE(CreateOpClassItem, CreateOpClassItem) out_node, const CreateOpClassItem *node); static void _outTableLikeClause(OUT_TYPE(TableLikeClause, TableLikeClause) out_node, const TableLikeClause *node); static void _outFunctionParameter(OUT_TYPE(FunctionParameter, FunctionParameter) out_node, const FunctionParameter *node); static void _outLockingClause(OUT_TYPE(LockingClause, LockingClause) out_node, const LockingClause *node); static void _outRowMarkClause(OUT_TYPE(RowMarkClause, RowMarkClause) out_node, const RowMarkClause *node); static void _outXmlSerialize(OUT_TYPE(XmlSerialize, XmlSerialize) out_node, const XmlSerialize *node); static void _outWithClause(OUT_TYPE(WithClause, WithClause) out_node, const WithClause *node); static void _outInferClause(OUT_TYPE(InferClause, InferClause) out_node, const InferClause *node); static void _outOnConflictClause(OUT_TYPE(OnConflictClause, OnConflictClause) out_node, const OnConflictClause *node); static void _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 _outRoleSpec(OUT_TYPE(RoleSpec, RoleSpec) out_node, const RoleSpec *node); static void _outTriggerTransition(OUT_TYPE(TriggerTransition, TriggerTransition) out_node, const TriggerTransition *node); static void _outPartitionElem(OUT_TYPE(PartitionElem, PartitionElem) out_node, const PartitionElem *node); static void _outPartitionSpec(OUT_TYPE(PartitionSpec, PartitionSpec) out_node, const PartitionSpec *node); static void _outPartitionBoundSpec(OUT_TYPE(PartitionBoundSpec, PartitionBoundSpec) out_node, const PartitionBoundSpec *node); static void _outPartitionRangeDatum(OUT_TYPE(PartitionRangeDatum, PartitionRangeDatum) out_node, const PartitionRangeDatum *node); static void _outPartitionCmd(OUT_TYPE(PartitionCmd, PartitionCmd) out_node, const PartitionCmd *node); static void _outVacuumRelation(OUT_TYPE(VacuumRelation, VacuumRelation) out_node, const VacuumRelation *node); static void _outPublicationObjSpec(OUT_TYPE(PublicationObjSpec, PublicationObjSpec) out_node, const PublicationObjSpec *node); static void _outPublicationTable(OUT_TYPE(PublicationTable, PublicationTable) out_node, const PublicationTable *node); static void _outInlineCodeBlock(OUT_TYPE(InlineCodeBlock, InlineCodeBlock) out_node, const InlineCodeBlock *node); static void _outCallContext(OUT_TYPE(CallContext, CallContext) out_node, const CallContext *node); static void _outAlias(OUT_TYPE(Alias, Alias) out, const Alias *node) { WRITE_STRING_FIELD(aliasname, aliasname, aliasname); WRITE_LIST_FIELD(colnames, colnames, colnames); } static void _outRangeVar(OUT_TYPE(RangeVar, RangeVar) out, const RangeVar *node) { WRITE_STRING_FIELD(catalogname, catalogname, catalogname); WRITE_STRING_FIELD(schemaname, schemaname, schemaname); WRITE_STRING_FIELD(relname, relname, relname); WRITE_BOOL_FIELD(inh, inh, inh); WRITE_CHAR_FIELD(relpersistence, relpersistence, relpersistence); WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); WRITE_INT_FIELD(location, location, location); } static void _outTableFunc(OUT_TYPE(TableFunc, TableFunc) out, const TableFunc *node) { WRITE_LIST_FIELD(ns_uris, ns_uris, ns_uris); WRITE_LIST_FIELD(ns_names, ns_names, ns_names); WRITE_NODE_PTR_FIELD(docexpr, docexpr, docexpr); WRITE_NODE_PTR_FIELD(rowexpr, rowexpr, rowexpr); WRITE_LIST_FIELD(colnames, colnames, colnames); WRITE_LIST_FIELD(coltypes, coltypes, coltypes); WRITE_LIST_FIELD(coltypmods, coltypmods, coltypmods); WRITE_LIST_FIELD(colcollations, colcollations, colcollations); WRITE_LIST_FIELD(colexprs, colexprs, colexprs); WRITE_LIST_FIELD(coldefexprs, coldefexprs, coldefexprs); WRITE_BITMAPSET_FIELD(notnulls, notnulls, notnulls); WRITE_INT_FIELD(ordinalitycol, ordinalitycol, ordinalitycol); WRITE_INT_FIELD(location, location, location); } static void _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_UINT_FIELD(varlevelsup, varlevelsup, varlevelsup); WRITE_UINT_FIELD(varnosyn, varnosyn, varnosyn); WRITE_INT_FIELD(varattnosyn, varattnosyn, varattnosyn); WRITE_INT_FIELD(location, location, location); } static void _outParam(OUT_TYPE(Param, Param) out, const Param *node) { WRITE_ENUM_FIELD(ParamKind, paramkind, paramkind, paramkind); WRITE_INT_FIELD(paramid, paramid, paramid); WRITE_UINT_FIELD(paramtype, paramtype, paramtype); WRITE_INT_FIELD(paramtypmod, paramtypmod, paramtypmod); WRITE_UINT_FIELD(paramcollid, paramcollid, paramcollid); WRITE_INT_FIELD(location, location, location); } static void _outAggref(OUT_TYPE(Aggref, Aggref) out, const Aggref *node) { WRITE_UINT_FIELD(aggfnoid, aggfnoid, aggfnoid); WRITE_UINT_FIELD(aggtype, aggtype, aggtype); WRITE_UINT_FIELD(aggcollid, aggcollid, aggcollid); WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); WRITE_UINT_FIELD(aggtranstype, aggtranstype, aggtranstype); WRITE_LIST_FIELD(aggargtypes, aggargtypes, aggargtypes); WRITE_LIST_FIELD(aggdirectargs, aggdirectargs, aggdirectargs); WRITE_LIST_FIELD(args, args, args); WRITE_LIST_FIELD(aggorder, aggorder, aggorder); WRITE_LIST_FIELD(aggdistinct, aggdistinct, aggdistinct); WRITE_NODE_PTR_FIELD(aggfilter, aggfilter, aggfilter); WRITE_BOOL_FIELD(aggstar, aggstar, aggstar); WRITE_BOOL_FIELD(aggvariadic, aggvariadic, aggvariadic); WRITE_CHAR_FIELD(aggkind, aggkind, aggkind); WRITE_UINT_FIELD(agglevelsup, agglevelsup, agglevelsup); WRITE_ENUM_FIELD(AggSplit, aggsplit, aggsplit, aggsplit); WRITE_INT_FIELD(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_LIST_FIELD(cols, cols, cols); WRITE_UINT_FIELD(agglevelsup, agglevelsup, agglevelsup); WRITE_INT_FIELD(location, location, location); } static void _outWindowFunc(OUT_TYPE(WindowFunc, WindowFunc) out, const WindowFunc *node) { WRITE_UINT_FIELD(winfnoid, winfnoid, winfnoid); WRITE_UINT_FIELD(wintype, wintype, wintype); WRITE_UINT_FIELD(wincollid, wincollid, wincollid); WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); WRITE_LIST_FIELD(args, args, args); WRITE_NODE_PTR_FIELD(aggfilter, aggfilter, aggfilter); WRITE_UINT_FIELD(winref, winref, winref); WRITE_BOOL_FIELD(winstar, winstar, winstar); WRITE_BOOL_FIELD(winagg, winagg, winagg); WRITE_INT_FIELD(location, location, location); } static void _outSubscriptingRef(OUT_TYPE(SubscriptingRef, SubscriptingRef) out, const SubscriptingRef *node) { WRITE_UINT_FIELD(refcontainertype, refcontainertype, refcontainertype); WRITE_UINT_FIELD(refelemtype, refelemtype, refelemtype); WRITE_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(opfuncid, opfuncid, opfuncid); WRITE_UINT_FIELD(opresulttype, opresulttype, opresulttype); WRITE_BOOL_FIELD(opretset, opretset, opretset); WRITE_UINT_FIELD(opcollid, opcollid, opcollid); WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); WRITE_LIST_FIELD(args, args, args); WRITE_INT_FIELD(location, location, location); } static void _outDistinctExpr(OUT_TYPE(DistinctExpr, DistinctExpr) out, const DistinctExpr *node) { WRITE_UINT_FIELD(opno, opno, opno); WRITE_UINT_FIELD(opfuncid, opfuncid, opfuncid); WRITE_UINT_FIELD(opresulttype, opresulttype, opresulttype); WRITE_BOOL_FIELD(opretset, opretset, opretset); WRITE_UINT_FIELD(opcollid, opcollid, opcollid); WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); WRITE_LIST_FIELD(args, args, args); WRITE_INT_FIELD(location, location, location); } static void _outNullIfExpr(OUT_TYPE(NullIfExpr, NullIfExpr) out, const NullIfExpr *node) { WRITE_UINT_FIELD(opno, opno, opno); WRITE_UINT_FIELD(opfuncid, opfuncid, opfuncid); WRITE_UINT_FIELD(opresulttype, opresulttype, opresulttype); WRITE_BOOL_FIELD(opretset, opretset, opretset); WRITE_UINT_FIELD(opcollid, opcollid, opcollid); WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); WRITE_LIST_FIELD(args, args, args); WRITE_INT_FIELD(location, location, location); } static void _outScalarArrayOpExpr(OUT_TYPE(ScalarArrayOpExpr, ScalarArrayOpExpr) out, const ScalarArrayOpExpr *node) { WRITE_UINT_FIELD(opno, opno, opno); WRITE_UINT_FIELD(opfuncid, opfuncid, opfuncid); WRITE_UINT_FIELD(hashfuncid, hashfuncid, hashfuncid); WRITE_UINT_FIELD(negfuncid, negfuncid, negfuncid); WRITE_BOOL_FIELD(use_or, useOr, useOr); WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); WRITE_LIST_FIELD(args, args, args); WRITE_INT_FIELD(location, location, location); } static void _outBoolExpr(OUT_TYPE(BoolExpr, BoolExpr) out, const BoolExpr *node) { WRITE_ENUM_FIELD(BoolExprType, boolop, boolop, boolop); WRITE_LIST_FIELD(args, args, args); WRITE_INT_FIELD(location, location, location); } static void _outSubLink(OUT_TYPE(SubLink, SubLink) out, const SubLink *node) { WRITE_ENUM_FIELD(SubLinkType, sub_link_type, subLinkType, subLinkType); WRITE_INT_FIELD(sub_link_id, subLinkId, subLinkId); WRITE_NODE_PTR_FIELD(testexpr, testexpr, testexpr); WRITE_LIST_FIELD(oper_name, operName, operName); WRITE_NODE_PTR_FIELD(subselect, subselect, subselect); WRITE_INT_FIELD(location, location, location); } static void _outSubPlan(OUT_TYPE(SubPlan, SubPlan) out, const SubPlan *node) { WRITE_ENUM_FIELD(SubLinkType, sub_link_type, subLinkType, subLinkType); WRITE_NODE_PTR_FIELD(testexpr, testexpr, testexpr); WRITE_LIST_FIELD(param_ids, paramIds, paramIds); WRITE_INT_FIELD(plan_id, plan_id, plan_id); WRITE_STRING_FIELD(plan_name, plan_name, plan_name); WRITE_UINT_FIELD(first_col_type, firstColType, firstColType); WRITE_INT_FIELD(first_col_typmod, firstColTypmod, firstColTypmod); WRITE_UINT_FIELD(first_col_collation, firstColCollation, firstColCollation); WRITE_BOOL_FIELD(use_hash_table, useHashTable, useHashTable); WRITE_BOOL_FIELD(unknown_eq_false, unknownEqFalse, unknownEqFalse); WRITE_BOOL_FIELD(parallel_safe, parallel_safe, parallel_safe); WRITE_LIST_FIELD(set_param, setParam, setParam); WRITE_LIST_FIELD(par_param, parParam, parParam); WRITE_LIST_FIELD(args, args, args); WRITE_FLOAT_FIELD(startup_cost, startup_cost, startup_cost); WRITE_FLOAT_FIELD(per_call_cost, per_call_cost, per_call_cost); } static void _outAlternativeSubPlan(OUT_TYPE(AlternativeSubPlan, AlternativeSubPlan) out, const AlternativeSubPlan *node) { WRITE_LIST_FIELD(subplans, subplans, subplans); } static void _outFieldSelect(OUT_TYPE(FieldSelect, FieldSelect) out, const FieldSelect *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_INT_FIELD(fieldnum, fieldnum, fieldnum); WRITE_UINT_FIELD(resulttype, resulttype, resulttype); WRITE_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); WRITE_UINT_FIELD(resultcollid, resultcollid, resultcollid); } static void _outFieldStore(OUT_TYPE(FieldStore, FieldStore) out, const FieldStore *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_LIST_FIELD(newvals, newvals, newvals); WRITE_LIST_FIELD(fieldnums, fieldnums, fieldnums); WRITE_UINT_FIELD(resulttype, resulttype, resulttype); } static void _outRelabelType(OUT_TYPE(RelabelType, RelabelType) out, const RelabelType *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_UINT_FIELD(resulttype, resulttype, resulttype); WRITE_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); WRITE_UINT_FIELD(resultcollid, resultcollid, resultcollid); WRITE_ENUM_FIELD(CoercionForm, relabelformat, relabelformat, relabelformat); WRITE_INT_FIELD(location, location, location); } static void _outCoerceViaIO(OUT_TYPE(CoerceViaIO, CoerceViaIO) out, const CoerceViaIO *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_UINT_FIELD(resulttype, resulttype, resulttype); WRITE_UINT_FIELD(resultcollid, resultcollid, resultcollid); WRITE_ENUM_FIELD(CoercionForm, coerceformat, coerceformat, coerceformat); WRITE_INT_FIELD(location, location, location); } static void _outArrayCoerceExpr(OUT_TYPE(ArrayCoerceExpr, ArrayCoerceExpr) out, const ArrayCoerceExpr *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_NODE_PTR_FIELD(elemexpr, elemexpr, elemexpr); WRITE_UINT_FIELD(resulttype, resulttype, resulttype); WRITE_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); WRITE_UINT_FIELD(resultcollid, resultcollid, resultcollid); WRITE_ENUM_FIELD(CoercionForm, coerceformat, coerceformat, coerceformat); WRITE_INT_FIELD(location, location, location); } static void _outConvertRowtypeExpr(OUT_TYPE(ConvertRowtypeExpr, ConvertRowtypeExpr) out, const ConvertRowtypeExpr *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_UINT_FIELD(resulttype, resulttype, resulttype); WRITE_ENUM_FIELD(CoercionForm, convertformat, convertformat, convertformat); WRITE_INT_FIELD(location, location, location); } static void _outCollateExpr(OUT_TYPE(CollateExpr, CollateExpr) out, const CollateExpr *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_UINT_FIELD(coll_oid, collOid, collOid); WRITE_INT_FIELD(location, location, location); } static void _outCaseExpr(OUT_TYPE(CaseExpr, CaseExpr) out, const CaseExpr *node) { WRITE_UINT_FIELD(casetype, casetype, casetype); WRITE_UINT_FIELD(casecollid, casecollid, casecollid); WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_LIST_FIELD(args, args, args); WRITE_NODE_PTR_FIELD(defresult, defresult, defresult); WRITE_INT_FIELD(location, location, location); } static void _outCaseWhen(OUT_TYPE(CaseWhen, CaseWhen) out, const CaseWhen *node) { WRITE_NODE_PTR_FIELD(expr, expr, expr); WRITE_NODE_PTR_FIELD(result, result, result); WRITE_INT_FIELD(location, location, location); } static void _outCaseTestExpr(OUT_TYPE(CaseTestExpr, CaseTestExpr) out, const CaseTestExpr *node) { WRITE_UINT_FIELD(type_id, typeId, typeId); WRITE_INT_FIELD(type_mod, typeMod, typeMod); WRITE_UINT_FIELD(collation, collation, collation); } static void _outArrayExpr(OUT_TYPE(ArrayExpr, ArrayExpr) out, const ArrayExpr *node) { WRITE_UINT_FIELD(array_typeid, array_typeid, array_typeid); WRITE_UINT_FIELD(array_collid, array_collid, array_collid); WRITE_UINT_FIELD(element_typeid, element_typeid, element_typeid); WRITE_LIST_FIELD(elements, elements, elements); WRITE_BOOL_FIELD(multidims, multidims, multidims); WRITE_INT_FIELD(location, location, location); } static void _outRowExpr(OUT_TYPE(RowExpr, RowExpr) out, const RowExpr *node) { WRITE_LIST_FIELD(args, args, args); WRITE_UINT_FIELD(row_typeid, row_typeid, row_typeid); WRITE_ENUM_FIELD(CoercionForm, row_format, row_format, row_format); WRITE_LIST_FIELD(colnames, colnames, colnames); WRITE_INT_FIELD(location, location, location); } static void _outRowCompareExpr(OUT_TYPE(RowCompareExpr, RowCompareExpr) out, const RowCompareExpr *node) { WRITE_ENUM_FIELD(RowCompareType, rctype, rctype, rctype); WRITE_LIST_FIELD(opnos, opnos, opnos); WRITE_LIST_FIELD(opfamilies, opfamilies, opfamilies); WRITE_LIST_FIELD(inputcollids, inputcollids, inputcollids); WRITE_LIST_FIELD(largs, largs, largs); WRITE_LIST_FIELD(rargs, rargs, rargs); } static void _outCoalesceExpr(OUT_TYPE(CoalesceExpr, CoalesceExpr) out, const CoalesceExpr *node) { WRITE_UINT_FIELD(coalescetype, coalescetype, coalescetype); WRITE_UINT_FIELD(coalescecollid, coalescecollid, coalescecollid); WRITE_LIST_FIELD(args, args, args); WRITE_INT_FIELD(location, location, location); } static void _outMinMaxExpr(OUT_TYPE(MinMaxExpr, MinMaxExpr) out, const MinMaxExpr *node) { WRITE_UINT_FIELD(minmaxtype, minmaxtype, minmaxtype); WRITE_UINT_FIELD(minmaxcollid, minmaxcollid, minmaxcollid); WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); WRITE_ENUM_FIELD(MinMaxOp, op, op, op); WRITE_LIST_FIELD(args, args, args); WRITE_INT_FIELD(location, location, location); } static void _outSQLValueFunction(OUT_TYPE(SQLValueFunction, SQLValueFunction) out, const SQLValueFunction *node) { WRITE_ENUM_FIELD(SQLValueFunctionOp, op, op, op); WRITE_UINT_FIELD(type, type, type); WRITE_INT_FIELD(typmod, typmod, typmod); WRITE_INT_FIELD(location, location, location); } static void _outXmlExpr(OUT_TYPE(XmlExpr, XmlExpr) out, const XmlExpr *node) { WRITE_ENUM_FIELD(XmlExprOp, op, op, op); WRITE_STRING_FIELD(name, name, name); WRITE_LIST_FIELD(named_args, named_args, named_args); WRITE_LIST_FIELD(arg_names, arg_names, arg_names); WRITE_LIST_FIELD(args, args, args); WRITE_ENUM_FIELD(XmlOptionType, xmloption, xmloption, xmloption); WRITE_UINT_FIELD(type, type, type); WRITE_INT_FIELD(typmod, typmod, typmod); WRITE_INT_FIELD(location, location, location); } static void _outNullTest(OUT_TYPE(NullTest, NullTest) out, const NullTest *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_ENUM_FIELD(NullTestType, nulltesttype, nulltesttype, nulltesttype); WRITE_BOOL_FIELD(argisrow, argisrow, argisrow); WRITE_INT_FIELD(location, location, location); } static void _outBooleanTest(OUT_TYPE(BooleanTest, BooleanTest) out, const BooleanTest *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_ENUM_FIELD(BoolTestType, booltesttype, booltesttype, booltesttype); WRITE_INT_FIELD(location, location, location); } static void _outCoerceToDomain(OUT_TYPE(CoerceToDomain, CoerceToDomain) out, const CoerceToDomain *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_UINT_FIELD(resulttype, resulttype, resulttype); WRITE_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); WRITE_UINT_FIELD(resultcollid, resultcollid, resultcollid); WRITE_ENUM_FIELD(CoercionForm, coercionformat, coercionformat, coercionformat); WRITE_INT_FIELD(location, location, location); } static void _outCoerceToDomainValue(OUT_TYPE(CoerceToDomainValue, CoerceToDomainValue) out, const CoerceToDomainValue *node) { WRITE_UINT_FIELD(type_id, typeId, typeId); WRITE_INT_FIELD(type_mod, typeMod, typeMod); WRITE_UINT_FIELD(collation, collation, collation); WRITE_INT_FIELD(location, location, location); } static void _outSetToDefault(OUT_TYPE(SetToDefault, SetToDefault) out, const SetToDefault *node) { WRITE_UINT_FIELD(type_id, typeId, typeId); WRITE_INT_FIELD(type_mod, typeMod, typeMod); WRITE_UINT_FIELD(collation, collation, collation); WRITE_INT_FIELD(location, location, location); } static void _outCurrentOfExpr(OUT_TYPE(CurrentOfExpr, CurrentOfExpr) out, const CurrentOfExpr *node) { WRITE_UINT_FIELD(cvarno, cvarno, cvarno); WRITE_STRING_FIELD(cursor_name, cursor_name, cursor_name); WRITE_INT_FIELD(cursor_param, cursor_param, cursor_param); } static void _outNextValueExpr(OUT_TYPE(NextValueExpr, NextValueExpr) out, const NextValueExpr *node) { WRITE_UINT_FIELD(seqid, seqid, seqid); WRITE_UINT_FIELD(type_id, typeId, typeId); } static void _outInferenceElem(OUT_TYPE(InferenceElem, InferenceElem) out, const InferenceElem *node) { WRITE_NODE_PTR_FIELD(expr, expr, expr); WRITE_UINT_FIELD(infercollid, infercollid, infercollid); WRITE_UINT_FIELD(inferopclass, inferopclass, inferopclass); } static void _outTargetEntry(OUT_TYPE(TargetEntry, TargetEntry) out, const TargetEntry *node) { WRITE_NODE_PTR_FIELD(expr, expr, expr); WRITE_INT_FIELD(resno, resno, resno); WRITE_STRING_FIELD(resname, resname, resname); WRITE_UINT_FIELD(ressortgroupref, ressortgroupref, ressortgroupref); WRITE_UINT_FIELD(resorigtbl, resorigtbl, resorigtbl); WRITE_INT_FIELD(resorigcol, resorigcol, resorigcol); WRITE_BOOL_FIELD(resjunk, resjunk, resjunk); } static void _outRangeTblRef(OUT_TYPE(RangeTblRef, RangeTblRef) out, const RangeTblRef *node) { WRITE_INT_FIELD(rtindex, rtindex, rtindex); } static void _outJoinExpr(OUT_TYPE(JoinExpr, JoinExpr) out, const JoinExpr *node) { WRITE_ENUM_FIELD(JoinType, jointype, jointype, jointype); WRITE_BOOL_FIELD(is_natural, isNatural, isNatural); WRITE_NODE_PTR_FIELD(larg, larg, larg); WRITE_NODE_PTR_FIELD(rarg, rarg, rarg); WRITE_LIST_FIELD(using_clause, usingClause, usingClause); WRITE_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 _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 _outMergeAction(OUT_TYPE(MergeAction, MergeAction) out, const MergeAction *node) { WRITE_BOOL_FIELD(matched, matched, matched); 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 _outRawStmt(OUT_TYPE(RawStmt, RawStmt) out, const RawStmt *node) { WRITE_NODE_PTR_FIELD(stmt, stmt, stmt); WRITE_INT_FIELD(stmt_location, stmt_location, stmt_location); WRITE_INT_FIELD(stmt_len, stmt_len, stmt_len); } static void _outQuery(OUT_TYPE(Query, Query) out, const Query *node) { WRITE_ENUM_FIELD(CmdType, command_type, commandType, commandType); WRITE_ENUM_FIELD(QuerySource, query_source, querySource, querySource); WRITE_BOOL_FIELD(can_set_tag, canSetTag, canSetTag); WRITE_NODE_PTR_FIELD(utility_stmt, utilityStmt, utilityStmt); WRITE_INT_FIELD(result_relation, resultRelation, resultRelation); WRITE_BOOL_FIELD(has_aggs, hasAggs, hasAggs); WRITE_BOOL_FIELD(has_window_funcs, hasWindowFuncs, hasWindowFuncs); WRITE_BOOL_FIELD(has_target_srfs, hasTargetSRFs, hasTargetSRFs); WRITE_BOOL_FIELD(has_sub_links, hasSubLinks, hasSubLinks); WRITE_BOOL_FIELD(has_distinct_on, hasDistinctOn, hasDistinctOn); WRITE_BOOL_FIELD(has_recursive, hasRecursive, hasRecursive); WRITE_BOOL_FIELD(has_modifying_cte, hasModifyingCTE, hasModifyingCTE); WRITE_BOOL_FIELD(has_for_update, hasForUpdate, hasForUpdate); WRITE_BOOL_FIELD(has_row_security, hasRowSecurity, hasRowSecurity); WRITE_BOOL_FIELD(is_return, isReturn, isReturn); WRITE_LIST_FIELD(cte_list, cteList, cteList); WRITE_LIST_FIELD(rtable, rtable, rtable); WRITE_SPECIFIC_NODE_PTR_FIELD(FromExpr, from_expr, jointree, jointree, jointree); WRITE_LIST_FIELD(merge_action_list, mergeActionList, mergeActionList); WRITE_BOOL_FIELD(merge_use_outer_join, mergeUseOuterJoin, mergeUseOuterJoin); 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 _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_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 _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 _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 _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 _outAlterDomainStmt(OUT_TYPE(AlterDomainStmt, AlterDomainStmt) out, const AlterDomainStmt *node) { WRITE_CHAR_FIELD(subtype, subtype, subtype); WRITE_LIST_FIELD(type_name, typeName, typeName); WRITE_STRING_FIELD(name, name, name); WRITE_NODE_PTR_FIELD(def, def, def); WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outSetOperationStmt(OUT_TYPE(SetOperationStmt, SetOperationStmt) out, const SetOperationStmt *node) { WRITE_ENUM_FIELD(SetOperation, op, op, op); WRITE_BOOL_FIELD(all, all, all); WRITE_NODE_PTR_FIELD(larg, larg, larg); WRITE_NODE_PTR_FIELD(rarg, rarg, rarg); WRITE_LIST_FIELD(col_types, colTypes, colTypes); WRITE_LIST_FIELD(col_typmods, colTypmods, colTypmods); WRITE_LIST_FIELD(col_collations, colCollations, colCollations); WRITE_LIST_FIELD(group_clauses, groupClauses, groupClauses); } static void _outGrantStmt(OUT_TYPE(GrantStmt, GrantStmt) out, const GrantStmt *node) { WRITE_BOOL_FIELD(is_grant, is_grant, is_grant); WRITE_ENUM_FIELD(GrantTargetType, targtype, targtype, targtype); WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); WRITE_LIST_FIELD(objects, objects, objects); WRITE_LIST_FIELD(privileges, privileges, privileges); WRITE_LIST_FIELD(grantees, grantees, grantees); WRITE_BOOL_FIELD(grant_option, grant_option, grant_option); WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, grantor, grantor, grantor); WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); } static void _outGrantRoleStmt(OUT_TYPE(GrantRoleStmt, GrantRoleStmt) out, const GrantRoleStmt *node) { WRITE_LIST_FIELD(granted_roles, granted_roles, granted_roles); WRITE_LIST_FIELD(grantee_roles, grantee_roles, grantee_roles); WRITE_BOOL_FIELD(is_grant, is_grant, is_grant); WRITE_BOOL_FIELD(admin_opt, admin_opt, admin_opt); WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, grantor, grantor, grantor); WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); } static void _outAlterDefaultPrivilegesStmt(OUT_TYPE(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt) out, const AlterDefaultPrivilegesStmt *node) { WRITE_LIST_FIELD(options, options, options); WRITE_SPECIFIC_NODE_PTR_FIELD(GrantStmt, grant_stmt, action, action, action); } static void _outClosePortalStmt(OUT_TYPE(ClosePortalStmt, ClosePortalStmt) out, const ClosePortalStmt *node) { WRITE_STRING_FIELD(portalname, portalname, portalname); } static void _outClusterStmt(OUT_TYPE(ClusterStmt, ClusterStmt) out, const ClusterStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_STRING_FIELD(indexname, indexname, indexname); WRITE_LIST_FIELD(params, params, params); } static void _outCopyStmt(OUT_TYPE(CopyStmt, CopyStmt) out, const CopyStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_NODE_PTR_FIELD(query, query, query); WRITE_LIST_FIELD(attlist, attlist, attlist); WRITE_BOOL_FIELD(is_from, is_from, is_from); WRITE_BOOL_FIELD(is_program, is_program, is_program); WRITE_STRING_FIELD(filename, filename, filename); WRITE_LIST_FIELD(options, options, options); WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); } static void _outCreateStmt(OUT_TYPE(CreateStmt, CreateStmt) out, const CreateStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_LIST_FIELD(table_elts, tableElts, tableElts); WRITE_LIST_FIELD(inh_relations, inhRelations, inhRelations); WRITE_SPECIFIC_NODE_PTR_FIELD(PartitionBoundSpec, partition_bound_spec, partbound, partbound, partbound); WRITE_SPECIFIC_NODE_PTR_FIELD(PartitionSpec, partition_spec, partspec, partspec, partspec); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, of_typename, ofTypename, ofTypename); WRITE_LIST_FIELD(constraints, constraints, constraints); WRITE_LIST_FIELD(options, options, options); WRITE_ENUM_FIELD(OnCommitAction, oncommit, oncommit, oncommit); WRITE_STRING_FIELD(tablespacename, tablespacename, tablespacename); WRITE_STRING_FIELD(access_method, accessMethod, accessMethod); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); } static void _outDefineStmt(OUT_TYPE(DefineStmt, DefineStmt) out, const DefineStmt *node) { WRITE_ENUM_FIELD(ObjectType, kind, kind, kind); WRITE_BOOL_FIELD(oldstyle, oldstyle, oldstyle); WRITE_LIST_FIELD(defnames, defnames, defnames); WRITE_LIST_FIELD(args, args, args); WRITE_LIST_FIELD(definition, definition, definition); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); WRITE_BOOL_FIELD(replace, replace, replace); } static void _outDropStmt(OUT_TYPE(DropStmt, DropStmt) out, const DropStmt *node) { WRITE_LIST_FIELD(objects, objects, objects); WRITE_ENUM_FIELD(ObjectType, remove_type, removeType, removeType); WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); WRITE_BOOL_FIELD(concurrent, concurrent, concurrent); } static void _outTruncateStmt(OUT_TYPE(TruncateStmt, TruncateStmt) out, const TruncateStmt *node) { WRITE_LIST_FIELD(relations, relations, relations); WRITE_BOOL_FIELD(restart_seqs, restart_seqs, restart_seqs); WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); } static void _outCommentStmt(OUT_TYPE(CommentStmt, CommentStmt) out, const CommentStmt *node) { WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); WRITE_NODE_PTR_FIELD(object, object, object); WRITE_STRING_FIELD(comment, comment, comment); } static void _outFetchStmt(OUT_TYPE(FetchStmt, FetchStmt) out, const FetchStmt *node) { WRITE_ENUM_FIELD(FetchDirection, direction, direction, direction); WRITE_LONG_FIELD(how_many, howMany, howMany); WRITE_STRING_FIELD(portalname, portalname, portalname); WRITE_BOOL_FIELD(ismove, ismove, ismove); } static void _outIndexStmt(OUT_TYPE(IndexStmt, IndexStmt) out, const IndexStmt *node) { WRITE_STRING_FIELD(idxname, idxname, idxname); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_STRING_FIELD(access_method, accessMethod, accessMethod); WRITE_STRING_FIELD(table_space, tableSpace, tableSpace); WRITE_LIST_FIELD(index_params, indexParams, indexParams); WRITE_LIST_FIELD(index_including_params, indexIncludingParams, indexIncludingParams); WRITE_LIST_FIELD(options, options, options); WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); WRITE_LIST_FIELD(exclude_op_names, excludeOpNames, excludeOpNames); WRITE_STRING_FIELD(idxcomment, idxcomment, idxcomment); WRITE_UINT_FIELD(index_oid, indexOid, indexOid); WRITE_UINT_FIELD(old_node, oldNode, oldNode); WRITE_UINT_FIELD(old_create_subid, oldCreateSubid, oldCreateSubid); WRITE_UINT_FIELD(old_first_relfilenode_subid, oldFirstRelfilenodeSubid, oldFirstRelfilenodeSubid); WRITE_BOOL_FIELD(unique, unique, unique); WRITE_BOOL_FIELD(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 _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 _outAlterFunctionStmt(OUT_TYPE(AlterFunctionStmt, AlterFunctionStmt) out, const AlterFunctionStmt *node) { WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); WRITE_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, func, func, func); WRITE_LIST_FIELD(actions, actions, actions); } static void _outDoStmt(OUT_TYPE(DoStmt, DoStmt) out, const DoStmt *node) { WRITE_LIST_FIELD(args, args, args); } static void _outRenameStmt(OUT_TYPE(RenameStmt, RenameStmt) out, const RenameStmt *node) { WRITE_ENUM_FIELD(ObjectType, rename_type, renameType, renameType); WRITE_ENUM_FIELD(ObjectType, relation_type, relationType, relationType); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_NODE_PTR_FIELD(object, object, object); WRITE_STRING_FIELD(subname, subname, subname); WRITE_STRING_FIELD(newname, newname, newname); WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outRuleStmt(OUT_TYPE(RuleStmt, RuleStmt) out, const RuleStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_STRING_FIELD(rulename, rulename, rulename); WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); WRITE_ENUM_FIELD(CmdType, event, event, event); WRITE_BOOL_FIELD(instead, instead, instead); WRITE_LIST_FIELD(actions, actions, actions); WRITE_BOOL_FIELD(replace, replace, replace); } static void _outNotifyStmt(OUT_TYPE(NotifyStmt, NotifyStmt) out, const NotifyStmt *node) { WRITE_STRING_FIELD(conditionname, conditionname, conditionname); WRITE_STRING_FIELD(payload, payload, payload); } static void _outListenStmt(OUT_TYPE(ListenStmt, ListenStmt) out, const ListenStmt *node) { WRITE_STRING_FIELD(conditionname, conditionname, conditionname); } static void _outUnlistenStmt(OUT_TYPE(UnlistenStmt, UnlistenStmt) out, const UnlistenStmt *node) { WRITE_STRING_FIELD(conditionname, conditionname, conditionname); } static void _outTransactionStmt(OUT_TYPE(TransactionStmt, TransactionStmt) out, const TransactionStmt *node) { WRITE_ENUM_FIELD(TransactionStmtKind, kind, kind, kind); WRITE_LIST_FIELD(options, options, options); WRITE_STRING_FIELD(savepoint_name, savepoint_name, savepoint_name); WRITE_STRING_FIELD(gid, gid, gid); WRITE_BOOL_FIELD(chain, chain, chain); } static void _outViewStmt(OUT_TYPE(ViewStmt, ViewStmt) out, const ViewStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, view, view, view); WRITE_LIST_FIELD(aliases, aliases, aliases); WRITE_NODE_PTR_FIELD(query, query, query); WRITE_BOOL_FIELD(replace, replace, replace); WRITE_LIST_FIELD(options, options, options); WRITE_ENUM_FIELD(ViewCheckOption, with_check_option, withCheckOption, withCheckOption); } static void _outLoadStmt(OUT_TYPE(LoadStmt, LoadStmt) out, const LoadStmt *node) { WRITE_STRING_FIELD(filename, filename, filename); } static void _outCreateDomainStmt(OUT_TYPE(CreateDomainStmt, CreateDomainStmt) out, const CreateDomainStmt *node) { WRITE_LIST_FIELD(domainname, domainname, domainname); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); WRITE_SPECIFIC_NODE_PTR_FIELD(CollateClause, collate_clause, coll_clause, collClause, collClause); WRITE_LIST_FIELD(constraints, constraints, constraints); } static void _outCreatedbStmt(OUT_TYPE(CreatedbStmt, CreatedbStmt) out, const CreatedbStmt *node) { WRITE_STRING_FIELD(dbname, dbname, dbname); WRITE_LIST_FIELD(options, options, options); } static void _outDropdbStmt(OUT_TYPE(DropdbStmt, DropdbStmt) out, const DropdbStmt *node) { WRITE_STRING_FIELD(dbname, dbname, dbname); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); WRITE_LIST_FIELD(options, options, options); } static void _outVacuumStmt(OUT_TYPE(VacuumStmt, VacuumStmt) out, const VacuumStmt *node) { WRITE_LIST_FIELD(options, options, options); WRITE_LIST_FIELD(rels, rels, rels); WRITE_BOOL_FIELD(is_vacuumcmd, is_vacuumcmd, is_vacuumcmd); } static void _outExplainStmt(OUT_TYPE(ExplainStmt, ExplainStmt) out, const ExplainStmt *node) { WRITE_NODE_PTR_FIELD(query, query, query); WRITE_LIST_FIELD(options, options, options); } static void _outCreateTableAsStmt(OUT_TYPE(CreateTableAsStmt, CreateTableAsStmt) out, const CreateTableAsStmt *node) { WRITE_NODE_PTR_FIELD(query, query, query); WRITE_SPECIFIC_NODE_PTR_FIELD(IntoClause, into_clause, into, into, into); WRITE_ENUM_FIELD(ObjectType, 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 _outCreateSeqStmt(OUT_TYPE(CreateSeqStmt, CreateSeqStmt) out, const CreateSeqStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, sequence, sequence, sequence); WRITE_LIST_FIELD(options, options, options); WRITE_UINT_FIELD(owner_id, ownerId, ownerId); WRITE_BOOL_FIELD(for_identity, for_identity, for_identity); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); } static void _outAlterSeqStmt(OUT_TYPE(AlterSeqStmt, AlterSeqStmt) out, const AlterSeqStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, sequence, sequence, sequence); WRITE_LIST_FIELD(options, options, options); WRITE_BOOL_FIELD(for_identity, for_identity, for_identity); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outVariableSetStmt(OUT_TYPE(VariableSetStmt, VariableSetStmt) out, const VariableSetStmt *node) { WRITE_ENUM_FIELD(VariableSetKind, kind, kind, kind); WRITE_STRING_FIELD(name, name, name); WRITE_LIST_FIELD(args, args, args); WRITE_BOOL_FIELD(is_local, is_local, is_local); } static void _outVariableShowStmt(OUT_TYPE(VariableShowStmt, VariableShowStmt) out, const VariableShowStmt *node) { WRITE_STRING_FIELD(name, name, name); } static void _outDiscardStmt(OUT_TYPE(DiscardStmt, DiscardStmt) out, const DiscardStmt *node) { WRITE_ENUM_FIELD(DiscardMode, target, target, target); } static void _outCreateTrigStmt(OUT_TYPE(CreateTrigStmt, CreateTrigStmt) out, const CreateTrigStmt *node) { WRITE_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 _outCreatePLangStmt(OUT_TYPE(CreatePLangStmt, CreatePLangStmt) out, const CreatePLangStmt *node) { WRITE_BOOL_FIELD(replace, replace, replace); WRITE_STRING_FIELD(plname, plname, plname); WRITE_LIST_FIELD(plhandler, plhandler, plhandler); WRITE_LIST_FIELD(plinline, plinline, plinline); WRITE_LIST_FIELD(plvalidator, plvalidator, plvalidator); WRITE_BOOL_FIELD(pltrusted, pltrusted, pltrusted); } static void _outCreateRoleStmt(OUT_TYPE(CreateRoleStmt, CreateRoleStmt) out, const CreateRoleStmt *node) { WRITE_ENUM_FIELD(RoleStmtType, stmt_type, stmt_type, stmt_type); WRITE_STRING_FIELD(role, role, role); WRITE_LIST_FIELD(options, options, options); } static void _outAlterRoleStmt(OUT_TYPE(AlterRoleStmt, AlterRoleStmt) out, const AlterRoleStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, role, role, role); WRITE_LIST_FIELD(options, options, options); WRITE_INT_FIELD(action, action, action); } static void _outDropRoleStmt(OUT_TYPE(DropRoleStmt, DropRoleStmt) out, const DropRoleStmt *node) { WRITE_LIST_FIELD(roles, roles, roles); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outLockStmt(OUT_TYPE(LockStmt, LockStmt) out, const LockStmt *node) { WRITE_LIST_FIELD(relations, relations, relations); WRITE_INT_FIELD(mode, mode, mode); WRITE_BOOL_FIELD(nowait, nowait, nowait); } static void _outConstraintsSetStmt(OUT_TYPE(ConstraintsSetStmt, ConstraintsSetStmt) out, const ConstraintsSetStmt *node) { WRITE_LIST_FIELD(constraints, constraints, constraints); WRITE_BOOL_FIELD(deferred, deferred, deferred); } static void _outReindexStmt(OUT_TYPE(ReindexStmt, ReindexStmt) out, const ReindexStmt *node) { WRITE_ENUM_FIELD(ReindexObjectType, kind, kind, kind); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_STRING_FIELD(name, name, name); WRITE_LIST_FIELD(params, params, params); } static void _outCheckPointStmt(OUT_TYPE(CheckPointStmt, CheckPointStmt) out, const CheckPointStmt *node) { } static void _outCreateSchemaStmt(OUT_TYPE(CreateSchemaStmt, CreateSchemaStmt) out, const CreateSchemaStmt *node) { WRITE_STRING_FIELD(schemaname, schemaname, schemaname); WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, authrole, authrole, authrole); WRITE_LIST_FIELD(schema_elts, schemaElts, schemaElts); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); } static void _outAlterDatabaseStmt(OUT_TYPE(AlterDatabaseStmt, AlterDatabaseStmt) out, const AlterDatabaseStmt *node) { WRITE_STRING_FIELD(dbname, dbname, dbname); WRITE_LIST_FIELD(options, options, options); } static void _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 _outAlterRoleSetStmt(OUT_TYPE(AlterRoleSetStmt, AlterRoleSetStmt) out, const AlterRoleSetStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, role, role, role); WRITE_STRING_FIELD(database, database, database); WRITE_SPECIFIC_NODE_PTR_FIELD(VariableSetStmt, variable_set_stmt, setstmt, setstmt, setstmt); } static void _outCreateConversionStmt(OUT_TYPE(CreateConversionStmt, CreateConversionStmt) out, const CreateConversionStmt *node) { WRITE_LIST_FIELD(conversion_name, conversion_name, conversion_name); WRITE_STRING_FIELD(for_encoding_name, for_encoding_name, for_encoding_name); WRITE_STRING_FIELD(to_encoding_name, to_encoding_name, to_encoding_name); WRITE_LIST_FIELD(func_name, func_name, func_name); WRITE_BOOL_FIELD(def, def, def); } static void _outCreateCastStmt(OUT_TYPE(CreateCastStmt, CreateCastStmt) out, const CreateCastStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, sourcetype, sourcetype, sourcetype); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, targettype, targettype, targettype); WRITE_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, func, func, func); WRITE_ENUM_FIELD(CoercionContext, context, context, context); WRITE_BOOL_FIELD(inout, inout, inout); } static void _outCreateOpClassStmt(OUT_TYPE(CreateOpClassStmt, CreateOpClassStmt) out, const CreateOpClassStmt *node) { WRITE_LIST_FIELD(opclassname, opclassname, opclassname); WRITE_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); WRITE_STRING_FIELD(amname, amname, amname); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, datatype, datatype, datatype); WRITE_LIST_FIELD(items, items, items); WRITE_BOOL_FIELD(is_default, isDefault, isDefault); } static void _outCreateOpFamilyStmt(OUT_TYPE(CreateOpFamilyStmt, CreateOpFamilyStmt) out, const CreateOpFamilyStmt *node) { WRITE_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); WRITE_STRING_FIELD(amname, amname, amname); } static void _outAlterOpFamilyStmt(OUT_TYPE(AlterOpFamilyStmt, AlterOpFamilyStmt) out, const AlterOpFamilyStmt *node) { WRITE_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); WRITE_STRING_FIELD(amname, amname, amname); WRITE_BOOL_FIELD(is_drop, isDrop, isDrop); WRITE_LIST_FIELD(items, items, items); } static void _outPrepareStmt(OUT_TYPE(PrepareStmt, PrepareStmt) out, const PrepareStmt *node) { WRITE_STRING_FIELD(name, name, name); WRITE_LIST_FIELD(argtypes, argtypes, argtypes); WRITE_NODE_PTR_FIELD(query, query, query); } static void _outExecuteStmt(OUT_TYPE(ExecuteStmt, ExecuteStmt) out, const ExecuteStmt *node) { WRITE_STRING_FIELD(name, name, name); WRITE_LIST_FIELD(params, params, params); } static void _outDeallocateStmt(OUT_TYPE(DeallocateStmt, DeallocateStmt) out, const DeallocateStmt *node) { WRITE_STRING_FIELD(name, name, name); } static void _outDeclareCursorStmt(OUT_TYPE(DeclareCursorStmt, DeclareCursorStmt) out, const DeclareCursorStmt *node) { WRITE_STRING_FIELD(portalname, portalname, portalname); WRITE_INT_FIELD(options, options, options); WRITE_NODE_PTR_FIELD(query, query, query); } static void _outCreateTableSpaceStmt(OUT_TYPE(CreateTableSpaceStmt, CreateTableSpaceStmt) out, const CreateTableSpaceStmt *node) { WRITE_STRING_FIELD(tablespacename, tablespacename, tablespacename); WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, owner, owner, owner); WRITE_STRING_FIELD(location, location, location); WRITE_LIST_FIELD(options, options, options); } static void _outDropTableSpaceStmt(OUT_TYPE(DropTableSpaceStmt, DropTableSpaceStmt) out, const DropTableSpaceStmt *node) { WRITE_STRING_FIELD(tablespacename, tablespacename, tablespacename); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outAlterObjectDependsStmt(OUT_TYPE(AlterObjectDependsStmt, AlterObjectDependsStmt) out, const AlterObjectDependsStmt *node) { WRITE_ENUM_FIELD(ObjectType, object_type, objectType, objectType); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_NODE_PTR_FIELD(object, object, object); WRITE_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 _outDropOwnedStmt(OUT_TYPE(DropOwnedStmt, DropOwnedStmt) out, const DropOwnedStmt *node) { WRITE_LIST_FIELD(roles, roles, roles); WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); } static void _outReassignOwnedStmt(OUT_TYPE(ReassignOwnedStmt, ReassignOwnedStmt) out, const ReassignOwnedStmt *node) { WRITE_LIST_FIELD(roles, roles, roles); WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, newrole, newrole, newrole); } static void _outCompositeTypeStmt(OUT_TYPE(CompositeTypeStmt, CompositeTypeStmt) out, const CompositeTypeStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, typevar, typevar, typevar); WRITE_LIST_FIELD(coldeflist, coldeflist, coldeflist); } static void _outCreateEnumStmt(OUT_TYPE(CreateEnumStmt, CreateEnumStmt) out, const CreateEnumStmt *node) { WRITE_LIST_FIELD(type_name, typeName, typeName); WRITE_LIST_FIELD(vals, vals, vals); } static void _outCreateRangeStmt(OUT_TYPE(CreateRangeStmt, CreateRangeStmt) out, const CreateRangeStmt *node) { WRITE_LIST_FIELD(type_name, typeName, typeName); WRITE_LIST_FIELD(params, params, params); } static void _outAlterEnumStmt(OUT_TYPE(AlterEnumStmt, AlterEnumStmt) out, const AlterEnumStmt *node) { WRITE_LIST_FIELD(type_name, typeName, typeName); WRITE_STRING_FIELD(old_val, oldVal, oldVal); WRITE_STRING_FIELD(new_val, newVal, newVal); WRITE_STRING_FIELD(new_val_neighbor, newValNeighbor, newValNeighbor); WRITE_BOOL_FIELD(new_val_is_after, newValIsAfter, newValIsAfter); WRITE_BOOL_FIELD(skip_if_new_val_exists, skipIfNewValExists, skipIfNewValExists); } static void _outAlterTSDictionaryStmt(OUT_TYPE(AlterTSDictionaryStmt, AlterTSDictionaryStmt) out, const AlterTSDictionaryStmt *node) { WRITE_LIST_FIELD(dictname, dictname, dictname); WRITE_LIST_FIELD(options, options, options); } static void _outAlterTSConfigurationStmt(OUT_TYPE(AlterTSConfigurationStmt, AlterTSConfigurationStmt) out, const AlterTSConfigurationStmt *node) { WRITE_ENUM_FIELD(AlterTSConfigType, kind, kind, kind); WRITE_LIST_FIELD(cfgname, cfgname, cfgname); WRITE_LIST_FIELD(tokentype, tokentype, tokentype); WRITE_LIST_FIELD(dicts, dicts, dicts); WRITE_BOOL_FIELD(override, override, override); WRITE_BOOL_FIELD(replace, replace, replace); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outCreateFdwStmt(OUT_TYPE(CreateFdwStmt, CreateFdwStmt) out, const CreateFdwStmt *node) { WRITE_STRING_FIELD(fdwname, fdwname, fdwname); WRITE_LIST_FIELD(func_options, func_options, func_options); WRITE_LIST_FIELD(options, options, options); } static void _outAlterFdwStmt(OUT_TYPE(AlterFdwStmt, AlterFdwStmt) out, const AlterFdwStmt *node) { WRITE_STRING_FIELD(fdwname, fdwname, fdwname); WRITE_LIST_FIELD(func_options, func_options, func_options); WRITE_LIST_FIELD(options, options, options); } static void _outCreateForeignServerStmt(OUT_TYPE(CreateForeignServerStmt, CreateForeignServerStmt) out, const CreateForeignServerStmt *node) { WRITE_STRING_FIELD(servername, servername, servername); WRITE_STRING_FIELD(servertype, servertype, servertype); WRITE_STRING_FIELD(version, version, version); WRITE_STRING_FIELD(fdwname, fdwname, fdwname); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); WRITE_LIST_FIELD(options, options, options); } static void _outAlterForeignServerStmt(OUT_TYPE(AlterForeignServerStmt, AlterForeignServerStmt) out, const AlterForeignServerStmt *node) { WRITE_STRING_FIELD(servername, servername, servername); WRITE_STRING_FIELD(version, version, version); WRITE_LIST_FIELD(options, options, options); WRITE_BOOL_FIELD(has_version, has_version, has_version); } static void _outCreateUserMappingStmt(OUT_TYPE(CreateUserMappingStmt, CreateUserMappingStmt) out, const CreateUserMappingStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); WRITE_STRING_FIELD(servername, servername, servername); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); WRITE_LIST_FIELD(options, options, options); } static void _outAlterUserMappingStmt(OUT_TYPE(AlterUserMappingStmt, AlterUserMappingStmt) out, const AlterUserMappingStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); WRITE_STRING_FIELD(servername, servername, servername); WRITE_LIST_FIELD(options, options, options); } static void _outDropUserMappingStmt(OUT_TYPE(DropUserMappingStmt, DropUserMappingStmt) out, const DropUserMappingStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); WRITE_STRING_FIELD(servername, servername, servername); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outAlterTableSpaceOptionsStmt(OUT_TYPE(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt) out, const AlterTableSpaceOptionsStmt *node) { WRITE_STRING_FIELD(tablespacename, tablespacename, tablespacename); WRITE_LIST_FIELD(options, options, options); WRITE_BOOL_FIELD(is_reset, isReset, isReset); } static void _outAlterTableMoveAllStmt(OUT_TYPE(AlterTableMoveAllStmt, AlterTableMoveAllStmt) out, const AlterTableMoveAllStmt *node) { WRITE_STRING_FIELD(orig_tablespacename, orig_tablespacename, orig_tablespacename); WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); WRITE_LIST_FIELD(roles, roles, roles); WRITE_STRING_FIELD(new_tablespacename, new_tablespacename, new_tablespacename); WRITE_BOOL_FIELD(nowait, nowait, nowait); } static void _outSecLabelStmt(OUT_TYPE(SecLabelStmt, SecLabelStmt) out, const SecLabelStmt *node) { WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); WRITE_NODE_PTR_FIELD(object, object, object); WRITE_STRING_FIELD(provider, provider, provider); WRITE_STRING_FIELD(label, label, label); } static void _outCreateForeignTableStmt(OUT_TYPE(CreateForeignTableStmt, CreateForeignTableStmt) out, const CreateForeignTableStmt *node) { WRITE_SPECIFIC_NODE_FIELD(CreateStmt, create_stmt, base_stmt, base, base); WRITE_STRING_FIELD(servername, servername, servername); WRITE_LIST_FIELD(options, options, options); } static void _outImportForeignSchemaStmt(OUT_TYPE(ImportForeignSchemaStmt, ImportForeignSchemaStmt) out, const ImportForeignSchemaStmt *node) { WRITE_STRING_FIELD(server_name, server_name, server_name); WRITE_STRING_FIELD(remote_schema, remote_schema, remote_schema); WRITE_STRING_FIELD(local_schema, local_schema, local_schema); WRITE_ENUM_FIELD(ImportForeignSchemaType, list_type, list_type, list_type); WRITE_LIST_FIELD(table_list, table_list, table_list); WRITE_LIST_FIELD(options, options, options); } static void _outCreateExtensionStmt(OUT_TYPE(CreateExtensionStmt, CreateExtensionStmt) out, const CreateExtensionStmt *node) { WRITE_STRING_FIELD(extname, extname, extname); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); WRITE_LIST_FIELD(options, options, options); } static void _outAlterExtensionStmt(OUT_TYPE(AlterExtensionStmt, AlterExtensionStmt) out, const AlterExtensionStmt *node) { WRITE_STRING_FIELD(extname, extname, extname); WRITE_LIST_FIELD(options, options, options); } static void _outAlterExtensionContentsStmt(OUT_TYPE(AlterExtensionContentsStmt, AlterExtensionContentsStmt) out, const AlterExtensionContentsStmt *node) { WRITE_STRING_FIELD(extname, extname, extname); WRITE_INT_FIELD(action, action, action); WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); WRITE_NODE_PTR_FIELD(object, object, object); } static void _outCreateEventTrigStmt(OUT_TYPE(CreateEventTrigStmt, CreateEventTrigStmt) out, const CreateEventTrigStmt *node) { WRITE_STRING_FIELD(trigname, trigname, trigname); WRITE_STRING_FIELD(eventname, eventname, eventname); WRITE_LIST_FIELD(whenclause, whenclause, whenclause); WRITE_LIST_FIELD(funcname, funcname, funcname); } static void _outAlterEventTrigStmt(OUT_TYPE(AlterEventTrigStmt, AlterEventTrigStmt) out, const AlterEventTrigStmt *node) { WRITE_STRING_FIELD(trigname, trigname, trigname); WRITE_CHAR_FIELD(tgenabled, tgenabled, tgenabled); } static void _outRefreshMatViewStmt(OUT_TYPE(RefreshMatViewStmt, RefreshMatViewStmt) out, const RefreshMatViewStmt *node) { WRITE_BOOL_FIELD(concurrent, concurrent, concurrent); WRITE_BOOL_FIELD(skip_data, skipData, skipData); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); } static void _outReplicaIdentityStmt(OUT_TYPE(ReplicaIdentityStmt, ReplicaIdentityStmt) out, const ReplicaIdentityStmt *node) { WRITE_CHAR_FIELD(identity_type, identity_type, identity_type); WRITE_STRING_FIELD(name, name, name); } static void _outAlterSystemStmt(OUT_TYPE(AlterSystemStmt, AlterSystemStmt) out, const AlterSystemStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(VariableSetStmt, variable_set_stmt, setstmt, setstmt, setstmt); } static void _outCreatePolicyStmt(OUT_TYPE(CreatePolicyStmt, CreatePolicyStmt) out, const CreatePolicyStmt *node) { WRITE_STRING_FIELD(policy_name, policy_name, policy_name); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, table, table, table); WRITE_STRING_FIELD(cmd_name, cmd_name, cmd_name); WRITE_BOOL_FIELD(permissive, permissive, permissive); WRITE_LIST_FIELD(roles, roles, roles); WRITE_NODE_PTR_FIELD(qual, qual, qual); WRITE_NODE_PTR_FIELD(with_check, with_check, with_check); } static void _outAlterPolicyStmt(OUT_TYPE(AlterPolicyStmt, AlterPolicyStmt) out, const AlterPolicyStmt *node) { WRITE_STRING_FIELD(policy_name, policy_name, policy_name); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, table, table, table); WRITE_LIST_FIELD(roles, roles, roles); WRITE_NODE_PTR_FIELD(qual, qual, qual); WRITE_NODE_PTR_FIELD(with_check, with_check, with_check); } static void _outCreateTransformStmt(OUT_TYPE(CreateTransformStmt, CreateTransformStmt) out, const CreateTransformStmt *node) { WRITE_BOOL_FIELD(replace, replace, replace); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, type_name, type_name); WRITE_STRING_FIELD(lang, lang, lang); WRITE_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, fromsql, fromsql, fromsql); WRITE_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, tosql, tosql, tosql); } static void _outCreateAmStmt(OUT_TYPE(CreateAmStmt, CreateAmStmt) out, const CreateAmStmt *node) { WRITE_STRING_FIELD(amname, amname, amname); WRITE_LIST_FIELD(handler_name, handler_name, handler_name); WRITE_CHAR_FIELD(amtype, amtype, amtype); } static void _outCreatePublicationStmt(OUT_TYPE(CreatePublicationStmt, CreatePublicationStmt) out, const CreatePublicationStmt *node) { WRITE_STRING_FIELD(pubname, pubname, pubname); WRITE_LIST_FIELD(options, options, options); WRITE_LIST_FIELD(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); } 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 _outAlterCollationStmt(OUT_TYPE(AlterCollationStmt, AlterCollationStmt) out, const AlterCollationStmt *node) { WRITE_LIST_FIELD(collname, collname, collname); } static void _outCallStmt(OUT_TYPE(CallStmt, CallStmt) out, const CallStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(FuncCall, func_call, funccall, funccall, funccall); WRITE_SPECIFIC_NODE_PTR_FIELD(FuncExpr, func_expr, funcexpr, funcexpr, funcexpr); WRITE_LIST_FIELD(outargs, outargs, outargs); } static void _outAlterStatsStmt(OUT_TYPE(AlterStatsStmt, AlterStatsStmt) out, const AlterStatsStmt *node) { WRITE_LIST_FIELD(defnames, defnames, defnames); WRITE_INT_FIELD(stxstattarget, stxstattarget, stxstattarget); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outAExpr(OUT_TYPE(A_Expr, AExpr) out, const A_Expr *node) { WRITE_ENUM_FIELD(A_Expr_Kind, kind, kind, kind); WRITE_LIST_FIELD(name, name, name); WRITE_NODE_PTR_FIELD(lexpr, lexpr, lexpr); WRITE_NODE_PTR_FIELD(rexpr, rexpr, rexpr); WRITE_INT_FIELD(location, location, location); } static void _outColumnRef(OUT_TYPE(ColumnRef, ColumnRef) out, const ColumnRef *node) { WRITE_LIST_FIELD(fields, fields, fields); WRITE_INT_FIELD(location, location, location); } static void _outParamRef(OUT_TYPE(ParamRef, ParamRef) out, const ParamRef *node) { WRITE_INT_FIELD(number, number, number); WRITE_INT_FIELD(location, location, location); } static void _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 _outTypeCast(OUT_TYPE(TypeCast, TypeCast) out, const TypeCast *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); WRITE_INT_FIELD(location, location, location); } static void _outCollateClause(OUT_TYPE(CollateClause, CollateClause) out, const CollateClause *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_LIST_FIELD(collname, collname, collname); WRITE_INT_FIELD(location, location, location); } static void _outSortBy(OUT_TYPE(SortBy, SortBy) out, const SortBy *node) { WRITE_NODE_PTR_FIELD(node, node, node); WRITE_ENUM_FIELD(SortByDir, sortby_dir, sortby_dir, sortby_dir); WRITE_ENUM_FIELD(SortByNulls, sortby_nulls, sortby_nulls, sortby_nulls); WRITE_LIST_FIELD(use_op, useOp, useOp); WRITE_INT_FIELD(location, location, location); } static void _outWindowDef(OUT_TYPE(WindowDef, WindowDef) out, const WindowDef *node) { WRITE_STRING_FIELD(name, name, name); WRITE_STRING_FIELD(refname, refname, refname); WRITE_LIST_FIELD(partition_clause, partitionClause, partitionClause); WRITE_LIST_FIELD(order_clause, orderClause, orderClause); WRITE_INT_FIELD(frame_options, frameOptions, frameOptions); WRITE_NODE_PTR_FIELD(start_offset, startOffset, startOffset); WRITE_NODE_PTR_FIELD(end_offset, endOffset, endOffset); WRITE_INT_FIELD(location, location, location); } static void _outRangeSubselect(OUT_TYPE(RangeSubselect, RangeSubselect) out, const RangeSubselect *node) { WRITE_BOOL_FIELD(lateral, lateral, lateral); WRITE_NODE_PTR_FIELD(subquery, subquery, subquery); WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); } static void _outRangeFunction(OUT_TYPE(RangeFunction, RangeFunction) out, const RangeFunction *node) { WRITE_BOOL_FIELD(lateral, lateral, lateral); WRITE_BOOL_FIELD(ordinality, ordinality, ordinality); WRITE_BOOL_FIELD(is_rowsfrom, is_rowsfrom, is_rowsfrom); WRITE_LIST_FIELD(functions, functions, functions); WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); WRITE_LIST_FIELD(coldeflist, coldeflist, coldeflist); } static void _outRangeTableSample(OUT_TYPE(RangeTableSample, RangeTableSample) out, const RangeTableSample *node) { WRITE_NODE_PTR_FIELD(relation, relation, relation); WRITE_LIST_FIELD(method, method, method); WRITE_LIST_FIELD(args, args, args); WRITE_NODE_PTR_FIELD(repeatable, repeatable, repeatable); WRITE_INT_FIELD(location, location, location); } static void _outRangeTableFunc(OUT_TYPE(RangeTableFunc, RangeTableFunc) out, const RangeTableFunc *node) { WRITE_BOOL_FIELD(lateral, lateral, lateral); WRITE_NODE_PTR_FIELD(docexpr, docexpr, docexpr); WRITE_NODE_PTR_FIELD(rowexpr, rowexpr, rowexpr); WRITE_LIST_FIELD(namespaces, namespaces, namespaces); WRITE_LIST_FIELD(columns, columns, columns); WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); WRITE_INT_FIELD(location, location, location); } static void _outRangeTableFuncCol(OUT_TYPE(RangeTableFuncCol, RangeTableFuncCol) out, const RangeTableFuncCol *node) { WRITE_STRING_FIELD(colname, colname, colname); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); WRITE_BOOL_FIELD(for_ordinality, for_ordinality, for_ordinality); WRITE_BOOL_FIELD(is_not_null, is_not_null, is_not_null); WRITE_NODE_PTR_FIELD(colexpr, colexpr, colexpr); WRITE_NODE_PTR_FIELD(coldefexpr, coldefexpr, coldefexpr); WRITE_INT_FIELD(location, location, location); } static void _outTypeName(OUT_TYPE(TypeName, TypeName) out, const TypeName *node) { WRITE_LIST_FIELD(names, names, names); WRITE_UINT_FIELD(type_oid, typeOid, typeOid); WRITE_BOOL_FIELD(setof, setof, setof); WRITE_BOOL_FIELD(pct_type, pct_type, pct_type); WRITE_LIST_FIELD(typmods, typmods, typmods); WRITE_INT_FIELD(typemod, typemod, typemod); WRITE_LIST_FIELD(array_bounds, arrayBounds, arrayBounds); WRITE_INT_FIELD(location, location, location); } static void _outColumnDef(OUT_TYPE(ColumnDef, ColumnDef) out, const ColumnDef *node) { WRITE_STRING_FIELD(colname, colname, colname); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); WRITE_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_NODE_PTR_FIELD(raw_default, raw_default, raw_default); WRITE_NODE_PTR_FIELD(cooked_default, cooked_default, cooked_default); WRITE_CHAR_FIELD(identity, identity, identity); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, identity_sequence, identitySequence, identitySequence); WRITE_CHAR_FIELD(generated, generated, generated); WRITE_SPECIFIC_NODE_PTR_FIELD(CollateClause, collate_clause, coll_clause, collClause, collClause); WRITE_UINT_FIELD(coll_oid, collOid, collOid); WRITE_LIST_FIELD(constraints, constraints, constraints); WRITE_LIST_FIELD(fdwoptions, fdwoptions, fdwoptions); WRITE_INT_FIELD(location, location, location); } static void _outIndexElem(OUT_TYPE(IndexElem, IndexElem) out, const IndexElem *node) { WRITE_STRING_FIELD(name, name, name); WRITE_NODE_PTR_FIELD(expr, expr, expr); WRITE_STRING_FIELD(indexcolname, indexcolname, indexcolname); WRITE_LIST_FIELD(collation, collation, collation); WRITE_LIST_FIELD(opclass, opclass, opclass); WRITE_LIST_FIELD(opclassopts, opclassopts, opclassopts); WRITE_ENUM_FIELD(SortByDir, ordering, ordering, ordering); WRITE_ENUM_FIELD(SortByNulls, nulls_ordering, nulls_ordering, nulls_ordering); } static void _outStatsElem(OUT_TYPE(StatsElem, StatsElem) out, const StatsElem *node) { WRITE_STRING_FIELD(name, name, name); WRITE_NODE_PTR_FIELD(expr, expr, expr); } static void _outConstraint(OUT_TYPE(Constraint, Constraint) out, const Constraint *node) { WRITE_ENUM_FIELD(ConstrType, contype, contype, contype); WRITE_STRING_FIELD(conname, conname, conname); WRITE_BOOL_FIELD(deferrable, deferrable, deferrable); WRITE_BOOL_FIELD(initdeferred, initdeferred, initdeferred); WRITE_INT_FIELD(location, location, location); WRITE_BOOL_FIELD(is_no_inherit, is_no_inherit, is_no_inherit); WRITE_NODE_PTR_FIELD(raw_expr, raw_expr, raw_expr); WRITE_STRING_FIELD(cooked_expr, cooked_expr, cooked_expr); WRITE_CHAR_FIELD(generated_when, generated_when, generated_when); WRITE_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_BOOL_FIELD(skip_validation, skip_validation, skip_validation); WRITE_BOOL_FIELD(initially_valid, initially_valid, initially_valid); } static void _outDefElem(OUT_TYPE(DefElem, DefElem) out, const DefElem *node) { WRITE_STRING_FIELD(defnamespace, defnamespace, defnamespace); WRITE_STRING_FIELD(defname, defname, defname); WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_ENUM_FIELD(DefElemAction, defaction, defaction, defaction); WRITE_INT_FIELD(location, location, location); } static void _outRangeTblEntry(OUT_TYPE(RangeTblEntry, RangeTblEntry) out, const RangeTblEntry *node) { WRITE_ENUM_FIELD(RTEKind, rtekind, rtekind, rtekind); WRITE_UINT_FIELD(relid, relid, relid); WRITE_CHAR_FIELD(relkind, relkind, relkind); WRITE_INT_FIELD(rellockmode, rellockmode, rellockmode); WRITE_SPECIFIC_NODE_PTR_FIELD(TableSampleClause, table_sample_clause, tablesample, tablesample, tablesample); WRITE_SPECIFIC_NODE_PTR_FIELD(Query, query, subquery, subquery, subquery); WRITE_BOOL_FIELD(security_barrier, security_barrier, security_barrier); WRITE_ENUM_FIELD(JoinType, jointype, jointype, jointype); WRITE_INT_FIELD(joinmergedcols, joinmergedcols, joinmergedcols); WRITE_LIST_FIELD(joinaliasvars, joinaliasvars, joinaliasvars); WRITE_LIST_FIELD(joinleftcols, joinleftcols, joinleftcols); WRITE_LIST_FIELD(joinrightcols, joinrightcols, joinrightcols); WRITE_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_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, eref, eref, eref); WRITE_BOOL_FIELD(lateral, lateral, lateral); WRITE_BOOL_FIELD(inh, inh, inh); WRITE_BOOL_FIELD(in_from_cl, inFromCl, inFromCl); WRITE_UINT_FIELD(required_perms, requiredPerms, requiredPerms); WRITE_UINT_FIELD(check_as_user, checkAsUser, checkAsUser); WRITE_BITMAPSET_FIELD(selected_cols, selectedCols, selectedCols); WRITE_BITMAPSET_FIELD(inserted_cols, insertedCols, insertedCols); WRITE_BITMAPSET_FIELD(updated_cols, updatedCols, updatedCols); WRITE_BITMAPSET_FIELD(extra_updated_cols, extraUpdatedCols, extraUpdatedCols); WRITE_LIST_FIELD(security_quals, securityQuals, securityQuals); } static void _outRangeTblFunction(OUT_TYPE(RangeTblFunction, RangeTblFunction) out, const RangeTblFunction *node) { WRITE_NODE_PTR_FIELD(funcexpr, funcexpr, funcexpr); WRITE_INT_FIELD(funccolcount, funccolcount, funccolcount); WRITE_LIST_FIELD(funccolnames, funccolnames, funccolnames); WRITE_LIST_FIELD(funccoltypes, funccoltypes, funccoltypes); WRITE_LIST_FIELD(funccoltypmods, funccoltypmods, funccoltypmods); WRITE_LIST_FIELD(funccolcollations, funccolcollations, funccolcollations); WRITE_BITMAPSET_FIELD(funcparams, funcparams, funcparams); } static void _outTableSampleClause(OUT_TYPE(TableSampleClause, TableSampleClause) out, const TableSampleClause *node) { WRITE_UINT_FIELD(tsmhandler, tsmhandler, tsmhandler); WRITE_LIST_FIELD(args, args, args); WRITE_NODE_PTR_FIELD(repeatable, repeatable, repeatable); } static void _outWithCheckOption(OUT_TYPE(WithCheckOption, WithCheckOption) out, const WithCheckOption *node) { WRITE_ENUM_FIELD(WCOKind, kind, kind, kind); WRITE_STRING_FIELD(relname, relname, relname); WRITE_STRING_FIELD(polname, polname, polname); WRITE_NODE_PTR_FIELD(qual, qual, qual); WRITE_BOOL_FIELD(cascaded, cascaded, cascaded); } static void _outSortGroupClause(OUT_TYPE(SortGroupClause, SortGroupClause) out, const SortGroupClause *node) { WRITE_UINT_FIELD(tle_sort_group_ref, tleSortGroupRef, tleSortGroupRef); WRITE_UINT_FIELD(eqop, eqop, eqop); WRITE_UINT_FIELD(sortop, sortop, sortop); WRITE_BOOL_FIELD(nulls_first, nulls_first, nulls_first); WRITE_BOOL_FIELD(hashable, hashable, hashable); } static void _outGroupingSet(OUT_TYPE(GroupingSet, GroupingSet) out, const GroupingSet *node) { WRITE_ENUM_FIELD(GroupingSetKind, kind, kind, kind); WRITE_LIST_FIELD(content, content, content); WRITE_INT_FIELD(location, location, location); } static void _outWindowClause(OUT_TYPE(WindowClause, WindowClause) out, const WindowClause *node) { WRITE_STRING_FIELD(name, name, name); WRITE_STRING_FIELD(refname, refname, refname); WRITE_LIST_FIELD(partition_clause, partitionClause, partitionClause); WRITE_LIST_FIELD(order_clause, orderClause, orderClause); WRITE_INT_FIELD(frame_options, frameOptions, frameOptions); WRITE_NODE_PTR_FIELD(start_offset, startOffset, startOffset); WRITE_NODE_PTR_FIELD(end_offset, endOffset, endOffset); WRITE_LIST_FIELD(run_condition, runCondition, runCondition); WRITE_UINT_FIELD(start_in_range_func, startInRangeFunc, startInRangeFunc); WRITE_UINT_FIELD(end_in_range_func, endInRangeFunc, endInRangeFunc); WRITE_UINT_FIELD(in_range_coll, inRangeColl, inRangeColl); WRITE_BOOL_FIELD(in_range_asc, inRangeAsc, inRangeAsc); WRITE_BOOL_FIELD(in_range_nulls_first, inRangeNullsFirst, inRangeNullsFirst); WRITE_UINT_FIELD(winref, winref, winref); WRITE_BOOL_FIELD(copied_order, copiedOrder, copiedOrder); } static void _outObjectWithArgs(OUT_TYPE(ObjectWithArgs, ObjectWithArgs) out, const ObjectWithArgs *node) { WRITE_LIST_FIELD(objname, objname, objname); WRITE_LIST_FIELD(objargs, objargs, objargs); WRITE_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 _outCreateOpClassItem(OUT_TYPE(CreateOpClassItem, CreateOpClassItem) out, const CreateOpClassItem *node) { WRITE_INT_FIELD(itemtype, itemtype, itemtype); WRITE_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, name, name, name); WRITE_INT_FIELD(number, number, number); WRITE_LIST_FIELD(order_family, order_family, order_family); WRITE_LIST_FIELD(class_args, class_args, class_args); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, storedtype, storedtype, storedtype); } static void _outTableLikeClause(OUT_TYPE(TableLikeClause, TableLikeClause) out, const TableLikeClause *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_UINT_FIELD(options, options, options); WRITE_UINT_FIELD(relation_oid, relationOid, relationOid); } static void _outFunctionParameter(OUT_TYPE(FunctionParameter, FunctionParameter) out, const FunctionParameter *node) { WRITE_STRING_FIELD(name, name, name); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, arg_type, argType, argType); WRITE_ENUM_FIELD(FunctionParameterMode, mode, mode, mode); WRITE_NODE_PTR_FIELD(defexpr, defexpr, defexpr); } static void _outLockingClause(OUT_TYPE(LockingClause, LockingClause) out, const LockingClause *node) { WRITE_LIST_FIELD(locked_rels, lockedRels, lockedRels); WRITE_ENUM_FIELD(LockClauseStrength, strength, strength, strength); WRITE_ENUM_FIELD(LockWaitPolicy, wait_policy, waitPolicy, waitPolicy); } static void _outRowMarkClause(OUT_TYPE(RowMarkClause, RowMarkClause) out, const RowMarkClause *node) { WRITE_UINT_FIELD(rti, rti, rti); WRITE_ENUM_FIELD(LockClauseStrength, strength, strength, strength); WRITE_ENUM_FIELD(LockWaitPolicy, wait_policy, waitPolicy, waitPolicy); WRITE_BOOL_FIELD(pushed_down, pushedDown, pushedDown); } static void _outXmlSerialize(OUT_TYPE(XmlSerialize, XmlSerialize) out, const XmlSerialize *node) { WRITE_ENUM_FIELD(XmlOptionType, xmloption, xmloption, xmloption); WRITE_NODE_PTR_FIELD(expr, expr, expr); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); WRITE_INT_FIELD(location, location, location); } static void _outWithClause(OUT_TYPE(WithClause, WithClause) out, const WithClause *node) { WRITE_LIST_FIELD(ctes, ctes, ctes); WRITE_BOOL_FIELD(recursive, recursive, recursive); WRITE_INT_FIELD(location, location, location); } static void _outInferClause(OUT_TYPE(InferClause, InferClause) out, const InferClause *node) { WRITE_LIST_FIELD(index_elems, indexElems, indexElems); WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); WRITE_STRING_FIELD(conname, conname, conname); WRITE_INT_FIELD(location, location, location); } static void _outOnConflictClause(OUT_TYPE(OnConflictClause, OnConflictClause) out, const OnConflictClause *node) { WRITE_ENUM_FIELD(OnConflictAction, action, action, action); WRITE_SPECIFIC_NODE_PTR_FIELD(InferClause, infer_clause, infer, infer, infer); WRITE_LIST_FIELD(target_list, targetList, targetList); WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); WRITE_INT_FIELD(location, location, location); } static void _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_BOOL_FIELD(matched, matched, matched); 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 _outRoleSpec(OUT_TYPE(RoleSpec, RoleSpec) out, const RoleSpec *node) { WRITE_ENUM_FIELD(RoleSpecType, roletype, roletype, roletype); WRITE_STRING_FIELD(rolename, rolename, rolename); WRITE_INT_FIELD(location, location, location); } static void _outTriggerTransition(OUT_TYPE(TriggerTransition, TriggerTransition) out, const TriggerTransition *node) { WRITE_STRING_FIELD(name, name, name); WRITE_BOOL_FIELD(is_new, isNew, isNew); WRITE_BOOL_FIELD(is_table, isTable, isTable); } static void _outPartitionElem(OUT_TYPE(PartitionElem, PartitionElem) out, const PartitionElem *node) { WRITE_STRING_FIELD(name, name, name); WRITE_NODE_PTR_FIELD(expr, expr, expr); WRITE_LIST_FIELD(collation, collation, collation); WRITE_LIST_FIELD(opclass, opclass, opclass); WRITE_INT_FIELD(location, location, location); } static void _outPartitionSpec(OUT_TYPE(PartitionSpec, PartitionSpec) out, const PartitionSpec *node) { WRITE_STRING_FIELD(strategy, strategy, strategy); WRITE_LIST_FIELD(part_params, partParams, partParams); WRITE_INT_FIELD(location, location, location); } static void _outPartitionBoundSpec(OUT_TYPE(PartitionBoundSpec, PartitionBoundSpec) out, const PartitionBoundSpec *node) { WRITE_CHAR_FIELD(strategy, strategy, strategy); WRITE_BOOL_FIELD(is_default, is_default, is_default); WRITE_INT_FIELD(modulus, modulus, modulus); WRITE_INT_FIELD(remainder, remainder, remainder); WRITE_LIST_FIELD(listdatums, listdatums, listdatums); WRITE_LIST_FIELD(lowerdatums, lowerdatums, lowerdatums); WRITE_LIST_FIELD(upperdatums, upperdatums, upperdatums); WRITE_INT_FIELD(location, location, location); } static void _outPartitionRangeDatum(OUT_TYPE(PartitionRangeDatum, PartitionRangeDatum) out, const PartitionRangeDatum *node) { WRITE_ENUM_FIELD(PartitionRangeDatumKind, kind, kind, kind); WRITE_NODE_PTR_FIELD(value, value, value); WRITE_INT_FIELD(location, location, location); } static void _outPartitionCmd(OUT_TYPE(PartitionCmd, PartitionCmd) out, const PartitionCmd *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, name, name, name); WRITE_SPECIFIC_NODE_PTR_FIELD(PartitionBoundSpec, partition_bound_spec, bound, bound, bound); WRITE_BOOL_FIELD(concurrent, concurrent, concurrent); } 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 _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 _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 _outInlineCodeBlock(OUT_TYPE(InlineCodeBlock, InlineCodeBlock) out, const InlineCodeBlock *node) { WRITE_STRING_FIELD(source_text, source_text, source_text); WRITE_UINT_FIELD(lang_oid, langOid, langOid); WRITE_BOOL_FIELD(lang_is_trusted, langIsTrusted, langIsTrusted); WRITE_BOOL_FIELD(atomic, atomic, atomic); } static void _outCallContext(OUT_TYPE(CallContext, CallContext) out, const CallContext *node) { WRITE_BOOL_FIELD(atomic, atomic, atomic); } pg_query-4.2.3/ext/pg_query/include/parser/0000755000004100000410000000000014510636647020771 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/parser/parse_node.h0000644000004100000410000003561514510636647023273 0ustar www-datawww-data/*------------------------------------------------------------------------- * * parse_node.h * Internal definitions for parser * * * Portions Copyright (c) 1996-2022, 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 */ 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_joinexprs: list of JoinExpr nodes associated with p_rtable entries. * This is one-for-one with p_rtable, but contains NULLs for non-join * RTEs, and may be shorter than p_rtable if the last RTE(s) aren't joins. * * p_joinlist: list of join items (RangeTblRef and JoinExpr nodes) that * will become the fromlist of the query's top-level FromExpr node. * * p_namespace: list of ParseNamespaceItems that represents the current * namespace for table and column lookup. (The RTEs listed here may be just * a subset of the whole rtable. See ParseNamespaceItem comments below.) * * p_lateral_active: true if we are currently parsing a LATERAL subexpression * of this parse level. This makes p_lateral_only namespace items visible, * whereas they are not visible when p_lateral_active is FALSE. * * p_ctenamespace: list of CommonTableExprs (WITH items) that are visible * at the moment. This is entirely different from p_namespace because a CTE * is not an RTE, rather "visibility" means you could make an RTE from it. * * p_future_ctes: list of CommonTableExprs (WITH items) that are not yet * visible due to scope rules. This is used to help improve error messages. * * p_parent_cte: CommonTableExpr that immediately contains the current query, * if any. * * p_target_relation: target relation, if query is INSERT/UPDATE/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_joinexprs; /* JoinExprs for RTE_JOIN p_rtable entries */ List *p_joinlist; /* join items so far (will become FromExpr * node's fromlist) */ List *p_namespace; /* currently-referenceable RTEs (List of * ParseNamespaceItem) */ bool p_lateral_active; /* p_lateral_only items visible? */ List *p_ctenamespace; /* current namespace for common table exprs */ List *p_future_ctes; /* common table exprs not yet in namespace */ CommonTableExpr *p_parent_cte; /* this query's containing CTE */ Relation p_target_relation; /* INSERT/UPDATE/DELETE/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. * * 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). * 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 */ /* 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 */ pg_query-4.2.3/ext/pg_query/include/parser/parse_oper.h0000644000004100000410000000454614510636647023312 0ustar www-datawww-data/*------------------------------------------------------------------------- * * parse_oper.h * handle operator things for parser * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_oper.h * *------------------------------------------------------------------------- */ #ifndef PARSE_OPER_H #define PARSE_OPER_H #include "access/htup.h" #include "nodes/parsenodes.h" #include "parser/parse_node.h" typedef HeapTuple Operator; /* Routines to look up an operator given name and exact input type(s) */ extern Oid LookupOperName(ParseState *pstate, List *opername, Oid oprleft, Oid oprright, bool noError, int location); extern Oid LookupOperWithArgs(ObjectWithArgs *oper, bool noError); /* Routines to find operators matching a name and given input types */ /* NB: the selected operator may require coercion of the input types! */ extern Operator oper(ParseState *pstate, List *op, Oid arg1, Oid arg2, bool noError, int location); extern Operator left_oper(ParseState *pstate, List *op, Oid arg, bool noError, int location); /* Routines to find operators that DO NOT require coercion --- ie, their */ /* input types are either exactly as given, or binary-compatible */ extern Operator compatible_oper(ParseState *pstate, List *op, Oid arg1, Oid arg2, bool noError, int location); /* currently no need for compatible_left_oper/compatible_right_oper */ /* Routines for identifying "<", "=", ">" operators for a type */ extern void get_sort_group_operators(Oid argtype, bool needLT, bool needEQ, bool needGT, Oid *ltOpr, Oid *eqOpr, Oid *gtOpr, bool *isHashable); /* Convenience routines for common calls on the above */ extern Oid compatible_oper_opid(List *op, Oid arg1, Oid arg2, bool noError); /* Extract operator OID or underlying-function OID from an Operator tuple */ extern Oid oprid(Operator op); extern Oid oprfuncid(Operator op); /* Build expression tree for an operator invocation */ extern Expr *make_op(ParseState *pstate, List *opname, Node *ltree, Node *rtree, Node *last_srf, int location); extern Expr *make_scalar_array_op(ParseState *pstate, List *opname, bool useOr, Node *ltree, Node *rtree, int location); #endif /* PARSE_OPER_H */ pg_query-4.2.3/ext/pg_query/include/parser/parser.h0000644000004100000410000000404214510636647022436 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/parser/kwlist.h0000644000004100000410000007137014510636647022467 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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("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("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("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("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("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("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("key", KEY, 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("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("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("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("placing", PLACING, RESERVED_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("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("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("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("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("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("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("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) pg_query-4.2.3/ext/pg_query/include/parser/scanner.h0000644000004100000410000001253714510636647022603 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/scanner.h * *------------------------------------------------------------------------- */ #ifndef SCANNER_H #define SCANNER_H #include "common/keywords.h" /* * The scanner returns extra data about scanned tokens in this union type. * Note that this is a subset of the fields used in YYSTYPE of the bison * parsers built atop the scanner. */ typedef union core_YYSTYPE { int ival; /* for integer literals */ char *str; /* for identifiers and non-integer literals */ const char *keyword; /* canonical spelling of keywords */ } core_YYSTYPE; /* * We track token locations in terms of byte offsets from the start of the * source string, not the column number/line number representation that * bison uses by default. Also, to minimize overhead we track only one * location (usually the first token location) for each construct, not * the beginning and ending locations as bison does by default. It's * therefore sufficient to make YYLTYPE an int. */ #define YYLTYPE int /* * Another important component of the scanner's API is the token code numbers. * However, those are not defined in this file, because bison insists on * defining them for itself. The token codes used by the core scanner are * the ASCII characters plus these: * %token IDENT UIDENT FCONST SCONST USCONST BCONST XCONST Op * %token ICONST PARAM * %token TYPECAST DOT_DOT COLON_EQUALS EQUALS_GREATER * %token LESS_EQUALS GREATER_EQUALS NOT_EQUALS * The above token definitions *must* be the first ones declared in any * bison parser built atop this scanner, so that they will have consistent * numbers assigned to them (specifically, IDENT = 258 and so on). */ /* * The YY_EXTRA data that a flex scanner allows us to pass around. * Private state needed by the core scanner goes here. Note that the actual * yy_extra struct may be larger and have this as its first component, thus * allowing the calling parser to keep some fields of its own in YY_EXTRA. */ typedef struct core_yy_extra_type { /* * The string the scanner is physically scanning. We keep this mainly so * that we can cheaply compute the offset of the current token (yytext). */ char *scanbuf; Size scanbuflen; /* * The keyword list to use, and the associated grammar token codes. */ const ScanKeywordList *keywordlist; const uint16 *keyword_tokens; /* * Scanner settings to use. These are initialized from the corresponding * GUC variables by scanner_init(). Callers can modify them after * scanner_init() if they don't want the scanner's behavior to follow the * prevailing GUC settings. */ int backslash_quote; bool escape_string_warning; bool standard_conforming_strings; /* * literalbuf is used to accumulate literal values when multiple rules are * needed to parse a single literal. Call startlit() to reset buffer to * empty, addlit() to add text. NOTE: the string in literalbuf is NOT * necessarily null-terminated, but there always IS room to add a trailing * null at offset literallen. We store a null only when we need it. */ char *literalbuf; /* palloc'd expandable buffer */ int literallen; /* actual current string length */ int literalalloc; /* current allocated buffer size */ /* * Random assorted scanner state. */ int state_before_str_stop; /* start cond. before end quote */ int xcdepth; /* depth of nesting in slash-star comments */ char *dolqstart; /* current $foo$ quote start string */ YYLTYPE save_yylloc; /* one-element stack for PUSH_YYLLOC() */ /* first part of UTF16 surrogate pair for Unicode escapes */ int32 utf16_first_part; /* state variables for literal-lexing warnings */ bool warn_on_first_escape; bool saw_non_ascii; int yyllocend; } core_yy_extra_type; /* * The type of yyscanner is opaque outside scan.l. */ typedef void *core_yyscan_t; /* Support for scanner_errposition_callback function */ typedef struct ScannerCallbackState { core_yyscan_t yyscanner; int location; ErrorContextCallback errcallback; } ScannerCallbackState; /* Constant data exported from parser/scan.l */ extern PGDLLIMPORT const uint16 ScanKeywordTokens[]; /* Entry points in parser/scan.l */ extern core_yyscan_t scanner_init(const char *str, core_yy_extra_type *yyext, const ScanKeywordList *keywordlist, const uint16 *keyword_tokens); extern void scanner_finish(core_yyscan_t yyscanner); extern int core_yylex(core_YYSTYPE *lvalp, YYLTYPE *llocp, core_yyscan_t yyscanner); extern int scanner_errposition(int location, core_yyscan_t yyscanner); extern void setup_scanner_errposition_callback(ScannerCallbackState *scbstate, core_yyscan_t yyscanner, int location); extern void cancel_scanner_errposition_callback(ScannerCallbackState *scbstate); extern void scanner_yyerror(const char *message, core_yyscan_t yyscanner) pg_attribute_noreturn(); #endif /* SCANNER_H */ pg_query-4.2.3/ext/pg_query/include/parser/parsetree.h0000644000004100000410000000270114510636647023134 0ustar www-datawww-data/*------------------------------------------------------------------------- * * parsetree.h * Routines to access various components and subcomponents of * parse trees. * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/parser/parse_type.h0000644000004100000410000000422414510636647023317 0ustar www-datawww-data/*------------------------------------------------------------------------- * * parse_type.h * handle type operations for parser * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_type.h * *------------------------------------------------------------------------- */ #ifndef PARSE_TYPE_H #define PARSE_TYPE_H #include "access/htup.h" #include "parser/parse_node.h" typedef HeapTuple Type; extern Type LookupTypeName(ParseState *pstate, const TypeName *typeName, int32 *typmod_p, bool missing_ok); extern Type LookupTypeNameExtended(ParseState *pstate, const TypeName *typeName, int32 *typmod_p, bool temp_ok, bool missing_ok); extern Oid LookupTypeNameOid(ParseState *pstate, const TypeName *typeName, bool missing_ok); extern Type typenameType(ParseState *pstate, const TypeName *typeName, int32 *typmod_p); extern Oid typenameTypeId(ParseState *pstate, const TypeName *typeName); extern void typenameTypeIdAndMod(ParseState *pstate, const TypeName *typeName, Oid *typeid_p, int32 *typmod_p); extern char *TypeNameToString(const TypeName *typeName); extern char *TypeNameListToString(List *typenames); extern Oid LookupCollation(ParseState *pstate, List *collnames, int location); extern Oid GetColumnDefCollation(ParseState *pstate, ColumnDef *coldef, Oid typeOid); extern Type typeidType(Oid id); extern Oid typeTypeId(Type tp); extern int16 typeLen(Type t); extern bool typeByVal(Type t); extern char *typeTypeName(Type t); extern Oid typeTypeRelid(Type typ); extern Oid typeTypeCollation(Type typ); extern Datum stringTypeDatum(Type tp, char *string, int32 atttypmod); extern Oid typeidTypeRelid(Oid type_id); extern Oid typeOrDomainTypeRelid(Oid type_id); extern TypeName *typeStringToTypeName(const char *str); extern void parseTypeString(const char *str, Oid *typeid_p, int32 *typmod_p, bool missing_ok); /* true if typeid is composite, or domain over composite, but not RECORD */ #define ISCOMPLEX(typeid) (typeOrDomainTypeRelid(typeid) != InvalidOid) #endif /* PARSE_TYPE_H */ pg_query-4.2.3/ext/pg_query/include/parser/parse_func.h0000644000004100000410000000471114510636647023272 0ustar www-datawww-data/*------------------------------------------------------------------------- * * parse_func.h * * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/parser/gramparse.h0000644000004100000410000000435414510636647023131 0ustar www-datawww-data/*------------------------------------------------------------------------- * * gramparse.h * Shared definitions for the "raw" parser (flex and bison phases only) * * NOTE: this file is only meant to be included in the core parsing files, * ie, parser.c, gram.y, scan.l, and src/common/keywords.c. * Definitions that are needed outside the core parser should be in parser.h. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/gramparse.h * *------------------------------------------------------------------------- */ #ifndef GRAMPARSE_H #define GRAMPARSE_H #include "nodes/parsenodes.h" #include "parser/scanner.h" /* * NB: include gram.h only AFTER including scanner.h, because scanner.h * is what #defines YYLTYPE. */ #include "parser/gram.h" /* * The YY_EXTRA data that a flex scanner allows us to pass around. Private * state needed for raw parsing/lexing goes here. */ typedef struct base_yy_extra_type { /* * Fields used by the core scanner. */ core_yy_extra_type core_yy_extra; /* * State variables for base_yylex(). */ bool have_lookahead; /* is lookahead info valid? */ int lookahead_token; /* one-token lookahead */ core_YYSTYPE lookahead_yylval; /* yylval for lookahead token */ YYLTYPE lookahead_yylloc; /* yylloc for lookahead token */ char *lookahead_end; /* end of current token */ char lookahead_hold_char; /* to be put back at *lookahead_end */ /* * State variables that belong to the grammar. */ List *parsetree; /* final parse result is delivered here */ } base_yy_extra_type; /* * In principle we should use yyget_extra() to fetch the yyextra field * from a yyscanner struct. However, flex always puts that field first, * and this is sufficiently performance-critical to make it seem worth * cheating a bit to use an inline macro. */ #define pg_yyget_extra(yyscanner) (*((base_yy_extra_type **) (yyscanner))) /* from parser.c */ extern int base_yylex(YYSTYPE *lvalp, YYLTYPE *llocp, core_yyscan_t yyscanner); /* from gram.y */ extern void parser_init(base_yy_extra_type *yyext); extern int base_yyparse(core_yyscan_t yyscanner); #endif /* GRAMPARSE_H */ pg_query-4.2.3/ext/pg_query/include/parser/parse_expr.h0000644000004100000410000000132214510636647023310 0ustar www-datawww-data/*------------------------------------------------------------------------- * * parse_expr.h * handle expressions in parser * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/parser/parse_relation.h0000644000004100000410000001175414510636647024161 0ustar www-datawww-data/*------------------------------------------------------------------------- * * parse_relation.h * prototypes for parse_relation.c. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_relation.h * *------------------------------------------------------------------------- */ #ifndef PARSE_RELATION_H #define PARSE_RELATION_H #include "parser/parse_node.h" extern ParseNamespaceItem *refnameNamespaceItem(ParseState *pstate, const char *schemaname, const char *refname, int location, int *sublevels_up); extern CommonTableExpr *scanNameSpaceForCTE(ParseState *pstate, const char *refname, Index *ctelevelsup); extern bool scanNameSpaceForENR(ParseState *pstate, const char *refname); extern void checkNameSpaceConflicts(ParseState *pstate, List *namespace1, List *namespace2); extern ParseNamespaceItem *GetNSItemByRangeTablePosn(ParseState *pstate, int varno, int sublevels_up); extern RangeTblEntry *GetRTEByRangeTablePosn(ParseState *pstate, int varno, int sublevels_up); extern CommonTableExpr *GetCTEForRTE(ParseState *pstate, RangeTblEntry *rte, int rtelevelsup); extern Node *scanNSItemForColumn(ParseState *pstate, ParseNamespaceItem *nsitem, int sublevels_up, const char *colname, int location); extern Node *colNameToVar(ParseState *pstate, const char *colname, bool localonly, int location); extern void markVarForSelectPriv(ParseState *pstate, Var *var); 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 *joinalias, Alias *alias, bool inFromCl); extern ParseNamespaceItem *addRangeTableEntryForCTE(ParseState *pstate, CommonTableExpr *cte, Index levelsup, RangeVar *rv, bool inFromCl); extern ParseNamespaceItem *addRangeTableEntryForENR(ParseState *pstate, RangeVar *rv, bool inFromCl); extern bool isLockedRefname(ParseState *pstate, const char *refname); extern void addNSItemToQuery(ParseState *pstate, ParseNamespaceItem *nsitem, bool addToJoinList, bool addToRelNameSpace, bool addToVarNameSpace); extern void errorMissingRTE(ParseState *pstate, RangeVar *relation) pg_attribute_noreturn(); extern void errorMissingColumn(ParseState *pstate, const char *relname, const char *colname, int location) pg_attribute_noreturn(); extern void expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up, int location, bool include_dropped, List **colnames, List **colvars); extern List *expandNSItemVars(ParseNamespaceItem *nsitem, int sublevels_up, int location, List **colnames); extern List *expandNSItemAttrs(ParseState *pstate, ParseNamespaceItem *nsitem, int sublevels_up, 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 */ pg_query-4.2.3/ext/pg_query/include/parser/analyze.h0000644000004100000410000000462114510636647022610 0ustar www-datawww-data/*------------------------------------------------------------------------- * * analyze.h * parse analysis for optimizable statements * * * Portions Copyright (c) 1996-2022, 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 "parser/parse_node.h" #include "utils/queryjumble.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 *targetList); extern Query *transformTopLevelStmt(ParseState *pstate, RawStmt *parseTree); extern Query *transformStmt(ParseState *pstate, Node *parseTree); extern bool analyze_requires_snapshot(RawStmt *parseTree); extern const char *LCS_asString(LockClauseStrength strength); extern void CheckSelectLocking(Query *qry, LockClauseStrength strength); extern void applyLockingClause(Query *qry, Index rtindex, LockClauseStrength strength, LockWaitPolicy waitPolicy, bool pushedDown); extern List *BuildOnConflictExcludedTargetlist(Relation targetrel, Index exclRelIndex); extern SortGroupClause *makeSortGroupClauseForSetOp(Oid rescoltype, bool require_hash); #endif /* ANALYZE_H */ pg_query-4.2.3/ext/pg_query/include/parser/gram.h0000644000004100000410000005515514510636647022103 0ustar www-datawww-data/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton interface for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { IDENT = 258, UIDENT = 259, FCONST = 260, SCONST = 261, USCONST = 262, BCONST = 263, XCONST = 264, Op = 265, ICONST = 266, PARAM = 267, TYPECAST = 268, DOT_DOT = 269, COLON_EQUALS = 270, EQUALS_GREATER = 271, LESS_EQUALS = 272, GREATER_EQUALS = 273, NOT_EQUALS = 274, SQL_COMMENT = 275, C_COMMENT = 276, ABORT_P = 277, ABSOLUTE_P = 278, ACCESS = 279, ACTION = 280, ADD_P = 281, ADMIN = 282, AFTER = 283, AGGREGATE = 284, ALL = 285, ALSO = 286, ALTER = 287, ALWAYS = 288, ANALYSE = 289, ANALYZE = 290, AND = 291, ANY = 292, ARRAY = 293, AS = 294, ASC = 295, ASENSITIVE = 296, ASSERTION = 297, ASSIGNMENT = 298, ASYMMETRIC = 299, ATOMIC = 300, AT = 301, ATTACH = 302, ATTRIBUTE = 303, AUTHORIZATION = 304, BACKWARD = 305, BEFORE = 306, BEGIN_P = 307, BETWEEN = 308, BIGINT = 309, BINARY = 310, BIT = 311, BOOLEAN_P = 312, BOTH = 313, BREADTH = 314, BY = 315, CACHE = 316, CALL = 317, CALLED = 318, CASCADE = 319, CASCADED = 320, CASE = 321, CAST = 322, CATALOG_P = 323, CHAIN = 324, CHAR_P = 325, CHARACTER = 326, CHARACTERISTICS = 327, CHECK = 328, CHECKPOINT = 329, CLASS = 330, CLOSE = 331, CLUSTER = 332, COALESCE = 333, COLLATE = 334, COLLATION = 335, COLUMN = 336, COLUMNS = 337, COMMENT = 338, COMMENTS = 339, COMMIT = 340, COMMITTED = 341, COMPRESSION = 342, CONCURRENTLY = 343, CONFIGURATION = 344, CONFLICT = 345, CONNECTION = 346, CONSTRAINT = 347, CONSTRAINTS = 348, CONTENT_P = 349, CONTINUE_P = 350, CONVERSION_P = 351, COPY = 352, COST = 353, CREATE = 354, CROSS = 355, CSV = 356, CUBE = 357, CURRENT_P = 358, CURRENT_CATALOG = 359, CURRENT_DATE = 360, CURRENT_ROLE = 361, CURRENT_SCHEMA = 362, CURRENT_TIME = 363, CURRENT_TIMESTAMP = 364, CURRENT_USER = 365, CURSOR = 366, CYCLE = 367, DATA_P = 368, DATABASE = 369, DAY_P = 370, DEALLOCATE = 371, DEC = 372, DECIMAL_P = 373, DECLARE = 374, DEFAULT = 375, DEFAULTS = 376, DEFERRABLE = 377, DEFERRED = 378, DEFINER = 379, DELETE_P = 380, DELIMITER = 381, DELIMITERS = 382, DEPENDS = 383, DEPTH = 384, DESC = 385, DETACH = 386, DICTIONARY = 387, DISABLE_P = 388, DISCARD = 389, DISTINCT = 390, DO = 391, DOCUMENT_P = 392, DOMAIN_P = 393, DOUBLE_P = 394, DROP = 395, EACH = 396, ELSE = 397, ENABLE_P = 398, ENCODING = 399, ENCRYPTED = 400, END_P = 401, ENUM_P = 402, ESCAPE = 403, EVENT = 404, EXCEPT = 405, EXCLUDE = 406, EXCLUDING = 407, EXCLUSIVE = 408, EXECUTE = 409, EXISTS = 410, EXPLAIN = 411, EXPRESSION = 412, EXTENSION = 413, EXTERNAL = 414, EXTRACT = 415, FALSE_P = 416, FAMILY = 417, FETCH = 418, FILTER = 419, FINALIZE = 420, FIRST_P = 421, FLOAT_P = 422, FOLLOWING = 423, FOR = 424, FORCE = 425, FOREIGN = 426, FORWARD = 427, FREEZE = 428, FROM = 429, FULL = 430, FUNCTION = 431, FUNCTIONS = 432, GENERATED = 433, GLOBAL = 434, GRANT = 435, GRANTED = 436, GREATEST = 437, GROUP_P = 438, GROUPING = 439, GROUPS = 440, HANDLER = 441, HAVING = 442, HEADER_P = 443, HOLD = 444, HOUR_P = 445, IDENTITY_P = 446, IF_P = 447, ILIKE = 448, IMMEDIATE = 449, IMMUTABLE = 450, IMPLICIT_P = 451, IMPORT_P = 452, IN_P = 453, INCLUDE = 454, INCLUDING = 455, INCREMENT = 456, INDEX = 457, INDEXES = 458, INHERIT = 459, INHERITS = 460, INITIALLY = 461, INLINE_P = 462, INNER_P = 463, INOUT = 464, INPUT_P = 465, INSENSITIVE = 466, INSERT = 467, INSTEAD = 468, INT_P = 469, INTEGER = 470, INTERSECT = 471, INTERVAL = 472, INTO = 473, INVOKER = 474, IS = 475, ISNULL = 476, ISOLATION = 477, JOIN = 478, KEY = 479, LABEL = 480, LANGUAGE = 481, LARGE_P = 482, LAST_P = 483, LATERAL_P = 484, LEADING = 485, LEAKPROOF = 486, LEAST = 487, LEFT = 488, LEVEL = 489, LIKE = 490, LIMIT = 491, LISTEN = 492, LOAD = 493, LOCAL = 494, LOCALTIME = 495, LOCALTIMESTAMP = 496, LOCATION = 497, LOCK_P = 498, LOCKED = 499, LOGGED = 500, MAPPING = 501, MATCH = 502, MATCHED = 503, MATERIALIZED = 504, MAXVALUE = 505, MERGE = 506, METHOD = 507, MINUTE_P = 508, MINVALUE = 509, MODE = 510, MONTH_P = 511, MOVE = 512, NAME_P = 513, NAMES = 514, NATIONAL = 515, NATURAL = 516, NCHAR = 517, NEW = 518, NEXT = 519, NFC = 520, NFD = 521, NFKC = 522, NFKD = 523, NO = 524, NONE = 525, NORMALIZE = 526, NORMALIZED = 527, NOT = 528, NOTHING = 529, NOTIFY = 530, NOTNULL = 531, NOWAIT = 532, NULL_P = 533, NULLIF = 534, NULLS_P = 535, NUMERIC = 536, OBJECT_P = 537, OF = 538, OFF = 539, OFFSET = 540, OIDS = 541, OLD = 542, ON = 543, ONLY = 544, OPERATOR = 545, OPTION = 546, OPTIONS = 547, OR = 548, ORDER = 549, ORDINALITY = 550, OTHERS = 551, OUT_P = 552, OUTER_P = 553, OVER = 554, OVERLAPS = 555, OVERLAY = 556, OVERRIDING = 557, OWNED = 558, OWNER = 559, PARALLEL = 560, PARAMETER = 561, PARSER = 562, PARTIAL = 563, PARTITION = 564, PASSING = 565, PASSWORD = 566, PLACING = 567, PLANS = 568, POLICY = 569, POSITION = 570, PRECEDING = 571, PRECISION = 572, PRESERVE = 573, PREPARE = 574, PREPARED = 575, PRIMARY = 576, PRIOR = 577, PRIVILEGES = 578, PROCEDURAL = 579, PROCEDURE = 580, PROCEDURES = 581, PROGRAM = 582, PUBLICATION = 583, QUOTE = 584, RANGE = 585, READ = 586, REAL = 587, REASSIGN = 588, RECHECK = 589, RECURSIVE = 590, REF_P = 591, REFERENCES = 592, REFERENCING = 593, REFRESH = 594, REINDEX = 595, RELATIVE_P = 596, RELEASE = 597, RENAME = 598, REPEATABLE = 599, REPLACE = 600, REPLICA = 601, RESET = 602, RESTART = 603, RESTRICT = 604, RETURN = 605, RETURNING = 606, RETURNS = 607, REVOKE = 608, RIGHT = 609, ROLE = 610, ROLLBACK = 611, ROLLUP = 612, ROUTINE = 613, ROUTINES = 614, ROW = 615, ROWS = 616, RULE = 617, SAVEPOINT = 618, SCHEMA = 619, SCHEMAS = 620, SCROLL = 621, SEARCH = 622, SECOND_P = 623, SECURITY = 624, SELECT = 625, SEQUENCE = 626, SEQUENCES = 627, SERIALIZABLE = 628, SERVER = 629, SESSION = 630, SESSION_USER = 631, SET = 632, SETS = 633, SETOF = 634, SHARE = 635, SHOW = 636, SIMILAR = 637, SIMPLE = 638, SKIP = 639, SMALLINT = 640, SNAPSHOT = 641, SOME = 642, SQL_P = 643, STABLE = 644, STANDALONE_P = 645, START = 646, STATEMENT = 647, STATISTICS = 648, STDIN = 649, STDOUT = 650, STORAGE = 651, STORED = 652, STRICT_P = 653, STRIP_P = 654, SUBSCRIPTION = 655, SUBSTRING = 656, SUPPORT = 657, SYMMETRIC = 658, SYSID = 659, SYSTEM_P = 660, TABLE = 661, TABLES = 662, TABLESAMPLE = 663, TABLESPACE = 664, TEMP = 665, TEMPLATE = 666, TEMPORARY = 667, TEXT_P = 668, THEN = 669, TIES = 670, TIME = 671, TIMESTAMP = 672, TO = 673, TRAILING = 674, TRANSACTION = 675, TRANSFORM = 676, TREAT = 677, TRIGGER = 678, TRIM = 679, TRUE_P = 680, TRUNCATE = 681, TRUSTED = 682, TYPE_P = 683, TYPES_P = 684, UESCAPE = 685, UNBOUNDED = 686, UNCOMMITTED = 687, UNENCRYPTED = 688, UNION = 689, UNIQUE = 690, UNKNOWN = 691, UNLISTEN = 692, UNLOGGED = 693, UNTIL = 694, UPDATE = 695, USER = 696, USING = 697, VACUUM = 698, VALID = 699, VALIDATE = 700, VALIDATOR = 701, VALUE_P = 702, VALUES = 703, VARCHAR = 704, VARIADIC = 705, VARYING = 706, VERBOSE = 707, VERSION_P = 708, VIEW = 709, VIEWS = 710, VOLATILE = 711, WHEN = 712, WHERE = 713, WHITESPACE_P = 714, WINDOW = 715, WITH = 716, WITHIN = 717, WITHOUT = 718, WORK = 719, WRAPPER = 720, WRITE = 721, XML_P = 722, XMLATTRIBUTES = 723, XMLCONCAT = 724, XMLELEMENT = 725, XMLEXISTS = 726, XMLFOREST = 727, XMLNAMESPACES = 728, XMLPARSE = 729, XMLPI = 730, XMLROOT = 731, XMLSERIALIZE = 732, XMLTABLE = 733, YEAR_P = 734, YES_P = 735, ZONE = 736, NOT_LA = 737, NULLS_LA = 738, WITH_LA = 739, MODE_TYPE_NAME = 740, MODE_PLPGSQL_EXPR = 741, MODE_PLPGSQL_ASSIGN1 = 742, MODE_PLPGSQL_ASSIGN2 = 743, MODE_PLPGSQL_ASSIGN3 = 744, UMINUS = 745 }; #endif /* Tokens. */ #define IDENT 258 #define UIDENT 259 #define FCONST 260 #define SCONST 261 #define USCONST 262 #define BCONST 263 #define XCONST 264 #define Op 265 #define ICONST 266 #define PARAM 267 #define TYPECAST 268 #define DOT_DOT 269 #define COLON_EQUALS 270 #define EQUALS_GREATER 271 #define LESS_EQUALS 272 #define GREATER_EQUALS 273 #define NOT_EQUALS 274 #define SQL_COMMENT 275 #define C_COMMENT 276 #define ABORT_P 277 #define ABSOLUTE_P 278 #define ACCESS 279 #define ACTION 280 #define ADD_P 281 #define ADMIN 282 #define AFTER 283 #define AGGREGATE 284 #define ALL 285 #define ALSO 286 #define ALTER 287 #define ALWAYS 288 #define ANALYSE 289 #define ANALYZE 290 #define AND 291 #define ANY 292 #define ARRAY 293 #define AS 294 #define ASC 295 #define ASENSITIVE 296 #define ASSERTION 297 #define ASSIGNMENT 298 #define ASYMMETRIC 299 #define ATOMIC 300 #define AT 301 #define ATTACH 302 #define ATTRIBUTE 303 #define AUTHORIZATION 304 #define BACKWARD 305 #define BEFORE 306 #define BEGIN_P 307 #define BETWEEN 308 #define BIGINT 309 #define BINARY 310 #define BIT 311 #define BOOLEAN_P 312 #define BOTH 313 #define BREADTH 314 #define BY 315 #define CACHE 316 #define CALL 317 #define CALLED 318 #define CASCADE 319 #define CASCADED 320 #define CASE 321 #define CAST 322 #define CATALOG_P 323 #define CHAIN 324 #define CHAR_P 325 #define CHARACTER 326 #define CHARACTERISTICS 327 #define CHECK 328 #define CHECKPOINT 329 #define CLASS 330 #define CLOSE 331 #define CLUSTER 332 #define COALESCE 333 #define COLLATE 334 #define COLLATION 335 #define COLUMN 336 #define COLUMNS 337 #define COMMENT 338 #define COMMENTS 339 #define COMMIT 340 #define COMMITTED 341 #define COMPRESSION 342 #define CONCURRENTLY 343 #define CONFIGURATION 344 #define CONFLICT 345 #define CONNECTION 346 #define CONSTRAINT 347 #define CONSTRAINTS 348 #define CONTENT_P 349 #define CONTINUE_P 350 #define CONVERSION_P 351 #define COPY 352 #define COST 353 #define CREATE 354 #define CROSS 355 #define CSV 356 #define CUBE 357 #define CURRENT_P 358 #define CURRENT_CATALOG 359 #define CURRENT_DATE 360 #define CURRENT_ROLE 361 #define CURRENT_SCHEMA 362 #define CURRENT_TIME 363 #define CURRENT_TIMESTAMP 364 #define CURRENT_USER 365 #define CURSOR 366 #define CYCLE 367 #define DATA_P 368 #define DATABASE 369 #define DAY_P 370 #define DEALLOCATE 371 #define DEC 372 #define DECIMAL_P 373 #define DECLARE 374 #define DEFAULT 375 #define DEFAULTS 376 #define DEFERRABLE 377 #define DEFERRED 378 #define DEFINER 379 #define DELETE_P 380 #define DELIMITER 381 #define DELIMITERS 382 #define DEPENDS 383 #define DEPTH 384 #define DESC 385 #define DETACH 386 #define DICTIONARY 387 #define DISABLE_P 388 #define DISCARD 389 #define DISTINCT 390 #define DO 391 #define DOCUMENT_P 392 #define DOMAIN_P 393 #define DOUBLE_P 394 #define DROP 395 #define EACH 396 #define ELSE 397 #define ENABLE_P 398 #define ENCODING 399 #define ENCRYPTED 400 #define END_P 401 #define ENUM_P 402 #define ESCAPE 403 #define EVENT 404 #define EXCEPT 405 #define EXCLUDE 406 #define EXCLUDING 407 #define EXCLUSIVE 408 #define EXECUTE 409 #define EXISTS 410 #define EXPLAIN 411 #define EXPRESSION 412 #define EXTENSION 413 #define EXTERNAL 414 #define EXTRACT 415 #define FALSE_P 416 #define FAMILY 417 #define FETCH 418 #define FILTER 419 #define FINALIZE 420 #define FIRST_P 421 #define FLOAT_P 422 #define FOLLOWING 423 #define FOR 424 #define FORCE 425 #define FOREIGN 426 #define FORWARD 427 #define FREEZE 428 #define FROM 429 #define FULL 430 #define FUNCTION 431 #define FUNCTIONS 432 #define GENERATED 433 #define GLOBAL 434 #define GRANT 435 #define GRANTED 436 #define GREATEST 437 #define GROUP_P 438 #define GROUPING 439 #define GROUPS 440 #define HANDLER 441 #define HAVING 442 #define HEADER_P 443 #define HOLD 444 #define HOUR_P 445 #define IDENTITY_P 446 #define IF_P 447 #define ILIKE 448 #define IMMEDIATE 449 #define IMMUTABLE 450 #define IMPLICIT_P 451 #define IMPORT_P 452 #define IN_P 453 #define INCLUDE 454 #define INCLUDING 455 #define INCREMENT 456 #define INDEX 457 #define INDEXES 458 #define INHERIT 459 #define INHERITS 460 #define INITIALLY 461 #define INLINE_P 462 #define INNER_P 463 #define INOUT 464 #define INPUT_P 465 #define INSENSITIVE 466 #define INSERT 467 #define INSTEAD 468 #define INT_P 469 #define INTEGER 470 #define INTERSECT 471 #define INTERVAL 472 #define INTO 473 #define INVOKER 474 #define IS 475 #define ISNULL 476 #define ISOLATION 477 #define JOIN 478 #define KEY 479 #define LABEL 480 #define LANGUAGE 481 #define LARGE_P 482 #define LAST_P 483 #define LATERAL_P 484 #define LEADING 485 #define LEAKPROOF 486 #define LEAST 487 #define LEFT 488 #define LEVEL 489 #define LIKE 490 #define LIMIT 491 #define LISTEN 492 #define LOAD 493 #define LOCAL 494 #define LOCALTIME 495 #define LOCALTIMESTAMP 496 #define LOCATION 497 #define LOCK_P 498 #define LOCKED 499 #define LOGGED 500 #define MAPPING 501 #define MATCH 502 #define MATCHED 503 #define MATERIALIZED 504 #define MAXVALUE 505 #define MERGE 506 #define METHOD 507 #define MINUTE_P 508 #define MINVALUE 509 #define MODE 510 #define MONTH_P 511 #define MOVE 512 #define NAME_P 513 #define NAMES 514 #define NATIONAL 515 #define NATURAL 516 #define NCHAR 517 #define NEW 518 #define NEXT 519 #define NFC 520 #define NFD 521 #define NFKC 522 #define NFKD 523 #define NO 524 #define NONE 525 #define NORMALIZE 526 #define NORMALIZED 527 #define NOT 528 #define NOTHING 529 #define NOTIFY 530 #define NOTNULL 531 #define NOWAIT 532 #define NULL_P 533 #define NULLIF 534 #define NULLS_P 535 #define NUMERIC 536 #define OBJECT_P 537 #define OF 538 #define OFF 539 #define OFFSET 540 #define OIDS 541 #define OLD 542 #define ON 543 #define ONLY 544 #define OPERATOR 545 #define OPTION 546 #define OPTIONS 547 #define OR 548 #define ORDER 549 #define ORDINALITY 550 #define OTHERS 551 #define OUT_P 552 #define OUTER_P 553 #define OVER 554 #define OVERLAPS 555 #define OVERLAY 556 #define OVERRIDING 557 #define OWNED 558 #define OWNER 559 #define PARALLEL 560 #define PARAMETER 561 #define PARSER 562 #define PARTIAL 563 #define PARTITION 564 #define PASSING 565 #define PASSWORD 566 #define PLACING 567 #define PLANS 568 #define POLICY 569 #define POSITION 570 #define PRECEDING 571 #define PRECISION 572 #define PRESERVE 573 #define PREPARE 574 #define PREPARED 575 #define PRIMARY 576 #define PRIOR 577 #define PRIVILEGES 578 #define PROCEDURAL 579 #define PROCEDURE 580 #define PROCEDURES 581 #define PROGRAM 582 #define PUBLICATION 583 #define QUOTE 584 #define RANGE 585 #define READ 586 #define REAL 587 #define REASSIGN 588 #define RECHECK 589 #define RECURSIVE 590 #define REF_P 591 #define REFERENCES 592 #define REFERENCING 593 #define REFRESH 594 #define REINDEX 595 #define RELATIVE_P 596 #define RELEASE 597 #define RENAME 598 #define REPEATABLE 599 #define REPLACE 600 #define REPLICA 601 #define RESET 602 #define RESTART 603 #define RESTRICT 604 #define RETURN 605 #define RETURNING 606 #define RETURNS 607 #define REVOKE 608 #define RIGHT 609 #define ROLE 610 #define ROLLBACK 611 #define ROLLUP 612 #define ROUTINE 613 #define ROUTINES 614 #define ROW 615 #define ROWS 616 #define RULE 617 #define SAVEPOINT 618 #define SCHEMA 619 #define SCHEMAS 620 #define SCROLL 621 #define SEARCH 622 #define SECOND_P 623 #define SECURITY 624 #define SELECT 625 #define SEQUENCE 626 #define SEQUENCES 627 #define SERIALIZABLE 628 #define SERVER 629 #define SESSION 630 #define SESSION_USER 631 #define SET 632 #define SETS 633 #define SETOF 634 #define SHARE 635 #define SHOW 636 #define SIMILAR 637 #define SIMPLE 638 #define SKIP 639 #define SMALLINT 640 #define SNAPSHOT 641 #define SOME 642 #define SQL_P 643 #define STABLE 644 #define STANDALONE_P 645 #define START 646 #define STATEMENT 647 #define STATISTICS 648 #define STDIN 649 #define STDOUT 650 #define STORAGE 651 #define STORED 652 #define STRICT_P 653 #define STRIP_P 654 #define SUBSCRIPTION 655 #define SUBSTRING 656 #define SUPPORT 657 #define SYMMETRIC 658 #define SYSID 659 #define SYSTEM_P 660 #define TABLE 661 #define TABLES 662 #define TABLESAMPLE 663 #define TABLESPACE 664 #define TEMP 665 #define TEMPLATE 666 #define TEMPORARY 667 #define TEXT_P 668 #define THEN 669 #define TIES 670 #define TIME 671 #define TIMESTAMP 672 #define TO 673 #define TRAILING 674 #define TRANSACTION 675 #define TRANSFORM 676 #define TREAT 677 #define TRIGGER 678 #define TRIM 679 #define TRUE_P 680 #define TRUNCATE 681 #define TRUSTED 682 #define TYPE_P 683 #define TYPES_P 684 #define UESCAPE 685 #define UNBOUNDED 686 #define UNCOMMITTED 687 #define UNENCRYPTED 688 #define UNION 689 #define UNIQUE 690 #define UNKNOWN 691 #define UNLISTEN 692 #define UNLOGGED 693 #define UNTIL 694 #define UPDATE 695 #define USER 696 #define USING 697 #define VACUUM 698 #define VALID 699 #define VALIDATE 700 #define VALIDATOR 701 #define VALUE_P 702 #define VALUES 703 #define VARCHAR 704 #define VARIADIC 705 #define VARYING 706 #define VERBOSE 707 #define VERSION_P 708 #define VIEW 709 #define VIEWS 710 #define VOLATILE 711 #define WHEN 712 #define WHERE 713 #define WHITESPACE_P 714 #define WINDOW 715 #define WITH 716 #define WITHIN 717 #define WITHOUT 718 #define WORK 719 #define WRAPPER 720 #define WRITE 721 #define XML_P 722 #define XMLATTRIBUTES 723 #define XMLCONCAT 724 #define XMLELEMENT 725 #define XMLEXISTS 726 #define XMLFOREST 727 #define XMLNAMESPACES 728 #define XMLPARSE 729 #define XMLPI 730 #define XMLROOT 731 #define XMLSERIALIZE 732 #define XMLTABLE 733 #define YEAR_P 734 #define YES_P 735 #define ZONE 736 #define NOT_LA 737 #define NULLS_LA 738 #define WITH_LA 739 #define MODE_TYPE_NAME 740 #define MODE_PLPGSQL_EXPR 741 #define MODE_PLPGSQL_ASSIGN1 742 #define MODE_PLPGSQL_ASSIGN2 743 #define MODE_PLPGSQL_ASSIGN3 744 #define UMINUS 745 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 237 "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; MergeWhenClause *mergewhen; struct KeyActions *keyactions; struct KeyAction *keyaction; } /* Line 1529 of yacc.c. */ #line 1080 "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 pg_query-4.2.3/ext/pg_query/include/parser/parse_agg.h0000644000004100000410000000373014510636647023075 0ustar www-datawww-data/*------------------------------------------------------------------------- * * parse_agg.h * handle aggregates and window functions in parser * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_agg.h * *------------------------------------------------------------------------- */ #ifndef PARSE_AGG_H #define PARSE_AGG_H #include "parser/parse_node.h" extern void transformAggregateCall(ParseState *pstate, Aggref *agg, List *args, List *aggorder, bool agg_distinct); extern Node *transformGroupingFunc(ParseState *pstate, GroupingFunc *g); extern void transformWindowFuncCall(ParseState *pstate, WindowFunc *wfunc, WindowDef *windef); extern void parseCheckAggregates(ParseState *pstate, Query *qry); extern List *expand_grouping_sets(List *groupingSets, 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 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 */ pg_query-4.2.3/ext/pg_query/include/parser/scansup.h0000644000004100000410000000141114510636647022613 0ustar www-datawww-data/*------------------------------------------------------------------------- * * scansup.h * scanner support routines used by the core lexer * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/parser/parse_coerce.h0000644000004100000410000000720114510636647023574 0ustar www-datawww-data/*------------------------------------------------------------------------- * * parse_coerce.h * Routines for type coercion. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_coerce.h * *------------------------------------------------------------------------- */ #ifndef PARSE_COERCE_H #define PARSE_COERCE_H #include "parser/parse_node.h" /* Type categories (see TYPCATEGORY_xxx symbols in catalog/pg_type.h) */ typedef char TYPCATEGORY; /* Result codes for find_coercion_pathway */ typedef enum CoercionPathType { COERCION_PATH_NONE, /* failed to find any coercion pathway */ COERCION_PATH_FUNC, /* apply the specified coercion function */ COERCION_PATH_RELABELTYPE, /* binary-compatible cast, no function */ COERCION_PATH_ARRAYCOERCE, /* need an ArrayCoerceExpr node */ COERCION_PATH_COERCEVIAIO /* need a CoerceViaIO node */ } CoercionPathType; extern bool IsBinaryCoercible(Oid srctype, Oid targettype); extern bool IsPreferredType(TYPCATEGORY category, Oid type); extern TYPCATEGORY TypeCategory(Oid type); extern Node *coerce_to_target_type(ParseState *pstate, Node *expr, Oid exprtype, Oid targettype, int32 targettypmod, CoercionContext ccontext, CoercionForm cformat, int location); extern bool can_coerce_type(int nargs, const Oid *input_typeids, const Oid *target_typeids, CoercionContext ccontext); extern Node *coerce_type(ParseState *pstate, Node *node, Oid inputTypeId, Oid targetTypeId, int32 targetTypeMod, CoercionContext ccontext, CoercionForm cformat, int location); extern Node *coerce_to_domain(Node *arg, Oid baseTypeId, int32 baseTypeMod, Oid typeId, CoercionContext ccontext, CoercionForm cformat, int location, bool hideInputCoercion); extern Node *coerce_to_boolean(ParseState *pstate, Node *node, const char *constructName); extern Node *coerce_to_specific_type(ParseState *pstate, Node *node, Oid targetTypeId, const char *constructName); extern Node *coerce_to_specific_type_typmod(ParseState *pstate, Node *node, Oid targetTypeId, int32 targetTypmod, const char *constructName); extern int parser_coercion_errposition(ParseState *pstate, int coerce_location, Node *input_expr); extern Oid select_common_type(ParseState *pstate, List *exprs, const char *context, Node **which_expr); extern Node *coerce_to_common_type(ParseState *pstate, Node *node, Oid targetTypeId, const char *context); extern bool 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 */ pg_query-4.2.3/ext/pg_query/include/xxhash.h0000644000004100000410000061671014510636647021164 0ustar www-datawww-data/* * 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) } #endifpg_query-4.2.3/ext/pg_query/include/access/0000755000004100000410000000000014510636647020736 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/access/rmgr.h0000644000004100000410000000257014510636647022062 0ustar www-datawww-data/* * 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 */ pg_query-4.2.3/ext/pg_query/include/access/xlogdefs.h0000644000004100000410000000571614510636647022733 0ustar www-datawww-data/* * xlogdefs.h * * Postgres write-ahead log manager record pointer and * timeline number definitions * * Portions Copyright (c) 1996-2022, 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. We assume that fsync() is always available, and that * configure determined whether fdatasync() is. */ #if defined(O_SYNC) #define OPEN_SYNC_FLAG O_SYNC #elif defined(O_FSYNC) #define OPEN_SYNC_FLAG O_FSYNC #endif #if defined(O_DSYNC) #if defined(OPEN_SYNC_FLAG) /* O_DSYNC is distinct? */ #if O_DSYNC != OPEN_SYNC_FLAG #define OPEN_DATASYNC_FLAG O_DSYNC #endif #else /* !defined(OPEN_SYNC_FLAG) */ /* Win32 only has O_DSYNC */ #define OPEN_DATASYNC_FLAG O_DSYNC #endif #endif #if defined(PLATFORM_DEFAULT_SYNC_METHOD) #define DEFAULT_SYNC_METHOD PLATFORM_DEFAULT_SYNC_METHOD #elif defined(OPEN_DATASYNC_FLAG) #define DEFAULT_SYNC_METHOD SYNC_METHOD_OPEN_DSYNC #elif defined(HAVE_FDATASYNC) #define DEFAULT_SYNC_METHOD SYNC_METHOD_FDATASYNC #else #define DEFAULT_SYNC_METHOD SYNC_METHOD_FSYNC #endif #endif /* XLOG_DEFS_H */ pg_query-4.2.3/ext/pg_query/include/access/twophase.h0000644000004100000410000000426214510636647022745 0ustar www-datawww-data/*------------------------------------------------------------------------- * * twophase.h * Two-phase-commit related declarations. * * * Portions Copyright (c) 1996-2022, 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 BackendId TwoPhaseGetDummyBackendId(TransactionId xid, bool lock_held); extern GlobalTransaction MarkAsPreparing(TransactionId xid, const char *gid, TimestampTz prepared_at, Oid owner, Oid databaseid); extern void StartPrepare(GlobalTransaction gxact); extern void EndPrepare(GlobalTransaction gxact); extern bool StandbyTransactionIdIsPrepared(TransactionId xid); extern TransactionId PrescanPreparedTransactions(TransactionId **xids_p, int *nxids_p); extern void StandbyRecoverPreparedTransactions(void); extern void RecoverPreparedTransactions(void); extern void CheckPointTwoPhase(XLogRecPtr redo_horizon); extern void FinishPreparedTransaction(const char *gid, bool isCommit); extern void PrepareRedoAdd(char *buf, XLogRecPtr start_lsn, XLogRecPtr end_lsn, RepOriginId origin_id); extern void PrepareRedoRemove(TransactionId xid, bool giveWarning); extern void restoreTwoPhaseData(void); extern bool LookupGXact(const char *gid, XLogRecPtr prepare_at_lsn, TimestampTz origin_prepare_timestamp); #endif /* TWOPHASE_H */ pg_query-4.2.3/ext/pg_query/include/access/tupmacs.h0000644000004100000410000001657314510636647022577 0ustar www-datawww-data/*------------------------------------------------------------------------- * * tupmacs.h * Tuple macros used by both index tuples and heap tuples. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/tupmacs.h * *------------------------------------------------------------------------- */ #ifndef TUPMACS_H #define TUPMACS_H #include "catalog/pg_type_d.h" /* for TYPALIGN macros */ /* * Check a tuple's null bitmap to determine whether the attribute is null. * Note that a 0 in the null bitmap indicates a null, while 1 indicates * non-null. */ #define att_isnull(ATT, BITS) (!((BITS)[(ATT) >> 3] & (1 << ((ATT) & 0x07)))) /* * Given a Form_pg_attribute and a pointer into a tuple's data area, * return the correct value or pointer. * * We return a Datum value in all cases. If the attribute has "byval" false, * we return the same pointer into the tuple data area that we're passed. * Otherwise, we return the correct number of bytes fetched from the data * area and extended to Datum form. * * On machines where Datum is 8 bytes, we support fetching 8-byte byval * attributes; otherwise, only 1, 2, and 4-byte values are supported. * * Note that T must already be properly aligned for this to work correctly. */ #define fetchatt(A,T) fetch_att(T, (A)->attbyval, (A)->attlen) /* * Same, but work from byval/len parameters rather than Form_pg_attribute. */ #if SIZEOF_DATUM == 8 #define fetch_att(T,attbyval,attlen) \ ( \ (attbyval) ? \ ( \ (attlen) == (int) sizeof(Datum) ? \ *((Datum *)(T)) \ : \ ( \ (attlen) == (int) sizeof(int32) ? \ Int32GetDatum(*((int32 *)(T))) \ : \ ( \ (attlen) == (int) sizeof(int16) ? \ Int16GetDatum(*((int16 *)(T))) \ : \ ( \ AssertMacro((attlen) == 1), \ CharGetDatum(*((char *)(T))) \ ) \ ) \ ) \ ) \ : \ PointerGetDatum((char *) (T)) \ ) #else /* SIZEOF_DATUM != 8 */ #define fetch_att(T,attbyval,attlen) \ ( \ (attbyval) ? \ ( \ (attlen) == (int) sizeof(int32) ? \ Int32GetDatum(*((int32 *)(T))) \ : \ ( \ (attlen) == (int) sizeof(int16) ? \ Int16GetDatum(*((int16 *)(T))) \ : \ ( \ AssertMacro((attlen) == 1), \ CharGetDatum(*((char *)(T))) \ ) \ ) \ ) \ : \ PointerGetDatum((char *) (T)) \ ) #endif /* SIZEOF_DATUM == 8 */ /* * att_align_datum aligns the given offset as needed for a datum of alignment * requirement attalign and typlen attlen. attdatum is the Datum variable * we intend to pack into a tuple (it's only accessed if we are dealing with * a varlena type). Note that this assumes the Datum will be stored as-is; * callers that are intending to convert non-short varlena datums to short * format have to account for that themselves. */ #define att_align_datum(cur_offset, attalign, attlen, attdatum) \ ( \ ((attlen) == -1 && VARATT_IS_SHORT(DatumGetPointer(attdatum))) ? \ (uintptr_t) (cur_offset) : \ att_align_nominal(cur_offset, attalign) \ ) /* * att_align_pointer performs the same calculation as att_align_datum, * but is used when walking a tuple. attptr is the current actual data * pointer; when accessing a varlena field we have to "peek" to see if we * are looking at a pad byte or the first byte of a 1-byte-header datum. * (A zero byte must be either a pad byte, or the first byte of a correctly * aligned 4-byte length word; in either case we can align safely. A non-zero * byte must be either a 1-byte length word, or the first byte of a correctly * aligned 4-byte length word; in either case we need not align.) * * Note: some callers pass a "char *" pointer for cur_offset. This is * a bit of a hack but should work all right as long as uintptr_t is the * correct width. */ #define att_align_pointer(cur_offset, attalign, attlen, attptr) \ ( \ ((attlen) == -1 && VARATT_NOT_PAD_BYTE(attptr)) ? \ (uintptr_t) (cur_offset) : \ att_align_nominal(cur_offset, attalign) \ ) /* * att_align_nominal aligns the given offset as needed for a datum of alignment * requirement attalign, ignoring any consideration of packed varlena datums. * There are three main use cases for using this macro directly: * * we know that the att in question is not varlena (attlen != -1); * in this case it is cheaper than the above macros and just as good. * * we need to estimate alignment padding cost abstractly, ie without * reference to a real tuple. We must assume the worst case that * all varlenas are aligned. * * within arrays 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) \ )) \ ) /* * store_att_byval is a partial inverse of fetch_att: store a given Datum * value into a tuple data area at the specified address. However, it only * handles the byval case, because in typical usage the caller needs to * distinguish by-val and by-ref cases anyway, and so a do-it-all macro * wouldn't be convenient. */ #if SIZEOF_DATUM == 8 #define store_att_byval(T,newdatum,attlen) \ do { \ switch (attlen) \ { \ case sizeof(char): \ *(char *) (T) = DatumGetChar(newdatum); \ break; \ case sizeof(int16): \ *(int16 *) (T) = DatumGetInt16(newdatum); \ break; \ case sizeof(int32): \ *(int32 *) (T) = DatumGetInt32(newdatum); \ break; \ case sizeof(Datum): \ *(Datum *) (T) = (newdatum); \ break; \ default: \ elog(ERROR, "unsupported byval length: %d", \ (int) (attlen)); \ break; \ } \ } while (0) #else /* SIZEOF_DATUM != 8 */ #define store_att_byval(T,newdatum,attlen) \ do { \ switch (attlen) \ { \ case sizeof(char): \ *(char *) (T) = DatumGetChar(newdatum); \ break; \ case sizeof(int16): \ *(int16 *) (T) = DatumGetInt16(newdatum); \ break; \ case sizeof(int32): \ *(int32 *) (T) = DatumGetInt32(newdatum); \ break; \ default: \ elog(ERROR, "unsupported byval length: %d", \ (int) (attlen)); \ break; \ } \ } while (0) #endif /* SIZEOF_DATUM == 8 */ #endif pg_query-4.2.3/ext/pg_query/include/access/xlog_internal.h0000644000004100000410000003001214510636647023750 0ustar www-datawww-data/* * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/xlog_internal.h */ #ifndef XLOG_INTERNAL_H #define XLOG_INTERNAL_H #include "access/xlogdefs.h" #include "access/xlogreader.h" #include "datatype/timestamp.h" #include "lib/stringinfo.h" #include "pgtime.h" #include "storage/block.h" #include "storage/relfilenode.h" /* * Each page of XLOG file has a header like this: */ #define XLOG_PAGE_MAGIC 0xD110 /* 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 macro in a helper * function allocating the result generated. */ #define XLogFileName(fname, tli, logSegNo, wal_segsz_bytes) \ snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli, \ (uint32) ((logSegNo) / XLogSegmentsPerXLogId(wal_segsz_bytes)), \ (uint32) ((logSegNo) % XLogSegmentsPerXLogId(wal_segsz_bytes))) #define XLogFileNameById(fname, tli, log, seg) \ snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli, log, seg) #define IsXLogFileName(fname) \ (strlen(fname) == XLOG_FNAME_LEN && \ strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN) /* * XLOG segment with .partial suffix. Used by pg_receivewal and at end of * archive recovery, when we want to archive a WAL segment but it might not * be complete yet. */ #define IsPartialXLogFileName(fname) \ (strlen(fname) == XLOG_FNAME_LEN + strlen(".partial") && \ strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN && \ strcmp((fname) + XLOG_FNAME_LEN, ".partial") == 0) #define XLogFromFileName(fname, tli, logSegNo, wal_segsz_bytes) \ do { \ uint32 log; \ uint32 seg; \ sscanf(fname, "%08X%08X%08X", tli, &log, &seg); \ *logSegNo = (uint64) log * XLogSegmentsPerXLogId(wal_segsz_bytes) + seg; \ } while (0) #define XLogFilePath(path, tli, logSegNo, wal_segsz_bytes) \ snprintf(path, MAXPGPATH, XLOGDIR "/%08X%08X%08X", tli, \ (uint32) ((logSegNo) / XLogSegmentsPerXLogId(wal_segsz_bytes)), \ (uint32) ((logSegNo) % XLogSegmentsPerXLogId(wal_segsz_bytes))) #define TLHistoryFileName(fname, tli) \ snprintf(fname, MAXFNAMELEN, "%08X.history", tli) #define IsTLHistoryFileName(fname) \ (strlen(fname) == 8 + strlen(".history") && \ strspn(fname, "0123456789ABCDEF") == 8 && \ strcmp((fname) + 8, ".history") == 0) #define TLHistoryFilePath(path, tli) \ snprintf(path, MAXPGPATH, XLOGDIR "/%08X.history", tli) #define StatusFilePath(path, xlog, suffix) \ snprintf(path, MAXPGPATH, XLOGDIR "/archive_status/%s%s", xlog, suffix) #define BackupHistoryFileName(fname, tli, logSegNo, startpoint, wal_segsz_bytes) \ snprintf(fname, MAXFNAMELEN, "%08X%08X%08X.%08X.backup", tli, \ (uint32) ((logSegNo) / XLogSegmentsPerXLogId(wal_segsz_bytes)), \ (uint32) ((logSegNo) % XLogSegmentsPerXLogId(wal_segsz_bytes)), \ (uint32) (XLogSegmentOffset(startpoint, wal_segsz_bytes))) #define IsBackupHistoryFileName(fname) \ (strlen(fname) > XLOG_FNAME_LEN && \ strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN && \ strcmp((fname) + strlen(fname) - strlen(".backup"), ".backup") == 0) #define BackupHistoryFilePath(path, tli, logSegNo, startpoint, wal_segsz_bytes) \ snprintf(path, MAXPGPATH, XLOGDIR "/%08X%08X%08X.%08X.backup", tli, \ (uint32) ((logSegNo) / XLogSegmentsPerXLogId(wal_segsz_bytes)), \ (uint32) ((logSegNo) % XLogSegmentsPerXLogId(wal_segsz_bytes)), \ (uint32) (XLogSegmentOffset((startpoint), wal_segsz_bytes))) /* * Information logged when we detect a change in one of the parameters * important for Hot Standby. */ typedef struct xl_parameter_change { int MaxConnections; int max_worker_processes; int max_wal_senders; int max_prepared_xacts; int max_locks_per_xact; int wal_level; bool wal_log_hints; bool track_commit_timestamp; } xl_parameter_change; /* logs restore point */ typedef struct xl_restore_point { TimestampTz rp_time; char rp_name[MAXFNAMELEN]; } xl_restore_point; /* 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 */ } 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, 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 */ pg_query-4.2.3/ext/pg_query/include/access/xlog.h0000644000004100000410000002561614510636647022072 0ustar www-datawww-data/* * xlog.h * * PostgreSQL write-ahead log manager * * Portions Copyright (c) 1996-2022, 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/xlogdefs.h" #include "access/xlogreader.h" #include "datatype/timestamp.h" #include "lib/stringinfo.h" #include "nodes/pg_list.h" /* Sync methods */ #define SYNC_METHOD_FSYNC 0 #define SYNC_METHOD_FDATASYNC 1 #define SYNC_METHOD_OPEN 2 /* for O_SYNC */ #define SYNC_METHOD_FSYNC_WRITETHROUGH 3 #define SYNC_METHOD_OPEN_DSYNC 4 /* for O_DSYNC */ extern PGDLLIMPORT int 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; extern XLogRecPtr XLogInsertRecord(struct XLogRecData *rdata, XLogRecPtr fpw_lsn, uint8 flags, int num_fpi, bool topxid_included); extern void XLogFlush(XLogRecPtr RecPtr); extern bool XLogBackgroundFlush(void); extern bool XLogNeedsFlush(XLogRecPtr RecPtr); extern int XLogFileInit(XLogSegNo segno, TimeLineID tli); extern int XLogFileOpen(XLogSegNo segno, TimeLineID tli); extern void CheckXLogRemoved(XLogSegNo segno, TimeLineID tli); extern XLogSegNo XLogGetLastRemovedSegno(void); extern void XLogSetAsyncXactLSN(XLogRecPtr record); extern void XLogSetReplicationSlotMinimumLSN(XLogRecPtr lsn); extern void xlog_redo(XLogReaderState *record); extern void xlog_desc(StringInfo buf, XLogReaderState *record); extern const char *xlog_identify(uint8 info); extern void issue_xlog_fsync(int fd, XLogSegNo segno, 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 LocalProcessControlFile(bool reset); 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 XLogRecPtr GetLastImportantRecPtr(void); extern void SetWalWriterSleeping(bool sleeping); extern void assign_max_wal_size(int newval, void *extra); extern void assign_checkpoint_completion_target(double newval, void *extra); /* * 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 XLogRecPtr do_pg_backup_start(const char *backupidstr, bool fast, TimeLineID *starttli_p, StringInfo labelfile, List **tablespaces, StringInfo tblspcmapfile); extern XLogRecPtr do_pg_backup_stop(char *labelfile, bool waitforarchive, TimeLineID *stoptli_p); extern void do_pg_abort_backup(int code, Datum arg); extern void register_persistent_abort_backup_handler(void); extern SessionBackupState get_backup_status(void); /* File path names (all relative to $PGDATA) */ #define RECOVERY_SIGNAL_FILE "recovery.signal" #define STANDBY_SIGNAL_FILE "standby.signal" #define BACKUP_LABEL_FILE "backup_label" #define BACKUP_LABEL_OLD "backup_label.old" #define TABLESPACE_MAP "tablespace_map" #define TABLESPACE_MAP_OLD "tablespace_map.old" /* files to signal promotion to primary */ #define PROMOTE_SIGNAL_FILE "promote" #endif /* XLOG_H */ pg_query-4.2.3/ext/pg_query/include/access/itup.h0000644000004100000410000001234314510636647022073 0ustar www-datawww-data/*------------------------------------------------------------------------- * * itup.h * POSTGRES index tuple definitions. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/itup.h * *------------------------------------------------------------------------- */ #ifndef ITUP_H #define ITUP_H #include "access/tupdesc.h" #include "access/tupmacs.h" #include "storage/bufpage.h" #include "storage/itemptr.h" /* * Index tuple header structure * * All index tuples start with IndexTupleData. If the HasNulls bit is set, * this is followed by an IndexAttributeBitMapData. The index attribute * values follow, beginning at a MAXALIGN boundary. * * Note that the space allocated for the bitmap does not vary with the number * of attributes; that is because we don't have room to store the number of * attributes in the header. Given the MAXALIGN constraint there's no space * savings to be had anyway, for usual values of INDEX_MAX_KEYS. */ typedef struct IndexTupleData { ItemPointerData t_tid; /* reference TID to heap tuple */ /* --------------- * t_info is laid out in the following fashion: * * 15th (high) bit: has nulls * 14th bit: has var-width attributes * 13th bit: AM-defined meaning * 12-0 bit: size of tuple * --------------- */ unsigned short t_info; /* various info about tuple */ } IndexTupleData; /* MORE DATA FOLLOWS AT END OF STRUCT */ typedef IndexTupleData *IndexTuple; typedef struct IndexAttributeBitMapData { bits8 bits[(INDEX_MAX_KEYS + 8 - 1) / 8]; } IndexAttributeBitMapData; typedef IndexAttributeBitMapData * IndexAttributeBitMap; /* * t_info manipulation macros */ #define INDEX_SIZE_MASK 0x1FFF #define INDEX_AM_RESERVED_BIT 0x2000 /* reserved for index-AM specific * usage */ #define INDEX_VAR_MASK 0x4000 #define INDEX_NULL_MASK 0x8000 #define IndexTupleSize(itup) ((Size) ((itup)->t_info & INDEX_SIZE_MASK)) #define IndexTupleHasNulls(itup) ((((IndexTuple) (itup))->t_info & INDEX_NULL_MASK)) #define IndexTupleHasVarwidths(itup) ((((IndexTuple) (itup))->t_info & INDEX_VAR_MASK)) /* * Takes an infomask as argument (primarily because this needs to be usable * at index_form_tuple time so enough space is allocated). */ #define IndexInfoFindDataOffset(t_info) \ ( \ (!((t_info) & INDEX_NULL_MASK)) ? \ ( \ (Size)MAXALIGN(sizeof(IndexTupleData)) \ ) \ : \ ( \ (Size)MAXALIGN(sizeof(IndexTupleData) + sizeof(IndexAttributeBitMapData)) \ ) \ ) /* ---------------- * index_getattr * * This gets called many times, so we macro the cacheable and NULL * lookups, and call nocache_index_getattr() for the rest. * * ---------------- */ #define index_getattr(tup, attnum, tupleDesc, isnull) \ ( \ AssertMacro(PointerIsValid(isnull) && (attnum) > 0), \ *(isnull) = false, \ !IndexTupleHasNulls(tup) ? \ ( \ TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff >= 0 ? \ ( \ fetchatt(TupleDescAttr((tupleDesc), (attnum)-1), \ (char *) (tup) + IndexInfoFindDataOffset((tup)->t_info) \ + TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff) \ ) \ : \ nocache_index_getattr((tup), (attnum), (tupleDesc)) \ ) \ : \ ( \ (att_isnull((attnum)-1, (char *)(tup) + sizeof(IndexTupleData))) ? \ ( \ *(isnull) = true, \ (Datum)NULL \ ) \ : \ ( \ nocache_index_getattr((tup), (attnum), (tupleDesc)) \ ) \ ) \ ) /* * MaxIndexTuplesPerPage is an upper bound on the number of tuples that can * fit on one index page. An index tuple must have either data or a null * bitmap, so we can safely assume it's at least 1 byte bigger than a bare * IndexTupleData struct. We arrive at the divisor because each tuple * must be maxaligned, and it must have an associated line pointer. * * To be index-type-independent, this does not account for any special space * on the page, and is thus conservative. * * Note: in btree non-leaf pages, the first tuple has no key (it's implicitly * minus infinity), thus breaking the "at least 1 byte bigger" assumption. * On such a page, N tuples could take one MAXALIGN quantum less space than * estimated here, seemingly allowing one more tuple than estimated here. * But such a page always has at least MAXALIGN special space, so we're safe. */ #define MaxIndexTuplesPerPage \ ((int) ((BLCKSZ - SizeOfPageHeaderData) / \ (MAXALIGN(sizeof(IndexTupleData) + 1) + sizeof(ItemIdData)))) /* routines in indextuple.c */ extern IndexTuple index_form_tuple(TupleDesc tupleDescriptor, Datum *values, bool *isnull); extern IndexTuple index_form_tuple_context(TupleDesc tupleDescriptor, Datum *values, 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); #endif /* ITUP_H */ pg_query-4.2.3/ext/pg_query/include/access/htup_details.h0000644000004100000410000007103314510636647023600 0ustar www-datawww-data/*------------------------------------------------------------------------- * * htup_details.h * POSTGRES heap tuple header definitions. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/htup_details.h * *------------------------------------------------------------------------- */ #ifndef HTUP_DETAILS_H #define HTUP_DETAILS_H #include "access/htup.h" #include "access/transam.h" #include "access/tupdesc.h" #include "access/tupmacs.h" #include "storage/bufpage.h" /* * MaxTupleAttributeNumber limits the number of (user) columns in a tuple. * The key limit on this value is that the size of the fixed overhead for * a tuple, plus the size of the null-values bitmap (at 1 bit per column), * plus MAXALIGN alignment, must fit into t_hoff which is uint8. On most * machines the upper limit without making t_hoff wider would be a little * over 1700. We use round numbers here and for MaxHeapAttributeNumber * so that alterations in HeapTupleHeaderData layout won't change the * supported max number of columns. */ #define MaxTupleAttributeNumber 1664 /* 8 * 208 */ /* * MaxHeapAttributeNumber limits the number of (user) columns in a table. * This should be somewhat less than MaxTupleAttributeNumber. It must be * at least one less, else we will fail to do UPDATEs on a maximal-width * table (because UPDATE has to form working tuples that include CTID). * In practice we want some additional daylight so that we can gracefully * support operations that add hidden "resjunk" columns, for example * SELECT * FROM wide_table ORDER BY foo, bar, baz. * In any case, depending on column data types you will likely be running * into the disk-block-based limit on overall tuple size if you have more * than a thousand or so columns. TOAST won't help. */ #define MaxHeapAttributeNumber 1600 /* 8 * 200 */ /* * Heap tuple header. To avoid wasting space, the fields should be * laid out in such a way as to avoid structure padding. * * Datums of composite types (row types) share the same general structure * as on-disk tuples, so that the same routines can be used to build and * examine them. However the requirements are slightly different: a Datum * does not need any transaction visibility information, and it does need * a length word and some embedded type information. We can achieve this * by overlaying the xmin/cmin/xmax/cmax/xvac fields of a heap tuple * with the fields needed in the Datum case. Typically, all tuples built * in-memory will be initialized with the Datum fields; but when a tuple is * about to be inserted in a table, the transaction fields will be filled, * overwriting the datum fields. * * The overall structure of a heap tuple looks like: * fixed fields (HeapTupleHeaderData struct) * nulls bitmap (if HEAP_HASNULL is set in t_infomask) * alignment padding (as needed to make user data MAXALIGN'd) * object ID (if HEAP_HASOID_OLD is set in t_infomask, not created * anymore) * user data fields * * We store five "virtual" fields Xmin, Cmin, Xmax, Cmax, and Xvac in three * physical fields. Xmin and Xmax are always really stored, but Cmin, Cmax * and Xvac share a field. This works because we know that Cmin and Cmax * are only interesting for the lifetime of the inserting and deleting * transaction respectively. If a tuple is inserted and deleted in the same * transaction, we store a "combo" command id that can be mapped to the real * cmin and cmax, but only by use of local state within the originating * backend. See combocid.c for more details. Meanwhile, Xvac is only set by * old-style VACUUM FULL, which does not have any command sub-structure and so * does not need either Cmin or Cmax. (This requires that old-style VACUUM * FULL never try to move a tuple whose Cmin or Cmax is still interesting, * ie, an insert-in-progress or delete-in-progress tuple.) * * A word about t_ctid: whenever a new tuple is stored on disk, its t_ctid * is initialized with its own TID (location). If the tuple is ever updated, * its t_ctid is changed to point to the replacement version of the tuple. Or * if the tuple is moved from one partition to another, due to an update of * the partition key, t_ctid is set to a special value to indicate that * (see ItemPointerSetMovedPartitions). Thus, a tuple is the latest version * of its row iff XMAX is invalid or * t_ctid points to itself (in which case, if XMAX is valid, the tuple is * either locked or deleted). One can follow the chain of t_ctid links * to find the newest version of the row, unless it was moved to a different * partition. Beware however that VACUUM might * erase the pointed-to (newer) tuple before erasing the pointing (older) * tuple. Hence, when following a t_ctid link, it is necessary to check * to see if the referenced slot is empty or contains an unrelated tuple. * Check that the referenced tuple has XMIN equal to the referencing tuple's * XMAX to verify that it is actually the descendant version and not an * unrelated tuple stored into a slot recently freed by VACUUM. If either * check fails, one may assume that there is no live descendant version. * * t_ctid is sometimes used to store a speculative insertion token, instead * of a real TID. A speculative token is set on a tuple that's being * inserted, until the inserter is sure that it wants to go ahead with the * insertion. Hence a token should only be seen on a tuple with an XMAX * that's still in-progress, or invalid/aborted. The token is replaced with * the tuple's real TID when the insertion is confirmed. One should never * see a speculative insertion token while following a chain of t_ctid links, * because they are not used on updates, only insertions. * * Following the fixed header fields, the nulls bitmap is stored (beginning * at t_bits). The bitmap is *not* stored if t_infomask shows that there * are no nulls in the tuple. If an OID field is present (as indicated by * t_infomask), then it is stored just before the user data, which begins at * the offset shown by t_hoff. Note that t_hoff must be a multiple of * MAXALIGN. */ typedef struct HeapTupleFields { TransactionId t_xmin; /* inserting xact ID */ TransactionId t_xmax; /* deleting or locking xact ID */ union { CommandId t_cid; /* inserting or deleting command ID, or both */ TransactionId t_xvac; /* old-style VACUUM FULL xact ID */ } t_field3; } HeapTupleFields; typedef struct DatumTupleFields { int32 datum_len_; /* varlena header (do not touch directly!) */ int32 datum_typmod; /* -1, or identifier of a record type */ Oid datum_typeid; /* composite type OID, or RECORDOID */ /* * datum_typeid cannot be a domain over composite, only plain composite, * even if the datum is meant as a value of a domain-over-composite type. * This is in line with the general principle that CoerceToDomain does not * change the physical representation of the base type value. * * Note: field ordering is chosen with thought that Oid might someday * widen to 64 bits. */ } DatumTupleFields; struct HeapTupleHeaderData { union { HeapTupleFields t_heap; DatumTupleFields t_datum; } t_choice; ItemPointerData t_ctid; /* current TID of this or newer tuple (or a * speculative insertion token) */ /* Fields below here must match MinimalTupleData! */ #define FIELDNO_HEAPTUPLEHEADERDATA_INFOMASK2 2 uint16 t_infomask2; /* number of attributes + various flags */ #define FIELDNO_HEAPTUPLEHEADERDATA_INFOMASK 3 uint16 t_infomask; /* various flag bits, see below */ #define FIELDNO_HEAPTUPLEHEADERDATA_HOFF 4 uint8 t_hoff; /* sizeof header incl. bitmap, padding */ /* ^ - 23 bytes - ^ */ #define FIELDNO_HEAPTUPLEHEADERDATA_BITS 5 bits8 t_bits[FLEXIBLE_ARRAY_MEMBER]; /* bitmap of NULLs */ /* MORE DATA FOLLOWS AT END OF STRUCT */ }; /* typedef appears in htup.h */ #define SizeofHeapTupleHeader offsetof(HeapTupleHeaderData, t_bits) /* * information stored in t_infomask: */ #define HEAP_HASNULL 0x0001 /* has null attribute(s) */ #define HEAP_HASVARWIDTH 0x0002 /* has variable-width attribute(s) */ #define HEAP_HASEXTERNAL 0x0004 /* has external stored attribute(s) */ #define HEAP_HASOID_OLD 0x0008 /* has an object-id field */ #define HEAP_XMAX_KEYSHR_LOCK 0x0010 /* xmax is a key-shared locker */ #define HEAP_COMBOCID 0x0020 /* t_cid is a combo CID */ #define HEAP_XMAX_EXCL_LOCK 0x0040 /* xmax is exclusive locker */ #define HEAP_XMAX_LOCK_ONLY 0x0080 /* xmax, if valid, is only a locker */ /* xmax is a shared locker */ #define HEAP_XMAX_SHR_LOCK (HEAP_XMAX_EXCL_LOCK | HEAP_XMAX_KEYSHR_LOCK) #define HEAP_LOCK_MASK (HEAP_XMAX_SHR_LOCK | HEAP_XMAX_EXCL_LOCK | \ HEAP_XMAX_KEYSHR_LOCK) #define HEAP_XMIN_COMMITTED 0x0100 /* t_xmin committed */ #define HEAP_XMIN_INVALID 0x0200 /* t_xmin invalid/aborted */ #define HEAP_XMIN_FROZEN (HEAP_XMIN_COMMITTED|HEAP_XMIN_INVALID) #define HEAP_XMAX_COMMITTED 0x0400 /* t_xmax committed */ #define HEAP_XMAX_INVALID 0x0800 /* t_xmax invalid/aborted */ #define HEAP_XMAX_IS_MULTI 0x1000 /* t_xmax is a MultiXactId */ #define HEAP_UPDATED 0x2000 /* this is UPDATEd version of row */ #define HEAP_MOVED_OFF 0x4000 /* moved to another place by pre-9.0 * VACUUM FULL; kept for binary * upgrade support */ #define HEAP_MOVED_IN 0x8000 /* moved from another place by pre-9.0 * VACUUM FULL; kept for binary * upgrade support */ #define HEAP_MOVED (HEAP_MOVED_OFF | HEAP_MOVED_IN) #define HEAP_XACT_MASK 0xFFF0 /* visibility-related bits */ /* * A tuple is only locked (i.e. not updated by its Xmax) if the * HEAP_XMAX_LOCK_ONLY bit is set; or, for pg_upgrade's sake, if the Xmax is * not a multi and the EXCL_LOCK bit is set. * * See also HeapTupleHeaderIsOnlyLocked, which also checks for a possible * aborted updater transaction. * * Beware of multiple evaluations of the argument. */ #define HEAP_XMAX_IS_LOCKED_ONLY(infomask) \ (((infomask) & HEAP_XMAX_LOCK_ONLY) || \ (((infomask) & (HEAP_XMAX_IS_MULTI | HEAP_LOCK_MASK)) == HEAP_XMAX_EXCL_LOCK)) /* * A tuple that has HEAP_XMAX_IS_MULTI and HEAP_XMAX_LOCK_ONLY but neither of * HEAP_XMAX_EXCL_LOCK and HEAP_XMAX_KEYSHR_LOCK must come from a tuple that was * share-locked in 9.2 or earlier and then pg_upgrade'd. * * In 9.2 and prior, HEAP_XMAX_IS_MULTI was only set when there were multiple * FOR SHARE lockers of that tuple. That set HEAP_XMAX_LOCK_ONLY (with a * different name back then) but neither of HEAP_XMAX_EXCL_LOCK and * HEAP_XMAX_KEYSHR_LOCK. That combination is no longer possible in 9.3 and * up, so if we see that combination we know for certain that the tuple was * locked in an earlier release; since all such lockers are gone (they cannot * survive through pg_upgrade), such tuples can safely be considered not * locked. * * We must not resolve such multixacts locally, because the result would be * bogus, regardless of where they stand with respect to the current valid * multixact range. */ #define HEAP_LOCKED_UPGRADED(infomask) \ ( \ ((infomask) & HEAP_XMAX_IS_MULTI) != 0 && \ ((infomask) & HEAP_XMAX_LOCK_ONLY) != 0 && \ (((infomask) & (HEAP_XMAX_EXCL_LOCK | HEAP_XMAX_KEYSHR_LOCK)) == 0) \ ) /* * Use these to test whether a particular lock is applied to a tuple */ #define HEAP_XMAX_IS_SHR_LOCKED(infomask) \ (((infomask) & HEAP_LOCK_MASK) == HEAP_XMAX_SHR_LOCK) #define HEAP_XMAX_IS_EXCL_LOCKED(infomask) \ (((infomask) & HEAP_LOCK_MASK) == HEAP_XMAX_EXCL_LOCK) #define HEAP_XMAX_IS_KEYSHR_LOCKED(infomask) \ (((infomask) & HEAP_LOCK_MASK) == HEAP_XMAX_KEYSHR_LOCK) /* turn these all off when Xmax is to change */ #define HEAP_XMAX_BITS (HEAP_XMAX_COMMITTED | HEAP_XMAX_INVALID | \ HEAP_XMAX_IS_MULTI | HEAP_LOCK_MASK | HEAP_XMAX_LOCK_ONLY) /* * information stored in t_infomask2: */ #define HEAP_NATTS_MASK 0x07FF /* 11 bits for number of attributes */ /* bits 0x1800 are available */ #define HEAP_KEYS_UPDATED 0x2000 /* tuple was updated and key cols * modified, or tuple deleted */ #define HEAP_HOT_UPDATED 0x4000 /* tuple was HOT-updated */ #define HEAP_ONLY_TUPLE 0x8000 /* this is heap-only tuple */ #define HEAP2_XACT_MASK 0xE000 /* visibility-related bits */ /* * HEAP_TUPLE_HAS_MATCH is a temporary flag used during hash joins. It is * only used in tuples that are in the hash table, and those don't need * any visibility information, so we can overlay it on a visibility flag * instead of using up a dedicated bit. */ #define HEAP_TUPLE_HAS_MATCH HEAP_ONLY_TUPLE /* tuple has a join match */ /* * HeapTupleHeader accessor macros * * Note: beware of multiple evaluations of "tup" argument. But the Set * macros evaluate their other argument only once. */ /* * HeapTupleHeaderGetRawXmin returns the "raw" xmin field, which is the xid * originally used to insert the tuple. However, the tuple might actually * be frozen (via HeapTupleHeaderSetXminFrozen) in which case the tuple's xmin * is visible to every snapshot. Prior to PostgreSQL 9.4, we actually changed * the xmin to FrozenTransactionId, and that value may still be encountered * on disk. */ #define HeapTupleHeaderGetRawXmin(tup) \ ( \ (tup)->t_choice.t_heap.t_xmin \ ) #define HeapTupleHeaderGetXmin(tup) \ ( \ HeapTupleHeaderXminFrozen(tup) ? \ FrozenTransactionId : HeapTupleHeaderGetRawXmin(tup) \ ) #define HeapTupleHeaderSetXmin(tup, xid) \ ( \ (tup)->t_choice.t_heap.t_xmin = (xid) \ ) #define HeapTupleHeaderXminCommitted(tup) \ ( \ ((tup)->t_infomask & HEAP_XMIN_COMMITTED) != 0 \ ) #define HeapTupleHeaderXminInvalid(tup) \ ( \ ((tup)->t_infomask & (HEAP_XMIN_COMMITTED|HEAP_XMIN_INVALID)) == \ HEAP_XMIN_INVALID \ ) #define HeapTupleHeaderXminFrozen(tup) \ ( \ ((tup)->t_infomask & (HEAP_XMIN_FROZEN)) == HEAP_XMIN_FROZEN \ ) #define HeapTupleHeaderSetXminCommitted(tup) \ ( \ AssertMacro(!HeapTupleHeaderXminInvalid(tup)), \ ((tup)->t_infomask |= HEAP_XMIN_COMMITTED) \ ) #define HeapTupleHeaderSetXminInvalid(tup) \ ( \ AssertMacro(!HeapTupleHeaderXminCommitted(tup)), \ ((tup)->t_infomask |= HEAP_XMIN_INVALID) \ ) #define HeapTupleHeaderSetXminFrozen(tup) \ ( \ AssertMacro(!HeapTupleHeaderXminInvalid(tup)), \ ((tup)->t_infomask |= HEAP_XMIN_FROZEN) \ ) /* * HeapTupleHeaderGetRawXmax gets you the raw Xmax field. To find out the Xid * that updated a tuple, you might need to resolve the MultiXactId if certain * bits are set. HeapTupleHeaderGetUpdateXid checks those bits and takes care * to resolve the MultiXactId if necessary. This might involve multixact I/O, * so it should only be used if absolutely necessary. */ #define HeapTupleHeaderGetUpdateXid(tup) \ ( \ (!((tup)->t_infomask & HEAP_XMAX_INVALID) && \ ((tup)->t_infomask & HEAP_XMAX_IS_MULTI) && \ !((tup)->t_infomask & HEAP_XMAX_LOCK_ONLY)) ? \ HeapTupleGetUpdateXid(tup) \ : \ HeapTupleHeaderGetRawXmax(tup) \ ) #define HeapTupleHeaderGetRawXmax(tup) \ ( \ (tup)->t_choice.t_heap.t_xmax \ ) #define HeapTupleHeaderSetXmax(tup, xid) \ ( \ (tup)->t_choice.t_heap.t_xmax = (xid) \ ) /* * HeapTupleHeaderGetRawCommandId will give you what's in the header whether * it is useful or not. Most code should use HeapTupleHeaderGetCmin or * HeapTupleHeaderGetCmax instead, but note that those Assert that you can * get a legitimate result, ie you are in the originating transaction! */ #define HeapTupleHeaderGetRawCommandId(tup) \ ( \ (tup)->t_choice.t_heap.t_field3.t_cid \ ) /* SetCmin is reasonably simple since we never need a combo CID */ #define HeapTupleHeaderSetCmin(tup, cid) \ do { \ Assert(!((tup)->t_infomask & HEAP_MOVED)); \ (tup)->t_choice.t_heap.t_field3.t_cid = (cid); \ (tup)->t_infomask &= ~HEAP_COMBOCID; \ } while (0) /* SetCmax must be used after HeapTupleHeaderAdjustCmax; see combocid.c */ #define HeapTupleHeaderSetCmax(tup, cid, iscombo) \ do { \ Assert(!((tup)->t_infomask & HEAP_MOVED)); \ (tup)->t_choice.t_heap.t_field3.t_cid = (cid); \ if (iscombo) \ (tup)->t_infomask |= HEAP_COMBOCID; \ else \ (tup)->t_infomask &= ~HEAP_COMBOCID; \ } while (0) #define HeapTupleHeaderGetXvac(tup) \ ( \ ((tup)->t_infomask & HEAP_MOVED) ? \ (tup)->t_choice.t_heap.t_field3.t_xvac \ : \ InvalidTransactionId \ ) #define HeapTupleHeaderSetXvac(tup, xid) \ do { \ Assert((tup)->t_infomask & HEAP_MOVED); \ (tup)->t_choice.t_heap.t_field3.t_xvac = (xid); \ } while (0) #define HeapTupleHeaderIsSpeculative(tup) \ ( \ (ItemPointerGetOffsetNumberNoCheck(&(tup)->t_ctid) == SpecTokenOffsetNumber) \ ) #define HeapTupleHeaderGetSpeculativeToken(tup) \ ( \ AssertMacro(HeapTupleHeaderIsSpeculative(tup)), \ ItemPointerGetBlockNumber(&(tup)->t_ctid) \ ) #define HeapTupleHeaderSetSpeculativeToken(tup, token) \ ( \ ItemPointerSet(&(tup)->t_ctid, token, SpecTokenOffsetNumber) \ ) #define HeapTupleHeaderIndicatesMovedPartitions(tup) \ 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, Datum *values, bool *isnull); extern void heap_fill_tuple(TupleDesc tupleDesc, Datum *values, bool *isnull, char *data, Size data_size, uint16 *infomask, bits8 *bit); extern bool heap_attisnull(HeapTuple tup, int attnum, TupleDesc tupleDesc); extern Datum nocachegetattr(HeapTuple tup, int attnum, TupleDesc att); extern Datum heap_getsysattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull); extern Datum getmissingattr(TupleDesc tupleDesc, int attnum, bool *isnull); extern HeapTuple heap_copytuple(HeapTuple tuple); extern void heap_copytuple_with_tuple(HeapTuple src, HeapTuple dest); extern Datum heap_copy_tuple_as_datum(HeapTuple tuple, TupleDesc tupleDesc); extern HeapTuple heap_form_tuple(TupleDesc tupleDescriptor, Datum *values, bool *isnull); extern HeapTuple heap_modify_tuple(HeapTuple tuple, TupleDesc tupleDesc, Datum *replValues, bool *replIsnull, bool *doReplace); extern HeapTuple heap_modify_tuple_by_cols(HeapTuple tuple, TupleDesc tupleDesc, int nCols, int *replCols, Datum *replValues, bool *replIsnull); extern void heap_deform_tuple(HeapTuple tuple, TupleDesc tupleDesc, Datum *values, bool *isnull); extern void heap_freetuple(HeapTuple htup); extern MinimalTuple heap_form_minimal_tuple(TupleDesc tupleDescriptor, Datum *values, bool *isnull); extern void heap_free_minimal_tuple(MinimalTuple mtup); extern MinimalTuple heap_copy_minimal_tuple(MinimalTuple mtup); extern HeapTuple heap_tuple_from_minimal_tuple(MinimalTuple mtup); extern MinimalTuple minimal_tuple_from_heap_tuple(HeapTuple htup); extern size_t varsize_any(void *p); extern HeapTuple heap_expand_tuple(HeapTuple sourceTuple, TupleDesc tupleDesc); extern MinimalTuple minimal_expand_tuple(HeapTuple sourceTuple, TupleDesc tupleDesc); #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 */ pg_query-4.2.3/ext/pg_query/include/access/attnum.h0000644000004100000410000000301314510636647022414 0ustar www-datawww-data/*------------------------------------------------------------------------- * * attnum.h * POSTGRES attribute number definitions. * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/access/xact.h0000644000004100000410000004272414510636647022057 0ustar www-datawww-data/*------------------------------------------------------------------------- * * xact.h * postgres transaction system definitions * * * Portions Copyright (c) 1996-2022, 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/relfilenode.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) /* * 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_RELFILENODES (1U << 2) #define XACT_XINFO_HAS_INVALS (1U << 3) #define XACT_XINFO_HAS_TWOPHASE (1U << 4) #define XACT_XINFO_HAS_ORIGIN (1U << 5) #define XACT_XINFO_HAS_AE_LOCKS (1U << 6) #define XACT_XINFO_HAS_GID (1U << 7) #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_relfilenodes { int nrels; /* number of relations */ RelFileNode xnodes[FLEXIBLE_ARRAY_MEMBER]; } xl_xact_relfilenodes; #define MinSizeOfXactRelfilenodes offsetof(xl_xact_relfilenodes, xnodes) /* * 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_relfilenodes follows if XINFO_HAS_RELFILENODES */ /* 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_relfilenodes follows if XINFO_HAS_RELFILENODES */ /* 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; RelFileNode *xnodes; 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 */ RelFileNode *abortnodes; /* 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; RelFileNode *xnodes; 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, RelFileNode *rels, int nstats, xl_xact_stats_item *stats, 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, RelFileNode *rels, int nstats, xl_xact_stats_item *stats, 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 */ pg_query-4.2.3/ext/pg_query/include/access/gin.h0000644000004100000410000000423314510636647021666 0ustar www-datawww-data/*-------------------------------------------------------------------------- * gin.h * Public header file for Generalized Inverted Index access method. * * Copyright (c) 2006-2022, PostgreSQL Global Development Group * * src/include/access/gin.h *-------------------------------------------------------------------------- */ #ifndef GIN_H #define GIN_H #include "access/xlogreader.h" #include "lib/stringinfo.h" #include "storage/block.h" #include "utils/relcache.h" /* * amproc indexes for inverted indexes. */ #define GIN_COMPARE_PROC 1 #define GIN_EXTRACTVALUE_PROC 2 #define GIN_EXTRACTQUERY_PROC 3 #define GIN_CONSISTENT_PROC 4 #define GIN_COMPARE_PARTIAL_PROC 5 #define GIN_TRICONSISTENT_PROC 6 #define GIN_OPTIONS_PROC 7 #define GINNProcs 7 /* * searchMode settings for extractQueryFn. */ #define GIN_SEARCH_MODE_DEFAULT 0 #define GIN_SEARCH_MODE_INCLUDE_EMPTY 1 #define GIN_SEARCH_MODE_ALL 2 #define GIN_SEARCH_MODE_EVERYTHING 3 /* for internal use only */ /* * GinStatsData represents stats data for planner use */ typedef struct GinStatsData { BlockNumber nPendingPages; BlockNumber nTotalPages; BlockNumber nEntryPages; BlockNumber nDataPages; int64 nEntries; int32 ginVersion; } GinStatsData; /* * A ternary value used by tri-consistent functions. * * This must be of the same size as a bool because some code will cast a * pointer to a bool to a pointer to a GinTernaryValue. */ typedef char GinTernaryValue; #define GIN_FALSE 0 /* item is not present / does not match */ #define GIN_TRUE 1 /* item is present / matches */ #define GIN_MAYBE 2 /* don't know if item is present / don't know * if matches */ #define DatumGetGinTernaryValue(X) ((GinTernaryValue)(X)) #define GinTernaryValueGetDatum(X) ((Datum)(X)) #define PG_RETURN_GIN_TERNARY_VALUE(x) return GinTernaryValueGetDatum(x) /* GUC parameters */ extern PGDLLIMPORT int GinFuzzySearchLimit; extern 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 */ pg_query-4.2.3/ext/pg_query/include/access/tupconvert.h0000644000004100000410000000313014510636647023315 0ustar www-datawww-data/*------------------------------------------------------------------------- * * tupconvert.h * Tuple conversion support. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/tupconvert.h * *------------------------------------------------------------------------- */ #ifndef TUPCONVERT_H #define TUPCONVERT_H #include "access/attmap.h" #include "access/htup.h" #include "access/tupdesc.h" #include "executor/tuptable.h" #include "nodes/bitmapset.h" typedef struct TupleConversionMap { TupleDesc indesc; /* tupdesc for source rowtype */ TupleDesc outdesc; /* tupdesc for result rowtype */ AttrMap *attrMap; /* indexes of input fields, or 0 for null */ Datum *invalues; /* workspace for deconstructing source */ bool *inisnull; Datum *outvalues; /* workspace for constructing result */ bool *outisnull; } TupleConversionMap; extern TupleConversionMap *convert_tuples_by_position(TupleDesc indesc, TupleDesc outdesc, const char *msg); extern TupleConversionMap *convert_tuples_by_name(TupleDesc indesc, TupleDesc outdesc); extern HeapTuple execute_attr_map_tuple(HeapTuple tuple, TupleConversionMap *map); extern TupleTableSlot *execute_attr_map_slot(AttrMap *attrMap, TupleTableSlot *in_slot, TupleTableSlot *out_slot); extern Bitmapset *execute_attr_map_cols(AttrMap *attrMap, Bitmapset *inbitmap); extern void free_conversion_map(TupleConversionMap *map); #endif /* TUPCONVERT_H */ pg_query-4.2.3/ext/pg_query/include/access/attmap.h0000644000004100000410000000317014510636647022376 0ustar www-datawww-data/*------------------------------------------------------------------------- * * attmap.h * Definitions for PostgreSQL attribute mappings * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/attmap.h * *------------------------------------------------------------------------- */ #ifndef ATTMAP_H #define ATTMAP_H #include "access/attnum.h" #include "access/tupdesc.h" /* * Attribute mapping structure * * This maps attribute numbers between a pair of relations, designated * 'input' and 'output' (most typically inheritance parent and child * relations), whose common columns may have different attribute numbers. * Such difference may arise due to the columns being ordered differently * in the two relations or the two relations having dropped columns at * different positions. * * 'maplen' is set to the number of attributes of the 'output' relation, * taking into account any of its dropped attributes, with the corresponding * elements of the 'attnums' array set to 0. */ typedef struct AttrMap { AttrNumber *attnums; int maplen; } AttrMap; extern AttrMap *make_attrmap(int maplen); extern void free_attrmap(AttrMap *map); /* Conversion routines to build mappings */ extern AttrMap *build_attrmap_by_name(TupleDesc indesc, TupleDesc outdesc); extern AttrMap *build_attrmap_by_name_if_req(TupleDesc indesc, TupleDesc outdesc); extern AttrMap *build_attrmap_by_position(TupleDesc indesc, TupleDesc outdesc, const char *msg); #endif /* ATTMAP_H */ pg_query-4.2.3/ext/pg_query/include/access/stratnum.h0000644000004100000410000000600314510636647022763 0ustar www-datawww-data/*------------------------------------------------------------------------- * * stratnum.h * POSTGRES strategy number definitions. * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/access/parallel.h0000644000004100000410000000512114510636647022702 0ustar www-datawww-data/*------------------------------------------------------------------------- * * parallel.h * Infrastructure for launching parallel workers * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/parallel.h * *------------------------------------------------------------------------- */ #ifndef PARALLEL_H #define PARALLEL_H #include "access/xlogdefs.h" #include "lib/ilist.h" #include "postmaster/bgworker.h" #include "storage/shm_mq.h" #include "storage/shm_toc.h" typedef void (*parallel_worker_main_type) (dsm_segment *seg, shm_toc *toc); typedef struct ParallelWorkerInfo { BackgroundWorkerHandle *bgwhandle; shm_mq_handle *error_mqh; int32 pid; } ParallelWorkerInfo; typedef struct ParallelContext { dlist_node node; SubTransactionId subid; int nworkers; /* Maximum number of workers to launch */ int nworkers_to_launch; /* Actual number of workers to launch */ int nworkers_launched; char *library_name; char *function_name; ErrorContextCallback *error_context_stack; shm_toc_estimator estimator; dsm_segment *seg; void *private_memory; shm_toc *toc; ParallelWorkerInfo *worker; int nknown_attached_workers; bool *known_attached_workers; } ParallelContext; typedef struct ParallelWorkerContext { dsm_segment *seg; shm_toc *toc; } ParallelWorkerContext; extern PGDLLIMPORT volatile bool ParallelMessagePending; extern PGDLLIMPORT int ParallelWorkerNumber; extern PGDLLIMPORT bool InitializingParallelWorker; #define IsParallelWorker() (ParallelWorkerNumber >= 0) extern ParallelContext *CreateParallelContext(const char *library_name, const char *function_name, int nworkers); extern void InitializeParallelDSM(ParallelContext *pcxt); extern void ReinitializeParallelDSM(ParallelContext *pcxt); extern void ReinitializeParallelWorkers(ParallelContext *pcxt, int nworkers_to_launch); extern void LaunchParallelWorkers(ParallelContext *pcxt); extern void WaitForParallelWorkersToAttach(ParallelContext *pcxt); extern void WaitForParallelWorkersToFinish(ParallelContext *pcxt); extern void DestroyParallelContext(ParallelContext *pcxt); extern bool ParallelContextActive(void); extern void HandleParallelMessageInterrupt(void); extern void HandleParallelMessages(void); extern void AtEOXact_Parallel(bool isCommit); extern void AtEOSubXact_Parallel(bool isCommit, SubTransactionId mySubId); extern void ParallelWorkerReportLastRecEnd(XLogRecPtr last_xlog_end); extern void ParallelWorkerMain(Datum main_arg); #endif /* PARALLEL_H */ pg_query-4.2.3/ext/pg_query/include/access/toast_compression.h0000644000004100000410000000526214510636647024667 0ustar www-datawww-data/*------------------------------------------------------------------------- * * toast_compression.h * Functions for toast compression. * * Copyright (c) 2021-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/access/printtup.h0000644000004100000410000000207014510636647022773 0ustar www-datawww-data/*------------------------------------------------------------------------- * * printtup.h * * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/access/xlogreader.h0000644000004100000410000003611114510636647023245 0ustar www-datawww-data/*------------------------------------------------------------------------- * * xlogreader.h * Definitions for the generic XLog reading facility * * Portions Copyright (c) 2013-2022, 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 */ RelFileNode rnode; 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); extern XLogReaderRoutine *LocalXLogReaderRoutine(void); /* 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 **errmsg); /* * 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) #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, RelFileNode *rnode, ForkNumber *forknum, BlockNumber *blknum); extern bool XLogRecGetBlockTagExtended(XLogReaderState *record, uint8 block_id, RelFileNode *rnode, ForkNumber *forknum, BlockNumber *blknum, Buffer *prefetch_buffer); #endif /* XLOGREADER_H */ pg_query-4.2.3/ext/pg_query/include/access/xlogrecovery.h0000644000004100000410000001232214510636647023637 0ustar www-datawww-data/* * xlogrecovery.h * * Functions for WAL recovery and standby mode * * Portions Copyright (c) 1996-2022, 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 char *PromoteTriggerFile; 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 *wasShutdownPtr, bool *haveBackupLabel, bool *haveTblspcMap); 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 */ pg_query-4.2.3/ext/pg_query/include/access/table.h0000644000004100000410000000164414510636647022203 0ustar www-datawww-data/*------------------------------------------------------------------------- * * table.h * Generic routines for table related code. * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/access/skey.h0000644000004100000410000001445414510636647022072 0ustar www-datawww-data/*------------------------------------------------------------------------- * * skey.h * POSTGRES scan key definitions. * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/access/relscan.h0000644000004100000410000001525514510636647022546 0ustar www-datawww-data/*------------------------------------------------------------------------- * * relscan.h * POSTGRES relation scan descriptor definitions. * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/access/tupdesc.h0000644000004100000410000001227014510636647022560 0ustar www-datawww-data/*------------------------------------------------------------------------- * * tupdesc.h * POSTGRES tuple descriptor definitions. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/tupdesc.h * *------------------------------------------------------------------------- */ #ifndef TUPDESC_H #define TUPDESC_H #include "access/attnum.h" #include "catalog/pg_attribute.h" #include "nodes/pg_list.h" typedef struct AttrDefault { AttrNumber adnum; char *adbin; /* nodeToString representation of expr */ } AttrDefault; typedef struct ConstrCheck { char *ccname; char *ccbin; /* nodeToString representation of expr */ bool ccvalid; bool ccnoinherit; /* this is a non-inheritable constraint */ } ConstrCheck; /* This structure contains constraints of a tuple */ typedef struct TupleConstr { AttrDefault *defval; /* array */ ConstrCheck *check; /* array */ struct AttrMissing *missing; /* missing attributes values, NULL if none */ uint16 num_defval; uint16 num_check; bool has_not_null; bool has_generated_stored; } TupleConstr; /* * This struct is passed around within the backend to describe the structure * of tuples. For tuples coming from on-disk relations, the information is * collected from the pg_attribute, pg_attrdef, and pg_constraint catalogs. * Transient row types (such as the result of a join query) have anonymous * TupleDesc structs that generally omit any constraint info; therefore the * structure is designed to let the constraints be omitted efficiently. * * Note that only user attributes, not system attributes, are mentioned in * TupleDesc. * * If the tupdesc is known to correspond to a named rowtype (such as a table's * rowtype) then tdtypeid identifies that type and tdtypmod is -1. Otherwise * tdtypeid is RECORDOID, and tdtypmod can be either -1 for a fully anonymous * row type, or a value >= 0 to allow the rowtype to be looked up in the * typcache.c type cache. * * Note that tdtypeid is never the OID of a domain over composite, even if * we are dealing with values that are known (at some higher level) to be of * a domain-over-composite type. This is because tdtypeid/tdtypmod need to * match up with the type labeling of composite Datums, and those are never * explicitly marked as being of a domain type, either. * * Tuple descriptors that live in caches (relcache or typcache, at present) * are reference-counted: they can be deleted when their reference count goes * to zero. Tuple descriptors created by the executor need no reference * counting, however: they are simply created in the appropriate memory * context and go away when the context is freed. We set the tdrefcount * field of such a descriptor to -1, while reference-counted descriptors * always have tdrefcount >= 0. */ typedef struct TupleDescData { int natts; /* number of attributes in the tuple */ Oid tdtypeid; /* composite type ID for tuple type */ int32 tdtypmod; /* typmod for tuple type */ int tdrefcount; /* reference count, or -1 if not counting */ TupleConstr *constr; /* constraints, or NULL if none */ /* attrs[N] is the description of Attribute Number N+1 */ FormData_pg_attribute attrs[FLEXIBLE_ARRAY_MEMBER]; } TupleDescData; typedef struct TupleDescData *TupleDesc; /* Accessor for the i'th attribute of tupdesc. */ #define TupleDescAttr(tupdesc, i) (&(tupdesc)->attrs[(i)]) extern TupleDesc CreateTemplateTupleDesc(int natts); extern TupleDesc CreateTupleDesc(int natts, Form_pg_attribute *attrs); extern TupleDesc CreateTupleDescCopy(TupleDesc tupdesc); extern TupleDesc CreateTupleDescCopyConstr(TupleDesc tupdesc); #define TupleDescSize(src) \ (offsetof(struct TupleDescData, attrs) + \ (src)->natts * sizeof(FormData_pg_attribute)) extern void TupleDescCopy(TupleDesc dst, TupleDesc src); extern void TupleDescCopyEntry(TupleDesc dst, AttrNumber dstAttno, TupleDesc src, AttrNumber srcAttno); extern void FreeTupleDesc(TupleDesc tupdesc); extern void IncrTupleDescRefCount(TupleDesc tupdesc); extern void DecrTupleDescRefCount(TupleDesc tupdesc); #define PinTupleDesc(tupdesc) \ do { \ if ((tupdesc)->tdrefcount >= 0) \ IncrTupleDescRefCount(tupdesc); \ } while (0) #define ReleaseTupleDesc(tupdesc) \ do { \ if ((tupdesc)->tdrefcount >= 0) \ DecrTupleDescRefCount(tupdesc); \ } while (0) extern bool equalTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2); extern uint32 hashTupleDesc(TupleDesc tupdesc); extern void TupleDescInitEntry(TupleDesc desc, AttrNumber attributeNumber, const char *attributeName, Oid oidtypeid, int32 typmod, int attdim); extern void TupleDescInitBuiltinEntry(TupleDesc desc, AttrNumber attributeNumber, const char *attributeName, Oid oidtypeid, int32 typmod, int attdim); extern void TupleDescInitEntryCollation(TupleDesc desc, AttrNumber attributeNumber, Oid collationid); extern TupleDesc BuildDescForRelation(List *schema); extern TupleDesc BuildDescFromLists(List *names, List *types, List *typmods, List *collations); #endif /* TUPDESC_H */ pg_query-4.2.3/ext/pg_query/include/access/sdir.h0000644000004100000410000000267614510636647022063 0ustar www-datawww-data/*------------------------------------------------------------------------- * * sdir.h * POSTGRES scan direction definitions. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/sdir.h * *------------------------------------------------------------------------- */ #ifndef SDIR_H #define SDIR_H /* * ScanDirection was an int8 for no apparent reason. I kept the original * values because I'm not sure if I'll break anything otherwise. -ay 2/95 */ typedef enum ScanDirection { BackwardScanDirection = -1, NoMovementScanDirection = 0, ForwardScanDirection = 1 } ScanDirection; /* * ScanDirectionIsValid * True iff scan direction is valid. */ #define ScanDirectionIsValid(direction) \ ((bool) (BackwardScanDirection <= (direction) && \ (direction) <= ForwardScanDirection)) /* * ScanDirectionIsBackward * True iff scan direction is backward. */ #define ScanDirectionIsBackward(direction) \ ((bool) ((direction) == BackwardScanDirection)) /* * ScanDirectionIsNoMovement * True iff scan direction indicates no movement. */ #define ScanDirectionIsNoMovement(direction) \ ((bool) ((direction) == NoMovementScanDirection)) /* * ScanDirectionIsForward * True iff scan direction is forward. */ #define ScanDirectionIsForward(direction) \ ((bool) ((direction) == ForwardScanDirection)) #endif /* SDIR_H */ pg_query-4.2.3/ext/pg_query/include/access/tableam.h0000644000004100000410000022511014510636647022515 0ustar www-datawww-data/*------------------------------------------------------------------------- * * tableam.h * POSTGRES table access method definitions. * * * Portions Copyright (c) 1996-2022, 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 "utils/guc.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 } ScanOptions; /* * Result codes for table_{update,delete,lock_tuple}, and for visibility * routines inside table AMs. */ typedef enum TM_Result { /* * Signals that the action succeeded (i.e. update/delete performed, lock * was acquired) */ TM_Ok, /* The affected tuple wasn't visible to the relevant snapshot */ TM_Invisible, /* The affected tuple was already modified by the calling backend */ TM_SelfModified, /* * The affected tuple was updated by another transaction. This includes * the case where tuple was moved to another partition. */ TM_Updated, /* The affected tuple was deleted by another transaction */ TM_Deleted, /* * The affected tuple is currently being modified by another session. This * will only be returned if table_(update/delete/lock_tuple) are * instructed not to wait. */ TM_BeingModified, /* lock couldn't be acquired, action skipped. Only used by lock_tuple */ TM_WouldBlock } TM_Result; /* * When table_tuple_update, table_tuple_delete, or table_tuple_lock fail * because the target tuple is already outdated, they fill in this struct to * provide information to the caller about what happened. * * ctid is the target's ctid link: it is the same as the target's TID if the * target was deleted, or the location of the replacement tuple if the target * was updated. * * xmax is the outdating transaction's XID. If the caller wants to visit the * replacement tuple, it must check that this matches before believing the * replacement is really a match. * * cmax is the outdating command's CID, but only when the failure code is * TM_SelfModified (i.e., something in the current transaction outdated the * tuple); otherwise cmax is zero. (We make this restriction because * HeapTupleHeaderGetCmax doesn't work for tuples outdated in other * transactions.) */ typedef struct TM_FailureData { ItemPointerData ctid; TransactionId xmax; CommandId cmax; bool traversed; } TM_FailureData; /* * 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 can_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, bool *update_indexes); /* see table_tuple_lock() for reference about parameters */ TM_Result (*tuple_lock) (Relation rel, ItemPointer tid, Snapshot snapshot, TupleTableSlot *slot, CommandId cid, LockTupleMode mode, LockWaitPolicy wait_policy, uint8 flags, TM_FailureData *tmfd); /* * Perform operations necessary to complete insertions made via * tuple_insert and multi_insert with a BulkInsertState specified. In-tree * access methods ceased to use this. * * Typically callers of tuple_insert and multi_insert will just pass all * the flags that apply to them, and each AM has to decide which of them * make sense for it, and then only take actions in finish_bulk_insert for * those flags, and ignore others. * * Optional callback. */ void (*finish_bulk_insert) (Relation rel, int options); /* ------------------------------------------------------------------------ * DDL related functionality. * ------------------------------------------------------------------------ */ /* * This callback needs to create a new relation filenode for `rel`, with * appropriate durability behaviour for `persistence`. * * Note that only the subset of the relcache filled by * RelationBuildLocalRelation() can be relied upon and that the relation's * catalog entries will either not yet exist (new relation), or will still * reference the old relfilenode. * * As output *freezeXid, *minmulti must be set to the values appropriate * for pg_class.{relfrozenxid, relminmxid}. For AMs that don't need those * fields to be filled they can be set to InvalidTransactionId and * InvalidMultiXactId, respectively. * * See also table_relation_set_new_filenode(). */ void (*relation_set_new_filenode) (Relation rel, const RelFileNode *newrnode, char persistence, TransactionId *freezeXid, MultiXactId *minmulti); /* * This callback needs to remove all contents from `rel`'s current * relfilenode. No provisions for transactional behaviour need to be made. * Often this can be implemented by truncating the underlying storage to * its minimal size. * * See also table_relation_nontransactional_truncate(). */ void (*relation_nontransactional_truncate) (Relation rel); /* * See table_relation_copy_data(). * * This can typically be implemented by directly copying the underlying * storage, unless it contains references to the tablespace internally. */ void (*relation_copy_data) (Relation rel, const RelFileNode *newrnode); /* See table_relation_copy_for_cluster() */ void (*relation_copy_for_cluster) (Relation NewTable, Relation OldTable, Relation OldIndex, bool use_sort, TransactionId OldestXmin, TransactionId *xid_cutoff, MultiXactId *multi_cutoff, double *num_tuples, double *tups_vacuumed, double *tups_recently_dead); /* * React to VACUUM command on the relation. The VACUUM can be triggered by * a user or by autovacuum. The specific actions performed by the AM will * depend heavily on the individual AM. * * On entry a transaction is already established, and the relation is * locked with a ShareUpdateExclusive lock. * * Note that neither VACUUM FULL (and CLUSTER), nor ANALYZE go through * this routine, even if (for ANALYZE) it is part of the same VACUUM * command. * * There probably, in the future, needs to be a separate callback to * integrate with autovacuum's scheduling. */ void (*relation_vacuum) (Relation 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, BlockNumber blockno, BufferAccessStrategy bstrategy); /* * See table_scan_analyze_next_tuple(). * * Not every AM might have a meaningful concept of dead rows, in which * case it's OK to not increment *deadrows - but note that that may * influence autovacuum scheduling (see comment for relation_vacuum * callback). */ bool (*scan_analyze_next_tuple) (TableScanDesc scan, TransactionId OldestXmin, double *liverows, double *deadrows, TupleTableSlot *slot); /* see table_index_build_range_scan for reference about parameters */ double (*index_build_range_scan) (Relation table_rel, Relation index_rel, struct IndexInfo *index_info, bool allow_sync, bool anyvisible, bool progress, BlockNumber start_blockno, BlockNumber numblocks, IndexBuildCallback callback, void *callback_state, TableScanDesc scan); /* see table_index_validate_scan for reference about parameters */ void (*index_validate_scan) (Relation table_rel, Relation index_rel, struct IndexInfo *index_info, Snapshot snapshot, struct ValidateIndexState *state); /* ------------------------------------------------------------------------ * Miscellaneous functions. * ------------------------------------------------------------------------ */ /* * See table_relation_size(). * * Note that currently a few callers use the MAIN_FORKNUM size to figure * out the range of potentially interesting blocks (brin, analyze). It's * probable that we'll need to revise the interface for those at some * point. */ uint64 (*relation_size) (Relation rel, ForkNumber forkNumber); /* * This callback should return true if the relation requires a TOAST table * and false if it does not. It may wish to examine the relation's tuple * descriptor before making a decision, but if it uses some other method * of storing large values (or if it does not support them) it can simply * return false. */ bool (*relation_needs_toast_table) (Relation rel); /* * This callback should return the OID of the table AM that implements * TOAST tables for this AM. If the relation_needs_toast_table callback * always returns false, this callback is not required. */ Oid (*relation_toast_am) (Relation rel); /* * This callback is invoked when detoasting a value stored in a toast * table implemented by this AM. See table_relation_fetch_toast_slice() * for more details. */ void (*relation_fetch_toast_slice) (Relation toastrel, Oid valueid, int32 attrsize, int32 sliceoffset, int32 slicelength, struct varlena *result); /* ------------------------------------------------------------------------ * Planner related functions. * ------------------------------------------------------------------------ */ /* * See table_relation_estimate_size(). * * While block oriented, it shouldn't be too hard for an AM that doesn't * internally use blocks to convert into a usable representation. * * This differs from the relation_size callback by returning size * estimates (both relation size and tuple count) for planning purposes, * rather than returning a currently correct estimate. */ void (*relation_estimate_size) (Relation rel, int32 *attr_widths, BlockNumber *pages, double *tuples, double *allvisfrac); /* ------------------------------------------------------------------------ * Executor related functions. * ------------------------------------------------------------------------ */ /* * Prepare to fetch / check / return tuples from `tbmres->blockno` as part * of a bitmap table scan. `scan` was started via table_beginscan_bm(). * Return false if there are no tuples to be found on the page, true * otherwise. * * This will typically read and pin the target block, and do the necessary * work to allow scan_bitmap_next_tuple() to return tuples (e.g. it might * make sense to perform tuple visibility checks at this time). For some * AMs it will make more sense to do all the work referencing `tbmres` * contents here, for others it might be better to defer more work to * scan_bitmap_next_tuple. * * If `tbmres->blockno` is -1, this is a lossy scan and all visible tuples * on the page have to be returned, otherwise the tuples at offsets in * `tbmres->offsets` need to be returned. * * XXX: Currently this may only be implemented if the AM uses md.c as its * storage manager, and uses ItemPointer->ip_blkid in a manner that maps * blockids directly to the underlying storage. nodeBitmapHeapscan.c * performs prefetching directly using that interface. This probably * needs to be rectified at a later point. * * XXX: Currently this may only be implemented if the AM uses the * visibilitymap, as nodeBitmapHeapscan.c unconditionally accesses it to * perform prefetching. This probably needs to be rectified at a later * point. * * Optional callback, but either both scan_bitmap_next_block and * scan_bitmap_next_tuple need to exist, or neither. */ bool (*scan_bitmap_next_block) (TableScanDesc scan, struct TBMIterateResult *tbmres); /* * Fetch the next tuple of a bitmap table scan into `slot` and return true * if a visible tuple was found, false otherwise. * * For some AMs it will make more sense to do all the work referencing * `tbmres` contents in scan_bitmap_next_block, for others it might be * better to defer more work to this callback. * * Optional callback, but either both scan_bitmap_next_block and * scan_bitmap_next_tuple need to exist, or neither. */ bool (*scan_bitmap_next_tuple) (TableScanDesc scan, struct TBMIterateResult *tbmres, TupleTableSlot *slot); /* * Prepare to fetch tuples from the next block in a sample scan. Return * false if the sample scan is finished, true otherwise. `scan` was * started via table_beginscan_sampling(). * * Typically this will first determine the target block by calling the * TsmRoutine's NextSampleBlock() callback if not NULL, or alternatively * perform a sequential scan over all blocks. The determined block is * then typically read and pinned. * * As the TsmRoutine interface is block based, a block needs to be passed * to NextSampleBlock(). If that's not appropriate for an AM, it * internally needs to perform mapping between the internal and a block * based representation. * * Note that it's not acceptable to hold deadlock prone resources such as * lwlocks until scan_sample_next_tuple() has exhausted the tuples on the * block - the tuple is likely to be returned to an upper query node, and * the next call could be off a long while. Holding buffer pins and such * is obviously OK. * * Currently it is required to implement this interface, as there's no * alternative way (contrary e.g. to bitmap scans) to implement sample * scans. If infeasible to implement, the AM may raise an error. */ bool (*scan_sample_next_block) (TableScanDesc scan, struct SampleScanState *scanstate); /* * This callback, only called after scan_sample_next_block has returned * true, should determine the next tuple to be returned from the selected * block using the TsmRoutine's NextSampleTuple() callback. * * The callback needs to perform visibility checks, and only return * visible tuples. That obviously can mean calling NextSampleTuple() * multiple times. * * The TsmRoutine interface assumes that there's a maximum offset on a * given page, so if that doesn't apply to an AM, it needs to emulate that * assumption somehow. */ bool (*scan_sample_next_tuple) (TableScanDesc scan, struct SampleScanState *scanstate, TupleTableSlot *slot); } TableAmRoutine; /* ---------------------------------------------------------------------------- * Slot functions. * ---------------------------------------------------------------------------- */ /* * Returns slot callbacks suitable for holding tuples of the appropriate type * for the relation. Works for tables, views, foreign tables and partitioned * tables. */ extern const TupleTableSlotOps *table_slot_callbacks(Relation rel); /* * Returns slot using the callbacks returned by table_slot_callbacks(), and * registers it on *reglist. */ extern TupleTableSlot *table_slot_create(Relation rel, List **reglist); /* ---------------------------------------------------------------------------- * Table scan functions. * ---------------------------------------------------------------------------- */ /* * Start a scan of `rel`. Returned tuples pass a visibility test of * `snapshot`, and if nkeys != 0, the results are filtered by those scan keys. */ static inline TableScanDesc table_beginscan(Relation rel, Snapshot snapshot, int nkeys, struct ScanKeyData *key) { uint32 flags = SO_TYPE_SEQSCAN | SO_ALLOW_STRAT | SO_ALLOW_SYNC | SO_ALLOW_PAGEMODE; return rel->rd_tableam->scan_begin(rel, snapshot, nkeys, key, NULL, flags); } /* * Like table_beginscan(), but for scanning catalog. It'll automatically use a * snapshot appropriate for scanning catalog relations. */ extern TableScanDesc table_beginscan_catalog(Relation rel, int nkeys, struct ScanKeyData *key); /* * Like table_beginscan(), but table_beginscan_strat() offers an extended API * that lets the caller control whether a nondefault buffer access strategy * can be used, and whether syncscan can be chosen (possibly resulting in the * scan not starting from block zero). Both of these default to true with * plain table_beginscan. */ static inline TableScanDesc table_beginscan_strat(Relation rel, Snapshot snapshot, int nkeys, struct ScanKeyData *key, bool allow_strat, bool allow_sync) { uint32 flags = SO_TYPE_SEQSCAN | SO_ALLOW_PAGEMODE; if (allow_strat) flags |= SO_ALLOW_STRAT; if (allow_sync) flags |= SO_ALLOW_SYNC; return rel->rd_tableam->scan_begin(rel, snapshot, nkeys, key, NULL, flags); } /* * table_beginscan_bm is an alternative entry point for setting up a * TableScanDesc for a bitmap heap scan. Although that scan technology is * really quite unlike a standard seqscan, there is just enough commonality to * make it worth using the same data structure. */ static inline TableScanDesc table_beginscan_bm(Relation rel, Snapshot snapshot, int nkeys, struct ScanKeyData *key) { uint32 flags = SO_TYPE_BITMAPSCAN | SO_ALLOW_PAGEMODE; return rel->rd_tableam->scan_begin(rel, snapshot, nkeys, key, NULL, flags); } /* * table_beginscan_sampling is an alternative entry point for setting up a * TableScanDesc for a TABLESAMPLE scan. As with bitmap scans, it's worth * using the same data structure although the behavior is rather different. * In addition to the options offered by table_beginscan_strat, this call * also allows control of whether page-mode visibility checking is used. */ static inline TableScanDesc table_beginscan_sampling(Relation rel, Snapshot snapshot, int nkeys, struct ScanKeyData *key, bool allow_strat, bool allow_sync, bool allow_pagemode) { uint32 flags = SO_TYPE_SAMPLESCAN; if (allow_strat) flags |= SO_ALLOW_STRAT; if (allow_sync) flags |= SO_ALLOW_SYNC; if (allow_pagemode) flags |= SO_ALLOW_PAGEMODE; return rel->rd_tableam->scan_begin(rel, snapshot, nkeys, key, NULL, flags); } /* * table_beginscan_tid is an alternative entry point for setting up a * TableScanDesc for a Tid scan. As with bitmap scans, it's worth using * the same data structure although the behavior is rather different. */ static inline TableScanDesc table_beginscan_tid(Relation rel, Snapshot snapshot) { uint32 flags = SO_TYPE_TIDSCAN; return rel->rd_tableam->scan_begin(rel, snapshot, 0, NULL, NULL, flags); } /* * table_beginscan_analyze is an alternative entry point for setting up a * TableScanDesc for an ANALYZE scan. As with bitmap scans, it's worth using * the same data structure although the behavior is rather different. */ static inline TableScanDesc table_beginscan_analyze(Relation rel) { uint32 flags = SO_TYPE_ANALYZE; return rel->rd_tableam->scan_begin(rel, NULL, 0, NULL, NULL, flags); } /* * End relation scan. */ static inline void table_endscan(TableScanDesc scan) { scan->rs_rd->rd_tableam->scan_end(scan); } /* * Restart a relation scan. */ static inline void table_rescan(TableScanDesc scan, struct ScanKeyData *key) { scan->rs_rd->rd_tableam->scan_rescan(scan, key, false, false, false, false); } /* * Restart a relation scan after changing params. * * This call allows changing the buffer strategy, syncscan, and pagemode * options before starting a fresh scan. Note that although the actual use of * syncscan might change (effectively, enabling or disabling reporting), the * previously selected startblock will be kept. */ static inline void table_rescan_set_params(TableScanDesc scan, struct ScanKeyData *key, bool allow_strat, bool allow_sync, bool allow_pagemode) { scan->rs_rd->rd_tableam->scan_rescan(scan, key, true, allow_strat, allow_sync, allow_pagemode); } /* * Update snapshot used by the scan. */ extern void table_scan_update_snapshot(TableScanDesc scan, Snapshot snapshot); /* * Return next tuple from `scan`, store in slot. */ static inline bool table_scan_getnextslot(TableScanDesc sscan, ScanDirection direction, TupleTableSlot *slot) { slot->tts_tableOid = RelationGetRelid(sscan->rs_rd); /* * 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); 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 rel, ParallelTableScanDesc pscan); /* * Restart a parallel scan. Call this in the leader process. Caller is * responsible for making sure that all workers have finished the scan * beforehand. */ static inline void table_parallelscan_reinitialize(Relation rel, ParallelTableScanDesc pscan) { rel->rd_tableam->parallelscan_reinitialize(rel, pscan); } /* ---------------------------------------------------------------------------- * Index scan related functions. * ---------------------------------------------------------------------------- */ /* * Prepare to fetch tuples from the relation, as needed when fetching tuples * for an index scan. * * Tuples for an index scan can then be fetched via table_index_fetch_tuple(). */ static inline IndexFetchTableData * table_index_fetch_begin(Relation rel) { return rel->rd_tableam->index_fetch_begin(rel); } /* * Reset index fetch. Typically this will release cross index fetch resources * held in IndexFetchTableData. */ static inline void table_index_fetch_reset(struct IndexFetchTableData *scan) { scan->rel->rd_tableam->index_fetch_reset(scan); } /* * Release resources and deallocate index fetch. */ static inline void table_index_fetch_end(struct IndexFetchTableData *scan) { scan->rel->rd_tableam->index_fetch_end(scan); } /* * Fetches, as part of an index scan, tuple at `tid` into `slot`, after doing * a visibility test according to `snapshot`. If a tuple was found and passed * the visibility test, returns true, false otherwise. Note that *tid may be * modified when we return true (see later remarks on multiple row versions * reachable via a single index entry). * * *call_again needs to be false on the first call to table_index_fetch_tuple() for * a tid. If there potentially is another tuple matching the tid, *call_again * will be set to true, signaling that table_index_fetch_tuple() should be called * again for the same tid. * * *all_dead, if all_dead is not NULL, will be set to true by * table_index_fetch_tuple() iff it is guaranteed that no backend needs to see * that tuple. Index AMs can use that to avoid returning that tid in future * searches. * * The difference between this function and table_tuple_fetch_row_version() * is that this function returns the currently visible version of a row if * the AM supports storing multiple row versions reachable via a single index * entry (like heap's HOT). Whereas table_tuple_fetch_row_version() only * evaluates the tuple exactly at `tid`. Outside of index entry ->table tuple * lookups, table_tuple_fetch_row_version() is what's usually needed. */ static inline bool table_index_fetch_tuple(struct IndexFetchTableData *scan, ItemPointer tid, Snapshot snapshot, TupleTableSlot *slot, bool *call_again, bool *all_dead) { /* * 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 latestRemovedXid transaction ID that caller generally 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 * relfilenodes created during the current subtransaction and when * there are no prior snapshots or pre-existing portals open. * This causes rows to be frozen, which is an MVCC violation and * requires explicit options chosen by user. * * TABLE_INSERT_NO_LOGICAL force-disables the emitting of logical decoding * information for the tuple. This should solely be used during table rewrites * where RelationIsLogicallyLogged(relation) is not yet accurate for the new * relation. * * Note that most of these options will be applied when inserting into the * heap's TOAST table, too, if the tuple requires any out-of-line data. * * The BulkInsertState object (if any; bistate can be NULL for default * behavior) is also just passed through to RelationGetBufferForTuple. If * `bistate` is provided, table_finish_bulk_insert() needs to be called. * * On return the slot's tts_tid and tts_tableOid are updated to reflect the * insertion. But note that any toasting of fields within the slot is NOT * reflected in the slots contents. */ static inline void table_tuple_insert(Relation rel, TupleTableSlot *slot, CommandId cid, int options, struct BulkInsertStateData *bistate) { rel->rd_tableam->tuple_insert(rel, slot, cid, options, bistate); } /* * Perform a "speculative insertion". These can be backed out afterwards * without aborting the whole transaction. Other sessions can wait for the * speculative insertion to be confirmed, turning it into a regular tuple, or * aborted, as if it never existed. Speculatively inserted tuples behave as * "value locks" of short duration, used to implement INSERT .. ON CONFLICT. * * A transaction having performed a speculative insertion has to either abort, * or finish the speculative insertion with * table_tuple_complete_speculative(succeeded = ...). */ static inline void table_tuple_insert_speculative(Relation rel, TupleTableSlot *slot, CommandId cid, int options, struct BulkInsertStateData *bistate, uint32 specToken) { rel->rd_tableam->tuple_insert_speculative(rel, slot, cid, options, bistate, specToken); } /* * Complete "speculative insertion" started in the same transaction. If * succeeded is true, the tuple is fully inserted, if false, it's removed. */ static inline void table_tuple_complete_speculative(Relation rel, TupleTableSlot *slot, uint32 specToken, bool succeeded) { rel->rd_tableam->tuple_complete_speculative(rel, slot, specToken, succeeded); } /* * Insert multiple tuples into a table. * * This is like table_tuple_insert(), but inserts multiple tuples in one * operation. That's often faster than calling table_tuple_insert() in a loop, * because e.g. the AM can reduce WAL logging and page locking overhead. * * Except for taking `nslots` tuples as input, and an array of TupleTableSlots * in `slots`, the parameters for table_multi_insert() are the same as for * table_tuple_insert(). * * Note: this leaks memory into the current memory context. You can create a * temporary context before calling this, if that's a problem. */ static inline void table_multi_insert(Relation rel, TupleTableSlot **slots, int nslots, CommandId cid, int options, struct BulkInsertStateData *bistate) { rel->rd_tableam->multi_insert(rel, slots, nslots, cid, options, bistate); } /* * Delete a tuple. * * NB: do not call this directly unless prepared to deal with * concurrent-update conditions. Use simple_table_tuple_delete instead. * * Input parameters: * relation - table to be modified (caller must hold suitable lock) * tid - TID of tuple to be deleted * cid - delete command ID (used for visibility test, and stored into * cmax if successful) * crosscheck - if not InvalidSnapshot, also check tuple against this * wait - true if should wait for any conflicting update to commit/abort * Output parameters: * tmfd - filled in failure cases (see below) * changingPart - true iff the tuple is being moved to another partition * table due to an update of the partition key. Otherwise, false. * * Normal, successful return value is TM_Ok, which means we did actually * delete it. Failure return codes are TM_SelfModified, TM_Updated, and * TM_BeingModified (the last only possible if wait == false). * * In the failure cases, the routine fills *tmfd with the tuple's t_ctid, * t_xmax, and, if possible, and, if possible, t_cmax. See comments for * struct TM_FailureData for additional info. */ static inline TM_Result table_tuple_delete(Relation rel, ItemPointer tid, CommandId cid, Snapshot snapshot, Snapshot crosscheck, bool wait, TM_FailureData *tmfd, bool changingPart) { return rel->rd_tableam->tuple_delete(rel, tid, cid, snapshot, crosscheck, wait, tmfd, changingPart); } /* * Update a tuple. * * NB: do not call this directly unless you are prepared to deal with * concurrent-update conditions. Use simple_table_tuple_update instead. * * Input parameters: * relation - table to be modified (caller must hold suitable lock) * otid - TID of old tuple to be replaced * slot - newly constructed tuple data to store * cid - update command ID (used for visibility test, and stored into * cmax/cmin if successful) * crosscheck - if not InvalidSnapshot, also check old tuple against this * wait - true if should wait for any conflicting update to commit/abort * Output parameters: * tmfd - filled in failure cases (see below) * lockmode - filled with lock mode acquired on tuple * update_indexes - in success cases this is set to true if new index entries * are required for this tuple * * Normal, successful return value is TM_Ok, which means we did actually * update it. Failure return codes are TM_SelfModified, TM_Updated, and * TM_BeingModified (the last only possible if wait == false). * * On success, the slot's tts_tid and tts_tableOid are updated to match the new * stored tuple; in particular, slot->tts_tid is set to the TID where the * new tuple was inserted, and its HEAP_ONLY_TUPLE flag is set iff a HOT * update was done. However, any TOAST changes in the new tuple's * data are not reflected into *newtup. * * In the failure cases, the routine fills *tmfd with the tuple's t_ctid, * t_xmax, and, if possible, t_cmax. See comments for struct TM_FailureData * for additional info. */ static inline TM_Result table_tuple_update(Relation rel, ItemPointer otid, TupleTableSlot *slot, CommandId cid, Snapshot snapshot, Snapshot crosscheck, bool wait, TM_FailureData *tmfd, LockTupleMode *lockmode, bool *update_indexes) { return rel->rd_tableam->tuple_update(rel, otid, slot, cid, snapshot, crosscheck, wait, tmfd, lockmode, update_indexes); } /* * Lock a tuple in the specified mode. * * Input parameters: * relation: relation containing tuple (caller must hold suitable lock) * tid: TID of tuple to lock * snapshot: snapshot to use for visibility determinations * cid: current command ID (used for visibility test, and stored into * tuple's cmax if lock is successful) * mode: lock mode desired * wait_policy: what to do if tuple lock is not available * flags: * If TUPLE_LOCK_FLAG_LOCK_UPDATE_IN_PROGRESS, follow the update chain to * also lock descendant tuples if lock modes don't conflict. * If TUPLE_LOCK_FLAG_FIND_LAST_VERSION, follow the update chain and lock * latest version. * * Output parameters: * *slot: contains the target tuple * *tmfd: filled in failure cases (see below) * * Function result may be: * TM_Ok: lock was successfully acquired * TM_Invisible: lock failed because tuple was never visible to us * TM_SelfModified: lock failed because tuple updated by self * TM_Updated: lock failed because tuple updated by other xact * TM_Deleted: lock failed because tuple deleted by other xact * TM_WouldBlock: lock couldn't be acquired and wait_policy is skip * * In the failure cases other than TM_Invisible and TM_Deleted, the routine * fills *tmfd with the tuple's t_ctid, t_xmax, and, if possible, t_cmax. See * comments for struct TM_FailureData for additional info. */ static inline TM_Result table_tuple_lock(Relation rel, ItemPointer tid, Snapshot snapshot, TupleTableSlot *slot, CommandId cid, LockTupleMode mode, LockWaitPolicy wait_policy, uint8 flags, TM_FailureData *tmfd) { return rel->rd_tableam->tuple_lock(rel, tid, snapshot, slot, cid, mode, wait_policy, flags, tmfd); } /* * Perform operations necessary to complete insertions made via * tuple_insert and multi_insert with a BulkInsertState specified. */ static inline void table_finish_bulk_insert(Relation rel, int options) { /* optional callback */ if (rel->rd_tableam && rel->rd_tableam->finish_bulk_insert) rel->rd_tableam->finish_bulk_insert(rel, options); } /* ------------------------------------------------------------------------ * DDL related functionality. * ------------------------------------------------------------------------ */ /* * Create storage for `rel` in `newrnode`, with persistence set to * `persistence`. * * This is used both during relation creation and various DDL operations to * create a new relfilenode that can be filled from scratch. When creating * new storage for an existing relfilenode, this should be called before the * relcache entry has been updated. * * *freezeXid, *minmulti are set to the xid / multixact horizon for the table * that pg_class.{relfrozenxid, relminmxid} have to be set to. */ static inline void table_relation_set_new_filenode(Relation rel, const RelFileNode *newrnode, char persistence, TransactionId *freezeXid, MultiXactId *minmulti) { rel->rd_tableam->relation_set_new_filenode(rel, newrnode, persistence, freezeXid, minmulti); } /* * Remove all table contents from `rel`, in a non-transactional manner. * Non-transactional meaning that there's no need to support rollbacks. This * commonly only is used to perform truncations for relfilenodes created in the * current transaction. */ static inline void table_relation_nontransactional_truncate(Relation rel) { rel->rd_tableam->relation_nontransactional_truncate(rel); } /* * Copy data from `rel` into the new relfilenode `newrnode`. The new * relfilenode may not have storage associated before this function is * called. This is only supposed to be used for low level operations like * changing a relation's tablespace. */ static inline void table_relation_copy_data(Relation rel, const RelFileNode *newrnode) { rel->rd_tableam->relation_copy_data(rel, newrnode); } /* * Copy data from `OldTable` into `NewTable`, as part of a CLUSTER or VACUUM * FULL. * * Additional Input parameters: * - use_sort - if true, the table contents are sorted appropriate for * `OldIndex`; if false and OldIndex is not InvalidOid, the data is copied * in that index's order; if false and OldIndex is InvalidOid, no sorting is * performed * - OldIndex - see use_sort * - OldestXmin - computed by vacuum_set_xid_limits(), even when * not needed for the relation's AM * - *xid_cutoff - ditto * - *multi_cutoff - ditto * * Output parameters: * - *xid_cutoff - rel's new relfrozenxid value, may be invalid * - *multi_cutoff - rel's new relminmxid value, may be invalid * - *tups_vacuumed - stats, for logging, if appropriate for AM * - *tups_recently_dead - stats, for logging, if appropriate for AM */ static inline void table_relation_copy_for_cluster(Relation OldTable, Relation NewTable, Relation OldIndex, bool use_sort, TransactionId OldestXmin, TransactionId *xid_cutoff, MultiXactId *multi_cutoff, double *num_tuples, double *tups_vacuumed, double *tups_recently_dead) { OldTable->rd_tableam->relation_copy_for_cluster(OldTable, NewTable, OldIndex, use_sort, OldestXmin, xid_cutoff, multi_cutoff, num_tuples, tups_vacuumed, tups_recently_dead); } /* * Perform VACUUM on the relation. The VACUUM can be triggered by a user or by * autovacuum. The specific actions performed by the AM will depend heavily on * the individual AM. * * On entry a transaction needs to already been established, and the * table is locked with a ShareUpdateExclusive lock. * * Note that neither VACUUM FULL (and CLUSTER), nor ANALYZE go through this * routine, even if (for ANALYZE) it is part of the same VACUUM command. */ static inline void table_relation_vacuum(Relation rel, struct VacuumParams *params, BufferAccessStrategy bstrategy) { rel->rd_tableam->relation_vacuum(rel, params, bstrategy); } /* * Prepare to analyze block `blockno` of `scan`. The scan needs to have been * started with table_beginscan_analyze(). Note that this routine might * acquire resources like locks that are held until * table_scan_analyze_next_tuple() returns false. * * Returns false if block is unsuitable for sampling, true otherwise. */ static inline bool table_scan_analyze_next_block(TableScanDesc scan, BlockNumber blockno, BufferAccessStrategy bstrategy) { return scan->rs_rd->rd_tableam->scan_analyze_next_block(scan, blockno, bstrategy); } /* * Iterate over tuples in the block selected with * table_scan_analyze_next_block() (which needs to have returned true, and * this routine may not have returned false for the same block before). If a * tuple that's suitable for sampling is found, true is returned and a tuple * is stored in `slot`. * * *liverows and *deadrows are incremented according to the encountered * tuples. */ static inline bool table_scan_analyze_next_tuple(TableScanDesc scan, TransactionId OldestXmin, double *liverows, double *deadrows, TupleTableSlot *slot) { return scan->rs_rd->rd_tableam->scan_analyze_next_tuple(scan, OldestXmin, liverows, deadrows, slot); } /* * table_index_build_scan - scan the table to find tuples to be indexed * * This is called back from an access-method-specific index build procedure * after the AM has done whatever setup it needs. The parent table relation * is scanned to find tuples that should be entered into the index. Each * such tuple is passed to the AM's callback routine, which does the right * things to add it to the new index. After we return, the AM's index * build procedure does whatever cleanup it needs. * * The total count of live tuples is returned. This is for updating pg_class * statistics. (It's annoying not to be able to do that here, but we want to * merge that update with others; see index_update_stats.) Note that the * index AM itself must keep track of the number of index tuples; we don't do * so here because the AM might reject some of the tuples for its own reasons, * such as being unable to store NULLs. * * If 'progress', the PROGRESS_SCAN_BLOCKS_TOTAL counter is updated when * starting the scan, and PROGRESS_SCAN_BLOCKS_DONE is updated as we go along. * * A side effect is to set indexInfo->ii_BrokenHotChain to true if we detect * any potentially broken HOT chains. Currently, we set this if there are any * RECENTLY_DEAD or DELETE_IN_PROGRESS entries in a HOT chain, without trying * very hard to detect whether they're really incompatible with the chain tip. * This only really makes sense for heap AM, it might need to be generalized * for other AMs later. */ static inline double table_index_build_scan(Relation table_rel, Relation index_rel, struct IndexInfo *index_info, bool allow_sync, bool progress, IndexBuildCallback callback, void *callback_state, TableScanDesc scan) { return table_rel->rd_tableam->index_build_range_scan(table_rel, index_rel, index_info, allow_sync, false, progress, 0, InvalidBlockNumber, callback, callback_state, scan); } /* * As table_index_build_scan(), except that instead of scanning the complete * table, only the given number of blocks are scanned. Scan to end-of-rel can * be signaled by passing InvalidBlockNumber as numblocks. Note that * restricting the range to scan cannot be done when requesting syncscan. * * When "anyvisible" mode is requested, all tuples visible to any transaction * are indexed and counted as live, including those inserted or deleted by * transactions that are still in progress. */ static inline double table_index_build_range_scan(Relation table_rel, Relation index_rel, struct IndexInfo *index_info, bool allow_sync, bool anyvisible, bool progress, BlockNumber start_blockno, BlockNumber numblocks, IndexBuildCallback callback, void *callback_state, TableScanDesc scan) { return table_rel->rd_tableam->index_build_range_scan(table_rel, index_rel, index_info, allow_sync, anyvisible, progress, start_blockno, numblocks, callback, callback_state, scan); } /* * table_index_validate_scan - second table scan for concurrent index build * * See validate_index() for an explanation. */ static inline void table_index_validate_scan(Relation table_rel, Relation index_rel, struct IndexInfo *index_info, Snapshot snapshot, struct ValidateIndexState *state) { table_rel->rd_tableam->index_validate_scan(table_rel, index_rel, index_info, snapshot, state); } /* ---------------------------------------------------------------------------- * Miscellaneous functionality * ---------------------------------------------------------------------------- */ /* * Return the current size of `rel` in bytes. If `forkNumber` is * InvalidForkNumber, return the relation's overall size, otherwise the size * for the indicated fork. * * Note that the overall size might not be the equivalent of the sum of sizes * for the individual forks for some AMs, e.g. because the AMs storage does * not neatly map onto the builtin types of forks. */ static inline uint64 table_relation_size(Relation rel, ForkNumber forkNumber) { return rel->rd_tableam->relation_size(rel, forkNumber); } /* * table_relation_needs_toast_table - does this relation need a toast table? */ static inline bool table_relation_needs_toast_table(Relation rel) { return rel->rd_tableam->relation_needs_toast_table(rel); } /* * Return the OID of the AM that should be used to implement the TOAST table * for this relation. */ static inline Oid table_relation_toast_am(Relation rel) { return rel->rd_tableam->relation_toast_am(rel); } /* * Fetch all or part of a TOAST value from a TOAST table. * * If this AM is never used to implement a TOAST table, then this callback * is not needed. But, if toasted values are ever stored in a table of this * type, then you will need this callback. * * toastrel is the relation in which the toasted value is stored. * * valueid identifes which toast value is to be fetched. For the heap, * this corresponds to the values stored in the chunk_id column. * * attrsize is the total size of the toast value to be fetched. * * sliceoffset is the offset within the toast value of the first byte that * should be fetched. * * slicelength is the number of bytes from the toast value that should be * fetched. * * result is caller-allocated space into which the fetched bytes should be * stored. */ static inline void table_relation_fetch_toast_slice(Relation toastrel, Oid valueid, int32 attrsize, int32 sliceoffset, int32 slicelength, struct varlena *result) { toastrel->rd_tableam->relation_fetch_toast_slice(toastrel, valueid, attrsize, sliceoffset, slicelength, result); } /* ---------------------------------------------------------------------------- * Planner related functionality * ---------------------------------------------------------------------------- */ /* * Estimate the current size of the relation, as an AM specific workhorse for * estimate_rel_size(). Look there for an explanation of the parameters. */ static inline void table_relation_estimate_size(Relation rel, int32 *attr_widths, BlockNumber *pages, double *tuples, double *allvisfrac) { rel->rd_tableam->relation_estimate_size(rel, attr_widths, pages, tuples, allvisfrac); } /* ---------------------------------------------------------------------------- * Executor related functionality * ---------------------------------------------------------------------------- */ /* * Prepare to fetch / check / return tuples from `tbmres->blockno` as part of * a bitmap table scan. `scan` needs to have been started via * table_beginscan_bm(). Returns false if there are no tuples to be found on * the page, true otherwise. * * Note, this is an optionally implemented function, therefore should only be * used after verifying the presence (at plan time or such). */ static inline bool table_scan_bitmap_next_block(TableScanDesc scan, struct TBMIterateResult *tbmres) { /* * 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, bool *update_indexes); /* ---------------------------------------------------------------------------- * Helper functions to implement parallel scans for block oriented AMs. * ---------------------------------------------------------------------------- */ extern Size table_block_parallelscan_estimate(Relation rel); extern Size table_block_parallelscan_initialize(Relation rel, ParallelTableScanDesc pscan); extern void table_block_parallelscan_reinitialize(Relation rel, ParallelTableScanDesc pscan); extern BlockNumber table_block_parallelscan_nextpage(Relation rel, 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); extern const TableAmRoutine *GetHeapamTableAmRoutine(void); extern bool check_default_table_access_method(char **newval, void **extra, GucSource source); #endif /* TABLEAM_H */ pg_query-4.2.3/ext/pg_query/include/access/xlogprefetcher.h0000644000004100000410000000275314510636647024137 0ustar www-datawww-data/*------------------------------------------------------------------------- * * xlogprefetcher.h * Declarations for the recovery prefetching module. * * Portions Copyright (c) 2022, 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 pg_query-4.2.3/ext/pg_query/include/access/amapi.h0000644000004100000410000002335714510636647022210 0ustar www-datawww-data/*------------------------------------------------------------------------- * * amapi.h * API for Postgres index access methods. * * Copyright (c) 2015-2022, 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. */ 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); /* 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) (void); /* prepare for parallel index scan */ typedef void (*aminitparallelscan_function) (void *target); /* (re)start parallel index scan */ typedef void (*amparallelrescan_function) (IndexScanDesc scan); /* * API struct for an index AM. Note this must be stored in a single palloc'd * chunk of memory. */ typedef struct IndexAmRoutine { NodeTag type; /* * Total number of strategies (operators) by which we can traverse/search * this AM. Zero if AM does not have a fixed set of strategy assignments. */ uint16 amstrategies; /* total number of support functions that this AM uses */ uint16 amsupport; /* opclass options support function number or 0 */ uint16 amoptsprocnum; /* does AM support ORDER BY indexed column's value? */ bool amcanorder; /* does AM support ORDER BY result of an operator on indexed column? */ bool amcanorderbyop; /* does AM support backward scanning? */ bool amcanbackward; /* does AM support UNIQUE indexes? */ bool amcanunique; /* does AM support multi-column indexes? */ bool amcanmulticol; /* does AM require scans to have a constraint on the first index column? */ bool amoptionalkey; /* does AM handle ScalarArrayOpExpr quals? */ bool amsearcharray; /* does AM handle IS NULL/IS NOT NULL quals? */ bool amsearchnulls; /* can index storage data type differ from column data type? */ bool amstorage; /* can an index of this type be clustered on? */ bool amclusterable; /* does AM handle predicate locks? */ bool ampredlocks; /* does AM support parallel scan? */ bool amcanparallel; /* does AM support columns included with clause INCLUDE? */ bool amcaninclude; /* does AM use maintenance_work_mem? */ bool amusemaintenanceworkmem; /* OR of parallel vacuum flags. See vacuum.h for flags. */ uint8 amparallelvacuumoptions; /* type of data stored in index, or InvalidOid if variable */ Oid amkeytype; /* * If you add new properties to either the above or the below lists, then * they should also (usually) be exposed via the property API (see * IndexAMProperty at the top of the file, and utils/adt/amutils.c). */ /* interface functions */ ambuild_function ambuild; ambuildempty_function ambuildempty; aminsert_function aminsert; ambulkdelete_function ambulkdelete; amvacuumcleanup_function amvacuumcleanup; amcanreturn_function amcanreturn; /* can be NULL */ amcostestimate_function amcostestimate; amoptions_function amoptions; amproperty_function amproperty; /* can be NULL */ ambuildphasename_function ambuildphasename; /* can be NULL */ amvalidate_function amvalidate; 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 */ pg_query-4.2.3/ext/pg_query/include/access/commit_ts.h0000644000004100000410000000432714510636647023113 0ustar www-datawww-data/* * commit_ts.h * * PostgreSQL commit timestamp manager * * Portions Copyright (c) 1996-2022, 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 CommitTsShmemBuffers(void); extern Size CommitTsShmemSize(void); extern void CommitTsShmemInit(void); extern void BootStrapCommitTs(void); extern void StartupCommitTs(void); extern void CommitTsParameterChange(bool newvalue, bool oldvalue); extern void CompleteCommitTsInitialization(void); extern void 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 { int pageno; TransactionId oldestXid; } xl_commit_ts_truncate; #define SizeOfCommitTsTruncate (offsetof(xl_commit_ts_truncate, oldestXid) + \ sizeof(TransactionId)) extern void commit_ts_redo(XLogReaderState *record); extern void commit_ts_desc(StringInfo buf, XLogReaderState *record); extern const char *commit_ts_identify(uint8 info); #endif /* COMMIT_TS_H */ pg_query-4.2.3/ext/pg_query/include/access/transam.h0000644000004100000410000003051214510636647022555 0ustar www-datawww-data/*------------------------------------------------------------------------- * * transam.h * postgres transaction access method support code * * * Portions Copyright (c) 1996-2022, 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 /* * VariableCache is a data structure in shared memory that is used to track * OID and XID assignment state. For largely historical reasons, there is * just one struct with different fields that are protected by different * LWLocks. * * Note: xidWrapLimit and oldestXidDB are not "active" values, but are * used just to generate useful messages when xidWarnLimit or xidStopLimit * are exceeded. */ typedef struct VariableCacheData { /* * These fields are protected by OidGenLock. */ Oid nextOid; /* next OID to assign */ uint32 oidCount; /* OIDs available before must do XLOG work */ /* * These fields are protected by XidGenLock. */ FullTransactionId 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 */ } VariableCacheData; typedef VariableCacheData *VariableCache; /* ---------------- * extern declarations * ---------------- */ /* in transam/xact.c */ extern bool TransactionStartedDuringRecovery(void); /* in transam/varsup.c */ extern PGDLLIMPORT VariableCache ShmemVariableCache; /* * prototypes for functions in transam/transam.c */ extern bool TransactionIdDidCommit(TransactionId transactionId); extern bool TransactionIdDidAbort(TransactionId transactionId); extern void TransactionIdCommitTree(TransactionId xid, int nxids, TransactionId *xids); extern void TransactionIdAsyncCommitTree(TransactionId xid, int nxids, TransactionId *xids, XLogRecPtr lsn); extern void TransactionIdAbortTree(TransactionId xid, int nxids, TransactionId *xids); extern bool TransactionIdPrecedes(TransactionId id1, TransactionId id2); extern bool TransactionIdPrecedesOrEquals(TransactionId id1, TransactionId id2); extern bool TransactionIdFollows(TransactionId id1, TransactionId id2); extern bool TransactionIdFollowsOrEquals(TransactionId id1, TransactionId id2); extern TransactionId TransactionIdLatest(TransactionId mainxid, int nxids, const TransactionId *xids); extern XLogRecPtr TransactionIdGetCommitLSN(TransactionId xid); /* in transam/varsup.c */ extern FullTransactionId GetNewTransactionId(bool isSubXact); extern void AdvanceNextFullTransactionIdPastXid(TransactionId xid); extern FullTransactionId ReadNextFullTransactionId(void); extern void SetTransactionIdLimit(TransactionId oldest_datfrozenxid, Oid oldest_datoid); extern void AdvanceOldestClogXid(TransactionId oldest_datfrozenxid); extern bool ForceTransactionIdLimitUpdate(void); extern Oid GetNewObjectId(void); 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; } #endif /* FRONTEND */ #endif /* TRANSAM_H */ pg_query-4.2.3/ext/pg_query/include/access/xlogrecord.h0000644000004100000410000002105014510636647023255 0ustar www-datawww-data/* * xlogrecord.h * * Definitions for the WAL record format. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/xlogrecord.h */ #ifndef XLOGRECORD_H #define XLOGRECORD_H #include "access/rmgr.h" #include "access/xlogdefs.h" #include "port/pg_crc32c.h" #include "storage/block.h" #include "storage/relfilenode.h" /* * The overall layout of an XLOG record is: * Fixed-size header (XLogRecord struct) * XLogRecordBlockHeader struct * XLogRecordBlockHeader struct * ... * XLogRecordDataHeader[Short|Long] struct * block data * block data * ... * main data * * There can be zero or more XLogRecordBlockHeaders, and 0 or more bytes of * rmgr-specific data not associated with a block. XLogRecord structs * always start on MAXALIGN boundaries in the WAL files, but the rest of * the fields are not aligned. * * The XLogRecordBlockHeader, XLogRecordDataHeaderShort and * XLogRecordDataHeaderLong structs all begin with a single 'id' byte. It's * used to distinguish between block references, and the main data structs. */ typedef struct XLogRecord { uint32 xl_tot_len; /* total len of entire record */ TransactionId xl_xid; /* xact id */ XLogRecPtr xl_prev; /* ptr to previous record in log */ uint8 xl_info; /* flag bits, see below */ RmgrId xl_rmid; /* resource manager for this record */ /* 2 bytes of padding here, initialize to zero */ pg_crc32c xl_crc; /* CRC for this record */ /* XLogRecordBlockHeaders and XLogRecordDataHeader follow, no padding */ } XLogRecord; #define SizeOfXLogRecord (offsetof(XLogRecord, xl_crc) + sizeof(pg_crc32c)) /* * The high 4 bits in xl_info may be used freely by rmgr. The * XLR_SPECIAL_REL_UPDATE and XLR_CHECK_CONSISTENCY bits can be passed by * XLogInsert caller. The rest are set internally by XLogInsert. */ #define XLR_INFO_MASK 0x0F #define XLR_RMGR_INFO_MASK 0xF0 /* * If a WAL record modifies any relation files, in ways not covered by the * usual block references, this flag is set. This is not used for anything * by PostgreSQL itself, but it allows external tools that read WAL and keep * track of modified blocks to recognize such special record types. */ #define XLR_SPECIAL_REL_UPDATE 0x01 /* * Enforces consistency checks of replayed WAL at recovery. If enabled, * each record will log a full-page write for each block modified by the * record and will reuse it afterwards for consistency checks. The caller * of XLogInsert can use this value if necessary, but if * wal_consistency_checking is enabled for a rmgr this is set unconditionally. */ #define XLR_CHECK_CONSISTENCY 0x02 /* * Header info for block data appended to an XLOG record. * * 'data_length' is the length of the rmgr-specific payload data associated * with this block. It does not include the possible full page image, nor * XLogRecordBlockHeader struct itself. * * Note that we don't attempt to align the XLogRecordBlockHeader struct! * So, the struct must be copied to aligned local storage before use. */ typedef struct XLogRecordBlockHeader { uint8 id; /* block reference ID */ uint8 fork_flags; /* fork within the relation, and flags */ uint16 data_length; /* number of payload bytes (not including page * image) */ /* If BKPBLOCK_HAS_IMAGE, an XLogRecordBlockImageHeader struct follows */ /* If BKPBLOCK_SAME_REL is not set, a RelFileNode follows */ /* BlockNumber follows */ } XLogRecordBlockHeader; #define SizeOfXLogRecordBlockHeader (offsetof(XLogRecordBlockHeader, data_length) + sizeof(uint16)) /* * Additional header information when a full-page image is included * (i.e. when BKPBLOCK_HAS_IMAGE is set). * * The XLOG code is aware that PG data pages usually contain an unused "hole" * in the middle, which contains only zero bytes. Since we know that the * "hole" is all zeros, we remove it from the stored data (and it's not counted * in the XLOG record's CRC, either). Hence, the amount of block data actually * present is (BLCKSZ - ). * * Additionally, when wal_compression is enabled, we will try to compress full * page images using 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(RelFileNode) + \ sizeof(BlockNumber)) /* * The fork number fits in the lower 4 bits in the fork_flags field. The upper * bits are used for flags. */ #define BKPBLOCK_FORK_MASK 0x0F #define BKPBLOCK_FLAG_MASK 0xF0 #define BKPBLOCK_HAS_IMAGE 0x10 /* block data is an XLogRecordBlockImage */ #define BKPBLOCK_HAS_DATA 0x20 #define BKPBLOCK_WILL_INIT 0x40 /* redo will re-init the page */ #define BKPBLOCK_SAME_REL 0x80 /* RelFileNode omitted, same as previous */ /* * XLogRecordDataHeaderShort/Long are used for the "main data" portion of * the record. If the length of the data is less than 256 bytes, the short * form is used, with a single byte to hold the length. Otherwise the long * form is used. * * (These structs are currently not used in the code, they are here just for * documentation purposes). */ typedef struct XLogRecordDataHeaderShort { uint8 id; /* XLR_BLOCK_ID_DATA_SHORT */ uint8 data_length; /* number of payload bytes */ } XLogRecordDataHeaderShort; #define SizeOfXLogRecordDataHeaderShort (sizeof(uint8) * 2) typedef struct XLogRecordDataHeaderLong { uint8 id; /* XLR_BLOCK_ID_DATA_LONG */ /* followed by uint32 data_length, unaligned */ } XLogRecordDataHeaderLong; #define SizeOfXLogRecordDataHeaderLong (sizeof(uint8) + sizeof(uint32)) /* * Block IDs used to distinguish different kinds of record fragments. Block * references are numbered from 0 to XLR_MAX_BLOCK_ID. A rmgr is free to use * any ID number in that range (although you should stick to small numbers, * because the WAL machinery is optimized for that case). A 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 */ pg_query-4.2.3/ext/pg_query/include/access/rmgrlist.h0000644000004100000410000000655214510636647022762 0ustar www-datawww-data/*--------------------------------------------------------------------------- * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/rmgrlist.h *--------------------------------------------------------------------------- */ /* there is deliberately not an #ifndef RMGRLIST_H here */ /* * List of resource manager entries. Note that order of entries defines the * numerical values of each rmgr's ID, which is stored in WAL records. New * entries should be added at the end, to avoid changing IDs of existing * entries. * * Changes to this list possibly need an XLOG_PAGE_MAGIC bump. */ /* symbol name, textual name, redo, desc, identify, startup, cleanup */ PG_RMGR(RM_XLOG_ID, "XLOG", xlog_redo, xlog_desc, xlog_identify, NULL, NULL, NULL, 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) pg_query-4.2.3/ext/pg_query/include/access/sysattr.h0000644000004100000410000000152514510636647022623 0ustar www-datawww-data/*------------------------------------------------------------------------- * * sysattr.h * POSTGRES system attribute definitions. * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/access/clog.h0000644000004100000410000000336414510636647022041 0ustar www-datawww-data/* * clog.h * * PostgreSQL transaction-commit-log manager * * Portions Copyright (c) 1996-2022, 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 { int pageno; TransactionId oldestXact; Oid oldestXactDb; } xl_clog_truncate; extern void TransactionIdSetTreeStatus(TransactionId xid, int nsubxids, TransactionId *subxids, XidStatus status, XLogRecPtr lsn); extern XidStatus TransactionIdGetStatus(TransactionId xid, XLogRecPtr *lsn); extern Size CLOGShmemBuffers(void); extern Size CLOGShmemSize(void); extern void CLOGShmemInit(void); extern void BootStrapCLOG(void); extern void StartupCLOG(void); extern void TrimCLOG(void); extern void 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 */ pg_query-4.2.3/ext/pg_query/include/access/relation.h0000644000004100000410000000172114510636647022725 0ustar www-datawww-data/*------------------------------------------------------------------------- * * relation.h * Generic relation related routines. * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/access/genam.h0000644000004100000410000002160214510636647022177 0ustar www-datawww-data/*------------------------------------------------------------------------- * * genam.h * POSTGRES generalized index access method definitions. * * * Portions Copyright (c) 1996-2022, 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 */ 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 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 IndexScanDesc index_beginscan(Relation heapRelation, Relation indexRelation, Snapshot snapshot, int nkeys, int norderbys); extern IndexScanDesc index_beginscan_bitmap(Relation indexRelation, Snapshot snapshot, int nkeys); extern void index_rescan(IndexScanDesc scan, ScanKey keys, int nkeys, ScanKey orderbys, int norderbys); extern void index_endscan(IndexScanDesc scan); extern void index_markpos(IndexScanDesc scan); extern void index_restrpos(IndexScanDesc scan); extern Size index_parallelscan_estimate(Relation indexrel, Snapshot snapshot); extern void index_parallelscan_initialize(Relation heaprel, Relation indexrel, Snapshot snapshot, ParallelIndexScanDesc target); extern void index_parallelrescan(IndexScanDesc scan); extern IndexScanDesc index_beginscan_parallel(Relation heaprel, Relation indexrel, int nkeys, int norderbys, ParallelIndexScanDesc pscan); extern ItemPointer index_getnext_tid(IndexScanDesc scan, ScanDirection direction); struct TupleTableSlot; extern bool index_fetch_heap(IndexScanDesc scan, struct TupleTableSlot *slot); extern bool index_getnext_slot(IndexScanDesc scan, ScanDirection direction, struct TupleTableSlot *slot); extern int64 index_getbitmap(IndexScanDesc scan, TIDBitmap *bitmap); extern IndexBulkDeleteResult *index_bulk_delete(IndexVacuumInfo *info, IndexBulkDeleteResult *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 relation, AttrNumber attnum, Datum attoptions, bool validate); /* * index access method support routines (in genam.c) */ extern IndexScanDesc RelationGetIndexScan(Relation indexRelation, int nkeys, int norderbys); extern void IndexScanEnd(IndexScanDesc scan); extern char *BuildIndexValueDescription(Relation indexRelation, Datum *values, bool *isnull); extern TransactionId index_compute_xid_horizon_for_tuples(Relation irel, Relation hrel, Buffer ibuf, OffsetNumber *itemnos, int nitems); /* * heap-or-index access to system catalogs (in genam.c) */ extern SysScanDesc systable_beginscan(Relation heapRelation, Oid indexId, bool indexOK, Snapshot snapshot, int nkeys, ScanKey key); extern HeapTuple systable_getnext(SysScanDesc sysscan); extern bool systable_recheck_tuple(SysScanDesc sysscan, HeapTuple tup); extern void systable_endscan(SysScanDesc sysscan); extern SysScanDesc systable_beginscan_ordered(Relation heapRelation, Relation indexRelation, Snapshot snapshot, int nkeys, ScanKey key); extern HeapTuple systable_getnext_ordered(SysScanDesc sysscan, ScanDirection direction); extern void systable_endscan_ordered(SysScanDesc sysscan); #endif /* GENAM_H */ pg_query-4.2.3/ext/pg_query/include/access/htup.h0000644000004100000410000000631414510636647022073 0ustar www-datawww-data/*------------------------------------------------------------------------- * * htup.h * POSTGRES heap tuple definitions. * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/access/detoast.h0000644000004100000410000000461314510636647022556 0ustar www-datawww-data/*------------------------------------------------------------------------- * * detoast.h * Access to compressed and external varlena values. * * Copyright (c) 2000-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/c.h0000644000004100000410000013077314510636647020103 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/c.h * *------------------------------------------------------------------------- */ /* *---------------------------------------------------------------- * TABLE OF CONTENTS * * When adding stuff to this file, please try to put stuff * into the relevant section, or add new sections as appropriate. * * section description * ------- ------------------------------------------------ * 0) pg_config.h and standard system headers * 1) compiler characteristics * 2) bool, true, false * 3) standard system types * 4) IsValid macros for system types * 5) offsetof, lengthof, alignment * 6) assertions * 7) widely useful macros * 8) random stuff * 9) system-specific hacks * * NOTE: since this file is included by both frontend and backend modules, * it's usually wrong to put an "extern" declaration here, unless it's * ifdef'd so that it's seen in only one case or the other. * typedefs and macros are the kind of thing that might go here. * *---------------------------------------------------------------- */ #ifndef C_H #define C_H #include "postgres_ext.h" /* Must undef pg_config_ext.h symbols before including pg_config.h */ #undef PG_INT64_TYPE #include "pg_config.h" #include "pg_config_manual.h" /* must be after pg_config.h */ #include "pg_config_os.h" /* must be before any system header files */ /* System header files that should be available everywhere in Postgres */ #include #include #include #include #include #ifdef HAVE_STRINGS_H #include #endif #include #include #include #if defined(WIN32) || defined(__CYGWIN__) #include /* ensure O_BINARY is available */ #endif #include #ifdef ENABLE_NLS #include #endif /* ---------------------------------------------------------------- * Section 1: compiler characteristics * * type prefixes (const, signed, volatile, inline) are handled in pg_config.h. * ---------------------------------------------------------------- */ /* * Disable "inline" if PG_FORCE_DISABLE_INLINE is defined. * This is used to work around compiler bugs and might also be useful for * investigatory purposes. */ #ifdef PG_FORCE_DISABLE_INLINE #undef inline #define inline #endif /* * Attribute macros * * GCC: https://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html * GCC: https://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html * Clang: https://clang.llvm.org/docs/AttributeReference.html * Sunpro: https://docs.oracle.com/cd/E18659_01/html/821-1384/gjzke.html * XLC: https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.2/com.ibm.xlc131.aix.doc/language_ref/function_attributes.html * XLC: https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.2/com.ibm.xlc131.aix.doc/language_ref/type_attrib.html */ /* * 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 /* * Place this macro before functions that should be allowed to make misaligned * accesses. Think twice before using it on non-x86-specific code! * Testing can be done with "-fsanitize=alignment -fsanitize-trap=alignment" * on clang, or "-fsanitize=alignment -fno-sanitize-recover=alignment" on gcc. */ #if __clang_major__ >= 7 || __GNUC__ >= 8 #define pg_attribute_no_sanitize_alignment() __attribute__((no_sanitize("alignment"))) #else #define pg_attribute_no_sanitize_alignment() #endif /* * Append PG_USED_FOR_ASSERTS_ONLY to definitions of variables that are only * used in assert-enabled builds, to avoid compiler warnings about unused * variables in assert-disabled builds. */ #ifdef USE_ASSERT_CHECKING #define PG_USED_FOR_ASSERTS_ONLY #else #define PG_USED_FOR_ASSERTS_ONLY pg_attribute_unused() #endif /* GCC and XLC support format attributes */ #if defined(__GNUC__) || defined(__IBMC__) #define pg_attribute_format_arg(a) __attribute__((format_arg(a))) #define pg_attribute_printf(f,a) __attribute__((format(PG_PRINTF_ATTRIBUTE, f, a))) #else #define pg_attribute_format_arg(a) #define pg_attribute_printf(f,a) #endif /* GCC, Sunpro and XLC support aligned, packed and noreturn */ #if defined(__GNUC__) || defined(__SUNPRO_C) || defined(__IBMC__) #define pg_attribute_aligned(a) __attribute__((aligned(a))) #define pg_attribute_noreturn() __attribute__((noreturn)) #define pg_attribute_packed() __attribute__((packed)) #define HAVE_PG_ATTRIBUTE_NORETURN 1 #else /* * NB: aligned and packed are not given default definitions because they * affect code functionality; they *must* be implemented by the compiler * if they are to be used. */ #define pg_attribute_noreturn() #endif /* * Use "pg_attribute_always_inline" in place of "inline" for functions that * we wish to force inlining of, even when the compiler's heuristics would * choose not to. But, if possible, don't force inlining in unoptimized * debug builds. */ #if (defined(__GNUC__) && __GNUC__ > 3 && defined(__OPTIMIZE__)) || defined(__SUNPRO_C) || defined(__IBMC__) /* GCC > 3, Sunpro and XLC support always_inline via __attribute__ */ #define pg_attribute_always_inline __attribute__((always_inline)) inline #elif defined(_MSC_VER) /* MSVC has a special keyword for this */ #define pg_attribute_always_inline __forceinline #else /* Otherwise, the best we can do is to say "inline" */ #define pg_attribute_always_inline inline #endif /* * Forcing a function not to be inlined can be useful if it's the slow path of * a performance-critical function, or should be visible in profiles to allow * for proper cost attribution. Note that unlike the pg_attribute_XXX macros * above, this should be placed before the function's return type and name. */ /* GCC, Sunpro and XLC support noinline via __attribute__ */ #if (defined(__GNUC__) && __GNUC__ > 2) || defined(__SUNPRO_C) || defined(__IBMC__) #define pg_noinline __attribute__((noinline)) /* msvc via declspec */ #elif defined(_MSC_VER) #define pg_noinline __declspec(noinline) #else #define pg_noinline #endif /* * 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. */ #define VA_ARGS_NARGS(...) \ VA_ARGS_NARGS_(__VA_ARGS__, \ 63,62,61,60, \ 59,58,57,56,55,54,53,52,51,50, \ 49,48,47,46,45,44,43,42,41,40, \ 39,38,37,36,35,34,33,32,31,30, \ 29,28,27,26,25,24,23,22,21,20, \ 19,18,17,16,15,14,13,12,11,10, \ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) #define VA_ARGS_NARGS_( \ _01,_02,_03,_04,_05,_06,_07,_08,_09,_10, \ _11,_12,_13,_14,_15,_16,_17,_18,_19,_20, \ _21,_22,_23,_24,_25,_26,_27,_28,_29,_30, \ _31,_32,_33,_34,_35,_36,_37,_38,_39,_40, \ _41,_42,_43,_44,_45,_46,_47,_48,_49,_50, \ _51,_52,_53,_54,_55,_56,_57,_58,_59,_60, \ _61,_62,_63, N, ...) \ (N) /* * dummyret is used to set return values in macros that use ?: to make * assignments. gcc wants these to be void, other compilers like char */ #ifdef __GNUC__ /* GNU cc */ #define dummyret void #else #define dummyret char #endif /* * 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 */ /* Which __func__ symbol do we have, if any? */ #ifdef HAVE_FUNCNAME__FUNC #define PG_FUNCNAME_MACRO __func__ #else #ifdef HAVE_FUNCNAME__FUNCTION #define PG_FUNCNAME_MACRO __FUNCTION__ #else #define PG_FUNCNAME_MACRO NULL #endif #endif /* ---------------------------------------------------------------- * Section 2: bool, true, false * ---------------------------------------------------------------- */ /* * bool * Boolean value, either true or false. * * We use stdbool.h if available and its bool has size 1. That's useful for * better compiler and debugger output and for compatibility with third-party * libraries. But PostgreSQL currently cannot deal with bool of other sizes; * there are static assertions around the code to prevent that. * * For C++ compilers, we assume the compiler has a compatible built-in * definition of bool. * * See also the version of this code in src/interfaces/ecpg/include/ecpglib.h. */ #ifndef __cplusplus #ifdef PG_USE_STDBOOL #include #else #ifndef bool typedef unsigned char bool; #endif #ifndef true #define true ((bool) 1) #endif #ifndef false #define false ((bool) 0) #endif #endif /* not PG_USE_STDBOOL */ #endif /* not C++ */ /* ---------------------------------------------------------------- * Section 3: standard system types * ---------------------------------------------------------------- */ /* * Pointer * Variable holding address of any memory resident object. * * XXX Pointer arithmetic is done with this, so it can't be void * * under "true" ANSI compilers. */ typedef char *Pointer; /* * intN * Signed integer, EXACTLY N BITS IN SIZE, * used for numerical computations and the * frontend/backend protocol. */ #ifndef HAVE_INT8 typedef signed char int8; /* == 8 bits */ typedef signed short int16; /* == 16 bits */ typedef signed int int32; /* == 32 bits */ #endif /* not HAVE_INT8 */ /* * uintN * Unsigned integer, EXACTLY N BITS IN SIZE, * used for numerical computations and the * frontend/backend protocol. */ #ifndef HAVE_UINT8 typedef unsigned char uint8; /* == 8 bits */ typedef unsigned short uint16; /* == 16 bits */ typedef unsigned int uint32; /* == 32 bits */ #endif /* not HAVE_UINT8 */ /* * bitsN * Unit of bitwise operation, AT LEAST N BITS IN SIZE. */ typedef uint8 bits8; /* >= 8 bits */ typedef uint16 bits16; /* >= 16 bits */ typedef uint32 bits32; /* >= 32 bits */ /* * 64-bit integers */ #ifdef HAVE_LONG_INT_64 /* Plain "long int" fits, use it */ #ifndef HAVE_INT64 typedef long int int64; #endif #ifndef HAVE_UINT64 typedef unsigned long int uint64; #endif #define INT64CONST(x) (x##L) #define UINT64CONST(x) (x##UL) #elif defined(HAVE_LONG_LONG_INT_64) /* We have working support for "long long int", use that */ #ifndef HAVE_INT64 typedef long long int int64; #endif #ifndef HAVE_UINT64 typedef unsigned long long int uint64; #endif #define INT64CONST(x) (x##LL) #define UINT64CONST(x) (x##ULL) #else /* neither HAVE_LONG_INT_64 nor HAVE_LONG_LONG_INT_64 */ #error must have a working 64-bit integer datatype #endif /* snprintf format strings to use for 64-bit integers */ #define INT64_FORMAT "%" INT64_MODIFIER "d" #define UINT64_FORMAT "%" INT64_MODIFIER "u" /* * 128-bit signed and unsigned integers * There currently is only limited support for such types. * E.g. 128bit literals and snprintf are not supported; but math is. * Also, because we exclude such types when choosing MAXIMUM_ALIGNOF, * it must be possible to coerce the compiler to allocate them on no * more than MAXALIGN boundaries. */ #if defined(PG_INT128_TYPE) #if defined(pg_attribute_aligned) || ALIGNOF_PG_INT128_TYPE <= MAXIMUM_ALIGNOF #define HAVE_INT128 1 typedef PG_INT128_TYPE int128 #if defined(pg_attribute_aligned) pg_attribute_aligned(MAXIMUM_ALIGNOF) #endif ; typedef unsigned PG_INT128_TYPE uint128 #if defined(pg_attribute_aligned) pg_attribute_aligned(MAXIMUM_ALIGNOF) #endif ; #endif #endif /* * stdint.h limits aren't guaranteed to have compatible types with our fixed * width types. So just define our own. */ #define PG_INT8_MIN (-0x7F-1) #define PG_INT8_MAX (0x7F) #define PG_UINT8_MAX (0xFF) #define PG_INT16_MIN (-0x7FFF-1) #define PG_INT16_MAX (0x7FFF) #define PG_UINT16_MAX (0xFFFF) #define PG_INT32_MIN (-0x7FFFFFFF-1) #define PG_INT32_MAX (0x7FFFFFFF) #define PG_UINT32_MAX (0xFFFFFFFFU) #define PG_INT64_MIN (-INT64CONST(0x7FFFFFFFFFFFFFFF) - 1) #define PG_INT64_MAX INT64CONST(0x7FFFFFFFFFFFFFFF) #define PG_UINT64_MAX UINT64CONST(0xFFFFFFFFFFFFFFFF) /* * We now always use int64 timestamps, but keep this symbol defined for the * benefit of external code that might test it. */ #define HAVE_INT64_TIMESTAMP /* * Size * Size of any memory resident object, as returned by sizeof. */ typedef size_t Size; /* * Index * Index into any memory resident array. * * Note: * Indices are non negative. */ typedef unsigned int Index; /* * Offset * Offset into any memory resident array. * * Note: * This differs from an Index in that an Index is always * non negative, whereas Offset may be negative. */ typedef signed int Offset; /* * Common Postgres datatype names (as used in the catalogs) */ typedef float float4; typedef double float8; #ifdef USE_FLOAT8_BYVAL #define FLOAT8PASSBYVAL true #else #define FLOAT8PASSBYVAL false #endif /* * Oid, RegProcedure, TransactionId, SubTransactionId, MultiXactId, * CommandId */ /* typedef Oid is in postgres_ext.h */ /* * regproc is the type name used in the include/catalog headers, but * RegProcedure is the preferred name in C code. */ typedef Oid regproc; typedef regproc RegProcedure; typedef uint32 TransactionId; typedef uint32 LocalTransactionId; typedef uint32 SubTransactionId; #define InvalidSubTransactionId ((SubTransactionId) 0) #define TopSubTransactionId ((SubTransactionId) 1) /* MultiXactId must be equivalent to TransactionId, to fit in t_xmax */ typedef TransactionId MultiXactId; typedef uint32 MultiXactOffset; typedef uint32 CommandId; #define FirstCommandId ((CommandId) 0) #define InvalidCommandId (~(CommandId)0) /* ---------------- * Variable-length datatypes all share the 'struct varlena' header. * * NOTE: for TOASTable types, this is an oversimplification, since the value * may be compressed or moved out-of-line. However datatype-specific routines * are mostly content to deal with de-TOASTed values only, and of course * client-side routines should never see a TOASTed value. But even in a * de-TOASTed value, beware of touching vl_len_ directly, as its * representation is no longer convenient. It's recommended that code always * use macros VARDATA_ANY, VARSIZE_ANY, VARSIZE_ANY_EXHDR, VARDATA, VARSIZE, * and SET_VARSIZE instead of relying on direct mentions of the struct fields. * See postgres.h for details of the TOASTed form. * ---------------- */ struct varlena { char vl_len_[4]; /* Do not touch this field directly! */ char vl_dat[FLEXIBLE_ARRAY_MEMBER]; /* Data content is here */ }; #define VARHDRSZ ((int32) sizeof(int32)) /* * These widely-used datatypes are just a varlena header and the data bytes. * There is no terminating null or anything like that --- the data length is * always VARSIZE_ANY_EXHDR(ptr). */ typedef struct varlena bytea; typedef struct varlena text; typedef struct varlena BpChar; /* blank-padded char, ie SQL char(n) */ typedef struct varlena VarChar; /* var-length char, ie SQL varchar(n) */ /* * Specialized array types. These are physically laid out just the same * as regular arrays (so that the regular array subscripting code works * with them). They exist as distinct types mostly for historical reasons: * they have nonstandard I/O behavior which we don't want to change for fear * of breaking applications that look at the system catalogs. There is also * an implementation issue for oidvector: it's part of the primary key for * pg_proc, and we can't use the normal btree array support routines for that * without circularity. */ typedef struct { int32 vl_len_; /* these fields must match ArrayType! */ int ndim; /* always 1 for int2vector */ int32 dataoffset; /* always 0 for int2vector */ Oid elemtype; int dim1; int lbound1; int16 values[FLEXIBLE_ARRAY_MEMBER]; } int2vector; typedef struct { int32 vl_len_; /* these fields must match ArrayType! */ int ndim; /* always 1 for oidvector */ int32 dataoffset; /* always 0 for oidvector */ Oid elemtype; int dim1; int lbound1; Oid values[FLEXIBLE_ARRAY_MEMBER]; } oidvector; /* * Representation of a Name: effectively just a C string, but null-padded to * exactly NAMEDATALEN bytes. The use of a struct is historical. */ typedef struct nameData { char data[NAMEDATALEN]; } NameData; typedef NameData *Name; #define NameStr(name) ((name).data) /* ---------------------------------------------------------------- * Section 4: IsValid macros for system types * ---------------------------------------------------------------- */ /* * BoolIsValid * True iff bool is valid. */ #define BoolIsValid(boolean) ((boolean) == false || (boolean) == true) /* * PointerIsValid * True iff pointer is valid. */ #define PointerIsValid(pointer) ((const void*)(pointer) != NULL) /* * PointerIsAligned * True iff pointer is properly aligned to point to the given type. */ #define PointerIsAligned(pointer, type) \ (((uintptr_t)(pointer) % (sizeof (type))) == 0) #define OffsetToPointer(base, offset) \ ((void *)((char *) base + offset)) #define OidIsValid(objectId) ((bool) ((objectId) != InvalidOid)) #define RegProcedureIsValid(p) OidIsValid(p) /* ---------------------------------------------------------------- * Section 5: offsetof, lengthof, alignment * ---------------------------------------------------------------- */ /* * offsetof * Offset of a structure/union field within that structure/union. * * XXX This is supposed to be part of stddef.h, but isn't on * some systems (like SunOS 4). */ #ifndef offsetof #define offsetof(type, field) ((long) &((type *)0)->field) #endif /* offsetof */ /* * lengthof * Number of elements in an array. */ #define lengthof(array) (sizeof (array) / sizeof ((array)[0])) /* ---------------- * Alignment macros: align a length or address appropriately for a given type. * The fooALIGN() macros round up to a multiple of the required alignment, * while the fooALIGN_DOWN() macros round down. The latter are more useful * for problems like "how many X-sized structures will fit in a page?". * * NOTE: TYPEALIGN[_DOWN] will not work if ALIGNVAL is not a power of 2. * That case seems extremely unlikely to be needed in practice, however. * * NOTE: MAXIMUM_ALIGNOF, and hence MAXALIGN(), intentionally exclude any * larger-than-8-byte types the compiler might have. * ---------------- */ #define TYPEALIGN(ALIGNVAL,LEN) \ (((uintptr_t) (LEN) + ((ALIGNVAL) - 1)) & ~((uintptr_t) ((ALIGNVAL) - 1))) #define SHORTALIGN(LEN) TYPEALIGN(ALIGNOF_SHORT, (LEN)) #define INTALIGN(LEN) TYPEALIGN(ALIGNOF_INT, (LEN)) #define LONGALIGN(LEN) TYPEALIGN(ALIGNOF_LONG, (LEN)) #define DOUBLEALIGN(LEN) TYPEALIGN(ALIGNOF_DOUBLE, (LEN)) #define MAXALIGN(LEN) TYPEALIGN(MAXIMUM_ALIGNOF, (LEN)) /* MAXALIGN covers only built-in types, not buffers */ #define BUFFERALIGN(LEN) TYPEALIGN(ALIGNOF_BUFFER, (LEN)) #define CACHELINEALIGN(LEN) TYPEALIGN(PG_CACHE_LINE_SIZE, (LEN)) #define TYPEALIGN_DOWN(ALIGNVAL,LEN) \ (((uintptr_t) (LEN)) & ~((uintptr_t) ((ALIGNVAL) - 1))) #define SHORTALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_SHORT, (LEN)) #define INTALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_INT, (LEN)) #define LONGALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_LONG, (LEN)) #define DOUBLEALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_DOUBLE, (LEN)) #define MAXALIGN_DOWN(LEN) TYPEALIGN_DOWN(MAXIMUM_ALIGNOF, (LEN)) #define BUFFERALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_BUFFER, (LEN)) /* * The above macros will not work with types wider than uintptr_t, like with * uint64 on 32-bit platforms. That's not problem for the usual use where a * pointer or a length is aligned, but for the odd case that you need to * align something (potentially) wider, use TYPEALIGN64. */ #define TYPEALIGN64(ALIGNVAL,LEN) \ (((uint64) (LEN) + ((ALIGNVAL) - 1)) & ~((uint64) ((ALIGNVAL) - 1))) /* we don't currently need wider versions of the other ALIGN macros */ #define MAXALIGN64(LEN) TYPEALIGN64(MAXIMUM_ALIGNOF, (LEN)) /* ---------------------------------------------------------------- * Section 6: assertions * ---------------------------------------------------------------- */ /* * USE_ASSERT_CHECKING, if defined, turns on all the assertions. * - plai 9/5/90 * * It should _NOT_ be defined in releases or in benchmark copies */ /* * Assert() can be used in both frontend and backend code. In frontend code it * just calls the standard assert, if it's available. If use of assertions is * not configured, it does nothing. */ #ifndef USE_ASSERT_CHECKING #define Assert(condition) ((void)true) #define AssertMacro(condition) ((void)true) #define AssertArg(condition) ((void)true) #define AssertState(condition) ((void)true) #define AssertPointerAlignment(ptr, bndr) ((void)true) #define Trap(condition, errorType) ((void)true) #define TrapMacro(condition, errorType) (true) #elif defined(FRONTEND) #include #define Assert(p) assert(p) #define AssertMacro(p) ((void) assert(p)) #define AssertArg(condition) assert(condition) #define AssertState(condition) assert(condition) #define AssertPointerAlignment(ptr, bndr) ((void)true) #else /* USE_ASSERT_CHECKING && !FRONTEND */ /* * Trap * Generates an exception if the given condition is true. */ #define Trap(condition, errorType) \ do { \ if (condition) \ ExceptionalCondition(#condition, (errorType), \ __FILE__, __LINE__); \ } while (0) /* * TrapMacro is the same as Trap but it's intended for use in macros: * * #define foo(x) (AssertMacro(x != 0), bar(x)) * * Isn't CPP fun? */ #define TrapMacro(condition, errorType) \ ((bool) (! (condition) || \ (ExceptionalCondition(#condition, (errorType), \ __FILE__, __LINE__), 0))) #define Assert(condition) \ do { \ if (!(condition)) \ ExceptionalCondition(#condition, "FailedAssertion", \ __FILE__, __LINE__); \ } while (0) #define AssertMacro(condition) \ ((void) ((condition) || \ (ExceptionalCondition(#condition, "FailedAssertion", \ __FILE__, __LINE__), 0))) #define AssertArg(condition) \ do { \ if (!(condition)) \ ExceptionalCondition(#condition, "BadArgument", \ __FILE__, __LINE__); \ } while (0) #define AssertState(condition) \ do { \ if (!(condition)) \ ExceptionalCondition(#condition, "BadState", \ __FILE__, __LINE__); \ } while (0) /* * Check that `ptr' is `bndr' aligned. */ #define AssertPointerAlignment(ptr, bndr) \ Trap(TYPEALIGN(bndr, (uintptr_t)(ptr)) != (uintptr_t)(ptr), \ "UnalignedPointer") #endif /* USE_ASSERT_CHECKING && !FRONTEND */ /* * ExceptionalCondition is compiled into the backend whether or not * USE_ASSERT_CHECKING is defined, so as to support use of extensions * that are built with that #define with a backend that isn't. Hence, * we should declare it as long as !FRONTEND. */ #ifndef FRONTEND extern void ExceptionalCondition(const char *conditionName, const char *errorType, const char *fileName, int lineNumber) pg_attribute_noreturn(); #endif /* * Macros to support compile-time assertion checks. * * If the "condition" (a compile-time-constant expression) evaluates to false, * throw a compile error using the "errmessage" (a string literal). * * gcc 4.6 and up supports _Static_assert(), but there are bizarre syntactic * placement restrictions. Macros StaticAssertStmt() and StaticAssertExpr() * make it safe to use as a statement or in an expression, respectively. * The macro StaticAssertDecl() is suitable for use at file scope (outside of * any function). * * Otherwise we fall back on a kluge that assumes the compiler will complain * about a negative width for a struct bit-field. This will not include a * helpful error message, but it beats not getting an error at all. */ #ifndef __cplusplus #ifdef HAVE__STATIC_ASSERT #define StaticAssertStmt(condition, errmessage) \ do { _Static_assert(condition, errmessage); } while(0) #define StaticAssertExpr(condition, errmessage) \ ((void) ({ StaticAssertStmt(condition, errmessage); true; })) #define StaticAssertDecl(condition, errmessage) \ _Static_assert(condition, errmessage) #else /* !HAVE__STATIC_ASSERT */ #define StaticAssertStmt(condition, errmessage) \ ((void) sizeof(struct { int static_assert_failure : (condition) ? 1 : -1; })) #define StaticAssertExpr(condition, errmessage) \ StaticAssertStmt(condition, errmessage) #define StaticAssertDecl(condition, errmessage) \ extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1]) #endif /* HAVE__STATIC_ASSERT */ #else /* C++ */ #if defined(__cpp_static_assert) && __cpp_static_assert >= 200410 #define StaticAssertStmt(condition, errmessage) \ static_assert(condition, errmessage) #define StaticAssertExpr(condition, errmessage) \ ({ static_assert(condition, errmessage); }) #define StaticAssertDecl(condition, errmessage) \ static_assert(condition, errmessage) #else /* !__cpp_static_assert */ #define StaticAssertStmt(condition, errmessage) \ do { struct static_assert_struct { int static_assert_failure : (condition) ? 1 : -1; }; } while(0) #define StaticAssertExpr(condition, errmessage) \ ((void) ({ StaticAssertStmt(condition, errmessage); })) #define StaticAssertDecl(condition, errmessage) \ extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1]) #endif /* __cpp_static_assert */ #endif /* C++ */ /* * Compile-time checks that a variable (or expression) has the specified type. * * AssertVariableIsOfType() can be used as a statement. * AssertVariableIsOfTypeMacro() is intended for use in macros, eg * #define foo(x) (AssertVariableIsOfTypeMacro(x, int), bar(x)) * * If we don't have __builtin_types_compatible_p, we can still assert that * the types have the same size. This is far from ideal (especially on 32-bit * platforms) but it provides at least some coverage. */ #ifdef HAVE__BUILTIN_TYPES_COMPATIBLE_P #define AssertVariableIsOfType(varname, typename) \ StaticAssertStmt(__builtin_types_compatible_p(__typeof__(varname), typename), \ CppAsString(varname) " does not have type " CppAsString(typename)) #define AssertVariableIsOfTypeMacro(varname, typename) \ (StaticAssertExpr(__builtin_types_compatible_p(__typeof__(varname), typename), \ CppAsString(varname) " does not have type " CppAsString(typename))) #else /* !HAVE__BUILTIN_TYPES_COMPATIBLE_P */ #define AssertVariableIsOfType(varname, typename) \ StaticAssertStmt(sizeof(varname) == sizeof(typename), \ CppAsString(varname) " does not have type " CppAsString(typename)) #define AssertVariableIsOfTypeMacro(varname, typename) \ (StaticAssertExpr(sizeof(varname) == sizeof(typename), \ CppAsString(varname) " does not have type " CppAsString(typename))) #endif /* HAVE__BUILTIN_TYPES_COMPATIBLE_P */ /* ---------------------------------------------------------------- * Section 7: widely useful macros * ---------------------------------------------------------------- */ /* * Max * Return the maximum of two numbers. */ #define Max(x, y) ((x) > (y) ? (x) : (y)) /* * Min * Return the minimum of two numbers. */ #define Min(x, y) ((x) < (y) ? (x) : (y)) /* * Abs * Return the absolute value of the argument. */ #define Abs(x) ((x) >= 0 ? (x) : -(x)) /* Get a bit mask of the bits set in non-long aligned addresses */ #define LONG_ALIGN_MASK (sizeof(long) - 1) /* * MemSet * Exactly the same as standard library function memset(), but considerably * faster for zeroing small word-aligned structures (such as parsetree nodes). * This has to be a macro because the main point is to avoid function-call * overhead. However, we have also found that the loop is faster than * native libc memset() on some platforms, even those with assembler * memset() functions. More research needs to be done, perhaps with * MEMSET_LOOP_LIMIT tests in configure. */ #define MemSet(start, val, len) \ do \ { \ /* must be void* because we don't know if it is integer aligned yet */ \ void *_vstart = (void *) (start); \ int _val = (val); \ Size _len = (len); \ \ if ((((uintptr_t) _vstart) & LONG_ALIGN_MASK) == 0 && \ (_len & LONG_ALIGN_MASK) == 0 && \ _val == 0 && \ _len <= MEMSET_LOOP_LIMIT && \ /* \ * If MEMSET_LOOP_LIMIT == 0, optimizer should find \ * the whole "if" false at compile time. \ */ \ MEMSET_LOOP_LIMIT != 0) \ { \ long *_start = (long *) _vstart; \ long *_stop = (long *) ((char *) _start + _len); \ while (_start < _stop) \ *_start++ = 0; \ } \ else \ memset(_vstart, _val, _len); \ } while (0) /* * MemSetAligned is the same as MemSet except it omits the test to see if * "start" is word-aligned. This is okay to use if the caller knows a-priori * that the pointer is suitably aligned (typically, because he just got it * from palloc(), which always delivers a max-aligned pointer). */ #define MemSetAligned(start, val, len) \ do \ { \ long *_start = (long *) (start); \ int _val = (val); \ Size _len = (len); \ \ if ((_len & LONG_ALIGN_MASK) == 0 && \ _val == 0 && \ _len <= MEMSET_LOOP_LIMIT && \ MEMSET_LOOP_LIMIT != 0) \ { \ long *_stop = (long *) ((char *) _start + _len); \ while (_start < _stop) \ *_start++ = 0; \ } \ else \ memset(_start, _val, _len); \ } while (0) /* * MemSetTest/MemSetLoop are a variant version that allow all the tests in * MemSet to be done at compile time in cases where "val" and "len" are * constants *and* we know the "start" pointer must be word-aligned. * If MemSetTest succeeds, then it is okay to use MemSetLoop, otherwise use * MemSetAligned. Beware of multiple evaluations of the arguments when using * this approach. */ #define MemSetTest(val, len) \ ( ((len) & LONG_ALIGN_MASK) == 0 && \ (len) <= MEMSET_LOOP_LIMIT && \ MEMSET_LOOP_LIMIT != 0 && \ (val) == 0 ) #define MemSetLoop(start, val, len) \ do \ { \ long * _start = (long *) (start); \ long * _stop = (long *) ((char *) _start + (Size) (len)); \ \ while (_start < _stop) \ *_start++ = 0; \ } while (0) /* * Macros for range-checking float values before converting to integer. * We must be careful here that the boundary values are expressed exactly * in the float domain. PG_INTnn_MIN is an exact power of 2, so it will * be represented exactly; but PG_INTnn_MAX isn't, and might get rounded * off, so avoid using that. * The input must be rounded to an integer beforehand, typically with rint(), * else we might draw the wrong conclusion about close-to-the-limit values. * These macros will do the right thing for Inf, but not necessarily for NaN, * so check isnan(num) first if that's a possibility. */ #define FLOAT4_FITS_IN_INT16(num) \ ((num) >= (float4) PG_INT16_MIN && (num) < -((float4) PG_INT16_MIN)) #define FLOAT4_FITS_IN_INT32(num) \ ((num) >= (float4) PG_INT32_MIN && (num) < -((float4) PG_INT32_MIN)) #define FLOAT4_FITS_IN_INT64(num) \ ((num) >= (float4) PG_INT64_MIN && (num) < -((float4) PG_INT64_MIN)) #define FLOAT8_FITS_IN_INT16(num) \ ((num) >= (float8) PG_INT16_MIN && (num) < -((float8) PG_INT16_MIN)) #define FLOAT8_FITS_IN_INT32(num) \ ((num) >= (float8) PG_INT32_MIN && (num) < -((float8) PG_INT32_MIN)) #define FLOAT8_FITS_IN_INT64(num) \ ((num) >= (float8) PG_INT64_MIN && (num) < -((float8) PG_INT64_MIN)) /* ---------------------------------------------------------------- * Section 8: random stuff * ---------------------------------------------------------------- */ #ifdef HAVE_STRUCT_SOCKADDR_UN #define HAVE_UNIX_SOCKETS 1 #endif /* * Invert the sign of a qsort-style comparison result, ie, exchange negative * and positive integer values, being careful not to get the wrong answer * for INT_MIN. The argument should be an integral variable. */ #define INVERT_COMPARE_RESULT(var) \ ((var) = ((var) < 0) ? 1 : -(var)) /* * Use this, not "char buf[BLCKSZ]", to declare a field or local variable * holding a page buffer, if that page might be accessed as a page and not * just a string of bytes. Otherwise the variable might be under-aligned, * causing problems on alignment-picky hardware. (In some places, we use * this to declare buffers even though we only pass them to read() and * write(), because copying to/from aligned buffers is usually faster than * using unaligned buffers.) We include both "double" and "int64" in the * union to ensure that the compiler knows the value must be MAXALIGN'ed * (cf. configure's computation of MAXIMUM_ALIGNOF). */ typedef union PGAlignedBlock { char data[BLCKSZ]; double force_align_d; int64 force_align_i64; } PGAlignedBlock; /* Same, but for an XLOG_BLCKSZ-sized buffer */ typedef union PGAlignedXLogBlock { char data[XLOG_BLCKSZ]; double force_align_d; int64 force_align_i64; } PGAlignedXLogBlock; /* msb for char */ #define HIGHBIT (0x80) #define IS_HIGHBIT_SET(ch) ((unsigned char)(ch) & HIGHBIT) /* * Support macros for escaping strings. escape_backslash should be true * if generating a non-standard-conforming string. Prefixing a string * with ESCAPE_STRING_SYNTAX guarantees it is non-standard-conforming. * Beware of multiple evaluation of the "ch" argument! */ #define SQL_STR_DOUBLE(ch, escape_backslash) \ ((ch) == '\'' || ((ch) == '\\' && (escape_backslash))) #define ESCAPE_STRING_SYNTAX 'E' #define STATUS_OK (0) #define STATUS_ERROR (-1) #define STATUS_EOF (-2) /* * 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(HAVE__BUILTIN_TYPES_COMPATIBLE_P) #define unconstify(underlying_type, expr) \ (StaticAssertExpr(__builtin_types_compatible_p(__typeof(expr), const underlying_type), \ "wrong cast"), \ (underlying_type) (expr)) #define unvolatize(underlying_type, expr) \ (StaticAssertExpr(__builtin_types_compatible_p(__typeof(expr), volatile underlying_type), \ "wrong cast"), \ (underlying_type) (expr)) #else #define unconstify(underlying_type, expr) \ ((underlying_type) (expr)) #define unvolatize(underlying_type, expr) \ ((underlying_type) (expr)) #endif /* ---------------------------------------------------------------- * Section 9: system-specific hacks * * This should be limited to things that absolutely have to be * included in every source file. The port-specific header file * is usually a better place for this sort of thing. * ---------------------------------------------------------------- */ /* * NOTE: this is also used for opening text files. * WIN32 treats Control-Z as EOF in files opened in text mode. * Therefore, we open files in binary mode on Win32 so we can read * literal control-Z. The other affect is that we see CRLF, but * that is OK because we can already handle those cleanly. */ #if defined(WIN32) || defined(__CYGWIN__) #define PG_BINARY O_BINARY #define PG_BINARY_A "ab" #define PG_BINARY_R "rb" #define PG_BINARY_W "wb" #else #define PG_BINARY 0 #define PG_BINARY_A "a" #define PG_BINARY_R "r" #define PG_BINARY_W "w" #endif /* * Provide prototypes for routines not present in a particular machine's * standard C library. */ #if defined(HAVE_FDATASYNC) && !HAVE_DECL_FDATASYNC extern int fdatasync(int fildes); #endif /* Older platforms may provide strto[u]ll functionality under other names */ #if !defined(HAVE_STRTOLL) && defined(HAVE___STRTOLL) #define strtoll __strtoll #define HAVE_STRTOLL 1 #endif #if !defined(HAVE_STRTOLL) && defined(HAVE_STRTOQ) #define strtoll strtoq #define HAVE_STRTOLL 1 #endif #if !defined(HAVE_STRTOULL) && defined(HAVE___STRTOULL) #define strtoull __strtoull #define HAVE_STRTOULL 1 #endif #if !defined(HAVE_STRTOULL) && defined(HAVE_STRTOUQ) #define strtoull strtouq #define HAVE_STRTOULL 1 #endif #if defined(HAVE_STRTOLL) && !HAVE_DECL_STRTOLL extern long long strtoll(const char *str, char **endptr, int base); #endif #if defined(HAVE_STRTOULL) && !HAVE_DECL_STRTOULL extern unsigned long long strtoull(const char *str, char **endptr, int base); #endif /* * 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 /* * 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. (Usually, * this is not necessary because our build process automatically exports * such symbols, but sometimes manual marking is required.) * No special marking is required on most ports. */ #ifndef PGDLLEXPORT #define PGDLLEXPORT #endif /* * The following is used as the arg list for signal handlers. Any ports * that take something other than an int argument should override this in * their pg_config_os.h file. Note that variable names are required * because it is used in both the prototypes as well as the definitions. * Note also the long name. We expect that this won't collide with * other names causing compiler warnings. */ #ifndef SIGNAL_ARGS #define SIGNAL_ARGS int postgres_signal_arg #endif /* * When there is no sigsetjmp, its functionality is provided by plain * setjmp. 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 */ /* EXEC_BACKEND defines */ #ifdef EXEC_BACKEND #define NON_EXEC_STATIC #else #define NON_EXEC_STATIC static #endif /* /port compatibility functions */ #include "port.h" #endif /* C_H */ #undef StaticAssertDecl #define StaticAssertDecl(condition, errmessage) pg_query-4.2.3/ext/pg_query/include/tsearch/0000755000004100000410000000000014510636647021126 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/tsearch/ts_cache.h0000644000004100000410000000411514510636647023051 0ustar www-datawww-data/*------------------------------------------------------------------------- * * ts_cache.h * Tsearch related object caches. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tsearch/ts_cache.h * *------------------------------------------------------------------------- */ #ifndef TS_CACHE_H #define TS_CACHE_H #include "utils/guc.h" /* * All TS*CacheEntry structs must share this common header * (see InvalidateTSCacheCallBack) */ typedef struct TSAnyCacheEntry { Oid objId; bool isvalid; } TSAnyCacheEntry; typedef struct TSParserCacheEntry { /* prsId is the hash lookup key and MUST BE FIRST */ Oid prsId; /* OID of the parser */ bool isvalid; Oid startOid; Oid tokenOid; Oid endOid; Oid headlineOid; Oid lextypeOid; /* * Pre-set-up fmgr call of most needed parser's methods */ FmgrInfo prsstart; FmgrInfo prstoken; FmgrInfo prsend; FmgrInfo prsheadline; } TSParserCacheEntry; typedef struct TSDictionaryCacheEntry { /* dictId is the hash lookup key and MUST BE FIRST */ Oid dictId; bool isvalid; /* most frequent fmgr call */ Oid lexizeOid; FmgrInfo lexize; MemoryContext dictCtx; /* memory context to store private data */ void *dictData; } TSDictionaryCacheEntry; typedef struct { int len; Oid *dictIds; } ListDictionary; typedef struct { /* cfgId is the hash lookup key and MUST BE FIRST */ Oid cfgId; bool isvalid; Oid prsId; int lenmap; ListDictionary *map; } TSConfigCacheEntry; /* * GUC variable for current configuration */ extern 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); extern bool check_TSCurrentConfig(char **newval, void **extra, GucSource source); extern void assign_TSCurrentConfig(const char *newval, void *extra); #endif /* TS_CACHE_H */ pg_query-4.2.3/ext/pg_query/include/pg_query.h0000644000004100000410000000660614510636647021511 0ustar www-datawww-data#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; #ifdef __cplusplus extern "C" { #endif PgQueryNormalizeResult pg_query_normalize(const char* input); PgQueryScanResult pg_query_scan(const char* input); PgQueryParseResult pg_query_parse(const char* input); PgQueryProtobufParseResult pg_query_parse_protobuf(const char* input); PgQueryPlpgsqlParseResult pg_query_parse_plpgsql(const char* input); PgQueryFingerprintResult pg_query_fingerprint(const char* input); // Use pg_query_split_with_scanner when you need to split statements that may // contain parse errors, otherwise pg_query_split_with_parser is recommended // for improved accuracy due the parser adding additional token handling. // // Note that we try to support special cases like comments, strings containing // ";" on both, as well as oddities like "CREATE RULE .. (SELECT 1; SELECT 2);" // which is treated as as single statement. PgQuerySplitResult pg_query_split_with_scanner(const char *input); PgQuerySplitResult pg_query_split_with_parser(const char *input); PgQueryDeparseResult pg_query_deparse_protobuf(PgQueryProtobuf parse_tree); void pg_query_free_normalize_result(PgQueryNormalizeResult result); void pg_query_free_scan_result(PgQueryScanResult result); void pg_query_free_parse_result(PgQueryParseResult result); void pg_query_free_split_result(PgQuerySplitResult result); void pg_query_free_deparse_result(PgQueryDeparseResult result); void pg_query_free_protobuf_parse_result(PgQueryProtobufParseResult result); void pg_query_free_plpgsql_parse_result(PgQueryPlpgsqlParseResult result); void pg_query_free_fingerprint_result(PgQueryFingerprintResult result); // Optional, cleans up the top-level memory context (automatically done for threads that exit) void pg_query_exit(void); // Postgres version information #define PG_MAJORVERSION "15" #define PG_VERSION "15.1" #define PG_VERSION_NUM 150001 // 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 pg_query-4.2.3/ext/pg_query/include/mb/0000755000004100000410000000000014510636647020073 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/mb/stringinfo_mb.h0000644000004100000410000000123314510636647023103 0ustar www-datawww-data/*------------------------------------------------------------------------- * * stringinfo_mb.h * multibyte support for StringInfo * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/mb/pg_wchar.h0000644000004100000410000006762014510636647022051 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_wchar.h * multibyte-character support * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/mb/pg_wchar.h * * NOTES * This is used both by the backend and by frontends, but should not be * included by libpq client programs. In particular, a libpq client * should not assume that the encoding IDs used by the version of libpq * it's linked to match up with the IDs declared here. * *------------------------------------------------------------------------- */ #ifndef PG_WCHAR_H #define PG_WCHAR_H /* * The pg_wchar type */ typedef unsigned int pg_wchar; /* * Maximum byte length of multibyte characters in any backend encoding */ #define MAX_MULTIBYTE_CHAR_LEN 4 /* * various definitions for EUC */ #define SS2 0x8e /* single shift 2 (JIS0201) */ #define SS3 0x8f /* single shift 3 (JIS0212) */ /* * SJIS validation macros */ #define ISSJISHEAD(c) (((c) >= 0x81 && (c) <= 0x9f) || ((c) >= 0xe0 && (c) <= 0xfc)) #define ISSJISTAIL(c) (((c) >= 0x40 && (c) <= 0x7e) || ((c) >= 0x80 && (c) <= 0xfc)) /*---------------------------------------------------- * MULE Internal Encoding (MIC) * * This encoding follows the design used within XEmacs; it is meant to * subsume many externally-defined character sets. Each character includes * identification of the character set it belongs to, so the encoding is * general but somewhat bulky. * * Currently PostgreSQL supports 5 types of MULE character sets: * * 1) 1-byte ASCII characters. Each byte is below 0x80. * * 2) "Official" single byte charsets such as ISO-8859-1 (Latin1). * Each MULE character consists of 2 bytes: LC1 + C1, where LC1 is * an identifier for the charset (in the range 0x81 to 0x8d) and C1 * is the character code (in the range 0xa0 to 0xff). * * 3) "Private" single byte charsets such as SISHENG. Each MULE * character consists of 3 bytes: LCPRV1 + LC12 + C1, where LCPRV1 * is a private-charset flag, LC12 is an identifier for the charset, * and C1 is the character code (in the range 0xa0 to 0xff). * LCPRV1 is either 0x9a (if LC12 is in the range 0xa0 to 0xdf) * or 0x9b (if LC12 is in the range 0xe0 to 0xef). * * 4) "Official" multibyte charsets such as JIS X0208. Each MULE * character consists of 3 bytes: LC2 + C1 + C2, where LC2 is * an identifier for the charset (in the range 0x90 to 0x99) and C1 * and C2 form the character code (each in the range 0xa0 to 0xff). * * 5) "Private" multibyte charsets such as CNS 11643-1992 Plane 3. * Each MULE character consists of 4 bytes: LCPRV2 + LC22 + C1 + C2, * where LCPRV2 is a private-charset flag, LC22 is an identifier for * the charset, and C1 and C2 form the character code (each in the range * 0xa0 to 0xff). LCPRV2 is either 0x9c (if LC22 is in the range 0xf0 * to 0xf4) or 0x9d (if LC22 is in the range 0xf5 to 0xfe). * * "Official" encodings are those that have been assigned code numbers by * the XEmacs project; "private" encodings have Postgres-specific charset * identifiers. * * See the "XEmacs Internals Manual", available at http://www.xemacs.org, * for more details. Note that for historical reasons, Postgres' * private-charset flag values do not match what XEmacs says they should be, * so this isn't really exactly MULE (not that private charsets would be * interoperable anyway). * * Note that XEmacs's implementation is different from what emacs does. * We follow emacs's implementation, rather than XEmacs's. *---------------------------------------------------- */ /* * Charset identifiers (also called "leading bytes" in the MULE documentation) */ /* * Charset IDs for official single byte encodings (0x81-0x8e) */ #define LC_ISO8859_1 0x81 /* ISO8859 Latin 1 */ #define LC_ISO8859_2 0x82 /* ISO8859 Latin 2 */ #define LC_ISO8859_3 0x83 /* ISO8859 Latin 3 */ #define LC_ISO8859_4 0x84 /* ISO8859 Latin 4 */ #define LC_TIS620 0x85 /* Thai (not supported yet) */ #define LC_ISO8859_7 0x86 /* Greek (not supported yet) */ #define LC_ISO8859_6 0x87 /* Arabic (not supported yet) */ #define LC_ISO8859_8 0x88 /* Hebrew (not supported yet) */ #define LC_JISX0201K 0x89 /* Japanese 1 byte kana */ #define LC_JISX0201R 0x8a /* Japanese 1 byte Roman */ /* Note that 0x8b seems to be unused as of Emacs 20.7. * However, there might be a chance that 0x8b could be used * in later versions of Emacs. */ #define LC_KOI8_R 0x8b /* Cyrillic KOI8-R */ #define LC_ISO8859_5 0x8c /* ISO8859 Cyrillic */ #define LC_ISO8859_9 0x8d /* ISO8859 Latin 5 (not supported yet) */ #define LC_ISO8859_15 0x8e /* ISO8859 Latin 15 (not supported yet) */ /* #define CONTROL_1 0x8f control characters (unused) */ /* Is a leading byte for "official" single byte encodings? */ #define IS_LC1(c) ((unsigned char)(c) >= 0x81 && (unsigned char)(c) <= 0x8d) /* * Charset IDs for official multibyte encodings (0x90-0x99) * 0x9a-0x9d are free. 0x9e and 0x9f are reserved. */ #define LC_JISX0208_1978 0x90 /* Japanese Kanji, old JIS (not supported) */ #define LC_GB2312_80 0x91 /* Chinese */ #define LC_JISX0208 0x92 /* Japanese Kanji (JIS X 0208) */ #define LC_KS5601 0x93 /* Korean */ #define LC_JISX0212 0x94 /* Japanese Kanji (JIS X 0212) */ #define LC_CNS11643_1 0x95 /* CNS 11643-1992 Plane 1 */ #define LC_CNS11643_2 0x96 /* CNS 11643-1992 Plane 2 */ #define LC_JISX0213_1 0x97 /* Japanese Kanji (JIS X 0213 Plane 1) * (not supported) */ #define LC_BIG5_1 0x98 /* Plane 1 Chinese traditional (not * supported) */ #define LC_BIG5_2 0x99 /* Plane 1 Chinese traditional (not * supported) */ /* Is a leading byte for "official" multibyte encodings? */ #define IS_LC2(c) ((unsigned char)(c) >= 0x90 && (unsigned char)(c) <= 0x99) /* * Postgres-specific prefix bytes for "private" single byte encodings * (According to the MULE docs, we should be using 0x9e for this) */ #define LCPRV1_A 0x9a #define LCPRV1_B 0x9b #define IS_LCPRV1(c) ((unsigned char)(c) == LCPRV1_A || (unsigned char)(c) == LCPRV1_B) #define IS_LCPRV1_A_RANGE(c) \ ((unsigned char)(c) >= 0xa0 && (unsigned char)(c) <= 0xdf) #define IS_LCPRV1_B_RANGE(c) \ ((unsigned char)(c) >= 0xe0 && (unsigned char)(c) <= 0xef) /* * Postgres-specific prefix bytes for "private" multibyte encodings * (According to the MULE docs, we should be using 0x9f for this) */ #define LCPRV2_A 0x9c #define LCPRV2_B 0x9d #define IS_LCPRV2(c) ((unsigned char)(c) == LCPRV2_A || (unsigned char)(c) == LCPRV2_B) #define IS_LCPRV2_A_RANGE(c) \ ((unsigned char)(c) >= 0xf0 && (unsigned char)(c) <= 0xf4) #define IS_LCPRV2_B_RANGE(c) \ ((unsigned char)(c) >= 0xf5 && (unsigned char)(c) <= 0xfe) /* * Charset IDs for private single byte encodings (0xa0-0xef) */ #define LC_SISHENG 0xa0 /* Chinese SiSheng characters for * PinYin/ZhuYin (not supported) */ #define LC_IPA 0xa1 /* IPA (International Phonetic * Association) (not supported) */ #define LC_VISCII_LOWER 0xa2 /* Vietnamese VISCII1.1 lower-case (not * supported) */ #define LC_VISCII_UPPER 0xa3 /* Vietnamese VISCII1.1 upper-case (not * supported) */ #define LC_ARABIC_DIGIT 0xa4 /* Arabic digit (not supported) */ #define LC_ARABIC_1_COLUMN 0xa5 /* Arabic 1-column (not supported) */ #define LC_ASCII_RIGHT_TO_LEFT 0xa6 /* ASCII (left half of ISO8859-1) with * right-to-left direction (not * supported) */ #define LC_LAO 0xa7 /* Lao characters (ISO10646 0E80..0EDF) * (not supported) */ #define LC_ARABIC_2_COLUMN 0xa8 /* Arabic 1-column (not supported) */ /* * Charset IDs for private multibyte encodings (0xf0-0xff) */ #define LC_INDIAN_1_COLUMN 0xf0 /* Indian charset for 1-column width * glyphs (not supported) */ #define LC_TIBETAN_1_COLUMN 0xf1 /* Tibetan 1-column width glyphs (not * supported) */ #define LC_UNICODE_SUBSET_2 0xf2 /* Unicode characters of the range * U+2500..U+33FF. (not supported) */ #define LC_UNICODE_SUBSET_3 0xf3 /* Unicode characters of the range * U+E000..U+FFFF. (not supported) */ #define LC_UNICODE_SUBSET 0xf4 /* Unicode characters of the range * U+0100..U+24FF. (not supported) */ #define LC_ETHIOPIC 0xf5 /* Ethiopic characters (not supported) */ #define LC_CNS11643_3 0xf6 /* CNS 11643-1992 Plane 3 */ #define LC_CNS11643_4 0xf7 /* CNS 11643-1992 Plane 4 */ #define LC_CNS11643_5 0xf8 /* CNS 11643-1992 Plane 5 */ #define LC_CNS11643_6 0xf9 /* CNS 11643-1992 Plane 6 */ #define LC_CNS11643_7 0xfa /* CNS 11643-1992 Plane 7 */ #define LC_INDIAN_2_COLUMN 0xfb /* Indian charset for 2-column width * glyphs (not supported) */ #define LC_TIBETAN 0xfc /* Tibetan (not supported) */ /* #define FREE 0xfd free (unused) */ /* #define FREE 0xfe free (unused) */ /* #define FREE 0xff free (unused) */ /*---------------------------------------------------- * end of MULE stuff *---------------------------------------------------- */ /* * PostgreSQL encoding identifiers * * WARNING: the order of this enum must be same as order of entries * in the pg_enc2name_tbl[] array (in src/common/encnames.c), and * in the pg_wchar_table[] array (in src/common/wchar.c)! * * If you add some encoding don't forget to check * PG_ENCODING_BE_LAST macro. * * PG_SQL_ASCII is default encoding and must be = 0. * * XXX We must avoid renumbering any backend encoding until libpq's major * version number is increased beyond 5; it turns out that the backend * encoding IDs are effectively part of libpq's ABI as far as 8.2 initdb and * psql are concerned. */ typedef enum pg_enc { PG_SQL_ASCII = 0, /* SQL/ASCII */ PG_EUC_JP, /* EUC for Japanese */ PG_EUC_CN, /* EUC for Chinese */ PG_EUC_KR, /* EUC for Korean */ PG_EUC_TW, /* EUC for Taiwan */ PG_EUC_JIS_2004, /* EUC-JIS-2004 */ PG_UTF8, /* Unicode UTF8 */ PG_MULE_INTERNAL, /* Mule internal code */ PG_LATIN1, /* ISO-8859-1 Latin 1 */ PG_LATIN2, /* ISO-8859-2 Latin 2 */ PG_LATIN3, /* ISO-8859-3 Latin 3 */ PG_LATIN4, /* ISO-8859-4 Latin 4 */ PG_LATIN5, /* ISO-8859-9 Latin 5 */ PG_LATIN6, /* ISO-8859-10 Latin6 */ PG_LATIN7, /* ISO-8859-13 Latin7 */ PG_LATIN8, /* ISO-8859-14 Latin8 */ PG_LATIN9, /* ISO-8859-15 Latin9 */ PG_LATIN10, /* ISO-8859-16 Latin10 */ PG_WIN1256, /* windows-1256 */ PG_WIN1258, /* Windows-1258 */ PG_WIN866, /* (MS-DOS CP866) */ PG_WIN874, /* windows-874 */ PG_KOI8R, /* KOI8-R */ PG_WIN1251, /* windows-1251 */ PG_WIN1252, /* windows-1252 */ PG_ISO_8859_5, /* ISO-8859-5 */ PG_ISO_8859_6, /* ISO-8859-6 */ PG_ISO_8859_7, /* ISO-8859-7 */ PG_ISO_8859_8, /* ISO-8859-8 */ PG_WIN1250, /* windows-1250 */ PG_WIN1253, /* windows-1253 */ PG_WIN1254, /* windows-1254 */ PG_WIN1255, /* windows-1255 */ PG_WIN1257, /* windows-1257 */ PG_KOI8U, /* KOI8-U */ /* PG_ENCODING_BE_LAST points to the above entry */ /* followings are for client encoding only */ PG_SJIS, /* Shift JIS (Windows-932) */ PG_BIG5, /* Big5 (Windows-950) */ PG_GBK, /* GBK (Windows-936) */ PG_UHC, /* UHC (Windows-949) */ PG_GB18030, /* GB18030 */ PG_JOHAB, /* EUC for Korean JOHAB */ PG_SHIFT_JIS_2004, /* Shift-JIS-2004 */ _PG_LAST_ENCODING_ /* mark only */ } pg_enc; #define PG_ENCODING_BE_LAST PG_KOI8U /* * Please use these tests before access to pg_enc2name_tbl[] * or to other places... */ #define PG_VALID_BE_ENCODING(_enc) \ ((_enc) >= 0 && (_enc) <= PG_ENCODING_BE_LAST) #define PG_ENCODING_IS_CLIENT_ONLY(_enc) \ ((_enc) > PG_ENCODING_BE_LAST && (_enc) < _PG_LAST_ENCODING_) #define PG_VALID_ENCODING(_enc) \ ((_enc) >= 0 && (_enc) < _PG_LAST_ENCODING_) /* On FE are possible all encodings */ #define PG_VALID_FE_ENCODING(_enc) PG_VALID_ENCODING(_enc) /* * When converting strings between different encodings, we assume that space * for converted result is 4-to-1 growth in the worst case. The rate for * currently supported encoding pairs are within 3 (SJIS JIS X0201 half width * 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 */ typedef struct pg_enc2gettext { pg_enc encoding; const char *name; } pg_enc2gettext; extern PGDLLIMPORT const pg_enc2gettext pg_enc2gettext_tbl[]; /* * pg_wchar stuff */ typedef int (*mb2wchar_with_len_converter) (const unsigned char *from, pg_wchar *to, int len); typedef int (*wchar2mb_with_len_converter) (const pg_wchar *from, unsigned char *to, int len); typedef int (*mblen_converter) (const unsigned char *mbstr); typedef int (*mbdisplaylen_converter) (const unsigned char *mbstr); typedef bool (*mbcharacter_incrementer) (unsigned char *mbstr, int len); typedef int (*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); } /* * These functions are considered part of libpq's exported API and * are also declared in libpq-fe.h. */ extern int pg_char_to_encoding(const char *name); extern const char *pg_encoding_to_char(int encoding); extern int pg_valid_server_encoding_id(int encoding); /* * These functions are available to frontend code that links with libpgcommon * (in addition to the ones just above). The constant tables declared * earlier in this file are also available from libpgcommon. */ extern int pg_encoding_mblen(int encoding, const char *mbstr); extern int pg_encoding_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 *wstr); extern int pg_mblen(const char *mbstr); extern int pg_dsplen(const char *mbstr); extern int pg_mbstrlen(const char *mbstr); extern int pg_mbstrlen_with_len(const char *mbstr, int len); extern int pg_mbcliplen(const char *mbstr, int len, int limit); extern int pg_encoding_mbcliplen(int encoding, const char *mbstr, int len, int limit); extern int pg_mbcharcliplen(const char *mbstr, int len, int limit); extern int pg_database_encoding_max_length(void); extern mbcharacter_incrementer pg_database_encoding_character_incrementer(void); extern int PrepareClientEncoding(int encoding); extern int SetClientEncoding(int encoding); extern void InitializeClientEncoding(void); extern int pg_get_client_encoding(void); extern const char *pg_get_client_encoding_name(void); extern void SetDatabaseEncoding(int encoding); extern int GetDatabaseEncoding(void); extern const char *GetDatabaseEncodingName(void); extern void SetMessageEncoding(int encoding); extern int GetMessageEncoding(void); #ifdef ENABLE_NLS extern int pg_bind_textdomain_codeset(const char *domainname); #endif extern unsigned char *pg_do_encoding_conversion(unsigned char *src, int len, int src_encoding, int dest_encoding); extern int pg_do_encoding_conversion_buf(Oid proc, int src_encoding, int dest_encoding, unsigned char *src, int srclen, unsigned char *dst, int dstlen, 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 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 /* * 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 8. */ static inline bool is_valid_ascii(const unsigned char *s, int len) { uint64 chunk, highbit_cum = UINT64CONST(0), zero_cum = UINT64CONST(0x8080808080808080); Assert(len % sizeof(chunk) == 0); while (len > 0) { memcpy(&chunk, s, sizeof(chunk)); /* * Capture any zero bytes in this chunk. * * 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 + UINT64CONST(0x7f7f7f7f7f7f7f7f)); /* Capture any set bits in this chunk. */ highbit_cum |= chunk; s += sizeof(chunk); len -= sizeof(chunk); } /* Check if any high bits in the high bit accumulator got set. */ if (highbit_cum & UINT64CONST(0x8080808080808080)) return false; /* Check if any high bits in the zero accumulator got cleared. */ if (zero_cum != UINT64CONST(0x8080808080808080)) return false; return true; } #endif /* PG_WCHAR_H */ pg_query-4.2.3/ext/pg_query/include/pl_reserved_kwlist.h0000644000004100000410000000307014510636647023555 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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) pg_query-4.2.3/ext/pg_query/include/utils/0000755000004100000410000000000014510636647020635 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/utils/wait_event.h0000644000004100000410000002063314510636647023157 0ustar www-datawww-data/*------------------------------------------------------------------------- * wait_event.h * Definitions related to wait event reporting * * Copyright (c) 2001-2022, 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_BUFFER_PIN 0x04000000U #define PG_WAIT_ACTIVITY 0x05000000U #define PG_WAIT_CLIENT 0x06000000U #define PG_WAIT_EXTENSION 0x07000000U #define PG_WAIT_IPC 0x08000000U #define PG_WAIT_TIMEOUT 0x09000000U #define PG_WAIT_IO 0x0A000000U /* ---------- * Wait Events - Activity * * Use this category when a process is waiting because it has no work to do, * unless the "Client" or "Timeout" category describes the situation better. * Typically, this should only be used for background processes. * ---------- */ typedef enum { WAIT_EVENT_ARCHIVER_MAIN = PG_WAIT_ACTIVITY, WAIT_EVENT_AUTOVACUUM_MAIN, WAIT_EVENT_BGWRITER_HIBERNATE, WAIT_EVENT_BGWRITER_MAIN, WAIT_EVENT_CHECKPOINTER_MAIN, WAIT_EVENT_LOGICAL_APPLY_MAIN, WAIT_EVENT_LOGICAL_LAUNCHER_MAIN, WAIT_EVENT_RECOVERY_WAL_STREAM, WAIT_EVENT_SYSLOGGER_MAIN, WAIT_EVENT_WAL_RECEIVER_MAIN, WAIT_EVENT_WAL_SENDER_MAIN, WAIT_EVENT_WAL_WRITER_MAIN } WaitEventActivity; /* ---------- * Wait Events - Client * * Use this category when a process is waiting to send data to or receive data * from the frontend process to which it is connected. This is never used for * a background process, which has no client connection. * ---------- */ typedef enum { WAIT_EVENT_CLIENT_READ = PG_WAIT_CLIENT, WAIT_EVENT_CLIENT_WRITE, WAIT_EVENT_GSS_OPEN_SERVER, WAIT_EVENT_LIBPQWALRECEIVER_CONNECT, WAIT_EVENT_LIBPQWALRECEIVER_RECEIVE, WAIT_EVENT_SSL_OPEN_SERVER, WAIT_EVENT_WAL_SENDER_WAIT_WAL, WAIT_EVENT_WAL_SENDER_WRITE_DATA, } WaitEventClient; /* ---------- * Wait Events - IPC * * Use this category when a process cannot complete the work it is doing because * it is waiting for a notification from another process. * ---------- */ typedef enum { WAIT_EVENT_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_DONE, WAIT_EVENT_CHECKPOINT_START, WAIT_EVENT_EXECUTE_GATHER, WAIT_EVENT_HASH_BATCH_ALLOCATE, WAIT_EVENT_HASH_BATCH_ELECT, WAIT_EVENT_HASH_BATCH_LOAD, WAIT_EVENT_HASH_BUILD_ALLOCATE, WAIT_EVENT_HASH_BUILD_ELECT, WAIT_EVENT_HASH_BUILD_HASH_INNER, WAIT_EVENT_HASH_BUILD_HASH_OUTER, WAIT_EVENT_HASH_GROW_BATCHES_ALLOCATE, WAIT_EVENT_HASH_GROW_BATCHES_DECIDE, WAIT_EVENT_HASH_GROW_BATCHES_ELECT, WAIT_EVENT_HASH_GROW_BATCHES_FINISH, WAIT_EVENT_HASH_GROW_BATCHES_REPARTITION, WAIT_EVENT_HASH_GROW_BUCKETS_ALLOCATE, WAIT_EVENT_HASH_GROW_BUCKETS_ELECT, WAIT_EVENT_HASH_GROW_BUCKETS_REINSERT, WAIT_EVENT_LOGICAL_SYNC_DATA, WAIT_EVENT_LOGICAL_SYNC_STATE_CHANGE, WAIT_EVENT_MQ_INTERNAL, WAIT_EVENT_MQ_PUT_MESSAGE, WAIT_EVENT_MQ_RECEIVE, WAIT_EVENT_MQ_SEND, WAIT_EVENT_PARALLEL_BITMAP_SCAN, WAIT_EVENT_PARALLEL_CREATE_INDEX_SCAN, WAIT_EVENT_PARALLEL_FINISH, WAIT_EVENT_PROCARRAY_GROUP_UPDATE, WAIT_EVENT_PROC_SIGNAL_BARRIER, WAIT_EVENT_PROMOTE, WAIT_EVENT_RECOVERY_CONFLICT_SNAPSHOT, WAIT_EVENT_RECOVERY_CONFLICT_TABLESPACE, WAIT_EVENT_RECOVERY_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_XACT_GROUP_UPDATE } WaitEventIPC; /* ---------- * Wait Events - Timeout * * Use this category when a process is waiting for a timeout to expire. * ---------- */ typedef enum { WAIT_EVENT_BASE_BACKUP_THROTTLE = PG_WAIT_TIMEOUT, WAIT_EVENT_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_VACUUM_DELAY, WAIT_EVENT_VACUUM_TRUNCATE } WaitEventTimeout; /* ---------- * Wait Events - IO * * Use this category when a process is waiting for a IO. * ---------- */ typedef enum { WAIT_EVENT_BASEBACKUP_READ = PG_WAIT_IO, WAIT_EVENT_BASEBACKUP_SYNC, WAIT_EVENT_BASEBACKUP_WRITE, WAIT_EVENT_BUFFILE_READ, WAIT_EVENT_BUFFILE_WRITE, WAIT_EVENT_BUFFILE_TRUNCATE, WAIT_EVENT_CONTROL_FILE_READ, WAIT_EVENT_CONTROL_FILE_SYNC, WAIT_EVENT_CONTROL_FILE_SYNC_UPDATE, WAIT_EVENT_CONTROL_FILE_WRITE, WAIT_EVENT_CONTROL_FILE_WRITE_UPDATE, WAIT_EVENT_COPY_FILE_READ, WAIT_EVENT_COPY_FILE_WRITE, WAIT_EVENT_DATA_FILE_EXTEND, WAIT_EVENT_DATA_FILE_FLUSH, WAIT_EVENT_DATA_FILE_IMMEDIATE_SYNC, WAIT_EVENT_DATA_FILE_PREFETCH, WAIT_EVENT_DATA_FILE_READ, WAIT_EVENT_DATA_FILE_SYNC, WAIT_EVENT_DATA_FILE_TRUNCATE, WAIT_EVENT_DATA_FILE_WRITE, WAIT_EVENT_DSM_FILL_ZERO_WRITE, WAIT_EVENT_LOCK_FILE_ADDTODATADIR_READ, WAIT_EVENT_LOCK_FILE_ADDTODATADIR_SYNC, WAIT_EVENT_LOCK_FILE_ADDTODATADIR_WRITE, WAIT_EVENT_LOCK_FILE_CREATE_READ, WAIT_EVENT_LOCK_FILE_CREATE_SYNC, WAIT_EVENT_LOCK_FILE_CREATE_WRITE, WAIT_EVENT_LOCK_FILE_RECHECKDATADIR_READ, WAIT_EVENT_LOGICAL_REWRITE_CHECKPOINT_SYNC, WAIT_EVENT_LOGICAL_REWRITE_MAPPING_SYNC, WAIT_EVENT_LOGICAL_REWRITE_MAPPING_WRITE, WAIT_EVENT_LOGICAL_REWRITE_SYNC, WAIT_EVENT_LOGICAL_REWRITE_TRUNCATE, WAIT_EVENT_LOGICAL_REWRITE_WRITE, WAIT_EVENT_RELATION_MAP_READ, WAIT_EVENT_RELATION_MAP_SYNC, WAIT_EVENT_RELATION_MAP_WRITE, WAIT_EVENT_REORDER_BUFFER_READ, WAIT_EVENT_REORDER_BUFFER_WRITE, WAIT_EVENT_REORDER_LOGICAL_MAPPING_READ, WAIT_EVENT_REPLICATION_SLOT_READ, WAIT_EVENT_REPLICATION_SLOT_RESTORE_SYNC, WAIT_EVENT_REPLICATION_SLOT_SYNC, WAIT_EVENT_REPLICATION_SLOT_WRITE, WAIT_EVENT_SLRU_FLUSH_SYNC, WAIT_EVENT_SLRU_READ, WAIT_EVENT_SLRU_SYNC, WAIT_EVENT_SLRU_WRITE, WAIT_EVENT_SNAPBUILD_READ, WAIT_EVENT_SNAPBUILD_SYNC, WAIT_EVENT_SNAPBUILD_WRITE, WAIT_EVENT_TIMELINE_HISTORY_FILE_SYNC, WAIT_EVENT_TIMELINE_HISTORY_FILE_WRITE, WAIT_EVENT_TIMELINE_HISTORY_READ, WAIT_EVENT_TIMELINE_HISTORY_SYNC, WAIT_EVENT_TIMELINE_HISTORY_WRITE, WAIT_EVENT_TWOPHASE_FILE_READ, WAIT_EVENT_TWOPHASE_FILE_SYNC, WAIT_EVENT_TWOPHASE_FILE_WRITE, WAIT_EVENT_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_SYNC, WAIT_EVENT_WAL_SYNC_METHOD_ASSIGN, WAIT_EVENT_WAL_WRITE } WaitEventIO; 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; /* ---------- * 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 */ pg_query-4.2.3/ext/pg_query/include/utils/expandeddatum.h0000644000004100000410000001564314510636647023642 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/expandeddatum.h * *------------------------------------------------------------------------- */ #ifndef EXPANDEDDATUM_H #define EXPANDEDDATUM_H /* Size of an EXTERNAL datum that contains a pointer to an expanded object */ #define EXPANDED_POINTER_SIZE (VARHDRSZ_EXTERNAL + sizeof(varatt_expanded)) /* * "Methods" that must be provided for any expanded object. * * get_flat_size: compute space needed for flattened representation (total, * including header). * * flatten_into: construct flattened representation in the caller-allocated * space at *result, of size allocated_size (which will always be the result * of a preceding get_flat_size call; it's passed for cross-checking). * * The flattened representation must be a valid in-line, non-compressed, * 4-byte-header varlena object. * * Note: construction of a heap tuple from an expanded datum calls * get_flat_size twice, so it's worthwhile to make sure that that doesn't * incur too much overhead. */ typedef Size (*EOM_get_flat_size_method) (ExpandedObjectHeader *eohptr); typedef void (*EOM_flatten_into_method) (ExpandedObjectHeader *eohptr, void *result, Size allocated_size); /* Struct of function pointers for an expanded object's methods */ typedef struct ExpandedObjectMethods { EOM_get_flat_size_method get_flat_size; EOM_flatten_into_method flatten_into; } ExpandedObjectMethods; /* * Every expanded object must contain this header; typically the header * is embedded in some larger struct that adds type-specific fields. * * It is presumed that the header object and all subsidiary data are stored * in eoh_context, so that the object can be freed by deleting that context, * or its storage lifespan can be altered by reparenting the context. * (In principle the object could own additional resources, such as malloc'd * storage, and use a memory context reset callback to free them upon reset or * deletion of eoh_context.) * * We set up two TOAST pointers within the standard header, one read-write * and one read-only. This allows functions to return either kind of pointer * without making an additional allocation, and in particular without worrying * whether a separately palloc'd object would have sufficient lifespan. * But note that these pointers are just a convenience; a pointer object * appearing somewhere else would still be legal. * * The typedef declaration for this appears in postgres.h. */ struct ExpandedObjectHeader { /* Phony varlena header */ int32 vl_len_; /* always EOH_HEADER_MAGIC, see below */ /* Pointer to methods required for object type */ const ExpandedObjectMethods *eoh_methods; /* Memory context containing this header and subsidiary data */ MemoryContext eoh_context; /* Standard R/W TOAST pointer for this object is kept here */ char eoh_rw_ptr[EXPANDED_POINTER_SIZE]; /* Standard R/O TOAST pointer for this object is kept here */ char eoh_ro_ptr[EXPANDED_POINTER_SIZE]; }; /* * Particularly for read-only functions, it is handy to be able to work with * either regular "flat" varlena inputs or expanded inputs of the same data * type. To allow determining which case an argument-fetching function has * returned, the first int32 of an ExpandedObjectHeader always contains -1 * (EOH_HEADER_MAGIC to the code). This works since no 4-byte-header varlena * could have that as its first 4 bytes. Caution: we could not reliably tell * the difference between an ExpandedObjectHeader and a short-header object * with this trick. However, it works fine if the argument fetching code * always returns either a 4-byte-header flat object or an expanded object. */ #define EOH_HEADER_MAGIC (-1) #define VARATT_IS_EXPANDED_HEADER(PTR) \ (((varattrib_4b *) (PTR))->va_4byte.va_header == (uint32) EOH_HEADER_MAGIC) /* * Generic support functions for expanded objects. * (More of these might be worth inlining later.) */ #define EOHPGetRWDatum(eohptr) PointerGetDatum((eohptr)->eoh_rw_ptr) #define EOHPGetRODatum(eohptr) PointerGetDatum((eohptr)->eoh_ro_ptr) /* Does the Datum represent a writable expanded object? */ #define DatumIsReadWriteExpandedObject(d, isnull, typlen) \ (((isnull) || (typlen) != -1) ? false : \ VARATT_IS_EXTERNAL_EXPANDED_RW(DatumGetPointer(d))) #define MakeExpandedObjectReadOnly(d, isnull, typlen) \ (((isnull) || (typlen) != -1) ? (d) : \ MakeExpandedObjectReadOnlyInternal(d)) extern ExpandedObjectHeader *DatumGetEOHP(Datum d); extern void EOH_init_header(ExpandedObjectHeader *eohptr, const ExpandedObjectMethods *methods, MemoryContext obj_context); extern Size EOH_get_flat_size(ExpandedObjectHeader *eohptr); extern void EOH_flatten_into(ExpandedObjectHeader *eohptr, void *result, Size allocated_size); extern Datum MakeExpandedObjectReadOnlyInternal(Datum d); extern Datum TransferExpandedObject(Datum d, MemoryContext new_parent); extern void DeleteExpandedObject(Datum d); #endif /* EXPANDEDDATUM_H */ pg_query-4.2.3/ext/pg_query/include/utils/memdebug.h0000644000004100000410000000422414510636647022575 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/utils/rel.h0000644000004100000410000006046514510636647021603 0ustar www-datawww-data/*------------------------------------------------------------------------- * * rel.h * POSTGRES relation descriptor (a/k/a relcache entry) definitions. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/rel.h * *------------------------------------------------------------------------- */ #ifndef REL_H #define REL_H #include "access/tupdesc.h" #include "access/xlog.h" #include "catalog/pg_class.h" #include "catalog/pg_index.h" #include "catalog/pg_publication.h" #include "nodes/bitmapset.h" #include "partitioning/partdefs.h" #include "rewrite/prs2lock.h" #include "storage/block.h" #include "storage/relfilenode.h" #include "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 { RelFileNode rd_node; /* relation physical identifier */ SMgrRelation rd_smgr; /* cached file handle, or NULL */ int rd_refcnt; /* reference count */ BackendId rd_backend; /* owning backend id, if temporary relation */ bool rd_islocaltemp; /* rel is a temp rel of this session */ bool rd_isnailed; /* rel is nailed in cache */ bool rd_isvalid; /* relcache entry is valid */ bool rd_indexvalid; /* is rd_indexlist valid? (also rd_pkindex and * rd_replidindex) */ bool rd_statvalid; /* is rd_statlist valid? */ /*---------- * rd_createSubid is the ID of the highest subtransaction the rel has * survived into or zero if the rel or its rd_node was created before the * current top transaction. (IndexStmt.oldNode leads to the case of a new * rel with an old rd_node.) rd_firstRelfilenodeSubid is the ID of the * highest subtransaction an rd_node change has survived into or zero if * rd_node matches the value it had at the start of the current top * transaction. (Rolling back the subtransaction that * rd_firstRelfilenodeSubid denotes would restore rd_node to the value it * had at the start of the current top transaction. Rolling back any * lower subtransaction would not.) Their accuracy is critical to * RelationNeedsWAL(). * * rd_newRelfilenodeSubid is the ID of the highest subtransaction the * most-recent relfilenode change has survived into or zero if not changed * in the current transaction (or we have forgotten changing it). This * field is accurate when non-zero, but it can be zero when a relation has * multiple new relfilenodes within a single transaction, with one of them * occurring in a subsequently aborted subtransaction, e.g. * BEGIN; * TRUNCATE t; * SAVEPOINT save; * TRUNCATE t; * ROLLBACK TO save; * -- rd_newRelfilenodeSubid is now forgotten * * If every rd_*Subid field is zero, they are read-only outside * relcache.c. Files that trigger rd_node changes by updating * pg_class.reltablespace and/or pg_class.relfilenode call * RelationAssumeNewRelfilenode() to update rd_*Subid. * * rd_droppedSubid is the ID of the highest subtransaction that a drop of * the rel has survived into. In entries visible outside relcache.c, this * is always zero. */ SubTransactionId rd_createSubid; /* rel was created in current xact */ SubTransactionId rd_newRelfilenodeSubid; /* highest subxact changing * rd_node to current value */ SubTransactionId rd_firstRelfilenodeSubid; /* highest subxact changing * rd_node to any value */ SubTransactionId rd_droppedSubid; /* dropped with another Subid set */ Form_pg_class rd_rel; /* RELATION tuple */ TupleDesc rd_att; /* tuple descriptor */ Oid rd_id; /* relation's object id */ LockInfoData rd_lockInfo; /* lock mgr's info for locking relation */ RuleLock *rd_rules; /* rewrite rules */ MemoryContext rd_rulescxt; /* private memory cxt for rd_rules, if any */ TriggerDesc *trigdesc; /* Trigger info, or NULL if rel has none */ /* use "struct" here to avoid needing to include rowsecurity.h: */ struct RowSecurityDesc *rd_rsdesc; /* row security policies, or NULL */ /* data managed by RelationGetFKeyList: */ List *rd_fkeylist; /* list of ForeignKeyCacheInfo (see below) */ bool rd_fkeyvalid; /* true if list has been computed */ /* data managed by RelationGetPartitionKey: */ PartitionKey rd_partkey; /* partition key, or NULL */ MemoryContext rd_partkeycxt; /* private context for rd_partkey, if any */ /* data managed by RelationGetPartitionDesc: */ PartitionDesc rd_partdesc; /* partition descriptor, or NULL */ MemoryContext rd_pdcxt; /* private context for rd_partdesc, if any */ /* 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 primary key, if any */ Oid rd_replidindex; /* OID of replica identity index, if any */ /* data managed by RelationGetStatExtList: */ List *rd_statlist; /* list of OIDs of extended stats */ /* data managed by RelationGetIndexAttrBitmap: */ Bitmapset *rd_indexattr; /* identifies columns used in indexes */ Bitmapset *rd_keyattr; /* cols that can be ref'd by foreign keys */ Bitmapset *rd_pkattr; /* cols included in primary key */ Bitmapset *rd_idattr; /* included in replica identity index */ 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 { NodeTag type; Oid conoid; /* oid of the constraint itself */ Oid conrelid; /* relation constrained by the foreign key */ Oid confrelid; /* relation referenced by the foreign key */ int nkeys; /* number of columns in the foreign key */ /* these arrays each have nkeys valid entries: */ AttrNumber conkey[INDEX_MAX_KEYS]; /* cols in referencing table */ AttrNumber confkey[INDEX_MAX_KEYS]; /* cols in referenced table */ Oid conpfeqop[INDEX_MAX_KEYS]; /* PK = FK operator OIDs */ } ForeignKeyCacheInfo; /* * StdRdOptions * Standard contents of rd_options for heaps. * * RelationGetFillFactor() and RelationGetTargetPageFreeSpace() can only * be applied to relations that use this format or a superset for * private options data. */ /* autovacuum-related reloptions. */ typedef struct AutoVacOpts { bool enabled; int vacuum_threshold; int vacuum_ins_threshold; int analyze_threshold; int vacuum_cost_limit; int freeze_min_age; int freeze_max_age; int freeze_table_age; int multixact_freeze_min_age; int multixact_freeze_max_age; int multixact_freeze_table_age; int log_min_duration; float8 vacuum_cost_delay; float8 vacuum_scale_factor; float8 vacuum_ins_scale_factor; float8 analyze_scale_factor; } AutoVacOpts; /* 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 relfilenode map. Note multiple eval * of argument! */ #define RelationIsMapped(relation) \ (RELKIND_HAS_STORAGE((relation)->rd_rel->relkind) && \ ((relation)->rd_rel->relfilenode == InvalidOid)) /* * 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. * * Note: since a relcache flush can cause the file handle to be closed again, * it's unwise to hold onto the pointer returned by this function for any * long period. Recommended practice is to just re-execute RelationGetSmgr * each time you need to access the SMgrRelation. It's quite cheap in * comparison to whatever an smgr function is going to do. */ static inline SMgrRelation RelationGetSmgr(Relation rel) { if (unlikely(rel->rd_smgr == NULL)) smgrsetowner(&(rel->rd_smgr), smgropen(rel->rd_node, rel->rd_backend)); return rel->rd_smgr; } /* * RelationCloseSmgr * Close the relation at the smgr level, if not already done. * * Note: smgrclose should unhook from owner pointer, hence the Assert. */ #define RelationCloseSmgr(relation) \ do { \ if ((relation)->rd_smgr != NULL) \ { \ smgrclose((relation)->rd_smgr); \ Assert((relation)->rd_smgr == NULL); \ } \ } while (0) /* * RelationGetTargetBlock * Fetch relation's current insertion target block. * * Returns InvalidBlockNumber if there is no current target block. Note * that the target block status is discarded on any smgr-level invalidation, * 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 * RelFileNode" in src/backend/access/transam/README. */ #define RelationNeedsWAL(relation) \ (RelationIsPermanent(relation) && (XLogIsNeeded() || \ (relation->rd_createSubid == InvalidSubTransactionId && \ relation->rd_firstRelfilenodeSubid == InvalidSubTransactionId))) /* * RelationUsesLocalBuffers * True if relation's pages are stored in local buffers. */ #define RelationUsesLocalBuffers(relation) \ ((relation)->rd_rel->relpersistence == RELPERSISTENCE_TEMP) /* * RELATION_IS_LOCAL * If a rel is either temp or newly created in the current transaction, * it can be assumed to be accessible only to the current backend. * This is typically used to decide that we can skip acquiring locks. * * Beware of multiple eval of argument */ #define RELATION_IS_LOCAL(relation) \ ((relation)->rd_islocaltemp || \ (relation)->rd_createSubid != InvalidSubTransactionId) /* * RELATION_IS_OTHER_TEMP * Test for a temporary relation that belongs to some other session. * * Beware of multiple eval of argument */ #define RELATION_IS_OTHER_TEMP(relation) \ ((relation)->rd_rel->relpersistence == RELPERSISTENCE_TEMP && \ !(relation)->rd_islocaltemp) /* * RelationIsScannable * Currently can only be false for a materialized view which has not been * populated by its query. This is likely to get more complicated later, * so use a macro which looks like a function. */ #define RelationIsScannable(relation) ((relation)->rd_rel->relispopulated) /* * RelationIsPopulated * Currently, we don't physically distinguish the "populated" and * "scannable" properties of matviews, but that may change later. * Hence, use the appropriate one of these macros in code tests. */ #define RelationIsPopulated(relation) ((relation)->rd_rel->relispopulated) /* * RelationIsAccessibleInLogicalDecoding * True if we need to log enough information to have access via * decoding snapshot. */ #define RelationIsAccessibleInLogicalDecoding(relation) \ (XLogLogicalInfoActive() && \ RelationNeedsWAL(relation) && \ (IsCatalogRelation(relation) || RelationIsUsedAsCatalogTable(relation))) /* * RelationIsLogicallyLogged * True if we need to log enough information to extract the data from the * WAL stream. * * We don't log information for unlogged tables (since they don't WAL log * anyway), 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 */ pg_query-4.2.3/ext/pg_query/include/utils/plancache.h0000644000004100000410000002511614510636647022731 0ustar www-datawww-data/*------------------------------------------------------------------------- * * plancache.h * Plan cache definitions. * * See plancache.c for comments. * * Portions Copyright (c) 1996-2022, 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 OverrideSearchPath *search_path; /* search_path used for parsing * and planning */ MemoryContext query_context; /* context holding the above, or NULL */ Oid rewriteRoleId; /* Role ID we did rewriting for */ bool rewriteRowSecurity; /* row_security used during rewrite */ bool dependsOnRLS; /* is rewritten query specific to the above? */ /* If we have a generic plan, this is a reference-counted link to it: */ struct CachedPlan *gplan; /* generic plan, or NULL if not valid */ /* Some state flags: */ bool is_oneshot; /* is it a "oneshot" plan? */ bool is_complete; /* has CompleteCachedPlan been done? */ bool is_saved; /* has CachedPlanSource been "saved"? */ bool is_valid; /* is the query_list currently valid? */ int generation; /* increments each time we create a plan */ /* If CachedPlanSource has been saved, it is a member of a global list */ dlist_node node; /* list link, if is_saved */ /* State kept to help decide whether to use custom or generic plans: */ double generic_cost; /* cost of generic plan, or -1 if not known */ double total_custom_cost; /* total cost of custom plans so far */ 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 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 */ pg_query-4.2.3/ext/pg_query/include/utils/numeric.h0000644000004100000410000000577414510636647022465 0ustar www-datawww-data/*------------------------------------------------------------------------- * * numeric.h * Definitions for the exact numeric data type of Postgres * * Original coding 1998, Jan Wieck. Heavily revised 2003, Tom Lane. * * Copyright (c) 1998-2022, PostgreSQL Global Development Group * * src/include/utils/numeric.h * *------------------------------------------------------------------------- */ #ifndef _PG_NUMERIC_H_ #define _PG_NUMERIC_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 */ #define DatumGetNumeric(X) ((Numeric) PG_DETOAST_DATUM(X)) #define DatumGetNumericCopy(X) ((Numeric) PG_DETOAST_DATUM_COPY(X)) #define NumericGetDatum(X) PointerGetDatum(X) #define PG_GETARG_NUMERIC(n) DatumGetNumeric(PG_GETARG_DATUM(n)) #define PG_GETARG_NUMERIC_COPY(n) DatumGetNumericCopy(PG_GETARG_DATUM(n)) #define PG_RETURN_NUMERIC(x) return NumericGetDatum(x) /* * Utility functions in numeric.c */ extern bool numeric_is_nan(Numeric num); 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 *error); #endif /* _PG_NUMERIC_H_ */ pg_query-4.2.3/ext/pg_query/include/utils/probes.h0000644000004100000410000001662014510636647022305 0ustar www-datawww-data#define TRACE_POSTGRESQL_TRANSACTION_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_TRANSACTION_START_ENABLED() (0) #define TRACE_POSTGRESQL_TRANSACTION_COMMIT(INT1) do {} while (0) #define TRACE_POSTGRESQL_TRANSACTION_COMMIT_ENABLED() (0) #define TRACE_POSTGRESQL_TRANSACTION_ABORT(INT1) do {} while (0) #define TRACE_POSTGRESQL_TRANSACTION_ABORT_ENABLED() (0) #define TRACE_POSTGRESQL_LWLOCK_ACQUIRE(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_LWLOCK_ACQUIRE_ENABLED() (0) #define TRACE_POSTGRESQL_LWLOCK_RELEASE(INT1) do {} while (0) #define TRACE_POSTGRESQL_LWLOCK_RELEASE_ENABLED() (0) #define TRACE_POSTGRESQL_LWLOCK_WAIT_START(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_LWLOCK_WAIT_START_ENABLED() (0) #define TRACE_POSTGRESQL_LWLOCK_WAIT_DONE(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_LWLOCK_WAIT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE_ENABLED() (0) #define TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE_FAIL(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE_FAIL_ENABLED() (0) #define TRACE_POSTGRESQL_LWLOCK_ACQUIRE_OR_WAIT(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_LWLOCK_ACQUIRE_OR_WAIT_ENABLED() (0) #define TRACE_POSTGRESQL_LWLOCK_ACQUIRE_OR_WAIT_FAIL(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_LWLOCK_ACQUIRE_OR_WAIT_FAIL_ENABLED() (0) #define TRACE_POSTGRESQL_LOCK_WAIT_START(INT1, INT2, INT3, INT4, INT5, INT6) do {} while (0) #define TRACE_POSTGRESQL_LOCK_WAIT_START_ENABLED() (0) #define TRACE_POSTGRESQL_LOCK_WAIT_DONE(INT1, INT2, INT3, INT4, INT5, INT6) do {} while (0) #define TRACE_POSTGRESQL_LOCK_WAIT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_PARSE_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_QUERY_PARSE_START_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_PARSE_DONE(INT1) do {} while (0) #define TRACE_POSTGRESQL_QUERY_PARSE_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_REWRITE_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_QUERY_REWRITE_START_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_REWRITE_DONE(INT1) do {} while (0) #define TRACE_POSTGRESQL_QUERY_REWRITE_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_PLAN_START() do {} while (0) #define TRACE_POSTGRESQL_QUERY_PLAN_START_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_PLAN_DONE() do {} while (0) #define TRACE_POSTGRESQL_QUERY_PLAN_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_EXECUTE_START() do {} while (0) #define TRACE_POSTGRESQL_QUERY_EXECUTE_START_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_EXECUTE_DONE() do {} while (0) #define TRACE_POSTGRESQL_QUERY_EXECUTE_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_QUERY_START_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_DONE(INT1) do {} while (0) #define TRACE_POSTGRESQL_QUERY_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_STATEMENT_STATUS(INT1) do {} while (0) #define TRACE_POSTGRESQL_STATEMENT_STATUS_ENABLED() (0) #define TRACE_POSTGRESQL_SORT_START(INT1, INT2, INT3, INT4, INT5, INT6) do {} while (0) #define TRACE_POSTGRESQL_SORT_START_ENABLED() (0) #define TRACE_POSTGRESQL_SORT_DONE(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_SORT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_READ_START(INT1, INT2, INT3, INT4, INT5, INT6, INT7) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_READ_START_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_READ_DONE(INT1, INT2, INT3, INT4, INT5, INT6, INT7, INT8) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_READ_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_FLUSH_START(INT1, INT2, INT3, INT4, INT5) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_FLUSH_START_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_FLUSH_DONE(INT1, INT2, INT3, INT4, INT5) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_FLUSH_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_START_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_SYNC_START() do {} while (0) #define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_SYNC_START_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_DONE() do {} while (0) #define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_SYNC_START(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_SYNC_START_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_SYNC_WRITTEN(INT1) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_SYNC_WRITTEN_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_SYNC_DONE(INT1, INT2, INT3) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_SYNC_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_START(INT1, INT2, INT3, INT4, INT5) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_START_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_DONE(INT1, INT2, INT3, INT4, INT5) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_DEADLOCK_FOUND() do {} while (0) #define TRACE_POSTGRESQL_DEADLOCK_FOUND_ENABLED() (0) #define TRACE_POSTGRESQL_CHECKPOINT_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_CHECKPOINT_START_ENABLED() (0) #define TRACE_POSTGRESQL_CHECKPOINT_DONE(INT1, INT2, INT3, INT4, INT5) do {} while (0) #define TRACE_POSTGRESQL_CHECKPOINT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_CLOG_CHECKPOINT_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_CLOG_CHECKPOINT_START_ENABLED() (0) #define TRACE_POSTGRESQL_CLOG_CHECKPOINT_DONE(INT1) do {} while (0) #define TRACE_POSTGRESQL_CLOG_CHECKPOINT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_SUBTRANS_CHECKPOINT_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_SUBTRANS_CHECKPOINT_START_ENABLED() (0) #define TRACE_POSTGRESQL_SUBTRANS_CHECKPOINT_DONE(INT1) do {} while (0) #define TRACE_POSTGRESQL_SUBTRANS_CHECKPOINT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_MULTIXACT_CHECKPOINT_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_MULTIXACT_CHECKPOINT_START_ENABLED() (0) #define TRACE_POSTGRESQL_MULTIXACT_CHECKPOINT_DONE(INT1) do {} while (0) #define TRACE_POSTGRESQL_MULTIXACT_CHECKPOINT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_TWOPHASE_CHECKPOINT_START() do {} while (0) #define TRACE_POSTGRESQL_TWOPHASE_CHECKPOINT_START_ENABLED() (0) #define TRACE_POSTGRESQL_TWOPHASE_CHECKPOINT_DONE() do {} while (0) #define TRACE_POSTGRESQL_TWOPHASE_CHECKPOINT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_SMGR_MD_READ_START(INT1, INT2, INT3, INT4, INT5, INT6) do {} while (0) #define TRACE_POSTGRESQL_SMGR_MD_READ_START_ENABLED() (0) #define TRACE_POSTGRESQL_SMGR_MD_READ_DONE(INT1, INT2, INT3, INT4, INT5, INT6, INT7, INT8) do {} while (0) #define TRACE_POSTGRESQL_SMGR_MD_READ_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_SMGR_MD_WRITE_START(INT1, INT2, INT3, INT4, INT5, INT6) do {} while (0) #define TRACE_POSTGRESQL_SMGR_MD_WRITE_START_ENABLED() (0) #define TRACE_POSTGRESQL_SMGR_MD_WRITE_DONE(INT1, INT2, INT3, INT4, INT5, INT6, INT7, INT8) do {} while (0) #define TRACE_POSTGRESQL_SMGR_MD_WRITE_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_WAL_INSERT(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_WAL_INSERT_ENABLED() (0) #define TRACE_POSTGRESQL_WAL_SWITCH() do {} while (0) #define TRACE_POSTGRESQL_WAL_SWITCH_ENABLED() (0) #define TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_START() do {} while (0) #define TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_START_ENABLED() (0) #define TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_DONE() do {} while (0) #define TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_DONE_ENABLED() (0) pg_query-4.2.3/ext/pg_query/include/utils/queryjumble.h0000644000004100000410000000432114510636647023352 0ustar www-datawww-data/*------------------------------------------------------------------------- * * queryjumble.h * Query normalization and fingerprinting. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/utils/queryjumble.h * *------------------------------------------------------------------------- */ #ifndef QUERYJUBLE_H #define QUERYJUBLE_H #include "nodes/parsenodes.h" #define JUMBLE_SIZE 1024 /* query serialization buffer size */ /* * 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, const char *querytext); 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 */ pg_query-4.2.3/ext/pg_query/include/utils/pgstat_internal.h0000644000004100000410000005305414510636647024213 0ustar www-datawww-data/* ---------- * 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-2022, PostgreSQL Global Development Group * * src/include/utils/pgstat_internal.h * ---------- */ #ifndef PGSTAT_INTERNAL_H #define PGSTAT_INTERNAL_H #include "common/hashfn.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; /* * 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 PgStatShm_Stat*Entry. */ 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; /* * 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. */ dlist_head pending_drops; int pending_drops_count; /* * 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[] = { "CommitTs", "MultiXactMember", "MultiXactOffset", "Notify", "Serial", "Subtrans", "Xact", "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; 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_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_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_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 *found); 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_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) { AssertArg(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 PgStat_HashKey *key = (PgStat_HashKey *) d; uint32 hash; AssertArg(size == sizeof(PgStat_HashKey) && arg == NULL); hash = murmurhash32(key->kind); hash = hash_combine(hash, murmurhash32(key->dboid)); hash = hash_combine(hash, murmurhash32(key->objoid)); return hash; } /* * 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 */ pg_query-4.2.3/ext/pg_query/include/utils/tuplesort.h0000644000004100000410000003106714510636647023056 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/tuplesort.h * *------------------------------------------------------------------------- */ #ifndef TUPLESORT_H #define TUPLESORT_H #include "access/itup.h" #include "executor/tuptable.h" #include "storage/dsm.h" #include "utils/relcache.h" /* * Tuplesortstate and Sharedsort are opaque types whose details are not * known outside tuplesort.c. */ typedef struct Tuplesortstate Tuplesortstate; typedef struct Sharedsort Sharedsort; /* * Tuplesort parallel coordination state, allocated by each participant in * local memory. Participant caller initializes everything. See usage notes * below. */ typedef struct SortCoordinateData { /* Worker process? If not, must be leader. */ bool isWorker; /* * Leader-process-passed number of participants known launched (workers * set this to -1). Includes state within leader needed for it to * participate as a worker, if any. */ int nParticipants; /* Private opaque state (points to shared memory) */ Sharedsort *sharedsort; } SortCoordinateData; typedef struct SortCoordinateData *SortCoordinate; /* * Data structures for reporting sort statistics. Note that * TuplesortInstrumentation can't contain any pointers because we * sometimes put it in shared memory. * * The parallel-sort infrastructure relies on having a zero TuplesortMethod * to indicate that a worker never did anything, so we assign zero to * SORT_TYPE_STILL_IN_PROGRESS. The other values of this enum can be * OR'ed together to represent a situation where different workers used * different methods, so we need a separate bit for each one. Keep the * NUM_TUPLESORTMETHODS constant in sync with the number of bits! */ typedef enum { SORT_TYPE_STILL_IN_PROGRESS = 0, SORT_TYPE_TOP_N_HEAPSORT = 1 << 0, SORT_TYPE_QUICKSORT = 1 << 1, SORT_TYPE_EXTERNAL_SORT = 1 << 2, SORT_TYPE_EXTERNAL_MERGE = 1 << 3 } TuplesortMethod; #define NUM_TUPLESORTMETHODS 4 typedef enum { SORT_SPACE_TYPE_DISK, SORT_SPACE_TYPE_MEMORY } TuplesortSpaceType; /* 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) typedef struct TuplesortInstrumentation { TuplesortMethod sortMethod; /* sort algorithm used */ TuplesortSpaceType spaceType; /* type of space spaceUsed represents */ int64 spaceUsed; /* space consumption, in kB */ } TuplesortInstrumentation; /* * We provide multiple interfaces to what is essentially the same code, * since different callers have different data to be sorted and want to * specify the sort key information differently. There are two APIs for * sorting HeapTuples and two more for sorting IndexTuples. Yet another * API supports sorting bare Datums. * * Serial sort callers should pass NULL for their coordinate argument. * * The "heap" API actually stores/sorts MinimalTuples, which means it doesn't * preserve the system columns (tuple identity and transaction visibility * info). The sort keys are specified by column numbers within the tuples * and sort operator OIDs. We save some cycles by passing and returning the * tuples in TupleTableSlots, rather than forming actual HeapTuples (which'd * have to be converted to MinimalTuples). This API works well for sorts * executed as parts of plan trees. * * The "cluster" API stores/sorts full HeapTuples including all visibility * info. The sort keys are specified by reference to a btree index that is * defined on the relation to be sorted. Note that putheaptuple/getheaptuple * go with this API, not the "begin_heap" one! * * The "index_btree" API stores/sorts IndexTuples (preserving all their * header fields). The sort keys are specified by a btree index definition. * * The "index_hash" API is similar to index_btree, but the tuples are * actually sorted by their hash codes not the raw data. * * Parallel sort callers are required to coordinate multiple tuplesort states * in a leader process and one or more worker processes. The leader process * must launch workers, and have each perform an independent "partial" * tuplesort, typically fed by the parallel heap interface. The leader later * produces the final output (internally, it merges runs output by workers). * * Callers must do the following to perform a sort in parallel using multiple * worker processes: * * 1. Request tuplesort-private shared memory for n workers. Use * tuplesort_estimate_shared() to get the required size. * 2. Have leader process initialize allocated shared memory using * tuplesort_initialize_shared(). Launch workers. * 3. Initialize a coordinate argument within both the leader process, and * for each worker process. This has a pointer to the shared * tuplesort-private structure, as well as some caller-initialized fields. * Leader's coordinate argument reliably indicates number of workers * launched (this is unused by workers). * 4. Begin a tuplesort using some appropriate tuplesort_begin* routine, * (passing the coordinate argument) within each worker. The workMem * arguments need not be identical. All other arguments should match * exactly, though. * 5. tuplesort_attach_shared() should be called by all workers. Feed tuples * to each worker, and call tuplesort_performsort() within each when input * is exhausted. * 6. Call tuplesort_end() in each worker process. Worker processes can shut * down once tuplesort_end() returns. * 7. Begin a tuplesort in the leader using the same tuplesort_begin* * routine, passing a leader-appropriate coordinate argument (this can * happen as early as during step 3, actually, since we only need to know * the number of workers successfully launched). The leader must now wait * for workers to finish. Caller must use own mechanism for ensuring that * next step isn't reached until all workers have called and returned from * tuplesort_performsort(). (Note that it's okay if workers have already * also called tuplesort_end() by then.) * 8. Call tuplesort_performsort() in leader. Consume output using the * appropriate tuplesort_get* routine. Leader can skip this step if * tuplesort turns out to be unnecessary. * 9. Call tuplesort_end() in leader. * * This division of labor assumes nothing about how input tuples are produced, * but does require that caller combine the state of multiple tuplesorts for * any purpose other than producing the final output. For example, callers * must consider that tuplesort_get_stats() reports on only one worker's role * in a sort (or the leader's role), and not statistics for the sort as a * whole. * * Note that callers may use the leader process to sort runs as if it was an * independent worker process (prior to the process performing a leader sort * to produce the final sorted output). Doing so only requires a second * "partial" tuplesort within the leader process, initialized like that of a * worker process. The steps above don't touch on this directly. The only * difference is that the tuplesort_attach_shared() call is never needed within * leader process, because the backend as a whole holds the shared fileset * reference. A worker Tuplesortstate in leader is expected to do exactly the * same amount of total initial processing work as a worker process * Tuplesortstate, since the leader process has nothing else to do before * workers finish. * * Note that only a very small amount of memory will be allocated prior to * the leader state first consuming input, and that workers will free the * vast majority of their memory upon returning from tuplesort_performsort(). * Callers can rely on this to arrange for memory to be used in a way that * respects a workMem-style budget across an entire parallel sort operation. * * Callers are responsible for parallel safety in general. However, they * can at least rely on there being no parallel safety hazards within * tuplesort, because tuplesort thinks of the sort as several independent * sorts whose results are combined. Since, in general, the behavior of * sort operators is immutable, caller need only worry about the parallel * safety of whatever the process is through which input tuples are * generated (typically, caller uses a parallel heap scan). */ extern Tuplesortstate *tuplesort_begin_heap(TupleDesc tupDesc, int nkeys, AttrNumber *attNums, Oid *sortOperators, Oid *sortCollations, bool *nullsFirstFlags, int workMem, SortCoordinate coordinate, 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_datum(Oid datumType, Oid sortOperator, Oid sortCollation, bool nullsFirstFlag, 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_puttupleslot(Tuplesortstate *state, TupleTableSlot *slot); extern void tuplesort_putheaptuple(Tuplesortstate *state, HeapTuple tup); extern void tuplesort_putindextuplevalues(Tuplesortstate *state, Relation rel, ItemPointer self, Datum *values, bool *isnull); extern void tuplesort_putdatum(Tuplesortstate *state, Datum val, bool isNull); extern void tuplesort_performsort(Tuplesortstate *state); extern bool tuplesort_gettupleslot(Tuplesortstate *state, bool forward, bool copy, TupleTableSlot *slot, Datum *abbrev); extern HeapTuple tuplesort_getheaptuple(Tuplesortstate *state, bool forward); extern IndexTuple tuplesort_getindextuple(Tuplesortstate *state, bool forward); extern bool tuplesort_getdatum(Tuplesortstate *state, bool forward, Datum *val, bool *isNull, Datum *abbrev); extern bool tuplesort_skiptuples(Tuplesortstate *state, int64 ntuples, bool forward); extern void tuplesort_end(Tuplesortstate *state); extern void tuplesort_reset(Tuplesortstate *state); extern void tuplesort_get_stats(Tuplesortstate *state, TuplesortInstrumentation *stats); extern const char *tuplesort_method_name(TuplesortMethod m); extern const char *tuplesort_space_type_name(TuplesortSpaceType t); extern int tuplesort_merge_order(int64 allowedMem); extern Size tuplesort_estimate_shared(int nworkers); extern void tuplesort_initialize_shared(Sharedsort *shared, int nWorkers, dsm_segment *seg); extern void tuplesort_attach_shared(Sharedsort *shared, dsm_segment *seg); /* * These routines may only be called if 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); #endif /* TUPLESORT_H */ pg_query-4.2.3/ext/pg_query/include/utils/datum.h0000644000004100000410000000451414510636647022124 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/utils/elog.h0000644000004100000410000004230014510636647021733 0ustar www-datawww-data/*------------------------------------------------------------------------- * * elog.h * POSTGRES error reporting/logging definitions. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/elog.h * *------------------------------------------------------------------------- */ #ifndef ELOG_H #define ELOG_H #include /* Error level codes */ #define DEBUG5 10 /* Debugging messages, in categories of * decreasing detail. */ #define DEBUG4 11 #define DEBUG3 12 #define DEBUG2 13 #define DEBUG1 14 /* used by GUC debug_* variables */ #define LOG 15 /* Server operational messages; sent only to * server log by default. */ #define LOG_SERVER_ONLY 16 /* Same as LOG for server reporting, but never * sent to client. */ #define COMMERROR LOG_SERVER_ONLY /* Client communication problems; same as * LOG for server reporting, but never * sent to client. */ #define INFO 17 /* Messages specifically requested by user (eg * VACUUM VERBOSE output); always sent to * client regardless of client_min_messages, * but by default not sent to server log. */ #define NOTICE 18 /* Helpful messages to users about query * operation; sent to client and not to server * log by default. */ #define WARNING 19 /* Warnings. NOTICE is for expected messages * like implicit sequence creation by SERIAL. * WARNING is for unexpected messages. */ #define 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__, PG_FUNCNAME_MACRO); \ if (__builtin_constant_p(elevel) && (elevel) >= ERROR) \ pg_unreachable(); \ } while(0) #else /* !HAVE__BUILTIN_CONSTANT_P */ #define ereport_domain(elevel, domain, ...) \ do { \ const int elevel_ = (elevel); \ pg_prevent_errno_in_scope(); \ if (errstart(elevel_, domain)) \ __VA_ARGS__, errfinish(__FILE__, __LINE__, PG_FUNCNAME_MACRO); \ if (elevel_ >= ERROR) \ pg_unreachable(); \ } while(0) #endif /* HAVE__BUILTIN_CONSTANT_P */ #define ereport(elevel, ...) \ ereport_domain(elevel, TEXTDOMAIN, __VA_ARGS__) #define TEXTDOMAIN NULL extern bool 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 geterrposition(void); extern int getinternalerrposition(void); /*---------- * Old-style error reporting API: to be used in this way: * elog(ERROR, "portal \"%s\" not found", stmt->portalname); *---------- */ #define elog(elevel, ...) \ ereport(elevel, errmsg_internal(__VA_ARGS__)) /* Support for constructing error strings separately from ereport() calls */ extern void pre_format_elog_string(int errnumber, const char *domain); extern char *format_elog_string(const char *fmt,...) pg_attribute_printf(1, 2); /* Support for attaching context information to error reports */ typedef struct ErrorContextCallback { struct ErrorContextCallback *previous; void (*callback) (void *arg); void *arg; } ErrorContextCallback; extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack; /*---------- * API for catching ereport(ERROR) exits. Use these macros like so: * * PG_TRY(); * { * ... code that might throw ereport(ERROR) ... * } * PG_CATCH(); * { * ... error recovery code ... * } * PG_END_TRY(); * * (The braces are not actually necessary, but are recommended so that * pgindent will indent the construct nicely.) The error recovery code * can either do PG_RE_THROW to propagate the error outwards, or do a * (sub)transaction abort. Failure to do so may leave the system in an * inconsistent state for further processing. * * For the common case that the error recovery code and the cleanup in the * normal code path are identical, the following can be used instead: * * PG_TRY(); * { * ... code that might throw ereport(ERROR) ... * } * PG_FINALLY(); * { * ... cleanup code ... * } * PG_END_TRY(); * * The cleanup code will be run in either case, and any error will be rethrown * afterwards. * * You cannot use both PG_CATCH() and PG_FINALLY() in the same * PG_TRY()/PG_END_TRY() block. * * Note: while the system will correctly propagate any new ereport(ERROR) * occurring in the recovery section, there is a small limit on the number * of levels this will work for. It's best to keep the error recovery * section simple enough that it can't generate any new errors, at least * not before popping the error stack. * * Note: an ereport(FATAL) will not be caught by this construct; control will * exit straight through proc_exit(). Therefore, do NOT put any cleanup * of non-process-local resources into the error recovery section, at least * not without taking thought for what will happen during ereport(FATAL). * The PG_ENSURE_ERROR_CLEANUP macros provided by storage/ipc.h may be * helpful in such cases. * * Note: if a local variable of the function containing PG_TRY is modified * in the PG_TRY section and used in the PG_CATCH section, that variable * must be declared "volatile" for POSIX compliance. This is not mere * pedantry; we have seen bugs from compilers improperly optimizing code * away when such a variable was not marked. Beware that gcc's -Wclobbered * warnings are just about entirely useless for catching such oversights. *---------- */ #define PG_TRY() \ do { \ sigjmp_buf *_save_exception_stack = PG_exception_stack; \ ErrorContextCallback *_save_context_stack = error_context_stack; \ sigjmp_buf _local_sigjmp_buf; \ bool _do_rethrow = false; \ if (sigsetjmp(_local_sigjmp_buf, 0) == 0) \ { \ PG_exception_stack = &_local_sigjmp_buf #define PG_CATCH() \ } \ else \ { \ PG_exception_stack = _save_exception_stack; \ error_context_stack = _save_context_stack #define PG_FINALLY() \ } \ else \ _do_rethrow = true; \ { \ PG_exception_stack = _save_exception_stack; \ error_context_stack = _save_context_stack #define PG_END_TRY() \ } \ if (_do_rethrow) \ PG_RE_THROW(); \ PG_exception_stack = _save_exception_stack; \ error_context_stack = _save_context_stack; \ } while (0) /* * Some compilers understand pg_attribute_noreturn(); for other compilers, * insert pg_unreachable() so that the compiler gets the point. */ #ifdef HAVE_PG_ATTRIBUTE_NORETURN #define PG_RE_THROW() \ pg_re_throw() #else #define PG_RE_THROW() \ (pg_re_throw(), pg_unreachable()) #endif extern PGDLLIMPORT __thread sigjmp_buf *PG_exception_stack; /* Stuff that error handlers might want to use */ /* * ErrorData holds the data accumulated during any one ereport() cycle. * Any non-NULL pointers must point to palloc'd data. * (The const pointers are an exception; we assume they point at non-freeable * constant strings.) */ typedef struct ErrorData { int elevel; /* error level */ bool output_to_server; /* will report to server log? */ bool output_to_client; /* will report to client? */ bool 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 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); #ifdef HAVE_SYSLOG extern void set_syslog_parameters(const char *ident, int facility); #endif /* * Write errors to stderr (or by equal means when stderr is * not available). Used before ereport/elog can be used * safely (memory context, GUC load etc) */ extern void write_stderr(const char *fmt,...) pg_attribute_printf(1, 2); #endif /* ELOG_H */ pg_query-4.2.3/ext/pg_query/include/utils/inval.h0000644000004100000410000000361114510636647022120 0ustar www-datawww-data/*------------------------------------------------------------------------- * * inval.h * POSTGRES cache invalidation dispatcher definitions. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/inval.h * *------------------------------------------------------------------------- */ #ifndef INVAL_H #define INVAL_H #include "access/htup.h" #include "storage/relfilenode.h" #include "utils/relcache.h" 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(RelFileNodeBackend rnode); extern void CacheInvalidateRelmap(Oid databaseId); extern void CacheRegisterSyscacheCallback(int cacheid, SyscacheCallbackFunction func, Datum arg); extern void CacheRegisterRelcacheCallback(RelcacheCallbackFunction func, Datum arg); extern void CallSyscacheCallbacks(int cacheid, uint32 hashvalue); extern void InvalidateSystemCaches(void); extern void InvalidateSystemCachesExtended(bool debug_discard); extern void LogLogicalInvalidations(void); #endif /* INVAL_H */ pg_query-4.2.3/ext/pg_query/include/utils/timeout.h0000644000004100000410000000541514510636647022501 0ustar www-datawww-data/*------------------------------------------------------------------------- * * timeout.h * Routines to multiplex SIGALRM interrupts for multiple timeout reasons. * * * Portions Copyright (c) 1996-2022, 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, 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 */ pg_query-4.2.3/ext/pg_query/include/utils/portal.h0000644000004100000410000002441314510636647022313 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/portal.h * *------------------------------------------------------------------------- */ #ifndef PORTAL_H #define PORTAL_H #include "datatype/timestamp.h" #include "executor/execdesc.h" #include "tcop/cmdtag.h" #include "utils/plancache.h" #include "utils/resowner.h" /* * We have several execution strategies for Portals, depending on what * query or queries are to be executed. (Note: in all cases, a Portal * executes just a single source-SQL query, and thus produces just a * single result from the user's viewpoint. However, the rule rewriter * may expand the single source query to zero or many actual queries.) * * PORTAL_ONE_SELECT: the portal contains one single SELECT query. We run * the Executor incrementally as results are demanded. This strategy also * supports holdable cursors (the Executor results can be dumped into a * tuplestore for access after transaction completion). * * PORTAL_ONE_RETURNING: the portal contains a single INSERT/UPDATE/DELETE * query with a RETURNING clause (plus possibly auxiliary queries added by * rule rewriting). On first execution, we run the portal to completion * and dump the primary query's results into the portal tuplestore; the * results are then returned to the client as demanded. (We can't support * suspension of the query partway through, because the AFTER TRIGGER code * can't cope, and also because we don't want to risk failing to execute * all the auxiliary queries.) * * PORTAL_ONE_MOD_WITH: the portal contains one single SELECT query, but * it has data-modifying CTEs. This is currently treated the same as the * PORTAL_ONE_RETURNING case because of the possibility of needing to fire * triggers. It may act more like PORTAL_ONE_SELECT in future. * * PORTAL_UTIL_SELECT: the portal contains a utility statement that returns * a SELECT-like result (for example, EXPLAIN or SHOW). On first execution, * we run the statement and dump its results into the portal tuplestore; * the results are then returned to the client as demanded. * * PORTAL_MULTI_QUERY: all other cases. Here, we do not support partial * execution: the portal's queries will be run to completion on first call. */ typedef enum PortalStrategy { PORTAL_ONE_SELECT, PORTAL_ONE_RETURNING, PORTAL_ONE_MOD_WITH, PORTAL_UTIL_SELECT, PORTAL_MULTI_QUERY } PortalStrategy; /* * A portal is always in one of these states. It is possible to transit * from ACTIVE back to READY if the query is not run to completion; * otherwise we never back up in status. */ typedef enum PortalStatus { PORTAL_NEW, /* freshly created */ PORTAL_DEFINED, /* PortalDefineQuery done */ PORTAL_READY, /* PortalStart complete, can run it */ PORTAL_ACTIVE, /* portal is running (can't delete it) */ PORTAL_DONE, /* portal is finished (don't re-run it) */ PORTAL_FAILED /* portal got error (can't re-run it) */ } PortalStatus; typedef struct PortalData *Portal; typedef struct PortalData { /* Bookkeeping data */ const char *name; /* portal's name */ const char *prepStmtName; /* source prepared statement (NULL if none) */ MemoryContext portalContext; /* subsidiary memory for portal */ ResourceOwner resowner; /* resources owned by portal */ void (*cleanup) (Portal portal); /* cleanup hook */ /* * State data for remembering which subtransaction(s) the portal was * created or used in. If the portal is held over from a previous * transaction, both subxids are InvalidSubTransactionId. Otherwise, * createSubid is the creating subxact and activeSubid is the last subxact * in which we ran the portal. */ SubTransactionId createSubid; /* the creating subxact */ SubTransactionId activeSubid; /* the last subxact with activity */ 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; /* portal will only be run once */ /* Status data */ PortalStatus status; /* see above */ bool portalPinned; /* a pinned portal can't be dropped */ bool autoHeld; /* was automatically converted from pinned to * held (see HoldPinnedPortals()) */ /* If not NULL, Executor is active; call ExecutorEnd eventually: */ QueryDesc *queryDesc; /* info needed for executor invocation */ /* If portal returns tuples, this is their tupdesc: */ TupleDesc tupDesc; /* descriptor for result tuples */ /* and these are the format codes to use for the columns: */ int16 *formats; /* a format code for each column */ /* * 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 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 */ pg_query-4.2.3/ext/pg_query/include/utils/tzparser.h0000644000004100000410000000220714510636647022661 0ustar www-datawww-data/*------------------------------------------------------------------------- * * tzparser.h * Timezone offset file parsing definitions. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/tzparser.h * *------------------------------------------------------------------------- */ #ifndef TZPARSER_H #define TZPARSER_H #include "utils/datetime.h" /* * The result of parsing a timezone configuration file is an array of * these structs, in order by abbrev. We export this because datetime.c * needs it. */ typedef struct tzEntry { /* the actual data */ char *abbrev; /* TZ abbreviation (downcased) */ char *zone; /* zone name if dynamic abbrev, else NULL */ /* for a dynamic abbreviation, offset/is_dst are not used */ int offset; /* offset in seconds from UTC */ bool is_dst; /* true if a DST abbreviation */ /* source information (for error messages) */ int lineno; const char *filename; } tzEntry; extern TimeZoneAbbrevTable *load_tzoffsets(const char *filename); #endif /* TZPARSER_H */ pg_query-4.2.3/ext/pg_query/include/utils/memutils.h0000644000004100000410000001757114510636647022660 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/memutils.h * *------------------------------------------------------------------------- */ #ifndef MEMUTILS_H #define MEMUTILS_H #include "nodes/memnodes.h" /* * MaxAllocSize, MaxAllocHugeSize * Quasi-arbitrary limits on size of allocations. * * Note: * There is no guarantee that smaller allocations will succeed, but * larger requests will be summarily denied. * * palloc() enforces MaxAllocSize, chosen to correspond to the limiting size * of varlena objects under TOAST. See VARSIZE_4B() and related macros in * postgres.h. Many datatypes assume that any allocatable size can be * represented in a varlena header. This limit also permits a caller to use * an "int" variable for an index into or length of an allocation. Callers * careful to avoid these hazards can access the higher limit with * MemoryContextAllocHuge(). Both limits permit code to assume that it may * compute twice an allocation's size without overflow. */ #define MaxAllocSize ((Size) 0x3fffffff) /* 1 gigabyte - 1 */ #define AllocSizeIsValid(size) ((Size) (size) <= MaxAllocSize) #define MaxAllocHugeSize (SIZE_MAX / 2) #define AllocHugeSizeIsValid(size) ((Size) (size) <= MaxAllocHugeSize) /* * Standard top-level memory contexts. * * Only TopMemoryContext and ErrorContext are initialized by * MemoryContextInit() itself. */ extern PGDLLIMPORT __thread MemoryContext TopMemoryContext; extern PGDLLIMPORT __thread MemoryContext ErrorContext; extern PGDLLIMPORT MemoryContext PostmasterContext; extern PGDLLIMPORT MemoryContext CacheMemoryContext; extern PGDLLIMPORT MemoryContext MessageContext; extern PGDLLIMPORT MemoryContext TopTransactionContext; extern PGDLLIMPORT MemoryContext CurTransactionContext; /* This is a transient link to the active portal's memory context: */ extern PGDLLIMPORT MemoryContext PortalContext; /* Backwards compatibility macro */ #define MemoryContextResetAndDeleteChildren(ctx) MemoryContextReset(ctx) /* * Memory-context-type-independent functions in mcxt.c */ extern void MemoryContextInit(void); extern void MemoryContextReset(MemoryContext context); extern void MemoryContextDelete(MemoryContext context); extern void MemoryContextResetOnly(MemoryContext context); extern void MemoryContextResetChildren(MemoryContext context); extern void MemoryContextDeleteChildren(MemoryContext context); extern void MemoryContextSetIdentifier(MemoryContext context, const char *id); extern void MemoryContextSetParent(MemoryContext context, MemoryContext new_parent); extern Size GetMemoryChunkSpace(void *pointer); extern MemoryContext MemoryContextGetParent(MemoryContext context); extern bool MemoryContextIsEmpty(MemoryContext context); extern Size MemoryContextMemAllocated(MemoryContext context, bool recurse); extern void MemoryContextStats(MemoryContext context); extern void MemoryContextStatsDetail(MemoryContext context, int max_children, bool print_to_stderr); extern void MemoryContextAllowInCriticalSection(MemoryContext context, bool allow); #ifdef MEMORY_CONTEXT_CHECKING extern void MemoryContextCheck(MemoryContext context); #endif extern bool MemoryContextContains(MemoryContext context, void *pointer); /* Handy macro for copying and assigning context ID ... but note double eval */ #define MemoryContextCopyAndSetIdentifier(cxt, id) \ MemoryContextSetIdentifier(cxt, MemoryContextStrdup(cxt, id)) /* * GetMemoryChunkContext * Given a currently-allocated chunk, determine the context * it belongs to. * * All chunks allocated by any memory context manager are required to be * preceded by the corresponding MemoryContext stored, without padding, in the * preceding sizeof(void*) bytes. A currently-allocated chunk must contain a * backpointer to its owning context. The backpointer is used by pfree() and * repalloc() to find the context to call. */ #ifndef FRONTEND static inline MemoryContext GetMemoryChunkContext(void *pointer) { MemoryContext context; /* * Try to detect bogus pointers handed to us, poorly though we can. * Presumably, a pointer that isn't MAXALIGNED isn't pointing at an * allocated chunk. */ Assert(pointer != NULL); Assert(pointer == (void *) MAXALIGN(pointer)); /* * OK, it's probably safe to look at the context. */ context = *(MemoryContext *) (((char *) pointer) - sizeof(void *)); AssertArg(MemoryContextIsValid(context)); return context; } #endif /* * This routine handles the context-type-independent part of memory * context creation. It's intended to be called from context-type- * specific creation routines, and noplace else. */ extern void MemoryContextCreate(MemoryContext node, NodeTag tag, const MemoryContextMethods *methods, MemoryContext parent, const char *name); 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); /* * 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 */ pg_query-4.2.3/ext/pg_query/include/utils/datetime.h0000644000004100000410000002473014510636647022610 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/datetime.h * *------------------------------------------------------------------------- */ #ifndef DATETIME_H #define DATETIME_H #include "nodes/nodes.h" #include "utils/timestamp.h" /* this struct is declared in utils/tzparser.h: */ struct tzEntry; /* ---------------------------------------------------------------- * time types + support macros * * String definitions for standard time quantities. * * These strings are the defaults used to form output time strings. * Other alternative forms are hardcoded into token tables in datetime.c. * ---------------------------------------------------------------- */ #define DAGO "ago" #define DCURRENT "current" #define EPOCH "epoch" #define INVALID "invalid" #define EARLY "-infinity" #define LATE "infinity" #define NOW "now" #define TODAY "today" #define TOMORROW "tomorrow" #define YESTERDAY "yesterday" #define ZULU "zulu" #define DMICROSEC "usecond" #define DMILLISEC "msecond" #define DSECOND "second" #define DMINUTE "minute" #define DHOUR "hour" #define DDAY "day" #define DWEEK "week" #define DMONTH "month" #define DQUARTER "quarter" #define DYEAR "year" #define DDECADE "decade" #define DCENTURY "century" #define DMILLENNIUM "millennium" #define DA_D "ad" #define DB_C "bc" #define DTIMEZONE "timezone" /* * Fundamental time field definitions for parsing. * * Meridian: am, pm, or 24-hour style. * Millennium: ad, bc */ #define AM 0 #define PM 1 #define HR24 2 #define AD 0 #define BC 1 /* * Field types for time decoding. * * Can't have more of these than there are bits in an unsigned int * since these are turned into bit masks during parsing and decoding. * * Furthermore, the values for YEAR, MONTH, DAY, HOUR, MINUTE, SECOND * must be in the range 0..14 so that the associated bitmasks can fit * into the left half of an INTERVAL's typmod value. Since those bits * are stored in typmods, you can't change them without initdb! */ #define RESERV 0 #define MONTH 1 #define YEAR 2 #define DAY 3 #define JULIAN 4 #define TZ 5 /* fixed-offset timezone abbreviation */ #define DTZ 6 /* fixed-offset timezone abbrev, DST */ #define DYNTZ 7 /* dynamic timezone abbreviation */ #define IGNORE_DTF 8 #define AMPM 9 #define HOUR 10 #define MINUTE 11 #define SECOND 12 #define MILLISECOND 13 #define MICROSECOND 14 #define DOY 15 #define DOW 16 #define UNITS 17 #define ADBC 18 /* these are only for relative dates */ #define AGO 19 #define ABS_BEFORE 20 #define ABS_AFTER 21 /* generic fields to help with parsing */ #define ISODATE 22 #define ISOTIME 23 /* these are only for parsing intervals */ #define WEEK 24 #define DECADE 25 #define CENTURY 26 #define MILLENNIUM 27 /* hack for parsing two-word timezone specs "MET DST" etc */ #define DTZMOD 28 /* "DST" as a separate word */ /* reserved for unrecognized string values */ #define UNKNOWN_FIELD 31 /* * Token field definitions for time parsing and decoding. * * Some field type codes (see above) use these as the "value" in datetktbl[]. * These are also used for bit masks in DecodeDateTime and friends * so actually restrict them to within [0,31] for now. * - thomas 97/06/19 * Not all of these fields are used for masks in DecodeDateTime * so allow some larger than 31. - thomas 1997-11-17 * * Caution: there are undocumented assumptions in the code that most of these * values are not equal to IGNORE_DTF nor RESERV. Be very careful when * renumbering values in either of these apparently-independent lists :-( */ #define DTK_NUMBER 0 #define DTK_STRING 1 #define DTK_DATE 2 #define DTK_TIME 3 #define DTK_TZ 4 #define DTK_AGO 5 #define DTK_SPECIAL 6 #define DTK_EARLY 9 #define DTK_LATE 10 #define DTK_EPOCH 11 #define DTK_NOW 12 #define DTK_YESTERDAY 13 #define DTK_TODAY 14 #define DTK_TOMORROW 15 #define DTK_ZULU 16 #define DTK_DELTA 17 #define DTK_SECOND 18 #define DTK_MINUTE 19 #define DTK_HOUR 20 #define DTK_DAY 21 #define DTK_WEEK 22 #define DTK_MONTH 23 #define DTK_QUARTER 24 #define DTK_YEAR 25 #define DTK_DECADE 26 #define DTK_CENTURY 27 #define DTK_MILLENNIUM 28 #define DTK_MILLISEC 29 #define DTK_MICROSEC 30 #define DTK_JULIAN 31 #define DTK_DOW 32 #define DTK_DOY 33 #define DTK_TZ_HOUR 34 #define DTK_TZ_MINUTE 35 #define DTK_ISOYEAR 36 #define DTK_ISODOW 37 /* * Bit mask definitions for time parsing. */ #define DTK_M(t) (0x01 << (t)) /* Convenience: a second, plus any fractional component */ #define DTK_ALL_SECS_M (DTK_M(SECOND) | DTK_M(MILLISECOND) | DTK_M(MICROSECOND)) #define DTK_DATE_M (DTK_M(YEAR) | DTK_M(MONTH) | DTK_M(DAY)) #define DTK_TIME_M (DTK_M(HOUR) | DTK_M(MINUTE) | DTK_ALL_SECS_M) /* * Working buffer size for input and output of interval, timestamp, etc. * Inputs that need more working space will be rejected early. Longer outputs * will overrun buffers, so this must suffice for all possible output. As of * this writing, interval_out() needs the most space at ~90 bytes. */ #define MAXDATELEN 128 /* maximum possible number of fields in a date string */ #define MAXDATEFIELDS 25 /* only this many chars are stored in datetktbl */ #define TOKMAXLEN 10 /* keep this struct small; it gets used a lot */ typedef struct { char token[TOKMAXLEN + 1]; /* always NUL-terminated */ char type; /* see field type codes above */ int32 value; /* meaning depends on type */ } datetkn; /* one of its uses is in tables of time zone abbreviations */ typedef struct TimeZoneAbbrevTable { Size tblsize; /* size in bytes of TimeZoneAbbrevTable */ int numabbrevs; /* number of entries in abbrevs[] array */ datetkn abbrevs[FLEXIBLE_ARRAY_MEMBER]; /* DynamicZoneAbbrev(s) may follow the abbrevs[] array */ } TimeZoneAbbrevTable; /* auxiliary data for a dynamic time zone abbreviation (non-fixed-offset) */ typedef struct DynamicZoneAbbrev { pg_tz *tz; /* NULL if not yet looked up */ char zone[FLEXIBLE_ARRAY_MEMBER]; /* NUL-terminated zone name */ } DynamicZoneAbbrev; /* FMODULO() * Macro to replace modf(), which is broken on some platforms. * t = input and remainder * q = integer part * u = divisor */ #define FMODULO(t,q,u) \ do { \ (q) = (((t) < 0) ? ceil((t) / (u)) : floor((t) / (u))); \ if ((q) != 0) (t) -= rint((q) * (u)); \ } while(0) /* TMODULO() * Like FMODULO(), but work on the timestamp datatype (now always int64). * We assume that int64 follows the C99 semantics for division (negative * quotients truncate towards zero). */ #define TMODULO(t,q,u) \ do { \ (q) = ((t) / (u)); \ if ((q) != 0) (t) -= ((q) * (u)); \ } while(0) /* * Date/time validation * Include check for leap year. */ extern 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 correct ereport. */ #define DTERR_BAD_FORMAT (-1) #define DTERR_FIELD_OVERFLOW (-2) #define DTERR_MD_FIELD_OVERFLOW (-3) /* triggers hint about DateStyle */ #define DTERR_INTERVAL_OVERFLOW (-4) #define DTERR_TZDISP_OVERFLOW (-5) extern void GetCurrentDateTime(struct pg_tm *tm); extern void GetCurrentTimeUsec(struct pg_tm *tm, fsec_t *fsec, int *tzp); extern void j2date(int jd, int *year, int *month, int *day); extern int date2j(int year, int month, int day); extern int ParseDateTime(const char *timestr, char *workbuf, size_t buflen, char **field, int *ftype, int maxfields, int *numfields); extern int DecodeDateTime(char **field, int *ftype, int nf, int *dtype, struct pg_tm *tm, fsec_t *fsec, int *tzp); extern int DecodeTimezone(char *str, int *tzp); extern int DecodeTimeOnly(char **field, int *ftype, int nf, int *dtype, struct pg_tm *tm, fsec_t *fsec, int *tzp); extern int DecodeInterval(char **field, int *ftype, int nf, int range, int *dtype, struct pg_itm_in *itm_in); extern int DecodeISO8601Interval(char *str, int *dtype, struct pg_itm_in *itm_in); extern void DateTimeParseError(int dterr, const char *str, const char *datatype) pg_attribute_noreturn(); extern int DetermineTimeZoneOffset(struct pg_tm *tm, pg_tz *tzp); extern int DetermineTimeZoneAbbrevOffset(struct pg_tm *tm, const char *abbr, pg_tz *tzp); extern int DetermineTimeZoneAbbrevOffsetTS(TimestampTz ts, const char *abbr, pg_tz *tzp, int *isdst); extern void EncodeDateOnly(struct pg_tm *tm, int style, char *str); extern void EncodeTimeOnly(struct pg_tm *tm, fsec_t fsec, bool print_tz, int tz, int style, char *str); extern void EncodeDateTime(struct pg_tm *tm, fsec_t fsec, bool print_tz, int tz, const char *tzn, int style, char *str); extern void EncodeInterval(struct pg_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, char *lowtoken, int *offset, pg_tz **tz); extern int DecodeSpecial(int field, char *lowtoken, int *val); extern int DecodeUnits(int field, char *lowtoken, int *val); extern int j2day(int jd); extern Node *TemporalSimplify(int32 max_precis, Node *node); extern bool CheckDateTokenTables(void); extern TimeZoneAbbrevTable *ConvertTimeZoneAbbrevs(struct tzEntry *abbrevs, int n); extern void InstallTimeZoneAbbrevs(TimeZoneAbbrevTable *tbl); extern void AdjustTimestampForTypmod(Timestamp *time, int32 typmod); extern bool AdjustTimestampForTypmodError(Timestamp *time, int32 typmod, bool *error); #endif /* DATETIME_H */ pg_query-4.2.3/ext/pg_query/include/utils/aclchk_internal.h0000644000004100000410000000265314510636647024135 0ustar www-datawww-data/*------------------------------------------------------------------------- * * aclchk_internal.h * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/utils/array.h0000644000004100000410000004277314510636647022141 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 /* * 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_md_array(Datum *elems, bool *nulls, int ndims, int *dims, int *lbs, Oid elmtype, int elmlen, bool elmbyval, char elmalign); extern ArrayType *construct_empty_array(Oid elmtype); extern ExpandedArrayHeader *construct_empty_expanded_array(Oid element_type, MemoryContext parentcontext, ArrayMetaState *metacache); extern void deconstruct_array(ArrayType *array, Oid elmtype, int elmlen, bool elmbyval, char elmalign, Datum **elemsp, bool **nullsp, int *nelemsp); extern bool array_contains_nulls(ArrayType *array); extern ArrayBuildState *initArrayResult(Oid element_type, MemoryContext rcontext, bool subcontext); extern ArrayBuildState *accumArrayResult(ArrayBuildState *astate, Datum dvalue, bool disnull, Oid element_type, MemoryContext rcontext); extern Datum makeArrayResult(ArrayBuildState *astate, MemoryContext rcontext); extern Datum makeMdArrayResult(ArrayBuildState *astate, int ndims, int *dims, int *lbs, MemoryContext rcontext, bool release); extern ArrayBuildStateArr *initArrayResultArr(Oid array_type, Oid element_type, MemoryContext rcontext, bool subcontext); extern ArrayBuildStateArr *accumArrayResultArr(ArrayBuildStateArr *astate, Datum dvalue, bool disnull, Oid array_type, MemoryContext rcontext); extern Datum makeArrayResultArr(ArrayBuildStateArr *astate, MemoryContext rcontext, bool release); extern ArrayBuildStateAny *initArrayResultAny(Oid input_type, MemoryContext rcontext, bool subcontext); extern ArrayBuildStateAny *accumArrayResultAny(ArrayBuildStateAny *astate, Datum dvalue, bool disnull, Oid input_type, MemoryContext rcontext); extern Datum makeArrayResultAny(ArrayBuildStateAny *astate, MemoryContext rcontext, bool release); extern ArrayIterator array_create_iterator(ArrayType *arr, int slice_ndim, ArrayMetaState *mstate); extern bool array_iterate(ArrayIterator iterator, Datum *value, bool *isnull); extern void array_free_iterator(ArrayIterator iterator); /* * prototypes for functions defined in arrayutils.c */ extern int ArrayGetOffset(int n, const int *dim, const int *lb, const int *indx); extern int ArrayGetOffset0(int n, const int *tup, const int *scale); extern int ArrayGetNItems(int ndim, const int *dims); extern void ArrayCheckBounds(int ndim, const int *dims, const int *lb); extern void mda_get_range(int n, int *span, const int *st, const int *endp); extern void mda_get_prod(int n, const int *range, int *prod); extern void mda_get_offset_values(int n, int *dist, const int *prod, const int *span); extern int mda_next_tuple(int n, int *curr, const int *span); extern int32 *ArrayGetIntegerTypmods(ArrayType *arr, int *n); /* * prototypes for functions defined in array_expanded.c */ extern Datum expand_array(Datum arraydatum, MemoryContext parentcontext, ArrayMetaState *metacache); extern ExpandedArrayHeader *DatumGetExpandedArray(Datum d); extern ExpandedArrayHeader *DatumGetExpandedArrayX(Datum d, ArrayMetaState *metacache); extern AnyArrayType *DatumGetAnyArrayP(Datum d); extern void deconstruct_expanded_array(ExpandedArrayHeader *eah); #endif /* ARRAY_H */ pg_query-4.2.3/ext/pg_query/include/utils/regproc.h0000644000004100000410000000275714510636647022462 0ustar www-datawww-data/*------------------------------------------------------------------------- * * regproc.h * Functions for the built-in types regproc, regclass, regtype, etc. * * Portions Copyright (c) 1996-2022, 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); extern char *format_procedure(Oid procedure_oid); extern char *format_procedure_qualified(Oid procedure_oid); extern void format_procedure_parts(Oid operator_oid, List **objnames, List **objargs, 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 pg_query-4.2.3/ext/pg_query/include/utils/float.h0000644000004100000410000002036714510636647022123 0ustar www-datawww-data/*------------------------------------------------------------------------- * * float.h * Definitions for the built-in floating-point types * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/include/utils/float.h * *------------------------------------------------------------------------- */ #ifndef FLOAT_H #define FLOAT_H #include #ifndef M_PI /* From my RH5.2 gcc math.h file - thomas 2000-04-03 */ #define M_PI 3.14159265358979323846 #endif /* Radians per degree, a.k.a. PI / 180 */ #define RADIANS_PER_DEGREE 0.0174532925199432957692 /* Visual C++ etc lacks NAN, and won't accept 0.0/0.0. */ #if defined(WIN32) && !defined(NAN) static const uint32 nan[2] = {0xffffffff, 0x7fffffff}; #define NAN (*(const float8 *) nan) #endif extern PGDLLIMPORT int extra_float_digits; /* * Utility functions in float.c */ extern void float_overflow_error(void) pg_attribute_noreturn(); extern void float_underflow_error(void) pg_attribute_noreturn(); extern void float_zero_divide_error(void) pg_attribute_noreturn(); extern int is_infinite(float8 val); extern float8 float8in_internal(char *num, char **endptr_p, const char *type_name, const char *orig_string); extern float8 float8in_internal_opt_error(char *num, char **endptr_p, const char *type_name, const char *orig_string, bool *have_error); extern char *float8out_internal(float8 num); extern int float4_cmp_internal(float4 a, float4 b); extern int float8_cmp_internal(float8 a, float8 b); /* * Routines to provide reasonably platform-independent handling of * infinity and NaN * * We assume that isinf() and isnan() are available and work per spec. * (On some platforms, we have to supply our own; see src/port.) However, * generating an Infinity or NaN in the first place is less well standardized; * pre-C99 systems tend not to have C99's INFINITY and NaN macros. We * centralize our workarounds for this here. */ /* * The funny placements of the two #pragmas is necessary because of a * long lived bug in the Microsoft compilers. * See http://support.microsoft.com/kb/120968/en-us for details */ #ifdef _MSC_VER #pragma warning(disable:4756) #endif static inline float4 get_float4_infinity(void) { #ifdef INFINITY /* C99 standard way */ return (float4) INFINITY; #else #ifdef _MSC_VER #pragma warning(default:4756) #endif /* * On some platforms, HUGE_VAL is an infinity, elsewhere it's just the * largest normal float8. We assume forcing an overflow will get us a * true infinity. */ return (float4) (HUGE_VAL * HUGE_VAL); #endif } static inline float8 get_float8_infinity(void) { #ifdef INFINITY /* C99 standard way */ return (float8) INFINITY; #else /* * On some platforms, HUGE_VAL is an infinity, elsewhere it's just the * largest normal float8. We assume forcing an overflow will get us a * true infinity. */ return (float8) (HUGE_VAL * HUGE_VAL); #endif } static inline float4 get_float4_nan(void) { #ifdef NAN /* C99 standard way */ return (float4) NAN; #else /* Assume we can get a NAN via zero divide */ return (float4) (0.0 / 0.0); #endif } static inline float8 get_float8_nan(void) { /* (float8) NAN doesn't work on some NetBSD/MIPS releases */ #if defined(NAN) && !(defined(__NetBSD__) && defined(__mips__)) /* C99 standard way */ return (float8) NAN; #else /* Assume we can get a NaN via zero divide */ return (float8) (0.0 / 0.0); #endif } /* * Floating-point arithmetic with overflow/underflow reported as errors * * There isn't any way to check for underflow of addition/subtraction * because numbers near the underflow value have already been rounded to * the point where we can't detect that the two values were originally * different, e.g. on x86, '1e-45'::float4 == '2e-45'::float4 == * 1.4013e-45. */ static inline float4 float4_pl(const float4 val1, const float4 val2) { float4 result; result = val1 + val2; if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) float_overflow_error(); return result; } static inline float8 float8_pl(const float8 val1, const float8 val2) { float8 result; result = val1 + val2; if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) float_overflow_error(); return result; } static inline float4 float4_mi(const float4 val1, const float4 val2) { float4 result; result = val1 - val2; if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) float_overflow_error(); return result; } static inline float8 float8_mi(const float8 val1, const float8 val2) { float8 result; result = val1 - val2; if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) float_overflow_error(); return result; } static inline float4 float4_mul(const float4 val1, const float4 val2) { float4 result; result = val1 * val2; if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) float_overflow_error(); if (unlikely(result == 0.0f) && val1 != 0.0f && val2 != 0.0f) float_underflow_error(); return result; } static inline float8 float8_mul(const float8 val1, const float8 val2) { float8 result; result = val1 * val2; if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) float_overflow_error(); if (unlikely(result == 0.0) && val1 != 0.0 && val2 != 0.0) float_underflow_error(); return result; } static inline float4 float4_div(const float4 val1, const float4 val2) { float4 result; if (unlikely(val2 == 0.0f) && !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 */ pg_query-4.2.3/ext/pg_query/include/utils/tuplestore.h0000644000004100000410000000644614510636647023226 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/tuplestore.h * *------------------------------------------------------------------------- */ #ifndef TUPLESTORE_H #define TUPLESTORE_H #include "executor/tuptable.h" /* Tuplestorestate is an opaque type whose details are not known outside * tuplestore.c. */ typedef struct Tuplestorestate Tuplestorestate; /* * Currently we only need to store MinimalTuples, but it would be easy * to support the same behavior for IndexTuples and/or bare Datums. */ extern Tuplestorestate *tuplestore_begin_heap(bool randomAccess, bool interXact, int maxKBytes); extern void tuplestore_set_eflags(Tuplestorestate *state, int eflags); extern void tuplestore_puttupleslot(Tuplestorestate *state, TupleTableSlot *slot); extern void tuplestore_puttuple(Tuplestorestate *state, HeapTuple tuple); extern void tuplestore_putvalues(Tuplestorestate *state, TupleDesc tdesc, Datum *values, bool *isnull); /* Backwards compatibility macro */ #define tuplestore_donestoring(state) ((void) 0) extern int tuplestore_alloc_read_pointer(Tuplestorestate *state, int eflags); extern void tuplestore_select_read_pointer(Tuplestorestate *state, int ptr); extern void tuplestore_copy_read_pointer(Tuplestorestate *state, int srcptr, int destptr); extern void tuplestore_trim(Tuplestorestate *state); extern bool tuplestore_in_memory(Tuplestorestate *state); extern bool tuplestore_gettupleslot(Tuplestorestate *state, bool forward, bool copy, TupleTableSlot *slot); extern bool tuplestore_advance(Tuplestorestate *state, bool forward); extern bool tuplestore_skiptuples(Tuplestorestate *state, int64 ntuples, bool forward); extern int64 tuplestore_tuple_count(Tuplestorestate *state); extern bool tuplestore_ateof(Tuplestorestate *state); extern void tuplestore_rescan(Tuplestorestate *state); extern void tuplestore_clear(Tuplestorestate *state); extern void tuplestore_end(Tuplestorestate *state); #endif /* TUPLESTORE_H */ pg_query-4.2.3/ext/pg_query/include/utils/backend_progress.h0000644000004100000410000000227714510636647024331 0ustar www-datawww-data/* ---------- * 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-2022, 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_update_multi_param(int nparam, const int *index, const int64 *val); extern void pgstat_progress_end_command(void); #endif /* BACKEND_PROGRESS_H */ pg_query-4.2.3/ext/pg_query/include/utils/fmgroids.h0000644000004100000410000031456014510636647022631 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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_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_BGWRITER_TIMED_CHECKPOINTS 2769 #define F_PG_STAT_GET_BGWRITER_REQUESTED_CHECKPOINTS 2770 #define F_PG_STAT_GET_BGWRITER_BUF_WRITTEN_CHECKPOINTS 2771 #define F_PG_STAT_GET_BGWRITER_BUF_WRITTEN_CLEAN 2772 #define F_PG_STAT_GET_BGWRITER_MAXWRITTEN_CLEAN 2773 #define F_GINQUERYARRAYEXTRACT 2774 #define F_PG_STAT_GET_BUF_WRITTEN_BACKEND 2775 #define F_ANYNONARRAY_IN 2777 #define F_ANYNONARRAY_OUT 2778 #define F_PG_STAT_GET_LAST_VACUUM_TIME 2781 #define F_PG_STAT_GET_LAST_AUTOVACUUM_TIME 2782 #define F_PG_STAT_GET_LAST_ANALYZE_TIME 2783 #define F_PG_STAT_GET_LAST_AUTOANALYZE_TIME 2784 #define F_INT8_AVG_COMBINE 2785 #define F_INT8_AVG_SERIALIZE 2786 #define F_INT8_AVG_DESERIALIZE 2787 #define F_PG_STAT_GET_BACKEND_WAIT_EVENT_TYPE 2788 #define F_TIDGT 2790 #define F_TIDLT 2791 #define F_TIDGE 2792 #define F_TIDLE 2793 #define F_BTTIDCMP 2794 #define F_TIDLARGER 2795 #define F_TIDSMALLER 2796 #define F_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_PG_STAT_GET_BUF_FSYNC_BACKEND 3063 #define F_GIST_POINT_DISTANCE 3064 #define F_PG_STAT_GET_DB_CONFLICT_TABLESPACE 3065 #define F_PG_STAT_GET_DB_CONFLICT_LOCK 3066 #define F_PG_STAT_GET_DB_CONFLICT_SNAPSHOT 3067 #define F_PG_STAT_GET_DB_CONFLICT_BUFFERPIN 3068 #define F_PG_STAT_GET_DB_CONFLICT_STARTUP_DEADLOCK 3069 #define F_PG_STAT_GET_DB_CONFLICT_ALL 3070 #define F_PG_WAL_REPLAY_PAUSE 3071 #define F_PG_WAL_REPLAY_RESUME 3072 #define F_PG_IS_WAL_REPLAY_PAUSED 3073 #define F_PG_STAT_GET_DB_STAT_RESET_TIME 3074 #define F_PG_STAT_GET_BGWRITER_STAT_RESET_TIME 3075 #define F_GINARRAYEXTRACT_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_CHECKPOINT_WRITE_TIME 3160 #define F_PG_STAT_GET_CHECKPOINT_SYNC_TIME 3161 #define F_PG_COLLATION_FOR 3162 #define F_PG_TRIGGER_DEPTH 3163 #define F_PG_WAL_LSN_DIFF 3165 #define F_PG_SIZE_PRETTY_NUMERIC 3166 #define F_ARRAY_REMOVE 3167 #define F_ARRAY_REPLACE 3168 #define F_RANGESEL 3169 #define F_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_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_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 3577 #define F_PG_LOGICAL_EMIT_MESSAGE_BOOL_TEXT_BYTEA 3578 #define F_JSONB_INSERT 3579 #define F_PG_XACT_COMMIT_TIMESTAMP 3581 #define F_BINARY_UPGRADE_SET_NEXT_PG_TYPE_OID 3582 #define F_PG_LAST_COMMITTED_XACT 3583 #define F_BINARY_UPGRADE_SET_NEXT_ARRAY_PG_TYPE_OID 3584 #define F_BINARY_UPGRADE_SET_NEXT_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_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_PG_ROTATE_LOGFILE_OLD 4099 #define F_PG_READ_FILE_OLD 4100 #define F_BINARY_UPGRADE_SET_MISSING_VALUE 4101 #define F_BRIN_INCLUSION_OPCINFO 4105 #define F_BRIN_INCLUSION_ADD_VALUE 4106 #define F_BRIN_INCLUSION_CONSISTENT 4107 #define F_BRIN_INCLUSION_UNION 4108 #define F_MACADDR8_IN 4110 #define F_MACADDR8_OUT 4111 #define F_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_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_PG_LSN 6103 #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_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 #endif /* FMGROIDS_H */ pg_query-4.2.3/ext/pg_query/include/utils/hsearch.h0000644000004100000410000001351314510636647022426 0ustar www-datawww-data/*------------------------------------------------------------------------- * * hsearch.h * exported definitions for utils/hash/dynahash.c; see notes therein * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/utils/rls.h0000644000004100000410000000337014510636647021611 0ustar www-datawww-data/*------------------------------------------------------------------------- * * rls.h * Header file for Row Level Security (RLS) utility commands to be used * with the rowsecurity feature. * * Copyright (c) 2007-2022, PostgreSQL Global Development Group * * src/include/utils/rls.h * *------------------------------------------------------------------------- */ #ifndef RLS_H #define RLS_H /* GUC variable */ extern PGDLLIMPORT bool row_security; /* * Used by callers of check_enable_rls. * * RLS could be completely disabled on the tables involved in the query, * which is the simple case, or it may depend on the current environment * (the role which is running the query or the value of the row_security * GUC), or it might be simply enabled as usual. * * If RLS isn't on the table involved then RLS_NONE is returned to indicate * that we don't need to worry about invalidating the query plan for RLS * reasons. If RLS is on the table, but we are bypassing it for now, then * we return RLS_NONE_ENV to indicate that, if the environment changes, * we need to invalidate and replan. Finally, if RLS should be turned on * for the query, then we return RLS_ENABLED, which means we also need to * invalidate if the environment changes. * * Note that RLS_ENABLED will also be returned if noError is true * (indicating that the caller simply want to know if RLS should be applied * for this user but doesn't want an error thrown if it is; this is used * by other error cases where we're just trying to decide if data from the * table should be passed back to the user or not). */ enum CheckEnableRlsResult { RLS_NONE, RLS_NONE_ENV, RLS_ENABLED }; extern int check_enable_rls(Oid relid, Oid checkAsUser, bool noError); #endif /* RLS_H */ pg_query-4.2.3/ext/pg_query/include/utils/acl.h0000644000004100000410000003334714510636647021557 0ustar www-datawww-data/*------------------------------------------------------------------------- * * acl.h * Definition of (and support for) access control list data structures. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/acl.h * * NOTES * An ACL array is simply an array of AclItems, representing the union * of the privileges represented by the individual items. A zero-length * array represents "no privileges". * * The order of items in the array is important as client utilities (in * particular, pg_dump, though possibly other clients) expect to be able * to issue GRANTs in the ordering of the items in the array. The reason * this matters is that GRANTs WITH GRANT OPTION must be before any GRANTs * which depend on it. This happens naturally in the backend during * operations as we update ACLs in-place, new items are appended, and * existing entries are only removed if there's no dependency on them (no * GRANT can been based on it, or, if there was, those GRANTs are also * removed). * * For backward-compatibility purposes we have to allow null ACL entries * in system catalogs. A null ACL will be treated as meaning "default * protection" (i.e., whatever acldefault() returns). *------------------------------------------------------------------------- */ #ifndef ACL_H #define ACL_H #include "access/htup.h" #include "nodes/parsenodes.h" #include "parser/parse_node.h" #include "utils/snapshot.h" /* * typedef AclMode is declared in parsenodes.h, also the individual privilege * bit meanings are defined there */ #define ACL_ID_PUBLIC 0 /* placeholder for id in a PUBLIC acl item */ /* * AclItem * * Note: must be same size on all platforms, because the size is hardcoded * in the pg_type.h entry for aclitem. */ typedef struct AclItem { Oid ai_grantee; /* ID that this item grants privs to */ Oid ai_grantor; /* grantor of privs */ AclMode ai_privs; /* privilege bits */ } AclItem; /* * The upper 16 bits of the ai_privs field of an AclItem are the grant option * bits, and the lower 16 bits are the actual privileges. We use "rights" * to mean the combined grant option and privilege bits fields. */ #define ACLITEM_GET_PRIVS(item) ((item).ai_privs & 0xFFFF) #define ACLITEM_GET_GOPTIONS(item) (((item).ai_privs >> 16) & 0xFFFF) #define ACLITEM_GET_RIGHTS(item) ((item).ai_privs) #define ACL_GRANT_OPTION_FOR(privs) (((AclMode) (privs) & 0xFFFF) << 16) #define ACL_OPTION_TO_PRIVS(privs) (((AclMode) (privs) >> 16) & 0xFFFF) #define ACLITEM_SET_PRIVS(item,privs) \ ((item).ai_privs = ((item).ai_privs & ~((AclMode) 0xFFFF)) | \ ((AclMode) (privs) & 0xFFFF)) #define ACLITEM_SET_GOPTIONS(item,goptions) \ ((item).ai_privs = ((item).ai_privs & ~(((AclMode) 0xFFFF) << 16)) | \ (((AclMode) (goptions) & 0xFFFF) << 16)) #define ACLITEM_SET_RIGHTS(item,rights) \ ((item).ai_privs = (AclMode) (rights)) #define ACLITEM_SET_PRIVS_GOPTIONS(item,privs,goptions) \ ((item).ai_privs = ((AclMode) (privs) & 0xFFFF) | \ (((AclMode) (goptions) & 0xFFFF) << 16)) #define ACLITEM_ALL_PRIV_BITS ((AclMode) 0xFFFF) #define ACLITEM_ALL_GOPTION_BITS ((AclMode) 0xFFFF << 16) /* * Definitions for convenient access to Acl (array of AclItem). * These are standard PostgreSQL arrays, but are restricted to have one * dimension and no nulls. We also ignore the lower bound when reading, * and set it to one when writing. * * CAUTION: as of PostgreSQL 7.1, these arrays are toastable (just like all * other array types). Therefore, be careful to detoast them with the * macros provided, unless you know for certain that a particular array * can't have been toasted. */ /* * Acl a one-dimensional array of AclItem */ typedef struct ArrayType Acl; #define ACL_NUM(ACL) (ARR_DIMS(ACL)[0]) #define ACL_DAT(ACL) ((AclItem *) ARR_DATA_PTR(ACL)) #define ACL_N_SIZE(N) (ARR_OVERHEAD_NONULLS(1) + ((N) * sizeof(AclItem))) #define ACL_SIZE(ACL) ARR_SIZE(ACL) /* * fmgr macros for these types */ #define DatumGetAclItemP(X) ((AclItem *) DatumGetPointer(X)) #define PG_GETARG_ACLITEM_P(n) DatumGetAclItemP(PG_GETARG_DATUM(n)) #define PG_RETURN_ACLITEM_P(x) PG_RETURN_POINTER(x) #define DatumGetAclP(X) ((Acl *) PG_DETOAST_DATUM(X)) #define DatumGetAclPCopy(X) ((Acl *) PG_DETOAST_DATUM_COPY(X)) #define PG_GETARG_ACL_P(n) DatumGetAclP(PG_GETARG_DATUM(n)) #define PG_GETARG_ACL_P_COPY(n) DatumGetAclPCopy(PG_GETARG_DATUM(n)) #define PG_RETURN_ACL_P(x) PG_RETURN_POINTER(x) /* * ACL modification opcodes for aclupdate */ #define ACL_MODECHG_ADD 1 #define ACL_MODECHG_DEL 2 #define ACL_MODECHG_EQL 3 /* * External representations of the privilege bits --- aclitemin/aclitemout * represent each possible privilege bit with a distinct 1-character code */ #define ACL_INSERT_CHR 'a' /* formerly known as "append" */ #define ACL_SELECT_CHR 'r' /* formerly known as "read" */ #define ACL_UPDATE_CHR 'w' /* formerly known as "write" */ #define ACL_DELETE_CHR 'd' #define ACL_TRUNCATE_CHR 'D' /* super-delete, as it were */ #define ACL_REFERENCES_CHR 'x' #define ACL_TRIGGER_CHR 't' #define ACL_EXECUTE_CHR 'X' #define ACL_USAGE_CHR 'U' #define ACL_CREATE_CHR 'C' #define ACL_CREATE_TEMP_CHR 'T' #define ACL_CONNECT_CHR 'c' #define ACL_SET_CHR 's' #define ACL_ALTER_SYSTEM_CHR 'A' /* string holding all privilege code chars, in order by bitmask position */ #define ACL_ALL_RIGHTS_STR "arwdDxtXUCTcsA" /* * Bitmasks defining "all rights" for each supported object type */ #define ACL_ALL_RIGHTS_COLUMN (ACL_INSERT|ACL_SELECT|ACL_UPDATE|ACL_REFERENCES) #define ACL_ALL_RIGHTS_RELATION (ACL_INSERT|ACL_SELECT|ACL_UPDATE|ACL_DELETE|ACL_TRUNCATE|ACL_REFERENCES|ACL_TRIGGER) #define ACL_ALL_RIGHTS_SEQUENCE (ACL_USAGE|ACL_SELECT|ACL_UPDATE) #define ACL_ALL_RIGHTS_DATABASE (ACL_CREATE|ACL_CREATE_TEMP|ACL_CONNECT) #define ACL_ALL_RIGHTS_FDW (ACL_USAGE) #define ACL_ALL_RIGHTS_FOREIGN_SERVER (ACL_USAGE) #define ACL_ALL_RIGHTS_FUNCTION (ACL_EXECUTE) #define ACL_ALL_RIGHTS_LANGUAGE (ACL_USAGE) #define ACL_ALL_RIGHTS_LARGEOBJECT (ACL_SELECT|ACL_UPDATE) #define ACL_ALL_RIGHTS_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 is_member_of_role(Oid member, Oid role); extern bool is_member_of_role_nosuper(Oid member, Oid role); extern bool is_admin_of_role(Oid member, Oid role); extern void check_is_member_of_role(Oid member, Oid role); extern Oid get_role_oid(const char *rolename, bool missing_ok); extern Oid get_role_oid_or_public(const char *rolename); extern Oid get_rolespec_oid(const RoleSpec *role, bool missing_ok); extern void check_rolespec_name(const RoleSpec *role, const char *detail_msg); extern HeapTuple get_rolespec_tuple(const RoleSpec *role); extern char *get_rolespec_name(const RoleSpec *role); extern void select_best_grantor(Oid roleId, AclMode privileges, const Acl *acl, Oid ownerId, Oid *grantorId, AclMode *grantOptions); extern void initialize_acl(void); /* * prototypes for functions in aclchk.c */ extern void ExecuteGrantStmt(GrantStmt *stmt); extern void ExecAlterDefaultPrivilegesStmt(ParseState *pstate, AlterDefaultPrivilegesStmt *stmt); extern void RemoveRoleFromObjectACL(Oid roleid, Oid classid, Oid objid); extern AclMode pg_attribute_aclmask(Oid table_oid, AttrNumber attnum, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_attribute_aclmask_ext(Oid table_oid, AttrNumber attnum, Oid roleid, AclMode mask, AclMaskHow how, bool *is_missing); extern AclMode pg_class_aclmask(Oid table_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_class_aclmask_ext(Oid table_oid, Oid roleid, AclMode mask, AclMaskHow how, bool *is_missing); extern AclMode pg_database_aclmask(Oid db_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_parameter_aclmask(const char *name, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_parameter_acl_aclmask(Oid acl_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_proc_aclmask(Oid proc_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_language_aclmask(Oid lang_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_largeobject_aclmask_snapshot(Oid lobj_oid, Oid roleid, AclMode mask, AclMaskHow how, Snapshot snapshot); extern AclMode pg_namespace_aclmask(Oid nsp_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_tablespace_aclmask(Oid spc_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_foreign_data_wrapper_aclmask(Oid fdw_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_foreign_server_aclmask(Oid srv_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_type_aclmask(Oid type_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclResult pg_attribute_aclcheck(Oid table_oid, AttrNumber attnum, Oid roleid, AclMode mode); extern AclResult pg_attribute_aclcheck_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_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_database_aclcheck(Oid db_oid, Oid roleid, AclMode mode); extern AclResult pg_parameter_aclcheck(const char *name, Oid roleid, AclMode mode); extern AclResult pg_parameter_acl_aclcheck(Oid acl_oid, Oid roleid, AclMode mode); extern AclResult pg_proc_aclcheck(Oid proc_oid, Oid roleid, AclMode mode); extern AclResult pg_language_aclcheck(Oid lang_oid, Oid roleid, AclMode mode); extern AclResult pg_largeobject_aclcheck_snapshot(Oid lang_oid, Oid roleid, AclMode mode, Snapshot snapshot); extern AclResult pg_namespace_aclcheck(Oid nsp_oid, Oid roleid, AclMode mode); extern AclResult pg_tablespace_aclcheck(Oid spc_oid, Oid roleid, AclMode mode); extern AclResult pg_foreign_data_wrapper_aclcheck(Oid fdw_oid, Oid roleid, AclMode mode); extern AclResult pg_foreign_server_aclcheck(Oid srv_oid, Oid roleid, AclMode mode); extern AclResult pg_type_aclcheck(Oid type_oid, Oid roleid, AclMode mode); extern void aclcheck_error(AclResult aclerr, ObjectType objtype, const char *objectname); extern void aclcheck_error_col(AclResult aclerr, ObjectType objtype, const char *objectname, const char *colname); extern void aclcheck_error_type(AclResult aclerr, Oid typeOid); extern void recordExtObjInitPriv(Oid objoid, Oid classoid); extern void removeExtObjInitPriv(Oid objoid, Oid classoid); /* ownercheck routines just return true (owner) or false (not) */ extern bool pg_class_ownercheck(Oid class_oid, Oid roleid); extern bool pg_type_ownercheck(Oid type_oid, Oid roleid); extern bool pg_oper_ownercheck(Oid oper_oid, Oid roleid); extern bool pg_proc_ownercheck(Oid proc_oid, Oid roleid); extern bool pg_language_ownercheck(Oid lan_oid, Oid roleid); extern bool pg_largeobject_ownercheck(Oid lobj_oid, Oid roleid); extern bool pg_namespace_ownercheck(Oid nsp_oid, Oid roleid); extern bool pg_tablespace_ownercheck(Oid spc_oid, Oid roleid); extern bool pg_opclass_ownercheck(Oid opc_oid, Oid roleid); extern bool pg_opfamily_ownercheck(Oid opf_oid, Oid roleid); extern bool pg_database_ownercheck(Oid db_oid, Oid roleid); extern bool pg_collation_ownercheck(Oid coll_oid, Oid roleid); extern bool pg_conversion_ownercheck(Oid conv_oid, Oid roleid); extern bool pg_ts_dict_ownercheck(Oid dict_oid, Oid roleid); extern bool pg_ts_config_ownercheck(Oid cfg_oid, Oid roleid); extern bool pg_foreign_data_wrapper_ownercheck(Oid srv_oid, Oid roleid); extern bool pg_foreign_server_ownercheck(Oid srv_oid, Oid roleid); extern bool pg_event_trigger_ownercheck(Oid et_oid, Oid roleid); extern bool pg_extension_ownercheck(Oid ext_oid, Oid roleid); extern bool pg_publication_ownercheck(Oid pub_oid, Oid roleid); extern bool pg_subscription_ownercheck(Oid sub_oid, Oid roleid); extern bool pg_statistics_object_ownercheck(Oid stat_oid, Oid roleid); extern bool has_createrole_privilege(Oid roleid); extern bool has_bypassrls_privilege(Oid roleid); #endif /* ACL_H */ pg_query-4.2.3/ext/pg_query/include/utils/date.h0000644000004100000410000000625614510636647021734 0ustar www-datawww-data/*------------------------------------------------------------------------- * * date.h * Definitions for the SQL "date" and "time" types. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/date.h * *------------------------------------------------------------------------- */ #ifndef DATE_H #define DATE_H #include #include "datatype/timestamp.h" #include "fmgr.h" #include "pgtime.h" typedef int32 DateADT; typedef int64 TimeADT; typedef struct { TimeADT time; /* all time units other than months and years */ int32 zone; /* numeric time zone, in seconds */ } TimeTzADT; /* * Infinity and minus infinity must be the max and min values of DateADT. */ #define DATEVAL_NOBEGIN ((DateADT) PG_INT32_MIN) #define DATEVAL_NOEND ((DateADT) PG_INT32_MAX) #define DATE_NOBEGIN(j) ((j) = DATEVAL_NOBEGIN) #define DATE_IS_NOBEGIN(j) ((j) == DATEVAL_NOBEGIN) #define DATE_NOEND(j) ((j) = DATEVAL_NOEND) #define DATE_IS_NOEND(j) ((j) == DATEVAL_NOEND) #define DATE_NOT_FINITE(j) (DATE_IS_NOBEGIN(j) || DATE_IS_NOEND(j)) /* * Macros for fmgr-callable functions. * * For TimeADT, we make use of the same support routines as for int64. * Therefore TimeADT is pass-by-reference if and only if int64 is! */ #define MAX_TIME_PRECISION 6 #define DatumGetDateADT(X) ((DateADT) DatumGetInt32(X)) #define DatumGetTimeADT(X) ((TimeADT) DatumGetInt64(X)) #define DatumGetTimeTzADTP(X) ((TimeTzADT *) DatumGetPointer(X)) #define DateADTGetDatum(X) Int32GetDatum(X) #define TimeADTGetDatum(X) Int64GetDatum(X) #define TimeTzADTPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_DATEADT(n) DatumGetDateADT(PG_GETARG_DATUM(n)) #define PG_GETARG_TIMEADT(n) DatumGetTimeADT(PG_GETARG_DATUM(n)) #define PG_GETARG_TIMETZADT_P(n) DatumGetTimeTzADTP(PG_GETARG_DATUM(n)) #define PG_RETURN_DATEADT(x) return DateADTGetDatum(x) #define PG_RETURN_TIMEADT(x) return TimeADTGetDatum(x) #define PG_RETURN_TIMETZADT_P(x) return TimeTzADTPGetDatum(x) /* date.c */ extern int32 anytime_typmod_check(bool istz, int32 typmod); extern double date2timestamp_no_overflow(DateADT dateVal); extern Timestamp date2timestamp_opt_overflow(DateADT dateVal, int *overflow); extern TimestampTz date2timestamptz_opt_overflow(DateADT dateVal, int *overflow); extern int32 date_cmp_timestamp_internal(DateADT dateVal, Timestamp dt2); extern int32 date_cmp_timestamptz_internal(DateADT dateVal, TimestampTz dt2); extern void EncodeSpecialDate(DateADT dt, char *str); extern DateADT GetSQLCurrentDate(void); extern TimeTzADT *GetSQLCurrentTime(int32 typmod); extern TimeADT GetSQLLocalTime(int32 typmod); extern int time2tm(TimeADT time, struct pg_tm *tm, fsec_t *fsec); extern int timetz2tm(TimeTzADT *time, struct pg_tm *tm, fsec_t *fsec, int *tzp); extern int tm2time(struct pg_tm *tm, fsec_t fsec, TimeADT *result); extern int tm2timetz(struct pg_tm *tm, fsec_t fsec, int tz, TimeTzADT *result); extern bool time_overflows(int hour, int min, int sec, fsec_t fsec); extern bool float_time_overflows(int hour, int min, double sec); extern void AdjustTimeForTypmod(TimeADT *time, int32 typmod); #endif /* DATE_H */ pg_query-4.2.3/ext/pg_query/include/utils/queryenvironment.h0000644000004100000410000000537214510636647024447 0ustar www-datawww-data/*------------------------------------------------------------------------- * * queryenvironment.h * Access to functions to mutate the query environment and retrieve the * actual data related to entries (if any). * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/utils/snapmgr.h0000644000004100000410000001550014510636647022456 0ustar www-datawww-data/*------------------------------------------------------------------------- * * snapmgr.h * POSTGRES snapshot manager * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/snapmgr.h * *------------------------------------------------------------------------- */ #ifndef SNAPMGR_H #define SNAPMGR_H #include "access/transam.h" #include "utils/relcache.h" #include "utils/resowner.h" #include "utils/snapshot.h" /* * The structure used to map times to TransactionId values for the "snapshot * too old" feature must have a few entries at the tail to hold old values; * otherwise the lookup will often fail and the expected early pruning or * vacuum will not usually occur. It is best if this padding is for a number * of minutes greater than a thread would normally be stalled, but it's OK if * early vacuum opportunities are occasionally missed, so there's no need to * use an extreme value or get too fancy. 10 minutes seems plenty. */ #define OLD_SNAPSHOT_PADDING_ENTRIES 10 #define OLD_SNAPSHOT_TIME_MAP_ENTRIES (old_snapshot_threshold + OLD_SNAPSHOT_PADDING_ENTRIES) /* * Common definition of relation properties that allow early pruning/vacuuming * when old_snapshot_threshold >= 0. */ #define RelationAllowsEarlyPruning(rel) \ ( \ RelationIsPermanent(rel) && !IsCatalogRelation(rel) \ && !RelationIsAccessibleInLogicalDecoding(rel) \ ) #define EarlyPruningEnabled(rel) (old_snapshot_threshold >= 0 && RelationAllowsEarlyPruning(rel)) /* GUC variables */ extern PGDLLIMPORT int old_snapshot_threshold; extern Size SnapMgrShmemSize(void); extern void SnapMgrInit(void); extern TimestampTz GetSnapshotCurrentTimestamp(void); extern TimestampTz GetOldSnapshotThresholdTimestamp(void); extern void SnapshotTooOldMagicForTest(void); 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) static inline bool OldSnapshotThresholdActive(void) { return old_snapshot_threshold >= 0; } 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 bool TransactionIdLimitedForOldSnapshots(TransactionId recentXmin, Relation relation, TransactionId *limit_xid, TimestampTz *limit_ts); extern void SetOldSnapshotThresholdTimestamp(TimestampTz ts, TransactionId xlimit); extern void MaintainOldSnapshotTimeMapping(TimestampTz whenTaken, TransactionId xmin); 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 FullTransactionId GlobalVisTestNonRemovableFullHorizon(GlobalVisState *state); extern TransactionId GlobalVisTestNonRemovableHorizon(GlobalVisState *state); 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 snapshot_now, struct HTAB *tuplecids); extern void TeardownHistoricSnapshot(bool is_error); extern bool HistoricSnapshotActive(void); extern Size EstimateSnapshotSpace(Snapshot snapshot); extern void SerializeSnapshot(Snapshot snapshot, char *start_address); extern Snapshot RestoreSnapshot(char *start_address); extern void RestoreTransactionSnapshot(Snapshot snapshot, void *source_pgproc); #endif /* SNAPMGR_H */ pg_query-4.2.3/ext/pg_query/include/utils/snapshot.h0000644000004100000410000001752514510636647022657 0ustar www-datawww-data/*------------------------------------------------------------------------- * * snapshot.h * POSTGRES snapshot definition * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/utils/xml.h0000644000004100000410000000534214510636647021612 0ustar www-datawww-data/*------------------------------------------------------------------------- * * xml.h * Declarations for XML data type support. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/xml.h * *------------------------------------------------------------------------- */ #ifndef XML_H #define XML_H #include "executor/tablefunc.h" #include "fmgr.h" #include "nodes/execnodes.h" #include "nodes/primnodes.h" typedef struct varlena xmltype; typedef enum { XML_STANDALONE_YES, XML_STANDALONE_NO, XML_STANDALONE_NO_VALUE, XML_STANDALONE_OMITTED } XmlStandaloneType; typedef enum { XMLBINARY_BASE64, XMLBINARY_HEX } XmlBinaryType; typedef enum { PG_XML_STRICTNESS_LEGACY, /* ignore errors unless function result * indicates error condition */ PG_XML_STRICTNESS_WELLFORMED, /* ignore non-parser messages */ PG_XML_STRICTNESS_ALL /* report all notices/warnings/errors */ } PgXmlStrictness; /* struct PgXmlErrorContext is private to xml.c */ typedef struct PgXmlErrorContext PgXmlErrorContext; #define DatumGetXmlP(X) ((xmltype *) PG_DETOAST_DATUM(X)) #define XmlPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_XML_P(n) DatumGetXmlP(PG_GETARG_DATUM(n)) #define PG_RETURN_XML_P(x) PG_RETURN_POINTER(x) extern void pg_xml_init_library(void); extern PgXmlErrorContext *pg_xml_init(PgXmlStrictness strictness); extern void pg_xml_done(PgXmlErrorContext *errcxt, bool isError); extern bool pg_xml_error_occurred(PgXmlErrorContext *errcxt); extern void xml_ereport(PgXmlErrorContext *errcxt, int level, int sqlcode, const char *msg); extern xmltype *xmlconcat(List *args); extern xmltype *xmlelement(XmlExpr *xexpr, Datum *named_argvalue, bool *named_argnull, Datum *argvalue, bool *argnull); extern xmltype *xmlparse(text *data, XmlOptionType xmloption, bool preserve_whitespace); extern xmltype *xmlpi(const char *target, text *arg, bool arg_is_null, bool *result_is_null); extern xmltype *xmlroot(xmltype *data, text *version, int standalone); extern bool xml_is_document(xmltype *arg); extern text *xmltotext_with_xmloption(xmltype *data, XmlOptionType xmloption_arg); extern char *escape_xml(const char *str); extern char *map_sql_identifier_to_xml_name(const char *ident, bool fully_escaped, bool escape_period); extern char *map_xml_name_to_sql_identifier(const char *name); extern char *map_sql_value_to_xml_value(Datum value, Oid type, bool xml_escape_strings); extern 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 */ pg_query-4.2.3/ext/pg_query/include/utils/pg_locale.h0000644000004100000410000000745714510636647022750 0ustar www-datawww-data/*----------------------------------------------------------------------- * * PostgreSQL locale utilities * * src/include/utils/pg_locale.h * * Copyright (c) 2002-2022, PostgreSQL Global Development Group * *----------------------------------------------------------------------- */ #ifndef _PG_LOCALE_ #define _PG_LOCALE_ #if defined(LOCALE_T_IN_XLOCALE) || defined(WCSTOMBS_L_IN_XLOCALE) #include #endif #ifdef USE_ICU #include #endif #include "utils/guc.h" #ifdef USE_ICU /* * ucol_strcollUTF8() was introduced in ICU 50, but it is buggy before ICU 53. * (see * ) */ #if U_ICU_VERSION_MAJOR_NUM >= 53 #define HAVE_UCOL_STRCOLLUTF8 1 #else #undef HAVE_UCOL_STRCOLLUTF8 #endif #endif /* 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; /* 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[]; extern bool check_locale_messages(char **newval, void **extra, GucSource source); extern void assign_locale_messages(const char *newval, void *extra); extern bool check_locale_monetary(char **newval, void **extra, GucSource source); extern void assign_locale_monetary(const char *newval, void *extra); extern bool check_locale_numeric(char **newval, void **extra, GucSource source); extern void assign_locale_numeric(const char *newval, void *extra); extern bool check_locale_time(char **newval, void **extra, GucSource source); extern void assign_locale_time(const char *newval, void *extra); extern bool check_locale(int category, const char *locale, char **canonname); extern char *pg_perm_setlocale(int category, const char *locale); extern void check_strxfrm_bug(void); extern bool lc_collate_is_c(Oid collation); extern bool lc_ctype_is_c(Oid collation); /* * Return the POSIX lconv struct (contains number/money formatting * information) with locale information for all categories. */ extern struct lconv *PGLC_localeconv(void); extern void cache_locale_time(void); /* * We define our own wrapper around locale_t so we can keep the same * function signatures for all builds, while not having to create a * fake version of the standard type locale_t in the global namespace. * pg_locale_t is occasionally checked for truth, so make it a pointer. */ struct pg_locale_struct { char provider; bool deterministic; union { #ifdef HAVE_LOCALE_T locale_t lt; #endif #ifdef USE_ICU struct { const char *locale; UCollator *ucol; } icu; #endif int dummy; /* in case we have neither LOCALE_T nor ICU */ } info; }; typedef struct pg_locale_struct *pg_locale_t; extern PGDLLIMPORT struct pg_locale_struct default_locale; extern void make_icu_collator(const char *iculocstr, struct pg_locale_struct *resultp); extern pg_locale_t pg_newlocale_from_collation(Oid collid); extern char *get_collation_actual_version(char collprovider, const char *collcollate); #ifdef USE_ICU extern int32_t icu_to_uchar(UChar **buff_uchar, const char *buff, size_t nbytes); extern int32_t icu_from_uchar(char **result, const UChar *buff_uchar, int32_t len_uchar); #endif extern void check_icu_locale(const char *icu_locale); /* 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_ */ pg_query-4.2.3/ext/pg_query/include/utils/errcodes.h0000644000004100000410000005347614510636647022633 0ustar www-datawww-data/* 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') /* 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 72 - Snapshot Failure */ #define ERRCODE_SNAPSHOT_TOO_OLD MAKE_SQLSTATE('7','2','0','0','0') /* Class F0 - Configuration File Error */ #define ERRCODE_CONFIG_FILE_ERROR MAKE_SQLSTATE('F','0','0','0','0') #define ERRCODE_LOCK_FILE_EXISTS MAKE_SQLSTATE('F','0','0','0','1') /* Class HV - Foreign Data Wrapper Error (SQL/MED) */ #define ERRCODE_FDW_ERROR MAKE_SQLSTATE('H','V','0','0','0') #define ERRCODE_FDW_COLUMN_NAME_NOT_FOUND MAKE_SQLSTATE('H','V','0','0','5') #define ERRCODE_FDW_DYNAMIC_PARAMETER_VALUE_NEEDED MAKE_SQLSTATE('H','V','0','0','2') #define ERRCODE_FDW_FUNCTION_SEQUENCE_ERROR MAKE_SQLSTATE('H','V','0','1','0') #define ERRCODE_FDW_INCONSISTENT_DESCRIPTOR_INFORMATION MAKE_SQLSTATE('H','V','0','2','1') #define ERRCODE_FDW_INVALID_ATTRIBUTE_VALUE MAKE_SQLSTATE('H','V','0','2','4') #define ERRCODE_FDW_INVALID_COLUMN_NAME MAKE_SQLSTATE('H','V','0','0','7') #define ERRCODE_FDW_INVALID_COLUMN_NUMBER MAKE_SQLSTATE('H','V','0','0','8') #define ERRCODE_FDW_INVALID_DATA_TYPE MAKE_SQLSTATE('H','V','0','0','4') #define ERRCODE_FDW_INVALID_DATA_TYPE_DESCRIPTORS MAKE_SQLSTATE('H','V','0','0','6') #define ERRCODE_FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER MAKE_SQLSTATE('H','V','0','9','1') #define ERRCODE_FDW_INVALID_HANDLE MAKE_SQLSTATE('H','V','0','0','B') #define ERRCODE_FDW_INVALID_OPTION_INDEX MAKE_SQLSTATE('H','V','0','0','C') #define ERRCODE_FDW_INVALID_OPTION_NAME MAKE_SQLSTATE('H','V','0','0','D') #define ERRCODE_FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH MAKE_SQLSTATE('H','V','0','9','0') #define ERRCODE_FDW_INVALID_STRING_FORMAT MAKE_SQLSTATE('H','V','0','0','A') #define ERRCODE_FDW_INVALID_USE_OF_NULL_POINTER MAKE_SQLSTATE('H','V','0','0','9') #define ERRCODE_FDW_TOO_MANY_HANDLES MAKE_SQLSTATE('H','V','0','1','4') #define ERRCODE_FDW_OUT_OF_MEMORY MAKE_SQLSTATE('H','V','0','0','1') #define ERRCODE_FDW_NO_SCHEMAS MAKE_SQLSTATE('H','V','0','0','P') #define ERRCODE_FDW_OPTION_NAME_NOT_FOUND MAKE_SQLSTATE('H','V','0','0','J') #define ERRCODE_FDW_REPLY_HANDLE MAKE_SQLSTATE('H','V','0','0','K') #define ERRCODE_FDW_SCHEMA_NOT_FOUND MAKE_SQLSTATE('H','V','0','0','Q') #define ERRCODE_FDW_TABLE_NOT_FOUND MAKE_SQLSTATE('H','V','0','0','R') #define ERRCODE_FDW_UNABLE_TO_CREATE_EXECUTION MAKE_SQLSTATE('H','V','0','0','L') #define ERRCODE_FDW_UNABLE_TO_CREATE_REPLY MAKE_SQLSTATE('H','V','0','0','M') #define ERRCODE_FDW_UNABLE_TO_ESTABLISH_CONNECTION MAKE_SQLSTATE('H','V','0','0','N') /* Class P0 - PL/pgSQL Error */ #define ERRCODE_PLPGSQL_ERROR MAKE_SQLSTATE('P','0','0','0','0') #define ERRCODE_RAISE_EXCEPTION MAKE_SQLSTATE('P','0','0','0','1') #define ERRCODE_NO_DATA_FOUND MAKE_SQLSTATE('P','0','0','0','2') #define ERRCODE_TOO_MANY_ROWS MAKE_SQLSTATE('P','0','0','0','3') #define ERRCODE_ASSERT_FAILURE MAKE_SQLSTATE('P','0','0','0','4') /* Class XX - Internal Error */ #define ERRCODE_INTERNAL_ERROR MAKE_SQLSTATE('X','X','0','0','0') #define ERRCODE_DATA_CORRUPTED MAKE_SQLSTATE('X','X','0','0','1') #define ERRCODE_INDEX_CORRUPTED MAKE_SQLSTATE('X','X','0','0','2') pg_query-4.2.3/ext/pg_query/include/utils/guc.h0000644000004100000410000004324214510636647021571 0ustar www-datawww-data/*-------------------------------------------------------------------- * guc.h * * External declarations pertaining to backend/utils/misc/guc.c and * backend/utils/misc/guc-file.l * * Copyright (c) 2000-2022, 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; 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 */ #define GUC_LIST_INPUT 0x0001 /* input can be list format */ #define GUC_LIST_QUOTE 0x0002 /* double-quote list elements */ #define GUC_NO_SHOW_ALL 0x0004 /* exclude from SHOW ALL */ #define GUC_NO_RESET_ALL 0x0008 /* exclude from RESET ALL */ #define GUC_REPORT 0x0010 /* auto-report changes to client */ #define GUC_NOT_IN_SAMPLE 0x0020 /* not in postgresql.conf.sample */ #define GUC_DISALLOW_IN_FILE 0x0040 /* can't set in postgresql.conf */ #define GUC_CUSTOM_PLACEHOLDER 0x0080 /* placeholder for custom variable */ #define GUC_SUPERUSER_ONLY 0x0100 /* show only to superusers */ #define GUC_IS_NAME 0x0200 /* limit string to NAMEDATALEN-1 */ #define GUC_NOT_WHILE_SEC_REST 0x0400 /* can't set if security restricted */ #define GUC_DISALLOW_IN_AUTO_FILE 0x0800 /* can't set in * PG_AUTOCONF_FILENAME */ #define GUC_UNIT_KB 0x1000 /* value is in kilobytes */ #define GUC_UNIT_BLOCKS 0x2000 /* value is in blocks */ #define GUC_UNIT_XBLOCKS 0x3000 /* value is in xlog blocks */ #define GUC_UNIT_MB 0x4000 /* value is in megabytes */ #define GUC_UNIT_BYTE 0x8000 /* value is in bytes */ #define GUC_UNIT_MEMORY 0xF000 /* mask for size-related units */ #define GUC_UNIT_MS 0x10000 /* value is in milliseconds */ #define GUC_UNIT_S 0x20000 /* value is in seconds */ #define GUC_UNIT_MIN 0x30000 /* value is in minutes */ #define GUC_UNIT_TIME 0xF0000 /* mask for time-related units */ #define GUC_EXPLAIN 0x100000 /* include in explain */ /* * GUC_RUNTIME_COMPUTED is intended for runtime-computed GUCs that are only * available via 'postgres -C' if the server is not running. */ #define GUC_RUNTIME_COMPUTED 0x200000 #define GUC_UNIT (GUC_UNIT_MEMORY | GUC_UNIT_TIME) /* GUC vars that are actually declared in guc.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 session_auth_is_superuser; 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 __thread 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 __thread char *backtrace_symbol_list; 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); extern void DefineCustomIntVariable(const char *name, const char *short_desc, const char *long_desc, int *valueAddr, int bootValue, int minValue, int maxValue, GucContext context, int flags, GucIntCheckHook check_hook, GucIntAssignHook assign_hook, GucShowHook show_hook); extern void DefineCustomRealVariable(const char *name, const char *short_desc, const char *long_desc, double *valueAddr, double bootValue, double minValue, double maxValue, GucContext context, int flags, GucRealCheckHook check_hook, GucRealAssignHook assign_hook, GucShowHook show_hook); extern void DefineCustomStringVariable(const char *name, const char *short_desc, const char *long_desc, char **valueAddr, const char *bootValue, GucContext context, int flags, GucStringCheckHook check_hook, GucStringAssignHook assign_hook, GucShowHook show_hook); extern void DefineCustomEnumVariable(const char *name, const char *short_desc, const char *long_desc, int *valueAddr, int bootValue, const struct config_enum_entry *options, GucContext context, int flags, GucEnumCheckHook check_hook, GucEnumAssignHook assign_hook, GucShowHook show_hook); extern void 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 bool check_GUC_name_for_parameter_acl(const char *name); extern void InitializeGUCOptions(void); extern void InitializeWalConsistencyChecking(void); extern bool SelectConfigFiles(const char *userDoption, const char *progname); extern void ResetAllOptions(void); extern void AtStart_GUC(void); extern int NewGUCNestLevel(void); extern void AtEOXact_GUC(bool isCommit, int nestLevel); extern void BeginReportingGUCOptions(void); extern void ReportChangedGUCOptions(void); extern void ParseLongOption(const char *string, char **name, char **value); extern bool parse_int(const char *value, int *result, int flags, const char **hintmsg); extern bool parse_real(const char *value, double *result, int flags, const char **hintmsg); extern int set_config_option(const char *name, const char *value, GucContext context, GucSource source, GucAction action, bool changeVal, int elevel, bool is_reload); extern 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 void AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt); extern char *GetConfigOptionByName(const char *name, const char **varname, bool missing_ok); extern void GetConfigOptionByNum(int varnum, const char **values, bool *noshow); extern int GetNumConfigOptions(void); extern void SetPGVariable(const char *name, List *args, bool is_local); extern void GetPGVariable(const char *name, DestReceiver *dest); extern TupleDesc GetPGVariableResultDesc(const char *name); extern void ExecSetVariableStmt(VariableSetStmt *stmt, bool isTopLevel); extern char *ExtractSetVariableArgs(VariableSetStmt *stmt); extern void ProcessGUCArray(ArrayType *array, GucContext context, GucSource source, GucAction action); extern ArrayType *GUCArrayAdd(ArrayType *array, const char *name, const char *value); extern ArrayType *GUCArrayDelete(ArrayType *array, const char *name); extern ArrayType *GUCArrayReset(ArrayType *array); #ifdef EXEC_BACKEND extern void write_nondefault_variables(GucContext context); extern void read_nondefault_variables(void); #endif /* GUC serialization */ extern Size EstimateGUCStateSpace(void); extern void SerializeGUCState(Size maxsize, char *start_address); extern void RestoreGUCState(void *gucstate); /* Support for messages reported from GUC check hooks */ extern PGDLLIMPORT char *GUC_check_errmsg_string; extern PGDLLIMPORT char *GUC_check_errdetail_string; extern PGDLLIMPORT char *GUC_check_errhint_string; extern void GUC_check_errcode(int sqlerrcode); #define GUC_check_errmsg \ pre_format_elog_string(errno, TEXTDOMAIN), \ GUC_check_errmsg_string = format_elog_string #define GUC_check_errdetail \ pre_format_elog_string(errno, TEXTDOMAIN), \ GUC_check_errdetail_string = format_elog_string #define GUC_check_errhint \ pre_format_elog_string(errno, TEXTDOMAIN), \ GUC_check_errhint_string = format_elog_string /* * The following functions are not in guc.c, but are declared here to avoid * having to include guc.h in some widely used headers that it really doesn't * belong in. */ /* in commands/tablespace.c */ extern bool check_default_tablespace(char **newval, void **extra, GucSource source); extern bool check_temp_tablespaces(char **newval, void **extra, GucSource source); extern void assign_temp_tablespaces(const char *newval, void *extra); /* in catalog/namespace.c */ extern bool check_search_path(char **newval, void **extra, GucSource source); extern void assign_search_path(const char *newval, void *extra); /* in access/transam/xlog.c */ extern bool check_wal_buffers(int *newval, void **extra, GucSource source); extern void assign_xlog_sync_method(int new_sync_method, void *extra); /* in access/transam/xlogprefetcher.c */ extern bool check_recovery_prefetch(int *new_value, void **extra, GucSource source); extern void assign_recovery_prefetch(int new_value, void *extra); #endif /* GUC_H */ pg_query-4.2.3/ext/pg_query/include/utils/dsa.h0000644000004100000410000001137314510636647021562 0ustar www-datawww-data/*------------------------------------------------------------------------- * * dsa.h * Dynamic shared memory areas. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/utils/dsa.h * *------------------------------------------------------------------------- */ #ifndef DSA_H #define DSA_H #include "port/atomics.h" #include "storage/dsm.h" /* The opaque type used for an area. */ struct dsa_area; typedef struct dsa_area dsa_area; /* * If this system only uses a 32-bit value for size_t, then use the 32-bit * implementation of DSA. This limits the amount of DSA that can be created * to something significantly less than the entire 4GB address space because * the DSA pointer must encode both a segment identifier and an offset, but * that shouldn't be a significant limitation in practice. * * If this system doesn't support atomic operations on 64-bit values, then * we fall back to 32-bit dsa_pointer for lack of other options. * * For testing purposes, USE_SMALL_DSA_POINTER can be defined to force the use * of 32-bit dsa_pointer even on systems capable of supporting a 64-bit * dsa_pointer. */ #if SIZEOF_SIZE_T == 4 || !defined(PG_HAVE_ATOMIC_U64_SUPPORT) || \ defined(USE_SMALL_DSA_POINTER) #define SIZEOF_DSA_POINTER 4 #else #define SIZEOF_DSA_POINTER 8 #endif /* * The type of 'relative pointers' to memory allocated by a dynamic shared * area. dsa_pointer values can be shared with other processes, but must be * converted to backend-local pointers before they can be dereferenced. See * dsa_get_address. Also, an atomic version and appropriately sized atomic * operations. */ #if SIZEOF_DSA_POINTER == 4 typedef uint32 dsa_pointer; typedef pg_atomic_uint32 dsa_pointer_atomic; #define dsa_pointer_atomic_init pg_atomic_init_u32 #define dsa_pointer_atomic_read pg_atomic_read_u32 #define dsa_pointer_atomic_write pg_atomic_write_u32 #define dsa_pointer_atomic_fetch_add pg_atomic_fetch_add_u32 #define dsa_pointer_atomic_compare_exchange pg_atomic_compare_exchange_u32 #define DSA_POINTER_FORMAT "%08x" #else typedef uint64 dsa_pointer; typedef pg_atomic_uint64 dsa_pointer_atomic; #define dsa_pointer_atomic_init pg_atomic_init_u64 #define dsa_pointer_atomic_read pg_atomic_read_u64 #define dsa_pointer_atomic_write pg_atomic_write_u64 #define dsa_pointer_atomic_fetch_add pg_atomic_fetch_add_u64 #define dsa_pointer_atomic_compare_exchange pg_atomic_compare_exchange_u64 #define DSA_POINTER_FORMAT "%016" INT64_MODIFIER "x" #endif /* Flags for dsa_allocate_extended. */ #define DSA_ALLOC_HUGE 0x01 /* allow huge allocation (> 1 GB) */ #define DSA_ALLOC_NO_OOM 0x02 /* no failure if out-of-memory */ #define DSA_ALLOC_ZERO 0x04 /* zero allocated memory */ /* A sentinel value for dsa_pointer used to indicate failure to allocate. */ #define InvalidDsaPointer ((dsa_pointer) 0) /* Check if a dsa_pointer value is valid. */ #define DsaPointerIsValid(x) ((x) != InvalidDsaPointer) /* Allocate uninitialized memory with error on out-of-memory. */ #define dsa_allocate(area, size) \ dsa_allocate_extended(area, size, 0) /* Allocate zero-initialized memory with error on out-of-memory. */ #define dsa_allocate0(area, size) \ dsa_allocate_extended(area, size, DSA_ALLOC_ZERO) /* * The type used for dsa_area handles. dsa_handle values can be shared with * other processes, so that they can attach to them. This provides a way to * share allocated storage with other processes. * * The handle for a dsa_area is currently implemented as the dsm_handle * for the first DSM segment backing this dynamic storage area, but client * code shouldn't assume that is true. */ typedef dsm_handle dsa_handle; extern dsa_area *dsa_create(int tranche_id); extern dsa_area *dsa_create_in_place(void *place, size_t size, int tranche_id, dsm_segment *segment); extern dsa_area *dsa_attach(dsa_handle handle); extern dsa_area *dsa_attach_in_place(void *place, dsm_segment *segment); extern void dsa_release_in_place(void *place); extern void dsa_on_dsm_detach_release_in_place(dsm_segment *, Datum); extern void dsa_on_shmem_exit_release_in_place(int, Datum); extern void dsa_pin_mapping(dsa_area *area); extern void dsa_detach(dsa_area *area); extern void dsa_pin(dsa_area *area); extern void dsa_unpin(dsa_area *area); extern void dsa_set_size_limit(dsa_area *area, size_t limit); extern size_t dsa_minimum_size(void); extern dsa_handle dsa_get_handle(dsa_area *area); extern dsa_pointer dsa_allocate_extended(dsa_area *area, size_t size, int flags); extern void dsa_free(dsa_area *area, dsa_pointer dp); extern void *dsa_get_address(dsa_area *area, dsa_pointer dp); extern void dsa_trim(dsa_area *area); extern void dsa_dump(dsa_area *area); #endif /* DSA_H */ pg_query-4.2.3/ext/pg_query/include/utils/bytea.h0000644000004100000410000000117514510636647022116 0ustar www-datawww-data/*------------------------------------------------------------------------- * * bytea.h * Declarations for BYTEA data type support. * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/utils/catcache.h0000644000004100000410000002064514510636647022550 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/catcache.h * *------------------------------------------------------------------------- */ #ifndef CATCACHE_H #define CATCACHE_H #include "access/htup.h" #include "access/skey.h" #include "lib/ilist.h" #include "utils/relcache.h" /* * struct catctup: individual tuple in the cache. * struct catclist: list of tuples matching a partial key. * struct catcache: information for managing a cache. * struct catcacheheader: information for managing all the caches. */ #define CATCACHE_MAXKEYS 4 /* function computing a datum's hash */ typedef uint32 (*CCHashFN) (Datum datum); /* function computing equality of two datums */ typedef bool (*CCFastEqualFN) (Datum a, Datum b); typedef struct catcache { int id; /* cache identifier --- see syscache.h */ int cc_nbuckets; /* # of hash buckets in this cache */ TupleDesc cc_tupdesc; /* tuple descriptor (copied from reldesc) */ dlist_head *cc_bucket; /* hash buckets */ CCHashFN cc_hashfunc[CATCACHE_MAXKEYS]; /* hash function for each key */ CCFastEqualFN cc_fastequal[CATCACHE_MAXKEYS]; /* fast equal function for * each key */ int cc_keyno[CATCACHE_MAXKEYS]; /* AttrNumber of each key */ dlist_head cc_lists; /* list of CatCList structs */ int cc_ntup; /* # of tuples currently in this cache */ int cc_nkeys; /* # of keys (1..CATCACHE_MAXKEYS) */ const char *cc_relname; /* name of relation the tuples come from */ Oid cc_reloid; /* OID of relation the tuples come from */ Oid cc_indexoid; /* OID of index matching cache keys */ bool cc_relisshared; /* is relation shared across databases? */ slist_node cc_next; /* list link */ ScanKeyData cc_skey[CATCACHE_MAXKEYS]; /* precomputed key info for heap * scans */ /* * Keep these at the end, so that compiling catcache.c with CATCACHE_STATS * doesn't break ABI for other modules */ #ifdef CATCACHE_STATS long cc_searches; /* total # searches against this cache */ long cc_hits; /* # of matches against existing entry */ long cc_neg_hits; /* # of matches against negative entry */ long cc_newloads; /* # of successful loads of new entry */ /* * cc_searches - (cc_hits + cc_neg_hits + cc_newloads) is number of failed * searches, each of which will result in loading a negative entry */ long cc_invals; /* # of entries invalidated from cache */ long cc_lsearches; /* total # list-searches */ long cc_lhits; /* # of matches against existing lists */ #endif } CatCache; typedef struct catctup { int ct_magic; /* for identifying CatCTup entries */ #define CT_MAGIC 0x57261502 uint32 hash_value; /* hash value for this tuple's keys */ /* * Lookup keys for the entry. By-reference datums point into the tuple for * positive cache entries, and are separately allocated for negative ones. */ Datum keys[CATCACHE_MAXKEYS]; /* * Each tuple in a cache is a member of a dlist that stores the elements * of its hash bucket. We keep each dlist in LRU order to speed repeated * lookups. */ dlist_node cache_elem; /* list member of per-bucket list */ /* * A tuple marked "dead" must not be returned by subsequent searches. * However, it won't be physically deleted from the cache until its * refcount goes to zero. (If it's a member of a CatCList, the list's * refcount must go to zero, too; also, remember to mark the list dead at * the same time the tuple is marked.) * * A negative cache entry is an assertion that there is no tuple matching * a particular key. This is just as useful as a normal entry so far as * avoiding catalog searches is concerned. Management of positive and * negative entries is identical. */ int refcount; /* number of active references */ bool dead; /* dead but not yet removed? */ bool negative; /* negative cache entry? */ HeapTupleData tuple; /* tuple management header */ /* * The tuple may also be a member of at most one CatCList. (If a single * catcache is list-searched with varying numbers of keys, we may have to * make multiple entries for the same tuple because of this restriction. * Currently, that's not expected to be common, so we accept the potential * inefficiency.) */ struct catclist *c_list; /* containing CatCList, or NULL if none */ CatCache *my_cache; /* link to owning catcache */ /* properly aligned tuple data follows, unless a negative entry */ } CatCTup; /* * A CatCList describes the result of a partial search, ie, a search using * only the first K key columns of an N-key cache. We store the keys used * into the keys attribute to represent the stored key set. The CatCList * object contains links to cache entries for all the table rows satisfying * the partial key. (Note: none of these will be negative cache entries.) * * A CatCList is only a member of a per-cache list; we do not currently * divide them into hash buckets. * * A list marked "dead" must not be returned by subsequent searches. * However, it won't be physically deleted from the cache until its * refcount goes to zero. (A list should be marked dead if any of its * member entries are dead.) * * If "ordered" is true then the member tuples appear in the order of the * cache's underlying index. This will be true in normal operation, but * might not be true during bootstrap or recovery operations. (namespace.c * is able to save some cycles when it is true.) */ typedef struct catclist { int cl_magic; /* for identifying CatCList entries */ #define CL_MAGIC 0x52765103 uint32 hash_value; /* hash value for lookup keys */ dlist_node cache_elem; /* list member of per-catcache list */ /* * Lookup keys for the entry, with the first nkeys elements being valid. * All by-reference are separately allocated. */ Datum keys[CATCACHE_MAXKEYS]; int refcount; /* number of active references */ bool dead; /* dead but not yet removed? */ bool ordered; /* members listed in index order? */ short nkeys; /* number of lookup keys specified */ int n_members; /* number of member tuples */ CatCache *my_cache; /* link to owning catcache */ CatCTup *members[FLEXIBLE_ARRAY_MEMBER]; /* members */ } CatCList; typedef struct catcacheheader { slist_head ch_caches; /* head of list of CatCache structs */ int ch_ntup; /* # of tuples in all caches */ } CatCacheHeader; /* this extern duplicates utils/memutils.h... */ extern PGDLLIMPORT MemoryContext CacheMemoryContext; extern void CreateCacheMemoryContext(void); extern CatCache *InitCatCache(int id, Oid reloid, Oid indexoid, int nkeys, const int *key, int nbuckets); extern void InitCatCachePhase2(CatCache *cache, bool touch_index); extern HeapTuple SearchCatCache(CatCache *cache, Datum v1, Datum v2, Datum v3, Datum v4); extern HeapTuple SearchCatCache1(CatCache *cache, Datum v1); extern HeapTuple SearchCatCache2(CatCache *cache, Datum v1, Datum v2); extern HeapTuple SearchCatCache3(CatCache *cache, Datum v1, Datum v2, Datum v3); extern HeapTuple SearchCatCache4(CatCache *cache, Datum v1, Datum v2, Datum v3, Datum v4); extern void ReleaseCatCache(HeapTuple tuple); extern uint32 GetCatCacheHashValue(CatCache *cache, Datum v1, Datum v2, Datum v3, Datum v4); extern CatCList *SearchCatCacheList(CatCache *cache, int nkeys, Datum v1, Datum v2, Datum v3); extern void ReleaseCatCacheList(CatCList *list); extern void ResetCatalogCaches(void); extern void CatalogCacheFlushCatalog(Oid catId); extern void CatCacheInvalidate(CatCache *cache, uint32 hashValue); extern void PrepareToInvalidateCacheTuple(Relation relation, HeapTuple tuple, HeapTuple newtuple, void (*function) (int, uint32, Oid)); extern void PrintCatCacheLeakWarning(HeapTuple tuple); extern void PrintCatCacheListLeakWarning(CatCList *list); #endif /* CATCACHE_H */ pg_query-4.2.3/ext/pg_query/include/utils/syscache.h0000644000004100000410000001466314510636647022622 0ustar www-datawww-data/*------------------------------------------------------------------------- * * syscache.h * System catalog cache definitions. * * See also lsyscache.h, which provides convenience routines for * common cache-lookup operations. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/syscache.h * *------------------------------------------------------------------------- */ #ifndef SYSCACHE_H #define SYSCACHE_H #include "access/attnum.h" #include "access/htup.h" /* we intentionally do not include utils/catcache.h here */ /* * SysCache identifiers. * * The order of these identifiers must match the order * of the entries in the array cacheinfo[] in syscache.c. * Keep them in alphabetical order (renumbering only costs a * backend rebuild). */ enum SysCacheIdentifier { AGGFNOID = 0, AMNAME, AMOID, AMOPOPID, AMOPSTRATEGY, AMPROCNUM, ATTNAME, ATTNUM, AUTHMEMMEMROLE, AUTHMEMROLEMEM, AUTHNAME, AUTHOID, CASTSOURCETARGET, CLAAMNAMENSP, CLAOID, COLLNAMEENCNSP, COLLOID, CONDEFAULT, CONNAMENSP, CONSTROID, CONVOID, DATABASEOID, DEFACLROLENSPOBJ, ENUMOID, ENUMTYPOIDNAME, EVENTTRIGGERNAME, EVENTTRIGGEROID, FOREIGNDATAWRAPPERNAME, FOREIGNDATAWRAPPEROID, FOREIGNSERVERNAME, FOREIGNSERVEROID, FOREIGNTABLEREL, INDEXRELID, LANGNAME, LANGOID, NAMESPACENAME, NAMESPACEOID, OPERNAMENSP, OPEROID, OPFAMILYAMNAMENSP, OPFAMILYOID, 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) }; extern void InitCatalogCache(void); extern void InitCatalogCachePhase2(void); extern HeapTuple SearchSysCache(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4); /* * The use of argument specific numbers is encouraged. They're faster, and * insulates the caller from changes in the maximum number of keys. */ extern HeapTuple SearchSysCache1(int cacheId, Datum key1); extern HeapTuple SearchSysCache2(int cacheId, Datum key1, Datum key2); extern HeapTuple SearchSysCache3(int cacheId, Datum key1, Datum key2, Datum key3); extern HeapTuple SearchSysCache4(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4); extern void ReleaseSysCache(HeapTuple tuple); /* convenience routines */ extern HeapTuple SearchSysCacheCopy(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4); extern bool SearchSysCacheExists(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4); extern Oid GetSysCacheOid(int cacheId, AttrNumber oidcol, Datum key1, Datum key2, Datum key3, Datum key4); extern HeapTuple SearchSysCacheAttName(Oid relid, const char *attname); extern HeapTuple SearchSysCacheCopyAttName(Oid relid, const char *attname); extern bool SearchSysCacheExistsAttName(Oid relid, const char *attname); extern HeapTuple SearchSysCacheAttNum(Oid relid, int16 attnum); extern HeapTuple SearchSysCacheCopyAttNum(Oid relid, int16 attnum); extern Datum SysCacheGetAttr(int cacheId, HeapTuple tup, AttrNumber attributeNumber, bool *isNull); extern uint32 GetSysCacheHashValue(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4); /* list-search interface. Users of this must import catcache.h too */ struct catclist; extern struct catclist *SearchSysCacheList(int cacheId, int nkeys, Datum key1, Datum key2, Datum key3); extern void SysCacheInvalidate(int cacheId, uint32 hashValue); extern bool RelationInvalidatesSnapshotsOnly(Oid relid); extern bool RelationHasSysCache(Oid relid); extern bool RelationSupportsSysCache(Oid relid); /* * The use of the macros below rather than direct calls to the corresponding * functions is encouraged, as it insulates the caller from changes in the * maximum number of keys. */ #define SearchSysCacheCopy1(cacheId, key1) \ SearchSysCacheCopy(cacheId, key1, 0, 0, 0) #define SearchSysCacheCopy2(cacheId, key1, key2) \ SearchSysCacheCopy(cacheId, key1, key2, 0, 0) #define SearchSysCacheCopy3(cacheId, key1, key2, key3) \ SearchSysCacheCopy(cacheId, key1, key2, key3, 0) #define SearchSysCacheCopy4(cacheId, key1, key2, key3, key4) \ SearchSysCacheCopy(cacheId, key1, key2, key3, key4) #define SearchSysCacheExists1(cacheId, key1) \ SearchSysCacheExists(cacheId, key1, 0, 0, 0) #define SearchSysCacheExists2(cacheId, key1, key2) \ SearchSysCacheExists(cacheId, key1, key2, 0, 0) #define SearchSysCacheExists3(cacheId, key1, key2, key3) \ SearchSysCacheExists(cacheId, key1, key2, key3, 0) #define SearchSysCacheExists4(cacheId, key1, key2, key3, key4) \ SearchSysCacheExists(cacheId, key1, key2, key3, key4) #define GetSysCacheOid1(cacheId, oidcol, key1) \ GetSysCacheOid(cacheId, oidcol, key1, 0, 0, 0) #define GetSysCacheOid2(cacheId, oidcol, key1, key2) \ GetSysCacheOid(cacheId, oidcol, key1, key2, 0, 0) #define GetSysCacheOid3(cacheId, oidcol, key1, key2, key3) \ GetSysCacheOid(cacheId, oidcol, key1, key2, key3, 0) #define GetSysCacheOid4(cacheId, oidcol, key1, key2, key3, key4) \ GetSysCacheOid(cacheId, oidcol, key1, key2, key3, key4) #define GetSysCacheHashValue1(cacheId, key1) \ GetSysCacheHashValue(cacheId, key1, 0, 0, 0) #define GetSysCacheHashValue2(cacheId, key1, key2) \ GetSysCacheHashValue(cacheId, key1, key2, 0, 0) #define GetSysCacheHashValue3(cacheId, key1, key2, key3) \ GetSysCacheHashValue(cacheId, key1, key2, key3, 0) #define GetSysCacheHashValue4(cacheId, key1, key2, key3, key4) \ GetSysCacheHashValue(cacheId, key1, key2, key3, key4) #define SearchSysCacheList1(cacheId, key1) \ SearchSysCacheList(cacheId, 1, key1, 0, 0) #define SearchSysCacheList2(cacheId, key1, key2) \ SearchSysCacheList(cacheId, 2, key1, key2, 0) #define SearchSysCacheList3(cacheId, key1, key2, key3) \ SearchSysCacheList(cacheId, 3, key1, key2, key3) #define ReleaseSysCacheList(x) ReleaseCatCacheList(x) #endif /* SYSCACHE_H */ pg_query-4.2.3/ext/pg_query/include/utils/fmgrtab.h0000644000004100000410000000273514510636647022437 0ustar www-datawww-data/*------------------------------------------------------------------------- * * fmgrtab.h * The function manager's table of internal functions. * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/utils/expandedrecord.h0000644000004100000410000002264314510636647024004 0ustar www-datawww-data/*------------------------------------------------------------------------- * * expandedrecord.h * Declarations for composite expanded objects. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/expandedrecord.h * *------------------------------------------------------------------------- */ #ifndef EXPANDEDRECORD_H #define EXPANDEDRECORD_H #include "access/htup.h" #include "access/tupdesc.h" #include "fmgr.h" #include "utils/expandeddatum.h" /* * An expanded record is contained within a private memory context (as * all expanded objects must be) and has a control structure as below. * * The expanded record might contain a regular "flat" tuple if that was the * original input and we've not modified it. Otherwise, the contents are * represented by Datum/isnull arrays plus type information. We could also * have both forms, if we've deconstructed the original tuple for access * purposes but not yet changed it. For pass-by-reference field types, the * Datums would point into the flat tuple in this situation. Once we start * modifying tuple fields, new pass-by-ref fields are separately palloc'd * within the memory context. * * It's possible to build an expanded record that references a "flat" tuple * stored externally, if the caller can guarantee that that tuple will not * change for the lifetime of the expanded record. (This frammish is mainly * meant to avoid unnecessary data copying in trigger functions.) */ #define ER_MAGIC 1384727874 /* ID for debugging crosschecks */ typedef struct ExpandedRecordHeader { /* Standard header for expanded objects */ ExpandedObjectHeader hdr; /* Magic value identifying an expanded record (for debugging only) */ int er_magic; /* Assorted flag bits */ int flags; #define ER_FLAG_FVALUE_VALID 0x0001 /* fvalue is up to date? */ #define ER_FLAG_FVALUE_ALLOCED 0x0002 /* fvalue is local storage? */ #define ER_FLAG_DVALUES_VALID 0x0004 /* dvalues/dnulls are up to date? */ #define ER_FLAG_DVALUES_ALLOCED 0x0008 /* any field values local storage? */ #define ER_FLAG_HAVE_EXTERNAL 0x0010 /* any field values are external? */ #define ER_FLAG_TUPDESC_ALLOCED 0x0020 /* tupdesc is local storage? */ #define ER_FLAG_IS_DOMAIN 0x0040 /* er_decltypeid is domain? */ #define ER_FLAG_IS_DUMMY 0x0080 /* this header is dummy (see below) */ /* flag bits that are not to be cleared when replacing tuple data: */ #define ER_FLAGS_NON_DATA \ (ER_FLAG_TUPDESC_ALLOCED | ER_FLAG_IS_DOMAIN | ER_FLAG_IS_DUMMY) /* Declared type of the record variable (could be a domain type) */ Oid er_decltypeid; /* * Actual composite type/typmod; never a domain (if ER_FLAG_IS_DOMAIN, * these identify the composite base type). These will match * er_tupdesc->tdtypeid/tdtypmod, as well as the header fields of * composite datums made from or stored in this expanded record. */ Oid er_typeid; /* type OID of the composite type */ int32 er_typmod; /* typmod of the composite type */ /* * Tuple descriptor, if we have one, else NULL. This may point to a * reference-counted tupdesc originally belonging to the typcache, in * which case we use a memory context reset callback to release the * refcount. It can also be locally allocated in this object's private * context (in which case ER_FLAG_TUPDESC_ALLOCED is set). */ TupleDesc er_tupdesc; /* * Unique-within-process identifier for the tupdesc (see typcache.h). This * field will never be equal to INVALID_TUPLEDESC_IDENTIFIER. */ uint64 er_tupdesc_id; /* * If we have a Datum-array representation of the record, it's kept here; * else ER_FLAG_DVALUES_VALID is not set, and dvalues/dnulls may be NULL * if they've not yet been allocated. If allocated, the dvalues and * dnulls arrays are palloc'd within the object private context, and are * of length matching er_tupdesc->natts. For pass-by-ref field types, * dvalues entries might point either into the fstartptr..fendptr area, or * to separately palloc'd chunks. */ Datum *dvalues; /* array of Datums */ bool *dnulls; /* array of is-null flags for Datums */ int nfields; /* length of above arrays */ /* * flat_size is the current space requirement for the flat equivalent of * the expanded record, if known; otherwise it's 0. We store this to make * consecutive calls of get_flat_size cheap. If flat_size is not 0, the * component values data_len, hoff, and hasnull must be valid too. */ Size flat_size; Size data_len; /* data len within flat_size */ int hoff; /* header offset */ bool hasnull; /* null bitmap needed? */ /* * fvalue points to the flat representation if we have one, else it is * NULL. If the flat representation is valid (up to date) then * ER_FLAG_FVALUE_VALID is set. Even if we've outdated the flat * representation due to changes of user fields, it can still be used to * fetch system column values. If we have a flat representation then * fstartptr/fendptr point to the start and end+1 of its data area; this * is so that we can tell which Datum pointers point into the flat * representation rather than being pointers to separately palloc'd data. */ HeapTuple fvalue; /* might or might not be private storage */ char *fstartptr; /* start of its data area */ char *fendptr; /* end+1 of its data area */ /* Some operations on the expanded record need a short-lived context */ MemoryContext er_short_term_cxt; /* short-term memory context */ /* Working state for domain checking, used if ER_FLAG_IS_DOMAIN is set */ struct ExpandedRecordHeader *er_dummy_header; /* dummy record header */ void *er_domaininfo; /* cache space for domain_check() */ /* Callback info (it's active if er_mcb.arg is not NULL) */ MemoryContextCallback er_mcb; } ExpandedRecordHeader; /* fmgr macros for expanded record objects */ #define PG_GETARG_EXPANDED_RECORD(n) DatumGetExpandedRecord(PG_GETARG_DATUM(n)) #define ExpandedRecordGetDatum(erh) EOHPGetRWDatum(&(erh)->hdr) #define ExpandedRecordGetRODatum(erh) EOHPGetRODatum(&(erh)->hdr) #define PG_RETURN_EXPANDED_RECORD(x) PG_RETURN_DATUM(ExpandedRecordGetDatum(x)) /* assorted other macros */ #define ExpandedRecordIsEmpty(erh) \ (((erh)->flags & (ER_FLAG_DVALUES_VALID | ER_FLAG_FVALUE_VALID)) == 0) #define ExpandedRecordIsDomain(erh) \ (((erh)->flags & ER_FLAG_IS_DOMAIN) != 0) /* this can substitute for TransferExpandedObject() when we already have erh */ #define TransferExpandedRecord(erh, cxt) \ MemoryContextSetParent((erh)->hdr.eoh_context, cxt) /* information returned by expanded_record_lookup_field() */ typedef struct ExpandedRecordFieldInfo { int fnumber; /* field's attr number in record */ Oid ftypeid; /* field's type/typmod info */ int32 ftypmod; Oid fcollation; /* field's collation if any */ } ExpandedRecordFieldInfo; /* * prototypes for functions defined in expandedrecord.c */ extern ExpandedRecordHeader *make_expanded_record_from_typeid(Oid type_id, int32 typmod, MemoryContext parentcontext); extern ExpandedRecordHeader *make_expanded_record_from_tupdesc(TupleDesc tupdesc, MemoryContext parentcontext); extern ExpandedRecordHeader *make_expanded_record_from_exprecord(ExpandedRecordHeader *olderh, MemoryContext parentcontext); extern void expanded_record_set_tuple(ExpandedRecordHeader *erh, HeapTuple tuple, bool copy, bool expand_external); extern Datum make_expanded_record_from_datum(Datum recorddatum, MemoryContext parentcontext); extern TupleDesc expanded_record_fetch_tupdesc(ExpandedRecordHeader *erh); extern HeapTuple expanded_record_get_tuple(ExpandedRecordHeader *erh); extern ExpandedRecordHeader *DatumGetExpandedRecord(Datum d); extern void deconstruct_expanded_record(ExpandedRecordHeader *erh); extern bool expanded_record_lookup_field(ExpandedRecordHeader *erh, const char *fieldname, ExpandedRecordFieldInfo *finfo); extern Datum expanded_record_fetch_field(ExpandedRecordHeader *erh, int fnumber, bool *isnull); extern void expanded_record_set_field_internal(ExpandedRecordHeader *erh, int fnumber, Datum newValue, bool isnull, bool expand_external, bool check_constraints); extern void expanded_record_set_fields(ExpandedRecordHeader *erh, const Datum *newValues, const bool *isnulls, bool expand_external); /* outside code should never call expanded_record_set_field_internal as such */ #define expanded_record_set_field(erh, fnumber, newValue, isnull, expand_external) \ expanded_record_set_field_internal(erh, fnumber, newValue, isnull, expand_external, true) /* * Inline-able fast cases. The expanded_record_fetch_xxx functions above * handle the general cases. */ /* Get the tupdesc for the expanded record's actual type */ static inline TupleDesc expanded_record_get_tupdesc(ExpandedRecordHeader *erh) { if (likely(erh->er_tupdesc != NULL)) return erh->er_tupdesc; else return expanded_record_fetch_tupdesc(erh); } /* Get value of record field */ static inline Datum expanded_record_get_field(ExpandedRecordHeader *erh, int fnumber, bool *isnull) { if ((erh->flags & ER_FLAG_DVALUES_VALID) && likely(fnumber > 0 && fnumber <= erh->nfields)) { *isnull = erh->dnulls[fnumber - 1]; return erh->dvalues[fnumber - 1]; } else return expanded_record_fetch_field(erh, fnumber, isnull); } #endif /* EXPANDEDRECORD_H */ pg_query-4.2.3/ext/pg_query/include/utils/sortsupport.h0000644000004100000410000003246614510636647023445 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 abbrevated 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 */ pg_query-4.2.3/ext/pg_query/include/utils/resowner.h0000644000004100000410000000541714510636647022661 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/resowner.h * *------------------------------------------------------------------------- */ #ifndef RESOWNER_H #define RESOWNER_H /* * ResourceOwner objects are an opaque data structure known only within * resowner.c. */ typedef struct ResourceOwnerData *ResourceOwner; /* * Globally known ResourceOwners */ extern PGDLLIMPORT ResourceOwner CurrentResourceOwner; extern PGDLLIMPORT ResourceOwner CurTransactionResourceOwner; extern PGDLLIMPORT ResourceOwner TopTransactionResourceOwner; extern PGDLLIMPORT ResourceOwner AuxProcessResourceOwner; /* * Resource releasing is done in three phases: pre-locks, locks, and * post-locks. The pre-lock phase must release any resources that are * visible to other backends (such as pinned buffers); this ensures that * when we release a lock that another backend may be waiting on, it will * see us as being fully out of our transaction. The post-lock phase * should be used for backend-internal cleanup. */ typedef enum { RESOURCE_RELEASE_BEFORE_LOCKS, RESOURCE_RELEASE_LOCKS, RESOURCE_RELEASE_AFTER_LOCKS } ResourceReleasePhase; /* * Dynamically loaded modules can get control during ResourceOwnerRelease * by providing a callback of this form. */ typedef void (*ResourceReleaseCallback) (ResourceReleasePhase phase, bool isCommit, bool isTopLevel, void *arg); /* * Functions in resowner.c */ /* generic routines */ extern ResourceOwner ResourceOwnerCreate(ResourceOwner parent, const char *name); extern void ResourceOwnerRelease(ResourceOwner owner, ResourceReleasePhase phase, bool isCommit, bool isTopLevel); extern void ResourceOwnerReleaseAllPlanCacheRefs(ResourceOwner owner); extern void ResourceOwnerDelete(ResourceOwner owner); extern ResourceOwner ResourceOwnerGetParent(ResourceOwner owner); extern void ResourceOwnerNewParent(ResourceOwner owner, ResourceOwner newparent); extern void RegisterResourceReleaseCallback(ResourceReleaseCallback callback, void *arg); extern void UnregisterResourceReleaseCallback(ResourceReleaseCallback callback, void *arg); extern void CreateAuxProcessResourceOwner(void); extern void ReleaseAuxProcessResources(bool isCommit); #endif /* RESOWNER_H */ pg_query-4.2.3/ext/pg_query/include/utils/pg_lsn.h0000644000004100000410000000151014510636647022265 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_lsn.h * Declarations for operations on log sequence numbers (LSNs) of * PostgreSQL. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/pg_lsn.h * *------------------------------------------------------------------------- */ #ifndef PG_LSN_H #define PG_LSN_H #include "access/xlogdefs.h" #include "fmgr.h" #define DatumGetLSN(X) ((XLogRecPtr) DatumGetInt64(X)) #define LSNGetDatum(X) (Int64GetDatum((int64) (X))) #define PG_GETARG_LSN(n) DatumGetLSN(PG_GETARG_DATUM(n)) #define PG_RETURN_LSN(x) return LSNGetDatum(x) extern XLogRecPtr pg_lsn_in_internal(const char *str, bool *have_error); #endif /* PG_LSN_H */ pg_query-4.2.3/ext/pg_query/include/utils/dynahash.h0000644000004100000410000000101314510636647022600 0ustar www-datawww-data/*------------------------------------------------------------------------- * * dynahash.h * POSTGRES dynahash.h file definitions * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/utils/dynahash.h * *------------------------------------------------------------------------- */ #ifndef DYNAHASH_H #define DYNAHASH_H extern int my_log2(long num); #endif /* DYNAHASH_H */ pg_query-4.2.3/ext/pg_query/include/utils/relcache.h0000644000004100000410000001127714510636647022564 0ustar www-datawww-data/*------------------------------------------------------------------------- * * relcache.h * Relation descriptor cache definitions. * * * Portions Copyright (c) 1996-2022, 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 "nodes/bitmapset.h" /* * Name of relcache init file(s), used to speed up backend startup */ #define RELCACHE_INIT_FILENAME "pg_internal.init" typedef struct RelationData *Relation; /* ---------------- * RelationPtr is used in the executor to support index scans * where we have to keep track of several index relations in an * array. -cim 9/10/89 * ---------------- */ typedef Relation *RelationPtr; /* * Routines to open (lookup) and close a relcache entry */ extern Relation RelationIdGetRelation(Oid relationId); extern void RelationClose(Relation relation); /* * Routines to compute/retrieve additional cached information */ extern List *RelationGetFKeyList(Relation relation); extern List *RelationGetIndexList(Relation relation); extern List *RelationGetStatExtList(Relation relation); extern Oid RelationGetPrimaryKeyIndex(Relation relation); extern Oid RelationGetReplicaIndex(Relation relation); extern List *RelationGetIndexExpressions(Relation relation); extern List *RelationGetDummyIndexExpressions(Relation relation); extern List *RelationGetIndexPredicate(Relation relation); extern Datum *RelationGetIndexRawAttOptions(Relation relation); extern bytea **RelationGetIndexAttOptions(Relation relation, bool copy); typedef enum IndexAttrBitmapKind { INDEX_ATTR_BITMAP_ALL, INDEX_ATTR_BITMAP_KEY, INDEX_ATTR_BITMAP_PRIMARY_KEY, INDEX_ATTR_BITMAP_IDENTITY_KEY } IndexAttrBitmapKind; extern Bitmapset *RelationGetIndexAttrBitmap(Relation relation, IndexAttrBitmapKind attrKind); extern 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, Oid relfilenode, Oid reltablespace, bool shared_relation, bool mapped_relation, char relpersistence, char relkind); /* * Routines to manage assignment of new relfilenode to a relation */ extern void RelationSetNewRelfilenode(Relation relation, char persistence); extern void RelationAssumeNewRelfilenode(Relation relation); /* * Routines for flushing/rebuilding relcache entries in various scenarios */ extern void RelationForgetRelation(Oid rid); extern void RelationCacheInvalidateEntry(Oid relationId); extern void RelationCacheInvalidate(bool debug_discard); extern void RelationCloseSmgrByOid(Oid relationId); #ifdef USE_ASSERT_CHECKING extern void AssertPendingSyncs_RelationCache(void); #else #define AssertPendingSyncs_RelationCache() do {} while (0) #endif extern void AtEOXact_RelationCache(bool isCommit); extern void AtEOSubXact_RelationCache(bool isCommit, SubTransactionId mySubid, SubTransactionId parentSubid); /* * Routines to help manage rebuilding of relcache init files */ extern bool RelationIdIsInInitFile(Oid relationId); extern void RelationCacheInitFilePreInvalidate(void); extern void RelationCacheInitFilePostInvalidate(void); extern void RelationCacheInitFileRemove(void); /* should be used only by relcache.c and catcache.c */ extern PGDLLIMPORT bool criticalRelcachesBuilt; /* should be used only by relcache.c and postinit.c */ extern PGDLLIMPORT bool criticalSharedRelcachesBuilt; #endif /* RELCACHE_H */ pg_query-4.2.3/ext/pg_query/include/utils/ruleutils.h0000644000004100000410000000325114510636647023037 0ustar www-datawww-data/*------------------------------------------------------------------------- * * ruleutils.h * Declarations for ruleutils.c * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/ruleutils.h * *------------------------------------------------------------------------- */ #ifndef RULEUTILS_H #define RULEUTILS_H #include "nodes/nodes.h" #include "nodes/parsenodes.h" #include "nodes/pg_list.h" struct Plan; /* avoid including plannodes.h here */ struct PlannedStmt; extern char *pg_get_indexdef_string(Oid indexrelid); extern char *pg_get_indexdef_columns(Oid indexrelid, bool pretty); extern char *pg_get_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 */ pg_query-4.2.3/ext/pg_query/include/utils/sharedtuplestore.h0000644000004100000410000000356314510636647024412 0ustar www-datawww-data/*------------------------------------------------------------------------- * * sharedtuplestore.h * Simple mechanism for sharing tuples between backends. * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/utils/builtins.h0000644000004100000410000001046714510636647022647 0ustar www-datawww-data/*------------------------------------------------------------------------- * * builtins.h * Declarations for operations on built-in types. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/builtins.h * *------------------------------------------------------------------------- */ #ifndef BUILTINS_H #define BUILTINS_H #include "fmgr.h" #include "nodes/nodes.h" #include "utils/fmgrprotos.h" /* Sign + the most decimal digits an 8-byte number could have */ #define MAXINT8LEN 20 /* bool.c */ extern bool parse_bool(const char *value, bool *result); extern bool parse_bool_with_len(const char *value, size_t len, bool *result); /* domains.c */ extern void domain_check(Datum value, bool isnull, Oid domainType, void **extra, MemoryContext mcxt); extern int errdatatype(Oid datatypeOid); extern int errdomainconstraint(Oid datatypeOid, const char *conname); /* encode.c */ extern uint64 hex_encode(const char *src, size_t len, char *dst); extern uint64 hex_decode(const char *src, size_t len, char *dst); /* int.c */ extern int2vector *buildint2vector(const int16 *int2s, int n); /* name.c */ extern 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 int32 pg_strtoint32(const char *s); extern int64 pg_strtoint64(const char *s); extern int pg_itoa(int16 i, char *a); extern int pg_ultoa_n(uint32 l, char *a); extern int pg_ulltoa_n(uint64 l, char *a); extern int pg_ltoa(int32 l, char *a); extern int pg_lltoa(int64 ll, char *a); extern char *pg_ultostr_zeropad(char *str, uint32 value, int32 minwidth); extern char *pg_ultostr(char *str, uint32 value); /* 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 */ pg_query-4.2.3/ext/pg_query/include/utils/typcache.h0000644000004100000410000001670614510636647022620 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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_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 */ pg_query-4.2.3/ext/pg_query/include/utils/reltrigger.h0000644000004100000410000000432214510636647023155 0ustar www-datawww-data/*------------------------------------------------------------------------- * * reltrigger.h * POSTGRES relation trigger definitions. * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/utils/partcache.h0000644000004100000410000000447214510636647022747 0ustar www-datawww-data/*------------------------------------------------------------------------- * * partcache.h * * Copyright (c) 1996-2022, PostgreSQL Global Development Group * * src/include/utils/partcache.h * *------------------------------------------------------------------------- */ #ifndef PARTCACHE_H #define PARTCACHE_H #include "access/attnum.h" #include "fmgr.h" #include "nodes/pg_list.h" #include "nodes/primnodes.h" #include "partitioning/partdefs.h" #include "utils/relcache.h" /* * Information about the partition key of a relation */ typedef struct PartitionKeyData { char strategy; /* partitioning strategy */ int16 partnatts; /* number of columns in the partition key */ AttrNumber *partattrs; /* attribute numbers of columns in the * partition key or 0 if it's an expr */ List *partexprs; /* list of expressions in the partitioning * key, one for each zero-valued partattrs */ Oid *partopfamily; /* OIDs of operator families */ Oid *partopcintype; /* OIDs of opclass declared input data types */ FmgrInfo *partsupfunc; /* lookup info for support funcs */ /* Partitioning collation per attribute */ Oid *partcollation; /* Type information per attribute */ Oid *parttypid; int32 *parttypmod; int16 *parttyplen; bool *parttypbyval; char *parttypalign; Oid *parttypcoll; } PartitionKeyData; extern PartitionKey RelationGetPartitionKey(Relation rel); extern List *RelationGetPartitionQual(Relation rel); extern Expr *get_partition_qual_relid(Oid relid); /* * PartitionKey inquiry functions */ static inline int get_partition_strategy(PartitionKey key) { return key->strategy; } static inline int get_partition_natts(PartitionKey key) { return key->partnatts; } static inline List * get_partition_exprs(PartitionKey key) { return key->partexprs; } /* * PartitionKey inquiry functions - one column */ static inline int16 get_partition_col_attnum(PartitionKey key, int col) { return key->partattrs[col]; } static inline Oid get_partition_col_typid(PartitionKey key, int col) { return key->parttypid[col]; } static inline int32 get_partition_col_typmod(PartitionKey key, int col) { return key->parttypmod[col]; } static inline Oid get_partition_col_collation(PartitionKey key, int col) { return key->partcollation[col]; } #endif /* PARTCACHE_H */ pg_query-4.2.3/ext/pg_query/include/utils/palloc.h0000644000004100000410000001343314510636647022264 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/palloc.h * *------------------------------------------------------------------------- */ #ifndef PALLOC_H #define PALLOC_H /* * Type MemoryContextData is declared in nodes/memnodes.h. Most users * of memory allocation should just treat it as an abstract type, so we * do not provide the struct contents here. */ typedef struct MemoryContextData *MemoryContext; /* * A memory context can have callback functions registered on it. Any such * function will be called once just before the context is next reset or * deleted. The MemoryContextCallback struct describing such a callback * typically would be allocated within the context itself, thereby avoiding * any need to manage it explicitly (the reset/delete action will free it). */ typedef void (*MemoryContextCallbackFunction) (void *arg); typedef struct MemoryContextCallback { MemoryContextCallbackFunction func; /* function to call */ void *arg; /* argument to pass it */ struct MemoryContextCallback *next; /* next in list of callbacks */ } MemoryContextCallback; /* * CurrentMemoryContext is the default allocation context for palloc(). * Avoid accessing it directly! Instead, use MemoryContextSwitchTo() * to change the setting. */ extern PGDLLIMPORT __thread MemoryContext CurrentMemoryContext; /* * Flags for MemoryContextAllocExtended. */ #define MCXT_ALLOC_HUGE 0x01 /* allow huge allocation (> 1 GB) */ #define MCXT_ALLOC_NO_OOM 0x02 /* no failure if out-of-memory */ #define MCXT_ALLOC_ZERO 0x04 /* zero allocated memory */ /* * Fundamental memory-allocation operations (more are in utils/memutils.h) */ extern void *MemoryContextAlloc(MemoryContext context, Size size); extern void *MemoryContextAllocZero(MemoryContext context, Size size); extern void *MemoryContextAllocZeroAligned(MemoryContext context, Size size); extern void *MemoryContextAllocExtended(MemoryContext context, Size size, int flags); extern void *palloc(Size size); extern void *palloc0(Size size); extern void *palloc_extended(Size size, int flags); extern pg_nodiscard void *repalloc(void *pointer, 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))) /* * The result of palloc() is always word-aligned, so we can skip testing * alignment of the pointer when deciding which MemSet variant to use. * Note that this variant does not offer any advantage, and should not be * used, unless its "sz" argument is a compile-time constant; therefore, the * issue that it evaluates the argument multiple times isn't a problem in * practice. */ #define palloc0fast(sz) \ ( MemSetTest(0, sz) ? \ MemoryContextAllocZeroAligned(CurrentMemoryContext, sz) : \ MemoryContextAllocZero(CurrentMemoryContext, sz) ) /* Higher-limit allocators. */ extern void *MemoryContextAllocHuge(MemoryContext context, Size size); extern 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 */ pg_query-4.2.3/ext/pg_query/include/utils/ps_status.h0000644000004100000410000000113214510636647023030 0ustar www-datawww-data/*------------------------------------------------------------------------- * * ps_status.h * * Declarations for backend/utils/misc/ps_status.c * * src/include/utils/ps_status.h * *------------------------------------------------------------------------- */ #ifndef PS_STATUS_H #define PS_STATUS_H extern 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(const char *activity); extern const char *get_ps_display(int *displen); #endif /* PS_STATUS_H */ pg_query-4.2.3/ext/pg_query/include/utils/lsyscache.h0000644000004100000410000002146514510636647022774 0ustar www-datawww-data/*------------------------------------------------------------------------- * * lsyscache.h * Convenience routines for common queries in the system catalog cache. * * Portions Copyright (c) 1996-2022, 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 int get_attstattarget(Oid relid, AttrNumber attnum); extern char get_attgenerated(Oid relid, AttrNumber attnum); extern Oid get_atttype(Oid relid, AttrNumber attnum); extern void get_atttypetypmodcoll(Oid relid, AttrNumber attnum, Oid *typid, int32 *typmod, Oid *collid); extern Datum get_attoptions(Oid relid, int16 attnum); extern Oid get_cast_oid(Oid sourcetypeid, Oid targettypeid, bool missing_ok); extern char *get_collation_name(Oid colloid); extern bool get_collation_isdeterministic(Oid colloid); extern char *get_constraint_name(Oid conoid); extern Oid get_constraint_index(Oid conoid); extern char *get_language_name(Oid langoid, bool missing_ok); extern Oid get_opclass_family(Oid opclass); extern Oid get_opclass_input_type(Oid opclass); extern bool get_opclass_opfamily_and_input_type(Oid opclass, Oid *opfamily, Oid *opcintype); extern RegProcedure get_opcode(Oid opno); extern char *get_opname(Oid opno); extern Oid get_op_rettype(Oid opno); extern void op_input_types(Oid opno, Oid *lefttype, Oid *righttype); extern bool op_mergejoinable(Oid opno, Oid inputtype); extern bool op_hashjoinable(Oid opno, Oid inputtype); extern bool op_strict(Oid opno); extern char op_volatile(Oid opno); extern Oid get_commutator(Oid opno); extern Oid get_negator(Oid opno); extern RegProcedure get_oprrest(Oid opno); extern RegProcedure get_oprjoin(Oid opno); extern char *get_func_name(Oid funcid); extern Oid get_func_namespace(Oid funcid); extern Oid get_func_rettype(Oid funcid); extern int get_func_nargs(Oid funcid); extern Oid get_func_signature(Oid funcid, Oid **argtypes, int *nargs); extern Oid get_func_variadictype(Oid funcid); extern bool get_func_retset(Oid funcid); extern bool func_strict(Oid funcid); extern char func_volatile(Oid funcid); extern char func_parallel(Oid funcid); extern char get_func_prokind(Oid funcid); extern bool get_func_leakproof(Oid funcid); extern RegProcedure get_func_support(Oid funcid); extern Oid get_relname_relid(const char *relname, Oid relnamespace); extern char *get_rel_name(Oid relid); extern Oid get_rel_namespace(Oid relid); extern Oid get_rel_type_id(Oid relid); extern char get_rel_relkind(Oid relid); extern bool get_rel_relispartition(Oid relid); extern Oid get_rel_tablespace(Oid relid); extern char get_rel_persistence(Oid relid); extern Oid get_transform_fromsql(Oid typid, Oid langid, List *trftypes); extern Oid get_transform_tosql(Oid typid, Oid langid, List *trftypes); extern bool get_typisdefined(Oid typid); extern int16 get_typlen(Oid typid); extern bool get_typbyval(Oid typid); extern void get_typlenbyval(Oid typid, int16 *typlen, bool *typbyval); extern void get_typlenbyvalalign(Oid typid, int16 *typlen, bool *typbyval, char *typalign); extern Oid getTypeIOParam(HeapTuple typeTuple); extern void get_type_io_data(Oid typid, IOFuncSelector which_func, int16 *typlen, bool *typbyval, char *typalign, char *typdelim, Oid *typioparam, Oid *func); extern char get_typstorage(Oid typid); extern Node *get_typdefault(Oid typid); extern char get_typtype(Oid typid); extern bool type_is_rowtype(Oid typid); extern bool type_is_enum(Oid typid); extern bool type_is_range(Oid typid); extern 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); #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 */ pg_query-4.2.3/ext/pg_query/include/utils/pidfile.h0000644000004100000410000000410114510636647022416 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pidfile.h * Declarations describing the data directory lock file (postmaster.pid) * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/pidfile.h * *------------------------------------------------------------------------- */ #ifndef UTILS_PIDFILE_H #define UTILS_PIDFILE_H /* * As of Postgres 10, the contents of the data-directory lock file are: * * line # * 1 postmaster PID (or negative of a standalone backend's PID) * 2 data directory path * 3 postmaster start timestamp (time_t representation) * 4 port number * 5 first Unix socket directory path (empty if none) * 6 first listen_address (IP address or "*"; empty if no TCP port) * 7 shared memory key (empty on Windows) * 8 postmaster status (see values below) * * Lines 6 and up are added via AddToDataDirLockFile() after initial file * creation; also, line 5 is initially empty and is changed after the first * Unix socket is opened. Onlookers should not assume that lines 4 and up * are filled in any particular order. * * Socket lock file(s), if used, have the same contents as lines 1-5, with * line 5 being their own directory. */ #define LOCK_FILE_LINE_PID 1 #define LOCK_FILE_LINE_DATA_DIR 2 #define LOCK_FILE_LINE_START_TIME 3 #define LOCK_FILE_LINE_PORT 4 #define LOCK_FILE_LINE_SOCKET_DIR 5 #define LOCK_FILE_LINE_LISTEN_ADDR 6 #define LOCK_FILE_LINE_SHMEM_KEY 7 #define LOCK_FILE_LINE_PM_STATUS 8 /* * The PM_STATUS line may contain one of these values. All these strings * must be the same length, per comments for AddToDataDirLockFile(). * We pad with spaces as needed to make that true. */ #define PM_STATUS_STARTING "starting" /* still starting up */ #define PM_STATUS_STOPPING "stopping" /* in shutdown sequence */ #define PM_STATUS_READY "ready " /* ready for connections */ #define PM_STATUS_STANDBY "standby " /* up, won't accept connections */ #endif /* UTILS_PIDFILE_H */ pg_query-4.2.3/ext/pg_query/include/utils/backend_status.h0000644000004100000410000002223614510636647024005 0ustar www-datawww-data/* ---------- * backend_status.h * Definitions related to backend status reporting * * Copyright (c) 2001-2022, 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 "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 */ } PgBackendGSSStatus; /* ---------- * PgBackendStatus * * Each live backend maintains a PgBackendStatus struct in shared memory * showing its current activity. (The structs are allocated according to * BackendId, but that is not critical.) Note that 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 xid of the current transaction if available, InvalidTransactionId * if not. */ TransactionId backend_xid; /* * The xmin of the current session if available, InvalidTransactionId if * not. */ TransactionId backend_xmin; } LocalPgBackendStatus; /* ---------- * 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_fetch_stat_beentry(int beid); extern LocalPgBackendStatus *pgstat_fetch_stat_local_beentry(int beid); extern char *pgstat_clip_activity(const char *raw_activity); #endif /* BACKEND_STATUS_H */ pg_query-4.2.3/ext/pg_query/include/utils/varlena.h0000644000004100000410000000300514510636647022434 0ustar www-datawww-data/*------------------------------------------------------------------------- * * varlena.h * Functions for the variable-length built-in types. * * Portions Copyright (c) 1996-2022, 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); #endif pg_query-4.2.3/ext/pg_query/include/utils/timestamp.h0000644000004100000410000001047714510636647023022 0ustar www-datawww-data/*------------------------------------------------------------------------- * * timestamp.h * Definitions for the SQL "timestamp" and "interval" types. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/timestamp.h * *------------------------------------------------------------------------- */ #ifndef TIMESTAMP_H #define TIMESTAMP_H #include "datatype/timestamp.h" #include "fmgr.h" #include "pgtime.h" /* * Macros for fmgr-callable functions. * * For Timestamp, we make use of the same support routines as for int64. * Therefore Timestamp is pass-by-reference if and only if int64 is! */ #define DatumGetTimestamp(X) ((Timestamp) DatumGetInt64(X)) #define DatumGetTimestampTz(X) ((TimestampTz) DatumGetInt64(X)) #define DatumGetIntervalP(X) ((Interval *) DatumGetPointer(X)) #define TimestampGetDatum(X) Int64GetDatum(X) #define TimestampTzGetDatum(X) Int64GetDatum(X) #define IntervalPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_TIMESTAMP(n) DatumGetTimestamp(PG_GETARG_DATUM(n)) #define PG_GETARG_TIMESTAMPTZ(n) DatumGetTimestampTz(PG_GETARG_DATUM(n)) #define PG_GETARG_INTERVAL_P(n) DatumGetIntervalP(PG_GETARG_DATUM(n)) #define PG_RETURN_TIMESTAMP(x) return TimestampGetDatum(x) #define PG_RETURN_TIMESTAMPTZ(x) return TimestampTzGetDatum(x) #define PG_RETURN_INTERVAL_P(x) return IntervalPGetDatum(x) #define TIMESTAMP_MASK(b) (1 << (b)) #define INTERVAL_MASK(b) (1 << (b)) /* Macros to handle packing and unpacking the typmod field for intervals */ #define INTERVAL_FULL_RANGE (0x7FFF) #define INTERVAL_RANGE_MASK (0x7FFF) #define INTERVAL_FULL_PRECISION (0xFFFF) #define INTERVAL_PRECISION_MASK (0xFFFF) #define INTERVAL_TYPMOD(p,r) ((((r) & INTERVAL_RANGE_MASK) << 16) | ((p) & INTERVAL_PRECISION_MASK)) #define INTERVAL_PRECISION(t) ((t) & INTERVAL_PRECISION_MASK) #define INTERVAL_RANGE(t) (((t) >> 16) & INTERVAL_RANGE_MASK) #define TimestampTzPlusMilliseconds(tz,ms) ((tz) + ((ms) * (int64) 1000)) /* Set at postmaster start */ extern 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 *dt); extern int timestamp2tm(Timestamp dt, int *tzp, struct pg_tm *tm, fsec_t *fsec, const char **tzn, pg_tz *attimezone); extern void dt2time(Timestamp dt, int *hour, int *min, int *sec, fsec_t *fsec); extern 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 */ pg_query-4.2.3/ext/pg_query/include/utils/fmgrprotos.h0000644000004100000410000041164114510636647023217 0ustar www-datawww-data/*------------------------------------------------------------------------- * * fmgrprotos.h * Prototypes for built-in functions. * * Portions Copyright (c) 1996-2022, 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_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_v2(PG_FUNCTION_ARGS); extern Datum pg_stat_file_1arg(PG_FUNCTION_ARGS); extern Datum pg_read_file_off_len(PG_FUNCTION_ARGS); extern Datum pg_ls_dir_1arg(PG_FUNCTION_ARGS); extern Datum pg_sleep(PG_FUNCTION_ARGS); extern Datum inetnot(PG_FUNCTION_ARGS); extern Datum inetand(PG_FUNCTION_ARGS); extern Datum inetor(PG_FUNCTION_ARGS); extern Datum inetpl(PG_FUNCTION_ARGS); extern Datum inetmi_int8(PG_FUNCTION_ARGS); extern Datum inetmi(PG_FUNCTION_ARGS); extern Datum statement_timestamp(PG_FUNCTION_ARGS); extern Datum clock_timestamp(PG_FUNCTION_ARGS); extern Datum gin_cmp_prefix(PG_FUNCTION_ARGS); extern Datum pg_has_role_name_name(PG_FUNCTION_ARGS); extern Datum pg_has_role_name_id(PG_FUNCTION_ARGS); extern Datum pg_has_role_id_name(PG_FUNCTION_ARGS); extern Datum pg_has_role_id_id(PG_FUNCTION_ARGS); extern Datum pg_has_role_name(PG_FUNCTION_ARGS); extern Datum pg_has_role_id(PG_FUNCTION_ARGS); extern Datum interval_justify_interval(PG_FUNCTION_ARGS); extern Datum pg_get_triggerdef_ext(PG_FUNCTION_ARGS); extern Datum dasind(PG_FUNCTION_ARGS); extern Datum dacosd(PG_FUNCTION_ARGS); extern Datum datand(PG_FUNCTION_ARGS); extern Datum datan2d(PG_FUNCTION_ARGS); extern Datum dsind(PG_FUNCTION_ARGS); extern Datum dcosd(PG_FUNCTION_ARGS); extern Datum dtand(PG_FUNCTION_ARGS); extern Datum dcotd(PG_FUNCTION_ARGS); extern Datum pg_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_bgwriter_timed_checkpoints(PG_FUNCTION_ARGS); extern Datum pg_stat_get_bgwriter_requested_checkpoints(PG_FUNCTION_ARGS); extern Datum pg_stat_get_bgwriter_buf_written_checkpoints(PG_FUNCTION_ARGS); extern Datum pg_stat_get_bgwriter_buf_written_clean(PG_FUNCTION_ARGS); extern Datum pg_stat_get_bgwriter_maxwritten_clean(PG_FUNCTION_ARGS); extern Datum ginqueryarrayextract(PG_FUNCTION_ARGS); extern Datum pg_stat_get_buf_written_backend(PG_FUNCTION_ARGS); extern Datum anynonarray_in(PG_FUNCTION_ARGS); extern Datum anynonarray_out(PG_FUNCTION_ARGS); extern Datum pg_stat_get_last_vacuum_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_last_autovacuum_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_last_analyze_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_last_autoanalyze_time(PG_FUNCTION_ARGS); extern Datum int8_avg_combine(PG_FUNCTION_ARGS); extern Datum int8_avg_serialize(PG_FUNCTION_ARGS); extern Datum int8_avg_deserialize(PG_FUNCTION_ARGS); extern Datum pg_stat_get_backend_wait_event_type(PG_FUNCTION_ARGS); extern Datum tidgt(PG_FUNCTION_ARGS); extern Datum tidlt(PG_FUNCTION_ARGS); extern Datum tidge(PG_FUNCTION_ARGS); extern Datum tidle(PG_FUNCTION_ARGS); extern Datum bttidcmp(PG_FUNCTION_ARGS); extern Datum tidlarger(PG_FUNCTION_ARGS); extern Datum tidsmaller(PG_FUNCTION_ARGS); extern Datum int8inc_any(PG_FUNCTION_ARGS); extern Datum int8inc_float8_float8(PG_FUNCTION_ARGS); extern Datum float8_regr_accum(PG_FUNCTION_ARGS); extern Datum float8_regr_sxx(PG_FUNCTION_ARGS); extern Datum float8_regr_syy(PG_FUNCTION_ARGS); extern Datum float8_regr_sxy(PG_FUNCTION_ARGS); extern Datum float8_regr_avgx(PG_FUNCTION_ARGS); extern Datum float8_regr_avgy(PG_FUNCTION_ARGS); extern Datum float8_regr_r2(PG_FUNCTION_ARGS); extern Datum float8_regr_slope(PG_FUNCTION_ARGS); extern Datum float8_regr_intercept(PG_FUNCTION_ARGS); extern Datum float8_covar_pop(PG_FUNCTION_ARGS); extern Datum float8_covar_samp(PG_FUNCTION_ARGS); extern Datum float8_corr(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_blk_read_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_blk_write_time(PG_FUNCTION_ARGS); extern Datum pg_switch_wal(PG_FUNCTION_ARGS); extern Datum pg_current_wal_lsn(PG_FUNCTION_ARGS); extern Datum pg_walfile_name_offset(PG_FUNCTION_ARGS); extern Datum pg_walfile_name(PG_FUNCTION_ARGS); extern Datum pg_current_wal_insert_lsn(PG_FUNCTION_ARGS); extern Datum pg_stat_get_backend_wait_event(PG_FUNCTION_ARGS); extern Datum pg_my_temp_schema(PG_FUNCTION_ARGS); extern Datum pg_is_other_temp_schema(PG_FUNCTION_ARGS); extern Datum pg_timezone_names(PG_FUNCTION_ARGS); extern Datum pg_stat_get_backend_xact_start(PG_FUNCTION_ARGS); extern Datum numeric_avg_accum(PG_FUNCTION_ARGS); extern Datum pg_stat_get_buf_alloc(PG_FUNCTION_ARGS); extern Datum pg_stat_get_live_tuples(PG_FUNCTION_ARGS); extern Datum pg_stat_get_dead_tuples(PG_FUNCTION_ARGS); extern Datum pg_advisory_lock_int8(PG_FUNCTION_ARGS); extern Datum pg_advisory_lock_shared_int8(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_lock_int8(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_lock_shared_int8(PG_FUNCTION_ARGS); extern Datum pg_advisory_unlock_int8(PG_FUNCTION_ARGS); extern Datum pg_advisory_unlock_shared_int8(PG_FUNCTION_ARGS); extern Datum pg_advisory_lock_int4(PG_FUNCTION_ARGS); extern Datum pg_advisory_lock_shared_int4(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_lock_int4(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_lock_shared_int4(PG_FUNCTION_ARGS); extern Datum pg_advisory_unlock_int4(PG_FUNCTION_ARGS); extern Datum pg_advisory_unlock_shared_int4(PG_FUNCTION_ARGS); extern Datum pg_advisory_unlock_all(PG_FUNCTION_ARGS); extern Datum xml_in(PG_FUNCTION_ARGS); extern Datum xml_out(PG_FUNCTION_ARGS); extern Datum xmlcomment(PG_FUNCTION_ARGS); extern Datum texttoxml(PG_FUNCTION_ARGS); extern Datum xmlvalidate(PG_FUNCTION_ARGS); extern Datum xml_recv(PG_FUNCTION_ARGS); extern Datum xml_send(PG_FUNCTION_ARGS); extern Datum xmlconcat2(PG_FUNCTION_ARGS); extern Datum varbittypmodin(PG_FUNCTION_ARGS); extern Datum intervaltypmodin(PG_FUNCTION_ARGS); extern Datum intervaltypmodout(PG_FUNCTION_ARGS); extern Datum timestamptypmodin(PG_FUNCTION_ARGS); extern Datum timestamptypmodout(PG_FUNCTION_ARGS); extern Datum timestamptztypmodin(PG_FUNCTION_ARGS); extern Datum timestamptztypmodout(PG_FUNCTION_ARGS); extern Datum timetypmodin(PG_FUNCTION_ARGS); extern Datum timetypmodout(PG_FUNCTION_ARGS); extern Datum timetztypmodin(PG_FUNCTION_ARGS); extern Datum timetztypmodout(PG_FUNCTION_ARGS); extern Datum bpchartypmodin(PG_FUNCTION_ARGS); extern Datum bpchartypmodout(PG_FUNCTION_ARGS); extern Datum varchartypmodin(PG_FUNCTION_ARGS); extern Datum varchartypmodout(PG_FUNCTION_ARGS); extern Datum numerictypmodin(PG_FUNCTION_ARGS); extern Datum numerictypmodout(PG_FUNCTION_ARGS); extern Datum bittypmodin(PG_FUNCTION_ARGS); extern Datum bittypmodout(PG_FUNCTION_ARGS); extern Datum varbittypmodout(PG_FUNCTION_ARGS); extern Datum xmltotext(PG_FUNCTION_ARGS); extern Datum table_to_xml(PG_FUNCTION_ARGS); extern Datum query_to_xml(PG_FUNCTION_ARGS); extern Datum cursor_to_xml(PG_FUNCTION_ARGS); extern Datum table_to_xmlschema(PG_FUNCTION_ARGS); extern Datum query_to_xmlschema(PG_FUNCTION_ARGS); extern Datum cursor_to_xmlschema(PG_FUNCTION_ARGS); extern Datum table_to_xml_and_xmlschema(PG_FUNCTION_ARGS); extern Datum query_to_xml_and_xmlschema(PG_FUNCTION_ARGS); extern Datum xpath(PG_FUNCTION_ARGS); extern Datum schema_to_xml(PG_FUNCTION_ARGS); extern Datum schema_to_xmlschema(PG_FUNCTION_ARGS); extern Datum schema_to_xml_and_xmlschema(PG_FUNCTION_ARGS); extern Datum database_to_xml(PG_FUNCTION_ARGS); extern Datum database_to_xmlschema(PG_FUNCTION_ARGS); extern Datum database_to_xml_and_xmlschema(PG_FUNCTION_ARGS); extern Datum pg_snapshot_in(PG_FUNCTION_ARGS); extern Datum pg_snapshot_out(PG_FUNCTION_ARGS); extern Datum pg_snapshot_recv(PG_FUNCTION_ARGS); extern Datum pg_snapshot_send(PG_FUNCTION_ARGS); extern Datum pg_current_xact_id(PG_FUNCTION_ARGS); extern Datum pg_current_snapshot(PG_FUNCTION_ARGS); extern Datum pg_snapshot_xmin(PG_FUNCTION_ARGS); extern Datum pg_snapshot_xmax(PG_FUNCTION_ARGS); extern Datum pg_snapshot_xip(PG_FUNCTION_ARGS); extern Datum pg_visible_in_snapshot(PG_FUNCTION_ARGS); extern Datum uuid_in(PG_FUNCTION_ARGS); extern Datum uuid_out(PG_FUNCTION_ARGS); extern Datum uuid_lt(PG_FUNCTION_ARGS); extern Datum uuid_le(PG_FUNCTION_ARGS); extern Datum uuid_eq(PG_FUNCTION_ARGS); extern Datum uuid_ge(PG_FUNCTION_ARGS); extern Datum uuid_gt(PG_FUNCTION_ARGS); extern Datum uuid_ne(PG_FUNCTION_ARGS); extern Datum uuid_cmp(PG_FUNCTION_ARGS); extern Datum uuid_recv(PG_FUNCTION_ARGS); extern Datum uuid_send(PG_FUNCTION_ARGS); extern Datum uuid_hash(PG_FUNCTION_ARGS); extern Datum booltext(PG_FUNCTION_ARGS); extern Datum pg_stat_get_function_calls(PG_FUNCTION_ARGS); extern Datum pg_stat_get_function_total_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_function_self_time(PG_FUNCTION_ARGS); extern Datum record_eq(PG_FUNCTION_ARGS); extern Datum record_ne(PG_FUNCTION_ARGS); extern Datum record_lt(PG_FUNCTION_ARGS); extern Datum record_gt(PG_FUNCTION_ARGS); extern Datum record_le(PG_FUNCTION_ARGS); extern Datum record_ge(PG_FUNCTION_ARGS); extern Datum btrecordcmp(PG_FUNCTION_ARGS); extern Datum pg_table_size(PG_FUNCTION_ARGS); extern Datum pg_indexes_size(PG_FUNCTION_ARGS); extern Datum pg_relation_filenode(PG_FUNCTION_ARGS); extern Datum has_foreign_data_wrapper_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_foreign_data_wrapper_privilege_name_id(PG_FUNCTION_ARGS); extern Datum has_foreign_data_wrapper_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_foreign_data_wrapper_privilege_id_id(PG_FUNCTION_ARGS); extern Datum has_foreign_data_wrapper_privilege_name(PG_FUNCTION_ARGS); extern Datum has_foreign_data_wrapper_privilege_id(PG_FUNCTION_ARGS); extern Datum has_server_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_server_privilege_name_id(PG_FUNCTION_ARGS); extern Datum has_server_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_server_privilege_id_id(PG_FUNCTION_ARGS); extern Datum has_server_privilege_name(PG_FUNCTION_ARGS); extern Datum has_server_privilege_id(PG_FUNCTION_ARGS); extern Datum has_column_privilege_name_name_name(PG_FUNCTION_ARGS); extern Datum has_column_privilege_name_name_attnum(PG_FUNCTION_ARGS); extern Datum has_column_privilege_name_id_name(PG_FUNCTION_ARGS); extern Datum has_column_privilege_name_id_attnum(PG_FUNCTION_ARGS); extern Datum has_column_privilege_id_name_name(PG_FUNCTION_ARGS); extern Datum has_column_privilege_id_name_attnum(PG_FUNCTION_ARGS); extern Datum has_column_privilege_id_id_name(PG_FUNCTION_ARGS); extern Datum has_column_privilege_id_id_attnum(PG_FUNCTION_ARGS); extern Datum has_column_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_column_privilege_name_attnum(PG_FUNCTION_ARGS); extern Datum has_column_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_column_privilege_id_attnum(PG_FUNCTION_ARGS); extern Datum has_any_column_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_any_column_privilege_name_id(PG_FUNCTION_ARGS); extern Datum has_any_column_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_any_column_privilege_id_id(PG_FUNCTION_ARGS); extern Datum has_any_column_privilege_name(PG_FUNCTION_ARGS); extern Datum has_any_column_privilege_id(PG_FUNCTION_ARGS); extern Datum bitoverlay(PG_FUNCTION_ARGS); extern Datum bitoverlay_no_len(PG_FUNCTION_ARGS); extern Datum bitgetbit(PG_FUNCTION_ARGS); extern Datum bitsetbit(PG_FUNCTION_ARGS); extern Datum pg_relation_filepath(PG_FUNCTION_ARGS); extern Datum pg_listening_channels(PG_FUNCTION_ARGS); extern Datum pg_notify(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_numscans(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_tuples_returned(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_tuples_fetched(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_tuples_inserted(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_tuples_updated(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_tuples_deleted(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_tuples_hot_updated(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_blocks_fetched(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_blocks_hit(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_function_calls(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_function_total_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_function_self_time(PG_FUNCTION_ARGS); extern Datum xpath_exists(PG_FUNCTION_ARGS); extern Datum xml_is_well_formed(PG_FUNCTION_ARGS); extern Datum xml_is_well_formed_document(PG_FUNCTION_ARGS); extern Datum xml_is_well_formed_content(PG_FUNCTION_ARGS); extern Datum pg_stat_get_vacuum_count(PG_FUNCTION_ARGS); extern Datum pg_stat_get_autovacuum_count(PG_FUNCTION_ARGS); extern Datum pg_stat_get_analyze_count(PG_FUNCTION_ARGS); extern Datum pg_stat_get_autoanalyze_count(PG_FUNCTION_ARGS); extern Datum text_concat(PG_FUNCTION_ARGS); extern Datum text_concat_ws(PG_FUNCTION_ARGS); extern Datum text_left(PG_FUNCTION_ARGS); extern Datum text_right(PG_FUNCTION_ARGS); extern Datum text_reverse(PG_FUNCTION_ARGS); extern Datum pg_stat_get_buf_fsync_backend(PG_FUNCTION_ARGS); extern Datum gist_point_distance(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_conflict_tablespace(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_conflict_lock(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_conflict_snapshot(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_conflict_bufferpin(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_conflict_startup_deadlock(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_conflict_all(PG_FUNCTION_ARGS); extern Datum pg_wal_replay_pause(PG_FUNCTION_ARGS); extern Datum pg_wal_replay_resume(PG_FUNCTION_ARGS); extern Datum pg_is_wal_replay_paused(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_stat_reset_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_bgwriter_stat_reset_time(PG_FUNCTION_ARGS); extern Datum ginarrayextract_2args(PG_FUNCTION_ARGS); extern Datum gin_extract_tsvector_2args(PG_FUNCTION_ARGS); extern Datum pg_sequence_parameters(PG_FUNCTION_ARGS); extern Datum pg_available_extensions(PG_FUNCTION_ARGS); extern Datum pg_available_extension_versions(PG_FUNCTION_ARGS); extern Datum pg_extension_update_paths(PG_FUNCTION_ARGS); extern Datum pg_extension_config_dump(PG_FUNCTION_ARGS); extern Datum gin_extract_tsquery_5args(PG_FUNCTION_ARGS); extern Datum gin_tsquery_consistent_6args(PG_FUNCTION_ARGS); extern Datum pg_advisory_xact_lock_int8(PG_FUNCTION_ARGS); extern Datum pg_advisory_xact_lock_shared_int8(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_xact_lock_int8(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_xact_lock_shared_int8(PG_FUNCTION_ARGS); extern Datum pg_advisory_xact_lock_int4(PG_FUNCTION_ARGS); extern Datum pg_advisory_xact_lock_shared_int4(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_xact_lock_int4(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_xact_lock_shared_int4(PG_FUNCTION_ARGS); extern Datum varchar_support(PG_FUNCTION_ARGS); extern Datum pg_create_restore_point(PG_FUNCTION_ARGS); extern Datum pg_stat_get_wal_senders(PG_FUNCTION_ARGS); extern Datum window_row_number(PG_FUNCTION_ARGS); extern Datum window_rank(PG_FUNCTION_ARGS); extern Datum window_dense_rank(PG_FUNCTION_ARGS); extern Datum window_percent_rank(PG_FUNCTION_ARGS); extern Datum window_cume_dist(PG_FUNCTION_ARGS); extern Datum window_ntile(PG_FUNCTION_ARGS); extern Datum window_lag(PG_FUNCTION_ARGS); extern Datum window_lag_with_offset(PG_FUNCTION_ARGS); extern Datum window_lag_with_offset_and_default(PG_FUNCTION_ARGS); extern Datum window_lead(PG_FUNCTION_ARGS); extern Datum window_lead_with_offset(PG_FUNCTION_ARGS); extern Datum window_lead_with_offset_and_default(PG_FUNCTION_ARGS); extern Datum window_first_value(PG_FUNCTION_ARGS); extern Datum window_last_value(PG_FUNCTION_ARGS); extern Datum window_nth_value(PG_FUNCTION_ARGS); extern Datum fdw_handler_in(PG_FUNCTION_ARGS); extern Datum fdw_handler_out(PG_FUNCTION_ARGS); extern Datum void_recv(PG_FUNCTION_ARGS); extern Datum void_send(PG_FUNCTION_ARGS); extern Datum btint2sortsupport(PG_FUNCTION_ARGS); extern Datum btint4sortsupport(PG_FUNCTION_ARGS); extern Datum btint8sortsupport(PG_FUNCTION_ARGS); extern Datum btfloat4sortsupport(PG_FUNCTION_ARGS); extern Datum btfloat8sortsupport(PG_FUNCTION_ARGS); extern Datum btoidsortsupport(PG_FUNCTION_ARGS); extern Datum btnamesortsupport(PG_FUNCTION_ARGS); extern Datum date_sortsupport(PG_FUNCTION_ARGS); extern Datum timestamp_sortsupport(PG_FUNCTION_ARGS); extern Datum has_type_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_type_privilege_name_id(PG_FUNCTION_ARGS); extern Datum has_type_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_type_privilege_id_id(PG_FUNCTION_ARGS); extern Datum has_type_privilege_name(PG_FUNCTION_ARGS); extern Datum has_type_privilege_id(PG_FUNCTION_ARGS); extern Datum macaddr_not(PG_FUNCTION_ARGS); extern Datum macaddr_and(PG_FUNCTION_ARGS); extern Datum macaddr_or(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_temp_files(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_temp_bytes(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_deadlocks(PG_FUNCTION_ARGS); extern Datum array_to_json(PG_FUNCTION_ARGS); extern Datum array_to_json_pretty(PG_FUNCTION_ARGS); extern Datum row_to_json(PG_FUNCTION_ARGS); extern Datum row_to_json_pretty(PG_FUNCTION_ARGS); extern Datum numeric_support(PG_FUNCTION_ARGS); extern Datum varbit_support(PG_FUNCTION_ARGS); extern Datum pg_get_viewdef_wrap(PG_FUNCTION_ARGS); extern Datum pg_stat_get_checkpoint_write_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_checkpoint_sync_time(PG_FUNCTION_ARGS); extern Datum pg_collation_for(PG_FUNCTION_ARGS); extern Datum pg_trigger_depth(PG_FUNCTION_ARGS); extern Datum pg_wal_lsn_diff(PG_FUNCTION_ARGS); extern Datum pg_size_pretty_numeric(PG_FUNCTION_ARGS); extern Datum array_remove(PG_FUNCTION_ARGS); extern Datum array_replace(PG_FUNCTION_ARGS); extern Datum rangesel(PG_FUNCTION_ARGS); extern Datum be_lo_lseek64(PG_FUNCTION_ARGS); extern Datum be_lo_tell64(PG_FUNCTION_ARGS); extern Datum be_lo_truncate64(PG_FUNCTION_ARGS); extern Datum json_agg_transfn(PG_FUNCTION_ARGS); extern Datum json_agg_finalfn(PG_FUNCTION_ARGS); extern Datum to_json(PG_FUNCTION_ARGS); extern Datum pg_stat_get_mod_since_analyze(PG_FUNCTION_ARGS); extern Datum numeric_sum(PG_FUNCTION_ARGS); extern Datum array_cardinality(PG_FUNCTION_ARGS); extern Datum json_object_agg_transfn(PG_FUNCTION_ARGS); extern Datum record_image_eq(PG_FUNCTION_ARGS); extern Datum record_image_ne(PG_FUNCTION_ARGS); extern Datum record_image_lt(PG_FUNCTION_ARGS); extern Datum record_image_gt(PG_FUNCTION_ARGS); extern Datum record_image_le(PG_FUNCTION_ARGS); extern Datum record_image_ge(PG_FUNCTION_ARGS); extern Datum btrecordimagecmp(PG_FUNCTION_ARGS); extern Datum pg_stat_get_archiver(PG_FUNCTION_ARGS); extern Datum json_object_agg_finalfn(PG_FUNCTION_ARGS); extern Datum json_build_array(PG_FUNCTION_ARGS); extern Datum json_build_array_noargs(PG_FUNCTION_ARGS); extern Datum json_build_object(PG_FUNCTION_ARGS); extern Datum json_build_object_noargs(PG_FUNCTION_ARGS); extern Datum json_object(PG_FUNCTION_ARGS); extern Datum json_object_two_arg(PG_FUNCTION_ARGS); extern Datum json_to_record(PG_FUNCTION_ARGS); extern Datum json_to_recordset(PG_FUNCTION_ARGS); extern Datum jsonb_array_length(PG_FUNCTION_ARGS); extern Datum jsonb_each(PG_FUNCTION_ARGS); extern Datum jsonb_populate_record(PG_FUNCTION_ARGS); extern Datum jsonb_typeof(PG_FUNCTION_ARGS); extern Datum jsonb_object_field_text(PG_FUNCTION_ARGS); extern Datum jsonb_array_element(PG_FUNCTION_ARGS); extern Datum jsonb_array_element_text(PG_FUNCTION_ARGS); extern Datum jsonb_extract_path(PG_FUNCTION_ARGS); extern Datum width_bucket_array(PG_FUNCTION_ARGS); extern Datum jsonb_array_elements(PG_FUNCTION_ARGS); extern Datum pg_lsn_in(PG_FUNCTION_ARGS); extern Datum pg_lsn_out(PG_FUNCTION_ARGS); extern Datum pg_lsn_lt(PG_FUNCTION_ARGS); extern Datum pg_lsn_le(PG_FUNCTION_ARGS); extern Datum pg_lsn_eq(PG_FUNCTION_ARGS); extern Datum pg_lsn_ge(PG_FUNCTION_ARGS); extern Datum pg_lsn_gt(PG_FUNCTION_ARGS); extern Datum pg_lsn_ne(PG_FUNCTION_ARGS); extern Datum pg_lsn_mi(PG_FUNCTION_ARGS); extern Datum pg_lsn_recv(PG_FUNCTION_ARGS); extern Datum pg_lsn_send(PG_FUNCTION_ARGS); extern Datum pg_lsn_cmp(PG_FUNCTION_ARGS); extern Datum pg_lsn_hash(PG_FUNCTION_ARGS); extern Datum bttextsortsupport(PG_FUNCTION_ARGS); extern Datum generate_series_step_numeric(PG_FUNCTION_ARGS); extern Datum generate_series_numeric(PG_FUNCTION_ARGS); extern Datum json_strip_nulls(PG_FUNCTION_ARGS); extern Datum jsonb_strip_nulls(PG_FUNCTION_ARGS); extern Datum jsonb_object(PG_FUNCTION_ARGS); extern Datum jsonb_object_two_arg(PG_FUNCTION_ARGS); extern Datum jsonb_agg_transfn(PG_FUNCTION_ARGS); extern Datum jsonb_agg_finalfn(PG_FUNCTION_ARGS); extern Datum jsonb_object_agg_transfn(PG_FUNCTION_ARGS); extern Datum jsonb_object_agg_finalfn(PG_FUNCTION_ARGS); extern Datum jsonb_build_array(PG_FUNCTION_ARGS); extern Datum jsonb_build_array_noargs(PG_FUNCTION_ARGS); extern Datum jsonb_build_object(PG_FUNCTION_ARGS); extern Datum jsonb_build_object_noargs(PG_FUNCTION_ARGS); extern Datum dist_ppoly(PG_FUNCTION_ARGS); extern Datum array_position(PG_FUNCTION_ARGS); extern Datum array_position_start(PG_FUNCTION_ARGS); extern Datum array_positions(PG_FUNCTION_ARGS); extern Datum gist_circle_distance(PG_FUNCTION_ARGS); extern Datum numeric_scale(PG_FUNCTION_ARGS); extern Datum gist_point_fetch(PG_FUNCTION_ARGS); extern Datum numeric_sortsupport(PG_FUNCTION_ARGS); extern Datum gist_poly_distance(PG_FUNCTION_ARGS); extern Datum dist_cpoint(PG_FUNCTION_ARGS); extern Datum dist_polyp(PG_FUNCTION_ARGS); extern Datum pg_read_file_v2(PG_FUNCTION_ARGS); extern Datum show_config_by_name_missing_ok(PG_FUNCTION_ARGS); extern Datum pg_read_binary_file(PG_FUNCTION_ARGS); extern Datum pg_notification_queue_usage(PG_FUNCTION_ARGS); extern Datum pg_ls_dir(PG_FUNCTION_ARGS); extern Datum row_security_active(PG_FUNCTION_ARGS); extern Datum row_security_active_name(PG_FUNCTION_ARGS); extern Datum uuid_sortsupport(PG_FUNCTION_ARGS); extern Datum jsonb_concat(PG_FUNCTION_ARGS); extern Datum jsonb_delete(PG_FUNCTION_ARGS); extern Datum jsonb_delete_idx(PG_FUNCTION_ARGS); extern Datum jsonb_delete_path(PG_FUNCTION_ARGS); extern Datum jsonb_set(PG_FUNCTION_ARGS); extern Datum jsonb_pretty(PG_FUNCTION_ARGS); extern Datum pg_stat_file(PG_FUNCTION_ARGS); extern Datum xidneq(PG_FUNCTION_ARGS); extern Datum tsm_handler_in(PG_FUNCTION_ARGS); extern Datum tsm_handler_out(PG_FUNCTION_ARGS); extern Datum tsm_bernoulli_handler(PG_FUNCTION_ARGS); extern Datum tsm_system_handler(PG_FUNCTION_ARGS); extern Datum pg_stat_get_wal_receiver(PG_FUNCTION_ARGS); extern Datum pg_stat_get_progress_info(PG_FUNCTION_ARGS); extern Datum tsvector_filter(PG_FUNCTION_ARGS); extern Datum tsvector_setweight_by_filter(PG_FUNCTION_ARGS); extern Datum tsvector_delete_str(PG_FUNCTION_ARGS); extern Datum tsvector_unnest(PG_FUNCTION_ARGS); extern Datum tsvector_delete_arr(PG_FUNCTION_ARGS); extern Datum int4_avg_combine(PG_FUNCTION_ARGS); extern Datum interval_combine(PG_FUNCTION_ARGS); extern Datum tsvector_to_array(PG_FUNCTION_ARGS); extern Datum array_to_tsvector(PG_FUNCTION_ARGS); extern Datum bpchar_sortsupport(PG_FUNCTION_ARGS); extern Datum show_all_file_settings(PG_FUNCTION_ARGS); extern Datum pg_current_wal_flush_lsn(PG_FUNCTION_ARGS); extern Datum bytea_sortsupport(PG_FUNCTION_ARGS); extern Datum bttext_pattern_sortsupport(PG_FUNCTION_ARGS); extern Datum btbpchar_pattern_sortsupport(PG_FUNCTION_ARGS); extern Datum pg_size_bytes(PG_FUNCTION_ARGS); extern Datum numeric_serialize(PG_FUNCTION_ARGS); extern Datum numeric_deserialize(PG_FUNCTION_ARGS); extern Datum numeric_avg_combine(PG_FUNCTION_ARGS); extern Datum numeric_poly_combine(PG_FUNCTION_ARGS); extern Datum numeric_poly_serialize(PG_FUNCTION_ARGS); extern Datum numeric_poly_deserialize(PG_FUNCTION_ARGS); extern Datum numeric_combine(PG_FUNCTION_ARGS); extern Datum float8_regr_combine(PG_FUNCTION_ARGS); extern Datum jsonb_delete_array(PG_FUNCTION_ARGS); extern Datum cash_mul_int8(PG_FUNCTION_ARGS); extern Datum cash_div_int8(PG_FUNCTION_ARGS); extern Datum pg_current_xact_id_if_assigned(PG_FUNCTION_ARGS); extern Datum pg_get_partkeydef(PG_FUNCTION_ARGS); extern Datum pg_ls_logdir(PG_FUNCTION_ARGS); extern Datum pg_ls_waldir(PG_FUNCTION_ARGS); extern Datum pg_ndistinct_in(PG_FUNCTION_ARGS); extern Datum pg_ndistinct_out(PG_FUNCTION_ARGS); extern Datum pg_ndistinct_recv(PG_FUNCTION_ARGS); extern Datum pg_ndistinct_send(PG_FUNCTION_ARGS); extern Datum macaddr_sortsupport(PG_FUNCTION_ARGS); extern Datum pg_xact_status(PG_FUNCTION_ARGS); extern Datum pg_safe_snapshot_blocking_pids(PG_FUNCTION_ARGS); extern Datum pg_isolation_test_session_is_blocked(PG_FUNCTION_ARGS); extern Datum pg_identify_object_as_address(PG_FUNCTION_ARGS); extern Datum brin_minmax_opcinfo(PG_FUNCTION_ARGS); extern Datum brin_minmax_add_value(PG_FUNCTION_ARGS); extern Datum brin_minmax_consistent(PG_FUNCTION_ARGS); extern Datum brin_minmax_union(PG_FUNCTION_ARGS); extern Datum int8_avg_accum_inv(PG_FUNCTION_ARGS); extern Datum numeric_poly_sum(PG_FUNCTION_ARGS); extern Datum numeric_poly_avg(PG_FUNCTION_ARGS); extern Datum numeric_poly_var_pop(PG_FUNCTION_ARGS); extern Datum numeric_poly_var_samp(PG_FUNCTION_ARGS); extern Datum numeric_poly_stddev_pop(PG_FUNCTION_ARGS); extern Datum numeric_poly_stddev_samp(PG_FUNCTION_ARGS); extern Datum regexp_match_no_flags(PG_FUNCTION_ARGS); extern Datum regexp_match(PG_FUNCTION_ARGS); extern Datum int8_mul_cash(PG_FUNCTION_ARGS); extern Datum pg_config(PG_FUNCTION_ARGS); extern Datum pg_hba_file_rules(PG_FUNCTION_ARGS); extern Datum pg_statistics_obj_is_visible(PG_FUNCTION_ARGS); extern Datum pg_dependencies_in(PG_FUNCTION_ARGS); extern Datum pg_dependencies_out(PG_FUNCTION_ARGS); extern Datum pg_dependencies_recv(PG_FUNCTION_ARGS); extern Datum pg_dependencies_send(PG_FUNCTION_ARGS); extern Datum pg_get_partition_constraintdef(PG_FUNCTION_ARGS); extern Datum time_hash_extended(PG_FUNCTION_ARGS); extern Datum timetz_hash_extended(PG_FUNCTION_ARGS); extern Datum timestamp_hash_extended(PG_FUNCTION_ARGS); extern Datum uuid_hash_extended(PG_FUNCTION_ARGS); extern Datum pg_lsn_hash_extended(PG_FUNCTION_ARGS); extern Datum hashenumextended(PG_FUNCTION_ARGS); extern Datum pg_get_statisticsobjdef(PG_FUNCTION_ARGS); extern Datum jsonb_hash_extended(PG_FUNCTION_ARGS); extern Datum hash_range_extended(PG_FUNCTION_ARGS); extern Datum interval_hash_extended(PG_FUNCTION_ARGS); extern Datum sha224_bytea(PG_FUNCTION_ARGS); extern Datum sha256_bytea(PG_FUNCTION_ARGS); extern Datum sha384_bytea(PG_FUNCTION_ARGS); extern Datum sha512_bytea(PG_FUNCTION_ARGS); extern Datum pg_partition_tree(PG_FUNCTION_ARGS); extern Datum pg_partition_root(PG_FUNCTION_ARGS); extern Datum pg_partition_ancestors(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_checksum_failures(PG_FUNCTION_ARGS); extern Datum pg_stats_ext_mcvlist_items(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_checksum_last_failure(PG_FUNCTION_ARGS); extern Datum gen_random_uuid(PG_FUNCTION_ARGS); extern Datum gtsvector_options(PG_FUNCTION_ARGS); extern Datum 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_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 pg_collation_is_visible(PG_FUNCTION_ARGS); extern Datum array_typanalyze(PG_FUNCTION_ARGS); extern Datum arraycontsel(PG_FUNCTION_ARGS); extern Datum arraycontjoinsel(PG_FUNCTION_ARGS); extern Datum pg_get_multixact_members(PG_FUNCTION_ARGS); extern Datum pg_last_wal_receive_lsn(PG_FUNCTION_ARGS); extern Datum pg_last_wal_replay_lsn(PG_FUNCTION_ARGS); extern Datum cash_div_cash(PG_FUNCTION_ARGS); extern Datum cash_numeric(PG_FUNCTION_ARGS); extern Datum numeric_cash(PG_FUNCTION_ARGS); extern Datum pg_read_file_all(PG_FUNCTION_ARGS); extern Datum pg_read_binary_file_off_len(PG_FUNCTION_ARGS); extern Datum pg_read_binary_file_all(PG_FUNCTION_ARGS); extern Datum pg_opfamily_is_visible(PG_FUNCTION_ARGS); extern Datum pg_last_xact_replay_timestamp(PG_FUNCTION_ARGS); extern Datum anyrange_in(PG_FUNCTION_ARGS); extern Datum anyrange_out(PG_FUNCTION_ARGS); extern Datum range_in(PG_FUNCTION_ARGS); extern Datum range_out(PG_FUNCTION_ARGS); extern Datum range_recv(PG_FUNCTION_ARGS); extern Datum range_send(PG_FUNCTION_ARGS); extern Datum pg_identify_object(PG_FUNCTION_ARGS); extern Datum range_constructor2(PG_FUNCTION_ARGS); extern Datum range_constructor3(PG_FUNCTION_ARGS); extern Datum pg_relation_is_updatable(PG_FUNCTION_ARGS); extern Datum pg_column_is_updatable(PG_FUNCTION_ARGS); extern Datum make_date(PG_FUNCTION_ARGS); extern Datum make_time(PG_FUNCTION_ARGS); extern Datum range_lower(PG_FUNCTION_ARGS); extern Datum range_upper(PG_FUNCTION_ARGS); extern Datum range_empty(PG_FUNCTION_ARGS); extern Datum range_lower_inc(PG_FUNCTION_ARGS); extern Datum range_upper_inc(PG_FUNCTION_ARGS); extern Datum range_lower_inf(PG_FUNCTION_ARGS); extern Datum range_upper_inf(PG_FUNCTION_ARGS); extern Datum range_eq(PG_FUNCTION_ARGS); extern Datum range_ne(PG_FUNCTION_ARGS); extern Datum range_overlaps(PG_FUNCTION_ARGS); extern Datum range_contains_elem(PG_FUNCTION_ARGS); extern Datum range_contains(PG_FUNCTION_ARGS); extern Datum elem_contained_by_range(PG_FUNCTION_ARGS); extern Datum range_contained_by(PG_FUNCTION_ARGS); extern Datum range_adjacent(PG_FUNCTION_ARGS); extern Datum range_before(PG_FUNCTION_ARGS); extern Datum range_after(PG_FUNCTION_ARGS); extern Datum range_overleft(PG_FUNCTION_ARGS); extern Datum range_overright(PG_FUNCTION_ARGS); extern Datum range_union(PG_FUNCTION_ARGS); extern Datum range_intersect(PG_FUNCTION_ARGS); extern Datum range_minus(PG_FUNCTION_ARGS); extern Datum range_cmp(PG_FUNCTION_ARGS); extern Datum range_lt(PG_FUNCTION_ARGS); extern Datum range_le(PG_FUNCTION_ARGS); extern Datum range_ge(PG_FUNCTION_ARGS); extern Datum range_gt(PG_FUNCTION_ARGS); extern Datum range_gist_consistent(PG_FUNCTION_ARGS); extern Datum range_gist_union(PG_FUNCTION_ARGS); extern Datum pg_replication_slot_advance(PG_FUNCTION_ARGS); extern Datum range_gist_penalty(PG_FUNCTION_ARGS); extern Datum range_gist_picksplit(PG_FUNCTION_ARGS); extern Datum range_gist_same(PG_FUNCTION_ARGS); extern Datum hash_range(PG_FUNCTION_ARGS); extern Datum int4range_canonical(PG_FUNCTION_ARGS); extern Datum daterange_canonical(PG_FUNCTION_ARGS); extern Datum range_typanalyze(PG_FUNCTION_ARGS); extern Datum timestamp_support(PG_FUNCTION_ARGS); extern Datum interval_support(PG_FUNCTION_ARGS); extern Datum ginarraytriconsistent(PG_FUNCTION_ARGS); extern Datum gin_tsquery_triconsistent(PG_FUNCTION_ARGS); extern Datum int4range_subdiff(PG_FUNCTION_ARGS); extern Datum int8range_subdiff(PG_FUNCTION_ARGS); extern Datum numrange_subdiff(PG_FUNCTION_ARGS); extern Datum daterange_subdiff(PG_FUNCTION_ARGS); extern Datum int8range_canonical(PG_FUNCTION_ARGS); extern Datum tsrange_subdiff(PG_FUNCTION_ARGS); extern Datum tstzrange_subdiff(PG_FUNCTION_ARGS); extern Datum jsonb_object_keys(PG_FUNCTION_ARGS); extern Datum jsonb_each_text(PG_FUNCTION_ARGS); extern Datum mxid_age(PG_FUNCTION_ARGS); extern Datum jsonb_extract_path_text(PG_FUNCTION_ARGS); extern Datum acldefault_sql(PG_FUNCTION_ARGS); extern Datum time_support(PG_FUNCTION_ARGS); extern Datum json_object_field(PG_FUNCTION_ARGS); extern Datum json_object_field_text(PG_FUNCTION_ARGS); extern Datum json_array_element(PG_FUNCTION_ARGS); extern Datum json_array_element_text(PG_FUNCTION_ARGS); extern Datum json_extract_path(PG_FUNCTION_ARGS); extern Datum brin_summarize_new_values(PG_FUNCTION_ARGS); extern Datum json_extract_path_text(PG_FUNCTION_ARGS); extern Datum pg_get_object_address(PG_FUNCTION_ARGS); extern Datum json_array_elements(PG_FUNCTION_ARGS); extern Datum json_array_length(PG_FUNCTION_ARGS); extern Datum json_object_keys(PG_FUNCTION_ARGS); extern Datum json_each(PG_FUNCTION_ARGS); extern Datum json_each_text(PG_FUNCTION_ARGS); extern Datum json_populate_record(PG_FUNCTION_ARGS); extern Datum json_populate_recordset(PG_FUNCTION_ARGS); extern Datum json_typeof(PG_FUNCTION_ARGS); extern Datum json_array_elements_text(PG_FUNCTION_ARGS); extern Datum ordered_set_transition(PG_FUNCTION_ARGS); extern Datum ordered_set_transition_multi(PG_FUNCTION_ARGS); extern Datum percentile_disc_final(PG_FUNCTION_ARGS); extern Datum percentile_cont_float8_final(PG_FUNCTION_ARGS); extern Datum percentile_cont_interval_final(PG_FUNCTION_ARGS); extern Datum percentile_disc_multi_final(PG_FUNCTION_ARGS); extern Datum percentile_cont_float8_multi_final(PG_FUNCTION_ARGS); extern Datum percentile_cont_interval_multi_final(PG_FUNCTION_ARGS); extern Datum mode_final(PG_FUNCTION_ARGS); extern Datum hypothetical_rank_final(PG_FUNCTION_ARGS); extern Datum hypothetical_percent_rank_final(PG_FUNCTION_ARGS); extern Datum hypothetical_cume_dist_final(PG_FUNCTION_ARGS); extern Datum hypothetical_dense_rank_final(PG_FUNCTION_ARGS); extern Datum generate_series_int4_support(PG_FUNCTION_ARGS); extern Datum generate_series_int8_support(PG_FUNCTION_ARGS); extern Datum array_unnest_support(PG_FUNCTION_ARGS); extern Datum gist_box_distance(PG_FUNCTION_ARGS); extern Datum brin_summarize_range(PG_FUNCTION_ARGS); extern Datum jsonpath_in(PG_FUNCTION_ARGS); extern Datum jsonpath_recv(PG_FUNCTION_ARGS); extern Datum jsonpath_out(PG_FUNCTION_ARGS); extern Datum jsonpath_send(PG_FUNCTION_ARGS); extern Datum jsonb_path_exists(PG_FUNCTION_ARGS); extern Datum jsonb_path_query(PG_FUNCTION_ARGS); extern Datum jsonb_path_query_array(PG_FUNCTION_ARGS); extern Datum jsonb_path_query_first(PG_FUNCTION_ARGS); extern Datum jsonb_path_match(PG_FUNCTION_ARGS); extern Datum jsonb_path_exists_opr(PG_FUNCTION_ARGS); extern Datum jsonb_path_match_opr(PG_FUNCTION_ARGS); extern Datum brin_desummarize_range(PG_FUNCTION_ARGS); extern Datum spg_quad_config(PG_FUNCTION_ARGS); extern Datum spg_quad_choose(PG_FUNCTION_ARGS); extern Datum spg_quad_picksplit(PG_FUNCTION_ARGS); extern Datum spg_quad_inner_consistent(PG_FUNCTION_ARGS); extern Datum spg_quad_leaf_consistent(PG_FUNCTION_ARGS); extern Datum spg_kd_config(PG_FUNCTION_ARGS); extern Datum spg_kd_choose(PG_FUNCTION_ARGS); extern Datum spg_kd_picksplit(PG_FUNCTION_ARGS); extern Datum spg_kd_inner_consistent(PG_FUNCTION_ARGS); extern Datum spg_text_config(PG_FUNCTION_ARGS); extern Datum spg_text_choose(PG_FUNCTION_ARGS); extern Datum spg_text_picksplit(PG_FUNCTION_ARGS); extern Datum spg_text_inner_consistent(PG_FUNCTION_ARGS); extern Datum spg_text_leaf_consistent(PG_FUNCTION_ARGS); extern Datum pg_sequence_last_value(PG_FUNCTION_ARGS); extern Datum jsonb_ne(PG_FUNCTION_ARGS); extern Datum jsonb_lt(PG_FUNCTION_ARGS); extern Datum jsonb_gt(PG_FUNCTION_ARGS); extern Datum jsonb_le(PG_FUNCTION_ARGS); extern Datum jsonb_ge(PG_FUNCTION_ARGS); extern Datum jsonb_eq(PG_FUNCTION_ARGS); extern Datum jsonb_cmp(PG_FUNCTION_ARGS); extern Datum jsonb_hash(PG_FUNCTION_ARGS); extern Datum jsonb_contains(PG_FUNCTION_ARGS); extern Datum jsonb_exists(PG_FUNCTION_ARGS); extern Datum jsonb_exists_any(PG_FUNCTION_ARGS); extern Datum jsonb_exists_all(PG_FUNCTION_ARGS); extern Datum jsonb_contained(PG_FUNCTION_ARGS); extern Datum array_agg_array_transfn(PG_FUNCTION_ARGS); extern Datum array_agg_array_finalfn(PG_FUNCTION_ARGS); extern Datum range_merge(PG_FUNCTION_ARGS); extern Datum inet_merge(PG_FUNCTION_ARGS); extern Datum boxes_bound_box(PG_FUNCTION_ARGS); extern Datum inet_same_family(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_record_init_privs(PG_FUNCTION_ARGS); extern Datum regnamespacein(PG_FUNCTION_ARGS); extern Datum regnamespaceout(PG_FUNCTION_ARGS); extern Datum to_regnamespace(PG_FUNCTION_ARGS); extern Datum regnamespacerecv(PG_FUNCTION_ARGS); extern Datum regnamespacesend(PG_FUNCTION_ARGS); extern Datum point_box(PG_FUNCTION_ARGS); extern Datum regroleout(PG_FUNCTION_ARGS); extern Datum to_regrole(PG_FUNCTION_ARGS); extern Datum regrolerecv(PG_FUNCTION_ARGS); extern Datum regrolesend(PG_FUNCTION_ARGS); extern Datum regrolein(PG_FUNCTION_ARGS); extern Datum pg_rotate_logfile(PG_FUNCTION_ARGS); extern Datum pg_read_file(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_missing_value(PG_FUNCTION_ARGS); extern Datum brin_inclusion_opcinfo(PG_FUNCTION_ARGS); extern Datum brin_inclusion_add_value(PG_FUNCTION_ARGS); extern Datum brin_inclusion_consistent(PG_FUNCTION_ARGS); extern Datum brin_inclusion_union(PG_FUNCTION_ARGS); extern Datum macaddr8_in(PG_FUNCTION_ARGS); extern Datum macaddr8_out(PG_FUNCTION_ARGS); extern Datum macaddr8_trunc(PG_FUNCTION_ARGS); extern Datum macaddr8_eq(PG_FUNCTION_ARGS); extern Datum macaddr8_lt(PG_FUNCTION_ARGS); extern Datum macaddr8_le(PG_FUNCTION_ARGS); extern Datum macaddr8_gt(PG_FUNCTION_ARGS); extern Datum macaddr8_ge(PG_FUNCTION_ARGS); extern Datum macaddr8_ne(PG_FUNCTION_ARGS); extern Datum macaddr8_cmp(PG_FUNCTION_ARGS); extern Datum macaddr8_not(PG_FUNCTION_ARGS); extern Datum macaddr8_and(PG_FUNCTION_ARGS); extern Datum macaddr8_or(PG_FUNCTION_ARGS); extern Datum macaddrtomacaddr8(PG_FUNCTION_ARGS); extern Datum macaddr8tomacaddr(PG_FUNCTION_ARGS); extern Datum macaddr8_set7bit(PG_FUNCTION_ARGS); extern Datum in_range_int8_int8(PG_FUNCTION_ARGS); extern Datum in_range_int4_int8(PG_FUNCTION_ARGS); extern Datum in_range_int4_int4(PG_FUNCTION_ARGS); extern Datum in_range_int4_int2(PG_FUNCTION_ARGS); extern Datum in_range_int2_int8(PG_FUNCTION_ARGS); extern Datum in_range_int2_int4(PG_FUNCTION_ARGS); extern Datum in_range_int2_int2(PG_FUNCTION_ARGS); extern Datum in_range_date_interval(PG_FUNCTION_ARGS); extern Datum in_range_timestamp_interval(PG_FUNCTION_ARGS); extern Datum in_range_timestamptz_interval(PG_FUNCTION_ARGS); extern Datum in_range_interval_interval(PG_FUNCTION_ARGS); extern Datum in_range_time_interval(PG_FUNCTION_ARGS); extern Datum in_range_timetz_interval(PG_FUNCTION_ARGS); extern Datum in_range_float8_float8(PG_FUNCTION_ARGS); extern Datum in_range_float4_float8(PG_FUNCTION_ARGS); extern Datum in_range_numeric_numeric(PG_FUNCTION_ARGS); extern Datum pg_lsn_larger(PG_FUNCTION_ARGS); extern Datum pg_lsn_smaller(PG_FUNCTION_ARGS); extern Datum regcollationin(PG_FUNCTION_ARGS); extern Datum regcollationout(PG_FUNCTION_ARGS); extern Datum to_regcollation(PG_FUNCTION_ARGS); extern Datum regcollationrecv(PG_FUNCTION_ARGS); extern Datum regcollationsend(PG_FUNCTION_ARGS); extern Datum ts_headline_jsonb_byid_opt(PG_FUNCTION_ARGS); extern Datum ts_headline_jsonb_byid(PG_FUNCTION_ARGS); extern Datum ts_headline_jsonb_opt(PG_FUNCTION_ARGS); extern Datum ts_headline_jsonb(PG_FUNCTION_ARGS); extern Datum ts_headline_json_byid_opt(PG_FUNCTION_ARGS); extern Datum ts_headline_json_byid(PG_FUNCTION_ARGS); extern Datum ts_headline_json_opt(PG_FUNCTION_ARGS); extern Datum ts_headline_json(PG_FUNCTION_ARGS); extern Datum jsonb_string_to_tsvector(PG_FUNCTION_ARGS); extern Datum json_string_to_tsvector(PG_FUNCTION_ARGS); extern Datum jsonb_string_to_tsvector_byid(PG_FUNCTION_ARGS); extern Datum json_string_to_tsvector_byid(PG_FUNCTION_ARGS); extern Datum jsonb_to_tsvector(PG_FUNCTION_ARGS); extern Datum jsonb_to_tsvector_byid(PG_FUNCTION_ARGS); extern Datum json_to_tsvector(PG_FUNCTION_ARGS); extern Datum json_to_tsvector_byid(PG_FUNCTION_ARGS); extern Datum pg_copy_physical_replication_slot_a(PG_FUNCTION_ARGS); extern Datum pg_copy_physical_replication_slot_b(PG_FUNCTION_ARGS); extern Datum pg_copy_logical_replication_slot_a(PG_FUNCTION_ARGS); extern Datum pg_copy_logical_replication_slot_b(PG_FUNCTION_ARGS); extern Datum pg_copy_logical_replication_slot_c(PG_FUNCTION_ARGS); extern Datum 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 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 numeric_pg_lsn(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_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); #endif /* FMGRPROTOS_H */ pg_query-4.2.3/ext/pg_query/include/utils/guc_tables.h0000644000004100000410000002017614510636647023124 0ustar www-datawww-data/*------------------------------------------------------------------------- * * guc_tables.h * Declarations of tables used by GUC. * * See src/backend/utils/misc/README for design notes. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * * src/include/utils/guc_tables.h * *------------------------------------------------------------------------- */ #ifndef GUC_TABLES_H #define GUC_TABLES_H 1 #include "utils/guc.h" /* * GUC supports these types of variables: */ enum config_type { PGC_BOOL, PGC_INT, PGC_REAL, PGC_STRING, PGC_ENUM }; union config_var_val { bool boolval; int intval; double realval; char *stringval; int enumval; }; /* * The actual value of a GUC variable can include a malloc'd opaque struct * "extra", which is created by its check_hook and used by its assign_hook. */ typedef struct config_var_value { union config_var_val val; void *extra; } config_var_value; /* * Groupings to help organize all the run-time options for display. * 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_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, 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_CLIENT, ERROR_HANDLING_OPTIONS, PRESET_OPTIONS, CUSTOM_OPTIONS, DEVELOPER_OPTIONS }; /* * Stack entry for saving the state a variable had prior to an uncommitted * transactional change */ typedef enum { /* This is almost GucAction, but we need a fourth state for SET+LOCAL */ GUC_SAVE, /* entry caused by function SET option */ GUC_SET, /* entry caused by plain SET command */ GUC_LOCAL, /* entry caused by SET LOCAL command */ GUC_SET_LOCAL /* entry caused by SET then SET LOCAL */ } GucStackState; typedef struct guc_stack { struct guc_stack *prev; /* previous stack item, if any */ int nest_level; /* nesting depth at which we made entry */ GucStackState state; /* see enum above */ GucSource source; /* source of the prior value */ /* masked value's source must be PGC_S_SESSION, so no need to store it */ GucContext scontext; /* context that set the prior value */ GucContext masked_scontext; /* context that set the masked value */ 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). * * 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 */ 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; }; 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[]; /* get the current set of variables */ extern struct config_generic **get_guc_variables(void); extern void build_guc_variables(void); /* search in enum options */ extern const char *config_enum_lookup_by_value(struct config_enum *record, int val); extern bool config_enum_lookup_by_name(struct config_enum *record, const char *value, int *retval); extern struct config_generic **get_explain_guc_options(int *num); #endif /* GUC_TABLES_H */ pg_query-4.2.3/ext/pg_query/include/postgres.h0000644000004100000410000005721714510636647021530 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1995, Regents of the University of California * * src/include/postgres.h * *------------------------------------------------------------------------- */ /* *---------------------------------------------------------------- * TABLE OF CONTENTS * * When adding stuff to this file, please try to put stuff * into the relevant section, or add new sections as appropriate. * * section description * ------- ------------------------------------------------ * 1) variable-length datatypes (TOAST support) * 2) Datum type + support macros * * NOTES * * In general, this file should contain declarations that are widely needed * in the backend environment, but are of no interest outside the backend. * * Simple type definitions live in c.h, where they are shared with * postgres_fe.h. We do that since those type definitions are needed by * frontend modules that want to deal with binary data transmission to or * from the backend. Type definitions in this file should be for * representations that never escape the backend, such as Datum or * TOASTed varlena objects. * *---------------------------------------------------------------- */ #ifndef POSTGRES_H #define POSTGRES_H #include "c.h" #include "utils/elog.h" #include "utils/palloc.h" /* ---------------------------------------------------------------- * Section 1: variable-length datatypes (TOAST support) * ---------------------------------------------------------------- */ /* * struct varatt_external is a traditional "TOAST pointer", that is, the * information needed to fetch a Datum stored out-of-line in a TOAST table. * The data is compressed if and only if 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) : \ TrapMacro(true, "unrecognized TOAST vartag")) /* * These structs describe the header of a varlena object that may have been * TOASTed. Generally, don't reference these structs directly, but use the * macros below. * * We use separate structs for the aligned and unaligned cases because the * compiler might otherwise think it could generate code that assumes * alignment while touching fields of a 1-byte-header varlena. */ typedef union { struct /* Normal varlena (4-byte length) */ { uint32 va_header; char va_data[FLEXIBLE_ARRAY_MEMBER]; } va_4byte; struct /* Compressed-in-line format */ { uint32 va_header; uint32 va_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) /* ---------------------------------------------------------------- * Section 2: Datum type + support macros * ---------------------------------------------------------------- */ /* * A Datum contains either a value of a pass-by-value type or a pointer to a * value of a pass-by-reference type. Therefore, we require: * * sizeof(Datum) == sizeof(void *) == 4 or 8 * * The macros below and the analogous macros for other types should be used to * convert between a Datum and the appropriate C type. */ typedef uintptr_t Datum; /* * A NullableDatum is used in places where both a Datum and its nullness needs * to be stored. This can be more efficient than storing datums and nullness * in separate arrays, due to better spatial locality, even if more space may * be wasted due to padding. */ typedef struct NullableDatum { #define FIELDNO_NULLABLE_DATUM_DATUM 0 Datum value; #define FIELDNO_NULLABLE_DATUM_ISNULL 1 bool isnull; /* due to alignment padding this could be used for flags for free */ } NullableDatum; #define SIZEOF_DATUM SIZEOF_VOID_P /* * DatumGetBool * Returns boolean value of a datum. * * Note: any nonzero value will be considered true. */ #define DatumGetBool(X) ((bool) ((X) != 0)) /* * BoolGetDatum * Returns datum representation for a boolean. * * Note: any nonzero value will be considered true. */ #define BoolGetDatum(X) ((Datum) ((X) ? 1 : 0)) /* * DatumGetChar * Returns character value of a datum. */ #define DatumGetChar(X) ((char) (X)) /* * CharGetDatum * Returns datum representation for a character. */ #define CharGetDatum(X) ((Datum) (X)) /* * Int8GetDatum * Returns datum representation for an 8-bit integer. */ #define Int8GetDatum(X) ((Datum) (X)) /* * DatumGetUInt8 * Returns 8-bit unsigned integer value of a datum. */ #define DatumGetUInt8(X) ((uint8) (X)) /* * UInt8GetDatum * Returns datum representation for an 8-bit unsigned integer. */ #define UInt8GetDatum(X) ((Datum) (X)) /* * DatumGetInt16 * Returns 16-bit integer value of a datum. */ #define DatumGetInt16(X) ((int16) (X)) /* * Int16GetDatum * Returns datum representation for a 16-bit integer. */ #define Int16GetDatum(X) ((Datum) (X)) /* * DatumGetUInt16 * Returns 16-bit unsigned integer value of a datum. */ #define DatumGetUInt16(X) ((uint16) (X)) /* * UInt16GetDatum * Returns datum representation for a 16-bit unsigned integer. */ #define UInt16GetDatum(X) ((Datum) (X)) /* * DatumGetInt32 * Returns 32-bit integer value of a datum. */ #define DatumGetInt32(X) ((int32) (X)) /* * Int32GetDatum * Returns datum representation for a 32-bit integer. */ #define Int32GetDatum(X) ((Datum) (X)) /* * DatumGetUInt32 * Returns 32-bit unsigned integer value of a datum. */ #define DatumGetUInt32(X) ((uint32) (X)) /* * UInt32GetDatum * Returns datum representation for a 32-bit unsigned integer. */ #define UInt32GetDatum(X) ((Datum) (X)) /* * DatumGetObjectId * Returns object identifier value of a datum. */ #define DatumGetObjectId(X) ((Oid) (X)) /* * ObjectIdGetDatum * Returns datum representation for an object identifier. */ #define ObjectIdGetDatum(X) ((Datum) (X)) /* * DatumGetTransactionId * Returns transaction identifier value of a datum. */ #define DatumGetTransactionId(X) ((TransactionId) (X)) /* * TransactionIdGetDatum * Returns datum representation for a transaction identifier. */ #define TransactionIdGetDatum(X) ((Datum) (X)) /* * MultiXactIdGetDatum * Returns datum representation for a multixact identifier. */ #define MultiXactIdGetDatum(X) ((Datum) (X)) /* * DatumGetCommandId * Returns command identifier value of a datum. */ #define DatumGetCommandId(X) ((CommandId) (X)) /* * CommandIdGetDatum * Returns datum representation for a command identifier. */ #define CommandIdGetDatum(X) ((Datum) (X)) /* * DatumGetPointer * Returns pointer value of a datum. */ #define DatumGetPointer(X) ((Pointer) (X)) /* * PointerGetDatum * Returns datum representation for a pointer. */ #define PointerGetDatum(X) ((Datum) (X)) /* * DatumGetCString * Returns C string (null-terminated string) value of a datum. * * Note: C string is not a full-fledged Postgres type at present, * but type input functions use this conversion for their inputs. */ #define DatumGetCString(X) ((char *) DatumGetPointer(X)) /* * CStringGetDatum * Returns datum representation for a C string (null-terminated string). * * Note: C string is not a full-fledged Postgres type at present, * but type output functions use this conversion for their outputs. * Note: CString is pass-by-reference; caller must ensure the pointed-to * value has adequate lifetime. */ #define CStringGetDatum(X) PointerGetDatum(X) /* * DatumGetName * Returns name value of a datum. */ #define DatumGetName(X) ((Name) DatumGetPointer(X)) /* * NameGetDatum * Returns datum representation for a name. * * Note: Name is pass-by-reference; caller must ensure the pointed-to * value has adequate lifetime. */ #define NameGetDatum(X) CStringGetDatum(NameStr(*(X))) /* * DatumGetInt64 * Returns 64-bit integer value of a datum. * * Note: this macro hides whether int64 is pass by value or by reference. */ #ifdef USE_FLOAT8_BYVAL #define DatumGetInt64(X) ((int64) (X)) #else #define DatumGetInt64(X) (* ((int64 *) DatumGetPointer(X))) #endif /* * Int64GetDatum * Returns datum representation for a 64-bit integer. * * Note: if int64 is pass by reference, this function returns a reference * to palloc'd space. */ #ifdef USE_FLOAT8_BYVAL #define Int64GetDatum(X) ((Datum) (X)) #else extern Datum Int64GetDatum(int64 X); #endif /* * DatumGetUInt64 * Returns 64-bit unsigned integer value of a datum. * * Note: this macro hides whether int64 is pass by value or by reference. */ #ifdef USE_FLOAT8_BYVAL #define DatumGetUInt64(X) ((uint64) (X)) #else #define DatumGetUInt64(X) (* ((uint64 *) DatumGetPointer(X))) #endif /* * UInt64GetDatum * Returns datum representation for a 64-bit unsigned integer. * * Note: if int64 is pass by reference, this function returns a reference * to palloc'd space. */ #ifdef USE_FLOAT8_BYVAL #define UInt64GetDatum(X) ((Datum) (X)) #else #define UInt64GetDatum(X) Int64GetDatum((int64) (X)) #endif /* * Float <-> Datum conversions * * These have to be implemented as inline functions rather than macros, when * passing by value, because many machines pass int and float function * parameters/results differently; so we need to play weird games with unions. */ /* * DatumGetFloat4 * Returns 4-byte floating point value of a datum. */ static inline float4 DatumGetFloat4(Datum X) { union { int32 value; float4 retval; } myunion; myunion.value = DatumGetInt32(X); return myunion.retval; } /* * Float4GetDatum * Returns datum representation for a 4-byte floating point number. */ static inline Datum Float4GetDatum(float4 X) { union { float4 value; int32 retval; } myunion; myunion.value = X; return Int32GetDatum(myunion.retval); } /* * DatumGetFloat8 * Returns 8-byte floating point value of a datum. * * Note: this macro hides whether float8 is pass by value or by reference. */ #ifdef USE_FLOAT8_BYVAL static inline float8 DatumGetFloat8(Datum X) { union { int64 value; float8 retval; } myunion; myunion.value = DatumGetInt64(X); return myunion.retval; } #else #define DatumGetFloat8(X) (* ((float8 *) DatumGetPointer(X))) #endif /* * Float8GetDatum * Returns datum representation for an 8-byte floating point number. * * Note: if float8 is pass by reference, this function returns a reference * to palloc'd space. */ #ifdef USE_FLOAT8_BYVAL static inline Datum Float8GetDatum(float8 X) { union { float8 value; int64 retval; } myunion; myunion.value = X; return Int64GetDatum(myunion.retval); } #else extern Datum Float8GetDatum(float8 X); #endif /* * Int64GetDatumFast * Float8GetDatumFast * * These macros are intended to allow writing code that does not depend on * whether int64 and float8 are pass-by-reference types, while not * sacrificing performance when they are. The argument must be a variable * that will exist and have the same value for as long as the Datum is needed. * In the pass-by-ref case, the address of the variable is taken to use as * the Datum. In the pass-by-val case, these will be the same as the non-Fast * macros. */ #ifdef USE_FLOAT8_BYVAL #define Int64GetDatumFast(X) Int64GetDatum(X) #define Float8GetDatumFast(X) Float8GetDatum(X) #else #define Int64GetDatumFast(X) PointerGetDatum(&(X)) #define Float8GetDatumFast(X) PointerGetDatum(&(X)) #endif #endif /* POSTGRES_H */ pg_query-4.2.3/ext/pg_query/include/regex/0000755000004100000410000000000014510636647020607 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/regex/regex.h0000644000004100000410000001660714510636647022104 0ustar www-datawww-data#ifndef _REGEX_H_ #define _REGEX_H_ /* never again */ /* * regular expressions * * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. * * Development of this software was funded, in part, by Cray Research Inc., * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics * Corporation, none of whom are responsible for the results. The author * thanks all of them. * * Redistribution and use in source and binary forms -- with or without * modification -- are permitted for any purpose, provided that * redistributions in source form retain this entire copyright notice and * indicate the origin and nature of any modifications. * * I'd appreciate being given credit for this package in the documentation * of software which uses it, but that is not a requirement. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * HENRY SPENCER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * src/include/regex/regex.h */ /* * Add your own defines, if needed, here. */ #include "mb/pg_wchar.h" /* * interface types etc. */ /* * regoff_t has to be large enough to hold either off_t or ssize_t, * and must be signed; it's only a guess that long is suitable. */ typedef long regoff_t; /* * other interface types */ /* the biggie, a compiled RE (or rather, a front end to same) */ typedef struct { int re_magic; /* magic number */ size_t re_nsub; /* number of subexpressions */ long re_info; /* 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; } regex_t; /* result reporting (may acquire more fields later) */ typedef struct { regoff_t rm_so; /* start of substring */ regoff_t rm_eo; /* end of substring */ } regmatch_t; /* supplementary control and reporting */ typedef struct { regmatch_t rm_extend; /* see REG_EXPECT */ } rm_detail_t; /* * regex compilation flags */ #define REG_BASIC 000000 /* BREs (convenience) */ #define REG_EXTENDED 000001 /* EREs */ #define REG_ADVF 000002 /* advanced features in EREs */ #define REG_ADVANCED 000003 /* AREs (which are also EREs) */ #define REG_QUOTE 000004 /* no special characters, none */ #define REG_NOSPEC REG_QUOTE /* historical synonym */ #define REG_ICASE 000010 /* ignore case */ #define REG_NOSUB 000020 /* 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 */ #define REG_CANCEL 21 /* operation cancelled */ /* two specials for debugging and testing */ #define REG_ATOI 101 /* convert error-code name to number */ #define REG_ITOA 102 /* convert error-code number to name */ /* non-error result codes for pg_regprefix */ #define REG_PREFIX (-1) /* identified a common prefix */ #define REG_EXACT (-2) /* identified an exact match */ /* * the prototypes for exported functions */ /* regcomp.c */ extern int pg_regcomp(regex_t *, const pg_wchar *, size_t, int, Oid); extern int pg_regexec(regex_t *, const pg_wchar *, size_t, size_t, rm_detail_t *, size_t, regmatch_t[], int); extern int pg_regprefix(regex_t *, pg_wchar **, size_t *); extern void pg_regfree(regex_t *); extern size_t pg_regerror(int, const regex_t *, char *, size_t); /* regexp.c */ extern regex_t *RE_compile_and_cache(text *text_re, int cflags, Oid collation); extern bool RE_compile_and_execute(text *text_re, char *dat, int dat_len, int cflags, Oid collation, int nmatch, regmatch_t *pmatch); #endif /* _REGEX_H_ */ pg_query-4.2.3/ext/pg_query/include/postmaster/0000755000004100000410000000000014510636647021676 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/postmaster/autovacuum.h0000644000004100000410000000520114510636647024236 0ustar www-datawww-data/*------------------------------------------------------------------------- * * autovacuum.h * header file for integrated autovacuum daemon * * * Portions Copyright (c) 1996-2022, 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); extern bool IsAutoVacuumLauncherProcess(void); extern bool IsAutoVacuumWorkerProcess(void); #define IsAnyAutoVacuumProcess() \ (IsAutoVacuumLauncherProcess() || IsAutoVacuumWorkerProcess()) /* Functions to start autovacuum process, called from postmaster */ extern void autovac_init(void); extern int StartAutoVacLauncher(void); extern int StartAutoVacWorker(void); /* called from postmaster when a worker could not be forked */ extern void AutoVacWorkerFailed(void); /* autovacuum cost-delay balancer */ extern void AutoVacuumUpdateDelay(void); #ifdef EXEC_BACKEND extern void AutoVacLauncherMain(int argc, char *argv[]) pg_attribute_noreturn(); extern void AutoVacWorkerMain(int argc, char *argv[]) pg_attribute_noreturn(); extern void AutovacuumWorkerIAm(void); extern void AutovacuumLauncherIAm(void); #endif extern bool AutoVacuumRequestWork(AutoVacuumWorkItemType type, Oid relationId, BlockNumber blkno); /* shared memory stuff */ extern Size AutoVacuumShmemSize(void); extern void AutoVacuumShmemInit(void); #endif /* AUTOVACUUM_H */ pg_query-4.2.3/ext/pg_query/include/postmaster/fork_process.h0000644000004100000410000000070314510636647024546 0ustar www-datawww-data/*------------------------------------------------------------------------- * * fork_process.h * Exports from postmaster/fork_process.c. * * Copyright (c) 1996-2022, PostgreSQL Global Development Group * * src/include/postmaster/fork_process.h * *------------------------------------------------------------------------- */ #ifndef FORK_PROCESS_H #define FORK_PROCESS_H extern pid_t fork_process(void); #endif /* FORK_PROCESS_H */ pg_query-4.2.3/ext/pg_query/include/postmaster/bgwriter.h0000644000004100000410000000253214510636647023676 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * * src/include/postmaster/bgwriter.h * *------------------------------------------------------------------------- */ #ifndef _BGWRITER_H #define _BGWRITER_H #include "storage/block.h" #include "storage/relfilenode.h" #include "storage/smgr.h" #include "storage/sync.h" /* GUC options */ extern PGDLLIMPORT int BgWriterDelay; extern PGDLLIMPORT int CheckPointTimeout; extern PGDLLIMPORT int CheckPointWarning; extern PGDLLIMPORT double CheckPointCompletionTarget; extern void BackgroundWriterMain(void) pg_attribute_noreturn(); extern void CheckpointerMain(void) pg_attribute_noreturn(); extern void RequestCheckpoint(int flags); extern void CheckpointWriteDelay(int flags, double progress); extern bool ForwardSyncRequest(const FileTag *ftag, SyncRequestType type); extern void AbsorbSyncRequests(void); extern Size CheckpointerShmemSize(void); extern void CheckpointerShmemInit(void); extern bool FirstCallSinceLastCheckpoint(void); #endif /* _BGWRITER_H */ pg_query-4.2.3/ext/pg_query/include/postmaster/startup.h0000644000004100000410000000225014510636647023550 0ustar www-datawww-data/*------------------------------------------------------------------------- * * startup.h * Exports from postmaster/startup.c. * * Portions Copyright (c) 1996-2022, 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(void) pg_attribute_noreturn(); extern void PreRestoreCommand(void); extern void PostRestoreCommand(void); extern bool IsPromoteSignaled(void); extern void ResetPromoteSignaled(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 */ pg_query-4.2.3/ext/pg_query/include/postmaster/auxprocess.h0000644000004100000410000000116314510636647024244 0ustar www-datawww-data/*------------------------------------------------------------------------- * auxprocess.h * include file for functions related to auxiliary processes. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/postmaster/auxprocess.h *------------------------------------------------------------------------- */ #ifndef AUXPROCESS_H #define AUXPROCESS_H #include "miscadmin.h" extern void AuxiliaryProcessMain(AuxProcType auxtype) pg_attribute_noreturn(); #endif /* AUXPROCESS_H */ pg_query-4.2.3/ext/pg_query/include/postmaster/pgarch.h0000644000004100000410000000442714510636647023322 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pgarch.h * Exports from postmaster/pgarch.c. * * Portions Copyright (c) 1996-2022, 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(void) pg_attribute_noreturn(); extern void PgArchWakeup(void); extern void PgArchForceDirScan(void); /* * The value of the archive_library GUC. */ extern PGDLLIMPORT char *XLogArchiveLibrary; /* * 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 bool (*ArchiveCheckConfiguredCB) (void); typedef bool (*ArchiveFileCB) (const char *file, const char *path); typedef void (*ArchiveShutdownCB) (void); typedef struct ArchiveModuleCallbacks { 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 void (*ArchiveModuleInit) (ArchiveModuleCallbacks *cb); /* * Since the logic for archiving via a shell command is in the core server * and does not need to be loaded via a shared library, it has a special * initialization function. */ extern void shell_archive_init(ArchiveModuleCallbacks *cb); #endif /* _PGARCH_H */ pg_query-4.2.3/ext/pg_query/include/postmaster/interrupt.h0000644000004100000410000000176014510636647024107 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 pg_query-4.2.3/ext/pg_query/include/postmaster/bgworker.h0000644000004100000410000001376614510636647023706 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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-2022, 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[BGW_MAXLEN]; char bgw_function_name[BGW_MAXLEN]; Datum bgw_main_arg; char bgw_extra[BGW_EXTRALEN]; pid_t bgw_notify_pid; /* SIGUSR1 this backend on start/stop */ } BackgroundWorker; typedef enum BgwHandleStatus { BGWH_STARTED, /* worker is running */ BGWH_NOT_YET_STARTED, /* worker hasn't been started yet */ BGWH_STOPPED, /* worker has exited */ BGWH_POSTMASTER_DIED /* postmaster died; worker status unclear */ } BgwHandleStatus; struct BackgroundWorkerHandle; typedef struct BackgroundWorkerHandle BackgroundWorkerHandle; /* Register a new bgworker during shared_preload_libraries */ extern void RegisterBackgroundWorker(BackgroundWorker *worker); /* Register a new bgworker from a regular backend */ extern bool RegisterDynamicBackgroundWorker(BackgroundWorker *worker, BackgroundWorkerHandle **handle); /* Query the status of a bgworker */ extern BgwHandleStatus GetBackgroundWorkerPid(BackgroundWorkerHandle *handle, pid_t *pidp); extern BgwHandleStatus WaitForBackgroundWorkerStartup(BackgroundWorkerHandle *handle, pid_t *pid); extern BgwHandleStatus WaitForBackgroundWorkerShutdown(BackgroundWorkerHandle *); extern const char *GetBackgroundWorkerTypeByPid(pid_t pid); /* Terminate a bgworker */ extern void TerminateBackgroundWorker(BackgroundWorkerHandle *handle); /* This is valid in a running worker */ extern PGDLLIMPORT BackgroundWorker *MyBgworkerEntry; /* * Connect to the specified database, as the specified user. Only a worker * that passed BGWORKER_BACKEND_DATABASE_CONNECTION during registration may * call this. * * If username is NULL, bootstrapping superuser is used. * If dbname is NULL, connection is made to no specific database; * only shared catalogs can be accessed. */ extern void BackgroundWorkerInitializeConnection(const char *dbname, const char *username, uint32 flags); /* Just like the above, but specifying database and user by OID. */ extern void BackgroundWorkerInitializeConnectionByOid(Oid dboid, Oid useroid, uint32 flags); /* * Flags to BackgroundWorkerInitializeConnection et al * * * Allow bypassing datallowconn restrictions when connecting to database */ #define BGWORKER_BYPASS_ALLOWCONN 1 /* Block/unblock signals in a background worker process */ extern void BackgroundWorkerBlockSignals(void); extern void BackgroundWorkerUnblockSignals(void); #endif /* BGWORKER_H */ pg_query-4.2.3/ext/pg_query/include/postmaster/syslogger.h0000644000004100000410000000615114510636647024070 0ustar www-datawww-data/*------------------------------------------------------------------------- * * syslogger.h * Exports from postmaster/syslogger.c. * * Copyright (c) 2004-2022, 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 dest); #ifdef EXEC_BACKEND extern void SysLoggerMain(int argc, char *argv[]) pg_attribute_noreturn(); #endif extern bool CheckLogrotateSignal(void); extern void RemoveLogrotateSignalFiles(void); /* * Name of files saving meta-data information about the log * files currently in use by the syslogger */ #define LOG_METAINFO_DATAFILE "current_logfiles" #define LOG_METAINFO_DATAFILE_TMP LOG_METAINFO_DATAFILE ".tmp" #endif /* _SYSLOGGER_H */ pg_query-4.2.3/ext/pg_query/include/postmaster/walwriter.h0000644000004100000410000000107314510636647024070 0ustar www-datawww-data/*------------------------------------------------------------------------- * * walwriter.h * Exports from postmaster/walwriter.c. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * * src/include/postmaster/walwriter.h * *------------------------------------------------------------------------- */ #ifndef _WALWRITER_H #define _WALWRITER_H /* GUC options */ extern PGDLLIMPORT int WalWriterDelay; extern PGDLLIMPORT int WalWriterFlushAfter; extern void WalWriterMain(void) pg_attribute_noreturn(); #endif /* _WALWRITER_H */ pg_query-4.2.3/ext/pg_query/include/postmaster/postmaster.h0000644000004100000410000000542514510636647024256 0ustar www-datawww-data/*------------------------------------------------------------------------- * * postmaster.h * Exports from postmaster/postmaster.c. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/postmaster/postmaster.h * *------------------------------------------------------------------------- */ #ifndef _POSTMASTER_H #define _POSTMASTER_H /* GUC options */ extern PGDLLIMPORT bool EnableSSL; extern PGDLLIMPORT int ReservedBackends; 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 __thread 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; #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 void PostmasterMain(int argc, char *argv[]) pg_attribute_noreturn(); extern void ClosePostmasterPorts(bool am_syslogger); extern void InitProcessGlobals(void); extern int MaxLivePostmasterChildren(void); extern bool PostmasterMarkPIDForWorkerNotify(int); #ifdef EXEC_BACKEND extern pid_t postmaster_forkexec(int argc, char *argv[]); extern void SubPostmasterMain(int argc, char *argv[]) pg_attribute_noreturn(); extern Size ShmemBackendArraySize(void); extern void ShmemBackendArrayAllocation(void); #endif /* * Note: MAX_BACKENDS is limited to 2^18-1 because that's the width reserved * for buffer references in buf_internals.h. This limitation could be lifted * by using a 64bit state; but it's unlikely to be worthwhile as 2^18-1 * backends exceed currently realistic configurations. Even if that limitation * were removed, we still could not a) exceed 2^23-1 because inval.c stores * the backend ID as a 3-byte signed integer, b) INT_MAX/4 because some places * compute 4*MaxBackends without any overflow check. This is rechecked in the * relevant GUC check hooks and in RegisterBackgroundWorker(). */ #define MAX_BACKENDS 0x3FFFF #endif /* _POSTMASTER_H */ pg_query-4.2.3/ext/pg_query/include/postmaster/bgworker_internals.h0000644000004100000410000000421114510636647025746 0ustar www-datawww-data/*-------------------------------------------------------------------- * bgworker_internals.h * POSTGRES pluggable background workers internals * * Portions Copyright (c) 1996-2022, 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); /* Function to start a background worker, called from postmaster.c */ extern void StartBackgroundWorker(void) pg_attribute_noreturn(); #ifdef EXEC_BACKEND extern BackgroundWorker *BackgroundWorkerEntry(int slotno); #endif #endif /* BGWORKER_INTERNALS_H */ pg_query-4.2.3/ext/pg_query/include/postgres_ext.h0000644000004100000410000000427714510636647022406 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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 */ pg_query-4.2.3/ext/pg_query/include/getaddrinfo.h0000644000004100000410000000760414510636647022143 0ustar www-datawww-data/*------------------------------------------------------------------------- * * getaddrinfo.h * Support getaddrinfo() on platforms that don't have it. * * Note: we use our own routines on platforms that don't HAVE_STRUCT_ADDRINFO, * whether or not the library routine getaddrinfo() can be found. This * policy is needed because on some platforms a manually installed libbind.a * may provide getaddrinfo(), yet the system headers may not provide the * struct definitions needed to call it. To avoid conflict with the libbind * definition in such cases, we rename our routines to pg_xxx() via macros. * * This code will also work on platforms where struct addrinfo is defined * in the system headers but no getaddrinfo() can be located. * * Copyright (c) 2003-2022, PostgreSQL Global Development Group * * src/include/getaddrinfo.h * *------------------------------------------------------------------------- */ #ifndef GETADDRINFO_H #define GETADDRINFO_H #include #include /* Various macros that ought to be in , but might not be */ #ifndef EAI_FAIL #ifndef WIN32 #define EAI_BADFLAGS (-1) #define EAI_NONAME (-2) #define EAI_AGAIN (-3) #define EAI_FAIL (-4) #define EAI_FAMILY (-6) #define EAI_SOCKTYPE (-7) #define EAI_SERVICE (-8) #define EAI_MEMORY (-10) #define EAI_SYSTEM (-11) #else /* WIN32 */ #ifdef _MSC_VER #ifndef WSA_NOT_ENOUGH_MEMORY #define WSA_NOT_ENOUGH_MEMORY (WSAENOBUFS) #endif #define WSATYPE_NOT_FOUND (WSABASEERR+109) #endif #define EAI_AGAIN WSATRY_AGAIN #define EAI_BADFLAGS WSAEINVAL #define EAI_FAIL WSANO_RECOVERY #define EAI_FAMILY WSAEAFNOSUPPORT #define EAI_MEMORY WSA_NOT_ENOUGH_MEMORY #define EAI_NODATA WSANO_DATA #define EAI_NONAME WSAHOST_NOT_FOUND #define EAI_SERVICE WSATYPE_NOT_FOUND #define EAI_SOCKTYPE WSAESOCKTNOSUPPORT #endif /* !WIN32 */ #endif /* !EAI_FAIL */ #ifndef AI_PASSIVE #define AI_PASSIVE 0x0001 #endif #ifndef AI_NUMERICHOST /* * some platforms don't support AI_NUMERICHOST; define as zero if using * the system version of getaddrinfo... */ #if defined(HAVE_STRUCT_ADDRINFO) && defined(HAVE_GETADDRINFO) #define AI_NUMERICHOST 0 #else #define AI_NUMERICHOST 0x0004 #endif #endif #ifndef NI_NUMERICHOST #define NI_NUMERICHOST 1 #endif #ifndef NI_NUMERICSERV #define NI_NUMERICSERV 2 #endif #ifndef NI_NAMEREQD #define NI_NAMEREQD 4 #endif #ifndef NI_MAXHOST #define NI_MAXHOST 1025 #endif #ifndef NI_MAXSERV #define NI_MAXSERV 32 #endif #ifndef HAVE_STRUCT_ADDRINFO #ifndef WIN32 struct addrinfo { int ai_flags; int ai_family; int ai_socktype; int ai_protocol; size_t ai_addrlen; struct sockaddr *ai_addr; char *ai_canonname; struct addrinfo *ai_next; }; #else /* * The order of the structure elements on Win32 doesn't match the * order specified in the standard, but we have to match it for * IPv6 to work. */ struct addrinfo { int ai_flags; int ai_family; int ai_socktype; int ai_protocol; size_t ai_addrlen; char *ai_canonname; struct sockaddr *ai_addr; struct addrinfo *ai_next; }; #endif #endif /* HAVE_STRUCT_ADDRINFO */ #ifndef HAVE_GETADDRINFO /* Rename private copies per comments above */ #ifdef getaddrinfo #undef getaddrinfo #endif #define getaddrinfo pg_getaddrinfo #ifdef freeaddrinfo #undef freeaddrinfo #endif #define freeaddrinfo pg_freeaddrinfo #ifdef gai_strerror #undef gai_strerror #endif #define gai_strerror pg_gai_strerror #ifdef getnameinfo #undef getnameinfo #endif #define getnameinfo pg_getnameinfo extern int getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res); extern void freeaddrinfo(struct addrinfo *res); extern const char *gai_strerror(int errcode); extern int getnameinfo(const struct sockaddr *sa, int salen, char *node, int nodelen, char *service, int servicelen, int flags); #endif /* HAVE_GETADDRINFO */ #endif /* GETADDRINFO_H */ pg_query-4.2.3/ext/pg_query/include/pg_trace.h0000644000004100000410000000050014510636647021425 0ustar www-datawww-data/* ---------- * pg_trace.h * * Definitions for the PostgreSQL tracing framework * * Copyright (c) 2006-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/nodes/0000755000004100000410000000000014510636647020605 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/nodes/tidbitmap.h0000644000004100000410000000525414510636647022741 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/nodes/lockoptions.h0000644000004100000410000000353414510636647023327 0ustar www-datawww-data/*------------------------------------------------------------------------- * * lockoptions.h * Common header for some locking-related declarations. * * * Copyright (c) 2014-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/nodes/print.h0000644000004100000410000000206514510636647022115 0ustar www-datawww-data/*------------------------------------------------------------------------- * * print.h * definitions for nodes/print.c * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/nodes/plannodes.h0000644000004100000410000014260014510636647022744 0ustar www-datawww-data/*------------------------------------------------------------------------- * * plannodes.h * definitions for query plan nodes * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/plannodes.h * *------------------------------------------------------------------------- */ #ifndef PLANNODES_H #define PLANNODES_H #include "access/sdir.h" #include "access/stratnum.h" #include "lib/stringinfo.h" #include "nodes/bitmapset.h" #include "nodes/lockoptions.h" #include "nodes/parsenodes.h" #include "nodes/primnodes.h" /* ---------------------------------------------------------------- * node definitions * ---------------------------------------------------------------- */ /* ---------------- * PlannedStmt node * * The output of the planner is a Plan tree headed by a PlannedStmt node. * PlannedStmt holds the "one time" information needed by the executor. * * For simplicity in APIs, we also wrap utility statements in PlannedStmt * nodes; in such cases, commandType == CMD_UTILITY, the statement itself * is in the utilityStmt field, and the rest of the struct is mostly dummy. * (We do use canSetTag, stmt_location, stmt_len, and possibly queryId.) * ---------------- */ typedef struct PlannedStmt { NodeTag type; CmdType commandType; /* select|insert|update|delete|merge|utility */ uint64 queryId; /* query identifier (copied from Query) */ bool hasReturning; /* is it insert|update|delete RETURNING? */ bool hasModifyingCTE; /* has insert|update|delete in WITH? */ bool canSetTag; /* do I set the command result tag? */ bool transientPlan; /* redo plan when TransactionXmin changes? */ bool dependsOnRole; /* is plan specific to current role? */ bool parallelModeNeeded; /* parallel mode required to execute? */ int jitFlags; /* which forms of JIT should be performed */ struct Plan *planTree; /* tree of Plan nodes */ List *rtable; /* list of RangeTblEntry nodes */ /* rtable indexes of target relations for INSERT/UPDATE/DELETE/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) */ int stmt_location; /* start location, or -1 if unknown */ int stmt_len; /* length in bytes; 0 means "rest of string" */ } PlannedStmt; /* macro for fetching the Plan associated with a SubPlan node */ #define exec_subplan_get_plan(plannedstmt, subplan) \ ((Plan *) list_nth((plannedstmt)->subplans, (subplan)->plan_id - 1)) /* ---------------- * Plan node * * All plan nodes "derive" from the Plan structure by having the * Plan structure as the first field. This ensures that everything works * when nodes are cast to Plan's. (node pointers are frequently cast to Plan* * when passed around generically in the executor) * * We never actually instantiate any Plan nodes; this is just the common * abstract superclass for all Plan-type nodes. * ---------------- */ typedef struct Plan { NodeTag type; /* * estimated execution costs for plan (see costsize.c for more info) */ Cost startup_cost; /* cost expended before fetching any tuples */ Cost total_cost; /* total cost (assuming all tuples fetched) */ /* * planner's estimate of result size of this plan step */ 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, both * nominalRelation and rootRelation contain the RT index of the partition * root, which is not otherwise mentioned in the plan. Otherwise rootRelation * is zero. However, nominalRelation will always be set, as it's the rel that * EXPLAIN should claim is the INSERT/UPDATE/DELETE/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 target is partitioned */ 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 */ } 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; Bitmapset *apprelids; /* RTIs of appendrel(s) formed by this node */ List *mergeplans; /* these fields are just like the sort-key info in struct Sort: */ int numCols; /* number of sort-key columns */ AttrNumber *sortColIdx; /* their indexes in the target list */ Oid *sortOperators; /* OIDs of operators to sort them by */ Oid *collations; /* OIDs of collations */ bool *nullsFirst; /* NULLS FIRST/LAST directions */ /* Info for run-time subplan pruning; NULL if we're not doing that */ struct PartitionPruneInfo *part_prune_info; } MergeAppend; /* ---------------- * RecursiveUnion node - * Generate a recursive union of two subplans. * * The "outer" subplan is always the non-recursive term, and the "inner" * subplan is the recursive term. * ---------------- */ typedef struct RecursiveUnion { Plan plan; int wtParam; /* ID of Param representing work table */ /* Remaining fields are zero/null in UNION ALL case */ int numCols; /* number of columns to check for * duplicate-ness */ AttrNumber *dupColIdx; /* their indexes in the target list */ Oid *dupOperators; /* equality operators to compare with */ Oid *dupCollations; long numGroups; /* estimated number of groups in input */ } RecursiveUnion; /* ---------------- * BitmapAnd node - * Generate the intersection of the results of sub-plans. * * The subplans must be of types that yield tuple bitmaps. The targetlist * and qual fields of the plan are unused and are always NIL. * ---------------- */ typedef struct BitmapAnd { Plan plan; List *bitmapplans; } BitmapAnd; /* ---------------- * BitmapOr node - * Generate the union of the results of sub-plans. * * The subplans must be of types that yield tuple bitmaps. The targetlist * and qual fields of the plan are unused and are always NIL. * ---------------- */ typedef struct BitmapOr { Plan plan; bool isshared; List *bitmapplans; } BitmapOr; /* * ========== * Scan nodes * ========== */ typedef struct Scan { Plan plan; Index scanrelid; /* relid is index into the range table */ } Scan; /* ---------------- * sequential scan node * ---------------- */ typedef 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.) * * 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 fs_server; /* OID of foreign server */ List *fdw_exprs; /* expressions that FDW may evaluate */ List *fdw_private; /* private data for FDW */ List *fdw_scan_tlist; /* optional tlist describing scan tuple */ List *fdw_recheck_quals; /* original quals not in scan.plan.qual */ Bitmapset *fs_relids; /* RTIs generated by this scan */ bool fsSystemCol; /* true if any "system column" is needed */ } ForeignScan; /* ---------------- * CustomScan node * * The comments for ForeignScan's fdw_exprs, fdw_private, fdw_scan_tlist, * and fs_relids fields apply equally to CustomScan's custom_exprs, * custom_private, custom_scan_tlist, and custom_relids fields. The * convention of setting scan.scanrelid to zero for joins applies as well. * * Note that since Plan trees can be copied, custom scan providers *must* * fit all plan data they need into those fields; embedding CustomScan in * a larger struct will not work. * ---------------- */ struct CustomScanMethods; typedef struct CustomScan { Scan scan; uint32 flags; /* mask of CUSTOMPATH_* flags, see * nodes/extensible.h */ List *custom_plans; /* list of Plan nodes, if any */ List *custom_exprs; /* expressions that custom code may evaluate */ List *custom_private; /* private data for custom code */ List *custom_scan_tlist; /* optional tlist describing scan tuple */ Bitmapset *custom_relids; /* RTIs generated by this scan */ const struct CustomScanMethods *methods; } CustomScan; /* * ========== * Join nodes * ========== */ /* ---------------- * Join node * * jointype: rule for joining tuples from left and right subtrees * inner_unique each outer tuple can match to no more than one inner tuple * joinqual: qual conditions that came from JOIN/ON or JOIN/USING * (plan.qual contains conditions that came from WHERE) * * When jointype is INNER, joinqual and plan.qual are semantically * interchangeable. For OUTER jointypes, the two are *not* interchangeable; * only joinqual is used to determine whether a match has been found for * the purpose of deciding whether to generate null-extended tuples. * (But plan.qual is still applied before actually returning a tuple.) * For an outer join, only joinquals are allowed to be used as the merge * or hash condition of a merge or hash join. * * inner_unique is set if the joinquals are such that no more than one inner * tuple could match any given outer tuple. This allows the executor to * skip searching for additional matches. (This must be provable from just * the joinquals, ignoring plan.qual, due to where the executor tests it.) * ---------------- */ typedef struct Join { Plan plan; JoinType jointype; bool inner_unique; List *joinqual; /* JOIN quals (in addition to plan.qual) */ } Join; /* ---------------- * nest loop join node * * The nestParams list identifies any executor Params that must be passed * into execution of the inner subplan carrying values from the current row * of the outer subplan. Currently we restrict these values to be simple * Vars, but perhaps someday that'd be worth relaxing. (Note: during plan * creation, the paramval can actually be a PlaceHolderVar expression; but it * must be a Var with varno OUTER_VAR by the time it gets to the executor.) * ---------------- */ typedef struct NestLoop { Join join; List *nestParams; /* list of NestLoopParam nodes */ } NestLoop; typedef struct NestLoopParam { NodeTag type; int paramno; /* number of the PARAM_EXEC Param to set */ Var *paramval; /* outer-relation Var to assign to Param */ } NestLoopParam; /* ---------------- * merge join node * * The expected ordering of each mergeable column is described by a btree * opfamily OID, a collation OID, a direction (BTLessStrategyNumber or * BTGreaterStrategyNumber) and a nulls-first flag. Note that the two sides * of each mergeclause may be of different datatypes, but they are ordered the * same way according to the common opfamily and collation. The operator in * each mergeclause must be an equality operator of the indicated opfamily. * ---------------- */ typedef struct MergeJoin { Join join; bool skip_mark_restore; /* Can we skip mark/restore calls? */ List *mergeclauses; /* mergeclauses as expression trees */ /* these are arrays, but have the same length as the mergeclauses list: */ Oid *mergeFamilies; /* per-clause OIDs of btree opfamilies */ Oid *mergeCollations; /* per-clause OIDs of collations */ int *mergeStrategies; /* per-clause ordering (ASC or DESC) */ bool *mergeNullsFirst; /* per-clause nulls ordering */ } MergeJoin; /* ---------------- * hash join node * ---------------- */ typedef struct HashJoin { Join join; List *hashclauses; List *hashoperators; List *hashcollations; /* * List of expressions to be hashed for tuples from the outer plan, to * perform lookups in the hashtable over the inner plan. */ List *hashkeys; } HashJoin; /* ---------------- * materialization node * ---------------- */ typedef struct Material { Plan plan; } Material; /* ---------------- * memoize node * ---------------- */ typedef struct Memoize { Plan plan; int numKeys; /* size of the two arrays below */ Oid *hashOperators; /* hash operators for each key */ Oid *collations; /* collations for each key */ List *param_exprs; /* cache keys in the form of exprs containing * parameters */ bool singlerow; /* true if the cache entry should be marked as * complete after we store the first tuple in * it. */ bool binary_mode; /* true when cache key should be compared bit * by bit, false when using hash equality ops */ uint32 est_entries; /* The maximum number of entries that the * planner expects will fit in the cache, or 0 * if unknown */ Bitmapset *keyparamids; /* paramids from param_exprs */ } Memoize; /* ---------------- * sort node * ---------------- */ typedef struct Sort { Plan plan; int numCols; /* number of sort-key columns */ AttrNumber *sortColIdx; /* their indexes in the target list */ Oid *sortOperators; /* OIDs of operators to sort them by */ Oid *collations; /* OIDs of collations */ bool *nullsFirst; /* NULLS FIRST/LAST directions */ } Sort; /* ---------------- * incremental sort node * ---------------- */ typedef struct IncrementalSort { Sort sort; int nPresortedCols; /* number of presorted columns */ } IncrementalSort; /* --------------- * group node - * Used for queries with GROUP BY (but no aggregates) specified. * The input must be presorted according to the grouping columns. * --------------- */ typedef struct Group { Plan plan; int numCols; /* number of grouping columns */ AttrNumber *grpColIdx; /* their indexes in the target list */ Oid *grpOperators; /* equality operators to compare with */ Oid *grpCollations; } Group; /* --------------- * aggregate node * * An Agg node implements plain or grouped aggregation. For grouped * aggregation, we can work with presorted input or unsorted input; * the latter strategy uses an internal hashtable. * * Notice the lack of any direct info about the aggregate functions to be * computed. They are found by scanning the node's tlist and quals during * executor startup. (It is possible that there are no aggregate functions; * this could happen if they get optimized away by constant-folding, or if * we are using the Agg node to implement hash-based grouping.) * --------------- */ typedef struct Agg { Plan plan; AggStrategy aggstrategy; /* basic strategy, see nodes.h */ AggSplit aggsplit; /* agg-splitting mode, see nodes.h */ int numCols; /* number of grouping columns */ AttrNumber *grpColIdx; /* their indexes in the target list */ Oid *grpOperators; /* equality operators to compare with */ Oid *grpCollations; long numGroups; /* estimated number of groups in input */ uint64 transitionSpace; /* for pass-by-ref transition data */ Bitmapset *aggParams; /* IDs of Params used in Aggref inputs */ /* Note: planner provides numGroups & aggParams only in HASHED/MIXED case */ List *groupingSets; /* grouping sets to use */ List *chain; /* chained Agg/Sort nodes */ } Agg; /* ---------------- * window aggregate node * ---------------- */ typedef struct WindowAgg { Plan plan; Index winref; /* ID referenced by window functions */ int partNumCols; /* number of columns in partition clause */ AttrNumber *partColIdx; /* their indexes in the target list */ Oid *partOperators; /* equality operators for partition columns */ Oid *partCollations; /* collations for partition columns */ int ordNumCols; /* number of columns in ordering clause */ AttrNumber *ordColIdx; /* their indexes in the target list */ Oid *ordOperators; /* equality operators for ordering columns */ Oid *ordCollations; /* collations for ordering columns */ int frameOptions; /* frame_clause options, see WindowDef */ Node *startOffset; /* expression for starting bound, if any */ Node *endOffset; /* expression for ending bound, if any */ List *runCondition; /* qual to help short-circuit execution */ List *runConditionOrig; /* runCondition for display in EXPLAIN */ /* these fields are used with RANGE offset PRECEDING/FOLLOWING: */ Oid startInRangeFunc; /* in_range function for startOffset */ Oid endInRangeFunc; /* in_range function for endOffset */ Oid inRangeColl; /* collation for in_range tests */ bool inRangeAsc; /* use ASC sort order for in_range tests? */ bool inRangeNullsFirst; /* nulls sort first for in_range tests? */ bool topWindow; /* false for all apart from the WindowAgg * that's closest to the root of the plan */ } WindowAgg; /* ---------------- * unique node * ---------------- */ typedef struct Unique { Plan plan; int numCols; /* number of columns to check for uniqueness */ AttrNumber *uniqColIdx; /* their indexes in the target list */ Oid *uniqOperators; /* equality operators to compare with */ Oid *uniqCollations; /* collations for equality comparisons */ } Unique; /* ------------ * gather node * * Note: rescan_param is the ID of a PARAM_EXEC parameter slot. That slot * will never actually contain a value, but the Gather node must flag it as * having changed whenever it is rescanned. The child parallel-aware scan * nodes are marked as depending on that parameter, so that the rescan * machinery is aware that their output is likely to change across rescans. * In some cases we don't need a rescan Param, so rescan_param is set to -1. * ------------ */ typedef struct Gather { Plan plan; int num_workers; /* planned number of worker processes */ int rescan_param; /* ID of Param that signals a rescan, or -1 */ bool single_copy; /* don't execute plan more than once */ bool invisible; /* suppress EXPLAIN display (for testing)? */ Bitmapset *initParam; /* param id's of initplans which are referred * at gather or one of it's child node */ } Gather; /* ------------ * gather merge node * ------------ */ typedef struct GatherMerge { Plan plan; int num_workers; /* planned number of worker processes */ int rescan_param; /* ID of Param that signals a rescan, or -1 */ /* remaining fields are just like the sort-key info in struct Sort */ int numCols; /* number of sort-key columns */ AttrNumber *sortColIdx; /* their indexes in the target list */ Oid *sortOperators; /* OIDs of operators to sort them by */ Oid *collations; /* OIDs of collations */ bool *nullsFirst; /* NULLS FIRST/LAST directions */ Bitmapset *initParam; /* param id's of initplans which are referred * at gather merge or one of it's child node */ } GatherMerge; /* ---------------- * hash build node * * If the executor is supposed to try to apply skew join optimization, then * skewTable/skewColumn/skewInherit identify the outer relation's join key * column, from which the relevant MCV statistics can be fetched. * ---------------- */ typedef struct Hash { Plan plan; /* * List of expressions to be hashed for tuples from Hash's outer plan, * needed to put them into the hashtable. */ List *hashkeys; /* hash keys for the hashjoin condition */ Oid skewTable; /* outer join key's table OID, or InvalidOid */ AttrNumber skewColumn; /* outer join key's column #, or zero */ bool skewInherit; /* is outer join rel an inheritance tree? */ /* all other info is in the parent HashJoin node */ Cardinality rows_total; /* estimate total rows if parallel_aware */ } Hash; /* ---------------- * setop node * ---------------- */ typedef struct SetOp { Plan plan; SetOpCmd cmd; /* what to do, see nodes.h */ SetOpStrategy strategy; /* how to do it, see nodes.h */ int numCols; /* number of columns to check for * duplicate-ness */ AttrNumber *dupColIdx; /* their indexes in the target list */ Oid *dupOperators; /* equality operators to compare with */ Oid *dupCollations; AttrNumber flagColIdx; /* where is the flag column, if any */ int firstFlag; /* flag value for first input relation */ long numGroups; /* estimated number of groups in input */ } SetOp; /* ---------------- * lock-rows node * * rowMarks identifies the rels to be locked by this node; it should be * a subset of the rowMarks listed in the top-level PlannedStmt. * epqParam is a Param that all scan nodes below this one must depend on. * It is used to force re-evaluation of the plan during EvalPlanQual. * ---------------- */ typedef struct LockRows { Plan plan; List *rowMarks; /* a list of PlanRowMark's */ int epqParam; /* ID of Param for EvalPlanQual re-eval */ } LockRows; /* ---------------- * limit node * * Note: as of Postgres 8.2, the offset and count expressions are expected * to yield int8, rather than int4 as before. * ---------------- */ typedef struct Limit { Plan plan; Node *limitOffset; /* OFFSET parameter, or NULL if none */ Node *limitCount; /* COUNT parameter, or NULL if none */ LimitOption limitOption; /* limit type */ int uniqNumCols; /* number of columns to check for similarity */ AttrNumber *uniqColIdx; /* their indexes in the target list */ Oid *uniqOperators; /* equality operators to compare with */ Oid *uniqCollations; /* collations for equality comparisons */ } Limit; /* * RowMarkType - * enums for types of row-marking operations * * The first four of these values represent different lock strengths that * we can take on tuples according to SELECT FOR [KEY] UPDATE/SHARE requests. * We support these on regular tables, as well as on foreign tables whose FDWs * report support for late locking. For other foreign tables, any locking * that might be done for such requests must happen during the initial row * fetch; their FDWs provide no mechanism for going back to lock a row later. * This means that the semantics will be a bit different than for a local * table; in particular we are likely to lock more rows than would be locked * locally, since remote rows will be locked even if they then fail * locally-checked restriction or join quals. However, the prospect of * doing a separate remote query to lock each selected row is usually pretty * unappealing, so early locking remains a credible design choice for FDWs. * * When doing UPDATE, DELETE, or SELECT FOR UPDATE/SHARE, we have to uniquely * identify all the source rows, not only those from the target relations, so * that we can perform EvalPlanQual rechecking at need. For plain tables we * can just fetch the TID, much as for a target relation; this case is * represented by ROW_MARK_REFERENCE. Otherwise (for example for VALUES or * FUNCTION scans) we have to copy the whole row value. ROW_MARK_COPY is * pretty inefficient, since most of the time we'll never need the data; but * fortunately the overhead is usually not performance-critical in practice. * By default we use ROW_MARK_COPY for foreign tables, but if the FDW has * a concept of rowid it can request to use ROW_MARK_REFERENCE instead. * (Again, this probably doesn't make sense if a physical remote fetch is * needed, but for FDWs that map to local storage it might be credible.) */ typedef enum RowMarkType { ROW_MARK_EXCLUSIVE, /* obtain exclusive tuple lock */ ROW_MARK_NOKEYEXCLUSIVE, /* obtain no-key exclusive tuple lock */ ROW_MARK_SHARE, /* obtain shared tuple lock */ ROW_MARK_KEYSHARE, /* obtain keyshare tuple lock */ ROW_MARK_REFERENCE, /* just fetch the TID, don't lock it */ ROW_MARK_COPY /* physically copy the row value */ } RowMarkType; #define RowMarkRequiresRowShareLock(marktype) ((marktype) <= ROW_MARK_KEYSHARE) /* * PlanRowMark - * plan-time representation of FOR [KEY] UPDATE/SHARE clauses * * When doing UPDATE, DELETE, or SELECT FOR UPDATE/SHARE, we create a separate * PlanRowMark node for each non-target relation in the query. Relations that * are not specified as FOR UPDATE/SHARE are marked ROW_MARK_REFERENCE (if * regular tables or supported foreign tables) or ROW_MARK_COPY (if not). * * Initially all PlanRowMarks have rti == prti and isParent == false. * When the planner discovers that a relation is the root of an inheritance * tree, it sets isParent true, and adds an additional PlanRowMark to the * list for each child relation (including the target rel itself in its role * as a child, 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 varnosyn; /* syntactic relation index (0 if unknown) */ AttrNumber varattnosyn; /* syntactic attribute number */ int location; /* token location, or -1 if unknown */ } Var; /* * Const * * Note: for varlena data types, we make a rule that a Const node's value * must be in non-extended form (4-byte header, no compression or external * references). This ensures that the Const node is self-contained and makes * it more likely that equal() will see logically identical values as equal. */ typedef struct Const { Expr xpr; Oid consttype; /* pg_type OID of the constant's datatype */ int32 consttypmod; /* typmod value, if any */ Oid constcollid; /* OID of collation, or InvalidOid if none */ int constlen; /* typlen of the constant's datatype */ Datum constvalue; /* the constant's value */ bool constisnull; /* whether the constant is null (if true, * constvalue is undefined) */ bool constbyval; /* whether this datatype is passed by value. * If true, then all the information is stored * in the Datum. If false, then the Datum * contains a pointer to the information. */ int location; /* token location, or -1 if unknown */ } Const; /* * Param * * paramkind specifies the kind of parameter. The possible values * for this field are: * * PARAM_EXTERN: The parameter value is supplied from outside the plan. * Such parameters are numbered from 1 to n. * * PARAM_EXEC: The parameter is an internal executor parameter, used * for passing values into and out of sub-queries or from * nestloop joins to their inner scans. * For historical reasons, such parameters are numbered from 0. * These numbers are independent of PARAM_EXTERN numbers. * * PARAM_SUBLINK: The parameter represents an output column of a SubLink * node's sub-select. The column number is contained in the * `paramid' field. (This type of Param is converted to * PARAM_EXEC during planning.) * * PARAM_MULTIEXPR: Like PARAM_SUBLINK, the parameter represents an * output column of a SubLink node's sub-select, but here, the * SubLink is always a MULTIEXPR SubLink. The high-order 16 bits * of the `paramid' field contain the SubLink's subLinkId, and * the low-order 16 bits contain the column number. (This type * of Param is also converted to PARAM_EXEC during planning.) */ typedef enum ParamKind { PARAM_EXTERN, PARAM_EXEC, PARAM_SUBLINK, PARAM_MULTIEXPR } ParamKind; typedef struct Param { Expr xpr; ParamKind paramkind; /* kind of parameter. See above */ int paramid; /* numeric ID for parameter */ Oid paramtype; /* pg_type OID of parameter's datatype */ int32 paramtypmod; /* typmod value, if known */ Oid paramcollid; /* OID of collation, or InvalidOid if none */ int location; /* token location, or -1 if unknown */ } Param; /* * Aggref * * The aggregate's args list is a targetlist, ie, a list of TargetEntry nodes. * * For a normal (non-ordered-set) aggregate, the non-resjunk TargetEntries * represent the aggregate's regular arguments (if any) and resjunk TLEs can * be added at the end to represent ORDER BY expressions that are not also * arguments. As in a top-level Query, the TLEs can be marked with * ressortgroupref indexes to let them be referenced by SortGroupClause * entries in the aggorder and/or aggdistinct lists. This represents ORDER BY * and DISTINCT operations to be applied to the aggregate input rows before * they are passed to the transition function. The grammar only allows a * simple "DISTINCT" specifier for the arguments, but we use the full * query-level representation to allow more code sharing. * * For an ordered-set aggregate, the args list represents the WITHIN GROUP * (aggregated) arguments, all of which will be listed in the aggorder list. * DISTINCT is not supported in this case, so aggdistinct will be NIL. * The direct arguments appear in aggdirectargs (as a list of plain * expressions, not TargetEntry nodes). * * aggtranstype is the data type of the state transition values for this * aggregate (resolved to an actual type, if agg's transtype is polymorphic). * This is determined during planning and is InvalidOid before that. * * aggargtypes is an OID list of the data types of the direct and regular * arguments. Normally it's redundant with the aggdirectargs and args lists, * but in a combining aggregate, it's not because the args list has been * replaced with a single argument representing the partial-aggregate * transition values. * * aggsplit indicates the expected partial-aggregation mode for the Aggref's * parent plan node. It's always set to AGGSPLIT_SIMPLE in the parser, but * the planner might change it to something else. We use this mainly as * a crosscheck that the Aggrefs match the plan; but note that when aggsplit * indicates a non-final mode, aggtype reflects the transition data type * not the SQL-level output type of the aggregate. * * 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. */ typedef struct Aggref { Expr xpr; Oid aggfnoid; /* pg_proc Oid of the aggregate */ Oid aggtype; /* type Oid of result of the aggregate */ Oid aggcollid; /* OID of collation of result */ Oid inputcollid; /* OID of collation that function should use */ Oid aggtranstype; /* type Oid of aggregate's transition value */ List *aggargtypes; /* type Oids of direct and aggregated args */ List *aggdirectargs; /* direct arguments, if an ordered-set agg */ List *args; /* aggregated arguments and sort expressions */ List *aggorder; /* ORDER BY (list of SortGroupClause) */ List *aggdistinct; /* DISTINCT (list of SortGroupClause) */ Expr *aggfilter; /* FILTER expression, if any */ bool aggstar; /* true if argument list was really '*' */ bool aggvariadic; /* true if variadic arguments have been * combined into an array last argument */ char aggkind; /* aggregate kind (see pg_aggregate.h) */ Index agglevelsup; /* > 0 if agg belongs to outer query */ AggSplit aggsplit; /* expected agg-splitting mode of parent Agg */ int aggno; /* unique ID within the Agg node */ int aggtransno; /* unique ID of transition state in the Agg */ int location; /* token location, or -1 if unknown */ } Aggref; /* * GroupingFunc * * A GroupingFunc is a GROUPING(...) expression, which behaves in many ways * like an aggregate function (e.g. it "belongs" to a specific query level, * which might not be the one immediately containing it), but also differs in * an important respect: it never evaluates its arguments, they merely * designate expressions from the GROUP BY clause of the query level to which * it belongs. * * The spec defines the evaluation of GROUPING() purely by syntactic * replacement, but we make it a real expression for optimization purposes so * that one Agg node can handle multiple grouping sets at once. Evaluating the * result only needs the column positions to check against the grouping set * being projected. However, for EXPLAIN to produce meaningful output, we have * to keep the original expressions around, since expression deparse does not * give us any feasible way to get at the GROUP BY clause. * * Also, we treat two GroupingFunc nodes as equal if they have equal arguments * lists and agglevelsup, without comparing the refs and cols annotations. * * In raw parse output we have only the args list; parse analysis fills in the * refs list, and the planner fills in the cols list. */ typedef struct GroupingFunc { Expr xpr; List *args; /* arguments, not evaluated but kept for * benefit of EXPLAIN etc. */ List *refs; /* ressortgrouprefs of arguments */ List *cols; /* actual column positions set by planner */ Index agglevelsup; /* same as Aggref.agglevelsup */ int location; /* token location */ } GroupingFunc; /* * WindowFunc */ typedef struct WindowFunc { Expr xpr; Oid winfnoid; /* pg_proc Oid of the function */ Oid wintype; /* type Oid of result of the window function */ Oid wincollid; /* OID of collation of result */ Oid inputcollid; /* OID of collation that function should use */ List *args; /* arguments to the window function */ Expr *aggfilter; /* FILTER expression, if any */ Index winref; /* index of associated WindowClause */ bool winstar; /* true if argument list was really '*' */ bool winagg; /* is function a simple aggregate? */ int location; /* token location, or -1 if unknown */ } WindowFunc; /* * SubscriptingRef: describes a subscripting operation over a container * (array, etc). * * A SubscriptingRef can describe fetching a single element from a container, * fetching a part of 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. * * Note: for the cases where a container is returned, if refexpr yields a R/W * expanded container, then the implementation is allowed to modify that * object in-place and return the same object. */ typedef struct SubscriptingRef { Expr xpr; Oid refcontainertype; /* type of the container proper */ Oid refelemtype; /* the container type's pg_type.typelem */ Oid refrestype; /* type of the SubscriptingRef's result */ int32 reftypmod; /* typmod of the result */ Oid refcollid; /* collation of result, or InvalidOid if none */ List *refupperindexpr; /* expressions that evaluate to upper * container indexes */ List *reflowerindexpr; /* expressions that evaluate to lower * container indexes, or NIL for single * container element */ Expr *refexpr; /* the expression that evaluates to a * container value */ Expr *refassgnexpr; /* expression for the source value, or NULL if * fetch */ } SubscriptingRef; /* * CoercionContext - distinguishes the allowed set of type casts * * NB: ordering of the alternatives is significant; later (larger) values * allow more casts than earlier ones. */ typedef enum CoercionContext { COERCION_IMPLICIT, /* coercion in context of expression */ COERCION_ASSIGNMENT, /* coercion in context of assignment */ COERCION_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 */ typedef struct FuncExpr { Expr xpr; Oid funcid; /* PG_PROC OID of the function */ Oid funcresulttype; /* PG_TYPE OID of result value */ bool funcretset; /* true if function returns set */ bool funcvariadic; /* true if variadic arguments have been * combined into an array last argument */ CoercionForm funcformat; /* how to display this function call */ Oid funccollid; /* OID of collation of result */ Oid inputcollid; /* OID of collation that function should use */ List *args; /* arguments to the function */ int location; /* token location, or -1 if unknown */ } FuncExpr; /* * NamedArgExpr - a named argument of a function * * This node type can only appear in the args list of a FuncCall or FuncExpr * node. We support pure positional call notation (no named arguments), * named notation (all arguments are named), and mixed notation (unnamed * arguments followed by named ones). * * Parse analysis sets argnumber to the positional index of the argument, * but doesn't rearrange the argument list. * * The planner will convert argument lists to pure positional notation * during expression preprocessing, so execution never sees a NamedArgExpr. */ typedef struct NamedArgExpr { Expr xpr; Expr *arg; /* the argument expression */ char *name; /* the name */ int argnumber; /* argument's number in positional notation */ int location; /* argument name location, or -1 if unknown */ } NamedArgExpr; /* * OpExpr - expression node for an operator invocation * * Semantically, this is essentially the same as a function call. * * Note that opfuncid is not necessarily filled in immediately on creation * of the node. The planner makes sure it is valid before passing the node * tree to the executor, but during parsing/planning opfuncid can be 0. */ typedef struct OpExpr { Expr xpr; Oid opno; /* PG_OPERATOR OID of the operator */ Oid opfuncid; /* PG_PROC OID of underlying function */ Oid opresulttype; /* PG_TYPE OID of result value */ bool opretset; /* true if operator returns set */ Oid opcollid; /* OID of collation of result */ Oid inputcollid; /* OID of collation that operator should use */ List *args; /* arguments to the operator (1 or 2) */ int location; /* token location, or -1 if unknown */ } OpExpr; /* * DistinctExpr - expression node for "x IS DISTINCT FROM y" * * Except for the nodetag, this is represented identically to an OpExpr * referencing the "=" operator for x and y. * We use "=", not the more obvious "<>", because more datatypes have "=" * than "<>". This means the executor must invert the operator result. * Note that the operator function won't be called at all if either input * is NULL, since then the result can be determined directly. */ typedef OpExpr DistinctExpr; /* * NullIfExpr - a NULLIF expression * * Like DistinctExpr, this is represented the same as an OpExpr referencing * the "=" operator for x and y. */ typedef OpExpr NullIfExpr; /* * ScalarArrayOpExpr - expression node for "scalar op ANY/ALL (array)" * * The operator must yield boolean. It is applied to the left operand * and each element of the righthand array, and the results are combined * with OR or AND (for ANY or ALL respectively). The node representation * is almost the same as for the underlying operator, but we need a useOr * flag to remember whether it's ANY or ALL, and we don't have to store * the result type (or the collation) because it must be boolean. * * 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(). */ typedef struct ScalarArrayOpExpr { Expr xpr; Oid opno; /* PG_OPERATOR OID of the operator */ Oid opfuncid; /* PG_PROC OID of comparison function */ Oid hashfuncid; /* PG_PROC OID of hash func or InvalidOid */ Oid negfuncid; /* PG_PROC OID of negator of opfuncid function * or InvalidOid. See above */ bool useOr; /* true for ANY, false for ALL */ Oid inputcollid; /* OID of collation that operator should use */ List *args; /* the scalar and array operands */ int location; /* token location, or -1 if unknown */ } ScalarArrayOpExpr; /* * BoolExpr - expression node for the basic Boolean operators AND, OR, NOT * * Notice the arguments are given as a List. For NOT, of course the list * must always have exactly one element. For AND and OR, there can be two * or more arguments. */ typedef enum BoolExprType { AND_EXPR, OR_EXPR, NOT_EXPR } BoolExprType; typedef struct BoolExpr { Expr xpr; BoolExprType boolop; List *args; /* arguments to this expression */ int location; /* token location, or -1 if unknown */ } BoolExpr; /* * SubLink * * A SubLink represents a subselect appearing in an expression, and in some * cases also the combining operator(s) just above it. The subLinkType * indicates the form of the expression represented: * EXISTS_SUBLINK EXISTS(SELECT ...) * ALL_SUBLINK (lefthand) op ALL (SELECT ...) * ANY_SUBLINK (lefthand) op ANY (SELECT ...) * ROWCOMPARE_SUBLINK (lefthand) op (SELECT ...) * EXPR_SUBLINK (SELECT with single targetlist item ...) * MULTIEXPR_SUBLINK (SELECT with multiple targetlist items ...) * ARRAY_SUBLINK ARRAY(SELECT with single targetlist item ...) * CTE_SUBLINK WITH query (never actually part of an expression) * For ALL, ANY, and ROWCOMPARE, the lefthand is a list of expressions of the * same length as the subselect's targetlist. ROWCOMPARE will *always* have * a list with more than one entry; if the subselect has just one target * then the parser will create an EXPR_SUBLINK instead (and any operator * above the subselect will be represented separately). * ROWCOMPARE, EXPR, and MULTIEXPR require the subselect to deliver at most * one row (if it returns no rows, the result is NULL). * ALL, ANY, and ROWCOMPARE require the combining operators to deliver boolean * results. ALL and ANY combine the per-row results using AND and OR * semantics respectively. * ARRAY requires just one target column, and creates an array of the target * column's type using any number of rows resulting from the subselect. * * SubLink is classed as an Expr node, but it is not actually executable; * it must be replaced in the expression tree by a SubPlan node during * planning. * * NOTE: in the raw output of gram.y, testexpr contains just the raw form * of the lefthand expression (if any), and operName is the String name of * the combining operator. Also, subselect is a raw parsetree. During parse * analysis, the parser transforms testexpr into a complete boolean expression * that compares the lefthand value(s) to PARAM_SUBLINK nodes representing the * output columns of the subselect. And subselect is transformed to a Query. * This is the representation seen in saved rules and in the rewriter. * * In EXISTS, EXPR, MULTIEXPR, and ARRAY SubLinks, testexpr and operName * are unused and are always null. * * subLinkId is currently used only for MULTIEXPR SubLinks, and is zero in * other SubLinks. This number identifies different multiple-assignment * subqueries within an UPDATE statement's SET list. It is unique only * within a particular targetlist. The output column(s) of the MULTIEXPR * are referenced by PARAM_MULTIEXPR Params appearing elsewhere in the tlist. * * The CTE_SUBLINK case never occurs in actual SubLink nodes, but it is used * in SubPlans generated for WITH subqueries. */ typedef enum SubLinkType { EXISTS_SUBLINK, ALL_SUBLINK, ANY_SUBLINK, ROWCOMPARE_SUBLINK, EXPR_SUBLINK, MULTIEXPR_SUBLINK, ARRAY_SUBLINK, CTE_SUBLINK /* for SubPlans only */ } SubLinkType; typedef struct SubLink { Expr xpr; SubLinkType subLinkType; /* see above */ int subLinkId; /* ID (1..n); 0 if not MULTIEXPR */ Node *testexpr; /* outer-query test for ALL/ANY/ROWCOMPARE */ List *operName; /* originally specified operator name */ Node *subselect; /* subselect as Query* or raw parsetree */ int location; /* token location, or -1 if unknown */ } SubLink; /* * SubPlan - executable expression node for a subplan (sub-SELECT) * * The planner replaces SubLink nodes in expression trees with SubPlan * nodes after it has finished planning the subquery. SubPlan references * a sub-plantree stored in the subplans list of the toplevel PlannedStmt. * (We avoid a direct link to make it easier to copy expression trees * without causing multiple processing of the subplan.) * * In an ordinary subplan, testexpr points to an executable expression * (OpExpr, an AND/OR tree of OpExprs, or RowCompareExpr) for the combining * operator(s); the left-hand arguments are the original lefthand expressions, * and the right-hand arguments are PARAM_EXEC Param nodes representing the * outputs of the sub-select. (NOTE: runtime coercion functions may be * inserted as well.) This is just the same expression tree as testexpr in * the original SubLink node, but the PARAM_SUBLINK nodes are replaced by * suitably numbered PARAM_EXEC nodes. * * If the sub-select becomes an initplan rather than a subplan, the executable * expression is part of the outer plan's expression tree (and the SubPlan * node itself is not, but rather is found in the outer plan's initPlan * list). In this case testexpr is NULL to avoid duplication. * * The planner also derives lists of the values that need to be passed into * and out of the subplan. Input values are represented as a list "args" of * expressions to be evaluated in the outer-query context (currently these * args are always just Vars, but in principle they could be any expression). * The values are assigned to the global PARAM_EXEC params indexed by parParam * (the parParam and args lists must have the same ordering). setParam is a * list of the PARAM_EXEC params that are computed by the sub-select, if it * is an initplan; they are listed in order by sub-select output column * position. (parParam and setParam are integer Lists, not Bitmapsets, * because their ordering is significant.) * * Also, the planner computes startup and per-call costs for use of the * SubPlan. Note that these include the cost of the subquery proper, * evaluation of the testexpr if any, and any hashtable management overhead. */ typedef struct SubPlan { Expr xpr; /* Fields copied from original SubLink: */ SubLinkType subLinkType; /* see above */ /* The combining operators, transformed to an executable expression: */ Node *testexpr; /* OpExpr or RowCompareExpr expression tree */ List *paramIds; /* IDs of Params embedded in the above */ /* Identification of the Plan tree to use: */ int plan_id; /* Index (from 1) in PlannedStmt.subplans */ /* Identification of the SubPlan for EXPLAIN and debugging purposes: */ char *plan_name; /* A name assigned during planning */ /* Extra data useful for determining subplan's output type: */ Oid firstColType; /* Type of first column of subplan result */ int32 firstColTypmod; /* Typmod of first column of subplan result */ Oid firstColCollation; /* Collation of first column of subplan * result */ /* Information about execution strategy: */ bool useHashTable; /* true to store subselect output in a hash * table (implies we are doing "IN") */ bool unknownEqFalse; /* true if it's okay to return FALSE when the * spec result is UNKNOWN; this allows much * simpler handling of null values */ bool parallel_safe; /* is the subplan parallel-safe? */ /* Note: parallel_safe does not consider contents of testexpr or args */ /* Information for passing params into and out of the subselect: */ /* setParam and parParam are lists of integers (param IDs) */ List *setParam; /* initplan subqueries have to set these * Params for parent plan */ List *parParam; /* indices of input Params from parent plan */ List *args; /* exprs to pass as parParam values */ /* Estimated execution costs: */ Cost startup_cost; /* one-time setup cost */ Cost per_call_cost; /* cost for each subplan evaluation */ } SubPlan; /* * AlternativeSubPlan - expression node for a choice among SubPlans * * 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 { Expr xpr; List *subplans; /* SubPlan(s) with equivalent results */ } AlternativeSubPlan; /* ---------------- * FieldSelect * * FieldSelect represents the operation of extracting one field from a tuple * value. At runtime, the input expression is expected to yield a rowtype * Datum. The specified field number is extracted and returned as a Datum. * ---------------- */ typedef struct FieldSelect { Expr xpr; Expr *arg; /* input expression */ AttrNumber fieldnum; /* attribute number of field to extract */ Oid resulttype; /* type of the field (result type of this * node) */ int32 resulttypmod; /* output typmod (usually -1) */ Oid resultcollid; /* OID of collation of the field */ } FieldSelect; /* ---------------- * FieldStore * * FieldStore represents the operation of modifying one field in a tuple * value, yielding a new tuple value (the input is not touched!). Like * the assign case of SubscriptingRef, this is used to implement UPDATE of a * portion of a column. * * resulttype is always a named composite type (not a domain). To update * a composite domain value, apply CoerceToDomain to the FieldStore. * * A single FieldStore can actually represent updates of several different * fields. The parser only generates FieldStores with single-element lists, * but the planner will collapse multiple updates of the same base column * into one FieldStore. * ---------------- */ typedef struct FieldStore { Expr xpr; Expr *arg; /* input tuple value */ List *newvals; /* new value(s) for field(s) */ List *fieldnums; /* integer list of field attnums */ Oid resulttype; /* type of result (same as type of arg) */ /* Like RowExpr, we deliberately omit a typmod and collation here */ } FieldStore; /* ---------------- * RelabelType * * RelabelType represents a "dummy" type coercion between two binary- * compatible datatypes, such as reinterpreting the result of an OID * expression as an int4. It is a no-op at runtime; we only need it * to provide a place to store the correct type to be attributed to * the expression result during type resolution. (We can't get away * with just overwriting the type field of the input expression node, * so we need a separate node to show the coercion's result type.) * ---------------- */ typedef struct RelabelType { Expr xpr; Expr *arg; /* input expression */ Oid resulttype; /* output type of coercion expression */ int32 resulttypmod; /* output typmod (usually -1) */ Oid resultcollid; /* OID of collation, or InvalidOid if none */ CoercionForm relabelformat; /* how to display this node */ int location; /* token location, or -1 if unknown */ } RelabelType; /* ---------------- * CoerceViaIO * * CoerceViaIO represents a type coercion between two types whose textual * representations are compatible, implemented by invoking the source type's * typoutput function then the destination type's typinput function. * ---------------- */ typedef struct CoerceViaIO { Expr xpr; Expr *arg; /* input expression */ Oid resulttype; /* output type of coercion */ /* output typmod is not stored, but is presumed -1 */ Oid resultcollid; /* OID of collation, or InvalidOid if none */ CoercionForm coerceformat; /* how to display this node */ int location; /* token location, or -1 if unknown */ } CoerceViaIO; /* ---------------- * ArrayCoerceExpr * * ArrayCoerceExpr represents a type coercion from one array type to another, * which is implemented by applying the per-element coercion expression * "elemexpr" to each element of the source array. Within elemexpr, the * source element is represented by a CaseTestExpr node. Note that even if * elemexpr is a no-op (that is, just CaseTestExpr + RelabelType), the * coercion still requires some effort: we have to fix the element type OID * stored in the array header. * ---------------- */ typedef struct ArrayCoerceExpr { Expr xpr; Expr *arg; /* input expression (yields an array) */ Expr *elemexpr; /* expression representing per-element work */ Oid resulttype; /* output type of coercion (an array type) */ int32 resulttypmod; /* output typmod (also element typmod) */ Oid resultcollid; /* OID of collation, or InvalidOid if none */ CoercionForm coerceformat; /* how to display this node */ int location; /* token location, or -1 if unknown */ } ArrayCoerceExpr; /* ---------------- * ConvertRowtypeExpr * * ConvertRowtypeExpr represents a type coercion from one composite type * to another, where the source type is guaranteed to contain all the columns * needed for the destination type plus possibly others; the columns need not * be in the same positions, but are matched up by name. This is primarily * used to convert a whole-row value of an inheritance child table into a * valid whole-row value of its parent table's rowtype. Both resulttype * and the exposed type of "arg" must be named composite types (not domains). * ---------------- */ typedef struct ConvertRowtypeExpr { Expr xpr; Expr *arg; /* input expression */ Oid resulttype; /* output type (always a composite type) */ /* Like RowExpr, we deliberately omit a typmod and collation here */ CoercionForm convertformat; /* how to display this node */ int location; /* token location, or -1 if unknown */ } ConvertRowtypeExpr; /*---------- * CollateExpr - COLLATE * * The planner replaces CollateExpr with RelabelType during expression * preprocessing, so execution never sees a CollateExpr. *---------- */ typedef struct CollateExpr { Expr xpr; Expr *arg; /* input expression */ Oid collOid; /* collation's OID */ int location; /* token location, or -1 if unknown */ } CollateExpr; /*---------- * CaseExpr - a CASE expression * * We support two distinct forms of CASE expression: * CASE WHEN boolexpr THEN expr [ WHEN boolexpr THEN expr ... ] * CASE testexpr WHEN compexpr THEN expr [ WHEN compexpr THEN expr ... ] * These are distinguishable by the "arg" field being NULL in the first case * and the testexpr in the second case. * * In the raw grammar output for the second form, the condition expressions * of the WHEN clauses are just the comparison values. Parse analysis * converts these to valid boolean expressions of the form * CaseTestExpr '=' compexpr * where the CaseTestExpr node is a placeholder that emits the correct * value at runtime. This structure is used so that the testexpr need be * evaluated only once. Note that after parse analysis, the condition * expressions always yield boolean. * * Note: we can test whether a CaseExpr has been through parse analysis * yet by checking whether casetype is InvalidOid or not. *---------- */ typedef struct CaseExpr { Expr xpr; Oid casetype; /* type of expression result */ Oid casecollid; /* OID of collation, or InvalidOid if none */ Expr *arg; /* implicit equality comparison argument */ List *args; /* the arguments (list of WHEN clauses) */ Expr *defresult; /* the default result (ELSE clause) */ int location; /* token location, or -1 if unknown */ } CaseExpr; /* * CaseWhen - one arm of a CASE expression */ typedef struct CaseWhen { Expr xpr; Expr *expr; /* condition expression */ Expr *result; /* substitution result */ int location; /* token location, or -1 if unknown */ } CaseWhen; /* * Placeholder node for the test value to be processed by a CASE expression. * This is effectively like a Param, but can be implemented more simply * since we need only one replacement value at a time. * * We also abuse this node type for some other purposes, including: * * Placeholder for the current array element value in ArrayCoerceExpr; * see build_coercion_expression(). * * Nested FieldStore/SubscriptingRef assignment expressions in INSERT/UPDATE; * see transformAssignmentIndirection(). * * The uses in CaseExpr and ArrayCoerceExpr are safe only to the extent that * there is not any other CaseExpr or ArrayCoerceExpr between the value source * node and its child CaseTestExpr(s). This is true in the parse analysis * output, but the planner's function-inlining logic has to be careful not to * break it. * * The nested-assignment-expression case is safe because the only node types * that can be above such CaseTestExprs are FieldStore and SubscriptingRef. */ typedef struct CaseTestExpr { Expr xpr; Oid typeId; /* type for substituted value */ int32 typeMod; /* typemod for substituted value */ Oid collation; /* collation for the substituted value */ } CaseTestExpr; /* * ArrayExpr - an ARRAY[] expression * * Note: if multidims is false, the constituent expressions all yield the * scalar type identified by element_typeid. If multidims is true, the * constituent expressions all yield arrays of element_typeid (ie, the same * type as array_typeid); at runtime we must check for compatible subscripts. */ typedef struct ArrayExpr { Expr xpr; Oid array_typeid; /* type of expression result */ Oid array_collid; /* OID of collation, or InvalidOid if none */ Oid element_typeid; /* common type of array elements */ List *elements; /* the array elements or sub-arrays */ bool multidims; /* true if elements are sub-arrays */ int location; /* token location, or -1 if unknown */ } ArrayExpr; /* * RowExpr - a ROW() expression * * Note: the list of fields must have a one-for-one correspondence with * physical fields of the associated rowtype, although it is okay for it * to be shorter than the rowtype. That is, the N'th list element must * match up with the N'th physical field. When the N'th physical field * is a dropped column (attisdropped) then the N'th list element can just * be a NULL constant. (This case can only occur for named composite types, * not RECORD types, since those are built from the RowExpr itself rather * than vice versa.) It is important not to assume that length(args) is * the same as the number of columns logically present in the rowtype. * * colnames provides field names 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 */ Oid row_typeid; /* RECORDOID or a composite type's ID */ /* * row_typeid cannot be a domain over composite, only plain composite. To * create a composite domain value, apply CoerceToDomain to the RowExpr. * * Note: we deliberately do NOT store a typmod. Although a typmod will be * associated with specific RECORD types at runtime, it will differ for * different backends, and so cannot safely be stored in stored * parsetrees. We must assume typmod -1 for a RowExpr node. * * We don't need to store a collation either. The result type is * necessarily composite, and composite types never have a collation. */ CoercionForm row_format; /* how to display this node */ List *colnames; /* list of String, or NIL */ int location; /* token location, or -1 if unknown */ } RowExpr; /* * RowCompareExpr - row-wise comparison, such as (a, b) <= (1, 2) * * We support row comparison for any operator that can be determined to * act like =, <>, <, <=, >, or >= (we determine this by looking for the * operator in btree opfamilies). Note that the same operator name might * map to a different operator for each pair of row elements, since the * element datatypes can vary. * * A RowCompareExpr node is only generated for the < <= > >= cases; * the = and <> cases are translated to simple AND or OR combinations * of the pairwise comparisons. However, we include = and <> in the * RowCompareType enum for the convenience of parser logic. */ typedef enum RowCompareType { /* Values of this enum are chosen to match btree strategy numbers */ ROWCOMPARE_LT = 1, /* BTLessStrategyNumber */ ROWCOMPARE_LE = 2, /* BTLessEqualStrategyNumber */ ROWCOMPARE_EQ = 3, /* BTEqualStrategyNumber */ ROWCOMPARE_GE = 4, /* BTGreaterEqualStrategyNumber */ ROWCOMPARE_GT = 5, /* BTGreaterStrategyNumber */ ROWCOMPARE_NE = 6 /* no such btree strategy */ } RowCompareType; typedef struct RowCompareExpr { Expr xpr; RowCompareType rctype; /* LT LE GE or GT, never EQ or NE */ List *opnos; /* OID list of pairwise comparison ops */ List *opfamilies; /* OID list of containing operator families */ List *inputcollids; /* OID list of collations for comparisons */ List *largs; /* the left-hand input arguments */ List *rargs; /* the right-hand input arguments */ } RowCompareExpr; /* * CoalesceExpr - a COALESCE expression */ typedef struct CoalesceExpr { Expr xpr; Oid coalescetype; /* type of expression result */ Oid coalescecollid; /* OID of collation, or InvalidOid if none */ List *args; /* the arguments */ int location; /* token location, or -1 if unknown */ } CoalesceExpr; /* * MinMaxExpr - a GREATEST or LEAST function */ typedef enum MinMaxOp { IS_GREATEST, IS_LEAST } MinMaxOp; typedef struct MinMaxExpr { Expr xpr; Oid minmaxtype; /* common type of arguments and result */ Oid minmaxcollid; /* OID of collation of result */ Oid inputcollid; /* OID of collation that function should use */ MinMaxOp op; /* function to execute */ List *args; /* the arguments */ int location; /* token location, or -1 if unknown */ } MinMaxExpr; /* * SQLValueFunction - parameterless functions with special grammar productions * * The SQL standard categorizes some of these as * and others as . We call 'em SQLValueFunctions * for lack of a better term. We store type and typmod of the result so that * some code doesn't need to know each function individually, and because * we would need to store typmod anyway for some of the datetime functions. * Note that currently, all variants return non-collating datatypes, so we do * not need a collation field; also, all these functions are stable. */ typedef enum SQLValueFunctionOp { SVFOP_CURRENT_DATE, SVFOP_CURRENT_TIME, SVFOP_CURRENT_TIME_N, SVFOP_CURRENT_TIMESTAMP, SVFOP_CURRENT_TIMESTAMP_N, SVFOP_LOCALTIME, SVFOP_LOCALTIME_N, SVFOP_LOCALTIMESTAMP, SVFOP_LOCALTIMESTAMP_N, SVFOP_CURRENT_ROLE, SVFOP_CURRENT_USER, SVFOP_USER, SVFOP_SESSION_USER, SVFOP_CURRENT_CATALOG, SVFOP_CURRENT_SCHEMA } SQLValueFunctionOp; typedef struct SQLValueFunction { Expr xpr; SQLValueFunctionOp op; /* which function this is */ Oid type; /* result type/typmod */ int32 typmod; int location; /* token location, or -1 if unknown */ } SQLValueFunction; /* * XmlExpr - various SQL/XML functions requiring special grammar productions * * 'name' carries the "NAME foo" argument (already XML-escaped). * 'named_args' and 'arg_names' represent an xml_attribute list. * 'args' carries all other arguments. * * Note: result type/typmod/collation are not stored, but can be deduced * from the XmlExprOp. The type/typmod fields are just used for display * purposes, and are NOT necessarily the true result type of the node. */ typedef enum XmlExprOp { IS_XMLCONCAT, /* XMLCONCAT(args) */ IS_XMLELEMENT, /* XMLELEMENT(name, xml_attributes, args) */ IS_XMLFOREST, /* XMLFOREST(xml_attributes) */ IS_XMLPARSE, /* XMLPARSE(text, is_doc, preserve_ws) */ IS_XMLPI, /* XMLPI(name [, args]) */ IS_XMLROOT, /* XMLROOT(xml, version, standalone) */ IS_XMLSERIALIZE, /* XMLSERIALIZE(is_document, xmlval) */ IS_DOCUMENT /* xmlval IS DOCUMENT */ } XmlExprOp; typedef enum XmlOptionType { XMLOPTION_DOCUMENT, XMLOPTION_CONTENT } XmlOptionType; typedef struct XmlExpr { Expr xpr; XmlExprOp op; /* xml function ID */ char *name; /* name in xml(NAME foo ...) syntaxes */ List *named_args; /* non-XML expressions for xml_attributes */ List *arg_names; /* parallel list of String values */ List *args; /* list of expressions */ XmlOptionType xmloption; /* DOCUMENT or CONTENT */ Oid type; /* target type/typmod for XMLSERIALIZE */ int32 typmod; int location; /* token location, or -1 if unknown */ } XmlExpr; /* ---------------- * NullTest * * NullTest represents the operation of testing a value for NULLness. * The appropriate test is performed and returned as a boolean Datum. * * When argisrow is false, this simply represents a test for the null value. * * When argisrow is true, the input expression must yield a rowtype, and * the node implements "row IS [NOT] NULL" per the SQL standard. This * includes checking individual fields for NULLness when the row datum * itself isn't NULL. * * NOTE: the combination of a rowtype input and argisrow==false does NOT * correspond to the SQL notation "row IS [NOT] NULL"; instead, this case * represents the SQL notation "row IS [NOT] DISTINCT FROM NULL". * ---------------- */ typedef enum NullTestType { IS_NULL, IS_NOT_NULL } NullTestType; typedef struct NullTest { Expr xpr; Expr *arg; /* input expression */ NullTestType nulltesttype; /* IS NULL, IS NOT NULL */ bool argisrow; /* T to perform field-by-field null checks */ int location; /* token location, or -1 if unknown */ } NullTest; /* * BooleanTest * * BooleanTest represents the operation of determining whether a boolean * is TRUE, FALSE, or UNKNOWN (ie, NULL). All six meaningful combinations * are supported. Note that a NULL input does *not* cause a NULL result. * The appropriate test is performed and returned as a boolean Datum. */ typedef enum BoolTestType { IS_TRUE, IS_NOT_TRUE, IS_FALSE, IS_NOT_FALSE, IS_UNKNOWN, IS_NOT_UNKNOWN } BoolTestType; typedef struct BooleanTest { Expr xpr; Expr *arg; /* input expression */ BoolTestType booltesttype; /* test type */ int location; /* token location, or -1 if unknown */ } BooleanTest; /* * CoerceToDomain * * CoerceToDomain represents the operation of coercing a value to a domain * type. At runtime (and not before) the precise set of constraints to be * checked will be determined. If the value passes, it is returned as the * result; if not, an error is raised. Note that this is equivalent to * RelabelType in the scenario where no constraints are applied. */ typedef struct CoerceToDomain { Expr xpr; Expr *arg; /* input expression */ Oid resulttype; /* domain type ID (result type) */ int32 resulttypmod; /* output typmod (currently always -1) */ Oid resultcollid; /* OID of collation, or InvalidOid if none */ CoercionForm coercionformat; /* how to display this node */ int location; /* token location, or -1 if unknown */ } CoerceToDomain; /* * Placeholder node for the value to be processed by a domain's check * constraint. This is effectively like a Param, but can be implemented more * simply since we need only one replacement value at a time. * * Note: the typeId/typeMod/collation will be set from the domain's base type, * not the domain itself. This is because we shouldn't consider the value * to be a member of the domain if we haven't yet checked its constraints. */ typedef struct CoerceToDomainValue { Expr xpr; Oid typeId; /* type for substituted value */ int32 typeMod; /* typemod for substituted value */ Oid collation; /* collation for the substituted value */ int location; /* token location, or -1 if unknown */ } CoerceToDomainValue; /* * Placeholder node for a DEFAULT marker in an INSERT or UPDATE command. * * This is not an executable expression: it must be replaced by the actual * column default expression during rewriting. But it is convenient to * treat it as an expression node during parsing and rewriting. */ typedef struct SetToDefault { Expr xpr; Oid typeId; /* type for substituted value */ int32 typeMod; /* typemod for substituted value */ Oid collation; /* collation for the substituted value */ int location; /* token location, or -1 if unknown */ } SetToDefault; /* * Node representing [WHERE] CURRENT OF cursor_name * * CURRENT OF is a bit like a Var, in that it carries the rangetable index * of the target relation being constrained; this aids placing the expression * correctly during planning. We can assume however that its "levelsup" is * always zero, due to the syntactic constraints on where it can appear. * 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; Expr *expr; /* expression to evaluate */ AttrNumber resno; /* attribute number (see notes above) */ char *resname; /* name of the column (could be NULL) */ Index ressortgroupref; /* nonzero if referenced by a sort/group * clause */ Oid resorigtbl; /* OID of column's source table */ AttrNumber resorigcol; /* column's number in source table */ bool resjunk; /* set to true to eliminate the attribute from * final target list */ } TargetEntry; /* ---------------------------------------------------------------- * node types for join trees * * The leaves of a join tree structure are RangeTblRef nodes. Above * these, JoinExpr nodes can appear to denote a specific kind of join * or qualified join. Also, FromExpr nodes can appear to denote an * ordinary cross-product join ("FROM foo, bar, baz WHERE ..."). * FromExpr is like a JoinExpr of jointype JOIN_INNER, except that it * may have any number of child nodes, not just two. * * NOTE: the top level of a Query's jointree is always a FromExpr. * Even if the jointree contains no rels, there will be a FromExpr. * * NOTE: the qualification expressions present in JoinExpr nodes are * *in addition to* the query's main WHERE clause, which appears as the * qual of the top-level FromExpr. The reason for associating quals with * specific nodes in the jointree is that the position of a qual is critical * when outer joins are present. (If we enforce a qual too soon or too late, * that may cause the outer join to produce the wrong set of NULL-extended * rows.) If all joins are inner joins then all the qual positions are * semantically interchangeable. * * NOTE: in the raw output of gram.y, a join tree contains RangeVar, * RangeSubselect, and RangeFunction nodes, which are all replaced by * RangeTblRef nodes during the parse analysis phase. Also, the top-level * FromExpr is added during parse analysis; the grammar regards FROM and * WHERE as separate. * ---------------------------------------------------------------- */ /* * RangeTblRef - reference to an entry in the query's rangetable * * We could use direct pointers to the RT entries and skip having these * nodes, but multiple pointers to the same node in a querytree cause * lots of headaches, so it seems better to store an index into the RT. */ typedef struct RangeTblRef { NodeTag type; int rtindex; } RangeTblRef; /*---------- * JoinExpr - for SQL JOIN expressions * * isNatural, usingClause, and quals are interdependent. The user can write * only one of NATURAL, USING(), or ON() (this is enforced by the grammar). * If he writes NATURAL then parse analysis generates the equivalent USING() * list, and from that fills in "quals" with the right equality comparisons. * If he writes USING() then "quals" is filled with equality comparisons. * If he writes ON() then only "quals" is set. Note that NATURAL/USING * are not equivalent to ON() since they also affect the output column list. * * alias is an Alias node representing the AS alias-clause attached to the * join expression, or NULL if no clause. NB: presence or absence of the * alias has a critical impact on semantics, because a join with an alias * restricts visibility of the tables/columns inside it. * * 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 */ List *usingClause; /* USING clause, if any (list of String) */ Alias *join_using_alias; /* alias attached to USING clause, if any */ Node *quals; /* qualifiers on join, if any */ Alias *alias; /* user-written alias clause, if any */ int rtindex; /* RT index assigned for join, or 0 */ } JoinExpr; /*---------- * FromExpr - represents a FROM ... WHERE ... construct * * This is both more flexible than a JoinExpr (it can have any number of * children, including zero) and less so --- we don't need to deal with * aliases and so on. The output column set is implicitly just the union * of the outputs of the children. *---------- */ typedef struct FromExpr { NodeTag type; List *fromlist; /* List of join subtrees */ Node *quals; /* qualifiers on join, if any */ } FromExpr; /*---------- * OnConflictExpr - represents an ON CONFLICT DO ... expression * * The optimizer requires a list of inference elements, and optionally a WHERE * clause to infer a unique index. The unique index (or, occasionally, * indexes) inferred are used to arbitrate whether or not the alternative ON * CONFLICT path is taken. *---------- */ typedef struct OnConflictExpr { NodeTag type; OnConflictAction action; /* DO NOTHING or UPDATE? */ /* Arbiter */ List *arbiterElems; /* unique index arbiter list (of * InferenceElem's) */ Node *arbiterWhere; /* unique index arbiter WHERE clause */ Oid constraint; /* pg_constraint OID for arbiter */ /* ON CONFLICT UPDATE */ List *onConflictSet; /* List of ON CONFLICT SET TargetEntrys */ Node *onConflictWhere; /* qualifiers to restrict UPDATE to */ int exclRelIndex; /* RT index of 'excluded' relation */ List *exclRelTlist; /* tlist of the EXCLUDED pseudo relation */ } OnConflictExpr; #endif /* PRIMNODES_H */ pg_query-4.2.3/ext/pg_query/include/nodes/extensible.h0000644000004100000410000001277514510636647023134 0ustar www-datawww-data/*------------------------------------------------------------------------- * * extensible.h * Definitions for extensible nodes and custom scans * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/extensible.h * *------------------------------------------------------------------------- */ #ifndef EXTENSIBLE_H #define EXTENSIBLE_H #include "access/parallel.h" #include "commands/explain.h" #include "nodes/execnodes.h" #include "nodes/pathnodes.h" #include "nodes/plannodes.h" /* maximum length of an extensible node identifier */ #define EXTNODENAME_MAX_LEN 64 /* * An extensible node is a new type of node defined by an extension. The * type is always T_ExtensibleNode, while the extnodename identifies the * specific type of node. extnodename can be looked up to find the * ExtensibleNodeMethods for this node type. */ typedef struct ExtensibleNode { NodeTag type; const char *extnodename; /* identifier of ExtensibleNodeMethods */ } ExtensibleNode; /* * node_size is the size of an extensible node of this type in bytes. * * nodeCopy is a function which performs a deep copy from oldnode to newnode. * It does not need to copy type or extnodename, which are copied by the * core system. * * nodeEqual is a function which performs a deep equality comparison between * a and b and returns true or false accordingly. It does not need to compare * type or extnodename, which are compared by the core system. * * nodeOut is a serialization function for the node type. It should use the * output conventions typical for outfuncs.c. It does not need to output * type or extnodename; the core system handles those. * * nodeRead is a deserialization function for the node type. It does not need * to read type or extnodename; the core system handles those. It should fetch * the next token using pg_strtok() from the current input stream, and then * reconstruct the private fields according to the manner in readfuncs.c. * * All callbacks are mandatory. */ typedef struct ExtensibleNodeMethods { const char *extnodename; Size node_size; void (*nodeCopy) (struct ExtensibleNode *newnode, const struct ExtensibleNode *oldnode); bool (*nodeEqual) (const struct ExtensibleNode *a, const struct ExtensibleNode *b); void (*nodeOut) (struct StringInfoData *str, const struct ExtensibleNode *node); void (*nodeRead) (struct ExtensibleNode *node); } ExtensibleNodeMethods; extern void RegisterExtensibleNodeMethods(const ExtensibleNodeMethods *method); extern const ExtensibleNodeMethods *GetExtensibleNodeMethods(const char *name, bool missing_ok); /* * Flags for custom paths, indicating what capabilities the resulting scan * will have. 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 */ pg_query-4.2.3/ext/pg_query/include/nodes/bitmapset.h0000644000004100000410000001047614510636647022756 0ustar www-datawww-data/*------------------------------------------------------------------------- * * bitmapset.h * PostgreSQL generic bitmap set package * * A bitmap set can represent any set of nonnegative integers, although * it is mainly intended for sets where the maximum value is not large, * say at most a few hundred. By convention, a NULL pointer is always * accepted by all operations to represent the empty set. (But beware * that this is not the only representation of the empty set. Use * bms_is_empty() in preference to testing for NULL.) * * * Copyright (c) 2003-2022, PostgreSQL Global Development Group * * src/include/nodes/bitmapset.h * *------------------------------------------------------------------------- */ #ifndef BITMAPSET_H #define BITMAPSET_H /* * Forward decl to save including pg_list.h */ struct List; /* * Data representation * * Larger bitmap word sizes generally give better performance, so long as * they're not wider than the processor can handle efficiently. We use * 64-bit words if pointers are that large, else 32-bit words. */ #if SIZEOF_VOID_P >= 8 #define BITS_PER_BITMAPWORD 64 typedef uint64 bitmapword; /* must be an unsigned type */ typedef int64 signedbitmapword; /* must be the matching signed type */ #else #define BITS_PER_BITMAPWORD 32 typedef uint32 bitmapword; /* must be an unsigned type */ typedef int32 signedbitmapword; /* must be the matching signed type */ #endif typedef struct Bitmapset { int nwords; /* number of words in array */ bitmapword words[FLEXIBLE_ARRAY_MEMBER]; /* really [nwords] */ } Bitmapset; /* result of bms_subset_compare */ typedef enum { BMS_EQUAL, /* sets are equal */ BMS_SUBSET1, /* first set is a subset of the second */ BMS_SUBSET2, /* second set is a subset of the first */ BMS_DIFFERENT /* neither set is a subset of the other */ } BMS_Comparison; /* result of bms_membership */ typedef enum { BMS_EMPTY_SET, /* 0 members */ BMS_SINGLETON, /* 1 member */ BMS_MULTIPLE /* >1 member */ } BMS_Membership; /* * function prototypes in nodes/bitmapset.c */ extern Bitmapset *bms_copy(const Bitmapset *a); extern bool bms_equal(const Bitmapset *a, const Bitmapset *b); extern int bms_compare(const Bitmapset *a, const Bitmapset *b); extern Bitmapset *bms_make_singleton(int x); extern void bms_free(Bitmapset *a); extern Bitmapset *bms_union(const Bitmapset *a, const Bitmapset *b); extern Bitmapset *bms_intersect(const Bitmapset *a, const Bitmapset *b); extern Bitmapset *bms_difference(const Bitmapset *a, const Bitmapset *b); extern bool bms_is_subset(const Bitmapset *a, const Bitmapset *b); extern BMS_Comparison bms_subset_compare(const Bitmapset *a, const Bitmapset *b); extern bool bms_is_member(int x, const Bitmapset *a); extern int bms_member_index(Bitmapset *a, int x); extern bool bms_overlap(const Bitmapset *a, const Bitmapset *b); extern bool bms_overlap_list(const Bitmapset *a, const struct List *b); extern bool bms_nonempty_difference(const Bitmapset *a, const Bitmapset *b); extern int bms_singleton_member(const Bitmapset *a); extern bool bms_get_singleton_member(const Bitmapset *a, int *member); extern int bms_num_members(const Bitmapset *a); /* optimized tests when we don't need to know exact membership count: */ extern BMS_Membership bms_membership(const Bitmapset *a); extern bool bms_is_empty(const Bitmapset *a); /* these routines recycle (modify or free) their non-const inputs: */ extern Bitmapset *bms_add_member(Bitmapset *a, int x); extern Bitmapset *bms_del_member(Bitmapset *a, int x); extern Bitmapset *bms_add_members(Bitmapset *a, const Bitmapset *b); extern Bitmapset *bms_add_range(Bitmapset *a, int lower, int upper); extern Bitmapset *bms_int_members(Bitmapset *a, const Bitmapset *b); extern Bitmapset *bms_del_members(Bitmapset *a, const Bitmapset *b); extern Bitmapset *bms_join(Bitmapset *a, Bitmapset *b); /* support for iterating through the integer elements of a set: */ extern int bms_first_member(Bitmapset *a); extern int bms_next_member(const Bitmapset *a, int prevbit); extern int bms_prev_member(const Bitmapset *a, int prevbit); /* support for hashtables using Bitmapsets as keys: */ extern uint32 bms_hash_value(const Bitmapset *a); extern uint32 bitmap_hash(const void *key, Size keysize); extern int bitmap_match(const void *key1, const void *key2, Size keysize); #endif /* BITMAPSET_H */ pg_query-4.2.3/ext/pg_query/include/nodes/makefuncs.h0000644000004100000410000000671014510636647022736 0ustar www-datawww-data/*------------------------------------------------------------------------- * * makefuncs.h * prototypes for the creator functions of various nodes * * * Portions Copyright (c) 1996-2022, 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); extern DefElem *makeDefElem(char *name, Node *arg, int location); extern DefElem *makeDefElemExtended(char *nameSpace, char *name, Node *arg, DefElemAction defaction, int location); extern GroupingSet *makeGroupingSet(GroupingSetKind kind, List *content, int location); extern VacuumRelation *makeVacuumRelation(RangeVar *relation, Oid oid, List *va_cols); #endif /* MAKEFUNC_H */ pg_query-4.2.3/ext/pg_query/include/nodes/memnodes.h0000644000004100000410000000767614510636647022605 0ustar www-datawww-data/*------------------------------------------------------------------------- * * memnodes.h * POSTGRES memory context node definitions. * * * Portions Copyright (c) 1996-2022, 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 { void *(*alloc) (MemoryContext context, Size size); /* call this free_p in case someone #define's free() */ void (*free_p) (MemoryContext context, void *pointer); void *(*realloc) (MemoryContext context, void *pointer, Size size); void (*reset) (MemoryContext context); void (*delete_context) (MemoryContext context); Size (*get_chunk_space) (MemoryContext context, void *pointer); bool (*is_empty) (MemoryContext context); void (*stats) (MemoryContext context, MemoryStatsPrintFunc printfunc, void *passthru, MemoryContextCounters *totals, bool print_to_stderr); #ifdef MEMORY_CONTEXT_CHECKING void (*check) (MemoryContext context); #endif } MemoryContextMethods; typedef struct MemoryContextData { NodeTag type; /* identifies exact kind of context */ /* these two fields are placed here to minimize alignment wastage: */ bool isReset; /* T = no space alloced since last reset */ bool allowInCritSection; /* allow palloc in critical section */ Size mem_allocated; /* track memory allocated for this context */ const MemoryContextMethods *methods; /* virtual function table */ MemoryContext parent; /* NULL if no parent (toplevel context) */ MemoryContext firstchild; /* head of linked list of children */ MemoryContext prevchild; /* previous child of same parent */ MemoryContext nextchild; /* next child of same parent */ const char *name; /* context name (just for debugging) */ const char *ident; /* context ID if any (just for debugging) */ MemoryContextCallback *reset_cbs; /* list of reset/delete callbacks */ } MemoryContextData; /* utils/palloc.h contains typedef struct MemoryContextData *MemoryContext */ /* * MemoryContextIsValid * True iff memory context is valid. * * Add new context types to the set accepted by this macro. */ #define MemoryContextIsValid(context) \ ((context) != NULL && \ (IsA((context), AllocSetContext) || \ IsA((context), SlabContext) || \ IsA((context), GenerationContext))) #endif /* MEMNODES_H */ pg_query-4.2.3/ext/pg_query/include/nodes/pathnodes.h0000644000004100000410000034216214510636647022753 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pathnodes.h * Definitions for planner's internal data structures, especially Paths. * * * Portions Copyright (c) 1996-2022, 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. *---------- */ typedef struct PlannerGlobal { NodeTag type; ParamListInfo boundParams; /* Param values provided to planner() */ List *subplans; /* Plans for SubPlan nodes */ List *subroots; /* PlannerInfos for SubPlan nodes */ Bitmapset *rewindPlanIDs; /* indices of subplans that require REWIND */ List *finalrtable; /* "flat" rangetable for executor */ List *finalrowmarks; /* "flat" list of PlanRowMarks */ List *resultRelations; /* "flat" list of integer RT indexes */ List *appendRelations; /* "flat" list of AppendRelInfos */ List *relationOids; /* OIDs of relations the plan depends on */ List *invalItems; /* other dependencies, as PlanInvalItems */ List *paramExecTypes; /* type OIDs for PARAM_EXEC Params */ Index lastPHId; /* highest PlaceHolderVar ID assigned */ Index lastRowMarkId; /* highest PlanRowMark ID assigned */ int lastPlanNodeId; /* highest plan node ID assigned */ bool transientPlan; /* redo plan when TransactionXmin changes? */ bool dependsOnRole; /* is plan specific to current role? */ bool parallelModeOK; /* parallel mode potentially OK? */ bool parallelModeNeeded; /* parallel mode actually required? */ char maxParallelHazard; /* worst PROPARALLEL hazard level */ PartitionDirectory partition_directory; /* partition descriptors */ } PlannerGlobal; /* macro for fetching the Plan associated with a SubPlan node */ #define planner_subplan_get_plan(root, subplan) \ ((Plan *) list_nth((root)->glob->subplans, (subplan)->plan_id - 1)) /*---------- * PlannerInfo * Per-query information for planning/optimization * * This struct is conventionally called "root" in all the planner routines. * It holds links to all of the planner's working state, in addition to the * original Query. Note that at present the planner extensively modifies * the passed-in Query data structure; someday that should stop. * * For reasons explained in optimizer/optimizer.h, we define the typedef * either here or in that header, whichever is read first. *---------- */ #ifndef HAVE_PLANNERINFO_TYPEDEF typedef struct PlannerInfo PlannerInfo; #define HAVE_PLANNERINFO_TYPEDEF 1 #endif struct PlannerInfo { NodeTag type; Query *parse; /* the Query being planned */ PlannerGlobal *glob; /* global info for current planner run */ Index query_level; /* 1 at the outermost Query */ PlannerInfo *parent_root; /* NULL at outermost Query */ /* * plan_params contains the expressions that this query level needs to * make available to a lower query level that is currently being planned. * outer_params contains the paramIds of PARAM_EXEC Params that outer * query levels will make available to this query level. */ List *plan_params; /* list of PlannerParamItems, see below */ Bitmapset *outer_params; /* * simple_rel_array holds pointers to "base rels" and "other rels" (see * comments for RelOptInfo for more info). It is indexed by rangetable * index (so entry 0 is always wasted). Entries can be NULL when an RTE * does not correspond to a base relation, such as a join RTE or an * unreferenced view RTE; or if the RelOptInfo hasn't been made yet. */ struct RelOptInfo **simple_rel_array; /* All 1-rel RelOptInfos */ int simple_rel_array_size; /* allocated size of array */ /* * simple_rte_array is the same length as simple_rel_array and holds * pointers to the associated rangetable entries. Using this is a shade * faster than using rt_fetch(), mostly due to fewer indirections. */ RangeTblEntry **simple_rte_array; /* rangetable as an array */ /* * append_rel_array is the same length as the above arrays, and holds * pointers to the corresponding AppendRelInfo entry indexed by * child_relid, or NULL if the rel is not an appendrel child. The array * itself is not allocated if append_rel_list is empty. */ struct AppendRelInfo **append_rel_array; /* * all_baserels is a Relids set of all base relids (but not "other" * relids) in the query; that is, the Relids identifier of the final join * we need to form. This is computed in make_one_rel, just before we * start making Paths. */ Relids all_baserels; /* * nullable_baserels is a Relids set of base relids that are nullable by * some outer join in the jointree; these are rels that are potentially * nullable below the WHERE clause, SELECT targetlist, etc. This is * computed in deconstruct_jointree. */ Relids nullable_baserels; /* * join_rel_list is a list of all join-relation RelOptInfos we have * considered in this planning run. For small problems we just scan the * list to do lookups, but when there are many join relations we build a * hash table for faster lookups. The hash table is present and valid * when join_rel_hash is not NULL. Note that we still maintain the list * even when using the hash table for lookups; this simplifies life for * GEQO. */ List *join_rel_list; /* list of join-relation RelOptInfos */ struct HTAB *join_rel_hash; /* optional hashtable for join relations */ /* * When doing a dynamic-programming-style join search, join_rel_level[k] * is a list of all join-relation RelOptInfos of level k, and * join_cur_level is the current level. New join-relation RelOptInfos are * automatically added to the join_rel_level[join_cur_level] list. * join_rel_level is NULL if not in use. */ List **join_rel_level; /* lists of join-relation RelOptInfos */ int join_cur_level; /* index of list being extended */ List *init_plans; /* init SubPlans for query */ List *cte_plan_ids; /* per-CTE-item list of subplan IDs (or -1 if * no subplan was made for that CTE) */ List *multiexpr_params; /* List of Lists of Params for MULTIEXPR * subquery outputs */ List *eq_classes; /* list of active EquivalenceClasses */ bool ec_merging_done; /* set true once ECs are canonical */ List *canon_pathkeys; /* list of "canonical" PathKeys */ List *left_join_clauses; /* list of RestrictInfos for mergejoinable * outer join clauses w/nonnullable var on * left */ List *right_join_clauses; /* list of RestrictInfos for mergejoinable * outer join clauses w/nonnullable var on * right */ List *full_join_clauses; /* list of RestrictInfos for mergejoinable * full join clauses */ List *join_info_list; /* list of SpecialJoinInfos */ /* * 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. */ Relids all_result_relids; /* set of all result relids */ Relids leaf_result_relids; /* set of all leaf relids */ /* * Note: for AppendRelInfos describing partitions of a partitioned table, * we guarantee that partitions that come earlier in the partitioned * table's PartitionDesc will appear earlier in append_rel_list. */ List *append_rel_list; /* list of AppendRelInfos */ List *row_identity_vars; /* list of RowIdentityVarInfos */ List *rowMarks; /* list of PlanRowMarks */ List *placeholder_list; /* list of PlaceHolderInfos */ List *fkey_list; /* list of ForeignKeyOptInfos */ List *query_pathkeys; /* desired pathkeys for query_planner() */ List *group_pathkeys; /* groupClause pathkeys, if any */ List *window_pathkeys; /* pathkeys of bottom window, if any */ List *distinct_pathkeys; /* distinctClause pathkeys, if any */ List *sort_pathkeys; /* sortClause pathkeys, if any */ List *part_schemes; /* Canonicalised partition schemes used in the * query. */ List *initial_rels; /* RelOptInfos we are now trying to join */ /* Use fetch_upper_rel() to get any particular upper rel */ List *upper_rels[UPPERREL_FINAL + 1]; /* upper-rel RelOptInfos */ /* Result tlists chosen by grouping_planner for upper-stage processing */ struct PathTarget *upper_targets[UPPERREL_FINAL + 1]; /* * The fully-processed targetlist is kept here. It differs from * parse->targetList in that (for INSERT) 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 */ AttrNumber *grouping_map; /* for GroupingFunc fixup */ List *minmax_aggs; /* List of MinMaxAggInfos */ MemoryContext planner_cxt; /* context holding PlannerInfo */ Cardinality total_table_pages; /* # of pages in all non-dummy tables of * query */ Selectivity tuple_fraction; /* tuple_fraction passed to query_planner */ Cardinality limit_tuples; /* limit_tuples passed to query_planner */ Index qual_security_level; /* minimum security_level for quals */ /* Note: qual_security_level is zero if there are no securityQuals */ bool hasJoinRTEs; /* true if any RTEs are RTE_JOIN kind */ bool hasLateralRTEs; /* true if any RTEs are marked LATERAL */ bool hasHavingQual; /* true if havingQual was non-null */ bool hasPseudoConstantQuals; /* true if any RestrictInfo has * pseudoconstant = true */ bool hasAlternativeSubPlans; /* true if we've made any of those */ bool hasRecursion; /* true if planning a recursive WITH item */ /* * Information about aggregates. Filled by preprocess_aggrefs(). */ List *agginfos; /* AggInfo structs */ List *aggtransinfos; /* AggTransInfo structs */ int numOrderedAggs; /* number w/ DISTINCT/ORDER BY/WITHIN GROUP */ bool hasNonPartialAggs; /* does any agg not support partial mode? */ bool hasNonSerialAggs; /* is any partial agg non-serializable? */ /* These fields are used only when hasRecursion is true: */ int wt_param_id; /* PARAM_EXEC ID for the work table */ struct Path *non_recursive_path; /* a path for non-recursive term */ /* These fields are workspace for createplan.c */ Relids curOuterRels; /* outer rels above current node */ List *curOuterParams; /* not-yet-assigned NestLoopParams */ /* These fields are workspace for setrefs.c */ bool *isAltSubplan; /* array corresponding to glob->subplans */ bool *isUsedSubplan; /* array corresponding to glob->subplans */ /* optional private data for join_search_hook, e.g., GEQO */ void *join_search_private; /* Does this query modify any partition key columns? */ bool partColsUpdated; }; /* * In places where it's known that simple_rte_array[] must have been prepared * already, we just index into it to fetch RTEs. In code that might be * executed before or after entering query_planner(), use this macro. */ #define planner_rt_fetch(rti, root) \ ((root)->simple_rte_array ? (root)->simple_rte_array[rti] : \ rt_fetch(rti, (root)->parse->rtable)) /* * If multiple relations are partitioned the same way, all such partitions * will have a pointer to the same PartitionScheme. A list of PartitionScheme * objects is attached to the PlannerInfo. By design, the partition scheme * incorporates only the general properties of the partition method (LIST vs. * RANGE, number of partitioning columns and the type information for each) * and not the specific bounds. * * We store the opclass-declared input data types instead of the partition key * datatypes since the former rather than the latter are used to compare * partition bounds. Since partition key data types and the opclass declared * input data types are expected to be binary compatible (per ResolveOpClass), * both of those should have same byval and length properties. */ typedef struct PartitionSchemeData { char strategy; /* partition strategy */ int16 partnatts; /* number of partition attributes */ Oid *partopfamily; /* OIDs of operator families */ Oid *partopcintype; /* OIDs of opclass declared input data types */ Oid *partcollation; /* OIDs of partitioning collations */ /* Cached information about partition key data types. */ int16 *parttyplen; bool *parttypbyval; /* Cached information about partition comparison functions. */ struct FmgrInfo *partsupfunc; } PartitionSchemeData; typedef struct PartitionSchemeData *PartitionScheme; /*---------- * RelOptInfo * Per-relation information for planning/optimization * * For planning purposes, a "base rel" is either a plain relation (a table) * or the output of a sub-SELECT or function that appears in the range table. * In either case it is uniquely identified by an RT index. A "joinrel" * is the joining of two or more base rels. A joinrel is identified by * the set of RT indexes for its component baserels. We create RelOptInfo * nodes for each baserel and joinrel, and store them in the PlannerInfo's * simple_rel_array and join_rel_list respectively. * * Note that there is only one joinrel for any given set of component * baserels, no matter what order we assemble them in; so an unordered * set is the right datatype to identify it with. * * We also have "other rels", which are like base rels in that they refer to * single RT indexes; but they are not part of the join tree, and are given * a different RelOptKind to identify them. * Currently the only kind of otherrels are those made for member relations * of an "append relation", that is an inheritance set or UNION ALL subquery. * An append relation has a parent RTE that is a base rel, which represents * the entire append relation. The member RTEs are otherrels. The parent * is present in the query join tree but the members are not. The member * RTEs and otherrels are used to plan the scans of the individual tables or * subqueries of the append set; then the parent baserel is given Append * and/or MergeAppend paths comprising the best paths for the individual * member rels. (See comments for AppendRelInfo for more information.) * * At one time we also made otherrels to represent join RTEs, for use in * handling join alias Vars. Currently this is not needed because all join * alias Vars are expanded to non-aliased form during preprocess_expression. * * We also have relations representing joins between child relations of * different partitioned tables. These relations are not added to * join_rel_level lists as they are not joined directly by the dynamic * programming algorithm. * * There is also a RelOptKind for "upper" relations, which are RelOptInfos * that describe post-scan/join processing steps, such as aggregation. * Many of the fields in these RelOptInfos are meaningless, but their Path * fields always hold Paths showing ways to do that processing step. * * Lastly, there is a RelOptKind for "dead" relations, which are base rels * that we have proven we don't need to join after all. * * Parts of this data structure are specific to various scan and join * mechanisms. It didn't seem worth creating new node types for them. * * relids - Set of base-relation identifiers; it is a base relation * if there is just one, a join relation if more than one * rows - estimated number of tuples in the relation after restriction * clauses have been applied (ie, output rows of a plan for it) * consider_startup - true if there is any value in keeping plain paths for * this rel on the basis of having cheap startup cost * consider_param_startup - the same for parameterized paths * reltarget - Default Path output tlist for this rel; normally contains * Var and PlaceHolderVar nodes for the values we need to * output from this relation. * List is in no particular order, but all rels of an * appendrel set must use corresponding orders. * NOTE: in an appendrel child relation, may contain * arbitrary expressions pulled up from a subquery! * pathlist - List of Path nodes, one for each potentially useful * method of generating the relation * ppilist - ParamPathInfo nodes for parameterized Paths, if any * cheapest_startup_path - the pathlist member with lowest startup cost * (regardless of ordering) among the unparameterized paths; * or NULL if there is no unparameterized path * cheapest_total_path - the pathlist member with lowest total cost * (regardless of ordering) among the unparameterized paths; * or if there is no unparameterized path, the path with lowest * total cost among the paths with minimum parameterization * cheapest_unique_path - for caching cheapest path to produce unique * (no duplicates) output from relation; NULL if not yet requested * cheapest_parameterized_paths - best paths for their parameterizations; * always includes cheapest_total_path, even if that's unparameterized * direct_lateral_relids - rels this rel has direct LATERAL references to * lateral_relids - required outer rels for LATERAL, as a Relids set * (includes both direct and indirect lateral references) * * If the relation is a base relation it will have these fields set: * * relid - RTE index (this is redundant with the relids field, but * is provided for convenience of access) * rtekind - copy of RTE's rtekind field * min_attr, max_attr - range of valid AttrNumbers for rel * attr_needed - array of bitmapsets indicating the highest joinrel * in which each attribute is needed; if bit 0 is set then * the attribute is needed as part of final targetlist * attr_widths - cache space for per-attribute width estimates; * zero means not computed yet * lateral_vars - lateral cross-references of rel, if any (list of * Vars and PlaceHolderVars) * lateral_referencers - relids of rels that reference this one laterally * (includes both direct and indirect lateral references) * indexlist - list of IndexOptInfo nodes for relation's indexes * (always NIL if it's not a table) * pages - number of disk pages in relation (zero if not a table) * tuples - number of tuples in relation (not considering restrictions) * allvisfrac - fraction of disk pages that are marked all-visible * eclass_indexes - EquivalenceClasses that mention this rel (filled * only after EC merging is complete) * subroot - PlannerInfo for subquery (NULL if it's not a subquery) * subplan_params - list of PlannerParamItems to be passed to subquery * * Note: for a subquery, tuples and subroot are not set immediately * upon creation of the RelOptInfo object; they are filled in when * set_subquery_pathlist processes the object. * * For otherrels that are appendrel members, these fields are filled * in just as for a baserel, except we don't bother with lateral_vars. * * If the relation is either a foreign table or a join of foreign tables that * all belong to the same foreign server and are assigned to the same user to * check access permissions as (cf checkAsUser), these fields will be set: * * serverid - OID of foreign server, if foreign table (else InvalidOid) * userid - OID of user to check access as (InvalidOid means current user) * useridiscurrent - we've assumed that userid equals current user * fdwroutine - function hooks for FDW, if foreign table (else NULL) * fdw_private - private state for FDW, if foreign table (else NULL) * * Two fields are used to cache knowledge acquired during the join search * about whether this rel is provably unique when being joined to given other * relation(s), ie, it can have at most one row matching any given row from * that join relation. Currently we only attempt such proofs, and thus only * populate these fields, for base rels; but someday they might be used for * join rels too: * * unique_for_rels - list of Relid sets, each one being a set of other * rels for which this one has been proven unique * non_unique_for_rels - list of Relid sets, each one being a set of * other rels for which we have tried and failed to prove * this one unique * * The presence of the following fields depends on the restrictions * and joins that the relation participates in: * * baserestrictinfo - List of RestrictInfo nodes, containing info about * each non-join qualification clause in which this relation * participates (only used for base rels) * baserestrictcost - Estimated cost of evaluating the baserestrictinfo * clauses at a single tuple (only used for base rels) * baserestrict_min_security - Smallest security_level found among * clauses in baserestrictinfo * joininfo - List of RestrictInfo nodes, containing info about each * join clause in which this relation participates (but * note this excludes clauses that might be derivable from * EquivalenceClasses) * has_eclass_joins - flag that EquivalenceClass joins are possible * * Note: Keeping a restrictinfo list in the RelOptInfo is useful only for * base rels, because for a join rel the set of clauses that are treated as * restrict clauses varies depending on which sub-relations we choose to join. * (For example, in a 3-base-rel join, a clause relating rels 1 and 2 must be * treated as a restrictclause if we join {1} and {2 3} to make {1 2 3}; but * if we join {1 2} and {3} then that clause will be a restrictclause in {1 2} * and should not be processed again at the level of {1 2 3}.) Therefore, * the restrictinfo list in the join case appears in individual JoinPaths * (field joinrestrictinfo), not in the parent relation. But it's OK for * the RelOptInfo to store the joininfo list, because that is the same * for a given rel no matter how we form it. * * We store baserestrictcost in the RelOptInfo (for base relations) because * we know we will need it at least once (to price the sequential scan) * and may need it multiple times to price index scans. * * A join relation is considered to be partitioned if it is formed from a * join of two relations that are partitioned, have matching partitioning * schemes, and are joined on an equijoin of the partitioning columns. * Under those conditions we can consider the join relation to be partitioned * by either relation's partitioning keys, though some care is needed if * either relation can be forced to null by outer-joining. For example, an * outer join like (A LEFT JOIN B ON A.a = B.b) may produce rows with B.b * NULL. These rows may not fit the partitioning conditions imposed on B. * Hence, strictly speaking, the join is not partitioned by B.b and thus * partition keys of an outer join should include partition key expressions * from the non-nullable side only. However, if a subsequent join uses * strict comparison operators (and all commonly-used equijoin operators are * strict), the presence of nulls doesn't cause a problem: such rows couldn't * match anything on the other side and thus they don't create a need to do * any cross-partition sub-joins. Hence we can treat such values as still * partitioning the join output for the purpose of additional partitionwise * joining, so long as a strict join operator is used by the next join. * * If the relation is partitioned, these fields will be set: * * part_scheme - Partitioning scheme of the relation * nparts - Number of partitions * boundinfo - Partition bounds * partbounds_merged - true if partition bounds are merged ones * partition_qual - Partition constraint if not the root * part_rels - RelOptInfos for each partition * all_partrels - Relids set of all partition relids * partexprs, nullable_partexprs - Partition key expressions * * 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. *---------- */ /* 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, RELOPT_DEADREL } RelOptKind; /* * Is the given relation a simple relation i.e a base or "other" member * relation? */ #define IS_SIMPLE_REL(rel) \ ((rel)->reloptkind == RELOPT_BASEREL || \ (rel)->reloptkind == RELOPT_OTHER_MEMBER_REL) /* Is the given relation a join relation? */ #define IS_JOIN_REL(rel) \ ((rel)->reloptkind == RELOPT_JOINREL || \ (rel)->reloptkind == RELOPT_OTHER_JOINREL) /* Is the given relation an upper relation? */ #define IS_UPPER_REL(rel) \ ((rel)->reloptkind == RELOPT_UPPER_REL || \ (rel)->reloptkind == RELOPT_OTHER_UPPER_REL) /* Is the given relation an "other" relation? */ #define IS_OTHER_REL(rel) \ ((rel)->reloptkind == RELOPT_OTHER_MEMBER_REL || \ (rel)->reloptkind == RELOPT_OTHER_JOINREL || \ (rel)->reloptkind == RELOPT_OTHER_UPPER_REL) typedef struct RelOptInfo { NodeTag type; RelOptKind reloptkind; /* all relations included in this RelOptInfo */ Relids relids; /* set of base relids (rangetable indexes) */ /* size estimates generated by planner */ Cardinality rows; /* estimated number of result tuples */ /* per-relation planner control flags */ bool consider_startup; /* keep cheap-startup-cost paths? */ bool consider_param_startup; /* ditto, for parameterized paths? */ bool consider_parallel; /* consider parallel paths? */ /* default result targetlist for Paths scanning this relation */ struct PathTarget *reltarget; /* list of Vars/Exprs, cost, width */ /* materialization information */ List *pathlist; /* Path structures */ List *ppilist; /* ParamPathInfos used in pathlist */ List *partial_pathlist; /* partial Paths */ struct Path *cheapest_startup_path; struct Path *cheapest_total_path; struct Path *cheapest_unique_path; List *cheapest_parameterized_paths; /* parameterization information needed for both base rels and join rels */ /* (see also lateral_vars and lateral_referencers) */ Relids direct_lateral_relids; /* rels directly laterally referenced */ Relids lateral_relids; /* minimum parameterization of rel */ /* information about a base rel (not set for join rels!) */ Index relid; Oid reltablespace; /* containing tablespace */ RTEKind rtekind; /* RELATION, SUBQUERY, FUNCTION, etc */ AttrNumber min_attr; /* smallest attrno of rel (often <0) */ AttrNumber max_attr; /* largest attrno of rel */ Relids *attr_needed; /* array indexed [min_attr .. max_attr] */ int32 *attr_widths; /* array indexed [min_attr .. max_attr] */ List *lateral_vars; /* LATERAL Vars and PHVs referenced by rel */ Relids lateral_referencers; /* rels that reference me laterally */ List *indexlist; /* list of IndexOptInfo */ List *statlist; /* list of StatisticExtInfo */ BlockNumber pages; /* size estimates derived from pg_class */ Cardinality tuples; double allvisfrac; Bitmapset *eclass_indexes; /* Indexes in PlannerInfo's eq_classes list of * ECs that mention this rel */ PlannerInfo *subroot; /* if subquery */ List *subplan_params; /* if subquery */ int rel_parallel_workers; /* wanted number of parallel workers */ uint32 amflags; /* Bitmask of optional features supported by * the table AM */ /* Information about foreign tables and foreign joins */ Oid serverid; /* identifies server for the table or join */ Oid userid; /* identifies user to check access as */ bool useridiscurrent; /* join is only valid for current user */ /* use "struct FdwRoutine" to avoid including fdwapi.h here */ struct FdwRoutine *fdwroutine; void *fdw_private; /* cache space for remembering if we have proven this relation unique */ List *unique_for_rels; /* known unique for these other relid * set(s) */ List *non_unique_for_rels; /* known not unique for these set(s) */ /* used by various scans and joins: */ List *baserestrictinfo; /* RestrictInfo structures (if base rel) */ QualCost baserestrictcost; /* cost of evaluating the above */ Index baserestrict_min_security; /* min security_level found in * baserestrictinfo */ List *joininfo; /* RestrictInfo structures for join clauses * involving this rel */ bool has_eclass_joins; /* T means joininfo is incomplete */ /* used by partitionwise joins: */ bool consider_partitionwise_join; /* consider partitionwise join * paths? (if partitioned rel) */ Relids top_parent_relids; /* Relids of topmost parents (if "other" * rel) */ /* used for partitioned relations: */ PartitionScheme part_scheme; /* Partitioning scheme */ int nparts; /* Number of partitions; -1 if not yet set; in * case of a join relation 0 means it's * considered unpartitioned */ struct PartitionBoundInfoData *boundinfo; /* Partition bounds */ bool partbounds_merged; /* True if partition bounds were created * by partition_bounds_merge() */ List *partition_qual; /* Partition constraint, if not the root */ struct RelOptInfo **part_rels; /* Array of RelOptInfos of partitions, * stored in the same order as bounds */ Bitmapset *live_parts; /* Bitmap with members acting as indexes into * the part_rels[] array to indicate which * partitions survived partition pruning. */ Relids all_partrels; /* Relids set of all partition relids */ List **partexprs; /* Non-nullable partition key expressions */ List **nullable_partexprs; /* Nullable partition key expressions */ } RelOptInfo; /* * Is given relation partitioned? * * It's not enough to test whether rel->part_scheme is set, because it might * be that the basic partitioning properties of the input relations matched * but the partition bounds did not. Also, if we are able to prove a rel * dummy (empty), we should henceforth treat it as unpartitioned. */ #define IS_PARTITIONED_REL(rel) \ ((rel)->part_scheme && (rel)->boundinfo && (rel)->nparts > 0 && \ (rel)->part_rels && !IS_DUMMY_REL(rel)) /* * Convenience macro to make sure that a partitioned relation has all the * required members set. */ #define REL_HAS_ALL_PART_PROPS(rel) \ ((rel)->part_scheme && (rel)->boundinfo && (rel)->nparts > 0 && \ (rel)->part_rels && (rel)->partexprs && (rel)->nullable_partexprs) /* * IndexOptInfo * Per-index information for planning/optimization * * indexkeys[], indexcollations[] each have ncolumns entries. * opfamily[], and opcintype[] each have nkeycolumns entries. They do * not contain any information about included attributes. * * sortopfamily[], reverse_sort[], and nulls_first[] have * nkeycolumns entries, if the index is ordered; but if it is unordered, * those pointers are NULL. * * Zeroes in the indexkeys[] array indicate index columns that are * expressions; there is one element in indexprs for each such column. * * For an ordered index, reverse_sort[] and nulls_first[] describe the * sort ordering of a forward indexscan; we can also consider a backward * indexscan, which will generate the reverse ordering. * * The indexprs and indpred expressions have been run through * prepqual.c and eval_const_expressions() for ease of matching to * WHERE clauses. indpred is in implicit-AND form. * * indextlist is a TargetEntry list representing the index columns. * It provides an equivalent base-relation Var for each simple column, * and links to the matching indexprs element for each expression column. * * While most of these fields are filled when the IndexOptInfo is created * (by plancat.c), indrestrictinfo and predOK are set later, in * check_index_predicates(). */ #ifndef HAVE_INDEXOPTINFO_TYPEDEF typedef struct IndexOptInfo IndexOptInfo; #define HAVE_INDEXOPTINFO_TYPEDEF 1 #endif struct IndexOptInfo { NodeTag type; Oid indexoid; /* OID of the index relation */ Oid reltablespace; /* tablespace of index (not table) */ RelOptInfo *rel; /* back-link to index's table */ /* index-size statistics (from pg_class and elsewhere) */ BlockNumber pages; /* number of disk pages in index */ Cardinality tuples; /* number of index tuples in index */ int tree_height; /* index tree height, or -1 if unknown */ /* index descriptor information */ int ncolumns; /* number of columns in index */ int nkeycolumns; /* number of key columns in index */ int *indexkeys; /* column numbers of index's attributes both * key and included columns, or 0 */ Oid *indexcollations; /* OIDs of collations of index columns */ Oid *opfamily; /* OIDs of operator families for columns */ Oid *opcintype; /* OIDs of opclass declared input data types */ Oid *sortopfamily; /* OIDs of btree opfamilies, if orderable */ bool *reverse_sort; /* is sort order descending? */ bool *nulls_first; /* do NULLs come first in the sort order? */ bytea **opclassoptions; /* opclass-specific options for columns */ bool *canreturn; /* which index cols can be returned in an * index-only scan? */ Oid relam; /* OID of the access method (in pg_am) */ List *indexprs; /* expressions for non-simple index columns */ List *indpred; /* predicate if a partial index, else NIL */ List *indextlist; /* targetlist representing index columns */ List *indrestrictinfo; /* parent relation's baserestrictinfo * list, less any conditions implied by * the index's predicate (unless it's a * target rel, see comments in * check_index_predicates()) */ bool predOK; /* true if index predicate matches query */ bool unique; /* true if a unique index */ bool immediate; /* is uniqueness enforced immediately? */ bool hypothetical; /* true if index doesn't really exist */ /* Remaining fields are copied from the index AM's API struct: */ bool amcanorderbyop; /* does AM support order by operator result? */ bool amoptionalkey; /* can query omit key for the first column? */ bool amsearcharray; /* can AM handle ScalarArrayOpExpr quals? */ bool amsearchnulls; /* can AM search for NULL/NOT NULL entries? */ bool amhasgettuple; /* does AM have amgettuple interface? */ bool amhasgetbitmap; /* does AM have amgetbitmap interface? */ bool amcanparallel; /* does AM support parallel scan? */ bool amcanmarkpos; /* does AM support mark/restore? */ /* Rather than include amapi.h here, we declare amcostestimate like this */ void (*amcostestimate) (); /* AM's cost estimator */ }; /* * ForeignKeyOptInfo * Per-foreign-key information for planning/optimization * * The per-FK-column arrays can be fixed-size because we allow at most * INDEX_MAX_KEYS columns in a foreign key constraint. Each array has * nkeys valid entries. */ typedef struct ForeignKeyOptInfo { NodeTag type; /* Basic data about the foreign key (fetched from catalogs): */ Index con_relid; /* RT index of the referencing table */ Index ref_relid; /* RT index of the referenced table */ int nkeys; /* number of columns in the foreign key */ AttrNumber conkey[INDEX_MAX_KEYS]; /* cols in referencing table */ AttrNumber confkey[INDEX_MAX_KEYS]; /* cols in referenced table */ Oid conpfeqop[INDEX_MAX_KEYS]; /* PK = FK operator OIDs */ /* Derived info about whether FK's equality conditions match the query: */ int nmatched_ec; /* # of FK cols matched by ECs */ int nconst_ec; /* # of these ECs that are ec_has_const */ int nmatched_rcols; /* # of FK cols matched by non-EC rinfos */ int nmatched_ri; /* total # of non-EC rinfos matched to FK */ /* Pointer to eclass matching each column's condition, if there is one */ struct EquivalenceClass *eclass[INDEX_MAX_KEYS]; /* 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 { NodeTag type; Oid statOid; /* OID of the statistics row */ bool inherit; /* includes child relations */ RelOptInfo *rel; /* back-link to statistic's table */ char kind; /* statistics kind of this entry */ Bitmapset *keys; /* attnums of the columns covered */ List *exprs; /* expressions */ } StatisticExtInfo; /* * EquivalenceClasses * * Whenever we can determine that a mergejoinable equality clause A = B is * not delayed by any outer join, we create an EquivalenceClass containing * the expressions A and B to record this knowledge. If we later find another * equivalence B = C, we add C to the existing EquivalenceClass; this may * require merging two existing EquivalenceClasses. At the end of the qual * distribution process, we have sets of values that are known all transitively * equal to each other, where "equal" is according to the rules of the btree * operator family(s) shown in ec_opfamilies, as well as the collation shown * by ec_collation. (We restrict an EC to contain only equalities whose * operators belong to the same set of opfamilies. This could probably be * relaxed, but for now it's not worth the trouble, since nearly all equality * operators belong to only one btree opclass anyway. Similarly, we suppose * that all or none of the input datatypes are collatable, so that a single * collation value is sufficient.) * * We also use EquivalenceClasses as the base structure for PathKeys, letting * us represent knowledge about different sort orderings being equivalent. * Since every PathKey must reference an EquivalenceClass, we will end up * with single-member EquivalenceClasses whenever a sort key expression has * not been equivalenced to anything else. It is also possible that such an * EquivalenceClass will contain a volatile expression ("ORDER BY random()"), * which is a case that can't arise otherwise since clauses containing * volatile functions are never considered mergejoinable. We mark such * EquivalenceClasses specially to prevent them from being merged with * ordinary EquivalenceClasses. Also, for volatile expressions we have * to be careful to match the EquivalenceClass to the correct targetlist * entry: consider SELECT random() AS a, random() AS b ... ORDER BY b,a. * So we record the SortGroupRef of the originating sort clause. * * We allow equality clauses appearing below the nullable side of an outer join * to form EquivalenceClasses, but these have a slightly different meaning: * the included values might be all NULL rather than all the same non-null * values. See src/backend/optimizer/README for more on that point. * * NB: if ec_merged isn't NULL, this class has been merged into another, and * should be ignored in favor of using the pointed-to class. */ typedef struct EquivalenceClass { NodeTag type; List *ec_opfamilies; /* btree operator family OIDs */ Oid ec_collation; /* collation, if datatypes are collatable */ List *ec_members; /* list of EquivalenceMembers */ List *ec_sources; /* list of generating RestrictInfos */ List *ec_derives; /* list of derived RestrictInfos */ Relids ec_relids; /* all relids appearing in ec_members, except * for child members (see below) */ bool ec_has_const; /* any pseudoconstants in ec_members? */ bool ec_has_volatile; /* the (sole) member is a volatile expr */ bool ec_below_outer_join; /* equivalence applies below an OJ */ bool ec_broken; /* failed to generate needed clauses? */ Index ec_sortref; /* originating sortclause label, or 0 */ Index ec_min_security; /* minimum security_level in ec_sources */ Index ec_max_security; /* maximum security_level in ec_sources */ struct EquivalenceClass *ec_merged; /* set if merged into another EC */ } EquivalenceClass; /* * If an EC contains a const and isn't below-outer-join, any PathKey depending * on it must be redundant, since there's only one possible value of the key. */ #define EC_MUST_BE_REDUNDANT(eclass) \ ((eclass)->ec_has_const && !(eclass)->ec_below_outer_join) /* * EquivalenceMember - one member expression of an EquivalenceClass * * em_is_child signifies that this element was built by transposing a member * for an appendrel parent relation to represent the corresponding expression * for an appendrel child. These members are used for determining the * pathkeys of scans on the child relation and for explicitly sorting the * child when necessary to build a MergeAppend path for the whole appendrel * tree. An em_is_child member has no impact on the properties of the EC as a * whole; in particular the EC's ec_relids field does NOT include the child * relation. An em_is_child member should never be marked em_is_const nor * cause ec_has_const or ec_has_volatile to be set, either. Thus, em_is_child * members are not really full-fledged members of the EC, but just reflections * or doppelgangers of real members. Most operations on EquivalenceClasses * should ignore em_is_child members, and those that don't should test * em_relids to make sure they only consider relevant members. * * em_datatype is usually the same as exprType(em_expr), but can be * different when dealing with a binary-compatible opfamily; in particular * anyarray_ops would never work without this. Use em_datatype when * looking up a specific btree operator to work with this expression. */ typedef struct EquivalenceMember { NodeTag type; Expr *em_expr; /* the expression represented */ Relids em_relids; /* all relids appearing in em_expr */ Relids em_nullable_relids; /* nullable by lower outer joins */ bool em_is_const; /* expression is pseudoconstant? */ bool em_is_child; /* derived version for a child relation? */ Oid em_datatype; /* the "nominal type" used by the opfamily */ } EquivalenceMember; /* * PathKeys * * The sort ordering of a path is represented by a list of PathKey nodes. * An empty list implies no known ordering. Otherwise the first item * represents the primary sort key, the second the first secondary sort key, * etc. The value being sorted is represented by linking to an * EquivalenceClass containing that value and including pk_opfamily among its * ec_opfamilies. The EquivalenceClass tells which collation to use, too. * This is a convenient method because it makes it trivial to detect * equivalent and closely-related orderings. (See optimizer/README for more * information.) * * Note: pk_strategy is either BTLessStrategyNumber (for ASC) or * BTGreaterStrategyNumber (for DESC). We assume that all ordering-capable * index types will use btree-compatible strategy numbers. */ typedef struct PathKey { NodeTag type; EquivalenceClass *pk_eclass; /* the value that is ordered */ Oid pk_opfamily; /* btree opfamily defining the ordering */ int pk_strategy; /* sort direction (ASC or DESC) */ bool pk_nulls_first; /* do NULLs come before normal values? */ } PathKey; /* * 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 { NodeTag type; List *exprs; /* list of expressions to be computed */ Index *sortgrouprefs; /* corresponding sort/group refnos, or 0 */ QualCost cost; /* cost of evaluating the expressions */ int width; /* estimated avg width of result tuples */ VolatileFunctionStatus has_volatile_expr; /* indicates if exprs contain * any volatile functions. */ } PathTarget; /* Convenience macro to get a sort/group refno from a PathTarget */ #define get_pathtarget_sortgroupref(target, colno) \ ((target)->sortgrouprefs ? (target)->sortgrouprefs[colno] : (Index) 0) /* * ParamPathInfo * * All parameterized paths for a given relation with given required outer rels * link to a single ParamPathInfo, which stores common information such as * the estimated rowcount for this parameterization. We do this partly to * avoid recalculations, but mostly to ensure that the estimated rowcount * is in fact the same for every such path. * * Note: ppi_clauses is only used in ParamPathInfos for base relation paths; * in join cases it's NIL because the set of relevant clauses varies depending * on how the join is formed. The relevant clauses will appear in each * parameterized join path's joinrestrictinfo list, instead. */ typedef struct ParamPathInfo { NodeTag type; Relids ppi_req_outer; /* rels supplying parameters used by path */ Cardinality ppi_rows; /* estimated number of result tuples */ List *ppi_clauses; /* join clauses available from outer rels */ } ParamPathInfo; /* * Type "Path" is used as-is for sequential-scan paths, as well as some other * simple plan types that we don't need any extra information in the path for. * For other path types it is the first component of a larger struct. * * "pathtype" is the NodeTag of the Plan node we could build from this Path. * It is partially redundant with the Path's NodeTag, but allows us to use * the same Path type for multiple Plan types when there is no need to * distinguish the Plan type during path processing. * * "parent" identifies the relation this Path scans, and "pathtarget" * describes the precise set of output columns the Path would compute. * In simple cases all Paths for a given rel share the same targetlist, * which we represent by having path->pathtarget equal to parent->reltarget. * * "param_info", if not NULL, links to a ParamPathInfo that identifies outer * relation(s) that provide parameter values to each scan of this path. * That means this path can only be joined to those rels by means of nestloop * joins with this path on the inside. Also note that a parameterized path * is responsible for testing all "movable" joinclauses involving this rel * and the specified outer rel(s). * * "rows" is the same as parent->rows in simple paths, but in parameterized * paths and UniquePaths it can be less than parent->rows, reflecting the * fact that we've filtered by extra join conditions or removed duplicates. * * "pathkeys" is a List of PathKey nodes (see above), describing the sort * ordering of the path's output rows. */ typedef struct Path { NodeTag type; NodeTag pathtype; /* tag identifying scan/join method */ RelOptInfo *parent; /* the relation this path can build */ PathTarget *pathtarget; /* list of Vars/Exprs, cost, width */ ParamPathInfo *param_info; /* parameterization info, or NULL if none */ bool parallel_aware; /* engage parallel-aware logic? */ bool parallel_safe; /* OK to use as part of parallel plan? */ int parallel_workers; /* desired # of workers; 0 = not parallel */ /* estimated size/costs for path (see costsize.c for more info) */ 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) */ List *pathkeys; /* sort ordering of path's output */ /* pathkeys is a List of PathKey nodes; see above */ } Path; /* Macro for extracting a path's parameterization relids; beware double eval */ #define PATH_REQ_OUTER(path) \ ((path)->param_info ? (path)->param_info->ppi_req_outer : (Relids) NULL) /*---------- * IndexPath represents an index scan over a single index. * * This struct is used for both regular indexscans and index-only scans; * path.pathtype is T_IndexScan or T_IndexOnlyScan to show which is meant. * * 'indexinfo' is the index to be scanned. * * 'indexclauses' is a list of IndexClause nodes, each representing one * index-checkable restriction, with implicit AND semantics across the list. * An empty list implies a full index scan. * * 'indexorderbys', if not NIL, is a list of ORDER BY expressions that have * been found to be usable as ordering operators for an amcanorderbyop index. * The list must match the path's pathkeys, ie, one expression per pathkey * in the same order. These are not RestrictInfos, just bare expressions, * since they generally won't yield booleans. It's guaranteed that each * expression has the index key on the left side of the operator. * * 'indexorderbycols' is an integer list of index column numbers (zero-based) * of the same length as 'indexorderbys', showing which index column each * ORDER BY expression is meant to be used with. (There is no restriction * on which index column each ORDER BY can be used with.) * * 'indexscandir' is one of: * ForwardScanDirection: forward scan of an ordered index * BackwardScanDirection: backward scan of an ordered index * NoMovementScanDirection: scan of an unordered index, or don't care * (The executor doesn't care whether it gets ForwardScanDirection or * NoMovementScanDirection for an indexscan, but the planner wants to * distinguish ordered from unordered indexes for building pathkeys.) * * 'indextotalcost' and 'indexselectivity' are saved in the IndexPath so that * we need not recompute them when considering using the same index in a * bitmap index/heap scan (see BitmapHeapPath). The costs of the IndexPath * itself represent the costs of an IndexScan or IndexOnlyScan plan type. *---------- */ typedef struct IndexPath { Path path; IndexOptInfo *indexinfo; List *indexclauses; List *indexorderbys; List *indexorderbycols; ScanDirection indexscandir; Cost indextotalcost; Selectivity indexselectivity; } IndexPath; /* * Each IndexClause references a RestrictInfo node from the query's WHERE * or JOIN conditions, and shows how that restriction can be applied to * the particular index. We support both indexclauses that are directly * usable by the index machinery, which are typically of the form * "indexcol OP pseudoconstant", and those from which an indexable qual * can be derived. The simplest such transformation is that a clause * of the form "pseudoconstant OP indexcol" can be commuted to produce an * indexable qual (the index machinery expects the indexcol to be on the * left always). Another example is that we might be able to extract an * indexable range condition from a LIKE condition, as in "x LIKE 'foo%bar'" * giving rise to "x >= 'foo' AND x < 'fop'". Derivation of such lossy * conditions is done by a planner support function attached to the * indexclause's top-level function or operator. * * indexquals is a list of RestrictInfos for the directly-usable index * conditions associated with this IndexClause. In the simplest case * it's a one-element list whose member is iclause->rinfo. Otherwise, * it contains one or more directly-usable indexqual conditions extracted * from the given clause. The 'lossy' flag indicates whether the * indexquals are semantically equivalent to the original clause, or * represent a weaker condition. * * Normally, indexcol is the index of the single index column the clause * works on, and indexcols is NIL. But if the clause is a RowCompareExpr, * indexcol is the index of the leading column, and indexcols is a list of * all the affected columns. (Note that indexcols matches up with the * columns of the actual indexable RowCompareExpr in indexquals, which * might be different from the original in rinfo.) * * An IndexPath's IndexClause list is required to be ordered by index * column, i.e. the indexcol values must form a nondecreasing sequence. * (The order of multiple clauses for the same index column is unspecified.) */ typedef struct IndexClause { NodeTag type; struct RestrictInfo *rinfo; /* original restriction or join clause */ List *indexquals; /* indexqual(s) derived from it */ bool lossy; /* are indexquals a lossy version of clause? */ AttrNumber indexcol; /* index column the clause uses (zero-based) */ List *indexcols; /* multiple index columns, if RowCompare */ } IndexClause; /* * BitmapHeapPath represents one or more indexscans that generate TID bitmaps * instead of directly accessing the heap, followed by AND/OR combinations * to produce a single bitmap, followed by a heap scan that uses the bitmap. * Note that the output is always considered unordered, since it will come * out in physical heap order no matter what the underlying indexes did. * * The individual indexscans are represented by IndexPath nodes, and any * logic on top of them is represented by a tree of BitmapAndPath and * BitmapOrPath nodes. Notice that we can use the same IndexPath node both * to represent a regular (or index-only) index scan plan, and as the child * of a BitmapHeapPath that represents scanning the same index using a * BitmapIndexScan. The startup_cost and total_cost figures of an IndexPath * always represent the costs to use it as a regular (or index-only) * IndexScan. The costs of a BitmapIndexScan can be computed using the * IndexPath's indextotalcost and indexselectivity. */ typedef struct BitmapHeapPath { Path path; Path *bitmapqual; /* IndexPath, BitmapAndPath, BitmapOrPath */ } BitmapHeapPath; /* * BitmapAndPath represents a BitmapAnd plan node; it can only appear as * part of the substructure of a BitmapHeapPath. The Path structure is * a bit more heavyweight than we really need for this, but for simplicity * we make it a derivative of Path anyway. */ typedef struct BitmapAndPath { Path path; List *bitmapquals; /* IndexPaths and BitmapOrPaths */ Selectivity bitmapselectivity; } BitmapAndPath; /* * BitmapOrPath represents a BitmapOr plan node; it can only appear as * part of the substructure of a BitmapHeapPath. The Path structure is * a bit more heavyweight than we really need for this, but for simplicity * we make it a derivative of Path anyway. */ typedef struct BitmapOrPath { Path path; List *bitmapquals; /* IndexPaths and BitmapAndPaths */ Selectivity bitmapselectivity; } BitmapOrPath; /* * TidPath represents a scan by TID * * tidquals is an implicitly OR'ed list of qual expressions of the form * "CTID = pseudoconstant", or "CTID = ANY(pseudoconstant_array)", * or a CurrentOfExpr for the relation. */ typedef struct TidPath { Path path; List *tidquals; /* qual(s) involving CTID = something */ } TidPath; /* * 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. * * fdw_private stores FDW private data about the scan. While fdw_private is * not actually touched by the core code during normal operations, it's * generally a good idea to use a representation that can be dumped by * nodeToString(), so that you can examine the structure during debugging * with tools like pprint(). */ typedef struct ForeignPath { Path path; Path *fdw_outerpath; List *fdw_private; } ForeignPath; /* * CustomPath represents a table scan done by some out-of-core extension. * * We provide a set of hooks here - which the provider must take care to set * up correctly - to allow extensions to supply their own methods of scanning * a relation. For example, a provider might provide GPU acceleration, a * cache-based scan, or some other kind of logic we haven't dreamed up yet. * * CustomPaths can be injected into the planning process for a relation by * set_rel_pathlist_hook functions. * * Core code must avoid assuming that the CustomPath is only as large as * the structure declared here; providers are allowed to make it the first * element in a larger structure. (Since the planner never copies Paths, * this doesn't add any complication.) However, for consistency with the * FDW case, we provide a "custom_private" field in CustomPath; providers * may prefer to use that rather than define another struct type. */ struct CustomPathMethods; typedef struct CustomPath { Path path; uint32 flags; /* mask of CUSTOMPATH_* flags, see * nodes/extensible.h */ List *custom_paths; /* list of child Path nodes, if any */ List *custom_private; const struct CustomPathMethods *methods; } CustomPath; /* * AppendPath represents an Append plan, ie, successive execution of * several member plans. * * For partial Append, 'subpaths' contains non-partial subpaths followed by * partial subpaths. * * Note: it is possible for "subpaths" to contain only one, or even no, * elements. These cases are optimized during create_append_plan. * In particular, an AppendPath with no subpaths is a "dummy" path that * is created to represent the case that a relation is provably empty. * (This is a convenient representation because it means that when we build * an appendrel and find that all its children have been excluded, no extra * action is needed to recognize the relation as dummy.) */ typedef struct AppendPath { Path path; 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; /* hash operators for each key */ List *param_exprs; /* 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 { 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 { NodeTag type; List *set; /* grouping set as list of sortgrouprefs */ Cardinality numGroups; /* est. number of result groups */ } GroupingSetData; typedef struct RollupData { NodeTag type; List *groupClause; /* applicable subset of parse->groupClause */ List *gsets; /* lists of integer indexes into groupClause */ List *gsets_data; /* list of GroupingSetData */ 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 */ 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 target is partitioned */ 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 */ } ModifyTablePath; /* * LimitPath represents applying LIMIT/OFFSET restrictions */ typedef struct LimitPath { Path path; Path *subpath; /* path representing input source */ Node *limitOffset; /* OFFSET parameter, or NULL if none */ Node *limitCount; /* COUNT parameter, or NULL if none */ LimitOption limitOption; /* FETCH FIRST with ties or exact number */ } LimitPath; /* * Restriction clause info. * * We create one of these for each AND sub-clause of a restriction condition * (WHERE or JOIN/ON clause). Since the restriction clauses are logically * ANDed, we can use any one of them or any subset of them to filter out * tuples, without having to evaluate the rest. The RestrictInfo node itself * stores data used by the optimizer while choosing the best query plan. * * If a restriction clause references a single base relation, it will appear * in the baserestrictinfo list of the RelOptInfo for that base rel. * * If a restriction clause references more than one base rel, it will * appear in the joininfo list of every RelOptInfo that describes a strict * subset of the base rels mentioned in the clause. The joininfo lists are * used to drive join tree building by selecting plausible join candidates. * The clause cannot actually be applied until we have built a join rel * containing all the base rels it references, however. * * When we construct a join rel that includes all the base rels referenced * in a multi-relation restriction clause, we place that clause into the * joinrestrictinfo lists of paths for the join rel, if neither left nor * right sub-path includes all base rels referenced in the clause. The clause * will be applied at that join level, and will not propagate any further up * the join tree. (Note: the "predicate migration" code was once intended to * push restriction clauses up and down the plan tree based on evaluation * costs, but it's dead code and is unlikely to be resurrected in the * foreseeable future.) * * Note that in the presence of more than two rels, a multi-rel restriction * might reach different heights in the join tree depending on the join * sequence we use. So, these clauses cannot be associated directly with * the join RelOptInfo, but must be kept track of on a per-join-path basis. * * RestrictInfos that represent equivalence conditions (i.e., mergejoinable * equalities that are not outerjoin-delayed) are handled a bit differently. * Initially we attach them to the EquivalenceClasses that are derived from * them. When we construct a scan or join path, we look through all the * EquivalenceClasses and generate derived RestrictInfos representing the * minimal set of conditions that need to be checked for this particular scan * or join to enforce that all members of each EquivalenceClass are in fact * equal in all rows emitted by the scan or join. * * When dealing with outer joins we have to be very careful about pushing qual * clauses up and down the tree. An outer join's own JOIN/ON conditions must * be evaluated exactly at that join node, unless they are "degenerate" * conditions that reference only Vars from the nullable side of the join. * Quals appearing in WHERE or in a JOIN above the outer join cannot be pushed * down below the outer join, if they reference any nullable Vars. * RestrictInfo nodes contain a flag to indicate whether a qual has been * pushed down to a lower level than its original syntactic placement in the * join tree would suggest. If an outer join prevents us from pushing a qual * down to its "natural" semantic level (the level associated with just the * base rels used in the qual) then we mark the qual with a "required_relids" * value including more than just the base rels it actually uses. By * pretending that the qual references all the rels required to form the outer * join, we prevent it from being evaluated below the outer join's joinrel. * When we do form the outer join's joinrel, we still need to distinguish * those quals that are actually in that join's JOIN/ON condition from those * that appeared elsewhere in the tree and were pushed down to the join rel * because they used no other rels. That's what the is_pushed_down flag is * for; it tells us that a qual is not an OUTER JOIN qual for the set of base * rels listed in required_relids. A clause that originally came from WHERE * or an INNER JOIN condition will *always* have its is_pushed_down flag set. * It's possible for an OUTER JOIN clause to be marked is_pushed_down too, * if we decide that it can be pushed down into the nullable side of the join. * In that case it acts as a plain filter qual for wherever it gets evaluated. * (In short, is_pushed_down is only false for non-degenerate outer join * conditions. Possibly we should rename it to reflect that meaning? But * see also the comments for RINFO_IS_PUSHED_DOWN, below.) * * RestrictInfo nodes also contain an outerjoin_delayed flag, which is true * if the clause's applicability must be delayed due to any outer joins * appearing below it (ie, it has to be postponed to some join level higher * than the set of relations it actually references). * * There is also an outer_relids field, which is NULL except for outer join * clauses; for those, it is the set of relids on the outer side of the * clause's outer join. (These are rels that the clause cannot be applied to * in parameterized scans, since pushing it into the join's outer side would * lead to wrong answers.) * * There is also a nullable_relids field, which is the set of rels the clause * references that can be forced null by some outer join below the clause. * * outerjoin_delayed = true is subtly different from nullable_relids != NULL: * a clause might reference some nullable rels and yet not be * outerjoin_delayed because it also references all the other rels of the * outer join(s). A clause that is not outerjoin_delayed can be enforced * anywhere it is computable. * * To handle security-barrier conditions efficiently, we mark RestrictInfo * nodes with a security_level field, in which higher values identify clauses * coming from less-trusted sources. The exact semantics are that a clause * cannot be evaluated before another clause with a lower security_level value * unless the first clause is leakproof. As with outer-join clauses, this * creates a reason for clauses to sometimes need to be evaluated higher in * the join tree than their contents would suggest; and even at a single plan * node, this rule constrains the order of application of clauses. * * In general, the referenced clause might be arbitrarily complex. The * kinds of clauses we can handle as indexscan quals, mergejoin clauses, * or hashjoin clauses are limited (e.g., no volatile functions). The code * for each kind of path is responsible for identifying the restrict clauses * it can use and ignoring the rest. Clauses not implemented by an indexscan, * mergejoin, or hashjoin will be placed in the plan qual or joinqual field * of the finished Plan node, where they will be enforced by general-purpose * qual-expression-evaluation code. (But we are still entitled to count * their selectivity when estimating the result tuple count, if we * can guess what it is...) * * When the referenced clause is an OR clause, we generate a modified copy * in which additional RestrictInfo nodes are inserted below the top-level * OR/AND structure. This is a convenience for OR indexscan processing: * indexquals taken from either the top level or an OR subclause will have * associated RestrictInfo nodes. * * The can_join flag is set true if the clause looks potentially useful as * a merge or hash join clause, that is if it is a binary opclause with * nonoverlapping sets of relids referenced in the left and right sides. * (Whether the operator is actually merge or hash joinable isn't checked, * however.) * * The pseudoconstant flag is set true if the clause contains no Vars of * the current query level and no volatile functions. Such a clause can be * pulled out and used as a one-time qual in a gating Result node. We keep * pseudoconstant clauses in the same lists as other RestrictInfos so that * the regular clause-pushing machinery can assign them to the correct join * level, but they need to be treated specially for cost and selectivity * estimates. Note that a pseudoconstant clause can never be an indexqual * or merge or hash join clause, so it's of no interest to large parts of * the planner. * * When join clauses are generated from EquivalenceClasses, there may be * several equally valid ways to enforce join equivalence, of which we need * apply only one. We mark clauses of this kind by setting parent_ec to * point to the generating EquivalenceClass. Multiple clauses with the same * parent_ec in the same join are redundant. */ typedef struct RestrictInfo { NodeTag type; Expr *clause; /* the represented clause of WHERE or JOIN */ bool is_pushed_down; /* true if clause was pushed down in level */ bool outerjoin_delayed; /* true if delayed by lower outer join */ bool can_join; /* see comment above */ bool pseudoconstant; /* see comment above */ bool leakproof; /* true if known to contain no leaked Vars */ VolatileFunctionStatus has_volatile; /* to indicate if clause contains * any volatile functions. */ Index security_level; /* see comment above */ /* The set of relids (varnos) actually referenced in the clause: */ Relids clause_relids; /* The set of relids required to evaluate the clause: */ Relids required_relids; /* If an outer-join clause, the outer-side relations, else NULL: */ Relids outer_relids; /* The relids used in the clause that are nullable by lower outer joins: */ Relids nullable_relids; /* These fields are set for any binary opclause: */ Relids left_relids; /* relids in left side of clause */ Relids right_relids; /* relids in right side of clause */ /* This field is NULL unless clause is an OR clause: */ Expr *orclause; /* modified clause with RestrictInfos */ /* This field is NULL unless clause is potentially redundant: */ EquivalenceClass *parent_ec; /* generating EquivalenceClass */ /* cache space for cost and selectivity */ QualCost eval_cost; /* eval cost of clause; -1 if not yet set */ Selectivity norm_selec; /* selectivity for "normal" (JOIN_INNER) * semantics; -1 if not yet set; >1 means a * redundant clause */ Selectivity outer_selec; /* selectivity for outer join semantics; -1 if * not yet set */ /* valid if clause is mergejoinable, else NIL */ List *mergeopfamilies; /* opfamilies containing clause operator */ /* cache space for mergeclause processing; NULL if not yet set */ EquivalenceClass *left_ec; /* EquivalenceClass containing lefthand */ EquivalenceClass *right_ec; /* EquivalenceClass containing righthand */ EquivalenceMember *left_em; /* EquivalenceMember for lefthand */ EquivalenceMember *right_em; /* EquivalenceMember for righthand */ List *scansel_cache; /* list of MergeScanSelCache structs */ /* transient workspace for use while considering a specific join path */ bool outer_is_left; /* T = outer var on left, F = on right */ /* valid if clause is hashjoinable, else InvalidOid: */ Oid hashjoinoperator; /* copy of clause operator */ /* cache space for hashclause processing; -1 if not yet set */ Selectivity left_bucketsize; /* avg bucketsize of left side */ Selectivity right_bucketsize; /* avg bucketsize of right side */ Selectivity left_mcvfreq; /* left side's most common val's freq */ Selectivity right_mcvfreq; /* right side's most common val's freq */ /* hash equality operators used for memoize nodes, else InvalidOid */ Oid left_hasheqoperator; Oid right_hasheqoperator; } RestrictInfo; /* * This macro embodies the correct way to test whether a RestrictInfo is * "pushed down" to a given outer join, that is, should be treated as a filter * clause rather than a join clause at that outer join. This is certainly so * if is_pushed_down is true; but examining that is not sufficient anymore, * because outer-join clauses will get pushed down to lower outer joins when * we generate a path for the lower outer join that is parameterized by the * LHS of the upper one. We can detect such a clause by noting that its * required_relids exceed the scope of the join. */ #define RINFO_IS_PUSHED_DOWN(rinfo, joinrelids) \ ((rinfo)->is_pushed_down || \ !bms_is_subset((rinfo)->required_relids, joinrelids)) /* * Since mergejoinscansel() is a relatively expensive function, and would * otherwise be invoked many times while planning a large join tree, * we go out of our way to cache its results. Each mergejoinable * RestrictInfo carries a list of the specific sort orderings that have * been considered for use with it, and the resulting selectivities. */ typedef struct MergeScanSelCache { /* Ordering details (cache lookup key) */ Oid opfamily; /* btree opfamily defining the ordering */ Oid collation; /* collation for the ordering */ int strategy; /* sort direction (ASC or DESC) */ bool nulls_first; /* do NULLs come before normal values? */ /* Results */ Selectivity leftstartsel; /* first-join fraction for clause left side */ Selectivity leftendsel; /* last-join fraction for clause left side */ Selectivity rightstartsel; /* first-join fraction for clause right side */ Selectivity rightendsel; /* last-join fraction for clause right side */ } MergeScanSelCache; /* * Placeholder node for an expression to be evaluated below the top level * of a plan tree. This is used during planning to represent the contained * expression. At the end of the planning process it is replaced by either * the contained expression or a Var referring to a lower-level evaluation of * the contained expression. Typically the evaluation occurs below an outer * join, and Var references above the outer join might thereby yield NULL * instead of the expression value. * * Although the planner treats this as an expression node type, it is not * recognized by the parser or executor, so we declare it here rather than * in primnodes.h. */ typedef struct PlaceHolderVar { Expr xpr; Expr *phexpr; /* the represented expression */ Relids phrels; /* base relids syntactically within expr src */ Index phid; /* ID for PHV (unique within planner run) */ Index phlevelsup; /* > 0 if PHV belongs to outer query */ } PlaceHolderVar; /* * "Special join" info. * * One-sided outer joins constrain the order of joining partially but not * completely. We flatten such joins into the planner's top-level list of * relations to join, but record information about each outer join in a * SpecialJoinInfo struct. These structs are kept in the PlannerInfo node's * join_info_list. * * Similarly, semijoins and antijoins created by flattening IN (subselect) * and EXISTS(subselect) clauses create partial constraints on join order. * These are likewise recorded in SpecialJoinInfo structs. * * We make SpecialJoinInfos for FULL JOINs even though there is no flexibility * of planning for them, because this simplifies make_join_rel()'s API. * * min_lefthand and min_righthand are the sets of base relids that must be * available on each side when performing the special join. lhs_strict is * true if the special join's condition cannot succeed when the LHS variables * are all NULL (this means that an outer join can commute with upper-level * outer joins even if it appears in their RHS). We don't bother to set * lhs_strict for FULL JOINs, however. * * It is not valid for either min_lefthand or min_righthand to be empty sets; * if they were, this would break the logic that enforces join order. * * syn_lefthand and syn_righthand are the sets of base relids that are * syntactically below this special join. (These are needed to help compute * min_lefthand and min_righthand for higher joins.) * * delay_upper_joins is set true if we detect a pushed-down clause that has * to be evaluated after this join is formed (because it references the RHS). * Any outer joins that have such a clause and this join in their RHS cannot * commute with this join, because that would leave noplace to check the * pushed-down clause. (We don't track this for FULL JOINs, either.) * * For a semijoin, we also extract the join operators and their RHS arguments * and set semi_operators, semi_rhs_exprs, semi_can_btree, and semi_can_hash. * This is done in support of possibly unique-ifying the RHS, so we don't * bother unless at least one of semi_can_btree and semi_can_hash can be set * true. (You might expect that this information would be computed during * join planning; but it's helpful to have it available during planning of * parameterized table scans, so we store it in the SpecialJoinInfo structs.) * * jointype is never JOIN_RIGHT; a RIGHT JOIN is handled by switching * the inputs to make it a LEFT JOIN. So the allowed values of jointype * in a join_info_list member are only LEFT, FULL, SEMI, or ANTI. * * For purposes of join selectivity estimation, we create transient * SpecialJoinInfo structures for regular inner joins; so it is possible * to have jointype == JOIN_INNER in such a structure, even though this is * not allowed within join_info_list. We also create transient * SpecialJoinInfos with jointype == JOIN_INNER for outer joins, since for * cost estimation purposes it is sometimes useful to know the join size under * plain innerjoin semantics. Note that lhs_strict, delay_upper_joins, and * of course the semi_xxx fields are not set meaningfully within such structs. */ #ifndef HAVE_SPECIALJOININFO_TYPEDEF typedef struct SpecialJoinInfo SpecialJoinInfo; #define HAVE_SPECIALJOININFO_TYPEDEF 1 #endif struct SpecialJoinInfo { NodeTag type; Relids min_lefthand; /* base relids in minimum LHS for join */ Relids min_righthand; /* base relids in minimum RHS for join */ Relids syn_lefthand; /* base relids syntactically within LHS */ Relids syn_righthand; /* base relids syntactically within RHS */ JoinType jointype; /* always INNER, LEFT, FULL, SEMI, or ANTI */ bool lhs_strict; /* joinclause is strict for some LHS rel */ bool delay_upper_joins; /* can't commute with upper RHS */ /* Remaining fields are set only for JOIN_SEMI jointype: */ bool semi_can_btree; /* true if semi_operators are all btree */ bool semi_can_hash; /* true if semi_operators are all hash */ List *semi_operators; /* OIDs of equality join operators */ List *semi_rhs_exprs; /* righthand-side expressions of these ops */ }; /* * Append-relation info. * * When we expand an inheritable table or a UNION-ALL subselect into an * "append relation" (essentially, a list of child RTEs), we build an * AppendRelInfo for each child RTE. The list of AppendRelInfos indicates * which child RTEs must be included when expanding the parent, and each node * carries information needed to translate between columns of the parent and * columns of the child. * * These structs are kept in the PlannerInfo node's append_rel_list, with * append_rel_array[] providing a convenient lookup method for the struct * associated with a particular child relid (there can be only one, though * parent rels may have many entries in append_rel_list). * * Note: after completion of the planner prep phase, any given RTE is an * append parent having entries in append_rel_list if and only if its * "inh" flag is set. We clear "inh" for plain tables that turn out not * to have inheritance children, and (in an abuse of the original meaning * of the flag) we set "inh" for subquery RTEs that turn out to be * flattenable UNION ALL queries. This lets us avoid useless searches * of append_rel_list. * * Note: the data structure assumes that append-rel members are single * baserels. This is OK for inheritance, but it prevents us from pulling * up a UNION ALL member subquery if it contains a join. While that could * be fixed with a more complex data structure, at present there's not much * point because no improvement in the plan could result. */ typedef struct AppendRelInfo { NodeTag type; /* * These fields uniquely identify this append relationship. There can be * (in fact, always should be) multiple AppendRelInfos for the same * parent_relid, but never more than one per child_relid, since a given * RTE cannot be a child of more than one append parent. */ Index parent_relid; /* RT index of append parent rel */ Index child_relid; /* RT index of append child rel */ /* * For an inheritance appendrel, the parent and child are both regular * relations, and we store their rowtype OIDs here for use in translating * whole-row Vars. For a UNION-ALL appendrel, the parent and child are * both subqueries with no named rowtype, and we store InvalidOid here. */ Oid parent_reltype; /* OID of parent's composite type */ Oid child_reltype; /* OID of child's composite type */ /* * The N'th element of this list is a Var or expression representing the * child column corresponding to the N'th column of the parent. This is * used to translate Vars referencing the parent rel into references to * the child. A list element is NULL if it corresponds to a dropped * column of the parent (this is only possible for inheritance cases, not * UNION ALL). The list elements are always simple Vars for inheritance * cases, but can be arbitrary expressions in UNION ALL cases. * * Notice we only store entries for user columns (attno > 0). Whole-row * Vars are special-cased, and system columns (attno < 0) need no special * translation since their attnos are the same for all tables. * * Caution: the Vars have varlevelsup = 0. Be careful to adjust as needed * when copying into a subquery. */ List *translated_vars; /* Expressions in the child's Vars */ /* * This array simplifies translations in the reverse direction, from * child's column numbers to parent's. The entry at [ccolno - 1] is the * 1-based parent column number for child column ccolno, or zero if that * child column is dropped or doesn't exist in the parent. */ int num_child_cols; /* length of array */ AttrNumber *parent_colnos; /* array of parent attnos, or zeroes */ /* * We store the parent table's OID here for inheritance, or InvalidOid for * UNION ALL. This is only needed to help in generating error messages if * an attempt is made to reference a dropped parent column. */ Oid parent_reloid; /* OID of parent relation */ } AppendRelInfo; /* * 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 { 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 { NodeTag type; Index phid; /* ID for PH (unique within planner run) */ PlaceHolderVar *ph_var; /* copy of PlaceHolderVar tree */ Relids ph_eval_at; /* lowest level we can evaluate value at */ Relids ph_lateral; /* relids of contained lateral refs, if any */ Relids ph_needed; /* highest level the value is needed at */ int32 ph_width; /* estimated attribute width */ } PlaceHolderInfo; /* * This struct describes one potentially index-optimizable MIN/MAX aggregate * function. MinMaxAggPath contains a list of these, and if we accept that * path, the list is stored into root->minmax_aggs for use during setrefs.c. */ typedef struct MinMaxAggInfo { NodeTag type; Oid aggfnoid; /* pg_proc Oid of the aggregate */ Oid aggsortop; /* Oid of its sort operator */ Expr *target; /* expression we are aggregating on */ PlannerInfo *subroot; /* modified "root" for planning the subquery */ Path *path; /* access path for subquery */ Cost pathcost; /* estimated cost to fetch first row */ Param *param; /* param for subplan's output */ } MinMaxAggInfo; /* * At runtime, PARAM_EXEC slots are used to pass values around from one plan * node to another. They can be used to pass values down into subqueries (for * outer references in subqueries), or up out of subqueries (for the results * of a subplan), or from a NestLoop plan node into its inner relation (when * the inner scan is parameterized with values from the outer relation). * The planner is responsible for assigning nonconflicting PARAM_EXEC IDs to * the PARAM_EXEC Params it generates. * * Outer references are managed via root->plan_params, which is a list of * PlannerParamItems. While planning a subquery, each parent query level's * plan_params contains the values required from it by the current subquery. * During create_plan(), we use plan_params to track values that must be * passed from outer to inner sides of NestLoop plan nodes. * * The item a PlannerParamItem represents can be one of three kinds: * * A Var: the slot represents a variable of this level that must be passed * down because subqueries have outer references to it, or must be passed * from a NestLoop node to its inner scan. The varlevelsup value in the Var * will always be zero. * * A PlaceHolderVar: this works much like the Var case, except that the * entry is a PlaceHolderVar node with a contained expression. The PHV * will have phlevelsup = 0, and the contained expression is adjusted * to match in level. * * An Aggref (with an expression tree representing its argument): the slot * represents an aggregate expression that is an outer reference for some * subquery. The Aggref itself has agglevelsup = 0, and its argument tree * is adjusted to match in level. * * Note: we detect duplicate Var and PlaceHolderVar parameters and coalesce * them into one slot, but we do not bother to do that for Aggrefs. * The scope of duplicate-elimination only extends across the set of * parameters passed from one query level into a single subquery, or for * nestloop parameters across the set of nestloop parameters used in a single * query level. So there is no possibility of a PARAM_EXEC slot being used * for conflicting purposes. * * In addition, PARAM_EXEC slots are assigned for Params representing outputs * from subplans (values that are setParam items for those subplans). These * IDs need not be tracked via PlannerParamItems, since we do not need any * duplicate-elimination nor later processing of the represented expressions. * Instead, we just record the assignment of the slot number by appending to * root->glob->paramExecTypes. */ typedef struct PlannerParamItem { NodeTag type; Node *item; /* the Var, PlaceHolderVar, or Aggref */ int paramId; /* its assigned PARAM_EXEC slot number */ } PlannerParamItem; /* * When making cost estimates for a SEMI/ANTI/inner_unique join, there are * some correction factors that are needed in both nestloop and hash joins * to account for the fact that the executor can stop scanning inner rows * as soon as it finds a match to the current outer row. These numbers * depend only on the selected outer and inner join relations, not on the * particular paths used for them, so it's worthwhile to calculate them * just once per relation pair not once per considered path. This struct * is filled by compute_semi_anti_join_factors and must be passed along * to the join cost estimation functions. * * outer_match_frac is the fraction of the outer tuples that are * expected to have at least one match. * match_count is the average number of matches expected for * outer tuples that have at least one match. */ typedef struct SemiAntiJoinFactors { Selectivity outer_match_frac; Selectivity match_count; } SemiAntiJoinFactors; /* * Struct for extra information passed to subroutines of add_paths_to_joinrel * * restrictlist contains all of the RestrictInfo nodes for restriction * clauses that apply to this join * mergeclause_list is a list of RestrictInfo nodes for available * mergejoin clauses in this join * inner_unique is true if each outer tuple provably matches no more * than one inner tuple * sjinfo is extra info about special joins for selectivity estimation * semifactors is as shown above (only valid for SEMI/ANTI/inner_unique joins) * param_source_rels are OK targets for parameterization of result paths */ typedef struct JoinPathExtraData { List *restrictlist; List *mergeclause_list; bool inner_unique; SpecialJoinInfo *sjinfo; SemiAntiJoinFactors semifactors; Relids param_source_rels; } JoinPathExtraData; /* * Various flags indicating what kinds of grouping are possible. * * GROUPING_CAN_USE_SORT should be set if it's possible to perform * sort-based implementations of grouping. When grouping sets are in use, * this will be true if sorting is potentially usable for any of the grouping * sets, even if it's not usable for all of them. * * GROUPING_CAN_USE_HASH should be set if it's possible to perform * hash-based implementations of grouping. * * GROUPING_CAN_PARTIAL_AGG should be set if the aggregation is of a type * for which we support partial aggregation (not, for example, grouping sets). * It says nothing about parallel-safety or the availability of suitable paths. */ #define GROUPING_CAN_USE_SORT 0x0001 #define GROUPING_CAN_USE_HASH 0x0002 #define GROUPING_CAN_PARTIAL_AGG 0x0004 /* * What kind of partitionwise aggregation is in use? * * PARTITIONWISE_AGGREGATE_NONE: Not used. * * PARTITIONWISE_AGGREGATE_FULL: Aggregate each partition separately, and * append the results. * * PARTITIONWISE_AGGREGATE_PARTIAL: Partially aggregate each partition * separately, append the results, and then finalize aggregation. */ typedef enum { PARTITIONWISE_AGGREGATE_NONE, PARTITIONWISE_AGGREGATE_FULL, PARTITIONWISE_AGGREGATE_PARTIAL } PartitionwiseAggregateType; /* * Struct for extra information passed to subroutines of create_grouping_paths * * flags indicating what kinds of grouping are possible. * partial_costs_set is true if the agg_partial_costs and agg_final_costs * have been initialized. * agg_partial_costs gives partial aggregation costs. * agg_final_costs gives finalization costs. * target_parallel_safe is true if target is parallel safe. * havingQual gives list of quals to be applied after aggregation. * targetList gives list of columns to be projected. * patype is the type of partitionwise aggregation that is being performed. */ typedef struct { /* Data which remains constant once set. */ int flags; bool partial_costs_set; AggClauseCosts agg_partial_costs; AggClauseCosts agg_final_costs; /* Data which may differ across partitions. */ bool target_parallel_safe; Node *havingQual; List *targetList; PartitionwiseAggregateType patype; } GroupPathExtraData; /* * Struct for extra information passed to subroutines of grouping_planner * * limit_needed is true if we actually need a Limit plan node. * limit_tuples is an estimated bound on the number of output tuples, * or -1 if no LIMIT or couldn't estimate. * count_est and offset_est are the estimated values of the LIMIT and OFFSET * expressions computed by preprocess_limit() (see comments for * preprocess_limit() for more information). */ typedef struct { bool limit_needed; 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 { /* * Link to an Aggref expr this state value is for. * * There can be multiple identical Aggref's sharing the same per-agg. This * points to the first one of them. */ Aggref *representative_aggref; 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 */ 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 { List *args; Expr *aggfilter; /* Oid of the state transition function */ Oid transfn_oid; /* Oid of the serialization function or InvalidOid */ Oid serialfn_oid; /* Oid of the deserialization function or InvalidOid */ Oid deserialfn_oid; /* Oid of the combine function or InvalidOid */ Oid combinefn_oid; /* Oid of state value's datatype */ Oid aggtranstype; int32 aggtranstypmod; int transtypeLen; bool transtypeByVal; int32 aggtransspace; /* * initial value from pg_aggregate entry */ Datum initValue; bool initValueIsNull; } AggTransInfo; #endif /* PATHNODES_H */ pg_query-4.2.3/ext/pg_query/include/nodes/nodes.h0000644000004100000410000005160214510636647022072 0ustar www-datawww-data/*------------------------------------------------------------------------- * * nodes.h * Definitions for tagged nodes. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/nodes.h * *------------------------------------------------------------------------- */ #ifndef NODES_H #define NODES_H /* * The first field of every node is NodeTag. Each node created (with makeNode) * will have one of the following tags as the value of its first field. * * Note that inserting or deleting node types changes the numbers of other * node types later in the list. This is no problem during development, since * the node numbers are never stored on disk. But don't do it in a released * branch, because that would represent an ABI break for extensions. */ typedef enum NodeTag { T_Invalid = 0, /* * TAGS FOR EXECUTOR NODES (execnodes.h) */ T_IndexInfo, T_ExprContext, T_ProjectionInfo, T_JunkFilter, T_OnConflictSetState, T_MergeActionState, T_ResultRelInfo, T_EState, T_TupleTableSlot, /* * TAGS FOR PLAN NODES (plannodes.h) */ T_Plan, T_Result, T_ProjectSet, T_ModifyTable, T_Append, T_MergeAppend, T_RecursiveUnion, T_BitmapAnd, T_BitmapOr, T_Scan, T_SeqScan, T_SampleScan, T_IndexScan, T_IndexOnlyScan, T_BitmapIndexScan, T_BitmapHeapScan, T_TidScan, T_TidRangeScan, T_SubqueryScan, T_FunctionScan, T_ValuesScan, T_TableFuncScan, T_CteScan, T_NamedTuplestoreScan, T_WorkTableScan, T_ForeignScan, T_CustomScan, T_Join, T_NestLoop, T_MergeJoin, T_HashJoin, T_Material, T_Memoize, T_Sort, T_IncrementalSort, T_Group, T_Agg, T_WindowAgg, T_Unique, T_Gather, T_GatherMerge, T_Hash, T_SetOp, T_LockRows, T_Limit, /* these aren't subclasses of Plan: */ T_NestLoopParam, T_PlanRowMark, T_PartitionPruneInfo, T_PartitionedRelPruneInfo, T_PartitionPruneStepOp, T_PartitionPruneStepCombine, T_PlanInvalItem, /* * TAGS FOR PLAN STATE NODES (execnodes.h) * * These should correspond one-to-one with Plan node types. */ T_PlanState, T_ResultState, T_ProjectSetState, T_ModifyTableState, T_AppendState, T_MergeAppendState, T_RecursiveUnionState, T_BitmapAndState, T_BitmapOrState, T_ScanState, T_SeqScanState, T_SampleScanState, T_IndexScanState, T_IndexOnlyScanState, T_BitmapIndexScanState, T_BitmapHeapScanState, T_TidScanState, T_TidRangeScanState, T_SubqueryScanState, T_FunctionScanState, T_TableFuncScanState, T_ValuesScanState, T_CteScanState, T_NamedTuplestoreScanState, T_WorkTableScanState, T_ForeignScanState, T_CustomScanState, T_JoinState, T_NestLoopState, T_MergeJoinState, T_HashJoinState, T_MaterialState, T_MemoizeState, T_SortState, T_IncrementalSortState, T_GroupState, T_AggState, T_WindowAggState, T_UniqueState, T_GatherState, T_GatherMergeState, T_HashState, T_SetOpState, T_LockRowsState, T_LimitState, /* * TAGS FOR PRIMITIVE NODES (primnodes.h) */ T_Alias, T_RangeVar, T_TableFunc, T_Var, T_Const, T_Param, T_Aggref, T_GroupingFunc, T_WindowFunc, T_SubscriptingRef, T_FuncExpr, T_NamedArgExpr, T_OpExpr, T_DistinctExpr, T_NullIfExpr, T_ScalarArrayOpExpr, T_BoolExpr, T_SubLink, T_SubPlan, T_AlternativeSubPlan, T_FieldSelect, T_FieldStore, T_RelabelType, T_CoerceViaIO, T_ArrayCoerceExpr, T_ConvertRowtypeExpr, T_CollateExpr, T_CaseExpr, T_CaseWhen, T_CaseTestExpr, T_ArrayExpr, T_RowExpr, T_RowCompareExpr, T_CoalesceExpr, T_MinMaxExpr, T_SQLValueFunction, T_XmlExpr, T_NullTest, T_BooleanTest, T_CoerceToDomain, T_CoerceToDomainValue, T_SetToDefault, T_CurrentOfExpr, T_NextValueExpr, T_InferenceElem, T_TargetEntry, T_RangeTblRef, T_JoinExpr, T_FromExpr, T_OnConflictExpr, T_IntoClause, /* * TAGS FOR EXPRESSION STATE NODES (execnodes.h) * * ExprState represents the evaluation state for a whole expression tree. * Most Expr-based plan nodes do not have a corresponding expression state * node, they're fully handled within execExpr* - but sometimes the state * needs to be shared with other parts of the executor, as for example * with SubPlanState, which nodeSubplan.c has to modify. */ T_ExprState, T_WindowFuncExprState, T_SetExprState, T_SubPlanState, T_DomainConstraintState, /* * TAGS FOR PLANNER NODES (pathnodes.h) */ T_PlannerInfo, T_PlannerGlobal, T_RelOptInfo, T_IndexOptInfo, T_ForeignKeyOptInfo, T_ParamPathInfo, T_Path, T_IndexPath, T_BitmapHeapPath, T_BitmapAndPath, T_BitmapOrPath, T_TidPath, T_TidRangePath, T_SubqueryScanPath, T_ForeignPath, T_CustomPath, T_NestPath, T_MergePath, T_HashPath, T_AppendPath, T_MergeAppendPath, T_GroupResultPath, T_MaterialPath, T_MemoizePath, T_UniquePath, T_GatherPath, T_GatherMergePath, T_ProjectionPath, T_ProjectSetPath, T_SortPath, T_IncrementalSortPath, T_GroupPath, T_UpperUniquePath, T_AggPath, T_GroupingSetsPath, T_MinMaxAggPath, T_WindowAggPath, T_SetOpPath, T_RecursiveUnionPath, T_LockRowsPath, T_ModifyTablePath, T_LimitPath, /* these aren't subclasses of Path: */ T_EquivalenceClass, T_EquivalenceMember, T_PathKey, T_PathKeyInfo, T_PathTarget, T_RestrictInfo, T_IndexClause, T_PlaceHolderVar, T_SpecialJoinInfo, T_AppendRelInfo, T_RowIdentityVarInfo, T_PlaceHolderInfo, T_MinMaxAggInfo, T_PlannerParamItem, T_RollupData, T_GroupingSetData, T_StatisticExtInfo, T_MergeAction, /* * TAGS FOR MEMORY NODES (memnodes.h) */ T_AllocSetContext, T_SlabContext, T_GenerationContext, /* * TAGS FOR VALUE NODES (value.h) */ T_Integer, T_Float, T_Boolean, T_String, T_BitString, /* * TAGS FOR LIST NODES (pg_list.h) */ T_List, T_IntList, T_OidList, /* * TAGS FOR EXTENSIBLE NODES (extensible.h) */ T_ExtensibleNode, /* * TAGS FOR STATEMENT NODES (mostly in parsenodes.h) */ T_RawStmt, T_Query, T_PlannedStmt, T_InsertStmt, T_DeleteStmt, T_UpdateStmt, T_MergeStmt, T_SelectStmt, T_ReturnStmt, T_PLAssignStmt, T_AlterTableStmt, T_AlterTableCmd, T_AlterDomainStmt, T_SetOperationStmt, T_GrantStmt, T_GrantRoleStmt, T_AlterDefaultPrivilegesStmt, T_ClosePortalStmt, T_ClusterStmt, T_CopyStmt, T_CreateStmt, T_DefineStmt, T_DropStmt, T_TruncateStmt, T_CommentStmt, T_FetchStmt, T_IndexStmt, T_CreateFunctionStmt, T_AlterFunctionStmt, T_DoStmt, T_RenameStmt, T_RuleStmt, T_NotifyStmt, T_ListenStmt, T_UnlistenStmt, T_TransactionStmt, T_ViewStmt, T_LoadStmt, T_CreateDomainStmt, T_CreatedbStmt, T_DropdbStmt, T_VacuumStmt, T_ExplainStmt, T_CreateTableAsStmt, T_CreateSeqStmt, T_AlterSeqStmt, T_VariableSetStmt, T_VariableShowStmt, T_DiscardStmt, T_CreateTrigStmt, T_CreatePLangStmt, T_CreateRoleStmt, T_AlterRoleStmt, T_DropRoleStmt, T_LockStmt, T_ConstraintsSetStmt, T_ReindexStmt, T_CheckPointStmt, T_CreateSchemaStmt, T_AlterDatabaseStmt, T_AlterDatabaseRefreshCollStmt, T_AlterDatabaseSetStmt, T_AlterRoleSetStmt, T_CreateConversionStmt, T_CreateCastStmt, T_CreateOpClassStmt, T_CreateOpFamilyStmt, T_AlterOpFamilyStmt, T_PrepareStmt, T_ExecuteStmt, T_DeallocateStmt, T_DeclareCursorStmt, T_CreateTableSpaceStmt, T_DropTableSpaceStmt, T_AlterObjectDependsStmt, T_AlterObjectSchemaStmt, T_AlterOwnerStmt, T_AlterOperatorStmt, T_AlterTypeStmt, T_DropOwnedStmt, T_ReassignOwnedStmt, T_CompositeTypeStmt, T_CreateEnumStmt, T_CreateRangeStmt, T_AlterEnumStmt, T_AlterTSDictionaryStmt, T_AlterTSConfigurationStmt, T_CreateFdwStmt, T_AlterFdwStmt, T_CreateForeignServerStmt, T_AlterForeignServerStmt, T_CreateUserMappingStmt, T_AlterUserMappingStmt, T_DropUserMappingStmt, T_AlterTableSpaceOptionsStmt, T_AlterTableMoveAllStmt, T_SecLabelStmt, T_CreateForeignTableStmt, T_ImportForeignSchemaStmt, T_CreateExtensionStmt, T_AlterExtensionStmt, T_AlterExtensionContentsStmt, T_CreateEventTrigStmt, T_AlterEventTrigStmt, T_RefreshMatViewStmt, T_ReplicaIdentityStmt, T_AlterSystemStmt, T_CreatePolicyStmt, T_AlterPolicyStmt, T_CreateTransformStmt, T_CreateAmStmt, T_CreatePublicationStmt, T_AlterPublicationStmt, T_CreateSubscriptionStmt, T_AlterSubscriptionStmt, T_DropSubscriptionStmt, T_CreateStatsStmt, T_AlterCollationStmt, T_CallStmt, T_AlterStatsStmt, /* * TAGS FOR PARSE TREE NODES (parsenodes.h) */ T_A_Expr, T_ColumnRef, T_ParamRef, T_A_Const, T_FuncCall, T_A_Star, T_A_Indices, T_A_Indirection, T_A_ArrayExpr, T_ResTarget, T_MultiAssignRef, T_TypeCast, T_CollateClause, T_SortBy, T_WindowDef, T_RangeSubselect, T_RangeFunction, T_RangeTableSample, T_RangeTableFunc, T_RangeTableFuncCol, T_TypeName, T_ColumnDef, T_IndexElem, T_StatsElem, T_Constraint, T_DefElem, T_RangeTblEntry, T_RangeTblFunction, T_TableSampleClause, T_WithCheckOption, T_SortGroupClause, T_GroupingSet, T_WindowClause, T_ObjectWithArgs, T_AccessPriv, T_CreateOpClassItem, T_TableLikeClause, T_FunctionParameter, T_LockingClause, T_RowMarkClause, T_XmlSerialize, T_WithClause, T_InferClause, T_OnConflictClause, T_CTESearchClause, T_CTECycleClause, T_CommonTableExpr, T_MergeWhenClause, T_RoleSpec, T_TriggerTransition, T_PartitionElem, T_PartitionSpec, T_PartitionBoundSpec, T_PartitionRangeDatum, T_PartitionCmd, T_VacuumRelation, T_PublicationObjSpec, T_PublicationTable, /* * TAGS FOR REPLICATION GRAMMAR PARSE NODES (replnodes.h) */ T_IdentifySystemCmd, T_BaseBackupCmd, T_CreateReplicationSlotCmd, T_DropReplicationSlotCmd, T_ReadReplicationSlotCmd, T_StartReplicationCmd, T_TimeLineHistoryCmd, /* * TAGS FOR RANDOM OTHER STUFF * * These are objects that aren't part of parse/plan/execute node tree * structures, but we give them NodeTags anyway for identification * purposes (usually because they are involved in APIs where we want to * pass multiple object types through the same pointer). */ T_TriggerData, /* in commands/trigger.h */ T_EventTriggerData, /* in commands/event_trigger.h */ T_ReturnSetInfo, /* in nodes/execnodes.h */ T_WindowObjectData, /* private in nodeWindowAgg.c */ T_TIDBitmap, /* in nodes/tidbitmap.h */ T_InlineCodeBlock, /* in nodes/parsenodes.h */ T_FdwRoutine, /* in foreign/fdwapi.h */ T_IndexAmRoutine, /* in access/amapi.h */ T_TableAmRoutine, /* in access/tableam.h */ T_TsmRoutine, /* in access/tsmapi.h */ T_ForeignKeyCacheInfo, /* in utils/rel.h */ T_CallContext, /* in nodes/parsenodes.h */ T_SupportRequestSimplify, /* in nodes/supportnodes.h */ T_SupportRequestSelectivity, /* in nodes/supportnodes.h */ T_SupportRequestCost, /* in nodes/supportnodes.h */ T_SupportRequestRows, /* in nodes/supportnodes.h */ T_SupportRequestIndexCondition, /* in nodes/supportnodes.h */ T_SupportRequestWFuncMonotonic /* in nodes/supportnodes.h */ } NodeTag; /* * The first field of a node of any type is guaranteed to be the NodeTag. * Hence the type of any node can be gotten by casting it to Node. Declaring * a variable to be of Node * (instead of void *) can also facilitate * debugging. */ typedef struct Node { NodeTag type; } Node; #define nodeTag(nodeptr) (((const Node*)(nodeptr))->type) /* * newNode - * create a new node of the specified size and tag the node with the * specified tag. * * !WARNING!: Avoid using newNode directly. You should be using the * macro makeNode. eg. to create a Query node, use makeNode(Query) * * Note: the size argument should always be a compile-time constant, so the * apparent risk of multiple evaluation doesn't matter in practice. */ #ifdef __GNUC__ /* With GCC, we can use a compound statement within an expression */ #define newNode(size, tag) \ ({ Node *_result; \ AssertMacro((size) >= sizeof(Node)); /* need the tag, at least */ \ _result = (Node *) palloc0fast(size); \ _result->type = (tag); \ _result; \ }) #else /* * There is no way to dereference the palloc'ed pointer to assign the * tag, and also return the pointer itself, so we need a holder variable. * Fortunately, this macro isn't recursive so we just define * a global variable for this purpose. */ extern PGDLLIMPORT Node *newNodeMacroHolder; #define newNode(size, tag) \ ( \ AssertMacro((size) >= sizeof(Node)), /* need the tag, at least */ \ newNodeMacroHolder = (Node *) palloc0fast(size), \ newNodeMacroHolder->type = (tag), \ newNodeMacroHolder \ ) #endif /* __GNUC__ */ #define makeNode(_type_) ((_type_ *) newNode(sizeof(_type_),T_##_type_)) #define NodeSetTag(nodeptr,t) (((Node*)(nodeptr))->type = (t)) #define IsA(nodeptr,_type_) (nodeTag(nodeptr) == T_##_type_) /* * castNode(type, ptr) casts ptr to "type *", and if assertions are enabled, * verifies that the node has the appropriate type (using its nodeTag()). * * Use an inline function when assertions are enabled, to avoid multiple * evaluations of the ptr argument (which could e.g. be a function call). */ #ifdef USE_ASSERT_CHECKING static inline Node * castNodeImpl(NodeTag type, void *ptr) { Assert(ptr == NULL || nodeTag(ptr) == type); return (Node *) ptr; } #define castNode(_type_, nodeptr) ((_type_ *) castNodeImpl(T_##_type_, nodeptr)) #else #define castNode(_type_, nodeptr) ((_type_ *) (nodeptr)) #endif /* USE_ASSERT_CHECKING */ /* ---------------------------------------------------------------- * extern declarations follow * ---------------------------------------------------------------- */ /* * nodes/{outfuncs.c,print.c} */ struct Bitmapset; /* not to include bitmapset.h here */ struct StringInfoData; /* not to include stringinfo.h here */ extern void outNode(struct StringInfoData *str, const void *obj); extern void outToken(struct StringInfoData *str, const char *s); extern void outBitmapset(struct StringInfoData *str, const struct Bitmapset *bms); extern void outDatum(struct StringInfoData *str, uintptr_t value, int typlen, bool typbyval); extern char *nodeToString(const void *obj); extern char *bmsToString(const struct Bitmapset *bms); /* * nodes/{readfuncs.c,read.c} */ extern void *stringToNode(const char *str); #ifdef WRITE_READ_PARSE_PLAN_TREES extern void *stringToNodeWithLocations(const char *str); #endif extern struct Bitmapset *readBitmapset(void); extern uintptr_t readDatum(bool typbyval); extern bool *readBoolCols(int numCols); extern int *readIntCols(int numCols); extern Oid *readOidCols(int numCols); extern int16 *readAttrNumberCols(int numCols); /* * nodes/copyfuncs.c */ extern void *copyObjectImpl(const void *obj); /* cast result back to argument type, if supported by compiler */ #ifdef HAVE_TYPEOF #define copyObject(obj) ((typeof(obj)) copyObjectImpl(obj)) #else #define copyObject(obj) copyObjectImpl(obj) #endif /* * nodes/equalfuncs.c */ extern bool equal(const void *a, const void *b); /* * Typedefs for identifying qualifier selectivities and plan costs as such. * These are just plain "double"s, but declaring a variable as Selectivity * or Cost makes the intent more obvious. * * These could have gone into plannodes.h or some such, but many files * depend on them... */ typedef double Selectivity; /* fraction of tuples a qualifier will pass */ typedef double Cost; /* execution cost (in page-access units) */ 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 */ /* * These codes are used internally in the planner, but are not supported * by the executor (nor, indeed, by most of the planner). */ JOIN_UNIQUE_OUTER, /* LHS path must be made unique */ JOIN_UNIQUE_INNER /* RHS path must be made unique */ /* * We might need additional join types someday. */ } JoinType; /* * OUTER joins are those for which pushed-down quals must behave differently * from the join's own quals. This is in fact everything except INNER and * SEMI joins. However, this macro must also exclude the JOIN_UNIQUE symbols * since those are temporary proxies for what will eventually be an INNER * join. * * Note: semijoins are a hybrid case, but we choose to treat them as not * being outer joins. This is okay principally because the SQL syntax makes * it impossible to have a pushed-down qual that refers to the inner relation * of a semijoin; so there is no strong need to distinguish join quals from * pushed-down quals. This is convenient because for almost all purposes, * quals attached to a semijoin can be treated the same as innerjoin quals. */ #define IS_OUTER_JOIN(jointype) \ (((1 << (jointype)) & \ ((1 << JOIN_LEFT) | \ (1 << JOIN_FULL) | \ (1 << JOIN_RIGHT) | \ (1 << JOIN_ANTI))) != 0) /* * AggStrategy - * overall execution strategies for Agg plan nodes * * This is needed in both pathnodes.h and plannodes.h, so put it here... */ typedef enum AggStrategy { AGG_PLAIN, /* simple agg across all input rows */ AGG_SORTED, /* grouped agg, input must be sorted */ AGG_HASHED, /* grouped agg, use internal hashtable */ AGG_MIXED /* grouped agg, hash and sort both used */ } AggStrategy; /* * AggSplit - * splitting (partial aggregation) modes for Agg plan nodes * * This is needed in both pathnodes.h and plannodes.h, so put it here... */ /* Primitive options supported by nodeAgg.c: */ #define AGGSPLITOP_COMBINE 0x01 /* substitute combinefn for transfn */ #define AGGSPLITOP_SKIPFINAL 0x02 /* skip finalfn, return state as-is */ #define AGGSPLITOP_SERIALIZE 0x04 /* apply serialfn to output */ #define AGGSPLITOP_DESERIALIZE 0x08 /* apply deserialfn to input */ /* Supported operating modes (i.e., useful combinations of these options): */ typedef enum AggSplit { /* Basic, non-split aggregation: */ AGGSPLIT_SIMPLE = 0, /* Initial phase of partial aggregation, with serialization: */ AGGSPLIT_INITIAL_SERIAL = AGGSPLITOP_SKIPFINAL | AGGSPLITOP_SERIALIZE, /* Final phase of partial aggregation, with deserialization: */ AGGSPLIT_FINAL_DESERIAL = AGGSPLITOP_COMBINE | AGGSPLITOP_DESERIALIZE } AggSplit; /* Test whether an AggSplit value selects each primitive option: */ #define DO_AGGSPLIT_COMBINE(as) (((as) & AGGSPLITOP_COMBINE) != 0) #define DO_AGGSPLIT_SKIPFINAL(as) (((as) & AGGSPLITOP_SKIPFINAL) != 0) #define DO_AGGSPLIT_SERIALIZE(as) (((as) & AGGSPLITOP_SERIALIZE) != 0) #define DO_AGGSPLIT_DESERIALIZE(as) (((as) & AGGSPLITOP_DESERIALIZE) != 0) /* * SetOpCmd and SetOpStrategy - * overall semantics and execution strategies for SetOp plan nodes * * This is needed in both pathnodes.h and plannodes.h, so put it here... */ typedef enum SetOpCmd { SETOPCMD_INTERSECT, SETOPCMD_INTERSECT_ALL, SETOPCMD_EXCEPT, SETOPCMD_EXCEPT_ALL } SetOpCmd; typedef enum SetOpStrategy { SETOP_SORTED, /* input must be sorted */ SETOP_HASHED /* use internal hashtable */ } SetOpStrategy; /* * OnConflictAction - * "ON CONFLICT" clause type of query * * This is needed in both parsenodes.h and plannodes.h, so put it here... */ typedef enum OnConflictAction { ONCONFLICT_NONE, /* No "ON CONFLICT" clause */ ONCONFLICT_NOTHING, /* ON CONFLICT ... DO NOTHING */ ONCONFLICT_UPDATE /* ON CONFLICT ... DO UPDATE */ } OnConflictAction; /* * LimitOption - * LIMIT option of query * * This is needed in both parsenodes.h and plannodes.h, so put it here... */ typedef enum LimitOption { LIMIT_OPTION_DEFAULT, /* No limit present */ LIMIT_OPTION_COUNT, /* FETCH FIRST... ONLY */ LIMIT_OPTION_WITH_TIES, /* FETCH FIRST... WITH TIES */ } LimitOption; #endif /* NODES_H */ pg_query-4.2.3/ext/pg_query/include/nodes/execnodes.h0000644000004100000410000030434314510636647022742 0ustar www-datawww-data/*------------------------------------------------------------------------- * * execnodes.h * definitions for executor state nodes * * * Portions Copyright (c) 1996-2022, 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/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 is the top-level node for expression evaluation. * It contains instructions (in ->steps) to evaluate the expression. * ---------------- */ typedef Datum (*ExprStateEvalFunc) (struct ExprState *expression, struct ExprContext *econtext, bool *isNull); /* Bits in ExprState->flags (see also execExpr.h for private flag bits): */ /* expression is for use with ExecQual() */ #define EEO_FLAG_IS_QUAL (1 << 0) typedef struct ExprState { NodeTag 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; } 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? * ParallelWorkers # of workers requested (excludes leader) * Am Oid of index AM * AmCache private cache area for index AM * Context memory context holding this IndexInfo * * ii_Concurrent, ii_BrokenHotChain, and ii_ParallelWorkers are used only * during index build; they're conventionally zeroed otherwise. * ---------------- */ typedef struct IndexInfo { NodeTag type; int ii_NumIndexAttrs; /* total number of columns in index */ int ii_NumIndexKeyAttrs; /* number of key columns in index */ AttrNumber ii_IndexAttrNumbers[INDEX_MAX_KEYS]; List *ii_Expressions; /* list of Expr */ List *ii_ExpressionsState; /* list of ExprState */ List *ii_Predicate; /* list of Expr */ ExprState *ii_PredicateState; Oid *ii_ExclusionOps; /* array with one entry per column */ Oid *ii_ExclusionProcs; /* array with one entry per column */ uint16 *ii_ExclusionStrats; /* array with one entry per column */ Oid *ii_UniqueOps; /* array with one entry per column */ Oid *ii_UniqueProcs; /* array with one entry per column */ uint16 *ii_UniqueStrats; /* array with one entry per column */ Datum *ii_OpclassOptions; /* array with one entry per column */ bool ii_Unique; bool ii_NullsNotDistinct; bool ii_ReadyForInserts; bool ii_CheckedUnchanged; bool ii_IndexUnchanged; bool ii_Concurrent; bool ii_BrokenHotChain; int ii_ParallelWorkers; Oid ii_Am; void *ii_AmCache; MemoryContext ii_Context; } IndexInfo; /* ---------------- * ExprContext_CB * * List of callbacks to be called at ExprContext shutdown. * ---------------- */ typedef void (*ExprContextCallbackFunction) (Datum arg); typedef struct ExprContext_CB { struct ExprContext_CB *next; ExprContextCallbackFunction function; Datum arg; } ExprContext_CB; /* ---------------- * ExprContext * * This class holds the "current context" information * needed to evaluate expressions for doing tuple qualifications * and tuple projections. For example, if an expression refers * to an attribute in the current inner tuple then we need to know * what the current inner tuple is and so we look at the expression * context. * * There are two memory contexts associated with an ExprContext: * * ecxt_per_query_memory is a query-lifespan context, typically the same * context the ExprContext node itself is allocated in. This context * can be used for purposes such as storing function call cache info. * * ecxt_per_tuple_memory is a short-term context for expression results. * As the name suggests, it will typically be reset once per tuple, * before we begin to evaluate expressions for that tuple. Each * ExprContext normally has its very own per-tuple memory context. * * CurrentMemoryContext should be set to ecxt_per_tuple_memory before * calling ExecEvalExpr() --- see ExecEvalExprSwitchContext(). * ---------------- */ typedef struct ExprContext { NodeTag type; /* Tuples that Var nodes in expression may refer to */ #define FIELDNO_EXPRCONTEXT_SCANTUPLE 1 TupleTableSlot *ecxt_scantuple; #define FIELDNO_EXPRCONTEXT_INNERTUPLE 2 TupleTableSlot *ecxt_innertuple; #define FIELDNO_EXPRCONTEXT_OUTERTUPLE 3 TupleTableSlot *ecxt_outertuple; /* Memory contexts for expression evaluation --- see notes above */ MemoryContext ecxt_per_query_memory; MemoryContext ecxt_per_tuple_memory; /* Values to substitute for Param nodes in expression */ ParamExecData *ecxt_param_exec_vals; /* for PARAM_EXEC params */ ParamListInfo ecxt_param_list_info; /* for other param types */ /* * Values to substitute for Aggref nodes in the expressions of an Agg * node, or for WindowFunc nodes within a WindowAgg node. */ #define FIELDNO_EXPRCONTEXT_AGGVALUES 8 Datum *ecxt_aggvalues; /* precomputed values for aggs/windowfuncs */ #define FIELDNO_EXPRCONTEXT_AGGNULLS 9 bool *ecxt_aggnulls; /* null flags for aggs/windowfuncs */ /* Value to substitute for CaseTestExpr nodes in expression */ #define FIELDNO_EXPRCONTEXT_CASEDATUM 10 Datum caseValue_datum; #define FIELDNO_EXPRCONTEXT_CASENULL 11 bool caseValue_isNull; /* Value to substitute for CoerceToDomainValue nodes in expression */ #define FIELDNO_EXPRCONTEXT_DOMAINDATUM 12 Datum domainValue_datum; #define FIELDNO_EXPRCONTEXT_DOMAINNULL 13 bool domainValue_isNull; /* Link to containing EState (NULL if a standalone ExprContext) */ struct EState *ecxt_estate; /* Functions to call back when ExprContext is shut down or rescanned */ ExprContext_CB *ecxt_callbacks; } ExprContext; /* * Set-result status used when evaluating functions potentially returning a * set. */ typedef enum { ExprSingleResult, /* expression does not return a set */ ExprMultipleResult, /* this result is an element of a set */ ExprEndResult /* there are no more elements in the set */ } ExprDoneCond; /* * Return modes for functions returning sets. Note values must be chosen * as separate bits so that a bitmask can be formed to indicate supported * modes. SFRM_Materialize_Random and SFRM_Materialize_Preferred are * auxiliary flags about SFRM_Materialize mode, rather than separate modes. */ typedef enum { SFRM_ValuePerCall = 0x01, /* one value returned per call */ SFRM_Materialize = 0x02, /* result set instantiated in Tuplestore */ SFRM_Materialize_Random = 0x04, /* Tuplestore needs randomAccess */ SFRM_Materialize_Preferred = 0x08 /* caller prefers Tuplestore */ } SetFunctionReturnMode; /* * When calling a function that might return a set (multiple rows), * a node of this type is passed as fcinfo->resultinfo to allow * return status to be passed back. A function returning set should * raise an error if no such resultinfo is provided. */ typedef struct ReturnSetInfo { NodeTag type; /* values set by caller: */ ExprContext *econtext; /* context function is being called in */ TupleDesc expectedDesc; /* tuple descriptor expected by caller */ int allowedModes; /* bitmask: return modes caller can handle */ /* result status from function (but pre-initialized by caller): */ SetFunctionReturnMode returnMode; /* actual return mode */ ExprDoneCond isDone; /* status for ValuePerCall mode */ /* fields filled by function in Materialize return mode: */ Tuplestorestate *setResult; /* holds the complete returned tuple set */ TupleDesc setDesc; /* actual descriptor for returned tuples */ } ReturnSetInfo; /* ---------------- * ProjectionInfo node information * * This is all the information needed to perform projections --- * that is, form new tuples by evaluation of targetlist expressions. * Nodes which need to do projections create one of these. * * The target tuple slot is kept in ProjectionInfo->pi_state.resultslot. * ExecProject() evaluates the tlist, forms a tuple, and stores it * in the given slot. Note that the result will be a "virtual" tuple * unless ExecMaterializeSlot() is then called to force it to be * converted to a physical tuple. The slot must have a tupledesc * that matches the output of the tlist! * ---------------- */ typedef struct ProjectionInfo { NodeTag type; /* instructions to evaluate projection */ ExprState pi_state; /* expression context in which to evaluate expression */ ExprContext *pi_exprContext; } ProjectionInfo; /* ---------------- * JunkFilter * * This class is used to store information regarding junk attributes. * A junk attribute is an attribute in a tuple that is needed only for * storing intermediate information in the executor, and does not belong * in emitted tuples. For example, when we do an UPDATE query, * the planner adds a "junk" entry to the targetlist so that the tuples * returned to ExecutePlan() contain an extra attribute: the ctid of * the tuple to be updated. This is needed to do the update, but we * don't want the ctid to be part of the stored new tuple! So, we * apply a "junk filter" to remove the junk attributes and form the * real output tuple. The junkfilter code also provides routines to * extract the values of the junk attribute(s) from the input tuple. * * targetList: the original target list (including junk attributes). * cleanTupType: the tuple descriptor for the "clean" tuple (with * junk attributes removed). * cleanMap: A map with the correspondence between the non-junk * attribute numbers of the "original" tuple and the * attribute numbers of the "clean" tuple. * resultSlot: tuple slot used to hold cleaned tuple. * ---------------- */ 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; /* 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; /* 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; /* array of stored generated columns expr states */ ExprState **ri_GeneratedExprs; /* number of stored generated columns we need to compute */ int ri_NumGeneratedNeeded; /* 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 */ List *ri_matchedMergeAction; List *ri_notMatchedMergeAction; /* partition check expression state (NULL if not set up yet) */ ExprState *ri_PartitionCheckExpr; /* * 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. * * RootToPartitionMap and PartitionTupleSlot, initialized by * ExecInitRoutingInfo, are non-NULL if partition has a different tuple * format than the root table. */ struct ResultRelInfo *ri_RootResultRelInfo; TupleConversionMap *ri_RootToPartitionMap; TupleTableSlot *ri_PartitionTupleSlot; /* * 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; /* 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 */ 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 */ int es_top_eflags; /* eflags passed to ExecutorStart */ int es_instrument; /* OR of InstrumentOption flags */ bool es_finished; /* true when ExecutorFinish is done */ List *es_exprcontexts; /* List of ExprContexts within EState */ List *es_subplanstates; /* List of PlanState for SubPlans */ List *es_auxmodifytables; /* List of secondary ModifyTableStates */ /* * this ExprContext is for per-output-tuple operations, such as constraint * checks and index-value computations. It will be reset for each output * tuple. Note that it will be created only if needed. */ ExprContext *es_per_tuple_exprcontext; /* * If not NULL, this is an EPQState's EState. This is a field in EState * both to allow EvalPlanQual aware executor nodes to detect that they * need to perform EPQ related work, and to provide necessary information * to do so. */ struct EPQState *es_epq_active; bool es_use_parallel_mode; /* can we use parallel workers? */ /* The per-query shared memory area to use for parallel execution. */ struct dsa_area *es_query_dsa; /* * JIT information. es_jit_flags indicates whether JIT should be performed * and with which options. es_jit is created on-demand when JITing is * performed. * * es_jit_worker_instr is the combined, on demand allocated, * instrumentation from all workers. The leader's instrumentation is kept * separate, and is combined on demand by ExplainPrintJITSummary(). */ int es_jit_flags; struct JitContext *es_jit; struct JitInstrumentation *es_jit_worker_instr; } EState; /* * ExecRowMark - * runtime representation of FOR [KEY] UPDATE/SHARE clauses * * When doing UPDATE, DELETE, or SELECT FOR [KEY] UPDATE/SHARE, we will have an * ExecRowMark for each non-target relation in the query (except inheritance * parent RTEs, which can be ignored at runtime). Virtual relations such as * subqueries-in-FROM will have an ExecRowMark with relation == NULL. See * PlanRowMark for details about most of the fields. In addition to fields * directly derived from PlanRowMark, we store an activity flag (to denote * inactive children of inheritance trees), curCtid, which is used by the * WHERE CURRENT OF code, and ermExtra, which is available for use by the plan * node that sources the relation (e.g., for a foreign table the FDW can use * ermExtra to hold information). * * EState->es_rowmarks is an array of these structs, indexed by RT index, * with NULLs for irrelevant RT indexes. es_rowmarks itself is NULL if * there are no rowmarks. */ typedef struct ExecRowMark { Relation relation; /* opened and suitably locked relation */ Oid relid; /* its OID (or InvalidOid, if subquery) */ Index rti; /* its range table index */ Index prti; /* parent range table index, if child */ Index rowmarkId; /* unique identifier for resjunk columns */ RowMarkType markType; /* see enum in nodes/plannodes.h */ LockClauseStrength strength; /* LockingClause's strength, or LCS_NONE */ LockWaitPolicy waitPolicy; /* NOWAIT and SKIP LOCKED */ bool ermActive; /* is this mark relevant for current tuple? */ ItemPointerData curCtid; /* ctid of currently locked tuple, if any */ void *ermExtra; /* available for use by relation source node */ } ExecRowMark; /* * ExecAuxRowMark - * additional runtime representation of FOR [KEY] UPDATE/SHARE clauses * * Each LockRows and ModifyTable node keeps a list of the rowmarks it needs to * deal with. In addition to a pointer to the related entry in es_rowmarks, * this struct carries the column number(s) of the resjunk columns associated * with the rowmark (see comments for PlanRowMark for more detail). */ 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; /* ---------------------------------------------------------------- * Executor State Trees * * An executing query has a PlanState tree paralleling the Plan tree * that describes the plan. * ---------------------------------------------------------------- */ /* ---------------- * ExecProcNodeMtd * * This is the method called by ExecProcNode to return the next tuple * from an executor node. It returns NULL, or an empty TupleTableSlot, * if no more tuples are available. * ---------------- */ typedef TupleTableSlot *(*ExecProcNodeMtd) (struct PlanState *pstate); /* ---------------- * PlanState node * * We never actually instantiate any PlanState nodes; this is just the common * abstract superclass for all PlanState-type nodes. * ---------------- */ typedef struct PlanState { NodeTag type; Plan *plan; /* associated Plan node */ EState *state; /* at execution time, states of individual * nodes point to one EState for the whole * top-level plan */ ExecProcNodeMtd ExecProcNode; /* function to return next tuple */ ExecProcNodeMtd ExecProcNodeReal; /* actual function, if above is a * wrapper */ Instrumentation *instrument; /* Optional runtime stats for this node */ WorkerInstrumentation *worker_instrument; /* per-worker instrumentation */ /* Per-worker JIT instrumentation */ struct SharedJitInstrumentation *worker_jit_instrument; /* * Common structural data for all Plan types. These links to subsidiary * state trees parallel links in the associated plan tree (except for the * subPlan list, which does not exist in the plan tree). */ ExprState *qual; /* boolean qual condition */ struct PlanState *lefttree; /* input plan tree(s) */ struct PlanState *righttree; List *initPlan; /* Init SubPlanState nodes (un-correlated expr * subselects) */ List *subPlan; /* SubPlanState nodes in my expressions */ /* * State for management of parameter-change-driven rescanning */ Bitmapset *chgParam; /* set of IDs of changed Params */ /* * Other run-time state needed by most if not all node types. */ TupleDesc ps_ResultTupleDesc; /* node's return type */ TupleTableSlot *ps_ResultTupleSlot; /* slot for my result tuples */ ExprContext *ps_ExprContext; /* node's expression-evaluation context */ ProjectionInfo *ps_ProjInfo; /* info for doing tuple projection */ 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 { /* Initialized at EvalPlanQualInit() time: */ EState *parentestate; /* main query's EState */ int epqParam; /* ID of Param to force scan node re-eval */ /* * Tuples to be substituted by scan nodes. They need to set up, before * calling EvalPlanQual()/EvalPlanQualNext(), into the slot returned by * EvalPlanQualSlot(scanrelid). The array is indexed by scanrelid - 1. */ List *tuple_table; /* tuple table for relsubs_slot */ TupleTableSlot **relsubs_slot; /* * Initialized by EvalPlanQualInit(), may be changed later with * EvalPlanQualSetPlan(): */ Plan *plan; /* plan tree to be executed */ List *arowMarks; /* ExecAuxRowMarks (non-locking only) */ /* * The original output tuple to be rechecked. Set by * EvalPlanQualSetSlot(), before EvalPlanQualNext() or EvalPlanQual() may * be called. */ TupleTableSlot *origslot; /* Initialized or reset by EvalPlanQualBegin(): */ EState *recheckestate; /* EState for EPQ execution, see above */ /* * Rowmarks that can be fetched on-demand using * EvalPlanQualFetchRowMark(), indexed by scanrelid - 1. Only non-locking * rowmarks. */ ExecAuxRowMark **relsubs_rowmark; /* * True if a relation's EPQ tuple has been fetched for relation, indexed * by scanrelid - 1. */ bool *relsubs_done; PlanState *recheckplanstate; /* EPQ specific exec nodes, for ->plan */ } EPQState; /* ---------------- * ResultState information * ---------------- */ typedef struct ResultState { PlanState ps; /* its first field is NodeTag */ ExprState *resconstantqual; bool rs_done; /* are we done? */ bool rs_checkqual; /* do we need to check the qual? */ } ResultState; /* ---------------- * ProjectSetState information * * Note: at least one of the "elems" will be a SetExprState; the rest are * regular ExprStates. * ---------------- */ typedef struct ProjectSetState { PlanState ps; /* its first field is NodeTag */ Node **elems; /* array of expression states */ ExprDoneCond *elemdone; /* array of per-SRF is-done states */ int nelems; /* length of elemdone[] array */ bool pending_srf_tuples; /* still evaluating srfs in tlist? */ MemoryContext argcontext; /* context for SRF arguments */ } ProjectSetState; /* 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; /* 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; 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 * ---------------- */ 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; } IndexOnlyScanState; /* ---------------- * BitmapIndexScanState information * * result bitmap to return output into, or NULL * ScanKeys Skey structures for index quals * NumScanKeys number of ScanKeys * RuntimeKeys info about Skeys that must be evaluated at runtime * NumRuntimeKeys number of RuntimeKeys * ArrayKeys info about Skeys that come from ScalarArrayOpExprs * NumArrayKeys number of ArrayKeys * RuntimeKeysReady true if runtime Skeys have been computed * RuntimeContext expr context for evaling runtime Skeys * RelationDesc index relation descriptor * ScanDesc index scan descriptor * ---------------- */ typedef struct BitmapIndexScanState { ScanState ss; /* its first field is NodeTag */ TIDBitmap *biss_result; struct ScanKeyData *biss_ScanKeys; int biss_NumScanKeys; IndexRuntimeKeyInfo *biss_RuntimeKeys; int biss_NumRuntimeKeys; IndexArrayKeyInfo *biss_ArrayKeys; int biss_NumArrayKeys; bool biss_RuntimeKeysReady; ExprContext *biss_RuntimeContext; Relation biss_RelationDesc; struct IndexScanDescData *biss_ScanDesc; } BitmapIndexScanState; /* ---------------- * SharedBitmapState information * * BM_INITIAL TIDBitmap creation is not yet started, so first worker * to see this state will set the state to BM_INPROGRESS * and that process will be responsible for creating * TIDBitmap. * BM_INPROGRESS TIDBitmap creation is in progress; workers need to * sleep until it's finished. * BM_FINISHED TIDBitmap creation is done, so now all workers can * proceed to iterate over TIDBitmap. * ---------------- */ typedef enum { BM_INITIAL, BM_INPROGRESS, BM_FINISHED } SharedBitmapState; /* ---------------- * ParallelBitmapHeapState information * tbmiterator iterator for scanning current pages * prefetch_iterator iterator for prefetching ahead of current page * mutex mutual exclusion for the prefetching variable * and state * prefetch_pages # pages prefetch iterator is ahead of current * prefetch_target current target prefetch distance * state current state of the TIDBitmap * cv conditional wait variable * phs_snapshot_data snapshot data shared to workers * ---------------- */ typedef struct ParallelBitmapHeapState { dsa_pointer tbmiterator; dsa_pointer prefetch_iterator; slock_t mutex; int prefetch_pages; int prefetch_target; SharedBitmapState state; ConditionVariable cv; char phs_snapshot_data[FLEXIBLE_ARRAY_MEMBER]; } ParallelBitmapHeapState; /* ---------------- * BitmapHeapScanState information * * bitmapqualorig execution state for bitmapqualorig expressions * tbm bitmap obtained from child index scan(s) * tbmiterator iterator for scanning current pages * tbmres current-page data * can_skip_fetch can we potentially skip tuple fetches in this scan? * return_empty_tuples number of empty tuples to return * vmbuffer buffer for visibility-map lookups * pvmbuffer ditto, for prefetched pages * exact_pages total number of exact pages retrieved * lossy_pages total number of lossy pages retrieved * prefetch_iterator iterator for prefetching ahead of current page * prefetch_pages # pages prefetch iterator is ahead of current * prefetch_target current target prefetch distance * prefetch_maximum maximum value for prefetch_target * pscan_len size of the shared memory for parallel bitmap * initialized is node is ready to iterate * shared_tbmiterator shared iterator * shared_prefetch_iterator shared iterator for prefetching * pstate shared state for parallel bitmap scan * ---------------- */ typedef struct BitmapHeapScanState { ScanState ss; /* its first field is NodeTag */ ExprState *bitmapqualorig; TIDBitmap *tbm; TBMIterator *tbmiterator; TBMIterateResult *tbmres; bool can_skip_fetch; int return_empty_tuples; Buffer vmbuffer; Buffer pvmbuffer; long exact_pages; long lossy_pages; TBMIterator *prefetch_iterator; int prefetch_pages; int prefetch_target; int prefetch_maximum; Size pscan_len; bool initialized; TBMSharedIterator *shared_tbmiterator; TBMSharedIterator *shared_prefetch_iterator; ParallelBitmapHeapState *pstate; } BitmapHeapScanState; /* ---------------- * TidScanState information * * tidexprs list of TidExpr structs (see nodeTidscan.c) * isCurrentOf scan has a CurrentOfExpr qual * NumTids number of tids in this scan * TidPtr index of currently fetched tid * TidList evaluated item pointers (array of size NumTids) * htup currently-fetched tuple, if any * ---------------- */ typedef struct TidScanState { ScanState ss; /* its first field is NodeTag */ List *tss_tidexprs; bool tss_isCurrentOf; int tss_NumTids; int tss_TidPtr; ItemPointerData *tss_TidList; HeapTupleData tss_htup; } TidScanState; /* ---------------- * 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 *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; } CustomScanState; /* ---------------------------------------------------------------- * Join State Information * ---------------------------------------------------------------- */ /* ---------------- * JoinState information * * Superclass for state nodes of join plans. * ---------------- */ typedef struct JoinState { PlanState ps; JoinType jointype; bool single_match; /* True if we should skip to next outer tuple * after finding one inner match */ ExprState *joinqual; /* JOIN quals (in addition to ps.qual) */ } JoinState; /* ---------------- * NestLoopState information * * NeedNewOuter true if need new outer tuple on next call * MatchedOuter true if found a join match for current outer tuple * NullInnerTupleSlot prepared null tuple for left outer joins * ---------------- */ typedef struct NestLoopState { JoinState js; /* its first field is NodeTag */ bool nl_NeedNewOuter; bool nl_MatchedOuter; TupleTableSlot *nl_NullInnerTupleSlot; } NestLoopState; /* ---------------- * MergeJoinState information * * NumClauses number of mergejoinable join clauses * Clauses info for each mergejoinable clause * JoinState current state of ExecMergeJoin state machine * SkipMarkRestore true if we may skip Mark and Restore operations * ExtraMarks true to issue extra Mark operations on inner scan * ConstFalseJoin true if we have a constant-false joinqual * FillOuter true if should emit unjoined outer tuples anyway * FillInner true if should emit unjoined inner tuples anyway * MatchedOuter true if found a join match for current outer tuple * MatchedInner true if found a join match for current inner tuple * OuterTupleSlot slot in tuple table for cur outer tuple * InnerTupleSlot slot in tuple table for cur inner tuple * MarkedTupleSlot slot in tuple table for marked tuple * NullOuterTupleSlot prepared null tuple for right outer joins * NullInnerTupleSlot prepared null tuple for left outer joins * OuterEContext workspace for computing outer tuple's join values * InnerEContext workspace for computing inner tuple's join values * ---------------- */ /* private in nodeMergejoin.c: */ typedef struct MergeJoinClauseData *MergeJoinClause; typedef struct MergeJoinState { JoinState js; /* its first field is NodeTag */ int mj_NumClauses; MergeJoinClause mj_Clauses; /* array of length mj_NumClauses */ int mj_JoinState; bool mj_SkipMarkRestore; bool mj_ExtraMarks; bool mj_ConstFalseJoin; bool mj_FillOuter; bool mj_FillInner; bool mj_MatchedOuter; bool mj_MatchedInner; TupleTableSlot *mj_OuterTupleSlot; TupleTableSlot *mj_InnerTupleSlot; TupleTableSlot *mj_MarkedTupleSlot; TupleTableSlot *mj_NullOuterTupleSlot; TupleTableSlot *mj_NullInnerTupleSlot; ExprContext *mj_OuterEContext; ExprContext *mj_InnerEContext; } MergeJoinState; /* ---------------- * HashJoinState information * * hashclauses original form of the hashjoin condition * hj_OuterHashKeys the outer hash keys in the hashjoin condition * hj_HashOperators the join operators in the hashjoin condition * hj_HashTable hash table for the hashjoin * (NULL if table not built yet) * hj_CurHashValue hash value for current outer tuple * hj_CurBucketNo regular bucket# for current outer tuple * hj_CurSkewBucketNo skew bucket# for current outer tuple * hj_CurTuple last inner tuple matched to current outer * tuple, or NULL if starting search * (hj_CurXXX variables are undefined if * OuterTupleSlot is empty!) * hj_OuterTupleSlot tuple slot for outer tuples * hj_HashTupleSlot tuple slot for inner (hashed) tuples * hj_NullOuterTupleSlot prepared null tuple for right/full outer joins * hj_NullInnerTupleSlot prepared null tuple for left/full outer joins * hj_FirstOuterTupleSlot first tuple retrieved from outer plan * hj_JoinState current state of ExecHashJoin state machine * hj_MatchedOuter true if found a join match for current outer * hj_OuterNotEmpty true if outer relation known not empty * ---------------- */ /* these structs are defined in executor/hashjoin.h: */ typedef struct HashJoinTupleData *HashJoinTuple; typedef struct HashJoinTableData *HashJoinTable; typedef struct HashJoinState { JoinState js; /* its first field is NodeTag */ ExprState *hashclauses; List *hj_OuterHashKeys; /* list of ExprState nodes */ List *hj_HashOperators; /* list of operator OIDs */ List *hj_Collations; HashJoinTable hj_HashTable; uint32 hj_CurHashValue; int hj_CurBucketNo; int hj_CurSkewBucketNo; HashJoinTuple hj_CurTuple; TupleTableSlot *hj_OuterTupleSlot; TupleTableSlot *hj_HashTupleSlot; TupleTableSlot *hj_NullOuterTupleSlot; TupleTableSlot *hj_NullInnerTupleSlot; TupleTableSlot *hj_FirstOuterTupleSlot; int hj_JoinState; bool hj_MatchedOuter; bool hj_OuterNotEmpty; } HashJoinState; /* ---------------------------------------------------------------- * Materialization State Information * ---------------------------------------------------------------- */ /* ---------------- * MaterialState information * * materialize nodes are used to materialize the results * of a subplan into a temporary file. * * ss.ss_ScanTupleSlot refers to output of underlying plan. * ---------------- */ typedef struct MaterialState { ScanState ss; /* its first field is NodeTag */ int eflags; /* capability flags to pass to tuplestore */ bool eof_underlying; /* reached end of underlying plan? */ Tuplestorestate *tuplestorestate; } MaterialState; 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 */ ProjectionInfo *combinedproj; /* projection machinery */ SharedAggInfo *shared_info; /* one entry per worker */ } AggState; /* ---------------- * WindowAggState information * ---------------- */ /* these structs are private in nodeWindowAgg.c: */ typedef struct WindowStatePerFuncData *WindowStatePerFunc; typedef struct WindowStatePerAggData *WindowStatePerAgg; /* * 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 */ pg_query-4.2.3/ext/pg_query/include/nodes/pg_list.h0000644000004100000410000005263014510636647022425 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_list.h * interface for PostgreSQL generic list package * * Once upon a time, parts of Postgres were written in Lisp and used real * cons-cell lists for major data structures. When that code was rewritten * in C, we initially had a faithful emulation of cons-cell lists, which * unsurprisingly was a performance bottleneck. A couple of major rewrites * later, these data structures are actually simple expansible arrays; * but the "List" name and a lot of the notation survives. * * One important concession to the original implementation is that an empty * list is always represented by a null pointer (preferentially written NIL). * Non-empty lists have a header, which will not be relocated as long as the * list remains non-empty, and an expansible data array. * * We support three types of lists: * * T_List: lists of pointers * (in practice usually pointers to Nodes, but not always; * declared as "void *" to minimize casting annoyances) * T_IntList: lists of integers * T_OidList: lists of Oids * * (At the moment, ints and Oids are the same size, but they may not * always be so; try to be careful to maintain the distinction.) * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/pg_list.h * *------------------------------------------------------------------------- */ #ifndef PG_LIST_H #define PG_LIST_H #include "nodes/nodes.h" typedef union ListCell { void *ptr_value; int int_value; Oid oid_value; } ListCell; typedef struct List { NodeTag type; /* T_List, T_IntList, or T_OidList */ int length; /* number of elements currently present */ int max_length; /* allocated length of elements[] */ ListCell *elements; /* re-allocatable array of cells */ /* We may allocate some cells along with the List header: */ ListCell initial_elements[FLEXIBLE_ARRAY_MEMBER]; /* If elements == initial_elements, it's not a separate allocation */ } List; /* * The *only* valid representation of an empty list is NIL; in other * words, a non-NIL list is guaranteed to have length >= 1. */ #define NIL ((List *) NULL) /* * State structs for various looping macros below. */ typedef struct ForEachState { const List *l; /* list we're looping through */ int i; /* current element index */ } ForEachState; typedef struct ForBothState { const List *l1; /* lists we're looping through */ const List *l2; int i; /* common element index */ } ForBothState; typedef struct ForBothCellState { const List *l1; /* lists we're looping through */ const List *l2; int i1; /* current element indexes */ int i2; } ForBothCellState; typedef struct ForThreeState { const List *l1; /* lists we're looping through */ const List *l2; const List *l3; int i; /* common element index */ } ForThreeState; typedef struct ForFourState { const List *l1; /* lists we're looping through */ const List *l2; const List *l3; const List *l4; int i; /* common element index */ } ForFourState; typedef struct ForFiveState { const List *l1; /* lists we're looping through */ const List *l2; const List *l3; const List *l4; const List *l5; int i; /* common element index */ } ForFiveState; /* * These routines are small enough, and used often enough, to justify being * inline. */ /* Fetch address of list's first cell; NULL if empty list */ static inline ListCell * list_head(const List *l) { return l ? &l->elements[0] : NULL; } /* Fetch address of list's last cell; NULL if empty list */ static inline ListCell * list_tail(const List *l) { return l ? &l->elements[l->length - 1] : NULL; } /* Fetch address of list's second cell, if it has one, else NULL */ static inline ListCell * list_second_cell(const List *l) { if (l && l->length >= 2) return &l->elements[1]; else return NULL; } /* Fetch list's length */ static inline int list_length(const List *l) { return l ? l->length : 0; } /* * Macros to access the data values within List cells. * * Note that with the exception of the "xxx_node" macros, these are * lvalues and can be assigned to. * * NB: There is an unfortunate legacy from a previous incarnation of * the List API: the macro lfirst() was used to mean "the data in this * cons cell". To avoid changing every usage of lfirst(), that meaning * has been kept. As a result, lfirst() takes a ListCell and returns * the data it contains; to get the data in the first cell of a * List, use linitial(). Worse, lsecond() is more closely related to * linitial() than lfirst(): given a List, lsecond() returns the data * in the second list cell. */ #define lfirst(lc) ((lc)->ptr_value) #define lfirst_int(lc) ((lc)->int_value) #define lfirst_oid(lc) ((lc)->oid_value) #define lfirst_node(type,lc) castNode(type, lfirst(lc)) #define linitial(l) lfirst(list_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_node(type,l) castNode(type, llast(l)) /* * Convenience macros for building fixed-length lists */ #define list_make_ptr_cell(v) ((ListCell) {.ptr_value = (v)}) #define list_make_int_cell(v) ((ListCell) {.int_value = (v)}) #define list_make_oid_cell(v) ((ListCell) {.oid_value = (v)}) #define list_make1(x1) \ list_make1_impl(T_List, list_make_ptr_cell(x1)) #define list_make2(x1,x2) \ list_make2_impl(T_List, list_make_ptr_cell(x1), list_make_ptr_cell(x2)) #define list_make3(x1,x2,x3) \ list_make3_impl(T_List, list_make_ptr_cell(x1), list_make_ptr_cell(x2), \ list_make_ptr_cell(x3)) #define list_make4(x1,x2,x3,x4) \ list_make4_impl(T_List, list_make_ptr_cell(x1), list_make_ptr_cell(x2), \ list_make_ptr_cell(x3), list_make_ptr_cell(x4)) #define list_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)) /* * 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() loop, returning the new List pointer. * * This is equivalent to list_delete_cell(), but it also adjusts the foreach * loop's state so that no list elements will be missed. Do not delete * elements from an active foreach loop's list in any other way! */ #define foreach_delete_current(lst, cell) \ (cell##__state.i--, \ (List *) (cell##__state.l = list_delete_cell(lst, cell))) /* * foreach_current_index - * get the zero-based list index of a surrounding foreach() loop's * current element; pass the name of the "ListCell *" iterator variable. * * Beware of using this after foreach_delete_current(); the value will be * out of sync for the rest of the current loop iteration. Anyway, since * you just deleted the current element, the value is pretty meaningless. */ #define foreach_current_index(cell) (cell##__state.i) /* * for_each_from - * Like foreach(), but start from the N'th (zero-based) list element, * not necessarily the first one. * * It's okay for N to exceed the list length, but not for it to be negative. * * The caveats for foreach() apply equally here. */ #define for_each_from(cell, lst, N) \ for (ForEachState cell##__state = for_each_from_setup(lst, N); \ (cell##__state.l != NIL && \ cell##__state.i < cell##__state.l->length) ? \ (cell = &cell##__state.l->elements[cell##__state.i], true) : \ (cell = NULL, false); \ cell##__state.i++) static inline ForEachState for_each_from_setup(const List *lst, int N) { ForEachState r = {lst, N}; Assert(N >= 0); return r; } /* * for_each_cell - * a convenience macro which loops through a list starting from a * specified cell * * The caveats for foreach() apply equally here. */ #define for_each_cell(cell, lst, initcell) \ for (ForEachState cell##__state = for_each_cell_setup(lst, initcell); \ (cell##__state.l != NIL && \ cell##__state.i < cell##__state.l->length) ? \ (cell = &cell##__state.l->elements[cell##__state.i], true) : \ (cell = NULL, false); \ cell##__state.i++) static inline ForEachState for_each_cell_setup(const List *lst, const ListCell *initcell) { ForEachState r = {lst, initcell ? list_cell_number(lst, initcell) : list_length(lst)}; return r; } /* * forboth - * a convenience macro for advancing through two linked lists * simultaneously. This macro loops through both lists at the same * time, stopping when either list runs out of elements. Depending * on the requirements of the call site, it may also be wise to * assert that the lengths of the two lists are equal. (But, if they * are not, some callers rely on the ending cell values being separately * NULL or non-NULL as defined here; don't try to optimize that.) * * The caveats for foreach() apply equally here. */ #define forboth(cell1, list1, cell2, list2) \ for (ForBothState cell1##__state = {(list1), (list2), 0}; \ multi_for_advance_cell(cell1, cell1##__state, l1, i), \ multi_for_advance_cell(cell2, cell1##__state, l2, i), \ (cell1 != NULL && cell2 != NULL); \ cell1##__state.i++) #define multi_for_advance_cell(cell, state, l, i) \ (cell = (state.l != NIL && state.i < state.l->length) ? \ &state.l->elements[state.i] : NULL) /* * for_both_cell - * a convenience macro which loops through two lists starting from the * specified cells of each. This macro loops through both lists at the same * time, stopping when either list runs out of elements. Depending on the * requirements of the call site, it may also be wise to assert that the * lengths of the two lists are equal, and initcell1 and initcell2 are at * the same position in the respective lists. * * The caveats for foreach() apply equally here. */ #define for_both_cell(cell1, list1, initcell1, cell2, list2, initcell2) \ for (ForBothCellState cell1##__state = \ for_both_cell_setup(list1, initcell1, list2, initcell2); \ multi_for_advance_cell(cell1, cell1##__state, l1, i1), \ multi_for_advance_cell(cell2, cell1##__state, l2, i2), \ (cell1 != NULL && cell2 != NULL); \ cell1##__state.i1++, cell1##__state.i2++) static inline ForBothCellState for_both_cell_setup(const List *list1, const ListCell *initcell1, const List *list2, const ListCell *initcell2) { ForBothCellState r = {list1, list2, initcell1 ? list_cell_number(list1, initcell1) : list_length(list1), initcell2 ? list_cell_number(list2, initcell2) : list_length(list2)}; return r; } /* * forthree - * the same for three lists */ #define forthree(cell1, list1, cell2, list2, cell3, list3) \ for (ForThreeState cell1##__state = {(list1), (list2), (list3), 0}; \ multi_for_advance_cell(cell1, cell1##__state, l1, i), \ multi_for_advance_cell(cell2, cell1##__state, l2, i), \ multi_for_advance_cell(cell3, cell1##__state, l3, i), \ (cell1 != NULL && cell2 != NULL && cell3 != NULL); \ cell1##__state.i++) /* * forfour - * the same for four lists */ #define forfour(cell1, list1, cell2, list2, cell3, list3, cell4, list4) \ for (ForFourState cell1##__state = {(list1), (list2), (list3), (list4), 0}; \ multi_for_advance_cell(cell1, cell1##__state, l1, i), \ multi_for_advance_cell(cell2, cell1##__state, l2, i), \ multi_for_advance_cell(cell3, cell1##__state, l3, i), \ multi_for_advance_cell(cell4, cell1##__state, l4, i), \ (cell1 != NULL && cell2 != NULL && cell3 != NULL && cell4 != NULL); \ cell1##__state.i++) /* * forfive - * the same for five lists */ #define forfive(cell1, list1, cell2, list2, cell3, list3, cell4, list4, cell5, list5) \ for (ForFiveState cell1##__state = {(list1), (list2), (list3), (list4), (list5), 0}; \ multi_for_advance_cell(cell1, cell1##__state, l1, i), \ multi_for_advance_cell(cell2, cell1##__state, l2, i), \ multi_for_advance_cell(cell3, cell1##__state, l3, i), \ multi_for_advance_cell(cell4, cell1##__state, l4, i), \ multi_for_advance_cell(cell5, cell1##__state, l5, i), \ (cell1 != NULL && cell2 != NULL && cell3 != NULL && \ cell4 != NULL && cell5 != NULL); \ cell1##__state.i++) /* Functions in src/backend/nodes/list.c */ extern List *list_make1_impl(NodeTag t, ListCell datum1); extern List *list_make2_impl(NodeTag t, ListCell datum1, ListCell datum2); extern List *list_make3_impl(NodeTag t, ListCell datum1, ListCell datum2, ListCell datum3); extern List *list_make4_impl(NodeTag t, ListCell datum1, ListCell datum2, ListCell datum3, ListCell datum4); extern List *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 *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 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 *list); extern pg_nodiscard List *list_copy_head(const List *oldlist, int len); extern pg_nodiscard List *list_copy_tail(const List *list, 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 */ pg_query-4.2.3/ext/pg_query/include/nodes/nodeFuncs.h0000644000004100000410000001176514510636647022714 0ustar www-datawww-data/*------------------------------------------------------------------------- * * nodeFuncs.h * Various general-purpose manipulations of Node trees * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/nodeFuncs.h * *------------------------------------------------------------------------- */ #ifndef NODEFUNCS_H #define NODEFUNCS_H #include "nodes/parsenodes.h" /* flags bits for query_tree_walker and query_tree_mutator */ #define QTW_IGNORE_RT_SUBQUERIES 0x01 /* subqueries in rtable */ #define QTW_IGNORE_CTE_SUBQUERIES 0x02 /* subqueries in cteList */ #define QTW_IGNORE_RC_SUBQUERIES 0x03 /* both of above */ #define QTW_IGNORE_JOINALIASES 0x04 /* JOIN alias var lists */ #define QTW_IGNORE_RANGE_TABLE 0x08 /* skip rangetable entirely */ #define QTW_EXAMINE_RTES_BEFORE 0x10 /* examine RTE nodes before their * contents */ #define QTW_EXAMINE_RTES_AFTER 0x20 /* examine RTE nodes after their * contents */ #define QTW_DONT_COPY_QUERY 0x40 /* do not copy top Query */ #define QTW_EXAMINE_SORTGROUP 0x80 /* include SortGroupNode lists */ /* callback function for check_functions_in_node */ typedef bool (*check_function_callback) (Oid func_id, void *context); extern Oid exprType(const Node *expr); extern int32 exprTypmod(const Node *expr); extern bool exprIsLengthCoercion(const Node *expr, int32 *coercedTypmod); extern Node *applyRelabelType(Node *arg, Oid rtype, int32 rtypmod, Oid rcollid, CoercionForm rformat, int rlocation, bool overwrite_ok); extern Node *relabel_to_typmod(Node *expr, int32 typmod); extern Node *strip_implicit_coercions(Node *node); extern bool expression_returns_set(Node *clause); extern Oid exprCollation(const Node *expr); extern Oid exprInputCollation(const Node *expr); extern void exprSetCollation(Node *expr, Oid collation); extern void exprSetInputCollation(Node *expr, Oid inputcollation); extern int exprLocation(const Node *expr); extern void fix_opfuncids(Node *node); extern void set_opfuncid(OpExpr *opexpr); extern void set_sa_opfuncid(ScalarArrayOpExpr *opexpr); /* Is clause a FuncExpr clause? */ static inline bool is_funcclause(const void *clause) { return clause != NULL && IsA(clause, FuncExpr); } /* Is clause an OpExpr clause? */ static inline bool is_opclause(const void *clause) { return clause != NULL && IsA(clause, OpExpr); } /* Extract left arg of a binary opclause, or only arg of a unary opclause */ static inline Node * get_leftop(const void *clause) { const OpExpr *expr = (const OpExpr *) clause; if (expr->args != NIL) return (Node *) linitial(expr->args); else return NULL; } /* Extract right arg of a binary opclause (NULL if it's a unary opclause) */ static inline Node * get_rightop(const void *clause) { const OpExpr *expr = (const OpExpr *) clause; if (list_length(expr->args) >= 2) return (Node *) lsecond(expr->args); else return NULL; } /* Is clause an AND clause? */ static inline bool is_andclause(const void *clause) { return (clause != NULL && IsA(clause, BoolExpr) && ((const BoolExpr *) clause)->boolop == AND_EXPR); } /* Is clause an OR clause? */ static inline bool is_orclause(const void *clause) { return (clause != NULL && IsA(clause, BoolExpr) && ((const BoolExpr *) clause)->boolop == OR_EXPR); } /* Is clause a NOT clause? */ static inline bool is_notclause(const void *clause) { return (clause != NULL && IsA(clause, BoolExpr) && ((const BoolExpr *) clause)->boolop == NOT_EXPR); } /* Extract argument from a clause known to be a NOT clause */ static inline Expr * get_notclausearg(const void *notclause) { return (Expr *) linitial(((const BoolExpr *) notclause)->args); } extern bool check_functions_in_node(Node *node, check_function_callback checker, void *context); extern bool expression_tree_walker(Node *node, bool (*walker) (), void *context); extern Node *expression_tree_mutator(Node *node, Node *(*mutator) (), void *context); extern bool query_tree_walker(Query *query, bool (*walker) (), void *context, int flags); extern Query *query_tree_mutator(Query *query, Node *(*mutator) (), void *context, int flags); extern bool range_table_walker(List *rtable, bool (*walker) (), void *context, int flags); extern List *range_table_mutator(List *rtable, Node *(*mutator) (), void *context, int flags); extern bool range_table_entry_walker(RangeTblEntry *rte, bool (*walker) (), void *context, int flags); extern bool query_or_expression_tree_walker(Node *node, bool (*walker) (), void *context, int flags); extern Node *query_or_expression_tree_mutator(Node *node, Node *(*mutator) (), void *context, int flags); extern bool raw_expression_tree_walker(Node *node, bool (*walker) (), void *context); struct PlanState; extern bool planstate_tree_walker(struct PlanState *planstate, bool (*walker) (), void *context); #endif /* NODEFUNCS_H */ pg_query-4.2.3/ext/pg_query/include/nodes/value.h0000644000004100000410000000410614510636647022073 0ustar www-datawww-data/*------------------------------------------------------------------------- * * value.h * interface for value nodes * * * Copyright (c) 2003-2022, 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 { 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 { NodeTag type; char *fval; } Float; typedef struct Boolean { NodeTag type; bool boolval; } Boolean; typedef struct String { NodeTag type; char *sval; } String; typedef struct BitString { 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 var); extern String *makeString(char *str); extern BitString *makeBitString(char *str); #endif /* VALUE_H */ pg_query-4.2.3/ext/pg_query/include/nodes/parsenodes.h0000644000004100000410000040123314510636647023124 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/parsenodes.h * *------------------------------------------------------------------------- */ #ifndef PARSENODES_H #define PARSENODES_H #include "nodes/bitmapset.h" #include "nodes/lockoptions.h" #include "nodes/primnodes.h" #include "nodes/value.h" #include "partitioning/partdefs.h" typedef enum OverridingKind { OVERRIDING_NOT_SET = 0, OVERRIDING_USER_VALUE, OVERRIDING_SYSTEM_VALUE } OverridingKind; /* Possible sources of a Query */ typedef enum QuerySource { QSRC_ORIGINAL, /* original parsetree (explicit query) */ QSRC_PARSER, /* added by parse analysis (now unused) */ QSRC_INSTEAD_RULE, /* added by unconditional INSTEAD rule */ QSRC_QUAL_INSTEAD_RULE, /* added by conditional INSTEAD rule */ QSRC_NON_INSTEAD_RULE /* added by non-INSTEAD rule */ } QuerySource; /* Sort ordering options for ORDER BY and CREATE INDEX */ typedef enum SortByDir { SORTBY_DEFAULT, SORTBY_ASC, SORTBY_DESC, SORTBY_USING /* not allowed in CREATE INDEX ... */ } SortByDir; typedef enum SortByNulls { SORTBY_NULLS_DEFAULT, SORTBY_NULLS_FIRST, SORTBY_NULLS_LAST } SortByNulls; /* 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 16 distinct rights, * even though AclMode is defined as uint32. See utils/acl.h. * * Caution: changing these codes breaks stored ACLs, hence forces initdb. */ typedef uint32 AclMode; /* a bitmask of privilege bits */ #define ACL_INSERT (1<<0) /* for relations */ #define ACL_SELECT (1<<1) #define ACL_UPDATE (1<<2) #define ACL_DELETE (1<<3) #define ACL_TRUNCATE (1<<4) #define ACL_REFERENCES (1<<5) #define ACL_TRIGGER (1<<6) #define ACL_EXECUTE (1<<7) /* for functions */ #define ACL_USAGE (1<<8) /* for languages, namespaces, FDWs, and * servers */ #define ACL_CREATE (1<<9) /* for namespaces and databases */ #define ACL_CREATE_TEMP (1<<10) /* for databases */ #define ACL_CONNECT (1<<11) /* for databases */ #define ACL_SET (1<<12) /* for configuration parameters */ #define ACL_ALTER_SYSTEM (1<<13) /* for configuration parameters */ #define N_ACL_RIGHTS 14 /* 1 plus the last 1<" */ 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 { NodeTag type; A_Expr_Kind kind; /* see above */ List *name; /* possibly-qualified name of operator */ Node *lexpr; /* left argument, or NULL if none */ Node *rexpr; /* right argument, or NULL if none */ int location; /* token location, or -1 if unknown */ } A_Expr; /* * A_Const - a literal constant */ typedef struct A_Const { NodeTag type; /* * Value 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; } val; bool isnull; /* SQL NULL constant */ int location; /* token location, or -1 if unknown */ } A_Const; /* * TypeCast - a CAST expression */ typedef struct TypeCast { NodeTag type; Node *arg; /* the expression being casted */ TypeName *typeName; /* the target type */ int location; /* token location, or -1 if unknown */ } TypeCast; /* * CollateClause - a COLLATE expression */ typedef struct CollateClause { NodeTag type; Node *arg; /* input expression */ List *collname; /* possibly-qualified collation name */ int location; /* token location, or -1 if unknown */ } CollateClause; /* * RoleSpec - a role name or one of a few special values. */ typedef enum RoleSpecType { ROLESPEC_CSTRING, /* role name is stored as a C string */ ROLESPEC_CURRENT_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 */ int location; /* token location, or -1 if unknown */ } RoleSpec; /* * FuncCall - a function or aggregate invocation * * agg_order (if not NIL) indicates we saw 'foo(... ORDER BY ...)', or if * agg_within_group is true, it was 'foo(...) WITHIN GROUP (ORDER BY ...)'. * agg_star indicates we saw a 'foo(*)' construct, while agg_distinct * indicates we saw 'foo(DISTINCT ...)'. In any of these cases, the * construct *must* be an aggregate call. Otherwise, it might be either an * aggregate or some other kind of function. However, if FILTER or OVER is * present it had better be an aggregate or window function. * * Normally, you'd initialize this via makeFuncCall() and then only change the * parts of the struct its defaults don't match afterwards, as needed. */ typedef struct FuncCall { NodeTag type; List *funcname; /* qualified name of function */ List *args; /* the arguments (list of exprs) */ List *agg_order; /* ORDER BY (list of SortBy) */ Node *agg_filter; /* FILTER clause, if any */ 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 */ int location; /* token location, or -1 if unknown */ } FuncCall; /* * A_Star - '*' representing all columns of a table or compound field * * This can appear within ColumnRef.fields, A_Indirection.indirection, and * ResTarget.indirection lists. */ typedef struct A_Star { NodeTag type; } A_Star; /* * A_Indices - array subscript or slice bounds ([idx] or [lidx:uidx]) * * In slice case, either or both of lidx and uidx can be NULL (omitted). * In non-slice case, uidx holds the single subscript and lidx is always NULL. */ typedef struct A_Indices { NodeTag type; bool is_slice; /* true if slice (i.e., colon present) */ Node *lidx; /* slice lower bound, if any */ Node *uidx; /* subscript, or slice upper bound if any */ } A_Indices; /* * A_Indirection - select a field and/or array element from an expression * * The indirection list can contain A_Indices nodes (representing * subscripting), String nodes (representing field selection --- the * string value is the name of the field to select), and A_Star nodes * (representing selection of all fields of a composite type). * For example, a complex selection operation like * (foo).field1[42][7].field2 * would be represented with a single A_Indirection node having a 4-element * indirection list. * * Currently, A_Star must appear only as the last list element --- the grammar * is responsible for enforcing this! */ typedef struct A_Indirection { NodeTag type; Node *arg; /* the thing being selected from */ List *indirection; /* subscripts and/or field names and/or * */ } A_Indirection; /* * A_ArrayExpr - an ARRAY[] construct */ typedef struct A_ArrayExpr { NodeTag type; List *elements; /* array element expressions */ int location; /* token location, or -1 if unknown */ } A_ArrayExpr; /* * ResTarget - * result target (used in target list of pre-transformed parse trees) * * In a SELECT target list, 'name' is the column label from an * 'AS ColumnLabel' clause, or NULL if there was none, and 'val' is the * value expression itself. The 'indirection' field is not used. * * INSERT uses ResTarget in its target-column-names list. Here, 'name' is * the name of the destination column, 'indirection' stores any subscripts * attached to the destination, and 'val' is not used. * * In an UPDATE target list, 'name' is the name of the destination column, * 'indirection' stores any subscripts attached to the destination, and * 'val' is the expression to assign. * * See A_Indirection for more info about what can appear in 'indirection'. */ typedef struct ResTarget { NodeTag type; char *name; /* column name or NULL */ List *indirection; /* subscripts, field names, and '*', or NIL */ Node *val; /* the value expression to compute or assign */ int location; /* token location, or -1 if unknown */ } ResTarget; /* * MultiAssignRef - element of a row source expression for UPDATE * * In an UPDATE target list, when we have SET (a,b,c) = row-valued-expression, * we generate separate ResTarget items for each of a,b,c. Their "val" trees * are MultiAssignRef nodes numbered 1..n, linking to a common copy of the * row-valued-expression (which parse analysis will process only once, when * handling the MultiAssignRef with colno=1). */ typedef struct MultiAssignRef { NodeTag type; Node *source; /* the row-valued expression */ int colno; /* column number for this target (1..n) */ int ncolumns; /* number of targets in the construct */ } MultiAssignRef; /* * SortBy - for ORDER BY clause */ typedef struct SortBy { NodeTag type; Node *node; /* expression to sort on */ SortByDir sortby_dir; /* ASC/DESC/USING/default */ SortByNulls sortby_nulls; /* NULLS FIRST/LAST */ List *useOp; /* name of op to use, if SORTBY_USING */ int location; /* operator location, or -1 if none/unknown */ } SortBy; /* * WindowDef - raw representation of WINDOW and OVER clauses * * For entries in a WINDOW list, "name" is the window name being defined. * For OVER clauses, we use "name" for the "OVER window" syntax, or "refname" * for the "OVER (window)" syntax, which is subtly different --- the latter * implies overriding the window frame clause. */ typedef struct WindowDef { NodeTag type; char *name; /* window's own name */ char *refname; /* referenced window name, if any */ List *partitionClause; /* PARTITION BY expression list */ List *orderClause; /* ORDER BY (list of SortBy) */ int frameOptions; /* frame_clause options, see below */ Node *startOffset; /* expression for starting bound, if any */ Node *endOffset; /* expression for ending bound, if any */ int location; /* parse location, or -1 if none/unknown */ } WindowDef; /* * frameOptions is an OR of these bits. The NONDEFAULT and BETWEEN bits are * used so that ruleutils.c can tell which properties were specified and * which were defaulted; the correct behavioral bits must be set either way. * The START_foo and END_foo options must come in pairs of adjacent bits for * the convenience of gram.y, even though some of them are useless/invalid. */ #define FRAMEOPTION_NONDEFAULT 0x00001 /* any specified? */ #define FRAMEOPTION_RANGE 0x00002 /* RANGE behavior */ #define FRAMEOPTION_ROWS 0x00004 /* ROWS behavior */ #define FRAMEOPTION_GROUPS 0x00008 /* GROUPS behavior */ #define FRAMEOPTION_BETWEEN 0x00010 /* BETWEEN given? */ #define FRAMEOPTION_START_UNBOUNDED_PRECEDING 0x00020 /* start is U. P. */ #define FRAMEOPTION_END_UNBOUNDED_PRECEDING 0x00040 /* (disallowed) */ #define FRAMEOPTION_START_UNBOUNDED_FOLLOWING 0x00080 /* (disallowed) */ #define FRAMEOPTION_END_UNBOUNDED_FOLLOWING 0x00100 /* end is U. F. */ #define FRAMEOPTION_START_CURRENT_ROW 0x00200 /* start is C. R. */ #define FRAMEOPTION_END_CURRENT_ROW 0x00400 /* end is C. R. */ #define FRAMEOPTION_START_OFFSET_PRECEDING 0x00800 /* start is O. P. */ #define FRAMEOPTION_END_OFFSET_PRECEDING 0x01000 /* end is O. P. */ #define FRAMEOPTION_START_OFFSET_FOLLOWING 0x02000 /* start is O. F. */ #define FRAMEOPTION_END_OFFSET_FOLLOWING 0x04000 /* end is O. F. */ #define FRAMEOPTION_EXCLUDE_CURRENT_ROW 0x08000 /* omit C.R. */ #define FRAMEOPTION_EXCLUDE_GROUP 0x10000 /* omit C.R. & peers */ #define FRAMEOPTION_EXCLUDE_TIES 0x20000 /* omit C.R.'s peers */ #define FRAMEOPTION_START_OFFSET \ (FRAMEOPTION_START_OFFSET_PRECEDING | FRAMEOPTION_START_OFFSET_FOLLOWING) #define FRAMEOPTION_END_OFFSET \ (FRAMEOPTION_END_OFFSET_PRECEDING | FRAMEOPTION_END_OFFSET_FOLLOWING) #define FRAMEOPTION_EXCLUSION \ (FRAMEOPTION_EXCLUDE_CURRENT_ROW | FRAMEOPTION_EXCLUDE_GROUP | \ FRAMEOPTION_EXCLUDE_TIES) #define FRAMEOPTION_DEFAULTS \ (FRAMEOPTION_RANGE | FRAMEOPTION_START_UNBOUNDED_PRECEDING | \ FRAMEOPTION_END_CURRENT_ROW) /* * RangeSubselect - subquery appearing in a FROM clause */ typedef struct RangeSubselect { NodeTag type; bool lateral; /* does it have LATERAL prefix? */ Node *subquery; /* the untransformed sub-select clause */ Alias *alias; /* table alias & optional column aliases */ } RangeSubselect; /* * RangeFunction - function call appearing in a FROM clause * * functions is a List because we use this to represent the construct * ROWS FROM(func1(...), func2(...), ...). Each element of this list is a * two-element sublist, the first element being the untransformed function * call tree, and the second element being a possibly-empty list of ColumnDef * nodes representing any columndef list attached to that function within the * ROWS FROM() syntax. * * alias and coldeflist represent any alias and/or columndef list attached * at the top level. (We disallow coldeflist appearing both here and * per-function, but that's checked in parse analysis, not by the grammar.) */ typedef struct RangeFunction { NodeTag type; bool lateral; /* does it have LATERAL prefix? */ bool ordinality; /* does it have WITH ORDINALITY suffix? */ bool is_rowsfrom; /* is result of ROWS FROM() syntax? */ List *functions; /* per-function information, see above */ Alias *alias; /* table alias & optional column aliases */ List *coldeflist; /* list of ColumnDef nodes to describe result * of function returning RECORD */ } RangeFunction; /* * RangeTableFunc - raw form of "table functions" such as XMLTABLE */ typedef struct RangeTableFunc { NodeTag type; bool lateral; /* does it have LATERAL prefix? */ Node *docexpr; /* document expression */ Node *rowexpr; /* row generator expression */ List *namespaces; /* list of namespaces as ResTarget */ List *columns; /* list of RangeTableFuncCol */ Alias *alias; /* table alias & optional column aliases */ int location; /* token location, or -1 if unknown */ } RangeTableFunc; /* * RangeTableFuncCol - one column in a RangeTableFunc->columns * * If for_ordinality is true (FOR ORDINALITY), then the column is an int4 * column and the rest of the fields are ignored. */ typedef struct RangeTableFuncCol { NodeTag type; char *colname; /* name of generated column */ TypeName *typeName; /* type of generated column */ bool for_ordinality; /* does it have FOR ORDINALITY? */ bool is_not_null; /* does it have NOT NULL? */ Node *colexpr; /* column filter expression */ Node *coldefexpr; /* column default value expression */ int location; /* token location, or -1 if unknown */ } RangeTableFuncCol; /* * RangeTableSample - TABLESAMPLE appearing in a raw FROM clause * * This node, appearing only in raw parse trees, represents * TABLESAMPLE () REPEATABLE () * Currently, the can only be a RangeVar, but we might in future * allow RangeSubselect and other options. Note that the RangeTableSample * is wrapped around the node representing the , rather than being * a subfield of it. */ typedef struct RangeTableSample { NodeTag type; Node *relation; /* relation to be sampled */ List *method; /* sampling method name (possibly qualified) */ List *args; /* argument(s) for sampling method */ Node *repeatable; /* REPEATABLE expression, or NULL if none */ int location; /* method name location, or -1 if unknown */ } RangeTableSample; /* * ColumnDef - column definition (used in various creates) * * If the column has a default value, we may have the value expression * in either "raw" form (an untransformed parse tree) or "cooked" form * (a post-parse-analysis, executable expression tree), depending on * how this ColumnDef node was created (by parsing, or by inheritance * from an existing relation). We should never have both in the same node! * * Similarly, we may have a COLLATE specification in either raw form * (represented as a CollateClause with arg==NULL) or cooked form * (the collation's OID). * * The constraints list may contain a CONSTR_DEFAULT item in a raw * parsetree produced by gram.y, but transformCreateStmt will remove * the item and set raw_default instead. CONSTR_DEFAULT items * should not appear in any subsequent processing. */ typedef struct ColumnDef { NodeTag type; char *colname; /* name of column */ TypeName *typeName; /* type of column */ 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 */ Node *raw_default; /* default value (untransformed parse tree) */ Node *cooked_default; /* default value (transformed expr tree) */ char identity; /* attidentity setting */ RangeVar *identitySequence; /* to store identity sequence name for * ALTER TABLE ... ADD COLUMN */ char generated; /* attgenerated setting */ CollateClause *collClause; /* untransformed COLLATE spec, if any */ Oid collOid; /* collation OID (InvalidOid if not set) */ List *constraints; /* other constraints on column */ List *fdwoptions; /* per-column FDW options */ int location; /* parse location, or -1 if none/unknown */ } ColumnDef; /* * TableLikeClause - CREATE TABLE ( ... LIKE ... ) clause */ typedef struct TableLikeClause { NodeTag type; RangeVar *relation; bits32 options; /* OR of TableLikeOption flags */ Oid relationOid; /* If table has been looked up, its OID */ } TableLikeClause; typedef enum TableLikeOption { CREATE_TABLE_LIKE_COMMENTS = 1 << 0, CREATE_TABLE_LIKE_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 */ int location; /* token location, or -1 if unknown */ } DefElem; /* * LockingClause - raw representation of FOR [NO KEY] UPDATE/[KEY] SHARE * options * * Note: lockedRels == NIL means "all relations in query". Otherwise it * is a list of RangeVar nodes. (We use RangeVar mainly because it carries * a location field --- currently, parse analysis insists on unqualified * names in LockingClause.) */ typedef struct LockingClause { NodeTag type; List *lockedRels; /* FOR [KEY] UPDATE/SHARE relations */ LockClauseStrength strength; LockWaitPolicy waitPolicy; /* NOWAIT and SKIP LOCKED */ } LockingClause; /* * XMLSERIALIZE (in raw parse tree only) */ typedef struct XmlSerialize { NodeTag type; XmlOptionType xmloption; /* DOCUMENT or CONTENT */ Node *expr; TypeName *typeName; int location; /* token location, or -1 if unknown */ } XmlSerialize; /* Partitioning related definitions */ /* * PartitionElem - parse-time representation of a single partition key * * expr can be either a raw expression tree or a parse-analyzed expression. * We don't store these on-disk, though. */ typedef struct PartitionElem { NodeTag type; char *name; /* name of column to partition on, or NULL */ Node *expr; /* expression to partition on, or NULL */ List *collation; /* name of collation; NIL = default */ List *opclass; /* name of desired opclass; NIL = default */ int location; /* token location, or -1 if unknown */ } PartitionElem; /* * PartitionSpec - parse-time representation of a partition key specification * * This represents the key space we will be partitioning on. */ typedef struct PartitionSpec { NodeTag type; char *strategy; /* partitioning strategy ('hash', 'list' or * 'range') */ List *partParams; /* List of PartitionElems */ int location; /* token location, or -1 if unknown */ } PartitionSpec; /* Internal codes for partitioning strategies */ #define PARTITION_STRATEGY_HASH 'h' #define PARTITION_STRATEGY_LIST 'l' #define PARTITION_STRATEGY_RANGE 'r' /* * PartitionBoundSpec - a partition bound specification * * This represents the portion of the partition key space assigned to a * particular partition. These are stored on disk in pg_class.relpartbound. */ struct PartitionBoundSpec { NodeTag type; char strategy; /* see PARTITION_STRATEGY codes above */ bool is_default; /* is it a default partition bound? */ /* Partitioning info for HASH strategy: */ int modulus; int remainder; /* Partitioning info for LIST strategy: */ List *listdatums; /* List of Consts (or A_Consts in raw tree) */ /* Partitioning info for RANGE strategy: */ List *lowerdatums; /* List of PartitionRangeDatums */ List *upperdatums; /* List of PartitionRangeDatums */ int location; /* token location, or -1 if unknown */ }; /* * PartitionRangeDatum - one of the values in a range partition bound * * This can be MINVALUE, MAXVALUE or a specific bounded value. */ typedef enum PartitionRangeDatumKind { PARTITION_RANGE_DATUM_MINVALUE = -1, /* less than any other value */ PARTITION_RANGE_DATUM_VALUE = 0, /* a specific (bounded) value */ PARTITION_RANGE_DATUM_MAXVALUE = 1 /* greater than any other value */ } PartitionRangeDatumKind; typedef struct PartitionRangeDatum { NodeTag type; PartitionRangeDatumKind kind; Node *value; /* Const (or A_Const in raw tree), if kind is * PARTITION_RANGE_DATUM_VALUE, else NULL */ int location; /* token location, or -1 if unknown */ } PartitionRangeDatum; /* * PartitionCmd - info for ALTER TABLE/INDEX ATTACH/DETACH PARTITION commands */ typedef struct PartitionCmd { NodeTag type; RangeVar *name; /* name of partition to attach/detach */ PartitionBoundSpec *bound; /* FOR VALUES, if attaching */ 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.) * * inh is true for relation references that should be expanded to include * inheritance children, if the rel has any. This *must* be false for * RTEs other than RTE_RELATION entries. * * inFromCl marks those range variables that are listed in the FROM clause. * It's false for RTEs that are added to a query behind the scenes, such * as the NEW and OLD variables for a rule, or the subqueries of a UNION. * This flag is not used 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. * * requiredPerms and checkAsUser specify run-time access permissions * checks to be performed at query startup. The user must have *all* * of the permissions that are OR'd together in requiredPerms (zero * indicates no permissions checking). If checkAsUser is not zero, * then do the permissions checks using the access rights of that user, * not the current effective user ID. (This allows rules to act as * setuid gateways.) Permissions checks only apply to RELATION RTEs. * * For SELECT/INSERT/UPDATE permissions, if the user doesn't have * table-wide permissions then it is sufficient to have the permissions * on all columns identified in selectedCols (for SELECT) and/or * insertedCols and/or updatedCols (INSERT with ON CONFLICT DO UPDATE may * have all 3). selectedCols, insertedCols and updatedCols are bitmapsets, * which cannot have negative integer members, so we subtract * FirstLowInvalidHeapAttributeNumber from column numbers before storing * them in these fields. A whole-row Var reference is represented by * setting the bit for InvalidAttrNumber. * * updatedCols is also used in some other places, for example, to determine * which triggers to fire and in FDWs to know which changed columns they * need to ship off. * * Generated columns that are caused to be updated by an update to a base * column are listed in extraUpdatedCols. This is not considered for * permission checking, but it is useful in those places that want to know * the full set of columns being updated as opposed to only the ones the * user explicitly mentioned in the query. (There is currently no need for * an extraInsertedCols, but it could exist.) Note that extraUpdatedCols * is populated during query rewrite, NOT in the parser, since generated * columns could be added after a rule has been parsed and stored. * * securityQuals is a list of security barrier quals (boolean expressions), * to be tested in the listed order before returning a row from the * relation. It is always NIL in parser output. Entries are added by the * rewriter to implement security-barrier views and/or row-level security. * Note that the planner turns each boolean expression into an implicitly * AND'ed sublist, as is its usual habit with qualification expressions. *-------------------- */ typedef enum RTEKind { RTE_RELATION, /* ordinary relation reference */ RTE_SUBQUERY, /* subquery in FROM */ RTE_JOIN, /* join */ RTE_FUNCTION, /* function in FROM */ RTE_TABLEFUNC, /* TableFunc(.., column list) */ RTE_VALUES, /* VALUES (), (), ... */ RTE_CTE, /* common table expr (WITH list element) */ RTE_NAMEDTUPLESTORE, /* tuplestore, e.g. for AFTER triggers */ RTE_RESULT /* RTE represents an empty FROM clause; such * RTEs are added by the planner, they're not * present during parsing or rewriting */ } RTEKind; typedef struct RangeTblEntry { NodeTag type; RTEKind rtekind; /* see above */ /* * XXX the fields applicable to only some rte kinds should be merged into * a union. I didn't do this yet because the diffs would impact a lot of * code that is being actively worked on. FIXME someday. */ /* * Fields valid for a plain relation RTE (else zero): * * As a special case, RTE_NAMEDTUPLESTORE can also set relid to indicate * that the tuple format of the tuplestore is the same as the referenced * relation. This allows plans referencing AFTER trigger transition * tables to be invalidated if the underlying table is altered. * * rellockmode is really LOCKMODE, but it's declared int to avoid having * to include lock-related headers here. It must be RowExclusiveLock if * the RTE is an INSERT/UPDATE/DELETE/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. */ Oid relid; /* OID of the relation */ char relkind; /* relation kind (see pg_class.relkind) */ int rellockmode; /* lock level that query requires on the rel */ struct TableSampleClause *tablesample; /* sampling info, or NULL */ /* * Fields valid for a subquery RTE (else NULL): */ Query *subquery; /* the sub-query */ bool security_barrier; /* is from security_barrier view? */ /* * Fields valid for a join RTE (else NULL/zero): * * joinaliasvars is a list of (usually) Vars corresponding to the columns * of the join result. An alias Var referencing column K of the join * result can be replaced by the K'th element of joinaliasvars --- but to * simplify the task of reverse-listing aliases correctly, we do not do * that until planning time. In detail: an element of joinaliasvars can * be a Var of one of the join's input relations, or such a Var with an * implicit coercion to the join's output column type, or a COALESCE * expression containing the two input column Vars (possibly coerced). * Elements beyond the first joinmergedcols entries are always just Vars, * and are never referenced from elsewhere in the query (that is, join * alias Vars are generated only for merged columns). We keep these * entries only because they're needed in expandRTE() and similar code. * * Within a Query loaded from a stored rule, it is possible for non-merged * joinaliasvars items to be null pointers, which are placeholders for * (necessarily unreferenced) columns dropped since the rule was made. * Also, once planning begins, joinaliasvars items can be almost anything, * as a result of subquery-flattening substitutions. * * joinleftcols is an integer list of physical column numbers of the left * join input rel that are included in the join; likewise joinrighttcols * for the right join input rel. (Which rels those are can be determined * from the associated JoinExpr.) If the join is USING/NATURAL, then the * first joinmergedcols entries in each list identify the merged columns. * The merged columns come first in the join output, then remaining * columns of the left input, then remaining columns of the right. * * Note that input columns could have been dropped after creation of a * stored rule, if they are not referenced in the query (in particular, * merged columns could not be dropped); this is not accounted for in * joinleftcols/joinrighttcols. */ JoinType jointype; /* type of join */ int joinmergedcols; /* number of merged (JOIN USING) columns */ List *joinaliasvars; /* list of alias-var expansions */ List *joinleftcols; /* left-side input column numbers */ List *joinrightcols; /* right-side input column numbers */ /* * 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; /* * Fields valid for a function RTE (else NIL/zero): * * When funcordinality is true, the eref->colnames list includes an alias * for the ordinality column. The ordinality column is otherwise * implicit, and must be accounted for "by hand" in places such as * expandRTE(). */ List *functions; /* list of RangeTblFunction nodes */ bool funcordinality; /* is this called WITH ORDINALITY? */ /* * Fields valid for a TableFunc RTE (else NULL): */ TableFunc *tablefunc; /* * Fields valid for a values RTE (else NIL): */ List *values_lists; /* list of expression lists */ /* * Fields valid for a CTE RTE (else NULL/zero): */ char *ctename; /* name of the WITH list item */ Index ctelevelsup; /* number of query levels up */ bool self_reference; /* is this a recursive self-reference? */ /* * Fields valid for CTE, VALUES, ENR, and TableFunc RTEs (else NIL): * * We need these for CTE RTEs so that the types of self-referential * columns are well-defined. For VALUES RTEs, storing these explicitly * saves having to re-determine the info by scanning the values_lists. For * ENRs, we store the types explicitly here (we could get the information * from the catalogs if 'relid' was supplied, but we'd still need these * for TupleDesc-based ENRs, so we might as well always store the type * info here). For TableFuncs, these fields are redundant with data in * the TableFunc node, but keeping them here allows some code sharing with * the other cases. * * For ENRs only, we have to consider the possibility of dropped columns. * A dropped column is included in these lists, but it will have zeroes in * all three lists (as well as an empty-string entry in eref). Testing * for zero coltype is the standard way to detect a dropped column. */ List *coltypes; /* OID list of column type OIDs */ List *coltypmods; /* integer list of column typmods */ List *colcollations; /* OID list of column collation OIDs */ /* * Fields valid for ENR RTEs (else NULL/zero): */ char *enrname; /* name of ephemeral named relation */ Cardinality enrtuples; /* estimated or actual from caller */ /* * Fields valid in all RTEs: */ Alias *alias; /* user-written alias clause, if any */ Alias *eref; /* expanded reference names */ bool lateral; /* subquery, function, or values is LATERAL? */ bool inh; /* inheritance requested? */ bool inFromCl; /* present in FROM clause? */ AclMode requiredPerms; /* bitmask of required access permissions */ Oid checkAsUser; /* if valid, check access as this role */ Bitmapset *selectedCols; /* columns needing SELECT permission */ Bitmapset *insertedCols; /* columns needing INSERT permission */ Bitmapset *updatedCols; /* columns needing UPDATE permission */ Bitmapset *extraUpdatedCols; /* generated columns being updated */ List *securityQuals; /* security barrier quals to apply, if any */ } RangeTblEntry; /* * RangeTblFunction - * RangeTblEntry subsidiary data for one function in a FUNCTION RTE. * * If the function had a column definition list (required for an * otherwise-unspecified RECORD result), funccolnames lists the names given * in the definition list, funccoltypes lists their declared column types, * funccoltypmods lists their typmods, funccolcollations their collations. * Otherwise, those fields are NIL. * * Notice we don't attempt to store info about the results of functions * returning named composite types, because those can change from time to * time. We do however remember how many columns we thought the type had * (including dropped columns!), so that we can successfully ignore any * columns added after the query was parsed. */ typedef struct RangeTblFunction { NodeTag type; Node *funcexpr; /* expression tree for func call */ int funccolcount; /* number of columns it contributes to RTE */ /* These fields record the contents of a column definition list, if any: */ List *funccolnames; /* column names (list of String) */ List *funccoltypes; /* OID list of column type OIDs */ List *funccoltypmods; /* integer list of column typmods */ List *funccolcollations; /* OID list of column collation OIDs */ /* This is set during planning for use by the executor: */ Bitmapset *funcparams; /* PARAM_EXEC Param IDs affecting this func */ } RangeTblFunction; /* * TableSampleClause - TABLESAMPLE appearing in a transformed FROM clause * * Unlike RangeTableSample, this is a subnode of the relevant RangeTblEntry. */ typedef struct TableSampleClause { NodeTag type; Oid tsmhandler; /* OID of the tablesample handler function */ List *args; /* tablesample argument expression(s) */ Expr *repeatable; /* REPEATABLE expression, or NULL if none */ } TableSampleClause; /* * WithCheckOption - * representation of WITH CHECK OPTION checks to be applied to new tuples * when inserting/updating an auto-updatable view, or RLS WITH CHECK * policies to be applied when inserting/updating a relation with RLS. */ typedef enum WCOKind { WCO_VIEW_CHECK, /* WCO on an auto-updatable view */ WCO_RLS_INSERT_CHECK, /* RLS INSERT WITH CHECK policy */ WCO_RLS_UPDATE_CHECK, /* RLS UPDATE WITH CHECK policy */ WCO_RLS_CONFLICT_CHECK, /* RLS ON CONFLICT DO UPDATE USING policy */ 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? */ bool hashable; /* can eqop be implemented by hashing? */ } SortGroupClause; /* * GroupingSet - * representation of CUBE, ROLLUP and GROUPING SETS clauses * * In a Query with grouping sets, the groupClause contains a flat list of * SortGroupClause nodes for each distinct expression used. The actual * structure of the GROUP BY clause is given by the groupingSets tree. * * In the raw parser output, GroupingSet nodes (of all types except SIMPLE * which is not used) are potentially mixed in with the expressions in the * groupClause of the SelectStmt. (An expression can't contain a GroupingSet, * but a list may mix GroupingSet and expression nodes.) At this stage, the * content of each node is a list of expressions, some of which may be RowExprs * which represent sublists rather than actual row constructors, and nested * GroupingSet nodes where legal in the grammar. The structure directly * reflects the query syntax. * * In parse analysis, the transformed expressions are used to build the tlist * and groupClause list (of SortGroupClause nodes), and the groupingSets tree * is eventually reduced to a fixed format: * * EMPTY nodes represent (), and obviously have no content * * SIMPLE nodes represent a list of one or more expressions to be treated as an * atom by the enclosing structure; the content is an integer list of * ressortgroupref values (see SortGroupClause) * * CUBE and ROLLUP nodes contain a list of one or more SIMPLE nodes. * * SETS nodes contain a list of EMPTY, SIMPLE, CUBE or ROLLUP nodes, but after * parse analysis they cannot contain more SETS nodes; enough of the syntactic * transforms of the spec have been applied that we no longer have arbitrarily * deep nesting (though we still preserve the use of cube/rollup). * * Note that if the groupingSets tree contains no SIMPLE nodes (only EMPTY * nodes at the leaves), then the groupClause will be empty, but this is still * an aggregation query (similar to using aggs or HAVING without GROUP BY). * * As an example, the following clause: * * GROUP BY GROUPING SETS ((a,b), CUBE(c,(d,e))) * * looks like this after raw parsing: * * SETS( RowExpr(a,b) , CUBE( c, RowExpr(d,e) ) ) * * and parse analysis converts it to: * * SETS( SIMPLE(1,2), CUBE( SIMPLE(3), SIMPLE(4,5) ) ) */ typedef enum GroupingSetKind { GROUPING_SET_EMPTY, GROUPING_SET_SIMPLE, GROUPING_SET_ROLLUP, GROUPING_SET_CUBE, GROUPING_SET_SETS } GroupingSetKind; typedef struct GroupingSet { NodeTag type; GroupingSetKind kind; List *content; int location; } GroupingSet; /* * WindowClause - * transformed representation of WINDOW and OVER clauses * * A parsed Query's windowClause list contains these structs. "name" is set * if the clause originally came from WINDOW, and is NULL if it originally * was an OVER clause (but note that we collapse out duplicate OVERs). * partitionClause and orderClause are lists of SortGroupClause structs. * If we have RANGE with offset PRECEDING/FOLLOWING, the semantics of that are * specified by startInRangeFunc/inRangeColl/inRangeAsc/inRangeNullsFirst * for the start offset, or endInRangeFunc/inRange* for the end offset. * winref is an ID number referenced by WindowFunc nodes; it must be unique * among the members of a Query's windowClause list. * When refname isn't null, the partitionClause is always copied from there; * the orderClause might or might not be copied (see copiedOrder); the framing * options are never copied, per spec. */ typedef struct WindowClause { NodeTag type; char *name; /* window name (NULL in an OVER clause) */ char *refname; /* referenced window name, if any */ List *partitionClause; /* PARTITION BY list */ List *orderClause; /* ORDER BY list */ int frameOptions; /* frame_clause options, see WindowDef */ Node *startOffset; /* expression for starting bound, if any */ Node *endOffset; /* expression for ending bound, if any */ List *runCondition; /* qual to help short-circuit execution */ Oid startInRangeFunc; /* in_range function for startOffset */ Oid endInRangeFunc; /* in_range function for endOffset */ Oid inRangeColl; /* collation for in_range tests */ bool inRangeAsc; /* use ASC sort order for in_range tests? */ bool inRangeNullsFirst; /* nulls sort first for in_range tests? */ Index winref; /* ID referenced by window functions */ bool copiedOrder; /* did we copy orderClause from refname? */ } WindowClause; /* * RowMarkClause - * parser output representation of FOR [KEY] UPDATE/SHARE clauses * * Query.rowMarks contains a separate RowMarkClause node for each relation * identified as a FOR [KEY] UPDATE/SHARE target. If one of these clauses * is applied to a subquery, we generate RowMarkClauses for all normal and * subquery rels in the subquery, but they are marked pushedDown = true to * distinguish them from clauses that were explicitly written at this query * level. Also, Query.hasForUpdate tells whether there were explicit FOR * UPDATE/SHARE/KEY SHARE clauses in the current query level. */ typedef struct RowMarkClause { NodeTag type; Index rti; /* range table index of target relation */ LockClauseStrength strength; LockWaitPolicy waitPolicy; /* NOWAIT and SKIP LOCKED */ bool pushedDown; /* pushed down from higher query level? */ } RowMarkClause; /* * WithClause - * representation of WITH clause * * Note: WithClause does not propagate into the Query representation; * but CommonTableExpr does. */ typedef struct WithClause { NodeTag type; List *ctes; /* list of CommonTableExprs */ bool recursive; /* true = WITH RECURSIVE */ int location; /* token location, or -1 if unknown */ } WithClause; /* * InferClause - * ON CONFLICT unique index inference clause * * Note: InferClause does not propagate into the Query representation. */ typedef struct InferClause { NodeTag type; List *indexElems; /* IndexElems to infer unique index */ Node *whereClause; /* qualification (partial-index predicate) */ char *conname; /* Constraint name, or NULL if unnamed */ int location; /* token location, or -1 if unknown */ } InferClause; /* * OnConflictClause - * representation of ON CONFLICT clause * * Note: OnConflictClause does not propagate into the Query representation. */ typedef struct OnConflictClause { NodeTag type; OnConflictAction action; /* DO NOTHING or UPDATE? */ InferClause *infer; /* Optional index inference clause */ List *targetList; /* the target list (of ResTarget) */ Node *whereClause; /* qualifications */ int location; /* token location, or -1 if unknown */ } OnConflictClause; /* * CommonTableExpr - * representation of WITH list element */ 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; int 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; int 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; char *ctename; /* query name (never qualified) */ List *aliascolnames; /* optional list of column names */ CTEMaterialize ctematerialized; /* is this an optimization fence? */ /* SelectStmt/InsertStmt/etc before parse analysis, Query afterwards: */ Node *ctequery; /* the CTE's subquery */ CTESearchClause *search_clause; CTECycleClause *cycle_clause; int location; /* token location, or -1 if unknown */ /* These fields are set during parse analysis: */ bool cterecursive; /* is this CTE actually recursive? */ int cterefcount; /* number of RTEs referencing this CTE * (excluding internal self-references) */ List *ctecolnames; /* list of output column names */ List *ctecoltypes; /* OID list of output column type OIDs */ List *ctecoltypmods; /* integer list of output column typmods */ List *ctecolcollations; /* OID list of column collation OIDs */ } CommonTableExpr; /* Convenience macro to get the output tlist of a CTE's query */ #define GetCTETargetList(cte) \ (AssertMacro(IsA((cte)->ctequery, Query)), \ ((Query *) (cte)->ctequery)->commandType == CMD_SELECT ? \ ((Query *) (cte)->ctequery)->targetList : \ ((Query *) (cte)->ctequery)->returningList) /* * 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; bool matched; /* true=MATCHED, false=NOT MATCHED */ 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; /* * MergeAction - * Transformed representation of a WHEN clause in a MERGE statement */ typedef struct MergeAction { NodeTag type; bool matched; /* true=MATCHED, false=NOT MATCHED */ CmdType commandType; /* INSERT/UPDATE/DELETE/DO NOTHING */ OverridingKind override; /* OVERRIDING clause */ Node *qual; /* transformed WHEN conditions */ List *targetList; /* the target list (of TargetEntry) */ List *updateColnos; /* target attribute numbers of an UPDATE */ } MergeAction; /* * TriggerTransition - * representation of transition row or table naming clause * * Only transition tables are initially supported in the syntax, and only for * AFTER triggers, but other permutations are accepted by the parser so we can * give a meaningful message from C code. */ typedef struct TriggerTransition { NodeTag type; char *name; bool isNew; bool isTable; } TriggerTransition; /***************************************************************************** * Raw Grammar Output Statements *****************************************************************************/ /* * RawStmt --- container for any one statement's raw parse tree * * Parse analysis converts a raw parse tree headed by a RawStmt node into * an analyzed statement headed by a Query node. For optimizable statements, * the conversion is complex. For utility statements, the parser usually just * transfers the raw parse tree (sans RawStmt) into the utilityStmt field of * the Query node, and all the useful work happens at execution time. * * stmt_location/stmt_len identify the portion of the source text string * containing this raw statement (useful for multi-statement strings). */ typedef struct RawStmt { NodeTag type; Node *stmt; /* raw parse tree */ int stmt_location; /* start location, or -1 if unknown */ int stmt_len; /* length in bytes; 0 means "rest of string" */ } RawStmt; /***************************************************************************** * Optimizable Statements *****************************************************************************/ /* ---------------------- * Insert Statement * * The source expression is represented by SelectStmt for both the * SELECT and VALUES cases. If selectStmt is NULL, then the query * is INSERT ... DEFAULT VALUES. * ---------------------- */ typedef struct InsertStmt { NodeTag type; RangeVar *relation; /* relation to insert into */ List *cols; /* optional: names of the target columns */ Node *selectStmt; /* the source SELECT/VALUES, or NULL */ OnConflictClause *onConflictClause; /* ON CONFLICT clause */ List *returningList; /* list of expressions to return */ WithClause *withClause; /* WITH clause */ OverridingKind override; /* OVERRIDING clause */ } InsertStmt; /* ---------------------- * Delete Statement * ---------------------- */ typedef struct DeleteStmt { NodeTag type; RangeVar *relation; /* relation to delete from */ List *usingClause; /* optional using clause for more tables */ Node *whereClause; /* qualifications */ List *returningList; /* list of expressions to return */ WithClause *withClause; /* WITH clause */ } DeleteStmt; /* ---------------------- * Update Statement * ---------------------- */ typedef struct UpdateStmt { NodeTag type; RangeVar *relation; /* relation to update */ List *targetList; /* the target list (of ResTarget) */ Node *whereClause; /* qualifications */ List *fromClause; /* optional from clause for more tables */ List *returningList; /* list of expressions to return */ WithClause *withClause; /* WITH clause */ } UpdateStmt; /* ---------------------- * 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) */ 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: */ List *colTypes; /* OID list of output column type OIDs */ List *colTypmods; /* integer list of output column typmods */ List *colCollations; /* OID list of output column collation OIDs */ List *groupClauses; /* a list of SortGroupClause's */ /* groupClauses is NIL if UNION ALL, but must be set otherwise */ } SetOperationStmt; /* * 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 */ int 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_AddColumnRecurse, /* internal to commands/tablecmds.c */ AT_AddColumnToView, /* implicitly via CREATE OR REPLACE VIEW */ AT_ColumnDefault, /* alter column default */ AT_CookedColumnDefault, /* add a pre-cooked column default */ AT_DropNotNull, /* alter column drop not null */ AT_SetNotNull, /* alter column set not null */ AT_DropExpression, /* alter column drop expression */ AT_CheckNotNull, /* check column is already marked not null */ AT_SetStatistics, /* alter column set statistics */ AT_SetOptions, /* alter column set ( options ) */ AT_ResetOptions, /* alter column reset ( options ) */ AT_SetStorage, /* alter column set storage */ AT_SetCompression, /* alter column set compression */ AT_DropColumn, /* drop column */ AT_DropColumnRecurse, /* internal to commands/tablecmds.c */ AT_AddIndex, /* add index */ AT_ReAddIndex, /* internal to commands/tablecmds.c */ AT_AddConstraint, /* add constraint */ AT_AddConstraintRecurse, /* internal to commands/tablecmds.c */ AT_ReAddConstraint, /* internal to commands/tablecmds.c */ AT_ReAddDomainConstraint, /* internal to commands/tablecmds.c */ AT_AlterConstraint, /* alter constraint */ AT_ValidateConstraint, /* validate constraint */ AT_ValidateConstraintRecurse, /* internal to commands/tablecmds.c */ AT_AddIndexConstraint, /* add constraint using existing index */ AT_DropConstraint, /* drop constraint */ AT_DropConstraintRecurse, /* internal to commands/tablecmds.c */ AT_ReAddComment, /* internal to commands/tablecmds.c */ AT_AlterColumnType, /* alter column type */ AT_AlterColumnGenericOptions, /* alter column OPTIONS (...) */ AT_ChangeOwner, /* change owner */ AT_ClusterOn, /* CLUSTER ON */ AT_DropCluster, /* SET WITHOUT CLUSTER */ AT_SetLogged, /* SET LOGGED */ AT_SetUnLogged, /* SET UNLOGGED */ AT_DropOids, /* SET WITHOUT OIDS */ AT_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 */ 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 */ bool admin_opt; /* with admin option */ RoleSpec *grantor; /* set grantor to other than current role */ DropBehavior behavior; /* drop behavior (for REVOKE) */ } GrantRoleStmt; /* ---------------------- * Alter Default Privileges Statement * ---------------------- */ typedef struct AlterDefaultPrivilegesStmt { NodeTag type; List *options; /* list of DefElem */ GrantStmt *action; /* GRANT/REVOKE action (with objects=NIL) */ } AlterDefaultPrivilegesStmt; /* ---------------------- * Copy Statement * * We support "COPY relation FROM file", "COPY relation TO file", and * "COPY (query) TO file". In any given CopyStmt, exactly one of "relation" * and "query" must be non-NULL. * ---------------------- */ typedef struct CopyStmt { NodeTag type; RangeVar *relation; /* the relation to copy */ Node *query; /* the query (SELECT or DML statement with * RETURNING) to copy, as a raw parse tree */ List *attlist; /* List of column names (as Strings), or NIL * for all columns */ bool is_from; /* TO or FROM */ bool is_program; /* is 'filename' a program to popen? */ char *filename; /* filename, or NULL for STDIN/STDOUT */ List *options; /* List of DefElem nodes */ Node *whereClause; /* WHERE condition (or NULL) */ } CopyStmt; /* ---------------------- * SET Statement (includes RESET) * * "SET var TO DEFAULT" and "RESET var" are semantically equivalent, but we * preserve the distinction in VariableSetKind for CreateCommandTag(). * ---------------------- */ typedef enum 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 */ /* Fields used for most/all constraint types: */ char *conname; /* Constraint name, or NULL if unnamed */ bool deferrable; /* DEFERRABLE? */ bool initdeferred; /* INITIALLY DEFERRED? */ int location; /* token location, or -1 if unknown */ /* Fields used for constraints with expressions (CHECK and DEFAULT): */ bool is_no_inherit; /* is constraint non-inheritable? */ Node *raw_expr; /* expr, as untransformed parse tree */ char *cooked_expr; /* expr, as nodeToString representation */ char generated_when; /* ALWAYS or BY DEFAULT */ /* Fields used for unique constraints (UNIQUE and PRIMARY KEY): */ bool nulls_not_distinct; /* null treatment for UNIQUE constraints */ List *keys; /* String nodes naming referenced key * column(s) */ List *including; /* String nodes naming referenced nonkey * column(s) */ /* Fields used for EXCLUSION constraints: */ List *exclusions; /* list of (IndexElem, operator name) pairs */ /* Fields used for index constraints (UNIQUE, PRIMARY KEY, EXCLUSION): */ List *options; /* options from WITH clause */ char *indexname; /* existing index to use; otherwise NULL */ char *indexspace; /* index tablespace; NULL for default */ bool reset_default_tblspc; /* reset default_tablespace prior to * creating the index */ /* These could be, but currently are not, used for UNIQUE/PKEY: */ char *access_method; /* index access method; NULL for default */ Node *where_clause; /* partial index predicate */ /* Fields used for FOREIGN KEY constraints: */ RangeVar *pktable; /* Primary key table */ List *fk_attrs; /* Attributes of foreign key */ List *pk_attrs; /* Corresponding attrs in PK table */ char fk_matchtype; /* FULL, PARTIAL, SIMPLE */ char fk_upd_action; /* ON UPDATE action */ char fk_del_action; /* ON DELETE action */ List *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 */ /* Fields used for constraints that allow a NOT VALID specification */ bool skip_validation; /* skip validation of existing rows? */ bool initially_valid; /* mark the new constraint as valid? */ } Constraint; /* ---------------------- * Create/Drop Table Space Statements * ---------------------- */ typedef struct CreateTableSpaceStmt { NodeTag type; char *tablespacename; RoleSpec *owner; char *location; List *options; } CreateTableSpaceStmt; typedef struct DropTableSpaceStmt { NodeTag type; char *tablespacename; bool missing_ok; /* skip error if missing? */ } DropTableSpaceStmt; typedef struct AlterTableSpaceOptionsStmt { NodeTag type; char *tablespacename; List *options; bool isReset; } AlterTableSpaceOptionsStmt; typedef struct AlterTableMoveAllStmt { NodeTag type; char *orig_tablespacename; ObjectType objtype; /* Object type to move */ List *roles; /* List of roles to move objects of */ char *new_tablespacename; bool nowait; } AlterTableMoveAllStmt; /* ---------------------- * Create/Alter Extension Statements * ---------------------- */ typedef struct CreateExtensionStmt { NodeTag type; char *extname; bool if_not_exists; /* just do nothing if it already exists? */ List *options; /* List of DefElem nodes */ } CreateExtensionStmt; /* Only used for ALTER EXTENSION UPDATE; later might need an action field */ typedef struct AlterExtensionStmt { NodeTag type; char *extname; List *options; /* List of DefElem nodes */ } AlterExtensionStmt; typedef struct AlterExtensionContentsStmt { NodeTag type; char *extname; /* Extension's name */ int action; /* +1 = add object, -1 = drop object */ ObjectType objtype; /* Object's type */ Node *object; /* Qualified name of the object */ } AlterExtensionContentsStmt; /* ---------------------- * Create/Alter FOREIGN DATA WRAPPER Statements * ---------------------- */ typedef struct CreateFdwStmt { NodeTag type; char *fdwname; /* foreign-data wrapper name */ List *func_options; /* HANDLER/VALIDATOR options */ List *options; /* generic options to FDW */ } CreateFdwStmt; typedef struct AlterFdwStmt { NodeTag type; char *fdwname; /* foreign-data wrapper name */ List *func_options; /* HANDLER/VALIDATOR options */ List *options; /* generic options to FDW */ } AlterFdwStmt; /* ---------------------- * Create/Alter FOREIGN SERVER Statements * ---------------------- */ typedef struct CreateForeignServerStmt { NodeTag type; char *servername; /* server name */ char *servertype; /* optional server type */ char *version; /* optional server version */ char *fdwname; /* FDW name */ bool if_not_exists; /* just do nothing if it already exists? */ List *options; /* generic options to server */ } CreateForeignServerStmt; typedef struct AlterForeignServerStmt { NodeTag type; char *servername; /* server name */ char *version; /* optional server version */ List *options; /* generic options to server */ bool has_version; /* version specified */ } AlterForeignServerStmt; /* ---------------------- * Create FOREIGN TABLE Statement * ---------------------- */ typedef struct CreateForeignTableStmt { CreateStmt base; char *servername; List *options; } CreateForeignTableStmt; /* ---------------------- * Create/Drop USER MAPPING Statements * ---------------------- */ typedef struct CreateUserMappingStmt { NodeTag type; RoleSpec *user; /* user role */ char *servername; /* server name */ bool if_not_exists; /* just do nothing if it already exists? */ List *options; /* generic options to server */ } CreateUserMappingStmt; typedef struct AlterUserMappingStmt { NodeTag type; RoleSpec *user; /* user role */ char *servername; /* server name */ List *options; /* generic options to server */ } AlterUserMappingStmt; typedef struct DropUserMappingStmt { NodeTag type; RoleSpec *user; /* user role */ char *servername; /* server name */ bool missing_ok; /* ignore missing mappings */ } DropUserMappingStmt; /* ---------------------- * Import Foreign Schema Statement * ---------------------- */ typedef enum ImportForeignSchemaType { FDW_IMPORT_SCHEMA_ALL, /* all relations wanted */ FDW_IMPORT_SCHEMA_LIMIT_TO, /* include only listed tables in import */ FDW_IMPORT_SCHEMA_EXCEPT /* exclude listed tables from import */ } ImportForeignSchemaType; typedef struct ImportForeignSchemaStmt { NodeTag type; char *server_name; /* FDW server name */ char *remote_schema; /* remote schema name to query */ char *local_schema; /* local schema to create objects in */ ImportForeignSchemaType list_type; /* type of table list */ List *table_list; /* List of RangeVar */ List *options; /* list of options to pass to FDW */ } ImportForeignSchemaStmt; /*---------------------- * Create POLICY Statement *---------------------- */ typedef struct CreatePolicyStmt { NodeTag type; char *policy_name; /* Policy's name */ RangeVar *table; /* the table name the policy applies to */ char *cmd_name; /* the command name the policy applies to */ bool permissive; /* restrictive or permissive policy */ List *roles; /* the roles associated with the policy */ Node *qual; /* the policy's condition */ Node *with_check; /* the policy's WITH CHECK condition. */ } CreatePolicyStmt; /*---------------------- * Alter POLICY Statement *---------------------- */ typedef struct AlterPolicyStmt { NodeTag type; char *policy_name; /* Policy's name */ RangeVar *table; /* the table name the policy applies to */ List *roles; /* the roles associated with the policy */ Node *qual; /* the policy's condition */ Node *with_check; /* the policy's WITH CHECK condition. */ } AlterPolicyStmt; /*---------------------- * Create ACCESS METHOD Statement *---------------------- */ typedef struct CreateAmStmt { NodeTag type; char *amname; /* access method name */ List *handler_name; /* handler function name */ char amtype; /* type of access method */ } CreateAmStmt; /* ---------------------- * Create TRIGGER Statement * ---------------------- */ typedef struct CreateTrigStmt { NodeTag type; 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 */ Oid oldNode; /* relfilenode of existing storage, if any */ SubTransactionId oldCreateSubid; /* rd_createSubid of oldNode */ SubTransactionId oldFirstRelfilenodeSubid; /* rd_firstRelfilenodeSubid of * oldNode */ bool unique; /* is index unique? */ bool 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) */ int stxstattarget; /* statistics target */ bool missing_ok; /* skip error if statistics object is missing */ } AlterStatsStmt; /* ---------------------- * Create Function Statement * ---------------------- */ typedef struct CreateFunctionStmt { NodeTag type; bool is_procedure; /* it's really CREATE PROCEDURE */ bool replace; /* T => replace if already exists */ List *funcname; /* qualified name of function to create */ List *parameters; /* a list of FunctionParameter */ TypeName *returnType; /* the return type */ List *options; /* a list of DefElem */ 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 { 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.) * ---------------------- */ typedef struct CallStmt { NodeTag type; FuncCall *funccall; /* from the parser */ FuncExpr *funcexpr; /* transformed call, with only input args */ List *outargs; /* transformed output-argument expressions */ } CallStmt; typedef struct CallContext { NodeTag type; bool atomic; } CallContext; /* ---------------------- * Alter Object Rename Statement * ---------------------- */ typedef struct RenameStmt { NodeTag type; ObjectType renameType; /* OBJECT_TABLE, OBJECT_COLUMN, etc */ ObjectType relationType; /* if column name, associated relation type */ RangeVar *relation; /* in case it's a table */ Node *object; /* in case it's some other object */ char *subname; /* name of contained object (column, rule, * trigger, etc) */ char *newname; /* the new name */ DropBehavior behavior; /* RESTRICT or CASCADE behavior */ bool missing_ok; /* skip error if missing? */ } RenameStmt; /* ---------------------- * ALTER object DEPENDS ON EXTENSION extname * ---------------------- */ typedef struct AlterObjectDependsStmt { NodeTag type; ObjectType objectType; /* OBJECT_FUNCTION, OBJECT_TRIGGER, etc */ RangeVar *relation; /* in case a table is involved */ Node *object; /* name of the object */ 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 */ char *savepoint_name; /* for savepoint commands */ char *gid; /* for two-phase-commit related commands */ bool chain; /* AND CHAIN option */ } TransactionStmt; /* ---------------------- * Create Type Statement, composite types * ---------------------- */ typedef struct CompositeTypeStmt { NodeTag type; RangeVar *typevar; /* the composite type to be created */ List *coldeflist; /* list of ColumnDef nodes */ } CompositeTypeStmt; /* ---------------------- * Create Type Statement, enum types * ---------------------- */ typedef struct CreateEnumStmt { NodeTag type; List *typeName; /* qualified name (list of 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; char *name; /* The name of the plan to remove */ /* NULL means DEALLOCATE ALL */ } DeallocateStmt; /* * DROP OWNED statement */ typedef struct DropOwnedStmt { NodeTag type; List *roles; DropBehavior behavior; } DropOwnedStmt; /* * REASSIGN OWNED statement */ typedef struct ReassignOwnedStmt { NodeTag type; List *roles; RoleSpec *newrole; } ReassignOwnedStmt; /* * TS Dictionary stmts: DefineStmt, RenameStmt and DropStmt are default */ typedef struct AlterTSDictionaryStmt { NodeTag type; List *dictname; /* qualified name (list of 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; int 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 */ pg_query-4.2.3/ext/pg_query/include/nodes/params.h0000644000004100000410000001505114510636647022243 0ustar www-datawww-data/*------------------------------------------------------------------------- * * params.h * Support for finding the values associated with Param nodes. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/params.h * *------------------------------------------------------------------------- */ #ifndef PARAMS_H #define PARAMS_H /* Forward declarations, to avoid including other headers */ struct Bitmapset; struct ExprState; struct Param; struct ParseState; /* * ParamListInfo * * ParamListInfo structures are used to pass parameters into the executor * for parameterized plans. We support two basic approaches to supplying * parameter values, the "static" way and the "dynamic" way. * * In the static approach, per-parameter data is stored in an array of * ParamExternData structs appended to the ParamListInfo struct. * Each entry in the array defines the value to be substituted for a * PARAM_EXTERN parameter. The "paramid" of a PARAM_EXTERN Param * can range from 1 to numParams. * * Although parameter numbers are normally consecutive, we allow * ptype == InvalidOid to signal an unused array entry. * * pflags is a flags field. Currently the only used bit is: * PARAM_FLAG_CONST signals the planner that it may treat this parameter * as a constant (i.e., generate a plan that works only for this value * of the parameter). * * In the dynamic approach, all access to parameter values is done through * hook functions found in the ParamListInfo struct. In this case, * the ParamExternData array is typically unused and not allocated; * but the legal range of paramid is still 1 to numParams. * * Although the data structure is really an array, not a list, we keep * the old typedef name to avoid unnecessary code changes. * * There are 3 hook functions that can be associated with a ParamListInfo * structure: * * If paramFetch isn't null, it is called to fetch the ParamExternData * for a particular param ID, rather than accessing the relevant element * of the ParamExternData array. This supports the case where the array * isn't there at all, as well as cases where the data in the array * might be obsolete or lazily evaluated. paramFetch must return the * address of a ParamExternData struct describing the specified param ID; * the convention above about ptype == InvalidOid signaling an invalid * param ID still applies. The returned struct can either be placed in * the "workspace" supplied by the caller, or it can be in storage * controlled by the paramFetch hook if that's more convenient. * (In either case, the struct is not expected to be long-lived.) * If "speculative" is true, the paramFetch hook should not risk errors * in trying to fetch the parameter value, and should report an invalid * parameter instead. * * If paramCompile isn't null, then it controls what execExpr.c compiles * for PARAM_EXTERN Param nodes --- typically, this hook would emit a * EEOP_PARAM_CALLBACK step. This allows unnecessary work to be * optimized away in compiled expressions. * * If parserSetup isn't null, then it is called to re-instantiate the * original parsing hooks when a query needs to be re-parsed/planned. * This is especially useful if the types of parameters might change * from time to time, since it can replace the need to supply a fixed * list of parameter types to the parser. * * Notice that the paramFetch and paramCompile hooks are actually passed * the ParamListInfo struct's address; they can therefore access all * three of the "arg" fields, and the distinction between paramFetchArg * and paramCompileArg is rather arbitrary. */ #define PARAM_FLAG_CONST 0x0001 /* parameter is constant */ typedef struct ParamExternData { Datum value; /* parameter value */ bool isnull; /* is it NULL? */ uint16 pflags; /* flag bits, see above */ Oid ptype; /* parameter's datatype, or 0 */ } ParamExternData; typedef struct ParamListInfoData *ParamListInfo; typedef ParamExternData *(*ParamFetchHook) (ParamListInfo params, int paramid, bool speculative, ParamExternData *workspace); typedef void (*ParamCompileHook) (ParamListInfo params, struct Param *param, struct ExprState *state, Datum *resv, bool *resnull); typedef void (*ParserSetupHook) (struct ParseState *pstate, void *arg); typedef struct ParamListInfoData { ParamFetchHook paramFetch; /* parameter fetch hook */ void *paramFetchArg; ParamCompileHook paramCompile; /* parameter compile hook */ void *paramCompileArg; ParserSetupHook parserSetup; /* parser setup hook */ void *parserSetupArg; char *paramValuesStr; /* params as a single string for errors */ int numParams; /* nominal/maximum # of Params represented */ /* * params[] may be of length zero if paramFetch is supplied; otherwise it * must be of length numParams. */ ParamExternData params[FLEXIBLE_ARRAY_MEMBER]; } ParamListInfoData; /* ---------------- * ParamExecData * * ParamExecData entries are used for executor internal parameters * (that is, values being passed into or out of a sub-query). The * paramid of a PARAM_EXEC Param is a (zero-based) index into an * array of ParamExecData records, which is referenced through * es_param_exec_vals or ecxt_param_exec_vals. * * If execPlan is not NULL, it points to a SubPlanState node that needs * to be executed to produce the value. (This is done so that we can have * lazy evaluation of InitPlans: they aren't executed until/unless a * result value is needed.) Otherwise the value is assumed to be valid * when needed. * ---------------- */ typedef struct ParamExecData { void *execPlan; /* should be "SubPlanState *" */ Datum value; bool isnull; } ParamExecData; /* type of argument for ParamsErrorCallback */ typedef struct ParamsErrorCbData { const char *portalName; ParamListInfo params; } ParamsErrorCbData; /* Functions found in src/backend/nodes/params.c */ extern ParamListInfo makeParamList(int numParams); extern ParamListInfo copyParamList(ParamListInfo from); extern Size EstimateParamListSpace(ParamListInfo paramLI); extern void SerializeParamList(ParamListInfo paramLI, char **start_address); extern ParamListInfo RestoreParamList(char **start_address); extern char *BuildParamLogString(ParamListInfo params, char **paramTextValues, int valueLen); extern void ParamsErrorCallback(void *arg); #endif /* PARAMS_H */ pg_query-4.2.3/ext/pg_query/include/catalog/0000755000004100000410000000000014510636647021107 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/catalog/pg_parameter_acl.h0000644000004100000410000000360414510636647024550 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_parameter_acl.h * definition of the "configuration parameter ACL" system catalog * (pg_parameter_acl). * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_parameter_acl.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_PARAMETER_ACL_H #define PG_PARAMETER_ACL_H #include "catalog/genbki.h" #include "catalog/pg_parameter_acl_d.h" /* ---------------- * pg_parameter_acl definition. cpp turns this into * typedef struct FormData_pg_parameter_acl * ---------------- */ CATALOG(pg_parameter_acl,6243,ParameterAclRelationId) BKI_SHARED_RELATION { Oid oid; /* oid */ #ifdef CATALOG_VARLEN /* variable-length fields start here */ /* name of parameter */ text parname BKI_FORCE_NOT_NULL; /* access permissions */ aclitem paracl[1] BKI_DEFAULT(_null_); #endif } FormData_pg_parameter_acl; /* ---------------- * Form_pg_parameter_acl corresponds to a pointer to a tuple with * the format of pg_parameter_acl relation. * ---------------- */ typedef FormData_pg_parameter_acl * Form_pg_parameter_acl; DECLARE_TOAST_WITH_MACRO(pg_parameter_acl, 6244, 6245, PgParameterAclToastTable, PgParameterAclToastIndex); DECLARE_UNIQUE_INDEX(pg_parameter_acl_parname_index, 6246, ParameterAclParnameIndexId, on pg_parameter_acl using btree(parname text_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_parameter_acl_oid_index, 6247, ParameterAclOidIndexId, on pg_parameter_acl using btree(oid oid_ops)); extern Oid ParameterAclLookup(const char *parameter, bool missing_ok); extern Oid ParameterAclCreate(const char *parameter); #endif /* PG_PARAMETER_ACL_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_partitioned_table_d.h0000644000004100000410000000221214510636647025737 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_partitioned_table_d.h * Macro definitions for pg_partitioned_table * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_publication.h0000644000004100000410000001146414510636647024265 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_publication.h * definition of the "publication" system catalog (pg_publication) * * Portions Copyright (c) 1996-2022, 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, on pg_publication using btree(oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_publication_pubname_index, 6111, PublicationNameIndexId, on pg_publication using btree(pubname name_ops)); 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 puboid, 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); extern Oid get_publication_oid(const char *pubname, bool missing_ok); extern char *get_publication_name(Oid pubid, bool missing_ok); #endif /* PG_PUBLICATION_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_proc.h0000644000004100000410000001500314510636647022710 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_proc.h * definition of the "procedure" system catalog (pg_proc) * * Portions Copyright (c) 1996-2022, 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, on pg_proc using btree(oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_proc_proname_args_nsp_index, 2691, ProcedureNameArgsNspIndexId, on pg_proc using btree(proname name_ops, proargtypes oidvector_ops, pronamespace oid_ops)); #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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_ts_template.h0000644000004100000410000000305714510636647024274 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_ts_template.h * definition of the "text search template" system catalog (pg_ts_template) * * * Portions Copyright (c) 1996-2022, 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, on pg_ts_template using btree(tmplname name_ops, tmplnamespace oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_ts_template_oid_index, 3767, TSTemplateOidIndexId, on pg_ts_template using btree(oid oid_ops)); #endif /* PG_TS_TEMPLATE_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_language_d.h0000644000004100000410000000222014510636647024030 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_language_d.h * Macro definitions for pg_language * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_collation_d.h0000644000004100000410000000307614510636647024243 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_collation_d.h * Macro definitions for pg_collation * * Portions Copyright (c) 1996-2022, 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_colliculocale 10 #define Anum_pg_collation_collversion 11 #define Natts_pg_collation 11 #define COLLPROVIDER_DEFAULT 'd' #define COLLPROVIDER_ICU 'i' #define COLLPROVIDER_LIBC 'c' static inline const char * collprovider_name(char c) { switch (c) { 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_ts_dict_d.h0000644000004100000410000000173714510636647023712 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_ts_dict_d.h * Macro definitions for pg_ts_dict * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/storage.h0000644000004100000410000000333014510636647022723 0ustar www-datawww-data/*------------------------------------------------------------------------- * * storage.h * prototypes for functions in backend/catalog/storage.c * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/storage.h * *------------------------------------------------------------------------- */ #ifndef STORAGE_H #define STORAGE_H #include "storage/block.h" #include "storage/relfilenode.h" #include "storage/smgr.h" #include "utils/relcache.h" /* GUC variables */ extern PGDLLIMPORT int wal_skip_threshold; extern SMgrRelation RelationCreateStorage(RelFileNode rnode, char relpersistence, bool register_delete); extern void RelationDropStorage(Relation rel); extern void RelationPreserveStorage(RelFileNode rnode, bool atCommit); extern void RelationPreTruncate(Relation rel); extern void RelationTruncate(Relation rel, BlockNumber nblocks); extern void RelationCopyStorage(SMgrRelation src, SMgrRelation dst, ForkNumber forkNum, char relpersistence); extern bool RelFileNodeSkippingWAL(RelFileNode rnode); extern Size EstimatePendingSyncsSpace(void); extern void SerializePendingSyncs(Size maxSize, char *startAddress); extern void RestorePendingSyncs(char *startAddress); /* * These functions used to be in storage/smgr/smgr.c, which explains the * naming */ extern void smgrDoPendingDeletes(bool isCommit); extern void smgrDoPendingSyncs(bool isCommit, bool isParallelWorker); extern int smgrGetPendingDeletes(bool forCommit, RelFileNode **ptr); extern void AtSubCommit_smgr(void); extern void AtSubAbort_smgr(void); extern void PostPrepare_smgr(void); #endif /* STORAGE_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_namespace_d.h0000644000004100000410000000175514510636647024215 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_namespace_d.h * Macro definitions for pg_namespace * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_authid_d.h0000644000004100000410000000334314510636647023532 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_authid_d.h * Macro definitions for pg_authid * * Portions Copyright (c) 1996-2022, 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 #endif /* PG_AUTHID_D_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_control.h0000644000004100000410000002161314510636647023431 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_control.h * *------------------------------------------------------------------------- */ #ifndef PG_CONTROL_H #define PG_CONTROL_H #include "access/transam.h" #include "access/xlogdefs.h" #include "pgtime.h" /* for pg_time_t */ #include "port/pg_crc32c.h" /* Version identifier for this pg_control format */ #define PG_CONTROL_VERSION 1300 /* Nonce key length, see below */ #define MOCK_AUTH_NONCE_LEN 32 /* * Body of CheckPoint XLOG records. This is declared here because we keep * a copy of the latest one in pg_control for possible disaster recovery. * Changing this struct requires a PG_CONTROL_VERSION bump. */ typedef struct CheckPoint { XLogRecPtr redo; /* next RecPtr available when we began to * create CheckPoint (i.e. REDO start point) */ TimeLineID ThisTimeLineID; /* current TLI */ TimeLineID PrevTimeLineID; /* previous TLI, if this record begins a new * timeline (equals ThisTimeLineID otherwise) */ bool fullPageWrites; /* current full_page_writes */ FullTransactionId 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 /* * 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 #endif /* PG_CONTROL_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_ts_dict.h0000644000004100000410000000322114510636647023375 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_ts_dict.h * definition of the "text search dictionary" system catalog (pg_ts_dict) * * * Portions Copyright (c) 1996-2022, 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, on pg_ts_dict using btree(dictname name_ops, dictnamespace oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_ts_dict_oid_index, 3605, TSDictionaryOidIndexId, on pg_ts_dict using btree(oid oid_ops)); #endif /* PG_TS_DICT_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_index_d.h0000644000004100000410000000344314510636647023364 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_index_d.h * Macro definitions for pg_index * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_constraint.h0000644000004100000410000002311114510636647024130 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_constraint.h * definition of the "constraint" system catalog (pg_constraint) * * * Portions Copyright (c) 1996-2022, 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) */ int32 coninhcount; /* Has a local definition and cannot be inherited */ bool connoinherit; #ifdef CATALOG_VARLEN /* variable-length fields start here */ /* * Columns of conrelid that the constraint applies to, if known (this is * NULL for trigger constraints) */ int16 conkey[1]; /* * If a foreign key, the referenced columns of confrelid */ int16 confkey[1]; /* * If a foreign key, the OIDs of the PK = FK equality operators for each * column of the constraint */ Oid conpfeqop[1] 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, on pg_constraint using btree(conname name_ops, connamespace oid_ops)); DECLARE_UNIQUE_INDEX(pg_constraint_conrelid_contypid_conname_index, 2665, ConstraintRelidTypidNameIndexId, on pg_constraint using btree(conrelid oid_ops, contypid oid_ops, conname name_ops)); DECLARE_INDEX(pg_constraint_contypid_index, 2666, ConstraintTypidIndexId, on pg_constraint using btree(contypid oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_constraint_oid_index, 2667, ConstraintOidIndexId, on pg_constraint using btree(oid oid_ops)); DECLARE_INDEX(pg_constraint_conparentid_index, 2579, ConstraintParentIndexId, on pg_constraint using btree(conparentid oid_ops)); /* 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_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 void RemoveConstraintById(Oid conId); extern void RenameConstraintById(Oid conId, const char *newname); extern bool ConstraintNameIsUsed(ConstraintCategory conCat, Oid objId, const char *conname); extern bool ConstraintNameExists(const char *conname, Oid namespaceid); extern char *ChooseConstraintName(const char *name1, const char *name2, const char *label, Oid namespaceid, List *others); extern void AlterConstraintNamespaces(Oid ownerId, Oid oldNspId, Oid newNspId, bool isType, ObjectAddresses *objsMoved); extern void ConstraintSetParentConstraint(Oid childConstrId, Oid parentConstrId, Oid childTableId); extern Oid get_relation_constraint_oid(Oid relid, const char *conname, bool missing_ok); extern Bitmapset *get_relation_constraint_attnos(Oid relid, const char *conname, bool missing_ok, Oid *constraintOid); extern Oid get_domain_constraint_oid(Oid typid, const char *conname, bool missing_ok); extern Oid get_relation_idx_constraint_oid(Oid relationId, Oid indexId); extern Bitmapset *get_primary_key_attnos(Oid relid, bool deferrableOk, Oid *constraintOid); extern void DeconstructFkConstraintRow(HeapTuple tuple, int *numfks, AttrNumber *conkey, AttrNumber *confkey, Oid *pf_eq_oprs, Oid *pp_eq_oprs, Oid *ff_eq_oprs, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_ts_config.h0000644000004100000410000000276614510636647023734 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_ts_config.h * definition of the "text search configuration" system catalog * (pg_ts_config) * * * Portions Copyright (c) 1996-2022, 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, on pg_ts_config using btree(cfgname name_ops, cfgnamespace oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_ts_config_oid_index, 3712, TSConfigOidIndexId, on pg_ts_config using btree(oid oid_ops)); #endif /* PG_TS_CONFIG_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_attribute.h0000644000004100000410000001722314510636647023756 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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); /* * attstattarget is the target number of statistics datapoints to collect * during VACUUM ANALYZE of this column. A zero here indicates that we do * not wish to collect any stats about this column. A "-1" here indicates * that no value has been explicitly set for this column, so ANALYZE * should use the default setting. */ int32 attstattarget BKI_DEFAULT(-1); /* * attlen is a copy of the typlen field from pg_type for this attribute. * See atttypid comments above. */ int16 attlen; /* * attnum is the "attribute number" for the attribute: A value that * uniquely identifies this attribute within its class. For user * attributes, Attribute numbers are greater than 0 and not greater than * the number of attributes in the class. I.e. if the Class pg_class says * that Class XYZ has 10 attributes, then the user attribute numbers in * Class pg_attribute must be 1-10. * * System attributes have attribute numbers less than 0 that are unique * within the class, but not constrained to any particular range. * * Note that (attnum - 1) is often used as the index to an array. */ int16 attnum; /* * attndims is the declared number of dimensions, if an array type, * otherwise zero. */ int32 attndims; /* * fastgetattr() uses attcacheoff to cache byte offsets of attributes in * heap tuples. The value actually stored in pg_attribute (-1) indicates * no cached value. But when we copy these tuples into a tuple * descriptor, we may then update attcacheoff in the copies. This speeds * up the attribute walking process. */ int32 attcacheoff BKI_DEFAULT(-1); /* * atttypmod records type-specific data supplied at table creation time * (for example, the max length of a varchar field). It is passed to * type-specific input and output functions as the third argument. The * value will generally be -1 for types that do not need typmod. */ int32 atttypmod BKI_DEFAULT(-1); /* * attbyval is a copy of the typbyval field from pg_type for this * attribute. See atttypid comments above. */ bool attbyval; /* * 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) */ int32 attinhcount BKI_DEFAULT(0); /* attribute's collation, if any */ Oid attcollation BKI_LOOKUP_OPT(pg_collation); #ifdef CATALOG_VARLEN /* variable-length fields start here */ /* NOTE: The following fields are not present in tuple descriptors. */ /* Column-level access permissions */ aclitem attacl[1] BKI_DEFAULT(_null_); /* Column-level options */ text attoptions[1] BKI_DEFAULT(_null_); /* Column-level FDW options */ text attfdwoptions[1] BKI_DEFAULT(_null_); /* * Missing value for added columns. This is a one element array which lets * us store a value of the attribute type here. */ anyarray attmissingval BKI_DEFAULT(_null_); #endif } FormData_pg_attribute; /* * ATTRIBUTE_FIXED_PART_SIZE is the size of the fixed-layout, * guaranteed-not-null part of a pg_attribute row. This is in fact as much * of the row as gets copied into tuple descriptors, so don't expect you * can access 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; DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnam_index, 2658, AttributeRelidNameIndexId, on pg_attribute using btree(attrelid oid_ops, attname name_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_attribute_relid_attnum_index, 2659, AttributeRelidNumIndexId, on pg_attribute using btree(attrelid oid_ops, attnum int2_ops)); #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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_transform_d.h0000644000004100000410000000167214510636647024272 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_transform_d.h * Macro definitions for pg_transform * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_event_trigger.h0000644000004100000410000000357314510636647024622 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_event_trigger.h * definition of the "event trigger" system catalog (pg_event_trigger) * * * Portions Copyright (c) 1996-2022, 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, on pg_event_trigger using btree(evtname name_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_event_trigger_oid_index, 3468, EventTriggerOidIndexId, on pg_event_trigger using btree(oid oid_ops)); #endif /* PG_EVENT_TRIGGER_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_depend.h0000644000004100000410000000536714510636647023220 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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, on pg_depend using btree(classid oid_ops, objid oid_ops, objsubid int4_ops)); DECLARE_INDEX(pg_depend_reference_index, 2674, DependReferenceIndexId, on pg_depend using btree(refclassid oid_ops, refobjid oid_ops, refobjsubid int4_ops)); #endif /* PG_DEPEND_H */ pg_query-4.2.3/ext/pg_query/include/catalog/indexing.h0000644000004100000410000000344014510636647023066 0ustar www-datawww-data/*------------------------------------------------------------------------- * * indexing.h * This file provides some definitions to support indexing * on system catalogs * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_trigger.h0000644000004100000410000001425114510636647023414 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_trigger.h * definition of the "trigger" system catalog (pg_trigger) * * * Portions Copyright (c) 1996-2022, 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, on pg_trigger using btree(tgconstraint oid_ops)); DECLARE_UNIQUE_INDEX(pg_trigger_tgrelid_tgname_index, 2701, TriggerRelidNameIndexId, on pg_trigger using btree(tgrelid oid_ops, tgname name_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_trigger_oid_index, 2702, TriggerOidIndexId, on pg_trigger using 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/dependency.h0000644000004100000410000002275114510636647023405 0ustar www-datawww-data/*------------------------------------------------------------------------- * * dependency.h * Routines to support inter-object dependencies. * * * Portions Copyright (c) 1996-2022, 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_POLICY entry means that the referenced object is * a role mentioned in a policy object. The referenced object must be a * pg_authid entry. * * (d) 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_POLICY = 'r', SHARED_DEPENDENCY_TABLESPACE = 't', SHARED_DEPENDENCY_INVALID = 0 } SharedDependencyType; /* expansible list of ObjectAddresses (private in dependency.c) */ typedef struct ObjectAddresses ObjectAddresses; /* * This enum covers all system catalogs whose OIDs can appear in * pg_depend.classId or pg_shdepend.classId. Keep object_classes[] in sync. */ typedef enum ObjectClass { OCLASS_CLASS, /* pg_class */ OCLASS_PROC, /* pg_proc */ OCLASS_TYPE, /* pg_type */ OCLASS_CAST, /* pg_cast */ OCLASS_COLLATION, /* pg_collation */ OCLASS_CONSTRAINT, /* pg_constraint */ OCLASS_CONVERSION, /* pg_conversion */ OCLASS_DEFAULT, /* pg_attrdef */ OCLASS_LANGUAGE, /* pg_language */ OCLASS_LARGEOBJECT, /* pg_largeobject */ OCLASS_OPERATOR, /* pg_operator */ OCLASS_OPCLASS, /* pg_opclass */ OCLASS_OPFAMILY, /* pg_opfamily */ OCLASS_AM, /* pg_am */ OCLASS_AMOP, /* pg_amop */ OCLASS_AMPROC, /* pg_amproc */ OCLASS_REWRITE, /* pg_rewrite */ OCLASS_TRIGGER, /* pg_trigger */ OCLASS_SCHEMA, /* pg_namespace */ OCLASS_STATISTIC_EXT, /* pg_statistic_ext */ OCLASS_TSPARSER, /* pg_ts_parser */ OCLASS_TSDICT, /* pg_ts_dict */ OCLASS_TSTEMPLATE, /* pg_ts_template */ OCLASS_TSCONFIG, /* pg_ts_config */ OCLASS_ROLE, /* pg_authid */ OCLASS_DATABASE, /* pg_database */ OCLASS_TBLSPACE, /* pg_tablespace */ OCLASS_FDW, /* pg_foreign_data_wrapper */ OCLASS_FOREIGN_SERVER, /* pg_foreign_server */ OCLASS_USER_MAPPING, /* pg_user_mapping */ OCLASS_DEFACL, /* pg_default_acl */ OCLASS_EXTENSION, /* pg_extension */ OCLASS_EVENT_TRIGGER, /* pg_event_trigger */ OCLASS_PARAMETER_ACL, /* pg_parameter_acl */ OCLASS_POLICY, /* pg_policy */ OCLASS_PUBLICATION, /* pg_publication */ OCLASS_PUBLICATION_NAMESPACE, /* pg_publication_namespace */ OCLASS_PUBLICATION_REL, /* pg_publication_rel */ OCLASS_SUBSCRIPTION, /* pg_subscription */ OCLASS_TRANSFORM /* pg_transform */ } ObjectClass; #define LAST_OCLASS OCLASS_TRANSFORM /* flag bits for performDeletion/performMultipleDeletions: */ #define PERFORM_DELETION_INTERNAL 0x0001 /* internal action */ #define PERFORM_DELETION_CONCURRENTLY 0x0002 /* concurrent drop */ #define PERFORM_DELETION_QUIETLY 0x0004 /* suppress notices */ #define PERFORM_DELETION_SKIP_ORIGINAL 0x0008 /* keep original obj */ #define PERFORM_DELETION_SKIP_EXTENSIONS 0x0010 /* keep extensions */ #define PERFORM_DELETION_CONCURRENT_LOCK 0x0020 /* normal drop with * concurrent lock mode */ /* in dependency.c */ extern void AcquireDeletionLock(const ObjectAddress *object, int flags); extern void ReleaseDeletionLock(const ObjectAddress *object); extern void performDeletion(const ObjectAddress *object, DropBehavior behavior, int flags); extern void performMultipleDeletions(const ObjectAddresses *objects, DropBehavior behavior, int flags); extern void recordDependencyOnExpr(const ObjectAddress *depender, Node *expr, List *rtable, DependencyType behavior); extern void recordDependencyOnSingleRelExpr(const ObjectAddress *depender, Node *expr, Oid relId, DependencyType behavior, DependencyType self_behavior, bool reverse_self); extern ObjectClass getObjectClass(const ObjectAddress *object); extern ObjectAddresses *new_object_addresses(void); extern void add_exact_object_address(const ObjectAddress *object, ObjectAddresses *addrs); extern bool object_address_present(const ObjectAddress *object, const ObjectAddresses *addrs); extern void record_object_address_dependencies(const ObjectAddress *depender, ObjectAddresses *referenced, DependencyType behavior); extern void sort_object_addresses(ObjectAddresses *addrs); extern void free_object_addresses(ObjectAddresses *addrs); /* in pg_depend.c */ extern void recordDependencyOn(const ObjectAddress *depender, const ObjectAddress *referenced, DependencyType behavior); extern void recordMultipleDependencies(const ObjectAddress *depender, const ObjectAddress *referenced, int nreferenced, DependencyType behavior); extern void recordDependencyOnCurrentExtension(const ObjectAddress *object, bool isReplace); extern 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(Oid relid, 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 objectSubId, Oid ownerId, int noldmembers, Oid *oldmembers, int nnewmembers, Oid *newmembers); extern bool checkSharedDependencies(Oid classId, Oid objectId, char **detail_msg, char **detail_log_msg); extern void shdepLockAndCheckObject(Oid classId, Oid objectId); extern void copyTemplateDependencies(Oid templateDbId, Oid newDbId); extern void dropDatabaseDependencies(Oid databaseId); extern void shdepDropOwned(List *relids, DropBehavior behavior); extern void shdepReassignOwned(List *relids, Oid newrole); #endif /* DEPENDENCY_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_partitioned_table.h0000644000004100000410000000537614510636647025452 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_partitioned_table.h * definition of the "partitioned table" system catalog * (pg_partitioned_table) * * * Portions Copyright (c) 1996-2022, 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, on pg_partitioned_table using btree(partrelid oid_ops)); /* partattrs can contain zero (InvalidAttrNumber) to represent expressions */ DECLARE_ARRAY_FOREIGN_KEY_OPT((partrelid, partattrs), pg_attribute, (attrelid, attnum)); #endif /* PG_PARTITIONED_TABLE_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_conversion_d.h0000644000004100000410000000215614510636647024442 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_conversion_d.h * Macro definitions for pg_conversion * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/catversion.h0000644000004100000410000000503714510636647023442 0ustar www-datawww-data/*------------------------------------------------------------------------- * * catversion.h * "Catalog version number" for PostgreSQL. * * The catalog version number is used to flag incompatible changes in * the PostgreSQL system catalogs. Whenever anyone changes the format of * a system catalog relation, or adds, deletes, or modifies standard * catalog entries in such a way that an updated backend wouldn't work * with an old database (or vice versa), the catalog version number * should be changed. The version number stored in pg_control by initdb * is checked against the version number compiled into the backend at * startup time, so that a backend can refuse to run in an incompatible * database. * * The point of this feature is to provide a finer grain of compatibility * checking than is possible from looking at the major version number * stored in PG_VERSION. It shouldn't matter to end users, but during * development cycles we usually make quite a few incompatible changes * to the contents of the system catalogs, and we don't want to bump the * major version number for each one. What we can do instead is bump * this internal version number. This should save some grief for * developers who might otherwise waste time tracking down "bugs" that * are really just code-vs-database incompatibilities. * * The rule for developers is: if you commit a change that requires * an initdb, you should update the catalog version number (as well as * notifying the pgsql-hackers mailing list, which has been the * informal practice for a long time). * * The catalog version number is placed here since modifying files in * include/catalog is the most common kind of initdb-forcing change. * But it could be used to protect any kind of incompatible change in * database contents or layout, such as altering tuple headers. * * * Portions Copyright (c) 1996-2022, 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 202209061 #endif pg_query-4.2.3/ext/pg_query/include/catalog/pg_ts_template_d.h0000644000004100000410000000173114510636647024574 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_ts_template_d.h * Macro definitions for pg_ts_template * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_depend_d.h0000644000004100000410000000173714510636647023520 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_depend_d.h * Macro definitions for pg_depend * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_statistic_d.h0000644000004100000410000002171014510636647024261 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_statistic_d.h * Macro definitions for pg_statistic * * Portions Copyright (c) 1996-2022, 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.) */ /* * The present allocation of "kind" codes is: * * 1-99: reserved for assignment by the core PostgreSQL project * (values in this range will be documented in this file) * 100-199: reserved for assignment by the PostGIS project * (values to be documented in PostGIS documentation) * 200-299: reserved for assignment by the ESRI ST_Geometry project * (values to be documented in ESRI ST_Geometry documentation) * 300-9999: reserved for future public assignments * * For private use you may choose a "kind" code at random in the range * 10000-30000. However, for code that is to be widely disseminated it is * better to obtain a publicly defined "kind" code by request from the * PostgreSQL Global Development Group. */ /* * In a "most common values" slot, staop is the OID of the "=" operator * used to decide whether values are the same or not, and stacoll is the * collation used (same as column's collation). stavalues contains * the K most common non-null values appearing in the column, and stanumbers * contains their frequencies (fractions of total row count). The values * shall be ordered in decreasing frequency. Note that since the arrays are * variable-size, K may be chosen by the statistics collector. Values should * not appear in MCV unless they have been observed to occur more than once; * a unique column will have no MCV slot. */ #define STATISTIC_KIND_MCV 1 /* * A "histogram" slot describes the distribution of scalar data. staop is * the OID of the "<" operator that describes the sort ordering, and stacoll * is the relevant collation. (In theory more than one histogram could appear, * if a datatype has more than one useful sort operator or we care about more * than one collation. Currently the collation will always be that of the * underlying column.) stavalues contains M (>=2) non-null values that * divide the non-null column data values into M-1 bins of approximately equal * population. The first stavalues item is the MIN and the last is the MAX. * stanumbers is not used and should be NULL. IMPORTANT POINT: if an MCV * slot is also provided, then the histogram describes the data distribution * *after removing the values listed in MCV* (thus, it's a "compressed * histogram" in the technical parlance). This allows a more accurate * representation of the distribution of a column with some very-common * values. In a column with only a few distinct values, it's possible that * the MCV list describes the entire data population; in this case the * histogram reduces to empty and should be omitted. */ #define STATISTIC_KIND_HISTOGRAM 2 /* * A "correlation" slot describes the correlation between the physical order * of table tuples and the ordering of data values of this column, as seen * by the "<" operator identified by staop with the collation identified by * stacoll. (As with the histogram, more than one entry could theoretically * appear.) stavalues is not used and should be NULL. stanumbers contains * a single entry, the correlation coefficient between the sequence of data * values and the sequence of their actual tuple positions. The coefficient * ranges from +1 to -1. */ #define STATISTIC_KIND_CORRELATION 3 /* * A "most common elements" slot is similar to a "most common values" slot, * except that it stores the most common non-null *elements* of the column * values. This is useful when the column datatype is an array or some other * type with identifiable elements (for instance, tsvector). staop contains * the equality operator appropriate to the element type, and stacoll * contains the collation to use with it. stavalues contains * the most common element values, and stanumbers their frequencies. Unlike * MCV slots, frequencies are measured as the fraction of non-null rows the * element value appears in, not the frequency of all rows. Also unlike * MCV slots, the values are sorted into the element type's default order * (to support binary search for a particular value). Since this puts the * minimum and maximum frequencies at unpredictable spots in stanumbers, * there are two extra members of stanumbers, holding copies of the minimum * and maximum frequencies. Optionally, there can be a third extra member, * which holds the frequency of null elements (expressed in the same terms: * the fraction of non-null rows that contain at least one null element). If * this member is omitted, the column is presumed to contain no null elements. * * Note: in current usage for tsvector columns, the stavalues elements are of * type text, even though their representation within tsvector is not * exactly text. */ #define STATISTIC_KIND_MCELEM 4 /* * A "distinct elements count histogram" slot describes the distribution of * the number of distinct element values present in each row of an array-type * column. Only non-null rows are considered, and only non-null elements. * staop contains the equality operator appropriate to the element type, * and stacoll contains the collation to use with it. * stavalues is not used and should be NULL. The last member of stanumbers is * the average count of distinct element values over all non-null rows. The * preceding M (>=2) members form a histogram that divides the population of * distinct-elements counts into M-1 bins of approximately equal population. * The first of these is the minimum observed count, and the last the maximum. */ #define STATISTIC_KIND_DECHIST 5 /* * A "length histogram" slot describes the distribution of range lengths in * rows of a range-type column. stanumbers contains a single entry, the * fraction of empty ranges. stavalues is a histogram of non-empty lengths, in * a format similar to STATISTIC_KIND_HISTOGRAM: it contains M (>=2) range * values that divide the column data values into M-1 bins of approximately * equal population. The lengths are stored as float8s, as measured by the * range type's subdiff function. Only non-null rows are considered. */ #define STATISTIC_KIND_RANGE_LENGTH_HISTOGRAM 6 /* * A "bounds histogram" slot is similar to STATISTIC_KIND_HISTOGRAM, but for * a range-type column. stavalues contains M (>=2) range values that divide * the column data values into M-1 bins of approximately equal population. * Unlike a regular scalar histogram, this is actually two histograms combined * into a single array, with the lower bounds of each value forming a * histogram of lower bounds, and the upper bounds a histogram of upper * bounds. Only non-NULL, non-empty ranges are included. */ #define STATISTIC_KIND_BOUNDS_HISTOGRAM 7 #endif /* PG_STATISTIC_D_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_operator.h0000644000004100000410000000620214510636647023601 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_operator.h * definition of the "operator" system catalog (pg_operator) * * * Portions Copyright (c) 1996-2022, 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, on pg_operator using btree(oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_operator_oprname_l_r_n_index, 2689, OperatorNameNspIndexId, on pg_operator using btree(oprname name_ops, oprleft oid_ops, oprright oid_ops, oprnamespace oid_ops)); 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 OperatorUpd(Oid baseId, Oid commId, Oid negId, bool isDelete); #endif /* PG_OPERATOR_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_replication_origin_d.h0000644000004100000410000000177514510636647026143 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_replication_origin_d.h * Macro definitions for pg_replication_origin * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_opfamily_d.h0000644000004100000410000000263514510636647024077 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_opfamily_d.h * Macro definitions for pg_opfamily * * Portions Copyright (c) 1996-2022, 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 #define IsBooleanOpfamily(opfamily) \ ((opfamily) == BOOL_BTREE_FAM_OID || (opfamily) == BOOL_HASH_FAM_OID) #define BOOL_BTREE_FAM_OID 424 #define BPCHAR_BTREE_FAM_OID 426 #define BYTEA_BTREE_FAM_OID 428 #define NETWORK_BTREE_FAM_OID 1974 #define INTEGER_BTREE_FAM_OID 1976 #define OID_BTREE_FAM_OID 1989 #define TEXT_BTREE_FAM_OID 1994 #define TEXT_PATTERN_BTREE_FAM_OID 2095 #define BPCHAR_PATTERN_BTREE_FAM_OID 2097 #define BOOL_HASH_FAM_OID 2222 #define TEXT_SPGIST_FAM_OID 4017 #endif /* PG_OPFAMILY_D_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_proc_d.h0000644000004100000410000000646514510636647023227 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_proc_d.h * Macro definitions for pg_proc * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_trigger_d.h0000644000004100000410000001021514510636647023713 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_trigger_d.h * Macro definitions for pg_trigger * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_aggregate.h0000644000004100000410000001356614510636647023707 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_aggregate.h * definition of the "aggregate" system catalog (pg_aggregate) * * * Portions Copyright (c) 1996-2022, 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, on pg_aggregate using btree(aggfnoid oid_ops)); #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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_class.h0000644000004100000410000001744514510636647023066 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_class.h * definition of the "relation" system catalog (pg_class) * * * Portions Copyright (c) 1996-2022, 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, on pg_class using btree(oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_class_relname_nsp_index, 2663, ClassNameNspIndexId, on pg_class using btree(relname name_ops, relnamespace oid_ops)); DECLARE_INDEX(pg_class_tblspc_relfilenode_index, 3455, ClassTblspcRelfilenodeIndexId, on pg_class using btree(reltablespace oid_ops, relfilenode oid_ops)); #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. */ #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 */ pg_query-4.2.3/ext/pg_query/include/catalog/genbki.h0000644000004100000410000001451014510636647022520 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 rest is much like a standard 'create index' SQL command. * * For each index, we also provide a #define for its OID. References to * the index in the C code should always use these #defines, not the actual * index name (much less the numeric OID). * * The macro definitions are just to keep the C compiler from spitting up. */ #define DECLARE_INDEX(name,oid,oidmacro,decl) extern int no_such_variable #define DECLARE_UNIQUE_INDEX(name,oid,oidmacro,decl) extern int no_such_variable #define DECLARE_UNIQUE_INDEX_PKEY(name,oid,oidmacro,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 /* 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_am_d.h0000644000004100000410000000220214510636647022642 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_am_d.h * Macro definitions for pg_am * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_index.h0000644000004100000410000000673114510636647023064 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_index.h * definition of the "index" system catalog (pg_index) * * * Portions Copyright (c) 1996-2022, 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, on pg_index using btree(indrelid oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_index_indexrelid_index, 2679, IndexRelidIndexId, on pg_index using btree(indexrelid oid_ops)); /* 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_statistic.h0000644000004100000410000003035714510636647023765 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_statistic.h * definition of the "statistics" system catalog (pg_statistic) * * * Portions Copyright (c) 1996-2022, 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, on pg_statistic using btree(starelid oid_ops, staattnum int2_ops, stainherit bool_ops)); 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.) */ /* * The present allocation of "kind" codes is: * * 1-99: reserved for assignment by the core PostgreSQL project * (values in this range will be documented in this file) * 100-199: reserved for assignment by the PostGIS project * (values to be documented in PostGIS documentation) * 200-299: reserved for assignment by the ESRI ST_Geometry project * (values to be documented in ESRI ST_Geometry documentation) * 300-9999: reserved for future public assignments * * For private use you may choose a "kind" code at random in the range * 10000-30000. However, for code that is to be widely disseminated it is * better to obtain a publicly defined "kind" code by request from the * PostgreSQL Global Development Group. */ /* * In a "most common values" slot, staop is the OID of the "=" operator * used to decide whether values are the same or not, and stacoll is the * collation used (same as column's collation). stavalues contains * the K most common non-null values appearing in the column, and stanumbers * contains their frequencies (fractions of total row count). The values * shall be ordered in decreasing frequency. Note that since the arrays are * variable-size, K may be chosen by the statistics collector. Values should * not appear in MCV unless they have been observed to occur more than once; * a unique column will have no MCV slot. */ #define STATISTIC_KIND_MCV 1 /* * A "histogram" slot describes the distribution of scalar data. staop is * the OID of the "<" operator that describes the sort ordering, and stacoll * is the relevant collation. (In theory more than one histogram could appear, * if a datatype has more than one useful sort operator or we care about more * than one collation. Currently the collation will always be that of the * underlying column.) stavalues contains M (>=2) non-null values that * divide the non-null column data values into M-1 bins of approximately equal * population. The first stavalues item is the MIN and the last is the MAX. * stanumbers is not used and should be NULL. IMPORTANT POINT: if an MCV * slot is also provided, then the histogram describes the data distribution * *after removing the values listed in MCV* (thus, it's a "compressed * histogram" in the technical parlance). This allows a more accurate * representation of the distribution of a column with some very-common * values. In a column with only a few distinct values, it's possible that * the MCV list describes the entire data population; in this case the * histogram reduces to empty and should be omitted. */ #define STATISTIC_KIND_HISTOGRAM 2 /* * A "correlation" slot describes the correlation between the physical order * of table tuples and the ordering of data values of this column, as seen * by the "<" operator identified by staop with the collation identified by * stacoll. (As with the histogram, more than one entry could theoretically * appear.) stavalues is not used and should be NULL. stanumbers contains * a single entry, the correlation coefficient between the sequence of data * values and the sequence of their actual tuple positions. The coefficient * ranges from +1 to -1. */ #define STATISTIC_KIND_CORRELATION 3 /* * A "most common elements" slot is similar to a "most common values" slot, * except that it stores the most common non-null *elements* of the column * values. This is useful when the column datatype is an array or some other * type with identifiable elements (for instance, tsvector). staop contains * the equality operator appropriate to the element type, and stacoll * contains the collation to use with it. stavalues contains * the most common element values, and stanumbers their frequencies. Unlike * MCV slots, frequencies are measured as the fraction of non-null rows the * element value appears in, not the frequency of all rows. Also unlike * MCV slots, the values are sorted into the element type's default order * (to support binary search for a particular value). Since this puts the * minimum and maximum frequencies at unpredictable spots in stanumbers, * there are two extra members of stanumbers, holding copies of the minimum * and maximum frequencies. Optionally, there can be a third extra member, * which holds the frequency of null elements (expressed in the same terms: * the fraction of non-null rows that contain at least one null element). If * this member is omitted, the column is presumed to contain no null elements. * * Note: in current usage for tsvector columns, the stavalues elements are of * type text, even though their representation within tsvector is not * exactly text. */ #define STATISTIC_KIND_MCELEM 4 /* * A "distinct elements count histogram" slot describes the distribution of * the number of distinct element values present in each row of an array-type * column. Only non-null rows are considered, and only non-null elements. * staop contains the equality operator appropriate to the element type, * and stacoll contains the collation to use with it. * stavalues is not used and should be NULL. The last member of stanumbers is * the average count of distinct element values over all non-null rows. The * preceding M (>=2) members form a histogram that divides the population of * distinct-elements counts into M-1 bins of approximately equal population. * The first of these is the minimum observed count, and the last the maximum. */ #define STATISTIC_KIND_DECHIST 5 /* * A "length histogram" slot describes the distribution of range lengths in * rows of a range-type column. stanumbers contains a single entry, the * fraction of empty ranges. stavalues is a histogram of non-empty lengths, in * a format similar to STATISTIC_KIND_HISTOGRAM: it contains M (>=2) range * values that divide the column data values into M-1 bins of approximately * equal population. The lengths are stored as float8s, as measured by the * range type's subdiff function. Only non-null rows are considered. */ #define STATISTIC_KIND_RANGE_LENGTH_HISTOGRAM 6 /* * A "bounds histogram" slot is similar to STATISTIC_KIND_HISTOGRAM, but for * a range-type column. stavalues contains M (>=2) range values that divide * the column data values into M-1 bins of approximately equal population. * Unlike a regular scalar histogram, this is actually two histograms combined * into a single array, with the lower bounds of each value forming a * histogram of lower bounds, and the upper bounds a histogram of upper * bounds. Only non-NULL, non-empty ranges are included. */ #define STATISTIC_KIND_BOUNDS_HISTOGRAM 7 #endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_STATISTIC_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_authid.h0000644000004100000410000000443714510636647023234 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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, on pg_authid using btree(rolname name_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_authid_oid_index, 2677, AuthIdOidIndexId, on pg_authid using btree(oid oid_ops)); #endif /* PG_AUTHID_H */ pg_query-4.2.3/ext/pg_query/include/catalog/objectaddress.h0000644000004100000410000000621014510636647024073 0ustar www-datawww-data/*------------------------------------------------------------------------- * * objectaddress.h * functions for working with object addresses * * Portions Copyright (c) 1996-2022, 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 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 *address, bool missing_ok); extern char *getObjectIdentityParts(const ObjectAddress *address, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_parameter_acl_d.h0000644000004100000410000000174514510636647025057 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_parameter_acl_d.h * Macro definitions for pg_parameter_acl * * Portions Copyright (c) 1996-2022, 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_PARAMETER_ACL_D_H #define PG_PARAMETER_ACL_D_H #define ParameterAclRelationId 6243 #define PgParameterAclToastTable 6244 #define PgParameterAclToastIndex 6245 #define ParameterAclParnameIndexId 6246 #define ParameterAclOidIndexId 6247 #define Anum_pg_parameter_acl_oid 1 #define Anum_pg_parameter_acl_parname 2 #define Anum_pg_parameter_acl_paracl 3 #define Natts_pg_parameter_acl 3 #endif /* PG_PARAMETER_ACL_D_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_opclass_d.h0000644000004100000410000000301014510636647023707 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_opclass_d.h * Macro definitions for pg_opclass * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_operator_d.h0000644000004100000410000001156014510636647024107 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_operator_d.h * Macro definitions for pg_operator * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_statistic_ext.h0000644000004100000410000000565614510636647024651 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 */ int32 stxstattarget BKI_DEFAULT(-1); /* statistics target */ /* * variable-length fields start here, but we allow direct access to * stxkeys */ int2vector stxkeys BKI_FORCE_NOT_NULL; /* array of column keys */ #ifdef CATALOG_VARLEN 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, on pg_statistic_ext using btree(oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_statistic_ext_name_index, 3997, StatisticExtNameIndexId, on pg_statistic_ext using btree(stxname name_ops, stxnamespace oid_ops)); DECLARE_INDEX(pg_statistic_ext_relid_index, 3379, StatisticExtRelidIndexId, on pg_statistic_ext using btree(stxrelid oid_ops)); 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/objectaccess.h0000644000004100000410000002176214510636647023720 0ustar www-datawww-data/* * objectaccess.h * * Object access hooks. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California */ #ifndef OBJECTACCESS_H #define OBJECTACCESS_H /* * Object access hooks are intended to be called just before or just after * performing certain actions on a SQL object. This is intended as * infrastructure for security or logging plugins. * * OAT_POST_CREATE should be invoked just after the object is created. * Typically, this is done after inserting the primary catalog records and * associated dependencies. * * OAT_DROP should be invoked just before deletion of objects; typically * deleteOneObject(). Its arguments are packed within ObjectAccessDrop. * * OAT_POST_ALTER should be invoked just after the object is altered, * but before the command counter is incremented. An extension using the * hook can use a current MVCC snapshot to get the old version of the tuple, * and can use SnapshotSelf to get the new version of the tuple. * * OAT_NAMESPACE_SEARCH should be invoked prior to object name lookup under * a particular namespace. This event is equivalent to usage permission * on a schema under the default access control mechanism. * * OAT_FUNCTION_EXECUTE should be invoked prior to function execution. * This event is almost equivalent to execute permission on functions, * except for the case when execute permission is checked during object * creation or altering, because OAT_POST_CREATE or OAT_POST_ALTER are * sufficient for extensions to track these kind of checks. * * OAT_TRUNCATE should be invoked just before truncation of objects. This * event is equivalent to truncate permission on a relation under the * default access control mechanism. * * Other types may be added in the future. */ typedef enum ObjectAccessType { OAT_POST_CREATE, OAT_DROP, OAT_POST_ALTER, OAT_NAMESPACE_SEARCH, OAT_FUNCTION_EXECUTE, OAT_TRUNCATE } ObjectAccessType; /* * Arguments of OAT_POST_CREATE event */ typedef struct { /* * This flag informs extensions whether the context of this creation is * invoked by user's operations, or not. E.g, it shall be dealt as * internal stuff on toast tables or indexes due to type changes. */ bool is_internal; } ObjectAccessPostCreate; /* * Arguments of OAT_DROP event */ typedef struct { /* * Flags to inform extensions the context of this deletion. Also see * PERFORM_DELETION_* in dependency.h */ int dropflags; } ObjectAccessDrop; /* * Arguments of OAT_POST_ALTER event */ typedef struct { /* * This identifier is used when system catalog takes two IDs to identify a * particular tuple of the catalog. It is only used when the caller want * to identify an entry of pg_inherits, pg_db_role_setting or * pg_user_mapping. Elsewhere, InvalidOid should be set. */ Oid auxiliary_id; /* * If this flag is set, the user hasn't requested that the object be * altered, but we're doing it anyway for some internal reason. * Permissions-checking hooks may want to skip checks if, say, we're alter * the constraints of a temporary heap during CLUSTER. */ bool is_internal; } ObjectAccessPostAlter; /* * Arguments of OAT_NAMESPACE_SEARCH */ typedef struct { /* * If true, hook should report an error when permission to search this * schema is denied. */ bool ereport_on_violation; /* * This is, in essence, an out parameter. Core code should initialize * this to true, and any extension that wants to deny access should reset * it to false. But an extension should be careful never to store a true * value here, so that in case there are multiple extensions access is * only allowed if all extensions agree. */ bool result; } ObjectAccessNamespaceSearch; /* Plugin provides a hook function matching 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 *objectStr, int subId, bool is_internal); extern void RunObjectDropHookStr(Oid classId, const char *objectStr, int subId, int dropflags); extern void RunObjectTruncateHookStr(const char *objectStr); extern void RunObjectPostAlterHookStr(Oid classId, const char *objectStr, int subId, Oid auxiliaryId, bool is_internal); extern bool RunNamespaceSearchHookStr(const char *objectStr, bool ereport_on_violation); extern void RunFunctionExecuteHookStr(const char *objectStr); /* * 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_type.h0000644000004100000410000003413114510636647022731 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_type.h * definition of the "type" system catalog (pg_type) * * * Portions Copyright (c) 1996-2022, 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, on pg_type using btree(oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_type_typname_nsp_index, 2704, TypeNameNspIndexId, on pg_type using btree(typname name_ops, typnamespace oid_ops)); #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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_opfamily.h0000644000004100000410000000354514510636647023575 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_opfamily.h * definition of the "operator family" system catalog (pg_opfamily) * * * Portions Copyright (c) 1996-2022, 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, on pg_opfamily using btree(opfmethod oid_ops, opfname name_ops, opfnamespace oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_opfamily_oid_index, 2755, OpfamilyOidIndexId, on pg_opfamily using btree(oid oid_ops)); #ifdef EXPOSE_TO_CLIENT_CODE #define IsBooleanOpfamily(opfamily) \ ((opfamily) == BOOL_BTREE_FAM_OID || (opfamily) == BOOL_HASH_FAM_OID) #endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_OPFAMILY_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_am.h0000644000004100000410000000307214510636647022345 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_am.h * definition of the "access method" system catalog (pg_am) * * * Portions Copyright (c) 1996-2022, 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, on pg_am using btree(amname name_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_am_oid_index, 2652, AmOidIndexId, on pg_am using btree(oid oid_ops)); #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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_opclass.h0000644000004100000410000000625214510636647023417 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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, on pg_opclass using btree(opcmethod oid_ops, opcname name_ops, opcnamespace oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_opclass_oid_index, 2687, OpclassOidIndexId, on pg_opclass using btree(oid oid_ops)); #endif /* PG_OPCLASS_H */ pg_query-4.2.3/ext/pg_query/include/catalog/catalog.h0000644000004100000410000000241714510636647022676 0ustar www-datawww-data/*------------------------------------------------------------------------- * * catalog.h * prototypes for functions in backend/catalog/catalog.c * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/catalog.h * *------------------------------------------------------------------------- */ #ifndef CATALOG_H #define CATALOG_H #include "catalog/pg_class.h" #include "utils/relcache.h" extern bool IsSystemRelation(Relation relation); extern bool IsToastRelation(Relation relation); extern bool IsCatalogRelation(Relation relation); extern bool IsSystemClass(Oid relid, Form_pg_class reltuple); extern bool IsToastClass(Form_pg_class reltuple); extern bool IsCatalogRelationOid(Oid relid); extern bool IsCatalogNamespace(Oid namespaceId); extern bool IsToastNamespace(Oid namespaceId); extern bool IsReservedName(const char *name); extern bool IsSharedRelation(Oid relationId); extern bool IsPinnedObject(Oid classId, Oid objectId); extern Oid GetNewOidWithIndex(Relation relation, Oid indexId, AttrNumber oidcolumn); extern Oid GetNewRelFileNode(Oid reltablespace, Relation pg_class, char relpersistence); #endif /* CATALOG_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_class_d.h0000644000004100000410000001116514510636647023362 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_class_d.h * Macro definitions for pg_class * * Portions Copyright (c) 1996-2022, 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. */ #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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_conversion.h0000644000004100000410000000465414510636647024144 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_conversion.h * definition of the "conversion" system catalog (pg_conversion) * * Portions Copyright (c) 1996-2022, 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, on pg_conversion using btree(connamespace oid_ops, conforencoding int4_ops, contoencoding int4_ops, oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_conversion_name_nsp_index, 2669, ConversionNameNspIndexId, on pg_conversion using btree(conname name_ops, connamespace oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_conversion_oid_index, 2670, ConversionOidIndexId, on pg_conversion using btree(oid oid_ops)); extern ObjectAddress ConversionCreate(const char *conname, Oid connamespace, Oid conowner, int32 conforencoding, int32 contoencoding, Oid conproc, bool def); extern Oid FindDefaultConversion(Oid connamespace, int32 for_encoding, int32 to_encoding); #endif /* PG_CONVERSION_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_transform.h0000644000004100000410000000300614510636647023760 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_transform.h * definition of the "transform" system catalog (pg_transform) * * * Portions Copyright (c) 1996-2022, 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, on pg_transform using btree(oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_transform_type_lang_index, 3575, TransformTypeLangIndexId, on pg_transform using btree(trftype oid_ops, trflang oid_ops)); #endif /* PG_TRANSFORM_H */ pg_query-4.2.3/ext/pg_query/include/catalog/namespace.h0000644000004100000410000001632714510636647023225 0ustar www-datawww-data/*------------------------------------------------------------------------- * * namespace.h * prototypes for functions in backend/catalog/namespace.c * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/namespace.h * *------------------------------------------------------------------------- */ #ifndef NAMESPACE_H #define NAMESPACE_H #include "nodes/primnodes.h" #include "storage/lock.h" /* * This structure holds a list of possible functions or operators * found by namespace lookup. Each function/operator is identified * by OID and by argument types; the list must be pruned by type * resolution rules that are embodied in the parser, not here. * See FuncnameGetCandidates's comments for more info. */ typedef struct _FuncCandidateList { struct _FuncCandidateList *next; int pathpos; /* for internal use of namespace lookup */ Oid oid; /* the function or operator's OID */ int 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 xxxOverrideSearchPath functions * * The generation counter is private to namespace.c and shouldn't be touched * by other code. It can be initialized to zero if necessary (that means * "not known equal to the current active path"). */ typedef struct OverrideSearchPath { List *schemas; /* OIDs of explicitly named schemas */ bool addCatalog; /* implicitly prepend pg_catalog? */ bool addTemp; /* implicitly prepend temp schema? */ uint64 generation; /* for quick detection of equality to active */ } OverrideSearchPath; /* * Option flag bits for RangeVarGetRelidExtended(). */ typedef enum RVROption { RVR_MISSING_OK = 1 << 0, /* don't error if relation doesn't exist */ RVR_NOWAIT = 1 << 1, /* error if relation cannot be locked */ RVR_SKIP_LOCKED = 1 << 2 /* skip if relation cannot be locked */ } RVROption; typedef void (*RangeVarGetRelidCallback) (const RangeVar *relation, Oid relId, Oid oldRelId, void *callback_arg); #define RangeVarGetRelid(relation, lockmode, missing_ok) \ RangeVarGetRelidExtended(relation, lockmode, \ (missing_ok) ? RVR_MISSING_OK : 0, NULL, NULL) extern Oid RangeVarGetRelidExtended(const RangeVar *relation, LOCKMODE lockmode, uint32 flags, RangeVarGetRelidCallback callback, void *callback_arg); extern Oid RangeVarGetCreationNamespace(const RangeVar *newRelation); extern Oid RangeVarGetAndCheckCreationNamespace(RangeVar *newRelation, LOCKMODE lockmode, Oid *existing_relation_id); extern void RangeVarAdjustRelationPersistence(RangeVar *newRelation, Oid nspid); extern Oid RelnameGetRelid(const char *relname); extern bool RelationIsVisible(Oid relid); extern Oid TypenameGetTypid(const char *typname); extern Oid TypenameGetTypidExtended(const char *typname, bool temp_ok); extern bool TypeIsVisible(Oid typid); extern FuncCandidateList FuncnameGetCandidates(List *names, int nargs, List *argnames, bool expand_variadic, bool expand_defaults, bool 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 relid); extern Oid get_ts_parser_oid(List *names, bool missing_ok); extern bool TSParserIsVisible(Oid prsId); extern Oid get_ts_dict_oid(List *names, bool missing_ok); extern bool TSDictionaryIsVisible(Oid dictId); extern Oid get_ts_template_oid(List *names, bool missing_ok); extern bool TSTemplateIsVisible(Oid tmplId); extern Oid get_ts_config_oid(List *names, bool missing_ok); extern bool TSConfigIsVisible(Oid cfgid); extern void DeconstructQualifiedName(List *names, char **nspname_p, char **objname_p); extern Oid LookupNamespaceNoError(const char *nspname); extern Oid LookupExplicitNamespace(const char *nspname, bool missing_ok); extern Oid get_namespace_oid(const char *nspname, bool missing_ok); extern Oid LookupCreationNamespace(const char *nspname); extern void CheckSetNamespace(Oid oldNspOid, Oid nspOid); extern Oid QualifiedNameGetCreationNamespace(List *names, char **objname_p); extern RangeVar *makeRangeVarFromNameList(List *names); extern char *NameListToString(List *names); extern char *NameListToQuotedString(List *names); extern bool isTempNamespace(Oid namespaceId); extern bool isTempToastNamespace(Oid namespaceId); extern bool isTempOrTempToastNamespace(Oid namespaceId); extern bool isAnyTempNamespace(Oid namespaceId); extern bool isOtherTempNamespace(Oid namespaceId); extern TempNamespaceStatus checkTempNamespaceStatus(Oid namespaceId); extern int GetTempNamespaceBackendId(Oid namespaceId); extern Oid GetTempToastNamespace(void); extern void GetTempNamespaceState(Oid *tempNamespaceId, Oid *tempToastNamespaceId); extern void SetTempNamespaceState(Oid tempNamespaceId, Oid tempToastNamespaceId); extern void ResetTempTableNamespace(void); extern OverrideSearchPath *GetOverrideSearchPath(MemoryContext context); extern OverrideSearchPath *CopyOverrideSearchPath(OverrideSearchPath *path); extern bool OverrideSearchPathMatchesCurrent(OverrideSearchPath *path); extern void PushOverrideSearchPath(OverrideSearchPath *newpath); extern void PopOverrideSearchPath(void); extern Oid get_collation_oid(List *collname, bool missing_ok); extern Oid get_conversion_oid(List *conname, bool missing_ok); extern Oid FindDefaultConversionProc(int32 for_encoding, int32 to_encoding); /* initialization & transaction cleanup code */ extern void InitializeSearchPath(void); extern void AtEOXact_Namespace(bool isCommit, bool parallel); extern void AtEOSubXact_Namespace(bool isCommit, SubTransactionId mySubid, SubTransactionId parentSubid); /* stuff for search_path GUC variable */ extern 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_language.h0000644000004100000410000000401014510636647023524 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_language.h * definition of the "language" system catalog (pg_language) * * * Portions Copyright (c) 1996-2022, 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, on pg_language using btree(lanname name_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_language_oid_index, 2682, LanguageOidIndexId, on pg_language using btree(oid oid_ops)); #endif /* PG_LANGUAGE_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_attribute_d.h0000644000004100000410000000367614510636647024270 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_attribute_d.h * Macro definitions for pg_attribute * * Portions Copyright (c) 1996-2022, 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_attstattarget 4 #define Anum_pg_attribute_attlen 5 #define Anum_pg_attribute_attnum 6 #define Anum_pg_attribute_attndims 7 #define Anum_pg_attribute_attcacheoff 8 #define Anum_pg_attribute_atttypmod 9 #define Anum_pg_attribute_attbyval 10 #define Anum_pg_attribute_attalign 11 #define Anum_pg_attribute_attstorage 12 #define Anum_pg_attribute_attcompression 13 #define Anum_pg_attribute_attnotnull 14 #define Anum_pg_attribute_atthasdef 15 #define Anum_pg_attribute_atthasmissing 16 #define Anum_pg_attribute_attidentity 17 #define Anum_pg_attribute_attgenerated 18 #define Anum_pg_attribute_attisdropped 19 #define Anum_pg_attribute_attislocal 20 #define Anum_pg_attribute_attinhcount 21 #define Anum_pg_attribute_attcollation 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_statistic_ext_d.h0000644000004100000410000000250314510636647025140 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_statistic_ext_d.h * Macro definitions for pg_statistic_ext * * Portions Copyright (c) 1996-2022, 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_stxstattarget 6 #define Anum_pg_statistic_ext_stxkeys 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_collation.h0000644000004100000410000000560414510636647023737 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_collation.h * definition of the "collation" system catalog (pg_collation) * * * Portions Copyright (c) 1996-2022, 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 colliculocale BKI_DEFAULT(_null_); /* ICU locale ID */ 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, on pg_collation using btree(collname name_ops, collencoding int4_ops, collnamespace oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_collation_oid_index, 3085, CollationOidIndexId, on pg_collation using btree(oid oid_ops)); #ifdef EXPOSE_TO_CLIENT_CODE #define COLLPROVIDER_DEFAULT 'd' #define COLLPROVIDER_ICU 'i' #define COLLPROVIDER_LIBC 'c' static inline const char * collprovider_name(char c) { switch (c) { 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 *colliculocale, const char *collversion, bool if_not_exists, bool quiet); #endif /* PG_COLLATION_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_publication_d.h0000644000004100000410000000217414510636647024566 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_publication_d.h * Macro definitions for pg_publication * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_replication_origin.h0000644000004100000410000000405514510636647025632 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_replication_origin.h * definition of the "replication origin" system catalog * (pg_replication_origin) * * Portions Copyright (c) 1996-2022, 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, on pg_replication_origin using btree(roident oid_ops)); DECLARE_UNIQUE_INDEX(pg_replication_origin_roname_index, 6002, ReplicationOriginNameIndex, on pg_replication_origin using btree(roname text_ops)); #endif /* PG_REPLICATION_ORIGIN_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_namespace.h0000644000004100000410000000362514510636647023710 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_namespace.h * definition of the "namespace" system catalog (pg_namespace) * * * Portions Copyright (c) 1996-2022, 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, on pg_namespace using btree(nspname name_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_namespace_oid_index, 2685, NamespaceOidIndexId, on pg_namespace using btree(oid oid_ops)); /* * prototypes for functions in pg_namespace.c */ extern Oid NamespaceCreate(const char *nspName, Oid ownerId, bool isTemp); #endif /* PG_NAMESPACE_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_ts_parser.h0000644000004100000410000000332614510636647023754 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_ts_parser.h * definition of the "text search parser" system catalog (pg_ts_parser) * * * Portions Copyright (c) 1996-2022, 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, on pg_ts_parser using btree(prsname name_ops, prsnamespace oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_ts_parser_oid_index, 3607, TSParserOidIndexId, on pg_ts_parser using btree(oid oid_ops)); #endif /* PG_TS_PARSER_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_event_trigger_d.h0000644000004100000410000000207414510636647025120 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_event_trigger_d.h * Macro definitions for pg_event_trigger * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_constraint_d.h0000644000004100000410000000453014510636647024437 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_constraint_d.h * Macro definitions for pg_constraint * * Portions Copyright (c) 1996-2022, 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_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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_ts_config_d.h0000644000004100000410000000167214510636647024232 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_ts_config_d.h * Macro definitions for pg_ts_config * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_type_d.h0000644000004100000410000002271014510636647023234 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_type_d.h * Macro definitions for pg_type * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/index.h0000644000004100000410000001466114510636647022377 0ustar www-datawww-data/*------------------------------------------------------------------------- * * index.h * prototypes for catalog/index.c. * * * Portions Copyright (c) 1996-2022, 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, IndexInfo *indexInfo, bool is_alter_table, IndexStmt *stmt); #define INDEX_CREATE_IS_PRIMARY (1 << 0) #define INDEX_CREATE_ADD_CONSTRAINT (1 << 1) #define INDEX_CREATE_SKIP_BUILD (1 << 2) #define INDEX_CREATE_CONCURRENT (1 << 3) #define INDEX_CREATE_IF_NOT_EXISTS (1 << 4) #define INDEX_CREATE_PARTITIONED (1 << 5) #define INDEX_CREATE_INVALID (1 << 6) extern Oid index_create(Relation heapRelation, const char *indexRelationName, Oid indexRelationId, Oid parentIndexRelid, Oid parentConstraintId, Oid relFileNode, IndexInfo *indexInfo, List *indexColNames, Oid accessMethodObjectId, Oid tableSpaceId, Oid *collationObjectId, Oid *classObjectId, int16 *coloptions, Datum reloptions, bits16 flags, bits16 constr_flags, bool allow_system_table_mods, bool is_internal, Oid *constraintId); #define INDEX_CONSTR_CREATE_MARK_AS_PRIMARY (1 << 0) #define INDEX_CONSTR_CREATE_DEFERRABLE (1 << 1) #define INDEX_CONSTR_CREATE_INIT_DEFERRED (1 << 2) #define INDEX_CONSTR_CREATE_UPDATE_INDEX (1 << 3) #define INDEX_CONSTR_CREATE_REMOVE_OLD_DEPS (1 << 4) extern Oid index_concurrently_create_copy(Relation heapRelation, Oid oldIndexId, 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, IndexInfo *indexInfo, const char *constraintName, char constraintType, bits16 constr_flags, bool allow_system_table_mods, bool is_internal); extern void index_drop(Oid indexId, bool concurrent, bool concurrent_lock_mode); extern IndexInfo *BuildIndexInfo(Relation index); extern IndexInfo *BuildDummyIndexInfo(Relation index); extern bool CompareIndexInfo(IndexInfo *info1, IndexInfo *info2, Oid *collations1, Oid *collations2, Oid *opfamilies1, Oid *opfamilies2, AttrMap *attmap); extern void BuildSpeculativeIndexInfo(Relation index, IndexInfo *ii); extern void FormIndexDatum(IndexInfo *indexInfo, TupleTableSlot *slot, EState *estate, Datum *values, bool *isnull); extern void index_build(Relation heapRelation, Relation indexRelation, IndexInfo *indexInfo, bool isreindex, bool parallel); extern void validate_index(Oid heapId, Oid indexId, Snapshot snapshot); extern void index_set_state_flags(Oid indexId, IndexStateFlagsAction action); extern Oid IndexGetRelation(Oid indexId, bool missing_ok); extern void reindex_index(Oid indexId, bool skip_constraint_checks, char relpersistence, 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(Oid relid, int flags, 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(void *reindexstate); extern void IndexSetParentIndex(Relation idx, Oid parentOid); /* * itemptr_encode - Encode ItemPointer as int64/int8 * * This representation must produce values encoded as int64 that sort in the * same order as their corresponding original TID values would (using the * default int8 opclass to produce a result equivalent to the default TID * opclass). * * As noted in validate_index(), this can be significantly faster. */ static inline int64 itemptr_encode(ItemPointer itemptr) { BlockNumber block = ItemPointerGetBlockNumber(itemptr); OffsetNumber offset = ItemPointerGetOffsetNumber(itemptr); int64 encoded; /* * Use the 16 least significant bits for the offset. 32 adjacent bits are * used for the block number. Since remaining bits are unused, there * cannot be negative encoded values (We assume a two's complement * representation). */ encoded = ((uint64) block << 16) | (uint16) offset; return encoded; } /* * itemptr_decode - Decode int64/int8 representation back to ItemPointer */ static inline void itemptr_decode(ItemPointer itemptr, int64 encoded) { BlockNumber block = (BlockNumber) (encoded >> 16); OffsetNumber offset = (OffsetNumber) (encoded & 0xFFFF); ItemPointerSet(itemptr, block, offset); } #endif /* INDEX_H */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_aggregate_d.h0000644000004100000410000000540114510636647024177 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_aggregate_d.h * Macro definitions for pg_aggregate * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/catalog/pg_ts_parser_d.h0000644000004100000410000000205314510636647024253 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_ts_parser_d.h * Macro definitions for pg_ts_parser * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/xxhash/0000755000004100000410000000000014510636647021000 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/xxhash/xxhash.h0000644000004100000410000061671014510636647022467 0ustar www-datawww-data/* * 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) } #endifpg_query-4.2.3/ext/pg_query/include/pg_getopt.h0000644000004100000410000000326714510636647021646 0ustar www-datawww-data/* * 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-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/tcop/0000755000004100000410000000000014510636647020442 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/tcop/dest.h0000644000004100000410000001402014510636647021547 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/dest.h * *------------------------------------------------------------------------- */ #ifndef DEST_H #define DEST_H #include "executor/tuptable.h" #include "tcop/cmdtag.h" /* buffer size to use for command completion tags */ #define COMPLETION_TAG_BUFSIZE 64 /* ---------------- * CommandDest is a simplistic means of identifying the desired * destination. Someday this will probably need to be improved. * * Note: only the values DestNone, DestDebug, DestRemote are legal for the * global variable whereToSendOutput. The other values may be used * as the destination for individual commands. * ---------------- */ typedef enum { DestNone, /* results are discarded */ DestDebug, /* results go to debugging output */ DestRemote, /* results sent to frontend process */ DestRemoteExecute, /* sent to frontend, in Execute command */ DestRemoteSimple, /* sent to frontend, w/no catalog access */ DestSPI, /* results sent to SPI manager */ DestTuplestore, /* results sent to Tuplestore */ DestIntoRel, /* results sent to relation (SELECT INTO) */ DestCopyOut, /* results sent to COPY TO code */ DestSQLFunction, /* results sent to SQL-language func mgr */ DestTransientRel, /* results sent to transient relation */ DestTupleQueue /* results sent to tuple queue */ } CommandDest; /* ---------------- * DestReceiver is a base type for destination-specific local state. * In the simplest cases, there is no state info, just the function * pointers that the executor must call. * * Note: the receiveSlot routine must be passed a slot containing a TupleDesc * identical to the one given to the rStartup routine. It returns bool where * a "true" value means "continue processing" and a "false" value means * "stop early, just as if we'd reached the end of the scan". * ---------------- */ typedef struct _DestReceiver DestReceiver; struct _DestReceiver { /* Called for each tuple to be output: */ bool (*receiveSlot) (TupleTableSlot *slot, DestReceiver *self); /* Per-executor-run initialization and shutdown: */ void (*rStartup) (DestReceiver *self, int operation, TupleDesc typeinfo); void (*rShutdown) (DestReceiver *self); /* Destroy the receiver object itself (if dynamically allocated) */ void (*rDestroy) (DestReceiver *self); /* CommandDest code for this receiver */ CommandDest mydest; /* Private fields might appear beyond this point... */ }; extern PGDLLIMPORT DestReceiver *None_Receiver; /* permanent receiver for * DestNone */ /* The primary destination management functions */ extern void BeginCommand(CommandTag commandTag, CommandDest dest); extern DestReceiver *CreateDestReceiver(CommandDest dest); extern void EndCommand(const QueryCompletion *qc, CommandDest dest, bool force_undecorated_output); extern void EndReplicationCommand(const char *commandTag); /* Additional functions that go with destination management, more or less. */ extern void NullCommand(CommandDest dest); extern void ReadyForQuery(CommandDest dest); #endif /* DEST_H */ pg_query-4.2.3/ext/pg_query/include/tcop/deparse_utility.h0000644000004100000410000000405014510636647024020 0ustar www-datawww-data/*------------------------------------------------------------------------- * * deparse_utility.h * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/tcop/tcopprot.h0000644000004100000410000000714214510636647022471 0ustar www-datawww-data/*------------------------------------------------------------------------- * * tcopprot.h * prototypes for postgres.c. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/tcopprot.h * *------------------------------------------------------------------------- */ #ifndef TCOPPROT_H #define TCOPPROT_H #include "nodes/params.h" #include "nodes/parsenodes.h" #include "nodes/plannodes.h" #include "storage/procsignal.h" #include "utils/guc.h" #include "utils/queryenvironment.h" /* Required daylight between max_stack_depth and the kernel limit, in bytes */ #define STACK_DEPTH_SLOP (512 * 1024L) extern 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; 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 bool check_max_stack_depth(int *newval, void **extra, GucSource source); extern void assign_max_stack_depth(int newval, void *extra); extern void die(SIGNAL_ARGS); extern void quickdie(SIGNAL_ARGS) pg_attribute_noreturn(); extern void StatementCancelHandler(SIGNAL_ARGS); extern void FloatExceptionHandler(SIGNAL_ARGS) pg_attribute_noreturn(); extern void RecoveryConflictInterrupt(ProcSignalReason reason); /* called from SIGUSR1 * handler */ extern void ProcessClientReadInterrupt(bool blocked); extern void ProcessClientWriteInterrupt(bool blocked); extern void process_postgres_switches(int argc, char *argv[], GucContext ctx, const char **dbname); extern void 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 */ pg_query-4.2.3/ext/pg_query/include/tcop/cmdtaglist.h0000644000004100000410000003451014510636647022751 0ustar www-datawww-data/*---------------------------------------------------------------------- * * 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-2022, 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_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", false, false, false) PG_CMDTAG(CMDTAG_RELEASE, "RELEASE", false, false, false) PG_CMDTAG(CMDTAG_RESET, "RESET", false, false, false) PG_CMDTAG(CMDTAG_REVOKE, "REVOKE", true, false, false) PG_CMDTAG(CMDTAG_REVOKE_ROLE, "REVOKE ROLE", false, false, false) PG_CMDTAG(CMDTAG_ROLLBACK, "ROLLBACK", false, false, false) PG_CMDTAG(CMDTAG_ROLLBACK_PREPARED, "ROLLBACK PREPARED", false, false, false) PG_CMDTAG(CMDTAG_SAVEPOINT, "SAVEPOINT", false, false, false) PG_CMDTAG(CMDTAG_SECURITY_LABEL, "SECURITY LABEL", true, false, false) PG_CMDTAG(CMDTAG_SELECT, "SELECT", false, false, true) PG_CMDTAG(CMDTAG_SELECT_FOR_KEY_SHARE, "SELECT FOR KEY SHARE", false, false, false) PG_CMDTAG(CMDTAG_SELECT_FOR_NO_KEY_UPDATE, "SELECT FOR NO KEY UPDATE", false, false, false) PG_CMDTAG(CMDTAG_SELECT_FOR_SHARE, "SELECT FOR SHARE", false, false, false) PG_CMDTAG(CMDTAG_SELECT_FOR_UPDATE, "SELECT FOR UPDATE", false, false, false) PG_CMDTAG(CMDTAG_SELECT_INTO, "SELECT INTO", true, false, false) PG_CMDTAG(CMDTAG_SET, "SET", false, false, false) PG_CMDTAG(CMDTAG_SET_CONSTRAINTS, "SET CONSTRAINTS", false, false, false) PG_CMDTAG(CMDTAG_SHOW, "SHOW", false, false, false) PG_CMDTAG(CMDTAG_START_TRANSACTION, "START TRANSACTION", false, false, false) PG_CMDTAG(CMDTAG_TRUNCATE_TABLE, "TRUNCATE TABLE", false, false, false) PG_CMDTAG(CMDTAG_UNLISTEN, "UNLISTEN", false, false, false) PG_CMDTAG(CMDTAG_UPDATE, "UPDATE", false, false, true) PG_CMDTAG(CMDTAG_VACUUM, "VACUUM", false, false, false) pg_query-4.2.3/ext/pg_query/include/tcop/cmdtag.h0000644000004100000410000000266314510636647022061 0ustar www-datawww-data/*------------------------------------------------------------------------- * * cmdtag.h * Declarations for commandtag names and enumeration. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/cmdtag.h * *------------------------------------------------------------------------- */ #ifndef CMDTAG_H #define CMDTAG_H #define PG_CMDTAG(tag, name, evtrgok, rwrok, rowcnt) \ tag, typedef enum CommandTag { #include "tcop/cmdtaglist.h" COMMAND_TAG_NEXTTAG } CommandTag; #undef PG_CMDTAG typedef struct QueryCompletion { CommandTag commandTag; uint64 nprocessed; } QueryCompletion; static inline void SetQueryCompletion(QueryCompletion *qc, CommandTag commandTag, uint64 nprocessed) { qc->commandTag = commandTag; qc->nprocessed = nprocessed; } static inline void CopyQueryCompletion(QueryCompletion *dst, const QueryCompletion *src) { dst->commandTag = src->commandTag; dst->nprocessed = src->nprocessed; } extern void InitializeQueryCompletion(QueryCompletion *qc); extern const char *GetCommandTagName(CommandTag commandTag); extern bool command_tag_display_rowcount(CommandTag commandTag); extern bool command_tag_event_trigger_ok(CommandTag commandTag); extern bool command_tag_table_rewrite_ok(CommandTag commandTag); extern CommandTag GetCommandTagEnum(const char *tagname); #endif /* CMDTAG_H */ pg_query-4.2.3/ext/pg_query/include/tcop/utility.h0000644000004100000410000000763214510636647022326 0ustar www-datawww-data/*------------------------------------------------------------------------- * * utility.h * prototypes for utility.c. * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/tcop/pquery.h0000644000004100000410000000253414510636647022144 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pquery.h * prototypes for pquery.c. * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/tcop/fastpath.h0000644000004100000410000000100214510636647022416 0ustar www-datawww-data/*------------------------------------------------------------------------- * * fastpath.h * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/pg_config_os.h0000644000004100000410000000023614510636647022303 0ustar www-datawww-data/* src/include/port/darwin.h */ #define __darwin__ 1 #if HAVE_DECL_F_FULLFSYNC /* not present before macOS 10.3 */ #define HAVE_FSYNC_WRITETHROUGH #endif pg_query-4.2.3/ext/pg_query/include/miscadmin.h0000644000004100000410000004271314510636647021621 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 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 IsBackgroundWorker; extern PGDLLIMPORT bool IsBinaryUpgrade; extern PGDLLIMPORT __thread bool ExitOnAnyError; extern PGDLLIMPORT char *DataDir; extern PGDLLIMPORT int data_directory_mode; extern PGDLLIMPORT int NBuffers; extern PGDLLIMPORT int MaxBackends; extern PGDLLIMPORT int MaxConnections; extern PGDLLIMPORT int max_worker_processes; extern PGDLLIMPORT int max_parallel_workers; extern PGDLLIMPORT int MyProcPid; extern PGDLLIMPORT pg_time_t MyStartTime; extern PGDLLIMPORT TimestampTz MyStartTimestamp; extern PGDLLIMPORT struct Port *MyProcPort; extern PGDLLIMPORT struct Latch *MyLatch; extern 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 /* * done in storage/backendid.h for now. * * extern BackendId MyBackendId; */ extern PGDLLIMPORT Oid MyDatabaseId; extern PGDLLIMPORT Oid MyDatabaseTableSpace; /* * Date/Time Configuration * * DateStyle defines the output formatting choice for date/time types: * USE_POSTGRES_DATES specifies traditional Postgres format * USE_ISO_DATES specifies ISO-compliant format * USE_SQL_DATES specifies Oracle/Ingres-compliant format * USE_GERMAN_DATES specifies German-style dd.mm/yyyy * * DateOrder defines the field order to be assumed when reading an * ambiguous date (anything not in YYYY-MM-DD format, with a four-digit * year field first, is taken to be ambiguous): * DATEORDER_YMD specifies field order yy-mm-dd * DATEORDER_DMY specifies field order dd-mm-yy ("European" convention) * DATEORDER_MDY specifies field order mm-dd-yy ("US" convention) * * In the Postgres and SQL DateStyles, DateOrder also selects output field * order: day comes before month in DMY style, else month comes before day. * * The user-visible "DateStyle" run-time parameter subsumes both of these. */ /* valid DateStyle values */ #define USE_POSTGRES_DATES 0 #define USE_ISO_DATES 1 #define USE_SQL_DATES 2 #define USE_GERMAN_DATES 3 #define USE_XSD_DATES 4 /* valid DateOrder values */ #define DATEORDER_YMD 0 #define DATEORDER_DMY 1 #define DATEORDER_MDY 2 extern PGDLLIMPORT int DateStyle; extern PGDLLIMPORT int DateOrder; /* * IntervalStyles * INTSTYLE_POSTGRES Like Postgres < 8.4 when DateStyle = 'iso' * INTSTYLE_POSTGRES_VERBOSE Like Postgres < 8.4 when DateStyle != 'iso' * INTSTYLE_SQL_STANDARD SQL standard interval literals * INTSTYLE_ISO_8601 ISO-8601-basic formatted intervals */ #define INTSTYLE_POSTGRES 0 #define INTSTYLE_POSTGRES_VERBOSE 1 #define INTSTYLE_SQL_STANDARD 2 #define INTSTYLE_ISO_8601 3 extern PGDLLIMPORT int IntervalStyle; #define MAXTZLEN 10 /* max TZ name len, not counting tr. null */ extern 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; 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 */ #if defined(__ia64__) || defined(__ia64) typedef struct { char *stack_base_ptr; char *register_stack_base_ptr; } pg_stack_base_t; #else typedef char *pg_stack_base_t; #endif extern pg_stack_base_t set_stack_base(void); extern void restore_stack_base(pg_stack_base_t base); extern void check_stack_depth(void); extern bool stack_is_too_deep(void); /* in tcop/utility.c */ extern void PreventCommandIfReadOnly(const char *cmdname); extern void PreventCommandIfParallelMode(const char *cmdname); extern void PreventCommandDuringRecovery(const char *cmdname); /* in utils/misc/guc.c */ extern PGDLLIMPORT int trace_recovery_messages; extern int trace_recovery(int trace_level); /***************************************************************************** * pdir.h -- * * POSTGRES directory path definitions. * *****************************************************************************/ /* flags to be OR'd to form sec_context */ #define SECURITY_LOCAL_USERID_CHANGE 0x0001 #define SECURITY_RESTRICTED_OPERATION 0x0002 #define SECURITY_NOFORCE_RLS 0x0004 extern PGDLLIMPORT char *DatabasePath; /* now in utils/init/miscinit.c */ extern void InitPostmasterChild(void); extern void InitStandaloneProcess(const char *argv0); extern void SwitchToSharedLatch(void); extern void SwitchBackToLocalLatch(void); typedef enum BackendType { B_INVALID = 0, B_AUTOVAC_LAUNCHER, B_AUTOVAC_WORKER, B_BACKEND, B_BG_WORKER, B_BG_WRITER, B_CHECKPOINTER, B_STARTUP, B_WAL_RECEIVER, B_WAL_SENDER, B_WAL_WRITER, B_ARCHIVER, B_LOGGER, } BackendType; extern PGDLLIMPORT BackendType MyBackendType; extern const char *GetBackendTypeDesc(BackendType backendType); extern void SetDatabasePath(const char *path); extern void checkDataDir(void); extern void SetDataDir(const char *dir); extern void ChangeToDataDir(void); extern char *GetUserNameFromId(Oid roleid, bool noerr); extern Oid GetUserId(void); extern Oid GetOuterUserId(void); extern Oid GetSessionUserId(void); extern Oid GetAuthenticatedUserId(void); extern void GetUserIdAndSecContext(Oid *userid, int *sec_context); extern void SetUserIdAndSecContext(Oid userid, int sec_context); extern bool InLocalUserIdChange(void); extern bool InSecurityRestrictedOperation(void); extern bool InNoForceRLSOperation(void); extern void GetUserIdAndContext(Oid *userid, bool *sec_def_context); extern void SetUserIdAndContext(Oid userid, bool sec_def_context); extern void InitializeSessionUserId(const char *rolename, Oid useroid); extern void InitializeSessionUserIdStandalone(void); extern void SetSessionAuthorization(Oid userid, bool is_superuser); extern Oid GetCurrentRoleId(void); extern void SetCurrentRoleId(Oid roleid, bool is_superuser); /* in utils/misc/superuser.c */ extern bool superuser(void); /* current user is superuser */ extern bool superuser_arg(Oid roleid); /* given user is superuser */ /***************************************************************************** * pmod.h -- * * POSTGRES processing mode definitions. * *****************************************************************************/ /* * Description: * There are three processing modes in POSTGRES. They are * BootstrapProcessing or "bootstrap," InitProcessing or * "initialization," and NormalProcessing or "normal." * * The first two processing modes are used during special times. When the * system state indicates bootstrap processing, transactions are all given * transaction id "one" and are consequently guaranteed to commit. This mode * is used during the initial generation of template databases. * * Initialization mode: used while starting a backend, until all normal * initialization is complete. Some code behaves differently when executed * in this mode to enable system bootstrapping. * * If a POSTGRES backend process is in normal mode, then all code may be * executed normally. */ typedef enum ProcessingMode { BootstrapProcessing, /* bootstrap creation of template database */ InitProcessing, /* initializing system */ NormalProcessing /* normal processing */ } ProcessingMode; extern PGDLLIMPORT ProcessingMode Mode; #define IsBootstrapProcessingMode() (Mode == BootstrapProcessing) #define IsInitProcessingMode() (Mode == InitProcessing) #define IsNormalProcessingMode() (Mode == NormalProcessing) #define GetProcessingMode() Mode #define SetProcessingMode(mode) \ do { \ AssertArg((mode) == BootstrapProcessing || \ (mode) == InitProcessing || \ (mode) == NormalProcessing); \ Mode = (mode); \ } while(0) /* * Auxiliary-process type identifiers. These used to be in bootstrap.h * but it seems saner to have them here, with the ProcessingMode stuff. * The MyAuxProcType global is defined and set in auxprocess.c. * * Make sure to list in the glossary any items you add here. */ typedef enum { NotAnAuxProcess = -1, StartupProcess = 0, BgWriterProcess, ArchiverProcess, CheckpointerProcess, WalWriterProcess, WalReceiverProcess, NUM_AUXPROCTYPES /* Must be last! */ } AuxProcType; extern PGDLLIMPORT AuxProcType MyAuxProcType; #define AmStartupProcess() (MyAuxProcType == StartupProcess) #define AmBackgroundWriterProcess() (MyAuxProcType == BgWriterProcess) #define AmArchiverProcess() (MyAuxProcType == ArchiverProcess) #define AmCheckpointerProcess() (MyAuxProcType == CheckpointerProcess) #define AmWalWriterProcess() (MyAuxProcType == WalWriterProcess) #define AmWalReceiverProcess() (MyAuxProcType == WalReceiverProcess) /***************************************************************************** * pinit.h -- * * POSTGRES initialization and cleanup definitions. * *****************************************************************************/ /* in utils/init/postinit.c */ extern void pg_split_opts(char **argv, int *argcp, const char *optstr); extern void InitializeMaxBackends(void); extern void InitPostgres(const char *in_dbname, Oid dboid, const char *username, Oid useroid, bool load_session_libraries, bool override_allow_connections, 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; /* in executor/nodeHash.c */ extern size_t get_hash_memory_limit(void); #endif /* MISCADMIN_H */ pg_query-4.2.3/ext/pg_query/include/pgtime.h0000644000004100000410000000543314510636647021140 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pgtime.h * PostgreSQL internal timezone library * * Portions Copyright (c) 1996-2022, 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 max, const char *format, const struct pg_tm *tm); /* 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 */ pg_query-4.2.3/ext/pg_query/include/lib/0000755000004100000410000000000014510636647020243 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/lib/sort_template.h0000644000004100000410000003143714510636647023306 0ustar www-datawww-data/*------------------------------------------------------------------------- * * sort_template.h * * A template for a sort algorithm that supports varying degrees of * specialization. * * Copyright (c) 2021-2022, 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 * * 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. */ 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 pg_query-4.2.3/ext/pg_query/include/lib/stringinfo.h0000644000004100000410000001325314510636647022602 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/lib/stringinfo.h * *------------------------------------------------------------------------- */ #ifndef STRINGINFO_H #define STRINGINFO_H /*------------------------- * StringInfoData holds information about an extensible string. * data is the current buffer for the string (allocated with palloc). * len is the current string length. There is guaranteed to be * a terminating '\0' at data[len], although this is not very * useful when the string holds binary data rather than text. * maxlen is the allocated size in bytes of 'data', i.e. the maximum * string size (including the terminating '\0' char) that we can * currently store in 'data' without having to reallocate * more space. We must always have maxlen > len. * cursor is initialized to zero by makeStringInfo or initStringInfo, * but is not otherwise touched by the stringinfo.c routines. * Some routines use it to scan through a StringInfo. *------------------------- */ typedef struct StringInfoData { char *data; int len; int maxlen; int cursor; } StringInfoData; typedef StringInfoData *StringInfo; /*------------------------ * There are two ways to create a StringInfo object initially: * * StringInfo stringptr = makeStringInfo(); * Both the StringInfoData and the data buffer are palloc'd. * * StringInfoData string; * initStringInfo(&string); * The data buffer is palloc'd but the StringInfoData is just local. * This is the easiest approach for a StringInfo object that will * only live as long as the current routine. * * To destroy a StringInfo, pfree() the data buffer, and then pfree() the * StringInfoData if it was palloc'd. There's no special support for this. * * NOTE: some routines build up a string using StringInfo, and then * release the StringInfoData but return the data string itself to their * caller. At that point the data string looks like a plain palloc'd * string. *------------------------- */ /*------------------------ * makeStringInfo * Create an empty 'StringInfoData' & return a pointer to it. */ extern StringInfo makeStringInfo(void); /*------------------------ * initStringInfo * Initialize a StringInfoData struct (with previously undefined contents) * to describe an empty string. */ extern void initStringInfo(StringInfo str); /*------------------------ * resetStringInfo * Clears the current content of the StringInfo, if any. The * StringInfo remains valid. */ extern void resetStringInfo(StringInfo str); /*------------------------ * appendStringInfo * Format text data under the control of fmt (an sprintf-style format string) * and append it to whatever is already in str. More space is allocated * to str if necessary. This is sort of like a combination of sprintf and * strcat. */ extern void appendStringInfo(StringInfo str, const char *fmt,...) pg_attribute_printf(2, 3); /*------------------------ * appendStringInfoVA * Attempt to format text data under the control of fmt (an sprintf-style * format string) and append it to whatever is already in str. If successful * return zero; if not (because there's not enough space), return an estimate * of the space needed, without modifying str. Typically the caller should * pass the return value to enlargeStringInfo() before trying again; see * appendStringInfo for standard usage pattern. */ extern int appendStringInfoVA(StringInfo str, const char *fmt, va_list args) pg_attribute_printf(2, 0); /*------------------------ * appendStringInfoString * Append a null-terminated string to str. * Like appendStringInfo(str, "%s", s) but faster. */ extern void appendStringInfoString(StringInfo str, const char *s); /*------------------------ * appendStringInfoChar * Append a single byte to str. * Like appendStringInfo(str, "%c", ch) but much faster. */ extern void appendStringInfoChar(StringInfo str, char ch); /*------------------------ * appendStringInfoCharMacro * As above, but a macro for even more speed where it matters. * Caution: str argument will be evaluated multiple times. */ #define appendStringInfoCharMacro(str,ch) \ (((str)->len + 1 >= (str)->maxlen) ? \ appendStringInfoChar(str, ch) : \ (void)((str)->data[(str)->len] = (ch), (str)->data[++(str)->len] = '\0')) /*------------------------ * appendStringInfoSpaces * Append a given number of spaces to str. */ extern void appendStringInfoSpaces(StringInfo str, int count); /*------------------------ * appendBinaryStringInfo * Append arbitrary binary data to a StringInfo, allocating more space * if necessary. */ extern void appendBinaryStringInfo(StringInfo str, const char *data, int datalen); /*------------------------ * appendBinaryStringInfoNT * Append arbitrary binary data to a StringInfo, allocating more space * if necessary. Does not ensure a trailing null-byte exists. */ extern void appendBinaryStringInfoNT(StringInfo str, const char *data, int datalen); /*------------------------ * enlargeStringInfo * Make sure a StringInfo's buffer can hold at least 'needed' more bytes. */ extern void enlargeStringInfo(StringInfo str, int needed); #endif /* STRINGINFO_H */ pg_query-4.2.3/ext/pg_query/include/lib/simplehash.h0000644000004100000410000010066014510636647022554 0ustar www-datawww-data/* * 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-2022, 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_PARAMETERS SH_MAKE_NAME(compute_parameters) #define SH_NEXT SH_MAKE_NAME(next) #define SH_PREV SH_MAKE_NAME(prev) #define SH_DISTANCE_FROM_OPTIMAL SH_MAKE_NAME(distance) #define SH_INITIAL_BUCKET SH_MAKE_NAME(initial_bucket) #define SH_ENTRY_HASH SH_MAKE_NAME(entry_hash) #define SH_INSERT_HASH_INTERNAL SH_MAKE_NAME(insert_hash_internal) #define SH_LOOKUP_HASH_INTERNAL SH_MAKE_NAME(lookup_hash_internal) /* generate forward declarations necessary to use the hash table */ #ifdef SH_DECLARE /* type definitions */ typedef struct SH_TYPE { /* * Size of data / bucket array, 64 bits to handle UINT32_MAX sized hash * tables. Note that the maximum number of elements is lower * (SH_MAX_FILLFACTOR) */ uint64 size; /* how many elements have valid contents */ uint32 members; /* mask for bucket and size calculations, based on size */ uint32 sizemask; /* boundary after which to grow hashtable */ uint32 grow_threshold; /* hash buckets */ SH_ELEMENT_TYPE *data; #ifndef SH_RAW_ALLOCATOR /* memory context to use for allocations */ MemoryContext ctx; #endif /* user defined data, useful for callbacks */ void *private_data; } SH_TYPE; typedef enum SH_STATUS { SH_STATUS_EMPTY = 0x00, SH_STATUS_IN_USE = 0x01 } SH_STATUS; typedef struct SH_ITERATOR { uint32 cur; /* current element */ uint32 end; bool done; /* iterator exhausted? */ } SH_ITERATOR; /* externally visible function prototypes */ #ifdef SH_RAW_ALLOCATOR /* _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 sizing parameters for hashtable. Called when creating and growing * the hashtable. */ static inline void SH_COMPUTE_PARAMETERS(SH_TYPE * tb, 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"); /* 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); SH_COMPUTE_PARAMETERS(tb, size); tb->data = (SH_ELEMENT_TYPE *) SH_ALLOCATE(tb, sizeof(SH_ELEMENT_TYPE) * tb->size); return tb; } /* destroy a previously created hash table */ SH_SCOPE void SH_DESTROY(SH_TYPE * tb) { SH_FREE(tb, tb->data); pfree(tb); } /* reset the contents of a previously created hash table */ SH_SCOPE void SH_RESET(SH_TYPE * tb) { memset(tb->data, 0, sizeof(SH_ELEMENT_TYPE) * tb->size); tb->members = 0; } /* * Grow a hash table to at least `newsize` buckets. * * Usually this will automatically be called by insertions/deletions, when * necessary. But resizing to the exact input size can be advantageous * performance-wise, when known at some point. */ SH_SCOPE void SH_GROW(SH_TYPE * tb, 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); /* compute parameters for new table */ SH_COMPUTE_PARAMETERS(tb, newsize); tb->data = (SH_ELEMENT_TYPE *) SH_ALLOCATE(tb, sizeof(SH_ELEMENT_TYPE) * tb->size); newdata = tb->data; /* * Copy entries from the old data to newdata. We theoretically could use * SH_INSERT here, to avoid code duplication, but that's more general than * we need. We neither want tb->members increased, nor do we need to do * deal with deleted elements, nor do we need to compare keys. So a * special-cased implementation is lot faster. As resizing can be time * consuming and frequent, that's worthwhile to optimize. * * To be able to simply move entries over, we have to start not at the * first bucket (i.e olddata[0]), but find the first bucket that's either * empty, or is occupied by an entry at its optimal position. Such a * bucket has to exist in any table with a load factor under 1, as not all * buckets are occupied, i.e. there always has to be an empty bucket. By * starting at such a bucket we can move the entries to the larger table, * without having to deal with conflicts. */ /* search for the first element in the hash that's not wrapped around */ for (i = 0; i < oldsize; i++) { SH_ELEMENT_TYPE *oldentry = &olddata[i]; uint32 hash; uint32 optimal; if (oldentry->status != SH_STATUS_IN_USE) { startelem = i; break; } hash = SH_ENTRY_HASH(tb, oldentry); optimal = SH_INITIAL_BUCKET(tb, hash); if (optimal == i) { startelem = i; break; } } /* and copy all elements in the old table */ copyelem = startelem; for (i = 0; i < oldsize; i++) { SH_ELEMENT_TYPE *oldentry = &olddata[copyelem]; if (oldentry->status == SH_STATUS_IN_USE) { uint32 hash; uint32 startelem; uint32 curelem; SH_ELEMENT_TYPE *newentry; hash = SH_ENTRY_HASH(tb, oldentry); startelem = SH_INITIAL_BUCKET(tb, hash); curelem = startelem; /* find empty element to put data into */ while (true) { newentry = &newdata[curelem]; if (newentry->status == SH_STATUS_EMPTY) { break; } curelem = SH_NEXT(tb, curelem, startelem); } /* copy entry to new slot */ memcpy(newentry, oldentry, sizeof(SH_ELEMENT_TYPE)); } /* can't use SH_NEXT here, would use new size */ copyelem++; if (copyelem >= oldsize) { copyelem = 0; } } SH_FREE(tb, olddata); } /* * This is a separate static inline function, so it can be reliably be inlined * into its wrapper functions even if SH_SCOPE is extern. */ static inline SH_ELEMENT_TYPE * SH_INSERT_HASH_INTERNAL(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash, bool *found) { uint32 startelem; uint32 curelem; SH_ELEMENT_TYPE *data; uint32 insertdist; restart: insertdist = 0; /* * We do the grow check even if the key is actually present, to avoid * doing the check inside the loop. This also lets us avoid having to * re-find our position in the hashtable after resizing. * * Note that this also reached when resizing the table due to * SH_GROW_MAX_DIB / SH_GROW_MAX_MOVE. */ if (unlikely(tb->members >= tb->grow_threshold)) { if (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 key into the hash-table, set *found to true if the key * already exists, false otherwise. Returns the hash-table entry in either * case. */ SH_SCOPE SH_ELEMENT_TYPE * SH_INSERT(SH_TYPE * tb, SH_KEY_TYPE key, bool *found) { uint32 hash = SH_HASH_KEY(tb, key); return SH_INSERT_HASH_INTERNAL(tb, key, hash, found); } /* * Insert the key key into the hash-table using an already-calculated * hash. Set *found to true if the key already exists, false * otherwise. Returns the hash-table entry in either case. */ SH_SCOPE SH_ELEMENT_TYPE * SH_INSERT_HASH(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash, bool *found) { return SH_INSERT_HASH_INTERNAL(tb, key, hash, found); } /* * This is a separate static inline function, so it can be reliably be inlined * into its wrapper functions even if SH_SCOPE is extern. */ static inline SH_ELEMENT_TYPE * SH_LOOKUP_HASH_INTERNAL(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash) { const uint32 startelem = SH_INITIAL_BUCKET(tb, hash); uint32 curelem = startelem; while (true) { SH_ELEMENT_TYPE *entry = &tb->data[curelem]; if (entry->status == SH_STATUS_EMPTY) { return NULL; } Assert(entry->status == SH_STATUS_IN_USE); if (SH_COMPARE_KEYS(tb, hash, key, entry)) return entry; /* * TODO: we could stop search based on distance. If the current * buckets's distance-from-optimal is smaller than what we've skipped * already, the entry doesn't exist. Probably only do so if * SH_STORE_HASH is defined, to avoid re-computing hashes? */ curelem = SH_NEXT(tb, curelem, startelem); } } /* * Lookup up entry in hash table. Returns NULL if key not present. */ SH_SCOPE SH_ELEMENT_TYPE * SH_LOOKUP(SH_TYPE * tb, SH_KEY_TYPE key) { uint32 hash = SH_HASH_KEY(tb, key); return SH_LOOKUP_HASH_INTERNAL(tb, key, hash); } /* * Lookup up entry in hash table using an already-calculated hash. * * Returns NULL if key not present. */ SH_SCOPE SH_ELEMENT_TYPE * SH_LOOKUP_HASH(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash) { return SH_LOOKUP_HASH_INTERNAL(tb, key, hash); } /* * Delete entry from hash table 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) { int i; uint64 startelem = PG_UINT64_MAX; /* * Search for the first empty element. As deletions during iterations are * supported, we want to start/end at an element that cannot be affected * by elements being shifted. */ for (i = 0; i < tb->size; i++) { SH_ELEMENT_TYPE *entry = &tb->data[i]; if (entry->status != SH_STATUS_IN_USE) { startelem = i; break; } } Assert(startelem < SH_MAX_SIZE); /* * Iterate backwards, that allows the current element to be deleted, even * if there are backward shifts */ iter->cur = startelem; iter->end = iter->cur; iter->done = false; } /* * Initialize iterator to a specific bucket. That's really only useful for * cases where callers are partially iterating over the hashspace, and that * iteration deletes and inserts elements based on visited entries. Doing that * repeatedly could lead to an unbalanced keyspace when always starting at the * same position. */ SH_SCOPE void SH_START_ITERATE_AT(SH_TYPE * tb, SH_ITERATOR * iter, uint32 at) { /* * Iterate backwards, that allows the current element to be deleted, even * if there are backward shifts. */ iter->cur = at & tb->sizemask; /* ensure at is within a valid range */ iter->end = iter->cur; iter->done = false; } /* * Iterate over all entries in the hash-table. Return the next occupied entry, * or NULL if done. * * During iteration the current entry in the hash table may be deleted, * without leading to elements being skipped or returned twice. Additionally * the rest of the table may be modified (i.e. there can be insertions or * deletions), but if so, there's neither a guarantee that all nodes are * visited at least once, nor a guarantee that a node is visited at most once. */ SH_SCOPE SH_ELEMENT_TYPE * SH_ITERATE(SH_TYPE * tb, SH_ITERATOR * iter) { while (!iter->done) { SH_ELEMENT_TYPE *elem; elem = &tb->data[iter->cur]; /* next element in backward direction */ iter->cur = (iter->cur - 1) & tb->sizemask; if ((iter->cur & tb->sizemask) == (iter->end & tb->sizemask)) iter->done = true; if (elem->status == SH_STATUS_IN_USE) { return elem; } } return NULL; } /* * Report some statistics about the state of the hashtable. For * debugging/profiling purposes only. */ SH_SCOPE void SH_STAT(SH_TYPE * tb) { uint32 max_chain_length = 0; uint32 total_chain_length = 0; double avg_chain_length; double fillfactor; uint32 i; uint32 *collisions = (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; } 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_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 pg_query-4.2.3/ext/pg_query/include/lib/dshash.h0000644000004100000410000001051514510636647021670 0ustar www-datawww-data/*------------------------------------------------------------------------- * * dshash.h * Concurrent hash tables backed by dynamic shared memory areas. * * Portions Copyright (c) 1996-2022, 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; /* 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); /* * The set of parameters needed to create or attach to a hash table. The * members tranche_id and tranche_name do not need to be initialized when * attaching to an existing hash table. * * Compare and hash functions must be supplied even when attaching, because we * can't safely share function pointers between backends in general. Either * the arg variants or the non-arg variants should be supplied; the other * function pointers should be NULL. If the arg variants are supplied then the * user data pointer supplied to the create and attach functions will be * passed to the hash and compare 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 */ 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 and compare functions wrapping memcmp and tag_hash. */ 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); /* Debugging support. */ extern void dshash_dump(dshash_table *hash_table); #endif /* DSHASH_H */ pg_query-4.2.3/ext/pg_query/include/lib/pairingheap.h0000644000004100000410000000666114510636647022714 0ustar www-datawww-data/* * pairingheap.h * * A Pairing Heap implementation * * Portions Copyright (c) 2012-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/lib/ilist.h0000644000004100000410000005172114510636647021546 0ustar www-datawww-data/*------------------------------------------------------------------------- * * ilist.h * integrated/inline doubly- and singly-linked lists * * These list types are useful when there are only a predetermined set of * lists that an object could be in. List links are embedded directly into * the objects, and thus no extra memory management overhead is required. * (Of course, if only a small proportion of existing objects are in a list, * the link fields in the remainder would be wasted space. But usually, * it saves space to not have separately-allocated list nodes.) * * None of the functions here allocate any memory; they just manipulate * externally managed memory. The APIs for singly and doubly linked lists * are identical as far as capabilities of both allow. * * Each list has a list header, which exists even when the list is empty. * An empty singly-linked list has a NULL pointer in its header. * There are two kinds of empty doubly linked lists: those that have been * initialized to NULL, and those that have been initialized to circularity. * (If a dlist is modified and then all its elements are deleted, it will be * in the circular state.) We prefer circular dlists because there are some * operations that can be done without branches (and thus faster) on lists * that use circular representation. However, it is often convenient to * initialize list headers to zeroes rather than setting them up with an * explicit initialization function, so we also allow the other case. * * EXAMPLES * * Here's a simple example demonstrating how this can be used. Let's assume * we want to store information about the tables contained in a database. * * #include "lib/ilist.h" * * // Define struct for the databases including a list header that will be * // used to access the nodes in the table list later on. * typedef struct my_database * { * char *datname; * dlist_head tables; * // ... * } my_database; * * // Define struct for the tables. Note the list_node element which stores * // prev/next list links. The list_node element need not be first. * typedef struct my_table * { * char *tablename; * dlist_node list_node; * perm_t permissions; * // ... * } my_table; * * // create a database * my_database *db = create_database(); * * // and add a few tables to its table list * dlist_push_head(&db->tables, &create_table(db, "a")->list_node); * ... * dlist_push_head(&db->tables, &create_table(db, "b")->list_node); * * * To iterate over the table list, we allocate an iterator variable and use * a specialized looping construct. Inside a dlist_foreach, the iterator's * 'cur' field can be used to access the current element. iter.cur points to * a 'dlist_node', but most of the time what we want is the actual table * information; dlist_container() gives us that, like so: * * dlist_iter iter; * dlist_foreach(iter, &db->tables) * { * my_table *tbl = dlist_container(my_table, list_node, iter.cur); * printf("we have a table: %s in database %s\n", * tbl->tablename, db->datname); * } * * * While a simple iteration is useful, we sometimes also want to manipulate * the list while iterating. There is a different iterator element and looping * construct for that. Suppose we want to delete tables that meet a certain * criterion: * * dlist_mutable_iter miter; * dlist_foreach_modify(miter, &db->tables) * { * my_table *tbl = dlist_container(my_table, list_node, miter.cur); * * if (!tbl->to_be_deleted) * continue; // don't touch this one * * // unlink the current table from the linked list * dlist_delete(miter.cur); * // as these lists never manage memory, we can still access the table * // after it's been unlinked * drop_table(db, tbl); * } * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/lib/ilist.h *------------------------------------------------------------------------- */ #ifndef ILIST_H #define ILIST_H /* * Enable for extra debugging. This is rather expensive, so it's not enabled by * default even when USE_ASSERT_CHECKING. */ /* #define ILIST_DEBUG */ /* * Node of a doubly linked list. * * Embed this in structs that need to be part of a doubly linked list. */ typedef struct dlist_node dlist_node; struct dlist_node { dlist_node *prev; dlist_node *next; }; /* * Head of a doubly linked list. * * Non-empty lists are internally circularly linked. Circular lists have the * advantage of not needing any branches in the most common list manipulations. * An empty list can also be represented as a pair of NULL pointers, making * initialization easier. */ typedef struct dlist_head { /* * head.next either points to the first element of the list; to &head if * it's a circular empty list; or to NULL if empty and not circular. * * head.prev either points to the last element of the list; to &head if * it's a circular empty list; or to NULL if empty and not circular. */ dlist_node head; } dlist_head; /* * Doubly linked list iterator. * * Used as state in dlist_foreach() and dlist_reverse_foreach(). To get the * current element of the iteration use the 'cur' member. * * Iterations using this are *not* allowed to change the list while iterating! * * NB: We use an extra "end" field here to avoid multiple evaluations of * arguments in the dlist_foreach() macro. */ typedef struct dlist_iter { dlist_node *cur; /* current element */ dlist_node *end; /* last node we'll iterate to */ } dlist_iter; /* * Doubly linked list iterator allowing some modifications while iterating. * * Used as state in dlist_foreach_modify(). To get the current element of the * iteration use the 'cur' member. * * Iterations using this are only allowed to change the list at the current * point of iteration. It is fine to delete the current node, but it is *not* * fine to insert or delete adjacent nodes. * * NB: We need a separate type for mutable iterations so that we can store * the 'next' node of the current node in case it gets deleted or modified. */ typedef struct dlist_mutable_iter { dlist_node *cur; /* current element */ dlist_node *next; /* next node we'll iterate to */ dlist_node *end; /* last node we'll iterate to */ } dlist_mutable_iter; /* * Node of a singly linked list. * * Embed this in structs that need to be part of a singly linked list. */ typedef struct slist_node slist_node; struct slist_node { slist_node *next; }; /* * Head of a singly linked list. * * Singly linked lists are not circularly linked, in contrast to doubly linked * lists; we just set head.next to NULL if empty. This doesn't incur any * additional branches in the usual manipulations. */ typedef struct slist_head { slist_node head; } slist_head; /* * Singly linked list iterator. * * Used as state in slist_foreach(). To get the current element of the * iteration use the 'cur' member. * * It's allowed to modify the list while iterating, with the exception of * deleting the iterator's current node; deletion of that node requires * care if the iteration is to be continued afterward. (Doing so and also * deleting or inserting adjacent list elements might misbehave; also, if * the user frees the current node's storage, continuing the iteration is * not safe.) * * NB: this wouldn't really need to be an extra struct, we could use an * slist_node * directly. We prefer a separate type for consistency. */ typedef struct slist_iter { slist_node *cur; } slist_iter; /* * Singly linked list iterator allowing some modifications while iterating. * * Used as state in slist_foreach_modify(). To get the current element of the * iteration use the 'cur' member. * * The only list modification allowed while iterating is to remove the current * node via slist_delete_current() (*not* slist_delete()). Insertion or * deletion of nodes adjacent to the current node would misbehave. */ typedef struct slist_mutable_iter { slist_node *cur; /* current element */ slist_node *next; /* next node we'll iterate to */ slist_node *prev; /* prev node, for deletions */ } slist_mutable_iter; /* Static initializers */ #define DLIST_STATIC_INIT(name) {{&(name).head, &(name).head}} #define SLIST_STATIC_INIT(name) {{NULL}} /* Prototypes for functions too big to be inline */ /* Caution: this is O(n); consider using slist_delete_current() instead */ extern void slist_delete(slist_head *head, slist_node *node); #ifdef ILIST_DEBUG extern void dlist_check(dlist_head *head); extern void slist_check(slist_head *head); #else /* * These seemingly useless casts to void are here to keep the compiler quiet * about the argument being unused in many functions in a non-debug compile, * in which functions the only point of passing the list head pointer is to be * able to run these checks. */ #define dlist_check(head) ((void) (head)) #define slist_check(head) ((void) (head)) #endif /* ILIST_DEBUG */ /* doubly linked list implementation */ /* * Initialize a doubly linked list. * Previous state will be thrown away without any cleanup. */ static inline void dlist_init(dlist_head *head) { head->head.next = head->head.prev = &head->head; } /* * Is the list empty? * * An empty list has either its first 'next' pointer set to NULL, or to itself. */ static inline bool dlist_is_empty(dlist_head *head) { dlist_check(head); return head->head.next == NULL || head->head.next == &(head->head); } /* * Insert a node at the beginning of the list. */ static inline void dlist_push_head(dlist_head *head, dlist_node *node) { if (head->head.next == NULL) /* convert NULL header to circular */ dlist_init(head); node->next = head->head.next; node->prev = &head->head; node->next->prev = node; head->head.next = node; dlist_check(head); } /* * Insert a node at the end of the list. */ static inline void dlist_push_tail(dlist_head *head, dlist_node *node) { if (head->head.next == NULL) /* convert NULL header to circular */ dlist_init(head); node->next = &head->head; node->prev = head->head.prev; node->prev->next = node; head->head.prev = node; dlist_check(head); } /* * Insert a node after another *in the same list* */ static inline void dlist_insert_after(dlist_node *after, dlist_node *node) { node->prev = after; node->next = after->next; after->next = node; node->next->prev = node; } /* * Insert a node before another *in the same list* */ static inline void dlist_insert_before(dlist_node *before, dlist_node *node) { node->prev = before->prev; node->next = before; before->prev = node; node->prev->next = node; } /* * Delete 'node' from its list (it must be in one). */ static inline void dlist_delete(dlist_node *node) { node->prev->next = node->next; node->next->prev = node->prev; } /* * Remove and return the first node from a list (there must be one). */ static inline dlist_node * dlist_pop_head_node(dlist_head *head) { dlist_node *node; Assert(!dlist_is_empty(head)); node = head->head.next; dlist_delete(node); return node; } /* * Move element from its current position in the list to the head position in * the same list. * * Undefined behaviour if 'node' is not already part of the list. */ static inline void dlist_move_head(dlist_head *head, dlist_node *node) { /* fast path if it's already at the head */ if (head->head.next == node) return; dlist_delete(node); dlist_push_head(head, node); dlist_check(head); } /* * 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(dlist_head *head, dlist_node *node) { return node->next != &head->head; } /* * Check whether 'node' has a preceding node. * Caution: unreliable if 'node' is not in the list. */ static inline bool dlist_has_prev(dlist_head *head, dlist_node *node) { return node->prev != &head->head; } /* * Return the next node in the list (there must be one). */ static inline dlist_node * dlist_next_node(dlist_head *head, dlist_node *node) { Assert(dlist_has_next(head, node)); return node->next; } /* * Return previous node in the list (there must be one). */ static inline dlist_node * dlist_prev_node(dlist_head *head, dlist_node *node) { Assert(dlist_has_prev(head, node)); return node->prev; } /* internal support function to get address of head element's struct */ static inline void * dlist_head_element_off(dlist_head *head, size_t off) { Assert(!dlist_is_empty(head)); return (char *) head->head.next - off; } /* * Return the first node in the list (there must be one). */ static inline dlist_node * dlist_head_node(dlist_head *head) { return (dlist_node *) dlist_head_element_off(head, 0); } /* internal support function to get address of tail element's struct */ static inline void * dlist_tail_element_off(dlist_head *head, size_t off) { Assert(!dlist_is_empty(head)); return (char *) head->head.prev - off; } /* * Return the last node in the list (there must be one). */ static inline dlist_node * dlist_tail_node(dlist_head *head) { return (dlist_node *) dlist_tail_element_off(head, 0); } /* * Return the containing struct of 'type' where 'membername' is the dlist_node * pointed at by 'ptr'. * * This is used to convert a dlist_node * back to its containing struct. */ #define dlist_container(type, membername, ptr) \ (AssertVariableIsOfTypeMacro(ptr, dlist_node *), \ AssertVariableIsOfTypeMacro(((type *) NULL)->membername, dlist_node), \ ((type *) ((char *) (ptr) - offsetof(type, membername)))) /* * Return the address of the first element in the list. * * The list must not be empty. */ #define dlist_head_element(type, membername, lhead) \ (AssertVariableIsOfTypeMacro(((type *) NULL)->membername, dlist_node), \ (type *) dlist_head_element_off(lhead, offsetof(type, membername))) /* * Return the address of the last element in the list. * * The list must not be empty. */ #define dlist_tail_element(type, membername, lhead) \ (AssertVariableIsOfTypeMacro(((type *) NULL)->membername, dlist_node), \ ((type *) dlist_tail_element_off(lhead, offsetof(type, membername)))) /* * Iterate through the list pointed at by 'lhead' storing the state in 'iter'. * * Access the current element with iter.cur. * * It is *not* allowed to manipulate the list during iteration. */ #define dlist_foreach(iter, lhead) \ for (AssertVariableIsOfTypeMacro(iter, dlist_iter), \ AssertVariableIsOfTypeMacro(lhead, dlist_head *), \ (iter).end = &(lhead)->head, \ (iter).cur = (iter).end->next ? (iter).end->next : (iter).end; \ (iter).cur != (iter).end; \ (iter).cur = (iter).cur->next) /* * Iterate through the list pointed at by 'lhead' storing the state in 'iter'. * * Access the current element with iter.cur. * * Iterations using this are only allowed to change the list at the current * point of iteration. It is fine to delete the current node, but it is *not* * fine to insert or delete adjacent nodes. */ #define dlist_foreach_modify(iter, lhead) \ for (AssertVariableIsOfTypeMacro(iter, dlist_mutable_iter), \ AssertVariableIsOfTypeMacro(lhead, dlist_head *), \ (iter).end = &(lhead)->head, \ (iter).cur = (iter).end->next ? (iter).end->next : (iter).end, \ (iter).next = (iter).cur->next; \ (iter).cur != (iter).end; \ (iter).cur = (iter).next, (iter).next = (iter).cur->next) /* * Iterate through the list in reverse order. * * It is *not* allowed to manipulate the list during iteration. */ #define dlist_reverse_foreach(iter, lhead) \ for (AssertVariableIsOfTypeMacro(iter, dlist_iter), \ AssertVariableIsOfTypeMacro(lhead, dlist_head *), \ (iter).end = &(lhead)->head, \ (iter).cur = (iter).end->prev ? (iter).end->prev : (iter).end; \ (iter).cur != (iter).end; \ (iter).cur = (iter).cur->prev) /* singly linked list implementation */ /* * Initialize a singly linked list. * Previous state will be thrown away without any cleanup. */ static inline void slist_init(slist_head *head) { head->head.next = NULL; } /* * Is the list empty? */ static inline bool slist_is_empty(slist_head *head) { slist_check(head); return head->head.next == NULL; } /* * Insert a node at the beginning of the list. */ static inline void slist_push_head(slist_head *head, slist_node *node) { node->next = head->head.next; head->head.next = node; slist_check(head); } /* * Insert a node after another *in the same list* */ static inline void slist_insert_after(slist_node *after, slist_node *node) { node->next = after->next; after->next = node; } /* * Remove and return the first node from a list (there must be one). */ static inline slist_node * slist_pop_head_node(slist_head *head) { slist_node *node; Assert(!slist_is_empty(head)); node = head->head.next; head->head.next = node->next; slist_check(head); return node; } /* * Check whether 'node' has a following node. */ static inline bool slist_has_next(slist_head *head, slist_node *node) { slist_check(head); return node->next != NULL; } /* * Return the next node in the list (there must be one). */ static inline slist_node * slist_next_node(slist_head *head, slist_node *node) { Assert(slist_has_next(head, node)); return node->next; } /* internal support function to get address of head element's struct */ static inline void * slist_head_element_off(slist_head *head, size_t off) { Assert(!slist_is_empty(head)); return (char *) head->head.next - off; } /* * Return the first node in the list (there must be one). */ static inline slist_node * slist_head_node(slist_head *head) { return (slist_node *) slist_head_element_off(head, 0); } /* * Delete the list element the iterator currently points to. * * Caution: this modifies iter->cur, so don't use that again in the current * loop iteration. */ static inline void slist_delete_current(slist_mutable_iter *iter) { /* * Update previous element's forward link. If the iteration is at the * first list element, iter->prev will point to the list header's "head" * field, so we don't need a special case for that. */ iter->prev->next = iter->next; /* * Reset cur to prev, so that prev will continue to point to the prior * valid list element after slist_foreach_modify() advances to the next. */ iter->cur = iter->prev; } /* * Return the containing struct of 'type' where 'membername' is the slist_node * pointed at by 'ptr'. * * This is used to convert a slist_node * back to its containing struct. */ #define slist_container(type, membername, ptr) \ (AssertVariableIsOfTypeMacro(ptr, slist_node *), \ AssertVariableIsOfTypeMacro(((type *) NULL)->membername, slist_node), \ ((type *) ((char *) (ptr) - offsetof(type, membername)))) /* * Return the address of the first element in the list. * * The list must not be empty. */ #define slist_head_element(type, membername, lhead) \ (AssertVariableIsOfTypeMacro(((type *) NULL)->membername, slist_node), \ (type *) slist_head_element_off(lhead, offsetof(type, membername))) /* * Iterate through the list pointed at by 'lhead' storing the state in 'iter'. * * Access the current element with iter.cur. * * It's allowed to modify the list while iterating, with the exception of * deleting the iterator's current node; deletion of that node requires * care if the iteration is to be continued afterward. (Doing so and also * deleting or inserting adjacent list elements might misbehave; also, if * the user frees the current node's storage, continuing the iteration is * not safe.) */ #define slist_foreach(iter, lhead) \ for (AssertVariableIsOfTypeMacro(iter, slist_iter), \ AssertVariableIsOfTypeMacro(lhead, slist_head *), \ (iter).cur = (lhead)->head.next; \ (iter).cur != NULL; \ (iter).cur = (iter).cur->next) /* * Iterate through the list pointed at by 'lhead' storing the state in 'iter'. * * Access the current element with iter.cur. * * The only list modification allowed while iterating is to remove the current * node via slist_delete_current() (*not* slist_delete()). Insertion or * deletion of nodes adjacent to the current node would misbehave. */ #define slist_foreach_modify(iter, lhead) \ for (AssertVariableIsOfTypeMacro(iter, slist_mutable_iter), \ AssertVariableIsOfTypeMacro(lhead, slist_head *), \ (iter).prev = &(lhead)->head, \ (iter).cur = (iter).prev->next, \ (iter).next = (iter).cur ? (iter).cur->next : NULL; \ (iter).cur != NULL; \ (iter).prev = (iter).cur, \ (iter).cur = (iter).next, \ (iter).next = (iter).next ? (iter).next->next : NULL) #endif /* ILIST_H */ pg_query-4.2.3/ext/pg_query/include/pg_config_manual.h0000644000004100000410000003601414510636647023142 0ustar www-datawww-data/*------------------------------------------------------------------------ * 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-2022, 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 /* * PG_SOMAXCONN: maximum accept-queue length limit passed to * listen(2). You'd think we should use SOMAXCONN from * , but on many systems that symbol is much smaller * than the kernel's actual limit. In any case, this symbol need be * twiddled only if you have a kernel that refuses large limit values, * rather than silently reducing the value to what it can handle * (which is what most if not all Unixen do). */ #define PG_SOMAXCONN 10000 /* * You can try changing this if you have a machine with bytes of * another size, but no guarantee... */ #define BITS_PER_BYTE 8 /* * Preferred alignment for disk I/O buffers. On some CPUs, copies between * user space and kernel space are significantly faster if the user buffer * is aligned on a larger-than-MAXALIGN boundary. Ideally this should be * a platform-dependent value, but for now we just hard-wire it. */ #define ALIGNOF_BUFFER 32 /* * If EXEC_BACKEND is defined, the postmaster uses an alternative method for * starting subprocesses: Instead of simply using fork(), as is standard on * Unix platforms, it uses fork()+exec() or something equivalent on Windows, * as well as lots of extra code to bring the required global state to those * new processes. This must be enabled on Windows (because there is no * fork()). On other platforms, it's only useful for verifying those * otherwise Windows-specific code paths. */ #if defined(WIN32) && !defined(__CYGWIN__) #define EXEC_BACKEND #endif /* * Define this if your operating system supports link() */ #if !defined(WIN32) && !defined(__CYGWIN__) #define HAVE_WORKING_LINK 1 #endif /* * USE_POSIX_FADVISE controls whether Postgres will attempt to use the * posix_fadvise() kernel call. Usually the automatic configure tests are * sufficient, but some older Linux distributions had broken versions of * posix_fadvise(). If necessary you can remove the #define here. */ #if HAVE_DECL_POSIX_FADVISE && defined(HAVE_POSIX_FADVISE) #define USE_POSIX_FADVISE #endif /* * USE_PREFETCH code should be compiled only if we have a way to implement * prefetching. (This is decoupled from USE_POSIX_FADVISE because there * might in future be support for alternative low-level prefetch APIs. * If you change this, you probably need to adjust the error message in * check_effective_io_concurrency.) */ #ifdef USE_POSIX_FADVISE #define USE_PREFETCH #endif /* * Default and maximum values for backend_flush_after, bgwriter_flush_after * and checkpoint_flush_after; measured in blocks. Currently, these are * enabled by default if sync_file_range() exists, ie, only on Linux. Perhaps * we could also enable by default if we have mmap and msync(MS_ASYNC)? */ #ifdef HAVE_SYNC_FILE_RANGE #define DEFAULT_BACKEND_FLUSH_AFTER 0 /* never enabled by default */ #define DEFAULT_BGWRITER_FLUSH_AFTER 64 #define DEFAULT_CHECKPOINT_FLUSH_AFTER 32 #else #define DEFAULT_BACKEND_FLUSH_AFTER 0 #define DEFAULT_BGWRITER_FLUSH_AFTER 0 #define DEFAULT_CHECKPOINT_FLUSH_AFTER 0 #endif /* upper limit for all three variables */ #define WRITEBACK_MAX_PENDING_FLUSHES 256 /* * USE_SSL code should be compiled only when compiling with an SSL * implementation. */ #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" /* * On PPC machines, decide whether to use the mutex hint bit in LWARX * instructions. Setting the hint bit will slightly improve spinlock * performance on POWER6 and later machines, but does nothing before that, * and will result in illegal-instruction failures on some pre-POWER4 * machines. By default we use the hint bit when building for 64-bit PPC, * which should be safe in nearly all cases. You might want to override * this if you are building 32-bit code for a known-recent PPC machine. */ #ifdef HAVE_PPC_LWARX_MUTEX_HINT /* must have assembler support in any case */ #if defined(__ppc64__) || defined(__powerpc64__) #define USE_PPC_LWARX_MUTEX_HINT #endif #endif /* * On PPC machines, decide whether to use LWSYNC instructions in place of * ISYNC and SYNC. This provides slightly better performance, but will * result in illegal-instruction failures on some pre-POWER4 machines. * By default we use LWSYNC when building for 64-bit PPC, which should be * safe in nearly all cases. */ #if defined(__ppc64__) || defined(__powerpc64__) #define USE_PPC_LWSYNC #endif /* * Assumed cache line size. This doesn't affect correctness, but can be used * for low-level optimizations. Currently, this is used to pad some data * structures in xlog.c, to ensure that highly-contended fields are on * different cache lines. Too small a value can hurt performance due to false * sharing, while the only downside of too large a value is a few bytes of * wasted memory. The default is 128, which should be large enough for all * supported platforms. */ #define PG_CACHE_LINE_SIZE 128 /* *------------------------------------------------------------------------ * The following symbols are for enabling debugging code, not for * controlling user-visible features or resource limits. *------------------------------------------------------------------------ */ /* * Include Valgrind "client requests", mostly in the memory allocator, so * Valgrind understands PostgreSQL memory contexts. This permits detecting * memory errors that Valgrind would not detect on a vanilla build. 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 * RelationBuildDescr() 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 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 */ pg_query-4.2.3/ext/pg_query/include/datatype/0000755000004100000410000000000014510636647021310 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/datatype/timestamp.h0000644000004100000410000002070014510636647023463 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 HOURS_PER_DAY 24 /* assume no daylight savings time changes */ /* * This doesn't adjust for uneven daylight savings time intervals or leap * seconds, and it crudely estimates leap years. A more accurate value * for days per years is 365.2422. */ #define SECS_PER_YEAR (36525 * 864) /* avoid floating-point computation */ #define SECS_PER_DAY 86400 #define SECS_PER_HOUR 3600 #define SECS_PER_MINUTE 60 #define MINS_PER_HOUR 60 #define USECS_PER_DAY INT64CONST(86400000000) #define USECS_PER_HOUR INT64CONST(3600000000) #define USECS_PER_MINUTE INT64CONST(60000000) #define USECS_PER_SEC INT64CONST(1000000) /* * We allow numeric timezone offsets up to 15:59:59 either way from Greenwich. * Currently, the record holders for wackiest offsets in actual use are zones * Asia/Manila, at -15:56:00 until 1844, and America/Metlakatla, at +15:13:42 * until 1867. If we were to reject such values we would fail to dump and * restore old timestamptz values with these zone settings. */ #define MAX_TZDISP_HOUR 15 /* maximum allowed hour part */ #define TZDISP_LIMIT ((MAX_TZDISP_HOUR + 1) * SECS_PER_HOUR) /* * DT_NOBEGIN represents timestamp -infinity; DT_NOEND represents +infinity */ #define DT_NOBEGIN PG_INT64_MIN #define DT_NOEND PG_INT64_MAX #define TIMESTAMP_NOBEGIN(j) \ do {(j) = DT_NOBEGIN;} while (0) #define TIMESTAMP_IS_NOBEGIN(j) ((j) == DT_NOBEGIN) #define TIMESTAMP_NOEND(j) \ do {(j) = DT_NOEND;} while (0) #define TIMESTAMP_IS_NOEND(j) ((j) == DT_NOEND) #define TIMESTAMP_NOT_FINITE(j) (TIMESTAMP_IS_NOBEGIN(j) || TIMESTAMP_IS_NOEND(j)) /* * Julian date support. * * date2j() and j2date() nominally handle the Julian date range 0..INT_MAX, * or 4714-11-24 BC to 5874898-06-03 AD. In practice, date2j() will work and * give correct negative Julian dates for dates before 4714-11-24 BC as well. * We rely on it to do so back to 4714-11-01 BC. Allowing at least one day's * slop is necessary so that timestamp rotation doesn't produce dates that * would be rejected on input. For example, '4714-11-24 00:00 GMT BC' is a * legal timestamptz value, but in zones east of Greenwich it would print as * sometime in the afternoon of 4714-11-23 BC; if we couldn't process such a * date we'd have a dump/reload failure. So the idea is for IS_VALID_JULIAN * to accept a slightly wider range of dates than we really support, and * then we apply the exact checks in IS_VALID_DATE or IS_VALID_TIMESTAMP, * after timezone rotation if any. To save a few cycles, we can make * IS_VALID_JULIAN check only to the month boundary, since its exact cutoffs * are not very critical in this scheme. * * It is correct that JULIAN_MINYEAR is -4713, not -4714; it is defined to * allow easy comparison to tm_year values, in which we follow the convention * that tm_year <= 0 represents abs(tm_year)+1 BC. */ #define JULIAN_MINYEAR (-4713) #define JULIAN_MINMONTH (11) #define JULIAN_MINDAY (24) #define JULIAN_MAXYEAR (5874898) #define JULIAN_MAXMONTH (6) #define JULIAN_MAXDAY (3) #define IS_VALID_JULIAN(y,m,d) \ (((y) > JULIAN_MINYEAR || \ ((y) == JULIAN_MINYEAR && ((m) >= JULIAN_MINMONTH))) && \ ((y) < JULIAN_MAXYEAR || \ ((y) == JULIAN_MAXYEAR && ((m) < JULIAN_MAXMONTH)))) /* Julian-date equivalents of Day 0 in Unix and Postgres reckoning */ #define UNIX_EPOCH_JDATE 2440588 /* == date2j(1970, 1, 1) */ #define POSTGRES_EPOCH_JDATE 2451545 /* == date2j(2000, 1, 1) */ /* * Range limits for dates and timestamps. * * We have traditionally allowed Julian day zero as a valid datetime value, * so that is the lower bound for both dates and timestamps. * * The upper limit for dates is 5874897-12-31, which is a bit less than what * the Julian-date code can allow. For timestamps, the upper limit is * 294276-12-31. The int64 overflow limit would be a few days later; again, * leaving some slop avoids worries about corner-case overflow, and provides * a simpler user-visible definition. */ /* First allowed date, and first disallowed date, in Julian-date form */ #define DATETIME_MIN_JULIAN (0) #define DATE_END_JULIAN (2147483494) /* == date2j(JULIAN_MAXYEAR, 1, 1) */ #define TIMESTAMP_END_JULIAN (109203528) /* == date2j(294277, 1, 1) */ /* Timestamp limits */ #define MIN_TIMESTAMP INT64CONST(-211813488000000000) /* == (DATETIME_MIN_JULIAN - POSTGRES_EPOCH_JDATE) * USECS_PER_DAY */ #define END_TIMESTAMP INT64CONST(9223371331200000000) /* == (TIMESTAMP_END_JULIAN - POSTGRES_EPOCH_JDATE) * USECS_PER_DAY */ /* Range-check a date (given in Postgres, not Julian, numbering) */ #define IS_VALID_DATE(d) \ ((DATETIME_MIN_JULIAN - POSTGRES_EPOCH_JDATE) <= (d) && \ (d) < (DATE_END_JULIAN - POSTGRES_EPOCH_JDATE)) /* Range-check a timestamp */ #define IS_VALID_TIMESTAMP(t) (MIN_TIMESTAMP <= (t) && (t) < END_TIMESTAMP) #endif /* DATATYPE_TIMESTAMP_H */ pg_query-4.2.3/ext/pg_query/include/plpgsql.h0000644000004100000410000011143114510636647021331 0ustar www-datawww-data/*------------------------------------------------------------------------- * * plpgsql.h - Definitions for the PL/pgSQL * procedural language * * Portions Copyright (c) 1996-2022, 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_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; MemoryContext cast_hash_context; /* memory context for statement-lifespan temporary values */ MemoryContext stmt_mcontext; /* current stmt context, or NULL if none */ MemoryContext stmt_mcontext_parent; /* parent of current context */ /* temporary state for results from evaluation of query or expr */ SPITupleTable *eval_tuptable; uint64 eval_processed; ExprContext *eval_econtext; /* for executing simple expressions */ /* status information for error context reporting */ PLpgSQL_stmt *err_stmt; /* current stmt */ 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 PLpgSQL_function *plpgsql_compile(FunctionCallInfo fcinfo, bool forValidator); extern PLpgSQL_function *plpgsql_compile_inline(char *proc_source); extern void plpgsql_parser_setup(struct ParseState *pstate, PLpgSQL_expr *expr); extern bool plpgsql_parse_word(char *word1, const char *yytxt, bool lookup, PLwdatum *wdatum, PLword *word); extern bool plpgsql_parse_dblword(char *word1, char *word2, PLwdatum *wdatum, PLcword *cword); extern bool plpgsql_parse_tripword(char *word1, char *word2, char *word3, PLwdatum *wdatum, PLcword *cword); extern PLpgSQL_type *plpgsql_parse_wordtype(char *ident); extern PLpgSQL_type *plpgsql_parse_cwordtype(List *idents); extern PLpgSQL_type *plpgsql_parse_wordrowtype(char *ident); extern PLpgSQL_type *plpgsql_parse_cwordrowtype(List *idents); extern PLpgSQL_type *plpgsql_build_datatype(Oid typeOid, int32 typmod, Oid collation, TypeName *origtypname); extern PLpgSQL_variable *plpgsql_build_variable(const char *refname, int lineno, PLpgSQL_type *dtype, bool add2namespace); extern PLpgSQL_rec *plpgsql_build_record(const char *refname, int lineno, PLpgSQL_type *dtype, Oid rectypeid, bool add2namespace); extern PLpgSQL_recfield *plpgsql_build_recfield(PLpgSQL_rec *rec, const char *fldname); extern int plpgsql_recognize_err_condition(const char *condname, bool allow_sqlstate); extern PLpgSQL_condition *plpgsql_parse_err_condition(char *condname); extern void plpgsql_start_datums(void); extern void plpgsql_finish_datums(PLpgSQL_function *function); extern void plpgsql_adddatum(PLpgSQL_datum *newdatum); extern int plpgsql_add_initdatums(int **varnos); extern void plpgsql_HashTableInit(void); /* * Functions in pl_handler.c */ extern void _PG_init(void); /* * Functions in pl_exec.c */ extern Datum plpgsql_exec_function(PLpgSQL_function *func, FunctionCallInfo fcinfo, EState *simple_eval_estate, ResourceOwner simple_eval_resowner, 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 Oid plpgsql_exec_get_datum_type(PLpgSQL_execstate *estate, PLpgSQL_datum *datum); extern void plpgsql_exec_get_datum_type_info(PLpgSQL_execstate *estate, PLpgSQL_datum *datum, Oid *typeId, int32 *typMod, Oid *collation); /* * Functions for namespace handling in pl_funcs.c */ extern void plpgsql_ns_init(void); extern void plpgsql_ns_push(const char *label, PLpgSQL_label_type label_type); extern void plpgsql_ns_pop(void); extern PLpgSQL_nsitem *plpgsql_ns_top(void); extern void plpgsql_ns_additem(PLpgSQL_nsitem_type itemtype, int itemno, const char *name); extern PLpgSQL_nsitem *plpgsql_ns_lookup(PLpgSQL_nsitem *ns_cur, bool localmode, const char *name1, const char *name2, const char *name3, int *names_used); extern PLpgSQL_nsitem *plpgsql_ns_lookup_label(PLpgSQL_nsitem *ns_cur, const char *name); extern PLpgSQL_nsitem *plpgsql_ns_find_nearest_loop(PLpgSQL_nsitem *ns_cur); /* * Other functions in pl_funcs.c */ extern const char *plpgsql_stmt_typename(PLpgSQL_stmt *stmt); extern const char *plpgsql_getdiag_kindname(PLpgSQL_getdiag_kind kind); extern void plpgsql_free_function_memory(PLpgSQL_function *func); extern void plpgsql_dumptree(PLpgSQL_function *func); /* * Scanner functions in pl_scanner.c */ extern int plpgsql_base_yylex(void); extern int plpgsql_yylex(void); extern void plpgsql_push_back_token(int token); extern bool plpgsql_token_is_unreserved_keyword(int token); extern void plpgsql_append_source_text(StringInfo buf, int startlocation, int endlocation); extern int plpgsql_peek(void); extern void plpgsql_peek2(int *tok1_p, int *tok2_p, int *tok1_loc, int *tok2_loc); extern int plpgsql_scanner_errposition(int location); extern void plpgsql_yyerror(const char *message) pg_attribute_noreturn(); extern int plpgsql_location_to_lineno(int location); extern int plpgsql_latest_lineno(void); extern void plpgsql_scanner_init(const char *str); extern void plpgsql_scanner_finish(void); /* * Externs in gram.y */ extern int plpgsql_yyparse(void); #endif /* PLPGSQL_H */ pg_query-4.2.3/ext/pg_query/include/pgstat.h0000644000004100000410000005261114510636647021155 0ustar www-datawww-data/* ---------- * pgstat.h * * Definitions for the PostgreSQL cumulative statistics system. * * Copyright (c) 2001-2022, 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_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 f_numcalls; instr_time f_total_time; instr_time f_self_time; } PgStat_FunctionCounts; /* ---------- * PgStat_BackendFunctionEntry Non-flushed function stats. * ---------- */ typedef struct PgStat_BackendFunctionEntry { PgStat_FunctionCounts f_counts; } PgStat_BackendFunctionEntry; /* * Working state needed to accumulate per-function-call timing statistics. */ typedef struct PgStat_FunctionCallUsage { /* Link to function's hashtable entry (must still be there at exit!) */ /* NULL means we are not tracking the current function call */ PgStat_FunctionCounts *fs; /* Total time previously charged to function, as of function start */ instr_time save_f_total_time; /* Backend-wide total time as of function start */ instr_time save_total; /* system clock as of function start */ instr_time f_start; } PgStat_FunctionCallUsage; /* ---------- * 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 count attempted actions, * regardless of whether the transaction committed. delta_live_tuples, * delta_dead_tuples, and changed_tuples are set depending on commit or abort. * Note that delta_live_tuples and delta_dead_tuples can be negative! * ---------- */ typedef struct PgStat_TableCounts { PgStat_Counter t_numscans; PgStat_Counter t_tuples_returned; PgStat_Counter t_tuples_fetched; PgStat_Counter t_tuples_inserted; PgStat_Counter t_tuples_updated; PgStat_Counter t_tuples_deleted; PgStat_Counter t_tuples_hot_updated; bool t_truncdropped; PgStat_Counter t_delta_live_tuples; PgStat_Counter t_delta_dead_tuples; PgStat_Counter t_changed_tuples; PgStat_Counter t_blocks_fetched; PgStat_Counter t_blocks_hit; } PgStat_TableCounts; /* ---------- * PgStat_TableStatus Per-table status within a backend * * Many of the event counters are nontransactional, ie, we count events * in committed and aborted transactions alike. For these, we just count * directly in the PgStat_TableStatus. However, delta_live_tuples, * delta_dead_tuples, and changed_tuples must be derived from event counts * with awareness of whether the transaction or subtransaction committed or * aborted. Hence, we also keep a stack of per-(sub)transaction status * records for every table modified in the current transaction. At commit * or abort, we propagate tuples_inserted/updated/deleted up to the * parent subtransaction level, or out to the parent PgStat_TableStatus, * as appropriate. * ---------- */ typedef struct PgStat_TableStatus { Oid t_id; /* table's OID */ bool t_shared; /* is it a shared catalog? */ struct PgStat_TableXactStatus *trans; /* lowest subxact's counts */ PgStat_TableCounts t_counts; /* event counts to be sent */ 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 0x01A5BCA7 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 timed_checkpoints; PgStat_Counter requested_checkpoints; PgStat_Counter checkpoint_write_time; /* times in milliseconds */ PgStat_Counter checkpoint_sync_time; PgStat_Counter buf_written_checkpoints; PgStat_Counter buf_written_backend; PgStat_Counter buf_fsync_backend; } PgStat_CheckpointerStats; typedef struct PgStat_StatDBEntry { PgStat_Counter n_xact_commit; PgStat_Counter n_xact_rollback; PgStat_Counter n_blocks_fetched; PgStat_Counter n_blocks_hit; PgStat_Counter n_tuples_returned; PgStat_Counter n_tuples_fetched; PgStat_Counter n_tuples_inserted; PgStat_Counter n_tuples_updated; PgStat_Counter n_tuples_deleted; TimestampTz last_autovac_time; PgStat_Counter n_conflict_tablespace; PgStat_Counter n_conflict_lock; PgStat_Counter n_conflict_snapshot; PgStat_Counter n_conflict_bufferpin; PgStat_Counter n_conflict_startup_deadlock; PgStat_Counter n_temp_files; PgStat_Counter n_temp_bytes; PgStat_Counter n_deadlocks; PgStat_Counter n_checksum_failures; TimestampTz last_checksum_failure; PgStat_Counter n_block_read_time; /* times in microseconds */ PgStat_Counter n_block_write_time; PgStat_Counter n_sessions; PgStat_Counter total_session_time; PgStat_Counter total_active_time; PgStat_Counter total_idle_in_xact_time; PgStat_Counter n_sessions_abandoned; PgStat_Counter n_sessions_fatal; PgStat_Counter n_sessions_killed; TimestampTz stat_reset_timestamp; } PgStat_StatDBEntry; typedef struct PgStat_StatFuncEntry { PgStat_Counter f_numcalls; PgStat_Counter f_total_time; /* times in microseconds */ PgStat_Counter f_self_time; } PgStat_StatFuncEntry; typedef struct PgStat_StatReplSlotEntry { /* * In PG 15 this field is unused, but not removed, to avoid changing * PGSTAT_FILE_FORMAT_ID. */ NameData slotname_unused; 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; PgStat_Counter tuples_returned; PgStat_Counter tuples_fetched; PgStat_Counter tuples_inserted; PgStat_Counter tuples_updated; PgStat_Counter tuples_deleted; PgStat_Counter tuples_hot_updated; PgStat_Counter n_live_tuples; PgStat_Counter n_dead_tuples; PgStat_Counter changes_since_analyze; PgStat_Counter inserts_since_vacuum; PgStat_Counter blocks_fetched; PgStat_Counter blocks_hit; TimestampTz vacuum_timestamp; /* user initiated vacuum */ PgStat_Counter vacuum_count; TimestampTz autovac_vacuum_timestamp; /* autovacuum initiated */ PgStat_Counter autovac_vacuum_count; TimestampTz analyze_timestamp; /* user initiated */ PgStat_Counter analyze_count; TimestampTz autovac_analyze_timestamp; /* autovacuum initiated */ PgStat_Counter autovac_analyze_count; } PgStat_StatTabEntry; 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; /* * 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 objectid); 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_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 dbid); /* * 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 funcid); extern PgStat_BackendFunctionEntry *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 dstrel, Relation srcrel); 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->t_counts.t_numscans++; \ } while (0) #define pgstat_count_heap_getnext(rel) \ do { \ if (pgstat_should_count_relation(rel)) \ (rel)->pgstat_info->t_counts.t_tuples_returned++; \ } while (0) #define pgstat_count_heap_fetch(rel) \ do { \ if (pgstat_should_count_relation(rel)) \ (rel)->pgstat_info->t_counts.t_tuples_fetched++; \ } while (0) #define pgstat_count_index_scan(rel) \ do { \ if (pgstat_should_count_relation(rel)) \ (rel)->pgstat_info->t_counts.t_numscans++; \ } while (0) #define pgstat_count_index_tuples(rel, n) \ do { \ if (pgstat_should_count_relation(rel)) \ (rel)->pgstat_info->t_counts.t_tuples_returned += (n); \ } while (0) #define pgstat_count_buffer_read(rel) \ do { \ if (pgstat_should_count_relation(rel)) \ (rel)->pgstat_info->t_counts.t_blocks_fetched++; \ } while (0) #define pgstat_count_buffer_hit(rel) \ do { \ if (pgstat_should_count_relation(rel)) \ (rel)->pgstat_info->t_counts.t_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); 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 relid); 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_WalStats PendingWalStats; #endif /* PGSTAT_H */ pg_query-4.2.3/ext/pg_query/include/portability/0000755000004100000410000000000014510636647022037 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/portability/instr_time.h0000644000004100000410000001561514510636647024375 0ustar www-datawww-data/*------------------------------------------------------------------------- * * instr_time.h * portable high-precision interval timing * * This file provides an abstraction layer to hide portability issues in * interval timing. On Unix we use clock_gettime() if available, else * gettimeofday(). On Windows, gettimeofday() gives a low-precision result * so we must use QueryPerformanceCounter() instead. These macros also give * some breathing room to use other high-precision-timing APIs. * * The basic data type is instr_time, which all callers should treat as an * opaque typedef. instr_time can store either an absolute time (of * unspecified reference time) or an interval. The operations provided * for it are: * * INSTR_TIME_IS_ZERO(t) is t equal to zero? * * INSTR_TIME_SET_ZERO(t) set t to zero (memset is acceptable too) * * INSTR_TIME_SET_CURRENT(t) set t to current time * * INSTR_TIME_SET_CURRENT_LAZY(t) set t to current time if t is zero, * evaluates to whether t changed * * INSTR_TIME_ADD(x, y) x += y * * INSTR_TIME_SUBTRACT(x, y) x -= y * * INSTR_TIME_ACCUM_DIFF(x, y, z) x += (y - z) * * INSTR_TIME_GET_DOUBLE(t) convert t to double (in seconds) * * INSTR_TIME_GET_MILLISEC(t) convert t to double (in milliseconds) * * INSTR_TIME_GET_MICROSEC(t) convert t to uint64 (in microseconds) * * Note that INSTR_TIME_SUBTRACT and INSTR_TIME_ACCUM_DIFF convert * absolute times to intervals. The INSTR_TIME_GET_xxx operations are * only useful on intervals. * * When summing multiple measurements, it's recommended to leave the * running sum in instr_time form (ie, use INSTR_TIME_ADD or * INSTR_TIME_ACCUM_DIFF) and convert to a result format only at the end. * * Beware of multiple evaluations of the macro arguments. * * * Copyright (c) 2001-2022, PostgreSQL Global Development Group * * src/include/portability/instr_time.h * *------------------------------------------------------------------------- */ #ifndef INSTR_TIME_H #define INSTR_TIME_H #ifndef WIN32 #ifdef HAVE_CLOCK_GETTIME /* Use clock_gettime() */ #include /* * The best clockid to use according to the POSIX spec is CLOCK_MONOTONIC, * since that will give reliable interval timing even in the face of changes * to the system clock. However, POSIX doesn't require implementations to * provide anything except CLOCK_REALTIME, so fall back to that if we don't * find CLOCK_MONOTONIC. * * Also, some implementations have nonstandard clockids with better properties * than CLOCK_MONOTONIC. In particular, as of macOS 10.12, Apple provides * CLOCK_MONOTONIC_RAW which is both faster to read and higher resolution than * their version of CLOCK_MONOTONIC. */ #if defined(__darwin__) && defined(CLOCK_MONOTONIC_RAW) #define PG_INSTR_CLOCK CLOCK_MONOTONIC_RAW #elif defined(CLOCK_MONOTONIC) #define PG_INSTR_CLOCK CLOCK_MONOTONIC #else #define PG_INSTR_CLOCK CLOCK_REALTIME #endif typedef struct timespec instr_time; #define INSTR_TIME_IS_ZERO(t) ((t).tv_nsec == 0 && (t).tv_sec == 0) #define INSTR_TIME_SET_ZERO(t) ((t).tv_sec = 0, (t).tv_nsec = 0) #define INSTR_TIME_SET_CURRENT(t) ((void) clock_gettime(PG_INSTR_CLOCK, &(t))) #define INSTR_TIME_ADD(x,y) \ do { \ (x).tv_sec += (y).tv_sec; \ (x).tv_nsec += (y).tv_nsec; \ /* Normalize */ \ while ((x).tv_nsec >= 1000000000) \ { \ (x).tv_nsec -= 1000000000; \ (x).tv_sec++; \ } \ } while (0) #define INSTR_TIME_SUBTRACT(x,y) \ do { \ (x).tv_sec -= (y).tv_sec; \ (x).tv_nsec -= (y).tv_nsec; \ /* Normalize */ \ while ((x).tv_nsec < 0) \ { \ (x).tv_nsec += 1000000000; \ (x).tv_sec--; \ } \ } while (0) #define INSTR_TIME_ACCUM_DIFF(x,y,z) \ do { \ (x).tv_sec += (y).tv_sec - (z).tv_sec; \ (x).tv_nsec += (y).tv_nsec - (z).tv_nsec; \ /* Normalize after each add to avoid overflow/underflow of tv_nsec */ \ while ((x).tv_nsec < 0) \ { \ (x).tv_nsec += 1000000000; \ (x).tv_sec--; \ } \ while ((x).tv_nsec >= 1000000000) \ { \ (x).tv_nsec -= 1000000000; \ (x).tv_sec++; \ } \ } while (0) #define INSTR_TIME_GET_DOUBLE(t) \ (((double) (t).tv_sec) + ((double) (t).tv_nsec) / 1000000000.0) #define INSTR_TIME_GET_MILLISEC(t) \ (((double) (t).tv_sec * 1000.0) + ((double) (t).tv_nsec) / 1000000.0) #define INSTR_TIME_GET_MICROSEC(t) \ (((uint64) (t).tv_sec * (uint64) 1000000) + (uint64) ((t).tv_nsec / 1000)) #else /* !HAVE_CLOCK_GETTIME */ /* Use gettimeofday() */ #include typedef struct timeval instr_time; #define INSTR_TIME_IS_ZERO(t) ((t).tv_usec == 0 && (t).tv_sec == 0) #define INSTR_TIME_SET_ZERO(t) ((t).tv_sec = 0, (t).tv_usec = 0) #define INSTR_TIME_SET_CURRENT(t) gettimeofday(&(t), NULL) #define INSTR_TIME_ADD(x,y) \ do { \ (x).tv_sec += (y).tv_sec; \ (x).tv_usec += (y).tv_usec; \ /* Normalize */ \ while ((x).tv_usec >= 1000000) \ { \ (x).tv_usec -= 1000000; \ (x).tv_sec++; \ } \ } while (0) #define INSTR_TIME_SUBTRACT(x,y) \ do { \ (x).tv_sec -= (y).tv_sec; \ (x).tv_usec -= (y).tv_usec; \ /* Normalize */ \ while ((x).tv_usec < 0) \ { \ (x).tv_usec += 1000000; \ (x).tv_sec--; \ } \ } while (0) #define INSTR_TIME_ACCUM_DIFF(x,y,z) \ do { \ (x).tv_sec += (y).tv_sec - (z).tv_sec; \ (x).tv_usec += (y).tv_usec - (z).tv_usec; \ /* Normalize after each add to avoid overflow/underflow of tv_usec */ \ while ((x).tv_usec < 0) \ { \ (x).tv_usec += 1000000; \ (x).tv_sec--; \ } \ while ((x).tv_usec >= 1000000) \ { \ (x).tv_usec -= 1000000; \ (x).tv_sec++; \ } \ } while (0) #define INSTR_TIME_GET_DOUBLE(t) \ (((double) (t).tv_sec) + ((double) (t).tv_usec) / 1000000.0) #define INSTR_TIME_GET_MILLISEC(t) \ (((double) (t).tv_sec * 1000.0) + ((double) (t).tv_usec) / 1000.0) #define INSTR_TIME_GET_MICROSEC(t) \ (((uint64) (t).tv_sec * (uint64) 1000000) + (uint64) (t).tv_usec) #endif /* HAVE_CLOCK_GETTIME */ #else /* WIN32 */ /* Use QueryPerformanceCounter() */ typedef LARGE_INTEGER instr_time; #define INSTR_TIME_IS_ZERO(t) ((t).QuadPart == 0) #define INSTR_TIME_SET_ZERO(t) ((t).QuadPart = 0) #define INSTR_TIME_SET_CURRENT(t) QueryPerformanceCounter(&(t)) #define INSTR_TIME_ADD(x,y) \ ((x).QuadPart += (y).QuadPart) #define INSTR_TIME_SUBTRACT(x,y) \ ((x).QuadPart -= (y).QuadPart) #define INSTR_TIME_ACCUM_DIFF(x,y,z) \ ((x).QuadPart += (y).QuadPart - (z).QuadPart) #define INSTR_TIME_GET_DOUBLE(t) \ (((double) (t).QuadPart) / GetTimerFrequency()) #define INSTR_TIME_GET_MILLISEC(t) \ (((double) (t).QuadPart * 1000.0) / GetTimerFrequency()) #define INSTR_TIME_GET_MICROSEC(t) \ ((uint64) (((double) (t).QuadPart * 1000000.0) / GetTimerFrequency())) static inline double GetTimerFrequency(void) { LARGE_INTEGER f; QueryPerformanceFrequency(&f); return (double) f.QuadPart; } #endif /* WIN32 */ /* same macro on all platforms */ #define INSTR_TIME_SET_CURRENT_LAZY(t) \ (INSTR_TIME_IS_ZERO(t) ? INSTR_TIME_SET_CURRENT(t), true : false) #endif /* INSTR_TIME_H */ pg_query-4.2.3/ext/pg_query/include/pg_query_outfuncs_conds.c0000644000004100000410000010033714510636647024614 0ustar www-datawww-data// 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_Var: OUT_NODE(Var, Var, var, VAR, Var, var); break; case T_Param: OUT_NODE(Param, Param, param, PARAM, Param, param); break; case T_Aggref: OUT_NODE(Aggref, Aggref, aggref, AGGREF, Aggref, aggref); break; case T_GroupingFunc: OUT_NODE(GroupingFunc, GroupingFunc, grouping_func, GROUPING_FUNC, GroupingFunc, grouping_func); break; case T_WindowFunc: OUT_NODE(WindowFunc, WindowFunc, window_func, WINDOW_FUNC, WindowFunc, window_func); break; case T_SubscriptingRef: OUT_NODE(SubscriptingRef, SubscriptingRef, subscripting_ref, SUBSCRIPTING_REF, SubscriptingRef, subscripting_ref); break; case T_FuncExpr: OUT_NODE(FuncExpr, FuncExpr, func_expr, FUNC_EXPR, FuncExpr, func_expr); break; case T_NamedArgExpr: OUT_NODE(NamedArgExpr, NamedArgExpr, named_arg_expr, NAMED_ARG_EXPR, NamedArgExpr, named_arg_expr); break; case T_OpExpr: OUT_NODE(OpExpr, OpExpr, op_expr, OP_EXPR, OpExpr, op_expr); break; case T_DistinctExpr: OUT_NODE(DistinctExpr, DistinctExpr, distinct_expr, DISTINCT_EXPR, DistinctExpr, distinct_expr); break; case T_NullIfExpr: OUT_NODE(NullIfExpr, NullIfExpr, null_if_expr, NULL_IF_EXPR, NullIfExpr, null_if_expr); break; case T_ScalarArrayOpExpr: OUT_NODE(ScalarArrayOpExpr, ScalarArrayOpExpr, scalar_array_op_expr, SCALAR_ARRAY_OP_EXPR, ScalarArrayOpExpr, scalar_array_op_expr); break; case T_BoolExpr: OUT_NODE(BoolExpr, BoolExpr, bool_expr, BOOL_EXPR, BoolExpr, bool_expr); break; case T_SubLink: OUT_NODE(SubLink, SubLink, sub_link, SUB_LINK, SubLink, sub_link); break; case T_SubPlan: OUT_NODE(SubPlan, SubPlan, sub_plan, SUB_PLAN, SubPlan, sub_plan); break; case T_AlternativeSubPlan: OUT_NODE(AlternativeSubPlan, AlternativeSubPlan, alternative_sub_plan, ALTERNATIVE_SUB_PLAN, AlternativeSubPlan, alternative_sub_plan); break; case T_FieldSelect: OUT_NODE(FieldSelect, FieldSelect, field_select, FIELD_SELECT, FieldSelect, field_select); break; case T_FieldStore: OUT_NODE(FieldStore, FieldStore, field_store, FIELD_STORE, FieldStore, field_store); break; case T_RelabelType: OUT_NODE(RelabelType, RelabelType, relabel_type, RELABEL_TYPE, RelabelType, relabel_type); break; case T_CoerceViaIO: OUT_NODE(CoerceViaIO, CoerceViaIO, coerce_via_io, COERCE_VIA_IO, CoerceViaIO, coerce_via_io); break; case T_ArrayCoerceExpr: OUT_NODE(ArrayCoerceExpr, ArrayCoerceExpr, array_coerce_expr, ARRAY_COERCE_EXPR, ArrayCoerceExpr, array_coerce_expr); break; case T_ConvertRowtypeExpr: OUT_NODE(ConvertRowtypeExpr, ConvertRowtypeExpr, convert_rowtype_expr, CONVERT_ROWTYPE_EXPR, ConvertRowtypeExpr, convert_rowtype_expr); break; case T_CollateExpr: OUT_NODE(CollateExpr, CollateExpr, collate_expr, COLLATE_EXPR, CollateExpr, collate_expr); break; case T_CaseExpr: OUT_NODE(CaseExpr, CaseExpr, case_expr, CASE_EXPR, CaseExpr, case_expr); break; case T_CaseWhen: OUT_NODE(CaseWhen, CaseWhen, case_when, CASE_WHEN, CaseWhen, case_when); break; case T_CaseTestExpr: OUT_NODE(CaseTestExpr, CaseTestExpr, case_test_expr, CASE_TEST_EXPR, CaseTestExpr, case_test_expr); break; case T_ArrayExpr: OUT_NODE(ArrayExpr, ArrayExpr, array_expr, ARRAY_EXPR, ArrayExpr, array_expr); break; case T_RowExpr: OUT_NODE(RowExpr, RowExpr, row_expr, ROW_EXPR, RowExpr, row_expr); break; case T_RowCompareExpr: OUT_NODE(RowCompareExpr, RowCompareExpr, row_compare_expr, ROW_COMPARE_EXPR, RowCompareExpr, row_compare_expr); break; case T_CoalesceExpr: OUT_NODE(CoalesceExpr, CoalesceExpr, coalesce_expr, COALESCE_EXPR, CoalesceExpr, coalesce_expr); break; case T_MinMaxExpr: OUT_NODE(MinMaxExpr, MinMaxExpr, min_max_expr, MIN_MAX_EXPR, MinMaxExpr, min_max_expr); break; case T_SQLValueFunction: OUT_NODE(SQLValueFunction, SQLValueFunction, sqlvalue_function, SQLVALUE_FUNCTION, SQLValueFunction, sqlvalue_function); break; case T_XmlExpr: OUT_NODE(XmlExpr, XmlExpr, xml_expr, XML_EXPR, XmlExpr, xml_expr); break; case T_NullTest: OUT_NODE(NullTest, NullTest, null_test, NULL_TEST, NullTest, null_test); break; case T_BooleanTest: OUT_NODE(BooleanTest, BooleanTest, boolean_test, BOOLEAN_TEST, BooleanTest, boolean_test); break; case T_CoerceToDomain: OUT_NODE(CoerceToDomain, CoerceToDomain, coerce_to_domain, COERCE_TO_DOMAIN, CoerceToDomain, coerce_to_domain); break; case T_CoerceToDomainValue: OUT_NODE(CoerceToDomainValue, CoerceToDomainValue, coerce_to_domain_value, COERCE_TO_DOMAIN_VALUE, CoerceToDomainValue, coerce_to_domain_value); break; case T_SetToDefault: OUT_NODE(SetToDefault, SetToDefault, set_to_default, SET_TO_DEFAULT, SetToDefault, set_to_default); break; case T_CurrentOfExpr: OUT_NODE(CurrentOfExpr, CurrentOfExpr, current_of_expr, CURRENT_OF_EXPR, CurrentOfExpr, current_of_expr); break; case T_NextValueExpr: OUT_NODE(NextValueExpr, NextValueExpr, next_value_expr, NEXT_VALUE_EXPR, NextValueExpr, next_value_expr); break; case T_InferenceElem: OUT_NODE(InferenceElem, InferenceElem, inference_elem, INFERENCE_ELEM, InferenceElem, inference_elem); break; case T_TargetEntry: OUT_NODE(TargetEntry, TargetEntry, target_entry, TARGET_ENTRY, TargetEntry, target_entry); break; case T_RangeTblRef: OUT_NODE(RangeTblRef, RangeTblRef, range_tbl_ref, RANGE_TBL_REF, RangeTblRef, range_tbl_ref); break; case T_JoinExpr: OUT_NODE(JoinExpr, JoinExpr, join_expr, JOIN_EXPR, JoinExpr, join_expr); break; case T_FromExpr: OUT_NODE(FromExpr, FromExpr, from_expr, FROM_EXPR, FromExpr, from_expr); break; case T_OnConflictExpr: OUT_NODE(OnConflictExpr, OnConflictExpr, on_conflict_expr, ON_CONFLICT_EXPR, OnConflictExpr, on_conflict_expr); break; case T_IntoClause: OUT_NODE(IntoClause, IntoClause, into_clause, INTO_CLAUSE, IntoClause, into_clause); break; case T_MergeAction: OUT_NODE(MergeAction, MergeAction, merge_action, MERGE_ACTION, MergeAction, merge_action); break; case T_RawStmt: OUT_NODE(RawStmt, RawStmt, raw_stmt, RAW_STMT, RawStmt, raw_stmt); break; case T_Query: OUT_NODE(Query, Query, query, QUERY, Query, query); break; case T_InsertStmt: OUT_NODE(InsertStmt, InsertStmt, insert_stmt, INSERT_STMT, InsertStmt, insert_stmt); break; case T_DeleteStmt: OUT_NODE(DeleteStmt, DeleteStmt, delete_stmt, DELETE_STMT, DeleteStmt, delete_stmt); break; case T_UpdateStmt: OUT_NODE(UpdateStmt, UpdateStmt, update_stmt, UPDATE_STMT, UpdateStmt, update_stmt); break; case T_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_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_AlterTableStmt: OUT_NODE(AlterTableStmt, AlterTableStmt, alter_table_stmt, ALTER_TABLE_STMT, AlterTableStmt, alter_table_stmt); break; case T_AlterTableCmd: OUT_NODE(AlterTableCmd, AlterTableCmd, alter_table_cmd, ALTER_TABLE_CMD, AlterTableCmd, alter_table_cmd); break; case T_AlterDomainStmt: OUT_NODE(AlterDomainStmt, AlterDomainStmt, alter_domain_stmt, ALTER_DOMAIN_STMT, AlterDomainStmt, alter_domain_stmt); break; case T_SetOperationStmt: OUT_NODE(SetOperationStmt, SetOperationStmt, set_operation_stmt, SET_OPERATION_STMT, SetOperationStmt, set_operation_stmt); break; case T_GrantStmt: OUT_NODE(GrantStmt, GrantStmt, grant_stmt, GRANT_STMT, GrantStmt, grant_stmt); break; case T_GrantRoleStmt: OUT_NODE(GrantRoleStmt, GrantRoleStmt, grant_role_stmt, GRANT_ROLE_STMT, GrantRoleStmt, grant_role_stmt); break; case T_AlterDefaultPrivilegesStmt: OUT_NODE(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt, alter_default_privileges_stmt, ALTER_DEFAULT_PRIVILEGES_STMT, AlterDefaultPrivilegesStmt, alter_default_privileges_stmt); break; case T_ClosePortalStmt: OUT_NODE(ClosePortalStmt, ClosePortalStmt, close_portal_stmt, CLOSE_PORTAL_STMT, ClosePortalStmt, close_portal_stmt); break; case T_ClusterStmt: OUT_NODE(ClusterStmt, ClusterStmt, cluster_stmt, CLUSTER_STMT, ClusterStmt, cluster_stmt); break; case T_CopyStmt: OUT_NODE(CopyStmt, CopyStmt, copy_stmt, COPY_STMT, CopyStmt, copy_stmt); break; case T_CreateStmt: OUT_NODE(CreateStmt, CreateStmt, create_stmt, CREATE_STMT, CreateStmt, create_stmt); break; case T_DefineStmt: OUT_NODE(DefineStmt, DefineStmt, define_stmt, DEFINE_STMT, DefineStmt, define_stmt); break; case T_DropStmt: OUT_NODE(DropStmt, DropStmt, drop_stmt, DROP_STMT, DropStmt, drop_stmt); break; case T_TruncateStmt: OUT_NODE(TruncateStmt, TruncateStmt, truncate_stmt, TRUNCATE_STMT, TruncateStmt, truncate_stmt); break; case T_CommentStmt: OUT_NODE(CommentStmt, CommentStmt, comment_stmt, COMMENT_STMT, CommentStmt, comment_stmt); break; case T_FetchStmt: OUT_NODE(FetchStmt, FetchStmt, fetch_stmt, FETCH_STMT, FetchStmt, fetch_stmt); break; case T_IndexStmt: OUT_NODE(IndexStmt, IndexStmt, index_stmt, INDEX_STMT, IndexStmt, index_stmt); break; case T_CreateFunctionStmt: OUT_NODE(CreateFunctionStmt, CreateFunctionStmt, create_function_stmt, CREATE_FUNCTION_STMT, CreateFunctionStmt, create_function_stmt); break; case T_AlterFunctionStmt: OUT_NODE(AlterFunctionStmt, AlterFunctionStmt, alter_function_stmt, ALTER_FUNCTION_STMT, AlterFunctionStmt, alter_function_stmt); break; case T_DoStmt: OUT_NODE(DoStmt, DoStmt, do_stmt, DO_STMT, DoStmt, do_stmt); break; case T_RenameStmt: OUT_NODE(RenameStmt, RenameStmt, rename_stmt, RENAME_STMT, RenameStmt, rename_stmt); break; case T_RuleStmt: OUT_NODE(RuleStmt, RuleStmt, rule_stmt, RULE_STMT, RuleStmt, rule_stmt); break; case T_NotifyStmt: OUT_NODE(NotifyStmt, NotifyStmt, notify_stmt, NOTIFY_STMT, NotifyStmt, notify_stmt); break; case T_ListenStmt: OUT_NODE(ListenStmt, ListenStmt, listen_stmt, LISTEN_STMT, ListenStmt, listen_stmt); break; case T_UnlistenStmt: OUT_NODE(UnlistenStmt, UnlistenStmt, unlisten_stmt, UNLISTEN_STMT, UnlistenStmt, unlisten_stmt); break; case T_TransactionStmt: OUT_NODE(TransactionStmt, TransactionStmt, transaction_stmt, TRANSACTION_STMT, TransactionStmt, transaction_stmt); break; case T_ViewStmt: OUT_NODE(ViewStmt, ViewStmt, view_stmt, VIEW_STMT, ViewStmt, view_stmt); break; case T_LoadStmt: OUT_NODE(LoadStmt, LoadStmt, load_stmt, LOAD_STMT, LoadStmt, load_stmt); break; case T_CreateDomainStmt: OUT_NODE(CreateDomainStmt, CreateDomainStmt, create_domain_stmt, CREATE_DOMAIN_STMT, CreateDomainStmt, create_domain_stmt); break; case T_CreatedbStmt: OUT_NODE(CreatedbStmt, CreatedbStmt, createdb_stmt, CREATEDB_STMT, CreatedbStmt, createdb_stmt); break; case T_DropdbStmt: OUT_NODE(DropdbStmt, DropdbStmt, dropdb_stmt, DROPDB_STMT, DropdbStmt, dropdb_stmt); break; case T_VacuumStmt: OUT_NODE(VacuumStmt, VacuumStmt, vacuum_stmt, VACUUM_STMT, VacuumStmt, vacuum_stmt); break; case T_ExplainStmt: OUT_NODE(ExplainStmt, ExplainStmt, explain_stmt, EXPLAIN_STMT, ExplainStmt, explain_stmt); break; case T_CreateTableAsStmt: OUT_NODE(CreateTableAsStmt, CreateTableAsStmt, create_table_as_stmt, CREATE_TABLE_AS_STMT, CreateTableAsStmt, create_table_as_stmt); break; case T_CreateSeqStmt: OUT_NODE(CreateSeqStmt, CreateSeqStmt, create_seq_stmt, CREATE_SEQ_STMT, CreateSeqStmt, create_seq_stmt); break; case T_AlterSeqStmt: OUT_NODE(AlterSeqStmt, AlterSeqStmt, alter_seq_stmt, ALTER_SEQ_STMT, AlterSeqStmt, alter_seq_stmt); break; case T_VariableSetStmt: OUT_NODE(VariableSetStmt, VariableSetStmt, variable_set_stmt, VARIABLE_SET_STMT, VariableSetStmt, variable_set_stmt); break; case T_VariableShowStmt: OUT_NODE(VariableShowStmt, VariableShowStmt, variable_show_stmt, VARIABLE_SHOW_STMT, VariableShowStmt, variable_show_stmt); break; case T_DiscardStmt: OUT_NODE(DiscardStmt, DiscardStmt, discard_stmt, DISCARD_STMT, DiscardStmt, discard_stmt); break; case T_CreateTrigStmt: OUT_NODE(CreateTrigStmt, CreateTrigStmt, create_trig_stmt, CREATE_TRIG_STMT, CreateTrigStmt, create_trig_stmt); break; case T_CreatePLangStmt: OUT_NODE(CreatePLangStmt, CreatePLangStmt, create_plang_stmt, CREATE_PLANG_STMT, CreatePLangStmt, create_plang_stmt); break; case T_CreateRoleStmt: OUT_NODE(CreateRoleStmt, CreateRoleStmt, create_role_stmt, CREATE_ROLE_STMT, CreateRoleStmt, create_role_stmt); break; case T_AlterRoleStmt: OUT_NODE(AlterRoleStmt, AlterRoleStmt, alter_role_stmt, ALTER_ROLE_STMT, AlterRoleStmt, alter_role_stmt); break; case T_DropRoleStmt: OUT_NODE(DropRoleStmt, DropRoleStmt, drop_role_stmt, DROP_ROLE_STMT, DropRoleStmt, drop_role_stmt); break; case T_LockStmt: OUT_NODE(LockStmt, LockStmt, lock_stmt, LOCK_STMT, LockStmt, lock_stmt); break; case T_ConstraintsSetStmt: OUT_NODE(ConstraintsSetStmt, ConstraintsSetStmt, constraints_set_stmt, CONSTRAINTS_SET_STMT, ConstraintsSetStmt, constraints_set_stmt); break; case T_ReindexStmt: OUT_NODE(ReindexStmt, ReindexStmt, reindex_stmt, REINDEX_STMT, ReindexStmt, reindex_stmt); break; case T_CheckPointStmt: OUT_NODE(CheckPointStmt, CheckPointStmt, check_point_stmt, CHECK_POINT_STMT, CheckPointStmt, check_point_stmt); break; case T_CreateSchemaStmt: OUT_NODE(CreateSchemaStmt, CreateSchemaStmt, create_schema_stmt, CREATE_SCHEMA_STMT, CreateSchemaStmt, create_schema_stmt); break; case T_AlterDatabaseStmt: OUT_NODE(AlterDatabaseStmt, AlterDatabaseStmt, alter_database_stmt, ALTER_DATABASE_STMT, AlterDatabaseStmt, alter_database_stmt); break; case T_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_AlterRoleSetStmt: OUT_NODE(AlterRoleSetStmt, AlterRoleSetStmt, alter_role_set_stmt, ALTER_ROLE_SET_STMT, AlterRoleSetStmt, alter_role_set_stmt); break; case T_CreateConversionStmt: OUT_NODE(CreateConversionStmt, CreateConversionStmt, create_conversion_stmt, CREATE_CONVERSION_STMT, CreateConversionStmt, create_conversion_stmt); break; case T_CreateCastStmt: OUT_NODE(CreateCastStmt, CreateCastStmt, create_cast_stmt, CREATE_CAST_STMT, CreateCastStmt, create_cast_stmt); break; case T_CreateOpClassStmt: OUT_NODE(CreateOpClassStmt, CreateOpClassStmt, create_op_class_stmt, CREATE_OP_CLASS_STMT, CreateOpClassStmt, create_op_class_stmt); break; case T_CreateOpFamilyStmt: OUT_NODE(CreateOpFamilyStmt, CreateOpFamilyStmt, create_op_family_stmt, CREATE_OP_FAMILY_STMT, CreateOpFamilyStmt, create_op_family_stmt); break; case T_AlterOpFamilyStmt: OUT_NODE(AlterOpFamilyStmt, AlterOpFamilyStmt, alter_op_family_stmt, ALTER_OP_FAMILY_STMT, AlterOpFamilyStmt, alter_op_family_stmt); break; case T_PrepareStmt: OUT_NODE(PrepareStmt, PrepareStmt, prepare_stmt, PREPARE_STMT, PrepareStmt, prepare_stmt); break; case T_ExecuteStmt: OUT_NODE(ExecuteStmt, ExecuteStmt, execute_stmt, EXECUTE_STMT, ExecuteStmt, execute_stmt); break; case T_DeallocateStmt: OUT_NODE(DeallocateStmt, DeallocateStmt, deallocate_stmt, DEALLOCATE_STMT, DeallocateStmt, deallocate_stmt); break; case T_DeclareCursorStmt: OUT_NODE(DeclareCursorStmt, DeclareCursorStmt, declare_cursor_stmt, DECLARE_CURSOR_STMT, DeclareCursorStmt, declare_cursor_stmt); break; case T_CreateTableSpaceStmt: OUT_NODE(CreateTableSpaceStmt, CreateTableSpaceStmt, create_table_space_stmt, CREATE_TABLE_SPACE_STMT, CreateTableSpaceStmt, create_table_space_stmt); break; case T_DropTableSpaceStmt: OUT_NODE(DropTableSpaceStmt, DropTableSpaceStmt, drop_table_space_stmt, DROP_TABLE_SPACE_STMT, DropTableSpaceStmt, drop_table_space_stmt); break; case T_AlterObjectDependsStmt: OUT_NODE(AlterObjectDependsStmt, AlterObjectDependsStmt, alter_object_depends_stmt, ALTER_OBJECT_DEPENDS_STMT, AlterObjectDependsStmt, alter_object_depends_stmt); break; case T_AlterObjectSchemaStmt: OUT_NODE(AlterObjectSchemaStmt, AlterObjectSchemaStmt, alter_object_schema_stmt, ALTER_OBJECT_SCHEMA_STMT, AlterObjectSchemaStmt, alter_object_schema_stmt); break; case T_AlterOwnerStmt: OUT_NODE(AlterOwnerStmt, AlterOwnerStmt, alter_owner_stmt, ALTER_OWNER_STMT, AlterOwnerStmt, alter_owner_stmt); break; case T_AlterOperatorStmt: OUT_NODE(AlterOperatorStmt, AlterOperatorStmt, alter_operator_stmt, ALTER_OPERATOR_STMT, AlterOperatorStmt, alter_operator_stmt); break; case T_AlterTypeStmt: OUT_NODE(AlterTypeStmt, AlterTypeStmt, alter_type_stmt, ALTER_TYPE_STMT, AlterTypeStmt, alter_type_stmt); break; case T_DropOwnedStmt: OUT_NODE(DropOwnedStmt, DropOwnedStmt, drop_owned_stmt, DROP_OWNED_STMT, DropOwnedStmt, drop_owned_stmt); break; case T_ReassignOwnedStmt: OUT_NODE(ReassignOwnedStmt, ReassignOwnedStmt, reassign_owned_stmt, REASSIGN_OWNED_STMT, ReassignOwnedStmt, reassign_owned_stmt); break; case T_CompositeTypeStmt: OUT_NODE(CompositeTypeStmt, CompositeTypeStmt, composite_type_stmt, COMPOSITE_TYPE_STMT, CompositeTypeStmt, composite_type_stmt); break; case T_CreateEnumStmt: OUT_NODE(CreateEnumStmt, CreateEnumStmt, create_enum_stmt, CREATE_ENUM_STMT, CreateEnumStmt, create_enum_stmt); break; case T_CreateRangeStmt: OUT_NODE(CreateRangeStmt, CreateRangeStmt, create_range_stmt, CREATE_RANGE_STMT, CreateRangeStmt, create_range_stmt); break; case T_AlterEnumStmt: OUT_NODE(AlterEnumStmt, AlterEnumStmt, alter_enum_stmt, ALTER_ENUM_STMT, AlterEnumStmt, alter_enum_stmt); break; case T_AlterTSDictionaryStmt: OUT_NODE(AlterTSDictionaryStmt, AlterTSDictionaryStmt, alter_tsdictionary_stmt, ALTER_TSDICTIONARY_STMT, AlterTSDictionaryStmt, alter_tsdictionary_stmt); break; case T_AlterTSConfigurationStmt: OUT_NODE(AlterTSConfigurationStmt, AlterTSConfigurationStmt, alter_tsconfiguration_stmt, ALTER_TSCONFIGURATION_STMT, AlterTSConfigurationStmt, alter_tsconfiguration_stmt); break; case T_CreateFdwStmt: OUT_NODE(CreateFdwStmt, CreateFdwStmt, create_fdw_stmt, CREATE_FDW_STMT, CreateFdwStmt, create_fdw_stmt); break; case T_AlterFdwStmt: OUT_NODE(AlterFdwStmt, AlterFdwStmt, alter_fdw_stmt, ALTER_FDW_STMT, AlterFdwStmt, alter_fdw_stmt); break; case T_CreateForeignServerStmt: OUT_NODE(CreateForeignServerStmt, CreateForeignServerStmt, create_foreign_server_stmt, CREATE_FOREIGN_SERVER_STMT, CreateForeignServerStmt, create_foreign_server_stmt); break; case T_AlterForeignServerStmt: OUT_NODE(AlterForeignServerStmt, AlterForeignServerStmt, alter_foreign_server_stmt, ALTER_FOREIGN_SERVER_STMT, AlterForeignServerStmt, alter_foreign_server_stmt); break; case T_CreateUserMappingStmt: OUT_NODE(CreateUserMappingStmt, CreateUserMappingStmt, create_user_mapping_stmt, CREATE_USER_MAPPING_STMT, CreateUserMappingStmt, create_user_mapping_stmt); break; case T_AlterUserMappingStmt: OUT_NODE(AlterUserMappingStmt, AlterUserMappingStmt, alter_user_mapping_stmt, ALTER_USER_MAPPING_STMT, AlterUserMappingStmt, alter_user_mapping_stmt); break; case T_DropUserMappingStmt: OUT_NODE(DropUserMappingStmt, DropUserMappingStmt, drop_user_mapping_stmt, DROP_USER_MAPPING_STMT, DropUserMappingStmt, drop_user_mapping_stmt); break; case T_AlterTableSpaceOptionsStmt: OUT_NODE(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt, alter_table_space_options_stmt, ALTER_TABLE_SPACE_OPTIONS_STMT, AlterTableSpaceOptionsStmt, alter_table_space_options_stmt); break; case T_AlterTableMoveAllStmt: OUT_NODE(AlterTableMoveAllStmt, AlterTableMoveAllStmt, alter_table_move_all_stmt, ALTER_TABLE_MOVE_ALL_STMT, AlterTableMoveAllStmt, alter_table_move_all_stmt); break; case T_SecLabelStmt: OUT_NODE(SecLabelStmt, SecLabelStmt, sec_label_stmt, SEC_LABEL_STMT, SecLabelStmt, sec_label_stmt); break; case T_CreateForeignTableStmt: OUT_NODE(CreateForeignTableStmt, CreateForeignTableStmt, create_foreign_table_stmt, CREATE_FOREIGN_TABLE_STMT, CreateForeignTableStmt, create_foreign_table_stmt); break; case T_ImportForeignSchemaStmt: OUT_NODE(ImportForeignSchemaStmt, ImportForeignSchemaStmt, import_foreign_schema_stmt, IMPORT_FOREIGN_SCHEMA_STMT, ImportForeignSchemaStmt, import_foreign_schema_stmt); break; case T_CreateExtensionStmt: OUT_NODE(CreateExtensionStmt, CreateExtensionStmt, create_extension_stmt, CREATE_EXTENSION_STMT, CreateExtensionStmt, create_extension_stmt); break; case T_AlterExtensionStmt: OUT_NODE(AlterExtensionStmt, AlterExtensionStmt, alter_extension_stmt, ALTER_EXTENSION_STMT, AlterExtensionStmt, alter_extension_stmt); break; case T_AlterExtensionContentsStmt: OUT_NODE(AlterExtensionContentsStmt, AlterExtensionContentsStmt, alter_extension_contents_stmt, ALTER_EXTENSION_CONTENTS_STMT, AlterExtensionContentsStmt, alter_extension_contents_stmt); break; case T_CreateEventTrigStmt: OUT_NODE(CreateEventTrigStmt, CreateEventTrigStmt, create_event_trig_stmt, CREATE_EVENT_TRIG_STMT, CreateEventTrigStmt, create_event_trig_stmt); break; case T_AlterEventTrigStmt: OUT_NODE(AlterEventTrigStmt, AlterEventTrigStmt, alter_event_trig_stmt, ALTER_EVENT_TRIG_STMT, AlterEventTrigStmt, alter_event_trig_stmt); break; case T_RefreshMatViewStmt: OUT_NODE(RefreshMatViewStmt, RefreshMatViewStmt, refresh_mat_view_stmt, REFRESH_MAT_VIEW_STMT, RefreshMatViewStmt, refresh_mat_view_stmt); break; case T_ReplicaIdentityStmt: OUT_NODE(ReplicaIdentityStmt, ReplicaIdentityStmt, replica_identity_stmt, REPLICA_IDENTITY_STMT, ReplicaIdentityStmt, replica_identity_stmt); break; case T_AlterSystemStmt: OUT_NODE(AlterSystemStmt, AlterSystemStmt, alter_system_stmt, ALTER_SYSTEM_STMT, AlterSystemStmt, alter_system_stmt); break; case T_CreatePolicyStmt: OUT_NODE(CreatePolicyStmt, CreatePolicyStmt, create_policy_stmt, CREATE_POLICY_STMT, CreatePolicyStmt, create_policy_stmt); break; case T_AlterPolicyStmt: OUT_NODE(AlterPolicyStmt, AlterPolicyStmt, alter_policy_stmt, ALTER_POLICY_STMT, AlterPolicyStmt, alter_policy_stmt); break; case T_CreateTransformStmt: OUT_NODE(CreateTransformStmt, CreateTransformStmt, create_transform_stmt, CREATE_TRANSFORM_STMT, CreateTransformStmt, create_transform_stmt); break; case T_CreateAmStmt: OUT_NODE(CreateAmStmt, CreateAmStmt, create_am_stmt, CREATE_AM_STMT, CreateAmStmt, create_am_stmt); break; case T_CreatePublicationStmt: OUT_NODE(CreatePublicationStmt, CreatePublicationStmt, create_publication_stmt, CREATE_PUBLICATION_STMT, CreatePublicationStmt, create_publication_stmt); break; case T_AlterPublicationStmt: OUT_NODE(AlterPublicationStmt, AlterPublicationStmt, alter_publication_stmt, ALTER_PUBLICATION_STMT, AlterPublicationStmt, alter_publication_stmt); break; case T_CreateSubscriptionStmt: OUT_NODE(CreateSubscriptionStmt, CreateSubscriptionStmt, create_subscription_stmt, CREATE_SUBSCRIPTION_STMT, CreateSubscriptionStmt, create_subscription_stmt); break; case T_AlterSubscriptionStmt: OUT_NODE(AlterSubscriptionStmt, AlterSubscriptionStmt, alter_subscription_stmt, ALTER_SUBSCRIPTION_STMT, AlterSubscriptionStmt, alter_subscription_stmt); break; case T_DropSubscriptionStmt: OUT_NODE(DropSubscriptionStmt, DropSubscriptionStmt, drop_subscription_stmt, DROP_SUBSCRIPTION_STMT, DropSubscriptionStmt, drop_subscription_stmt); break; case T_CreateStatsStmt: OUT_NODE(CreateStatsStmt, CreateStatsStmt, create_stats_stmt, CREATE_STATS_STMT, CreateStatsStmt, create_stats_stmt); break; case T_AlterCollationStmt: OUT_NODE(AlterCollationStmt, AlterCollationStmt, alter_collation_stmt, ALTER_COLLATION_STMT, AlterCollationStmt, alter_collation_stmt); break; case T_CallStmt: OUT_NODE(CallStmt, CallStmt, call_stmt, CALL_STMT, CallStmt, call_stmt); break; case T_AlterStatsStmt: OUT_NODE(AlterStatsStmt, AlterStatsStmt, alter_stats_stmt, ALTER_STATS_STMT, AlterStatsStmt, alter_stats_stmt); break; case T_A_Expr: OUT_NODE(A_Expr, AExpr, a__expr, A_EXPR, A_Expr, a_expr); break; case T_ColumnRef: OUT_NODE(ColumnRef, ColumnRef, column_ref, COLUMN_REF, ColumnRef, column_ref); break; case T_ParamRef: OUT_NODE(ParamRef, ParamRef, param_ref, PARAM_REF, ParamRef, param_ref); break; case T_FuncCall: OUT_NODE(FuncCall, FuncCall, func_call, FUNC_CALL, FuncCall, func_call); break; case T_A_Star: OUT_NODE(A_Star, AStar, a__star, A_STAR, A_Star, a_star); break; case T_A_Indices: OUT_NODE(A_Indices, AIndices, a__indices, A_INDICES, A_Indices, a_indices); break; case T_A_Indirection: OUT_NODE(A_Indirection, AIndirection, a__indirection, A_INDIRECTION, A_Indirection, a_indirection); break; case T_A_ArrayExpr: OUT_NODE(A_ArrayExpr, AArrayExpr, a__array_expr, A_ARRAY_EXPR, A_ArrayExpr, a_array_expr); break; case T_ResTarget: OUT_NODE(ResTarget, ResTarget, res_target, RES_TARGET, ResTarget, res_target); break; case T_MultiAssignRef: OUT_NODE(MultiAssignRef, MultiAssignRef, multi_assign_ref, MULTI_ASSIGN_REF, MultiAssignRef, multi_assign_ref); break; case T_TypeCast: OUT_NODE(TypeCast, TypeCast, type_cast, TYPE_CAST, TypeCast, type_cast); break; case T_CollateClause: OUT_NODE(CollateClause, CollateClause, collate_clause, COLLATE_CLAUSE, CollateClause, collate_clause); break; case T_SortBy: OUT_NODE(SortBy, SortBy, sort_by, SORT_BY, SortBy, sort_by); break; case T_WindowDef: OUT_NODE(WindowDef, WindowDef, window_def, WINDOW_DEF, WindowDef, window_def); break; case T_RangeSubselect: OUT_NODE(RangeSubselect, RangeSubselect, range_subselect, RANGE_SUBSELECT, RangeSubselect, range_subselect); break; case T_RangeFunction: OUT_NODE(RangeFunction, RangeFunction, range_function, RANGE_FUNCTION, RangeFunction, range_function); break; case T_RangeTableSample: OUT_NODE(RangeTableSample, RangeTableSample, range_table_sample, RANGE_TABLE_SAMPLE, RangeTableSample, range_table_sample); break; case T_RangeTableFunc: OUT_NODE(RangeTableFunc, RangeTableFunc, range_table_func, RANGE_TABLE_FUNC, RangeTableFunc, range_table_func); break; case T_RangeTableFuncCol: OUT_NODE(RangeTableFuncCol, RangeTableFuncCol, range_table_func_col, RANGE_TABLE_FUNC_COL, RangeTableFuncCol, range_table_func_col); break; case T_TypeName: OUT_NODE(TypeName, TypeName, type_name, TYPE_NAME, TypeName, type_name); break; case T_ColumnDef: OUT_NODE(ColumnDef, ColumnDef, column_def, COLUMN_DEF, ColumnDef, column_def); break; case T_IndexElem: OUT_NODE(IndexElem, IndexElem, index_elem, INDEX_ELEM, IndexElem, index_elem); break; case T_StatsElem: OUT_NODE(StatsElem, StatsElem, stats_elem, STATS_ELEM, StatsElem, stats_elem); break; case T_Constraint: OUT_NODE(Constraint, Constraint, constraint, CONSTRAINT, Constraint, constraint); break; case T_DefElem: OUT_NODE(DefElem, DefElem, def_elem, DEF_ELEM, DefElem, def_elem); break; case T_RangeTblEntry: OUT_NODE(RangeTblEntry, RangeTblEntry, range_tbl_entry, RANGE_TBL_ENTRY, RangeTblEntry, range_tbl_entry); break; case T_RangeTblFunction: OUT_NODE(RangeTblFunction, RangeTblFunction, range_tbl_function, RANGE_TBL_FUNCTION, RangeTblFunction, range_tbl_function); break; case T_TableSampleClause: OUT_NODE(TableSampleClause, TableSampleClause, table_sample_clause, TABLE_SAMPLE_CLAUSE, TableSampleClause, table_sample_clause); break; case T_WithCheckOption: OUT_NODE(WithCheckOption, WithCheckOption, with_check_option, WITH_CHECK_OPTION, WithCheckOption, with_check_option); break; case T_SortGroupClause: OUT_NODE(SortGroupClause, SortGroupClause, sort_group_clause, SORT_GROUP_CLAUSE, SortGroupClause, sort_group_clause); break; case T_GroupingSet: OUT_NODE(GroupingSet, GroupingSet, grouping_set, GROUPING_SET, GroupingSet, grouping_set); break; case T_WindowClause: OUT_NODE(WindowClause, WindowClause, window_clause, WINDOW_CLAUSE, WindowClause, window_clause); break; case T_ObjectWithArgs: OUT_NODE(ObjectWithArgs, ObjectWithArgs, object_with_args, OBJECT_WITH_ARGS, ObjectWithArgs, object_with_args); break; case T_AccessPriv: OUT_NODE(AccessPriv, AccessPriv, access_priv, ACCESS_PRIV, AccessPriv, access_priv); break; case T_CreateOpClassItem: OUT_NODE(CreateOpClassItem, CreateOpClassItem, create_op_class_item, CREATE_OP_CLASS_ITEM, CreateOpClassItem, create_op_class_item); break; case T_TableLikeClause: OUT_NODE(TableLikeClause, TableLikeClause, table_like_clause, TABLE_LIKE_CLAUSE, TableLikeClause, table_like_clause); break; case T_FunctionParameter: OUT_NODE(FunctionParameter, FunctionParameter, function_parameter, FUNCTION_PARAMETER, FunctionParameter, function_parameter); break; case T_LockingClause: OUT_NODE(LockingClause, LockingClause, locking_clause, LOCKING_CLAUSE, LockingClause, locking_clause); break; case T_RowMarkClause: OUT_NODE(RowMarkClause, RowMarkClause, row_mark_clause, ROW_MARK_CLAUSE, RowMarkClause, row_mark_clause); break; case T_XmlSerialize: OUT_NODE(XmlSerialize, XmlSerialize, xml_serialize, XML_SERIALIZE, XmlSerialize, xml_serialize); break; case T_WithClause: OUT_NODE(WithClause, WithClause, with_clause, WITH_CLAUSE, WithClause, with_clause); break; case T_InferClause: OUT_NODE(InferClause, InferClause, infer_clause, INFER_CLAUSE, InferClause, infer_clause); break; case T_OnConflictClause: OUT_NODE(OnConflictClause, OnConflictClause, on_conflict_clause, ON_CONFLICT_CLAUSE, OnConflictClause, on_conflict_clause); break; case T_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_RoleSpec: OUT_NODE(RoleSpec, RoleSpec, role_spec, ROLE_SPEC, RoleSpec, role_spec); break; case T_TriggerTransition: OUT_NODE(TriggerTransition, TriggerTransition, trigger_transition, TRIGGER_TRANSITION, TriggerTransition, trigger_transition); break; case T_PartitionElem: OUT_NODE(PartitionElem, PartitionElem, partition_elem, PARTITION_ELEM, PartitionElem, partition_elem); break; case T_PartitionSpec: OUT_NODE(PartitionSpec, PartitionSpec, partition_spec, PARTITION_SPEC, PartitionSpec, partition_spec); break; case T_PartitionBoundSpec: OUT_NODE(PartitionBoundSpec, PartitionBoundSpec, partition_bound_spec, PARTITION_BOUND_SPEC, PartitionBoundSpec, partition_bound_spec); break; case T_PartitionRangeDatum: OUT_NODE(PartitionRangeDatum, PartitionRangeDatum, partition_range_datum, PARTITION_RANGE_DATUM, PartitionRangeDatum, partition_range_datum); break; case T_PartitionCmd: OUT_NODE(PartitionCmd, PartitionCmd, partition_cmd, PARTITION_CMD, PartitionCmd, partition_cmd); break; case T_VacuumRelation: OUT_NODE(VacuumRelation, VacuumRelation, vacuum_relation, VACUUM_RELATION, VacuumRelation, vacuum_relation); break; case T_PublicationObjSpec: OUT_NODE(PublicationObjSpec, PublicationObjSpec, publication_obj_spec, PUBLICATION_OBJ_SPEC, PublicationObjSpec, publication_obj_spec); break; case T_PublicationTable: OUT_NODE(PublicationTable, PublicationTable, publication_table, PUBLICATION_TABLE, PublicationTable, publication_table); break; case T_InlineCodeBlock: OUT_NODE(InlineCodeBlock, InlineCodeBlock, inline_code_block, INLINE_CODE_BLOCK, InlineCodeBlock, inline_code_block); break; case T_CallContext: OUT_NODE(CallContext, CallContext, call_context, CALL_CONTEXT, CallContext, call_context); break; pg_query-4.2.3/ext/pg_query/include/pg_config.h0000644000004100000410000007740314510636647021614 0ustar www-datawww-data/* 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'" /* 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 ".so" /* Define to build with GSSAPI support. (--with-gssapi) */ /* #undef ENABLE_GSS */ /* Define to 1 if you want National Language Support. (--enable-nls) */ /* #undef ENABLE_NLS */ /* Define to 1 to build client libraries as thread-safe code. (--enable-thread-safety) */ #define ENABLE_THREAD_SAFETY 1 /* Define to 1 if gettimeofday() takes only 1 argument. */ /* #undef GETTIMEOFDAY_1ARG */ #ifdef GETTIMEOFDAY_1ARG # define gettimeofday(a,b) gettimeofday(a) #endif /* Define to 1 if you have the `append_history' function. */ /* #undef HAVE_APPEND_HISTORY */ /* Define to 1 if you have the `ASN1_STRING_get0_data' function. */ /* #undef HAVE_ASN1_STRING_GET0_DATA */ /* Define to 1 if you want to use atomics if available. */ #define HAVE_ATOMICS 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_ATOMIC_H */ /* Define to 1 if you have the `backtrace_symbols' function. */ #define HAVE_BACKTRACE_SYMBOLS 1 /* Define to 1 if you have the `BIO_get_data' function. */ /* #undef HAVE_BIO_GET_DATA */ /* Define to 1 if you have the `BIO_meth_new' function. */ /* #undef HAVE_BIO_METH_NEW */ /* Define to 1 if you have the `clock_gettime' function. */ #define HAVE_CLOCK_GETTIME 1 /* Define to 1 if your compiler handles computed gotos. */ #define HAVE_COMPUTED_GOTO 1 /* Define to 1 if you have the `copyfile' function. */ #define HAVE_COPYFILE 1 /* Define to 1 if you have the header file. */ #define HAVE_COPYFILE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_CRTDEFS_H */ /* Define to 1 if you have the `CRYPTO_lock' function. */ /* #undef HAVE_CRYPTO_LOCK */ /* Define to 1 if you have the declaration of `fdatasync', and to 0 if you don't. */ #define HAVE_DECL_FDATASYNC 0 /* Define to 1 if you have the declaration of `F_FULLFSYNC', and to 0 if you don't. */ #define HAVE_DECL_F_FULLFSYNC 1 /* Define to 1 if you have the declaration of `LLVMCreateGDBRegistrationListener', and to 0 if you don't. */ /* #undef HAVE_DECL_LLVMCREATEGDBREGISTRATIONLISTENER */ /* Define to 1 if you have the declaration of `LLVMCreatePerfJITEventListener', and to 0 if you don't. */ /* #undef HAVE_DECL_LLVMCREATEPERFJITEVENTLISTENER */ /* Define to 1 if you have the declaration of `LLVMGetHostCPUFeatures', and to 0 if you don't. */ /* #undef HAVE_DECL_LLVMGETHOSTCPUFEATURES */ /* Define to 1 if you have the declaration of `LLVMGetHostCPUName', and to 0 if you don't. */ /* #undef HAVE_DECL_LLVMGETHOSTCPUNAME */ /* Define to 1 if you have the declaration of `LLVMOrcGetSymbolAddressIn', and to 0 if you don't. */ /* #undef HAVE_DECL_LLVMORCGETSYMBOLADDRESSIN */ /* Define to 1 if you have the declaration of `posix_fadvise', and to 0 if you don't. */ #define HAVE_DECL_POSIX_FADVISE 0 /* Define to 1 if you have the declaration of `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 `RTLD_GLOBAL', and to 0 if you don't. */ #define HAVE_DECL_RTLD_GLOBAL 1 /* Define to 1 if you have the declaration of `RTLD_NOW', and to 0 if you don't. */ #define HAVE_DECL_RTLD_NOW 1 /* Define to 1 if you have the declaration of `sigwait', and to 0 if you don't. */ #define HAVE_DECL_SIGWAIT 1 /* Define to 1 if you have the declaration of `strlcat', and to 0 if you don't. */ #define HAVE_DECL_STRLCAT 1 /* Define to 1 if you have the declaration of `strlcpy', and to 0 if you don't. */ #define HAVE_DECL_STRLCPY 1 /* Define to 1 if you have the declaration of `strnlen', and to 0 if you don't. */ #define HAVE_DECL_STRNLEN 1 /* Define to 1 if you have the declaration of `strtoll', and to 0 if you don't. */ #define HAVE_DECL_STRTOLL 1 /* Define to 1 if you have the declaration of `strtoull', and to 0 if you don't. */ #define HAVE_DECL_STRTOULL 1 /* Define to 1 if you have the `dlopen' function. */ #define HAVE_DLOPEN 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EDITLINE_HISTORY_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EDITLINE_READLINE_H */ /* Define to 1 if you have the header file. */ #define HAVE_EXECINFO_H 1 /* Define to 1 if you have the `explicit_bzero' function. */ /* #undef HAVE_EXPLICIT_BZERO */ /* Define to 1 if you have the `fdatasync' function. */ #define HAVE_FDATASYNC 1 /* Define to 1 if you have the `fls' function. */ #define HAVE_FLS 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if your compiler understands __func__. */ #define HAVE_FUNCNAME__FUNC 1 /* Define to 1 if your compiler understands __FUNCTION__. */ /* #undef HAVE_FUNCNAME__FUNCTION */ /* Define to 1 if you have __atomic_compare_exchange_n(int *, int *, int). */ #define HAVE_GCC__ATOMIC_INT32_CAS 1 /* Define to 1 if you have __atomic_compare_exchange_n(int64 *, int64 *, int64). */ #define HAVE_GCC__ATOMIC_INT64_CAS 1 /* Define to 1 if you have __sync_lock_test_and_set(char *) and friends. */ #define HAVE_GCC__SYNC_CHAR_TAS 1 /* Define to 1 if you have __sync_val_compare_and_swap(int *, int, int). */ #define HAVE_GCC__SYNC_INT32_CAS 1 /* Define to 1 if you have __sync_lock_test_and_set(int *) and friends. */ #define HAVE_GCC__SYNC_INT32_TAS 1 /* Define to 1 if you have __sync_val_compare_and_swap(int64 *, int64, int64). */ #define HAVE_GCC__SYNC_INT64_CAS 1 /* Define to 1 if you have the `getaddrinfo' function. */ #define HAVE_GETADDRINFO 1 /* Define to 1 if you have the `gethostbyname_r' function. */ /* #undef HAVE_GETHOSTBYNAME_R */ /* Define to 1 if you have the `getifaddrs' function. */ #define HAVE_GETIFADDRS 1 /* Define to 1 if you have the `getopt' function. */ #define HAVE_GETOPT 1 /* Define to 1 if you have the header file. */ #define HAVE_GETOPT_H 1 /* Define to 1 if you have the `getopt_long' function. */ #define HAVE_GETOPT_LONG 1 /* Define to 1 if you have the `getpeereid' function. */ #define HAVE_GETPEEREID 1 /* Define to 1 if you have the `getpeerucred' function. */ /* #undef HAVE_GETPEERUCRED */ /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getrlimit' function. */ #define HAVE_GETRLIMIT 1 /* Define to 1 if you have the `getrusage' function. */ #define HAVE_GETRUSAGE 1 /* Define to 1 if you have the `gettimeofday' function. */ /* #undef HAVE_GETTIMEOFDAY */ /* Define to 1 if you have the header file. */ /* #undef HAVE_GSSAPI_GSSAPI_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_GSSAPI_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_HISTORY_H */ /* Define to 1 if you have the `history_truncate_file' function. */ /* #undef HAVE_HISTORY_TRUNCATE_FILE */ /* Define to 1 if you have the `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 you have support for IPv6. */ #define HAVE_IPV6 1 /* Define to 1 if __builtin_constant_p(x) implies "i"(x) acceptance. */ /* #undef HAVE_I_CONSTRAINT__BUILTIN_CONSTANT_P */ /* Define to 1 if you have the `kqueue' function. */ #define HAVE_KQUEUE 1 /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LDAP_H */ /* Define to 1 if you have the `ldap_initialize' function. */ /* #undef HAVE_LDAP_INITIALIZE */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `ldap' library (-lldap). */ /* #undef HAVE_LIBLDAP */ /* Define to 1 if you have the `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 you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if the system has the type `locale_t'. */ #define HAVE_LOCALE_T 1 /* Define to 1 if `long int' works and is 64 bits. */ #define HAVE_LONG_INT_64 1 /* Define to 1 if `long long int' works and is 64 bits. */ /* #undef HAVE_LONG_LONG_INT_64 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBARRIER_H */ /* Define to 1 if you have the `mbstowcs_l' function. */ #define HAVE_MBSTOWCS_L 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `memset_s' function. */ #define HAVE_MEMSET_S 1 /* Define to 1 if the system has the type `MINIDUMP_TYPE'. */ /* #undef HAVE_MINIDUMP_TYPE */ /* Define to 1 if you have the `mkdtemp' function. */ #define HAVE_MKDTEMP 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_TCP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NET_IF_H 1 /* Define to 1 if you have the `OPENSSL_init_ssl' function. */ /* #undef HAVE_OPENSSL_INIT_SSL */ /* Define to 1 if you have the header file. */ /* #undef HAVE_OSSP_UUID_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_PAM_PAM_APPL_H */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have a POSIX-conforming sigwait declaration. */ #define HAVE_POSIX_DECL_SIGWAIT 1 /* Define to 1 if you have the `posix_fadvise' function. */ /* #undef HAVE_POSIX_FADVISE */ /* Define to 1 if you have the `posix_fallocate' function. */ /* #undef HAVE_POSIX_FALLOCATE */ /* Define to 1 if the assembler supports PPC's LWARX mutex hint bit. */ /* #undef HAVE_PPC_LWARX_MUTEX_HINT */ /* Define to 1 if you have the `ppoll' function. */ /* #undef HAVE_PPOLL */ /* Define to 1 if you have the `pread' function. */ #define HAVE_PREAD 1 /* Define to 1 if you have the `pstat' function. */ /* #undef HAVE_PSTAT */ /* Define to 1 if the PS_STRINGS thing exists. */ /* #undef HAVE_PS_STRINGS */ /* Define if you have POSIX threads libraries and header files. */ #define HAVE_PTHREAD 1 /* Define to 1 if you have the `pthread_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 `pwrite' function. */ #define HAVE_PWRITE 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_READLINE_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READLINE_HISTORY_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READLINE_READLINE_H */ /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readv' function. */ #define HAVE_READV 1 /* 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 `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setproctitle' function. */ /* #undef HAVE_SETPROCTITLE */ /* Define to 1 if you have the `setproctitle_fast' function. */ /* #undef HAVE_SETPROCTITLE_FAST */ /* Define to 1 if you have the `setsid' function. */ #define HAVE_SETSID 1 /* Define to 1 if you have the `shm_open' function. */ #define HAVE_SHM_OPEN 1 /* Define to 1 if 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 stdbool.h conforms to C99. */ #define HAVE_STDBOOL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchrnul' function. */ /* #undef HAVE_STRCHRNUL */ /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strlcat' function. */ #define HAVE_STRLCAT 1 /* Define to 1 if you have the `strlcpy' function. */ #define HAVE_STRLCPY 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strsignal' function. */ #define HAVE_STRSIGNAL 1 /* Define to 1 if you have the `strtof' function. */ #define HAVE_STRTOF 1 /* Define to 1 if you have the `strtoll' function. */ #define HAVE_STRTOLL 1 /* Define to 1 if you have the `strtoq' function. */ /* #undef HAVE_STRTOQ */ /* Define to 1 if you have the `strtoull' function. */ #define HAVE_STRTOULL 1 /* Define to 1 if you have the `strtouq' function. */ /* #undef HAVE_STRTOUQ */ /* Define to 1 if the system has the type `struct addrinfo'. */ #define HAVE_STRUCT_ADDRINFO 1 /* Define to 1 if the system has the type `struct cmsgcred'. */ /* #undef HAVE_STRUCT_CMSGCRED */ /* Define to 1 if the system has the type `struct option'. */ #define HAVE_STRUCT_OPTION 1 /* Define to 1 if `sa_len' is a member of `struct sockaddr'. */ #define HAVE_STRUCT_SOCKADDR_SA_LEN 1 /* Define to 1 if the system has the type `struct sockaddr_storage'. */ #define HAVE_STRUCT_SOCKADDR_STORAGE 1 /* Define to 1 if `ss_family' is a member of `struct sockaddr_storage'. */ #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1 /* Define to 1 if `ss_len' is a member of `struct sockaddr_storage'. */ #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1 /* Define to 1 if `__ss_family' is a member of `struct sockaddr_storage'. */ /* #undef HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY */ /* Define to 1 if `__ss_len' is a member of `struct sockaddr_storage'. */ /* #undef HAVE_STRUCT_SOCKADDR_STORAGE___SS_LEN */ /* Define to 1 if the system has the type `struct sockaddr_un'. */ #define HAVE_STRUCT_SOCKADDR_UN 1 /* Define to 1 if `tm_zone' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_ZONE 1 /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the `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. */ #define HAVE_SYS_IPC_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_PSTAT_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_RESOURCE_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SEM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SHM_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_SIGNALFD_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SOCKIO_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_TAS_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_UCRED_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_UIO_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_UN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_TERMIOS_H 1 /* Define to 1 if your compiler understands `typeof' or something similar. */ #define HAVE_TYPEOF 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_UCRED_H */ /* Define to 1 if the system has the type `uint64'. */ /* #undef HAVE_UINT64 */ /* Define to 1 if the system has the type `uint8'. */ /* #undef HAVE_UINT8 */ /* Define to 1 if the system has the type `union semun'. */ #define HAVE_UNION_SEMUN 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if you have the `uselocale' function. */ #define HAVE_USELOCALE 1 /* Define to 1 if you have BSD UUID support. */ /* #undef HAVE_UUID_BSD */ /* Define to 1 if you have E2FS UUID support. */ /* #undef HAVE_UUID_E2FS */ /* Define to 1 if you have the header file. */ /* #undef HAVE_UUID_H */ /* Define to 1 if you have OSSP UUID support. */ /* #undef HAVE_UUID_OSSP */ /* Define to 1 if you have the header file. */ /* #undef HAVE_UUID_UUID_H */ /* Define to 1 if you have the `wcstombs_l' function. */ #define HAVE_WCSTOMBS_L 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINLDAP_H */ /* Define to 1 if you have the `writev' function. */ #define HAVE_WRITEV 1 /* Define to 1 if you have the `X509_get_signature_nid' function. */ /* #undef HAVE_X509_GET_SIGNATURE_NID */ /* Define to 1 if the assembler supports X86_64's POPCNTQ instruction. */ /* #undef HAVE_X86_64_POPCNTQ */ /* Define to 1 if the system has the type `_Bool'. */ #define HAVE__BOOL 1 /* Define to 1 if your compiler understands __builtin_bswap16. */ #define HAVE__BUILTIN_BSWAP16 1 /* Define to 1 if your compiler understands __builtin_bswap32. */ #define HAVE__BUILTIN_BSWAP32 1 /* Define to 1 if your compiler understands __builtin_bswap64. */ #define HAVE__BUILTIN_BSWAP64 1 /* Define to 1 if your compiler understands __builtin_clz. */ #define HAVE__BUILTIN_CLZ 1 /* Define to 1 if your compiler understands __builtin_constant_p. */ #define HAVE__BUILTIN_CONSTANT_P 1 /* Define to 1 if your compiler understands __builtin_ctz. */ #define HAVE__BUILTIN_CTZ 1 /* Define to 1 if your compiler understands __builtin_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 __get_cpuid. */ /* #undef HAVE__GET_CPUID */ /* Define to 1 if your compiler understands _Static_assert. */ #define HAVE__STATIC_ASSERT 1 /* Define to 1 if you have the `__strtoll' function. */ /* #undef HAVE___STRTOLL */ /* Define to 1 if you have the `__strtoull' function. */ /* #undef HAVE___STRTOULL */ /* Define to the appropriate printf length modifier for 64-bit ints. */ #define INT64_MODIFIER "l" /* Define to 1 if `locale_t' requires . */ #define LOCALE_T_IN_XLOCALE 1 /* Define as the maximum alignment requirement of any C data type. */ #define MAXIMUM_ALIGNOF 8 /* Define bytes to use libc memset(). */ #define MEMSET_LOOP_LIMIT 1024 /* Define to the 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 15.1" /* 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 "15.1" /* 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 "15" /* PostgreSQL major version number */ #define PG_MAJORVERSION_NUM 15 /* PostgreSQL minor version number */ #define PG_MINORVERSION_NUM 1 /* 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 "15.1" /* PostgreSQL version as a number */ #define PG_VERSION_NUM 150001 /* A string containing the version number, platform, and C compiler */ #define PG_VERSION_STR "PostgreSQL 15.1 on aarch64-apple-darwin21.6.0, compiled by Apple clang version 14.0.0 (clang-1400.0.29.102), 64-bit" /* Define to 1 to allow profiling output to be saved separately for each process. */ /* #undef PROFILE_PID_DIR */ /* Define to necessary symbol if this constant uses a non-standard name on your system. */ /* #undef PTHREAD_CREATE_JOINABLE */ /* RELSEG_SIZE is the maximum number of blocks allowed in one disk file. Thus, the maximum size of a single file is RELSEG_SIZE * BLCKSZ; relations bigger than that are divided into multiple files. RELSEG_SIZE * BLCKSZ must be less than your OS' limit on file size. This is often 2 GB or 4GB in a 32-bit operating system, unless you have large file support enabled. By default, we make the limit 1 GB to avoid any possible integer-overflow problems within the OS. A limit smaller than necessary only means we divide a large relation into more chunks than necessary, so it seems best to err in the direction of a small limit. A power-of-2 value is recommended to save a few cycles in md.c, but is not absolutely required. Changing RELSEG_SIZE requires an initdb. */ #define RELSEG_SIZE 131072 /* The size of `bool', as computed by sizeof. */ #define SIZEOF_BOOL 1 /* The size of `long', as computed by sizeof. */ #define SIZEOF_LONG 8 /* The size of `off_t', as computed by sizeof. */ #define SIZEOF_OFF_T 8 /* The size of `size_t', as computed by sizeof. */ #define SIZEOF_SIZE_T 8 /* The size of `void *', as computed by sizeof. */ #define SIZEOF_VOID_P 8 /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define to 1 if strerror_r() returns int. */ #define STRERROR_R_INT 1 /* Define to 1 to use ARMv8 CRC Extension. */ #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 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 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 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 */ #undef HAVE_LOCALE_T #undef LOCALE_T_IN_XLOCALE #undef WCSTOMBS_L_IN_XLOCALE #undef PG_INT128_TYPE #undef HAVE__STATIC_ASSERT #undef HAVE_EXECINFO_H #undef HAVE_BACKTRACE_SYMBOLS #undef HAVE_X86_64_POPCNTQ #undef HAVE__GET_CPUID #undef USE_ARMV8_CRC32C #undef USE_SSE42_CRC32C_WITH_RUNTIME_CHECK #include #if defined(__FreeBSD__) || defined(__NetBSD__) || (defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 38) || __GLIBC__ > 2)) #define HAVE_STRCHRNUL #endif pg_query-4.2.3/ext/pg_query/include/libpq/0000755000004100000410000000000014510636647020604 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/libpq/hba.h0000644000004100000410000001000314510636647021501 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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; typedef struct HbaLine { 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; char *ident_user; char *pg_role; regex_t re; } IdentLine; /* * 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. */ typedef struct AuthToken { char *string; bool quoted; } AuthToken; /* * 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 */ 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_role, const char *auth_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 MemoryContext tokenize_auth_file(const char *filename, FILE *file, List **tok_lines, int elevel); #endif /* HBA_H */ pg_query-4.2.3/ext/pg_query/include/libpq/libpq.h0000644000004100000410000001070514510636647022067 0ustar www-datawww-data/*------------------------------------------------------------------------- * * libpq.h * POSTGRES LIBPQ buffer structure definitions. * * * Portions Copyright (c) 1996-2022, 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 StreamServerPort(int family, const char *hostName, unsigned short portNumber, const char *unixSocketDir, pgsocket ListenSocket[], int MaxListen); extern int StreamConnection(pgsocket server_fd, Port *port); extern void StreamClose(pgsocket sock); extern void TouchSocketFiles(void); extern void RemoveSocketFiles(void); extern void pq_init(void); extern int pq_getbytes(char *s, size_t len); extern 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 bool pq_buffer_has_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 */ pg_query-4.2.3/ext/pg_query/include/libpq/pqsignal.h0000644000004100000410000000232414510636647022574 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pqsignal.h * Backend signal(2) support (see also src/port/pqsignal.c) * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/pqsignal.h * *------------------------------------------------------------------------- */ #ifndef PQSIGNAL_H #define PQSIGNAL_H #include #ifndef WIN32 #define PG_SETMASK(mask) sigprocmask(SIG_SETMASK, mask, NULL) #else /* Emulate POSIX sigset_t APIs on Windows */ typedef int sigset_t; extern int pqsigsetmask(int mask); #define PG_SETMASK(mask) pqsigsetmask(*(mask)) #define sigemptyset(set) (*(set) = 0) #define sigfillset(set) (*(set) = ~0) #define sigaddset(set, signum) (*(set) |= (sigmask(signum))) #define sigdelset(set, signum) (*(set) &= ~(sigmask(signum))) #endif /* WIN32 */ extern PGDLLIMPORT sigset_t UnBlockSig; extern PGDLLIMPORT sigset_t BlockSig; extern PGDLLIMPORT sigset_t StartupBlockSig; extern void pqinitmask(void); /* pqsigfunc is declared in src/include/port.h */ extern pqsigfunc pqsignal_pm(int signo, pqsigfunc func); #endif /* PQSIGNAL_H */ pg_query-4.2.3/ext/pg_query/include/libpq/libpq-be.h0000644000004100000410000002513214510636647022453 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/libpq-be.h * *------------------------------------------------------------------------- */ #ifndef LIBPQ_BE_H #define LIBPQ_BE_H #include #ifdef USE_OPENSSL #include #include #endif #ifdef HAVE_NETINET_TCP_H #include #endif #ifdef ENABLE_GSS #if defined(HAVE_GSSAPI_H) #include #else #include #endif /* HAVE_GSSAPI_H */ /* * GSSAPI brings in headers that set a lot of things in the global namespace on win32, * that doesn't match the msvc build. It gives a bunch of compiler warnings that we ignore, * but also defines a symbol that simply does not exist. Undefine it again. */ #ifdef _MSC_VER #undef HAVE_GETADDRINFO #endif #endif /* ENABLE_GSS */ #ifdef ENABLE_SSPI #define SECURITY_WIN32 #if defined(WIN32) && !defined(_MSC_VER) #include #endif #include #undef SECURITY_WIN32 #ifndef ENABLE_GSS /* * Define a fake structure compatible with GSSAPI on Unix. */ typedef struct { void *value; int length; } gss_buffer_desc; #endif #endif /* ENABLE_SSPI */ #include "datatype/timestamp.h" #include "libpq/hba.h" #include "libpq/pqcomm.h" typedef enum CAC_state { CAC_OK, CAC_STARTUP, CAC_SHUTDOWN, CAC_RECOVERY, CAC_NOTCONSISTENT, CAC_TOOMANY } CAC_state; /* * GSSAPI specific state information */ #if defined(ENABLE_GSS) | defined(ENABLE_SSPI) typedef struct { gss_buffer_desc outbuf; /* GSSAPI output token buffer */ #ifdef ENABLE_GSS gss_cred_id_t cred; /* GSSAPI connection cred's */ gss_ctx_id_t ctx; /* GSSAPI connection context */ gss_name_t name; /* GSSAPI client name */ char *princ; /* GSSAPI Principal used for auth, NULL if * GSSAPI auth was not used */ bool auth; /* GSSAPI Authentication used */ bool enc; /* GSSAPI encryption in use */ #endif } pg_gssinfo; #endif /* * This is used by the postmaster in its communication with frontends. It * contains all state information needed during this communication before the * backend is run. The Port structure is kept in malloc'd memory and is * still available when a backend is running (see MyProcPort). The data * it points to must also be malloc'd, or else palloc'd in TopMemoryContext, * so that it survives into PostgresMain execution! * * remote_hostname is set if we did a successful reverse lookup of the * client's IP address during connection setup. * remote_hostname_resolv tracks the state of hostname verification: * +1 = remote_hostname is known to resolve to client's IP address * -1 = remote_hostname is known NOT to resolve to client's IP address * 0 = we have not done the forward DNS lookup yet * -2 = there was an error in name resolution * If reverse lookup of the client IP address fails, remote_hostname will be * left NULL while remote_hostname_resolv is set to -2. If reverse lookup * succeeds but forward lookup fails, remote_hostname_resolv is also set to -2 * (the case is distinguishable because remote_hostname isn't NULL). In * either of the -2 cases, remote_hostname_errcode saves the lookup return * code for possible later use with gai_strerror. */ typedef struct Port { pgsocket sock; /* File descriptor */ bool noblock; /* is the socket in non-blocking mode? */ ProtocolVersion proto; /* FE/BE protocol version */ SockAddr laddr; /* local addr (postmaster) */ SockAddr raddr; /* remote addr (client) */ char *remote_host; /* name (or ip addr) of remote host */ char *remote_hostname; /* name (not ip addr) of remote host, if * available */ int remote_hostname_resolv; /* see above */ int remote_hostname_errcode; /* see above */ char *remote_port; /* text rep of remote port */ CAC_state canAcceptConnections; /* postmaster connection status */ /* * Information that needs to be saved from the startup packet and passed * into backend execution. "char *" fields are NULL if not set. * guc_options points to a List of alternating option names and values. */ char *database_name; char *user_name; char *cmdline_options; List *guc_options; /* * The startup packet application name, only used here for the "connection * authorized" log message. We shouldn't use this post-startup, instead * the GUC should be used as application can change it afterward. */ char *application_name; /* * Information that needs to be held during the authentication cycle. */ HbaLine *hba; /* * Authenticated identity. The meaning of this identifier is dependent on * hba->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; /* * TCP keepalive and user timeout settings. * * default values are 0 if AF_UNIX or not yet known; current values are 0 * if AF_UNIX or using the default. Also, -1 in a default value means we * were unable to find out the default (getsockopt failed). */ int default_keepalives_idle; int default_keepalives_interval; int default_keepalives_count; int default_tcp_user_timeout; int keepalives_idle; int keepalives_interval; int keepalives_count; int tcp_user_timeout; /* * GSSAPI structures. */ #if defined(ENABLE_GSS) || defined(ENABLE_SSPI) /* * If GSSAPI is supported and used on this connection, store GSSAPI * information. Even when GSSAPI is not compiled in, store a NULL pointer * to keep struct offsets the same (for extension ABI compatibility). */ pg_gssinfo *gss; #else void *gss; #endif /* * SSL structures. */ bool ssl_in_use; char *peer_cn; char *peer_dn; bool peer_cert_valid; /* * OpenSSL structures. (Keep these last so that the locations of other * fields are the same whether or not you build with SSL enabled.) */ #ifdef USE_OPENSSL SSL *ssl; X509 *peer; #endif } Port; #ifdef USE_SSL /* * Hardcoded DH parameters, used in ephemeral DH keying. (See also * README.SSL for more details on EDH.) * * This is the 2048-bit DH parameter from RFC 3526. The generation of the * prime is specified in RFC 2412 Appendix E, which also discusses the * design choice of the generator. Note that when loaded with OpenSSL * this causes DH_check() to fail on DH_NOT_SUITABLE_GENERATOR, where * leaking a bit is preferred. */ #define FILE_DH2048 \ "-----BEGIN DH PARAMETERS-----\n\ MIIBCAKCAQEA///////////JD9qiIWjCNMTGYouA3BzRKQJOCIpnzHQCC76mOxOb\n\ IlFKCHmONATd75UZs806QxswKwpt8l8UN0/hNW1tUcJF5IW1dmJefsb0TELppjft\n\ awv/XLb0Brft7jhr+1qJn6WunyQRfEsf5kkoZlHs5Fs9wgB8uKFjvwWY2kg2HFXT\n\ mmkWP6j9JM9fg2VdI9yjrZYcYvNWIIVSu57VKQdwlpZtZww1Tkq8mATxdGwIyhgh\n\ fDKQXkYuNs474553LBgOhgObJ4Oi7Aeij7XFXfBvTFLJ3ivL9pVYFxg5lUl86pVq\n\ 5RXSJhiY+gUQFXKOWoqsqmj//////////wIBAg==\n\ -----END DH PARAMETERS-----\n" /* * These functions are implemented by the glue code specific to each * SSL implementation (e.g. be-secure-openssl.c) */ /* * Initialize global SSL context. * * If isServerStart is true, report any errors as FATAL (so we don't return). * Otherwise, log errors at LOG level and return -1 to indicate trouble, * preserving the old SSL state if any. Returns 0 if OK. */ extern int be_tls_init(bool isServerStart); /* * Destroy global SSL context, if any. */ extern void be_tls_destroy(void); /* * Attempt to negotiate SSL connection. */ extern int be_tls_open_server(Port *port); /* * Close SSL connection. */ extern void be_tls_close(Port *port); /* * Read data from a secure connection. */ extern ssize_t be_tls_read(Port *port, void *ptr, size_t len, int *waitfor); /* * Write data to a secure connection. */ extern ssize_t be_tls_write(Port *port, void *ptr, size_t len, int *waitfor); /* * Return information about the SSL connection. */ extern int be_tls_get_cipher_bits(Port *port); extern const char *be_tls_get_version(Port *port); extern const char *be_tls_get_cipher(Port *port); extern void be_tls_get_peer_subject_name(Port *port, char *ptr, size_t len); extern void be_tls_get_peer_issuer_name(Port *port, char *ptr, size_t len); extern void be_tls_get_peer_serial(Port *port, char *ptr, size_t len); /* * Get the server certificate hash for SCRAM channel binding type * tls-server-end-point. * * The result is a palloc'd hash of the server certificate with its * size, and NULL if there is no certificate available. * * This is not supported with old versions of OpenSSL that don't have * the X509_get_signature_nid() function. */ #if defined(USE_OPENSSL) && defined(HAVE_X509_GET_SIGNATURE_NID) #define HAVE_BE_TLS_GET_CERTIFICATE_HASH extern char *be_tls_get_certificate_hash(Port *port, size_t *len); #endif /* init hook for SSL, the default sets the password callback if appropriate */ #ifdef USE_OPENSSL typedef void (*openssl_tls_init_hook_typ) (SSL_CTX *context, bool isServerStart); extern PGDLLIMPORT openssl_tls_init_hook_typ openssl_tls_init_hook; #endif #endif /* USE_SSL */ #ifdef ENABLE_GSS /* * Return information about the GSSAPI authenticated connection */ extern bool be_gssapi_get_auth(Port *port); extern bool be_gssapi_get_enc(Port *port); extern const char *be_gssapi_get_princ(Port *port); /* Read and write to a GSSAPI-encrypted connection. */ extern ssize_t be_gssapi_read(Port *port, void *ptr, size_t len); extern ssize_t be_gssapi_write(Port *port, void *ptr, size_t len); #endif /* ENABLE_GSS */ extern PGDLLIMPORT ProtocolVersion FrontendProtocol; /* TCP keepalives configuration. These are no-ops on an AF_UNIX socket. */ extern int pq_getkeepalivesidle(Port *port); extern int pq_getkeepalivesinterval(Port *port); extern int pq_getkeepalivescount(Port *port); extern int pq_gettcpusertimeout(Port *port); extern int pq_setkeepalivesidle(int idle, Port *port); extern int pq_setkeepalivesinterval(int interval, Port *port); extern int pq_setkeepalivescount(int count, Port *port); extern int pq_settcpusertimeout(int timeout, Port *port); #endif /* LIBPQ_BE_H */ pg_query-4.2.3/ext/pg_query/include/libpq/pqformat.h0000644000004100000410000001352014510636647022607 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pqformat.h * Definitions for formatting and parsing frontend/backend messages * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/pqformat.h * *------------------------------------------------------------------------- */ #ifndef PQFORMAT_H #define PQFORMAT_H #include "lib/stringinfo.h" #include "mb/pg_wchar.h" #include "port/pg_bswap.h" extern void pq_beginmessage(StringInfo buf, char msgtype); extern void pq_beginmessage_reuse(StringInfo buf, char msgtype); extern void pq_endmessage(StringInfo buf); extern void pq_endmessage_reuse(StringInfo buf); extern void pq_sendbytes(StringInfo buf, const char *data, int datalen); extern void pq_sendcountedtext(StringInfo buf, const char *str, int slen, bool countincludesself); extern void pq_sendtext(StringInfo buf, const char *str, int slen); extern void pq_sendstring(StringInfo buf, const char *str); extern void pq_send_ascii_string(StringInfo buf, const char *str); extern void pq_sendfloat4(StringInfo buf, float4 f); extern void pq_sendfloat8(StringInfo buf, float8 f); /* * Append a [u]int8 to a StringInfo buffer, which already has enough space * preallocated. * * The use of pg_restrict allows the compiler to optimize the code based on * the assumption that buf, buf->len, buf->data and *buf->data don't * overlap. Without the annotation buf->len etc cannot be kept in a register * over subsequent pq_writeintN calls. * * The use of StringInfoData * rather than StringInfo is due to MSVC being * overly picky and demanding a * before a restrict. */ static inline void pq_writeint8(StringInfoData *pg_restrict buf, uint8 i) { uint8 ni = i; Assert(buf->len + (int) sizeof(uint8) <= buf->maxlen); memcpy((char *pg_restrict) (buf->data + buf->len), &ni, sizeof(uint8)); buf->len += sizeof(uint8); } /* * Append a [u]int16 to a StringInfo buffer, which already has enough space * preallocated. */ static inline void pq_writeint16(StringInfoData *pg_restrict buf, uint16 i) { uint16 ni = pg_hton16(i); Assert(buf->len + (int) sizeof(uint16) <= buf->maxlen); memcpy((char *pg_restrict) (buf->data + buf->len), &ni, sizeof(uint16)); buf->len += sizeof(uint16); } /* * Append a [u]int32 to a StringInfo buffer, which already has enough space * preallocated. */ static inline void pq_writeint32(StringInfoData *pg_restrict buf, uint32 i) { uint32 ni = pg_hton32(i); Assert(buf->len + (int) sizeof(uint32) <= buf->maxlen); memcpy((char *pg_restrict) (buf->data + buf->len), &ni, sizeof(uint32)); buf->len += sizeof(uint32); } /* * Append a [u]int64 to a StringInfo buffer, which already has enough space * preallocated. */ static inline void pq_writeint64(StringInfoData *pg_restrict buf, uint64 i) { uint64 ni = pg_hton64(i); Assert(buf->len + (int) sizeof(uint64) <= buf->maxlen); memcpy((char *pg_restrict) (buf->data + buf->len), &ni, sizeof(uint64)); buf->len += sizeof(uint64); } /* * Append a null-terminated text string (with conversion) to a buffer with * preallocated space. * * NB: The pre-allocated space needs to be sufficient for the string after * converting to client encoding. * * NB: passed text string must be null-terminated, and so is the data * sent to the frontend. */ static inline void pq_writestring(StringInfoData *pg_restrict buf, const char *pg_restrict str) { int slen = strlen(str); char *p; p = pg_server_to_client(str, slen); if (p != str) /* actual conversion has been done? */ slen = strlen(p); Assert(buf->len + slen + 1 <= buf->maxlen); memcpy(((char *pg_restrict) buf->data + buf->len), p, slen + 1); buf->len += slen + 1; if (p != str) pfree(p); } /* append a binary [u]int8 to a StringInfo buffer */ static inline void pq_sendint8(StringInfo buf, uint8 i) { enlargeStringInfo(buf, sizeof(uint8)); pq_writeint8(buf, i); } /* append a binary [u]int16 to a StringInfo buffer */ static inline void pq_sendint16(StringInfo buf, uint16 i) { enlargeStringInfo(buf, sizeof(uint16)); pq_writeint16(buf, i); } /* append a binary [u]int32 to a StringInfo buffer */ static inline void pq_sendint32(StringInfo buf, uint32 i) { enlargeStringInfo(buf, sizeof(uint32)); pq_writeint32(buf, i); } /* append a binary [u]int64 to a StringInfo buffer */ static inline void pq_sendint64(StringInfo buf, uint64 i) { enlargeStringInfo(buf, sizeof(uint64)); pq_writeint64(buf, i); } /* append a binary byte to a StringInfo buffer */ static inline void pq_sendbyte(StringInfo buf, uint8 byt) { pq_sendint8(buf, byt); } /* * Append a binary integer to a StringInfo buffer * * This function is deprecated; prefer use of the functions above. */ static inline void pq_sendint(StringInfo buf, uint32 i, int b) { switch (b) { case 1: pq_sendint8(buf, (uint8) i); break; case 2: pq_sendint16(buf, (uint16) i); break; case 4: pq_sendint32(buf, (uint32) i); break; default: elog(ERROR, "unsupported integer size %d", b); break; } } extern void pq_begintypsend(StringInfo buf); extern bytea *pq_endtypsend(StringInfo buf); extern void pq_puttextmessage(char msgtype, const char *str); extern void pq_putemptymessage(char msgtype); extern int pq_getmsgbyte(StringInfo msg); extern unsigned int pq_getmsgint(StringInfo msg, int b); extern int64 pq_getmsgint64(StringInfo msg); extern float4 pq_getmsgfloat4(StringInfo msg); extern float8 pq_getmsgfloat8(StringInfo msg); extern const char *pq_getmsgbytes(StringInfo msg, int datalen); extern void pq_copymsgbytes(StringInfo msg, char *buf, int datalen); extern char *pq_getmsgtext(StringInfo msg, int rawbytes, int *nbytes); extern const char *pq_getmsgstring(StringInfo msg); extern const char *pq_getmsgrawstring(StringInfo msg); extern void pq_getmsgend(StringInfo msg); #endif /* PQFORMAT_H */ pg_query-4.2.3/ext/pg_query/include/libpq/crypt.h0000644000004100000410000000276714510636647022132 0ustar www-datawww-data/*------------------------------------------------------------------------- * * crypt.h * Interface to libpq/crypt.c * * Portions Copyright (c) 1996-2022, 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 pg_query-4.2.3/ext/pg_query/include/libpq/pqcomm.h0000644000004100000410000001377014510636647022261 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/pqcomm.h * *------------------------------------------------------------------------- */ #ifndef PQCOMM_H #define PQCOMM_H #include #include #ifdef HAVE_SYS_UN_H #include #endif #include #ifdef HAVE_STRUCT_SOCKADDR_STORAGE #ifndef HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY #ifdef HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY #define ss_family __ss_family #else #error struct sockaddr_storage does not provide an ss_family member #endif #endif #ifdef HAVE_STRUCT_SOCKADDR_STORAGE___SS_LEN #define ss_len __ss_len #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1 #endif #else /* !HAVE_STRUCT_SOCKADDR_STORAGE */ /* Define a struct sockaddr_storage if we don't have one. */ struct sockaddr_storage { union { struct sockaddr sa; /* get the system-dependent fields */ int64 ss_align; /* ensures struct is properly aligned */ char ss_pad[128]; /* ensures struct has desired size */ } ss_stuff; }; #define ss_family ss_stuff.sa.sa_family /* It should have an ss_len field if sockaddr has sa_len. */ #ifdef HAVE_STRUCT_SOCKADDR_SA_LEN #define ss_len ss_stuff.sa.sa_len #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1 #endif #endif /* HAVE_STRUCT_SOCKADDR_STORAGE */ typedef struct { struct sockaddr_storage addr; socklen_t salen; } SockAddr; /* Configure the UNIX socket location for the well known port. */ #define UNIXSOCK_PATH(path, port, sockdir) \ (AssertMacro(sockdir), \ AssertMacro(*(sockdir) != '\0'), \ snprintf(path, sizeof(path), "%s/.s.PGSQL.%d", \ (sockdir), (port))) /* * The maximum workable length of a socket path is what will fit into * struct sockaddr_un. This is usually only 100 or so bytes :-(. * * For consistency, always pass a MAXPGPATH-sized buffer to UNIXSOCK_PATH(), * then complain if the resulting string is >= UNIXSOCK_PATH_BUFLEN bytes. * (Because the standard API for getaddrinfo doesn't allow it to complain in * a useful way when the socket pathname is too long, we have to test for * this explicitly, instead of just letting the subroutine return an error.) */ #define UNIXSOCK_PATH_BUFLEN sizeof(((struct sockaddr_un *) NULL)->sun_path) /* * 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; extern PGDLLIMPORT bool Db_user_namespace; /* * In protocol 3.0 and later, the startup packet length is not fixed, but * we set an arbitrary limit on it anyway. This is just to prevent simple * denial-of-service attacks via sending enough data to run the server * out of memory. */ #define MAX_STARTUP_PACKET_LENGTH 10000 /* These are the authentication request codes sent by the backend. */ #define AUTH_REQ_OK 0 /* User is authenticated */ #define AUTH_REQ_KRB4 1 /* Kerberos V4. Not supported any more. */ #define AUTH_REQ_KRB5 2 /* Kerberos V5. Not supported any more. */ #define AUTH_REQ_PASSWORD 3 /* Password */ #define AUTH_REQ_CRYPT 4 /* crypt password. Not supported any more. */ #define AUTH_REQ_MD5 5 /* md5 password */ #define AUTH_REQ_SCM_CREDS 6 /* transfer SCM credentials */ #define AUTH_REQ_GSS 7 /* GSSAPI without wrap() */ #define AUTH_REQ_GSS_CONT 8 /* Continue GSS exchanges */ #define AUTH_REQ_SSPI 9 /* SSPI negotiate without wrap() */ #define AUTH_REQ_SASL 10 /* Begin SASL authentication */ #define AUTH_REQ_SASL_CONT 11 /* Continue SASL authentication */ #define AUTH_REQ_SASL_FIN 12 /* Final SASL message */ typedef uint32 AuthRequest; /* * A client can also send a cancel-current-operation request to the postmaster. * This is uglier than sending it directly to the client's backend, but it * avoids depending on out-of-band communication facilities. * * The cancel request code must not match any protocol version number * we're ever likely to use. This random choice should do. */ #define CANCEL_REQUEST_CODE PG_PROTOCOL(1234,5678) typedef struct CancelRequestPacket { /* Note that each field is stored in network byte order! */ MsgType cancelRequestCode; /* code to identify a cancel request */ uint32 backendPID; /* PID of client's backend */ uint32 cancelAuthCode; /* secret key to authorize cancel */ } CancelRequestPacket; /* * A client can also start by sending a SSL or GSSAPI negotiation request to * get a secure channel. */ #define NEGOTIATE_SSL_CODE PG_PROTOCOL(1234,5679) #define NEGOTIATE_GSS_CODE PG_PROTOCOL(1234,5680) #endif /* PQCOMM_H */ pg_query-4.2.3/ext/pg_query/include/libpq/auth.h0000644000004100000410000000172514510636647021723 0ustar www-datawww-data/*------------------------------------------------------------------------- * * auth.h * Definitions for network authentication routines * * * Portions Copyright (c) 1996-2022, 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 char *pg_krb_realm; 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; #endif /* AUTH_H */ pg_query-4.2.3/ext/pg_query/include/protobuf-c.h0000644000004100000410000010161214510636647021727 0ustar www-datawww-data/* * 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 */pg_query-4.2.3/ext/pg_query/include/executor/0000755000004100000410000000000014510636647021333 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/executor/execdesc.h0000644000004100000410000000453114510636647023272 0ustar www-datawww-data/*------------------------------------------------------------------------- * * execdesc.h * plan and query descriptor accessor macros used by the executor * and related modules. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/executor/execdesc.h * *------------------------------------------------------------------------- */ #ifndef EXECDESC_H #define EXECDESC_H #include "nodes/execnodes.h" #include "tcop/dest.h" /* ---------------- * query descriptor: * * a QueryDesc encapsulates everything that the executor * needs to execute the query. * * For the convenience of SQL-language functions, we also support QueryDescs * containing utility statements; these must not be passed to the executor * however. * --------------------- */ typedef struct QueryDesc { /* These fields are provided by CreateQueryDesc */ CmdType operation; /* CMD_SELECT, CMD_UPDATE, etc. */ PlannedStmt *plannedstmt; /* planner's output (could be utility, too) */ const char *sourceText; /* source text of the query */ Snapshot snapshot; /* snapshot to use for query */ Snapshot crosscheck_snapshot; /* crosscheck for RI update/delete */ DestReceiver *dest; /* the destination for tuple output */ ParamListInfo params; /* param values being passed in */ QueryEnvironment *queryEnv; /* query environment passed in */ int instrument_options; /* OR of InstrumentOption flags */ /* These fields are set by ExecutorStart */ TupleDesc tupDesc; /* descriptor for result tuples */ EState *estate; /* executor's query-wide state */ PlanState *planstate; /* tree of per-plan-node state */ /* This field is set by ExecutorRun */ bool already_executed; /* true if previously executed */ /* This is always set NULL by the core system, but plugins can change it */ struct Instrumentation *totaltime; /* total time spent in ExecutorRun */ } QueryDesc; /* in pquery.c */ extern QueryDesc *CreateQueryDesc(PlannedStmt *plannedstmt, const char *sourceText, Snapshot snapshot, Snapshot crosscheck_snapshot, DestReceiver *dest, ParamListInfo params, QueryEnvironment *queryEnv, int instrument_options); extern void FreeQueryDesc(QueryDesc *qdesc); #endif /* EXECDESC_H */ pg_query-4.2.3/ext/pg_query/include/executor/tuptable.h0000644000004100000410000004166614510636647023341 0ustar www-datawww-data/*------------------------------------------------------------------------- * * tuptable.h * tuple table support stuff * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/executor/tuptable.h * *------------------------------------------------------------------------- */ #ifndef TUPTABLE_H #define TUPTABLE_H #include "access/htup.h" #include "access/htup_details.h" #include "access/sysattr.h" #include "access/tupdesc.h" #include "storage/buf.h" /*---------- * The executor stores tuples in a "tuple table" which is a List of * independent TupleTableSlots. * * There's various different types of tuple table slots, each being able to * store different types of tuples. Additional types of slots can be added * without modifying core code. The type of a slot is determined by the * TupleTableSlotOps* passed to the slot creation routine. The builtin types * of slots are * * 1. physical tuple in a disk buffer page (TTSOpsBufferHeapTuple) * 2. physical tuple constructed in palloc'ed memory (TTSOpsHeapTuple) * 3. "minimal" physical tuple constructed in palloc'ed memory * (TTSOpsMinimalTuple) * 4. "virtual" tuple consisting of Datum/isnull arrays (TTSOpsVirtual) * * * The first two cases are similar in that they both deal with "materialized" * tuples, but resource management is different. For a tuple in a disk page * we need to hold a pin on the buffer until the TupleTableSlot's reference * to the tuple is dropped; while for a palloc'd tuple we usually want the * tuple pfree'd when the TupleTableSlot's reference is dropped. * * A "minimal" tuple is handled similarly to a palloc'd regular tuple. * At present, minimal tuples never are stored in buffers, so there is no * parallel to case 1. Note that a minimal tuple has no "system columns". * (Actually, it could have an OID, but we have no need to access the OID.) * * A "virtual" tuple is an optimization used to minimize physical data copying * in a nest of plan nodes. Until materialized pass-by-reference Datums in * the slot point to storage that is not directly associated with the * TupleTableSlot; generally they will point to part of a tuple stored in a * lower plan node's output TupleTableSlot, or to a function result * constructed in a plan node's per-tuple econtext. It is the responsibility * of the generating plan node to be sure these resources are not released for * as long as the virtual tuple needs to be valid or is materialized. Note * also that a virtual tuple does not have any "system columns". * * The Datum/isnull arrays of a TupleTableSlot serve double duty. For virtual * slots they are the authoritative data. For the other builtin slots, * the arrays contain data extracted from the tuple. (In this state, any * pass-by-reference Datums point into the physical tuple.) The extracted * information is built "lazily", ie, only as needed. This serves to avoid * repeated extraction of data from the physical tuple. * * A TupleTableSlot can also be "empty", indicated by flag TTS_FLAG_EMPTY set * in tts_flags, holding no valid data. This is the only valid state for a * freshly-created slot that has not yet had a tuple descriptor assigned to * it. In this state, TTS_SHOULDFREE should not be set in tts_flags, tts_tuple * must be NULL and tts_nvalid zero. * * The tupleDescriptor is simply referenced, not copied, by the TupleTableSlot * code. The caller of ExecSetSlotDescriptor() is responsible for providing * a descriptor that will live as long as the slot does. (Typically, both * slots and descriptors are in per-query memory and are freed by memory * context deallocation at query end; so it's not worth providing any extra * mechanism to do more. However, the slot will increment the tupdesc * reference count if a reference-counted tupdesc is supplied.) * * When TTS_SHOULDFREE is set in tts_flags, the physical tuple is "owned" by * the slot and should be freed when the slot's reference to the tuple is * dropped. * * tts_values/tts_isnull are allocated either when the slot is created (when * the descriptor is provided), or when a descriptor is assigned to the slot; * they are of length equal to the descriptor's natts. * * The TTS_FLAG_SLOW flag is saved state for * slot_deform_heap_tuple, and should not be touched by any other code. *---------- */ /* true = slot is empty */ #define TTS_FLAG_EMPTY (1 << 1) #define TTS_EMPTY(slot) (((slot)->tts_flags & TTS_FLAG_EMPTY) != 0) /* should pfree tuple "owned" by the slot? */ #define TTS_FLAG_SHOULDFREE (1 << 2) #define TTS_SHOULDFREE(slot) (((slot)->tts_flags & TTS_FLAG_SHOULDFREE) != 0) /* saved state for slot_deform_heap_tuple */ #define TTS_FLAG_SLOW (1 << 3) #define TTS_SLOW(slot) (((slot)->tts_flags & TTS_FLAG_SLOW) != 0) /* fixed tuple descriptor */ #define TTS_FLAG_FIXED (1 << 4) #define TTS_FIXED(slot) (((slot)->tts_flags & TTS_FLAG_FIXED) != 0) struct TupleTableSlotOps; typedef struct TupleTableSlotOps TupleTableSlotOps; /* base tuple table slot type */ typedef struct TupleTableSlot { NodeTag type; #define FIELDNO_TUPLETABLESLOT_FLAGS 1 uint16 tts_flags; /* Boolean states */ #define FIELDNO_TUPLETABLESLOT_NVALID 2 AttrNumber tts_nvalid; /* # of valid values in tts_values */ const TupleTableSlotOps *const tts_ops; /* implementation of slot */ #define FIELDNO_TUPLETABLESLOT_TUPLEDESCRIPTOR 4 TupleDesc tts_tupleDescriptor; /* slot's tuple descriptor */ #define FIELDNO_TUPLETABLESLOT_VALUES 5 Datum *tts_values; /* current per-attribute values */ #define FIELDNO_TUPLETABLESLOT_ISNULL 6 bool *tts_isnull; /* current per-attribute isnull flags */ MemoryContext tts_mcxt; /* slot itself is in this context */ ItemPointerData tts_tid; /* stored tuple's tid */ Oid tts_tableOid; /* table oid of tuple */ } TupleTableSlot; /* routines for a TupleTableSlot implementation */ struct TupleTableSlotOps { /* Minimum size of the slot */ size_t base_slot_size; /* Initialization. */ void (*init) (TupleTableSlot *slot); /* Destruction. */ void (*release) (TupleTableSlot *slot); /* * Clear the contents of the slot. Only the contents are expected to be * cleared and not the tuple descriptor. Typically an implementation of * this callback should free the memory allocated for the tuple contained * in the slot. */ void (*clear) (TupleTableSlot *slot); /* * Fill up first natts entries of tts_values and tts_isnull arrays with * values from the tuple contained in the slot. The function may be called * with natts more than the number of attributes available in the tuple, * in which case it should set tts_nvalid to the number of returned * columns. */ void (*getsomeattrs) (TupleTableSlot *slot, int natts); /* * Returns value of the given system attribute as a datum and sets isnull * to false, if it's not NULL. Throws an error if the slot type does not * support system attributes. */ Datum (*getsysattr) (TupleTableSlot *slot, int attnum, bool *isnull); /* * Make the contents of the slot solely depend on the slot, and not on * underlying resources (like another memory context, buffers, etc). */ void (*materialize) (TupleTableSlot *slot); /* * Copy the contents of the source slot into the destination slot's own * context. Invoked using callback of the destination slot. */ void (*copyslot) (TupleTableSlot *dstslot, TupleTableSlot *srcslot); /* * Return a heap tuple "owned" by the slot. It is slot's responsibility to * free the memory consumed by the heap tuple. If the slot can not "own" a * heap tuple, it should not implement this callback and should set it as * NULL. */ HeapTuple (*get_heap_tuple) (TupleTableSlot *slot); /* * Return a minimal tuple "owned" by the slot. It is slot's responsibility * to free the memory consumed by the minimal tuple. If the slot can not * "own" a minimal tuple, it should not implement this callback and should * set it as NULL. */ MinimalTuple (*get_minimal_tuple) (TupleTableSlot *slot); /* * Return a copy of heap tuple representing the contents of the slot. The * copy needs to be palloc'd in the current memory context. The slot * itself is expected to remain unaffected. It is *not* expected to have * meaningful "system columns" in the copy. The copy is not be "owned" by * the slot i.e. the caller has to take responsibility to free memory * consumed by the slot. */ HeapTuple (*copy_heap_tuple) (TupleTableSlot *slot); /* * Return a copy of minimal tuple representing the contents of the slot. * The copy needs to be palloc'd in the current memory context. The slot * itself is expected to remain unaffected. It is *not* expected to have * meaningful "system columns" in the copy. The copy is not be "owned" by * the slot i.e. the caller has to take responsibility to free memory * consumed by the slot. */ MinimalTuple (*copy_minimal_tuple) (TupleTableSlot *slot); }; /* * Predefined TupleTableSlotOps for various types of TupleTableSlotOps. The * same are used to identify the type of a given slot. */ extern PGDLLIMPORT const TupleTableSlotOps TTSOpsVirtual; extern PGDLLIMPORT const TupleTableSlotOps TTSOpsHeapTuple; extern PGDLLIMPORT const TupleTableSlotOps TTSOpsMinimalTuple; extern PGDLLIMPORT const TupleTableSlotOps TTSOpsBufferHeapTuple; #define TTS_IS_VIRTUAL(slot) ((slot)->tts_ops == &TTSOpsVirtual) #define TTS_IS_HEAPTUPLE(slot) ((slot)->tts_ops == &TTSOpsHeapTuple) #define TTS_IS_MINIMALTUPLE(slot) ((slot)->tts_ops == &TTSOpsMinimalTuple) #define TTS_IS_BUFFERTUPLE(slot) ((slot)->tts_ops == &TTSOpsBufferHeapTuple) /* * Tuple table slot implementations. */ typedef struct VirtualTupleTableSlot { TupleTableSlot base; char *data; /* data for materialized slots */ } VirtualTupleTableSlot; typedef struct HeapTupleTableSlot { TupleTableSlot base; #define FIELDNO_HEAPTUPLETABLESLOT_TUPLE 1 HeapTuple tuple; /* physical tuple */ #define FIELDNO_HEAPTUPLETABLESLOT_OFF 2 uint32 off; /* saved state for slot_deform_heap_tuple */ HeapTupleData tupdata; /* optional workspace for storing tuple */ } HeapTupleTableSlot; /* heap tuple residing in a buffer */ typedef struct BufferHeapTupleTableSlot { HeapTupleTableSlot base; /* * If buffer is not InvalidBuffer, then the slot is holding a pin on the * indicated buffer page; drop the pin when we release the slot's * reference to that buffer. (TTS_FLAG_SHOULDFREE should not be set in * such a case, since presumably tts_tuple is pointing into the buffer.) */ Buffer buffer; /* tuple's buffer, or InvalidBuffer */ } BufferHeapTupleTableSlot; typedef struct MinimalTupleTableSlot { TupleTableSlot base; /* * In a minimal slot tuple points at minhdr and the fields of that struct * are set correctly for access to the minimal tuple; in particular, * minhdr.t_data points MINIMAL_TUPLE_OFFSET bytes before mintuple. This * allows column extraction to treat the case identically to regular * physical tuples. */ #define FIELDNO_MINIMALTUPLETABLESLOT_TUPLE 1 HeapTuple tuple; /* tuple wrapper */ MinimalTuple mintuple; /* minimal tuple, or NULL if none */ HeapTupleData minhdr; /* workspace for minimal-tuple-only case */ #define FIELDNO_MINIMALTUPLETABLESLOT_OFF 4 uint32 off; /* saved state for slot_deform_heap_tuple */ } MinimalTupleTableSlot; /* * TupIsNull -- is a TupleTableSlot empty? */ #define TupIsNull(slot) \ ((slot) == NULL || TTS_EMPTY(slot)) /* in executor/execTuples.c */ extern TupleTableSlot *MakeTupleTableSlot(TupleDesc tupleDesc, const TupleTableSlotOps *tts_ops); extern TupleTableSlot *ExecAllocTableSlot(List **tupleTable, TupleDesc desc, const TupleTableSlotOps *tts_ops); extern void ExecResetTupleTable(List *tupleTable, bool shouldFree); extern TupleTableSlot *MakeSingleTupleTableSlot(TupleDesc tupdesc, const TupleTableSlotOps *tts_ops); extern void ExecDropSingleTupleTableSlot(TupleTableSlot *slot); extern void ExecSetSlotDescriptor(TupleTableSlot *slot, TupleDesc tupdesc); extern TupleTableSlot *ExecStoreHeapTuple(HeapTuple tuple, TupleTableSlot *slot, bool shouldFree); extern void ExecForceStoreHeapTuple(HeapTuple tuple, TupleTableSlot *slot, bool shouldFree); extern TupleTableSlot *ExecStoreBufferHeapTuple(HeapTuple tuple, TupleTableSlot *slot, Buffer buffer); extern TupleTableSlot *ExecStorePinnedBufferHeapTuple(HeapTuple tuple, TupleTableSlot *slot, Buffer buffer); extern TupleTableSlot *ExecStoreMinimalTuple(MinimalTuple mtup, TupleTableSlot *slot, bool shouldFree); extern void ExecForceStoreMinimalTuple(MinimalTuple mtup, TupleTableSlot *slot, bool shouldFree); extern TupleTableSlot *ExecStoreVirtualTuple(TupleTableSlot *slot); extern TupleTableSlot *ExecStoreAllNullTuple(TupleTableSlot *slot); extern void ExecStoreHeapTupleDatum(Datum data, TupleTableSlot *slot); extern HeapTuple ExecFetchSlotHeapTuple(TupleTableSlot *slot, bool materialize, bool *shouldFree); extern MinimalTuple ExecFetchSlotMinimalTuple(TupleTableSlot *slot, bool *shouldFree); extern Datum ExecFetchSlotHeapTupleDatum(TupleTableSlot *slot); extern void slot_getmissingattrs(TupleTableSlot *slot, int startAttNum, int lastAttNum); extern void slot_getsomeattrs_int(TupleTableSlot *slot, int attnum); #ifndef FRONTEND /* * This function forces the entries of the slot's Datum/isnull arrays to be * valid at least up through the attnum'th entry. */ static inline void slot_getsomeattrs(TupleTableSlot *slot, int attnum) { if (slot->tts_nvalid < attnum) slot_getsomeattrs_int(slot, attnum); } /* * slot_getallattrs * This function forces all the entries of the slot's Datum/isnull * arrays to be valid. The caller may then extract data directly * from those arrays instead of using slot_getattr. */ static inline void slot_getallattrs(TupleTableSlot *slot) { slot_getsomeattrs(slot, slot->tts_tupleDescriptor->natts); } /* * slot_attisnull * * Detect whether an attribute of the slot is null, without actually fetching * it. */ static inline bool slot_attisnull(TupleTableSlot *slot, int attnum) { AssertArg(attnum > 0); if (attnum > slot->tts_nvalid) slot_getsomeattrs(slot, attnum); return slot->tts_isnull[attnum - 1]; } /* * slot_getattr - fetch one attribute of the slot's contents. */ static inline Datum slot_getattr(TupleTableSlot *slot, int attnum, bool *isnull) { AssertArg(attnum > 0); if (attnum > slot->tts_nvalid) slot_getsomeattrs(slot, attnum); *isnull = slot->tts_isnull[attnum - 1]; return slot->tts_values[attnum - 1]; } /* * slot_getsysattr - fetch a system attribute of the slot's current tuple. * * If the slot type does not contain system attributes, this will throw an * error. Hence before calling this function, callers should make sure that * the slot type is the one that supports system attributes. */ static inline Datum slot_getsysattr(TupleTableSlot *slot, int attnum, bool *isnull) { AssertArg(attnum < 0); /* caller error */ if (attnum == TableOidAttributeNumber) { *isnull = false; return ObjectIdGetDatum(slot->tts_tableOid); } else if (attnum == SelfItemPointerAttributeNumber) { *isnull = false; return PointerGetDatum(&slot->tts_tid); } /* Fetch the system attribute from the underlying tuple. */ return slot->tts_ops->getsysattr(slot, attnum, isnull); } /* * ExecClearTuple - clear the slot's contents */ static inline TupleTableSlot * ExecClearTuple(TupleTableSlot *slot) { slot->tts_ops->clear(slot); return slot; } /* ExecMaterializeSlot - force a slot into the "materialized" state. * * This causes the slot's tuple to be a local copy not dependent on any * external storage (i.e. pointing into a Buffer, or having allocations in * another memory context). * * A typical use for this operation is to prepare a computed tuple for being * stored on disk. The original data may or may not be virtual, but in any * case we need a private copy for heap_insert to scribble on. */ static inline void ExecMaterializeSlot(TupleTableSlot *slot) { slot->tts_ops->materialize(slot); } /* * ExecCopySlotHeapTuple - return HeapTuple allocated in caller's context */ static inline HeapTuple ExecCopySlotHeapTuple(TupleTableSlot *slot) { Assert(!TTS_EMPTY(slot)); return slot->tts_ops->copy_heap_tuple(slot); } /* * ExecCopySlotMinimalTuple - return MinimalTuple allocated in caller's context */ static inline MinimalTuple ExecCopySlotMinimalTuple(TupleTableSlot *slot) { return slot->tts_ops->copy_minimal_tuple(slot); } /* * ExecCopySlot - copy one slot's contents into another. * * If a source's system attributes are supposed to be accessed in the target * slot, the target slot and source slot types need to match. */ static inline TupleTableSlot * ExecCopySlot(TupleTableSlot *dstslot, TupleTableSlot *srcslot) { Assert(!TTS_EMPTY(srcslot)); AssertArg(srcslot != dstslot); dstslot->tts_ops->copyslot(dstslot, srcslot); return dstslot; } #endif /* FRONTEND */ #endif /* TUPTABLE_H */ pg_query-4.2.3/ext/pg_query/include/executor/instrument.h0000644000004100000410000001155714510636647023725 0ustar www-datawww-data/*------------------------------------------------------------------------- * * instrument.h * definitions for run-time statistics collection * * * Copyright (c) 2001-2022, 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 blk_read_time; /* time spent reading blocks */ instr_time blk_write_time; /* time spent writing 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 */ pg_query-4.2.3/ext/pg_query/include/executor/spi.h0000644000004100000410000001733214510636647022305 0ustar www-datawww-data/*------------------------------------------------------------------------- * * spi.h * Server Programming Interface public declarations * * Portions Copyright (c) 1996-2022, 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_OPT_NONATOMIC (1 << 0) /* These used to be functions, now just no-ops for backwards compatibility */ #define SPI_push() ((void) 0) #define SPI_pop() ((void) 0) #define SPI_push_conditional() false #define SPI_pop_conditional(pushed) ((void) 0) #define SPI_restore_connection() ((void) 0) extern PGDLLIMPORT uint64 SPI_processed; extern PGDLLIMPORT SPITupleTable *SPI_tuptable; extern PGDLLIMPORT int SPI_result; extern int SPI_connect(void); extern int SPI_connect_ext(int options); extern int SPI_finish(void); extern int SPI_execute(const char *src, bool read_only, long tcount); extern int SPI_execute_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 pointer); extern void SPI_freetuptable(SPITupleTable *tuptable); extern Portal SPI_cursor_open(const char *name, SPIPlanPtr plan, Datum *Values, const char *Nulls, bool read_only); extern Portal SPI_cursor_open_with_args(const char *name, const char *src, int nargs, Oid *argtypes, Datum *Values, const char *Nulls, bool read_only, int cursorOptions); extern Portal SPI_cursor_open_with_paramlist(const char *name, SPIPlanPtr plan, ParamListInfo params, bool read_only); extern Portal SPI_cursor_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 */ pg_query-4.2.3/ext/pg_query/include/executor/tablefunc.h0000644000004100000410000000544214510636647023454 0ustar www-datawww-data/*------------------------------------------------------------------------- * * tablefunc.h * interface for TableFunc executor node * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/executor/functions.h0000644000004100000410000000344414510636647023521 0ustar www-datawww-data/*------------------------------------------------------------------------- * * functions.h * Declarations for execution of SQL-language functions. * * * Portions Copyright (c) 1996-2022, 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, bool insertDroppedCols, List **resultTargetList); extern DestReceiver *CreateSQLFunctionDestReceiver(void); #endif /* FUNCTIONS_H */ pg_query-4.2.3/ext/pg_query/include/executor/executor.h0000644000004100000410000006157014510636647023353 0ustar www-datawww-data/*------------------------------------------------------------------------- * * executor.h * support for the POSTGRES executor module * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/executor/executor.h * *------------------------------------------------------------------------- */ #ifndef EXECUTOR_H #define EXECUTOR_H #include "executor/execdesc.h" #include "fmgr.h" #include "nodes/lockoptions.h" #include "nodes/parsenodes.h" #include "utils/memutils.h" /* * The "eflags" argument to ExecutorStart and the various ExecInitNode * routines is a bitwise OR of the following flag bits, which tell the * called plan node what to expect. Note that the flags will get modified * as they are passed down the plan tree, since an upper node may require * functionality in its subnode not demanded of the plan as a whole * (example: MergeJoin requires mark/restore capability in its inner input), * or an upper node may shield its input from some functionality requirement * (example: Materialize shields its input from needing to do backward scan). * * EXPLAIN_ONLY indicates that the plan tree is being initialized just so * EXPLAIN can print it out; it will not be run. Hence, no side-effects * of startup should occur. However, error checks (such as permission checks) * should be performed. * * REWIND indicates that the plan node should try to efficiently support * rescans without parameter changes. (Nodes must support ExecReScan calls * in any case, but if this flag was not given, they are at liberty to do it * through complete recalculation. Note that a parameter change forces a * full recalculation in any case.) * * BACKWARD indicates that the plan node must respect the es_direction flag. * When this is not passed, the plan node will only be run forwards. * * MARK indicates that the plan node must support Mark/Restore calls. * When this is not passed, no Mark/Restore will occur. * * SKIP_TRIGGERS tells ExecutorStart/ExecutorFinish to skip calling * AfterTriggerBeginQuery/AfterTriggerEndQuery. This does not necessarily * mean that the plan can't queue any AFTER triggers; just that the caller * is responsible for there being a trigger context for them to be queued in. */ #define EXEC_FLAG_EXPLAIN_ONLY 0x0001 /* EXPLAIN, no ANALYZE */ #define EXEC_FLAG_REWIND 0x0002 /* need efficient rescan */ #define EXEC_FLAG_BACKWARD 0x0004 /* need backward scan */ #define EXEC_FLAG_MARK 0x0008 /* need mark/restore */ #define EXEC_FLAG_SKIP_TRIGGERS 0x0010 /* skip AfterTrigger calls */ #define EXEC_FLAG_WITH_NO_DATA 0x0020 /* rel scannability doesn't matter */ /* Hook for plugins to get control in ExecutorStart() */ typedef void (*ExecutorStart_hook_type) (QueryDesc *queryDesc, int eflags); extern PGDLLIMPORT ExecutorStart_hook_type ExecutorStart_hook; /* Hook for plugins to get control in ExecutorRun() */ typedef void (*ExecutorRun_hook_type) (QueryDesc *queryDesc, ScanDirection direction, uint64 count, bool execute_once); extern PGDLLIMPORT ExecutorRun_hook_type ExecutorRun_hook; /* Hook for plugins to get control in ExecutorFinish() */ typedef void (*ExecutorFinish_hook_type) (QueryDesc *queryDesc); extern PGDLLIMPORT ExecutorFinish_hook_type ExecutorFinish_hook; /* Hook for plugins to get control in ExecutorEnd() */ typedef void (*ExecutorEnd_hook_type) (QueryDesc *queryDesc); extern PGDLLIMPORT ExecutorEnd_hook_type ExecutorEnd_hook; /* Hook for plugins to get control in ExecCheckRTPerms() */ typedef bool (*ExecutorCheckPerms_hook_type) (List *, bool); extern PGDLLIMPORT ExecutorCheckPerms_hook_type ExecutorCheckPerms_hook; /* * prototypes from functions in execAmi.c */ struct Path; /* avoid including pathnodes.h here */ extern void ExecReScan(PlanState *node); extern void ExecMarkPos(PlanState *node); extern void ExecRestrPos(PlanState *node); extern bool ExecSupportsMarkRestore(struct Path *pathnode); extern bool ExecSupportsBackwardScan(Plan *node); extern bool ExecMaterializesOutput(NodeTag plantype); /* * prototypes from functions in execCurrent.c */ extern bool execCurrentOf(CurrentOfExpr *cexpr, ExprContext *econtext, Oid table_oid, ItemPointer current_tid); /* * prototypes from functions in execGrouping.c */ extern ExprState *execTuplesMatchPrepare(TupleDesc desc, int numCols, const AttrNumber *keyColIdx, const Oid *eqOperators, const Oid *collations, PlanState *parent); extern void execTuplesHashPrepare(int numCols, const Oid *eqOperators, Oid **eqFuncOids, FmgrInfo **hashFunctions); extern TupleHashTable BuildTupleHashTable(PlanState *parent, TupleDesc inputDesc, int numCols, AttrNumber *keyColIdx, const Oid *eqfuncoids, FmgrInfo *hashfunctions, Oid *collations, long nbuckets, Size additionalsize, MemoryContext tablecxt, MemoryContext tempcxt, bool use_variable_hash_iv); extern TupleHashTable BuildTupleHashTableExt(PlanState *parent, TupleDesc inputDesc, int numCols, AttrNumber *keyColIdx, const Oid *eqfuncoids, FmgrInfo *hashfunctions, Oid *collations, long nbuckets, Size additionalsize, MemoryContext metacxt, MemoryContext tablecxt, MemoryContext tempcxt, bool use_variable_hash_iv); extern TupleHashEntry LookupTupleHashEntry(TupleHashTable hashtable, TupleTableSlot *slot, bool *isnew, uint32 *hash); extern uint32 TupleHashTableHash(TupleHashTable hashtable, TupleTableSlot *slot); extern TupleHashEntry LookupTupleHashEntryHash(TupleHashTable hashtable, TupleTableSlot *slot, bool *isnew, uint32 hash); extern TupleHashEntry FindTupleHashEntry(TupleHashTable hashtable, TupleTableSlot *slot, ExprState *eqcomp, FmgrInfo *hashfunctions); extern void ResetTupleHashTable(TupleHashTable hashtable); /* * prototypes from functions in execJunk.c */ extern JunkFilter *ExecInitJunkFilter(List *targetList, TupleTableSlot *slot); extern JunkFilter *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 ExecCheckRTPerms(List *rangeTable, bool ereport_on_violation); extern void CheckValidResultRel(ResultRelInfo *resultRelInfo, CmdType operation); extern void InitResultRelInfo(ResultRelInfo *resultRelInfo, Relation resultRelationDesc, Index resultRelationIndex, ResultRelInfo *partition_root_rri, int instrument_options); extern ResultRelInfo *ExecGetTriggerResultRel(EState *estate, Oid relid, 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 *testslot); extern void EvalPlanQualInit(EPQState *epqstate, EState *parentestate, Plan *subplan, List *auxrowmarks, int epqParam); extern void EvalPlanQualSetPlan(EPQState *epqstate, Plan *subplan, List *auxrowmarks); extern TupleTableSlot *EvalPlanQualSlot(EPQState *epqstate, Relation relation, Index rti); #define EvalPlanQualSetSlot(epqstate, slot) ((epqstate)->origslot = (slot)) extern bool EvalPlanQualFetchRowMark(EPQState *epqstate, Index rti, TupleTableSlot *slot); extern TupleTableSlot *EvalPlanQualNext(EPQState *epqstate); extern void EvalPlanQualBegin(EPQState *epqstate); extern void EvalPlanQualEnd(EPQState *epqstate); /* * functions in execProcnode.c */ extern PlanState *ExecInitNode(Plan *node, EState *estate, int eflags); extern void ExecSetExecProcNode(PlanState *node, ExecProcNodeMtd function); extern Node *MultiExecProcNode(PlanState *node); extern void ExecEndNode(PlanState *node); extern bool ExecShutdownNode(PlanState *node); extern void ExecSetTupleBound(int64 tuples_needed, PlanState *child_node); /* ---------------------------------------------------------------- * ExecProcNode * * Execute the given node to return a(nother) tuple. * ---------------------------------------------------------------- */ #ifndef FRONTEND static inline TupleTableSlot * ExecProcNode(PlanState *node) { if (node->chgParam != NULL) /* something changed? */ ExecReScan(node); /* let ReScan handle this */ return node->ExecProcNode(node); } #endif /* * prototypes from functions in execExpr.c */ extern ExprState *ExecInitExpr(Expr *node, PlanState *parent); extern ExprState *ExecInitExprWithParams(Expr *node, ParamListInfo ext_params); extern ExprState *ExecInitQual(List *qual, PlanState *parent); extern ExprState *ExecInitCheck(List *qual, PlanState *parent); extern List *ExecInitExprList(List *nodes, PlanState *parent); extern ExprState *ExecBuildAggTrans(AggState *aggstate, struct AggStatePerPhaseData *phase, bool doSort, bool doHash, bool nullcheck); extern ExprState *ExecBuildGroupingEqual(TupleDesc ldesc, TupleDesc rdesc, const TupleTableSlotOps *lops, const TupleTableSlotOps *rops, int numCols, const AttrNumber *keyColIdx, const Oid *eqfunctions, const Oid *collations, PlanState *parent); extern 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 *context); /* * prototypes from functions in execSRF.c */ extern SetExprState *ExecInitTableFunctionResult(Expr *expr, ExprContext *econtext, PlanState *parent); extern Tuplestorestate *ExecMakeTableFunctionResult(SetExprState *setexpr, ExprContext *econtext, MemoryContext argContext, TupleDesc expectedDesc, bool randomAccess); extern SetExprState *ExecInitFunctionResultSet(Expr *expr, ExprContext *econtext, PlanState *parent); extern Datum ExecMakeFunctionResultSet(SetExprState *fcache, ExprContext *econtext, MemoryContext argContext, bool *isNull, ExprDoneCond *isDone); /* * prototypes from functions in execScan.c */ typedef TupleTableSlot *(*ExecScanAccessMtd) (ScanState *node); typedef bool (*ExecScanRecheckMtd) (ScanState *node, TupleTableSlot *slot); extern TupleTableSlot *ExecScan(ScanState *node, ExecScanAccessMtd accessMtd, ExecScanRecheckMtd recheckMtd); extern void ExecAssignScanProjectionInfo(ScanState *node); extern void ExecAssignScanProjectionInfoWithVarno(ScanState *node, 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, Datum *values, bool *isnull); extern void do_text_output_multiline(TupOutputState *tstate, const char *txt); extern void end_tup_output(TupOutputState *tstate); /* * Write a single line of text given as a C string. * * Should only be used with a single-TEXT-attribute tupdesc. */ #define do_text_output_oneline(tstate, str_to_emit) \ do { \ Datum values_[1]; \ bool isnull_[1]; \ values_[0] = PointerGetDatum(cstring_to_text(str_to_emit)); \ isnull_[0] = false; \ do_tup_output(tstate, values_, isnull_); \ pfree(DatumGetPointer(values_[0])); \ } while (0) /* * prototypes from functions in execUtils.c */ extern EState *CreateExecutorState(void); extern void FreeExecutorState(EState *estate); extern ExprContext *CreateExprContext(EState *estate); extern ExprContext *CreateWorkExprContext(EState *estate); extern ExprContext *CreateStandaloneExprContext(void); extern void FreeExprContext(ExprContext *econtext, bool isCommit); extern void ReScanExprContext(ExprContext *econtext); #define ResetExprContext(econtext) \ MemoryContextReset((econtext)->ecxt_per_tuple_memory) extern ExprContext *MakePerTupleExprContext(EState *estate); /* Get an EState's per-output-tuple exprcontext, making it if first use */ #define GetPerTupleExprContext(estate) \ ((estate)->es_per_tuple_exprcontext ? \ (estate)->es_per_tuple_exprcontext : \ MakePerTupleExprContext(estate)) #define GetPerTupleMemoryContext(estate) \ (GetPerTupleExprContext(estate)->ecxt_per_tuple_memory) /* Reset an EState's per-output-tuple exprcontext, if one's been created */ #define ResetPerTupleExprContext(estate) \ do { \ if ((estate)->es_per_tuple_exprcontext) \ ResetExprContext((estate)->es_per_tuple_exprcontext); \ } while (0) extern void ExecAssignExprContext(EState *estate, PlanState *planstate); extern TupleDesc ExecGetResultType(PlanState *planstate); extern const TupleTableSlotOps *ExecGetResultSlotOps(PlanState *planstate, bool *isfixed); extern void ExecAssignProjectionInfo(PlanState *planstate, TupleDesc inputDesc); extern void ExecConditionalAssignProjectionInfo(PlanState *planstate, TupleDesc inputDesc, int varno); extern void ExecFreeExprContext(PlanState *planstate); extern void ExecAssignScanType(ScanState *scanstate, TupleDesc tupDesc); extern void ExecCreateScanSlotFromOuterPlan(EState *estate, ScanState *scanstate, const TupleTableSlotOps *tts_ops); extern bool ExecRelationIsTargetRelation(EState *estate, Index scanrelid); extern Relation ExecOpenScanRelation(EState *estate, Index scanrelid, int eflags); extern void ExecInitRangeTable(EState *estate, List *rangeTable); 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 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); 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, Datum *values, bool *isnull, EState *estate, bool newIndex); /* * prototypes from functions in execReplication.c */ extern bool RelationFindReplTupleByIndex(Relation rel, Oid idxoid, LockTupleMode lockmode, TupleTableSlot *searchslot, TupleTableSlot *outslot); extern bool RelationFindReplTupleSeq(Relation rel, LockTupleMode lockmode, TupleTableSlot *searchslot, TupleTableSlot *outslot); extern void ExecSimpleRelationInsert(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 */ pg_query-4.2.3/ext/pg_query/include/jit/0000755000004100000410000000000014510636647020263 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/jit/jit.h0000644000004100000410000000540414510636647021225 0ustar www-datawww-data/*------------------------------------------------------------------------- * jit.h * Provider independent JIT infrastructure. * * Copyright (c) 2016-2022, PostgreSQL Global Development Group * * src/include/jit/jit.h * *------------------------------------------------------------------------- */ #ifndef JIT_H #define JIT_H #include "executor/instrument.h" #include "utils/resowner.h" /* Flags determining what kind of JIT operations to perform */ #define PGJIT_NONE 0 #define PGJIT_PERFORM (1 << 0) #define PGJIT_OPT3 (1 << 1) #define PGJIT_INLINE (1 << 2) #define PGJIT_EXPR (1 << 3) #define PGJIT_DEFORM (1 << 4) typedef struct JitInstrumentation { /* number of emitted functions */ size_t created_functions; /* accumulated time to generate code */ instr_time generation_counter; /* accumulated time for inlining */ instr_time inlining_counter; /* accumulated time for optimization */ instr_time optimization_counter; /* accumulated time for code emission */ instr_time emission_counter; } JitInstrumentation; /* * DSM structure for accumulating jit instrumentation of all workers. */ typedef struct SharedJitInstrumentation { int num_workers; JitInstrumentation jit_instr[FLEXIBLE_ARRAY_MEMBER]; } SharedJitInstrumentation; typedef struct JitContext { /* see PGJIT_* above */ int flags; ResourceOwner resowner; JitInstrumentation instr; } JitContext; typedef struct JitProviderCallbacks JitProviderCallbacks; extern void _PG_jit_provider_init(JitProviderCallbacks *cb); typedef void (*JitProviderInit) (JitProviderCallbacks *cb); typedef void (*JitProviderResetAfterErrorCB) (void); typedef void (*JitProviderReleaseContextCB) (JitContext *context); struct ExprState; typedef bool (*JitProviderCompileExprCB) (struct ExprState *state); struct JitProviderCallbacks { JitProviderResetAfterErrorCB reset_after_error; JitProviderReleaseContextCB release_context; JitProviderCompileExprCB compile_expr; }; /* GUCs */ extern 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 */ pg_query-4.2.3/ext/pg_query/include/pl_unreserved_kwlist.h0000644000004100000410000000733014510636647024123 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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("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) pg_query-4.2.3/ext/pg_query/include/pl_unreserved_kwlist_d.h0000644000004100000410000001003614510636647024423 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pl_unreserved_kwlist_d.h * List of keywords represented as a ScanKeywordList. * * Portions Copyright (c) 1996-2022, 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" "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, 478, 484, 490, 496, 505, 512, 530, 538, 547, 557, 565, 572, 584, 591, 597, 606, 614, 620, 631, 636, 647, 660, 678, }; #define UNRESERVEDPLKEYWORDS_NUM_KEYWORDS 82 static int UnreservedPLKeywords_hash_func(const void *key, size_t keylen) { static const int16 h[165] = { 58, 0, 26, 32767, 0, 0, 9, 32767, 0, 32767, 37, 74, 32767, -7, 32767, 39, 58, -5, 32767, 31, 32767, 32767, 75, -23, 32767, 0, 32767, 32767, 32767, -14, 32767, 81, 32767, 32767, 32767, -36, -9, 32767, 32767, 32767, 40, 32767, 54, 10, 11, 43, 32767, 0, 52, 105, -22, 15, 32767, -33, 49, -65, 48, 32767, 32767, 32767, 25, 49, -47, 37, 21, 32767, 32767, -15, 70, 32767, 32767, 64, -10, 126, 32767, 51, 0, 36, 32767, -55, -22, 32767, 32767, 32767, 32767, 32767, -26, -35, 32767, 61, 32767, 32767, 32767, -23, 98, 48, 23, 19, 32767, 7, 35, 5, -18, 71, 28, 5, 32767, 32767, 32767, 74, 32767, 82, 32767, 0, 32767, 32767, 66, 0, 0, 50, 32767, 32767, 5, 2, 0, 32767, 55, 32767, 32767, 45, 79, 32767, 32767, 73, 22, 0, 103, 32767, -20, 72, 32767, 0, 29, 32767, 0, 32767, 32767, 0, 50, 28, 32767, -40, 32767, 32767, 34, 56, 32767, 32767, 32767, 17, -36, 32767, 67, 32767, 0 }; 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 * 8191 + c; } return h[a % 165] + h[b % 165]; } static const ScanKeywordList UnreservedPLKeywords = { UnreservedPLKeywords_kw_string, UnreservedPLKeywords_kw_offsets, UnreservedPLKeywords_hash_func, UNRESERVEDPLKEYWORDS_NUM_KEYWORDS, 20 }; #endif /* PL_UNRESERVED_KWLIST_D_H */ pg_query-4.2.3/ext/pg_query/include/funcapi.h0000644000004100000410000003122414510636647021275 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * * src/include/funcapi.h * *------------------------------------------------------------------------- */ #ifndef FUNCAPI_H #define FUNCAPI_H #include "access/tupdesc.h" #include "executor/executor.h" #include "executor/tuptable.h" #include "fmgr.h" /*------------------------------------------------------------------------- * Support to ease writing Functions returning composite types *------------------------------------------------------------------------- * * This struct holds arrays of individual attribute information * needed to create a tuple from raw C strings. It also requires * a copy of the TupleDesc. The information carried here * is derived from the TupleDesc, but it is stored here to * avoid redundant cpu cycles on each call to an SRF. */ typedef struct AttInMetadata { /* full TupleDesc */ TupleDesc tupdesc; /* array of attribute type input function finfo */ FmgrInfo *attinfuncs; /* array of attribute type i/o parameter OIDs */ Oid *attioparams; /* array of attribute typmod */ int32 *atttypmods; } AttInMetadata; /*------------------------------------------------------------------------- * Support struct to ease writing Set Returning Functions (SRFs) *------------------------------------------------------------------------- * * This struct holds function context for Set Returning Functions. * Use fn_extra to hold a pointer to it across calls */ typedef struct FuncCallContext { /* * Number of times we've been called before * * call_cntr is initialized to 0 for you by SRF_FIRSTCALL_INIT(), and * incremented for you every time SRF_RETURN_NEXT() is called. */ uint64 call_cntr; /* * OPTIONAL maximum number of calls * * max_calls is here for convenience only and setting it is optional. If * not set, you must provide alternative means to know when the function * is done. */ uint64 max_calls; /* * OPTIONAL pointer to miscellaneous user-provided context information * * user_fctx is for use as a pointer to your own struct to retain * arbitrary context information between calls of your function. */ void *user_fctx; /* * OPTIONAL pointer to struct containing attribute type input metadata * * attinmeta is for use when returning tuples (i.e. composite data types) * and is not used when returning base data types. It is only needed if * you intend to use BuildTupleFromCStrings() to create the return tuple. */ AttInMetadata *attinmeta; /* * memory context used for structures that must live for multiple calls * * multi_call_memory_ctx is set by SRF_FIRSTCALL_INIT() for you, and used * by SRF_RETURN_DONE() for cleanup. It is the most appropriate memory * context for any memory that is to be reused across multiple calls of * the SRF. */ MemoryContext multi_call_memory_ctx; /* * OPTIONAL pointer to struct containing tuple description * * tuple_desc is for use when returning tuples (i.e. composite data types) * and is only needed if you are going to build the tuples with * heap_form_tuple() rather than with BuildTupleFromCStrings(). Note that * the TupleDesc pointer stored here should usually have been run through * BlessTupleDesc() first. */ TupleDesc tuple_desc; } FuncCallContext; /*---------- * Support to ease writing functions returning composite types * * External declarations: * get_call_result_type: * Given a function's call info record, determine the kind of datatype * it is supposed to return. If resultTypeId isn't NULL, *resultTypeId * receives the actual datatype OID (this is mainly useful for scalar * result types). If resultTupleDesc isn't NULL, *resultTupleDesc * receives a pointer to a TupleDesc when the result is of a composite * type, or NULL when it's a scalar result or the rowtype could not be * determined. NB: the tupledesc should be copied if it is to be * accessed over a long period. * get_expr_result_type: * Given an expression node, return the same info as for * get_call_result_type. Note: the cases in which rowtypes cannot be * determined are different from the cases for get_call_result_type. * get_func_result_type: * Given only a function's OID, return the same info as for * get_call_result_type. Note: the cases in which rowtypes cannot be * determined are different from the cases for get_call_result_type. * Do *not* use this if you can use one of the others. * * See also get_expr_result_tupdesc(), which is a convenient wrapper around * get_expr_result_type() for use when the caller only cares about * determinable-rowtype cases. *---------- */ /* Type categories for get_call_result_type and siblings */ typedef enum TypeFuncClass { TYPEFUNC_SCALAR, /* scalar result type */ TYPEFUNC_COMPOSITE, /* determinable rowtype result */ TYPEFUNC_COMPOSITE_DOMAIN, /* domain over determinable rowtype result */ TYPEFUNC_RECORD, /* indeterminate rowtype result */ TYPEFUNC_OTHER /* bogus type, eg pseudotype */ } TypeFuncClass; extern TypeFuncClass get_call_result_type(FunctionCallInfo fcinfo, Oid *resultTypeId, TupleDesc *resultTupleDesc); extern TypeFuncClass get_expr_result_type(Node *expr, Oid *resultTypeId, TupleDesc *resultTupleDesc); extern TypeFuncClass get_func_result_type(Oid functionId, Oid *resultTypeId, TupleDesc *resultTupleDesc); extern TupleDesc get_expr_result_tupdesc(Node *expr, bool noError); extern bool resolve_polymorphic_argtypes(int numargs, Oid *argtypes, char *argmodes, Node *call_expr); extern int get_func_arg_info(HeapTuple procTup, Oid **p_argtypes, char ***p_argnames, char **p_argmodes); extern int get_func_input_arg_names(Datum proargnames, Datum proargmodes, char ***arg_names); extern int get_func_trftypes(HeapTuple procTup, Oid **p_trftypes); extern char *get_func_result_name(Oid functionId); extern TupleDesc build_function_result_tupdesc_d(char prokind, Datum proallargtypes, Datum proargmodes, Datum proargnames); extern TupleDesc build_function_result_tupdesc_t(HeapTuple procTuple); /*---------- * Support to ease writing functions returning composite types * * External declarations: * TupleDesc BlessTupleDesc(TupleDesc tupdesc) - "Bless" a completed tuple * descriptor so that it can be used to return properly labeled tuples. * You need to call this if you are going to use heap_form_tuple directly. * TupleDescGetAttInMetadata does it for you, however, so no need to call * it if you call TupleDescGetAttInMetadata. * AttInMetadata *TupleDescGetAttInMetadata(TupleDesc tupdesc) - Build an * AttInMetadata struct based on the given TupleDesc. AttInMetadata can * be used in conjunction with C strings to produce a properly formed * tuple. * HeapTuple BuildTupleFromCStrings(AttInMetadata *attinmeta, char **values) - * build a HeapTuple given user data in C string form. values is an array * of C strings, one for each attribute of the return tuple. * Datum HeapTupleHeaderGetDatum(HeapTupleHeader tuple) - convert a * HeapTupleHeader to a Datum. * * Macro declarations: * HeapTupleGetDatum(HeapTuple tuple) - convert a HeapTuple to a Datum. * * Obsolete routines and macros: * TupleDesc RelationNameGetTupleDesc(const char *relname) - Use to get a * TupleDesc based on a named relation. * TupleDesc TypeGetTupleDesc(Oid typeoid, List *colaliases) - Use to get a * TupleDesc based on a type OID. * TupleGetDatum(TupleTableSlot *slot, HeapTuple tuple) - get a Datum * given a tuple and a slot. *---------- */ #define HeapTupleGetDatum(tuple) HeapTupleHeaderGetDatum((tuple)->t_data) /* obsolete version of above */ #define TupleGetDatum(_slot, _tuple) HeapTupleGetDatum(_tuple) extern TupleDesc RelationNameGetTupleDesc(const char *relname); extern TupleDesc TypeGetTupleDesc(Oid typeoid, List *colaliases); /* from execTuples.c */ extern TupleDesc BlessTupleDesc(TupleDesc tupdesc); extern AttInMetadata *TupleDescGetAttInMetadata(TupleDesc tupdesc); extern HeapTuple BuildTupleFromCStrings(AttInMetadata *attinmeta, char **values); extern Datum HeapTupleHeaderGetDatum(HeapTupleHeader tuple); /*---------- * Support for Set Returning Functions (SRFs) * * The basic API for SRFs using ValuePerCall mode looks something like this: * * Datum * my_Set_Returning_Function(PG_FUNCTION_ARGS) * { * FuncCallContext *funcctx; * Datum result; * MemoryContext oldcontext; * * * if (SRF_IS_FIRSTCALL()) * { * funcctx = SRF_FIRSTCALL_INIT(); * // switch context when allocating stuff to be used in later calls * oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx); * * * * * * // return to original context when allocating transient memory * MemoryContextSwitchTo(oldcontext); * } * * funcctx = SRF_PERCALL_SETUP(); * * * if (funcctx->call_cntr < funcctx->max_calls) * { * * * SRF_RETURN_NEXT(funcctx, result); * } * else * SRF_RETURN_DONE(funcctx); * } * * NOTE: there is no guarantee that a SRF using ValuePerCall mode will be * run to completion; for example, a query with LIMIT might stop short of * fetching all the rows. Therefore, do not expect that you can do resource * cleanup just before SRF_RETURN_DONE(). You need not worry about releasing * memory allocated in multi_call_memory_ctx, but holding file descriptors or * other non-memory resources open across calls is a bug. SRFs that need * such resources should not use these macros, but instead populate a * tuplestore during a single call, 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); /* Compatibility declarations, for v15 */ #define SRF_SINGLE_USE_EXPECTED MAT_SRF_USE_EXPECTED_DESC #define SRF_SINGLE_BLESS MAT_SRF_BLESS extern void SetSingleFuncCall(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 **values, Oid **types, bool **nulls); #endif /* FUNCAPI_H */ pg_query-4.2.3/ext/pg_query/include/pg_query_fingerprint_conds.c0000644000004100000410000007712214510636647025302 0ustar www-datawww-datacase 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_Var: _fingerprintString(ctx, "Var"); _fingerprintVar(ctx, obj, parent, field_name, depth); break; case T_Const: _fingerprintString(ctx, "Const"); _fingerprintConst(ctx, obj, parent, field_name, depth); break; case T_Param: _fingerprintString(ctx, "Param"); _fingerprintParam(ctx, obj, parent, field_name, depth); break; case T_Aggref: _fingerprintString(ctx, "Aggref"); _fingerprintAggref(ctx, obj, parent, field_name, depth); break; case T_GroupingFunc: _fingerprintString(ctx, "GroupingFunc"); _fingerprintGroupingFunc(ctx, obj, parent, field_name, depth); break; case T_WindowFunc: _fingerprintString(ctx, "WindowFunc"); _fingerprintWindowFunc(ctx, obj, parent, field_name, depth); break; case T_SubscriptingRef: _fingerprintString(ctx, "SubscriptingRef"); _fingerprintSubscriptingRef(ctx, obj, parent, field_name, depth); break; case T_FuncExpr: _fingerprintString(ctx, "FuncExpr"); _fingerprintFuncExpr(ctx, obj, parent, field_name, depth); break; case T_NamedArgExpr: _fingerprintString(ctx, "NamedArgExpr"); _fingerprintNamedArgExpr(ctx, obj, parent, field_name, depth); break; case T_OpExpr: _fingerprintString(ctx, "OpExpr"); _fingerprintOpExpr(ctx, obj, parent, field_name, depth); break; case T_ScalarArrayOpExpr: _fingerprintString(ctx, "ScalarArrayOpExpr"); _fingerprintScalarArrayOpExpr(ctx, obj, parent, field_name, depth); break; case T_BoolExpr: _fingerprintString(ctx, "BoolExpr"); _fingerprintBoolExpr(ctx, obj, parent, field_name, depth); break; case T_SubLink: _fingerprintString(ctx, "SubLink"); _fingerprintSubLink(ctx, obj, parent, field_name, depth); break; case T_SubPlan: _fingerprintString(ctx, "SubPlan"); _fingerprintSubPlan(ctx, obj, parent, field_name, depth); break; case T_AlternativeSubPlan: _fingerprintString(ctx, "AlternativeSubPlan"); _fingerprintAlternativeSubPlan(ctx, obj, parent, field_name, depth); break; case T_FieldSelect: _fingerprintString(ctx, "FieldSelect"); _fingerprintFieldSelect(ctx, obj, parent, field_name, depth); break; case T_FieldStore: _fingerprintString(ctx, "FieldStore"); _fingerprintFieldStore(ctx, obj, parent, field_name, depth); break; case T_RelabelType: _fingerprintString(ctx, "RelabelType"); _fingerprintRelabelType(ctx, obj, parent, field_name, depth); break; case T_CoerceViaIO: _fingerprintString(ctx, "CoerceViaIO"); _fingerprintCoerceViaIO(ctx, obj, parent, field_name, depth); break; case T_ArrayCoerceExpr: _fingerprintString(ctx, "ArrayCoerceExpr"); _fingerprintArrayCoerceExpr(ctx, obj, parent, field_name, depth); break; case T_ConvertRowtypeExpr: _fingerprintString(ctx, "ConvertRowtypeExpr"); _fingerprintConvertRowtypeExpr(ctx, obj, parent, field_name, depth); break; case T_CollateExpr: _fingerprintString(ctx, "CollateExpr"); _fingerprintCollateExpr(ctx, obj, parent, field_name, depth); break; case T_CaseExpr: _fingerprintString(ctx, "CaseExpr"); _fingerprintCaseExpr(ctx, obj, parent, field_name, depth); break; case T_CaseWhen: _fingerprintString(ctx, "CaseWhen"); _fingerprintCaseWhen(ctx, obj, parent, field_name, depth); break; case T_CaseTestExpr: _fingerprintString(ctx, "CaseTestExpr"); _fingerprintCaseTestExpr(ctx, obj, parent, field_name, depth); break; case T_ArrayExpr: _fingerprintString(ctx, "ArrayExpr"); _fingerprintArrayExpr(ctx, obj, parent, field_name, depth); break; case T_RowExpr: _fingerprintString(ctx, "RowExpr"); _fingerprintRowExpr(ctx, obj, parent, field_name, depth); break; case T_RowCompareExpr: _fingerprintString(ctx, "RowCompareExpr"); _fingerprintRowCompareExpr(ctx, obj, parent, field_name, depth); break; case T_CoalesceExpr: _fingerprintString(ctx, "CoalesceExpr"); _fingerprintCoalesceExpr(ctx, obj, parent, field_name, depth); break; case T_MinMaxExpr: _fingerprintString(ctx, "MinMaxExpr"); _fingerprintMinMaxExpr(ctx, obj, parent, field_name, depth); break; case T_SQLValueFunction: _fingerprintString(ctx, "SQLValueFunction"); _fingerprintSQLValueFunction(ctx, obj, parent, field_name, depth); break; case T_XmlExpr: _fingerprintString(ctx, "XmlExpr"); _fingerprintXmlExpr(ctx, obj, parent, field_name, depth); break; case T_NullTest: _fingerprintString(ctx, "NullTest"); _fingerprintNullTest(ctx, obj, parent, field_name, depth); break; case T_BooleanTest: _fingerprintString(ctx, "BooleanTest"); _fingerprintBooleanTest(ctx, obj, parent, field_name, depth); break; case T_CoerceToDomain: _fingerprintString(ctx, "CoerceToDomain"); _fingerprintCoerceToDomain(ctx, obj, parent, field_name, depth); break; case T_CoerceToDomainValue: _fingerprintString(ctx, "CoerceToDomainValue"); _fingerprintCoerceToDomainValue(ctx, obj, parent, field_name, depth); break; case T_SetToDefault: // Intentionally ignoring for fingerprinting break; case T_CurrentOfExpr: _fingerprintString(ctx, "CurrentOfExpr"); _fingerprintCurrentOfExpr(ctx, obj, parent, field_name, depth); break; case T_NextValueExpr: _fingerprintString(ctx, "NextValueExpr"); _fingerprintNextValueExpr(ctx, obj, parent, field_name, depth); break; case T_InferenceElem: _fingerprintString(ctx, "InferenceElem"); _fingerprintInferenceElem(ctx, obj, parent, field_name, depth); break; case T_TargetEntry: _fingerprintString(ctx, "TargetEntry"); _fingerprintTargetEntry(ctx, obj, parent, field_name, depth); break; case T_RangeTblRef: _fingerprintString(ctx, "RangeTblRef"); _fingerprintRangeTblRef(ctx, obj, parent, field_name, depth); break; case T_JoinExpr: _fingerprintString(ctx, "JoinExpr"); _fingerprintJoinExpr(ctx, obj, parent, field_name, depth); break; case T_FromExpr: _fingerprintString(ctx, "FromExpr"); _fingerprintFromExpr(ctx, obj, parent, field_name, depth); break; case T_OnConflictExpr: _fingerprintString(ctx, "OnConflictExpr"); _fingerprintOnConflictExpr(ctx, obj, parent, field_name, depth); break; case T_IntoClause: _fingerprintString(ctx, "IntoClause"); _fingerprintIntoClause(ctx, obj, parent, field_name, depth); break; case T_MergeAction: _fingerprintString(ctx, "MergeAction"); _fingerprintMergeAction(ctx, obj, parent, field_name, depth); break; case T_RawStmt: _fingerprintString(ctx, "RawStmt"); _fingerprintRawStmt(ctx, obj, parent, field_name, depth); break; case T_Query: _fingerprintString(ctx, "Query"); _fingerprintQuery(ctx, obj, parent, field_name, depth); break; case T_InsertStmt: _fingerprintString(ctx, "InsertStmt"); _fingerprintInsertStmt(ctx, obj, parent, field_name, depth); break; case T_DeleteStmt: _fingerprintString(ctx, "DeleteStmt"); _fingerprintDeleteStmt(ctx, obj, parent, field_name, depth); break; case T_UpdateStmt: _fingerprintString(ctx, "UpdateStmt"); _fingerprintUpdateStmt(ctx, obj, parent, field_name, depth); break; case T_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_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_AlterTableStmt: _fingerprintString(ctx, "AlterTableStmt"); _fingerprintAlterTableStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTableCmd: _fingerprintString(ctx, "AlterTableCmd"); _fingerprintAlterTableCmd(ctx, obj, parent, field_name, depth); break; case T_AlterDomainStmt: _fingerprintString(ctx, "AlterDomainStmt"); _fingerprintAlterDomainStmt(ctx, obj, parent, field_name, depth); break; case T_SetOperationStmt: _fingerprintString(ctx, "SetOperationStmt"); _fingerprintSetOperationStmt(ctx, obj, parent, field_name, depth); break; case T_GrantStmt: _fingerprintString(ctx, "GrantStmt"); _fingerprintGrantStmt(ctx, obj, parent, field_name, depth); break; case T_GrantRoleStmt: _fingerprintString(ctx, "GrantRoleStmt"); _fingerprintGrantRoleStmt(ctx, obj, parent, field_name, depth); break; case T_AlterDefaultPrivilegesStmt: _fingerprintString(ctx, "AlterDefaultPrivilegesStmt"); _fingerprintAlterDefaultPrivilegesStmt(ctx, obj, parent, field_name, depth); break; case T_ClosePortalStmt: _fingerprintString(ctx, "ClosePortalStmt"); _fingerprintClosePortalStmt(ctx, obj, parent, field_name, depth); break; case T_ClusterStmt: _fingerprintString(ctx, "ClusterStmt"); _fingerprintClusterStmt(ctx, obj, parent, field_name, depth); break; case T_CopyStmt: _fingerprintString(ctx, "CopyStmt"); _fingerprintCopyStmt(ctx, obj, parent, field_name, depth); break; case T_CreateStmt: _fingerprintString(ctx, "CreateStmt"); _fingerprintCreateStmt(ctx, obj, parent, field_name, depth); break; case T_DefineStmt: _fingerprintString(ctx, "DefineStmt"); _fingerprintDefineStmt(ctx, obj, parent, field_name, depth); break; case T_DropStmt: _fingerprintString(ctx, "DropStmt"); _fingerprintDropStmt(ctx, obj, parent, field_name, depth); break; case T_TruncateStmt: _fingerprintString(ctx, "TruncateStmt"); _fingerprintTruncateStmt(ctx, obj, parent, field_name, depth); break; case T_CommentStmt: _fingerprintString(ctx, "CommentStmt"); _fingerprintCommentStmt(ctx, obj, parent, field_name, depth); break; case T_FetchStmt: _fingerprintString(ctx, "FetchStmt"); _fingerprintFetchStmt(ctx, obj, parent, field_name, depth); break; case T_IndexStmt: _fingerprintString(ctx, "IndexStmt"); _fingerprintIndexStmt(ctx, obj, parent, field_name, depth); break; case T_CreateFunctionStmt: _fingerprintString(ctx, "CreateFunctionStmt"); _fingerprintCreateFunctionStmt(ctx, obj, parent, field_name, depth); break; case T_AlterFunctionStmt: _fingerprintString(ctx, "AlterFunctionStmt"); _fingerprintAlterFunctionStmt(ctx, obj, parent, field_name, depth); break; case T_DoStmt: _fingerprintString(ctx, "DoStmt"); _fingerprintDoStmt(ctx, obj, parent, field_name, depth); break; case T_RenameStmt: _fingerprintString(ctx, "RenameStmt"); _fingerprintRenameStmt(ctx, obj, parent, field_name, depth); break; case T_RuleStmt: _fingerprintString(ctx, "RuleStmt"); _fingerprintRuleStmt(ctx, obj, parent, field_name, depth); break; case T_NotifyStmt: _fingerprintString(ctx, "NotifyStmt"); _fingerprintNotifyStmt(ctx, obj, parent, field_name, depth); break; case T_ListenStmt: _fingerprintString(ctx, "ListenStmt"); _fingerprintListenStmt(ctx, obj, parent, field_name, depth); break; case T_UnlistenStmt: _fingerprintString(ctx, "UnlistenStmt"); _fingerprintUnlistenStmt(ctx, obj, parent, field_name, depth); break; case T_TransactionStmt: _fingerprintString(ctx, "TransactionStmt"); _fingerprintTransactionStmt(ctx, obj, parent, field_name, depth); break; case T_ViewStmt: _fingerprintString(ctx, "ViewStmt"); _fingerprintViewStmt(ctx, obj, parent, field_name, depth); break; case T_LoadStmt: _fingerprintString(ctx, "LoadStmt"); _fingerprintLoadStmt(ctx, obj, parent, field_name, depth); break; case T_CreateDomainStmt: _fingerprintString(ctx, "CreateDomainStmt"); _fingerprintCreateDomainStmt(ctx, obj, parent, field_name, depth); break; case T_CreatedbStmt: _fingerprintString(ctx, "CreatedbStmt"); _fingerprintCreatedbStmt(ctx, obj, parent, field_name, depth); break; case T_DropdbStmt: _fingerprintString(ctx, "DropdbStmt"); _fingerprintDropdbStmt(ctx, obj, parent, field_name, depth); break; case T_VacuumStmt: _fingerprintString(ctx, "VacuumStmt"); _fingerprintVacuumStmt(ctx, obj, parent, field_name, depth); break; case T_ExplainStmt: _fingerprintString(ctx, "ExplainStmt"); _fingerprintExplainStmt(ctx, obj, parent, field_name, depth); break; case T_CreateTableAsStmt: _fingerprintString(ctx, "CreateTableAsStmt"); _fingerprintCreateTableAsStmt(ctx, obj, parent, field_name, depth); break; case T_CreateSeqStmt: _fingerprintString(ctx, "CreateSeqStmt"); _fingerprintCreateSeqStmt(ctx, obj, parent, field_name, depth); break; case T_AlterSeqStmt: _fingerprintString(ctx, "AlterSeqStmt"); _fingerprintAlterSeqStmt(ctx, obj, parent, field_name, depth); break; case T_VariableSetStmt: _fingerprintString(ctx, "VariableSetStmt"); _fingerprintVariableSetStmt(ctx, obj, parent, field_name, depth); break; case T_VariableShowStmt: _fingerprintString(ctx, "VariableShowStmt"); _fingerprintVariableShowStmt(ctx, obj, parent, field_name, depth); break; case T_DiscardStmt: _fingerprintString(ctx, "DiscardStmt"); _fingerprintDiscardStmt(ctx, obj, parent, field_name, depth); break; case T_CreateTrigStmt: _fingerprintString(ctx, "CreateTrigStmt"); _fingerprintCreateTrigStmt(ctx, obj, parent, field_name, depth); break; case T_CreatePLangStmt: _fingerprintString(ctx, "CreatePLangStmt"); _fingerprintCreatePLangStmt(ctx, obj, parent, field_name, depth); break; case T_CreateRoleStmt: _fingerprintString(ctx, "CreateRoleStmt"); _fingerprintCreateRoleStmt(ctx, obj, parent, field_name, depth); break; case T_AlterRoleStmt: _fingerprintString(ctx, "AlterRoleStmt"); _fingerprintAlterRoleStmt(ctx, obj, parent, field_name, depth); break; case T_DropRoleStmt: _fingerprintString(ctx, "DropRoleStmt"); _fingerprintDropRoleStmt(ctx, obj, parent, field_name, depth); break; case T_LockStmt: _fingerprintString(ctx, "LockStmt"); _fingerprintLockStmt(ctx, obj, parent, field_name, depth); break; case T_ConstraintsSetStmt: _fingerprintString(ctx, "ConstraintsSetStmt"); _fingerprintConstraintsSetStmt(ctx, obj, parent, field_name, depth); break; case T_ReindexStmt: _fingerprintString(ctx, "ReindexStmt"); _fingerprintReindexStmt(ctx, obj, parent, field_name, depth); break; case T_CheckPointStmt: _fingerprintString(ctx, "CheckPointStmt"); _fingerprintCheckPointStmt(ctx, obj, parent, field_name, depth); break; case T_CreateSchemaStmt: _fingerprintString(ctx, "CreateSchemaStmt"); _fingerprintCreateSchemaStmt(ctx, obj, parent, field_name, depth); break; case T_AlterDatabaseStmt: _fingerprintString(ctx, "AlterDatabaseStmt"); _fingerprintAlterDatabaseStmt(ctx, obj, parent, field_name, depth); break; case T_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_AlterRoleSetStmt: _fingerprintString(ctx, "AlterRoleSetStmt"); _fingerprintAlterRoleSetStmt(ctx, obj, parent, field_name, depth); break; case T_CreateConversionStmt: _fingerprintString(ctx, "CreateConversionStmt"); _fingerprintCreateConversionStmt(ctx, obj, parent, field_name, depth); break; case T_CreateCastStmt: _fingerprintString(ctx, "CreateCastStmt"); _fingerprintCreateCastStmt(ctx, obj, parent, field_name, depth); break; case T_CreateOpClassStmt: _fingerprintString(ctx, "CreateOpClassStmt"); _fingerprintCreateOpClassStmt(ctx, obj, parent, field_name, depth); break; case T_CreateOpFamilyStmt: _fingerprintString(ctx, "CreateOpFamilyStmt"); _fingerprintCreateOpFamilyStmt(ctx, obj, parent, field_name, depth); break; case T_AlterOpFamilyStmt: _fingerprintString(ctx, "AlterOpFamilyStmt"); _fingerprintAlterOpFamilyStmt(ctx, obj, parent, field_name, depth); break; case T_PrepareStmt: _fingerprintString(ctx, "PrepareStmt"); _fingerprintPrepareStmt(ctx, obj, parent, field_name, depth); break; case T_ExecuteStmt: _fingerprintString(ctx, "ExecuteStmt"); _fingerprintExecuteStmt(ctx, obj, parent, field_name, depth); break; case T_DeallocateStmt: _fingerprintString(ctx, "DeallocateStmt"); _fingerprintDeallocateStmt(ctx, obj, parent, field_name, depth); break; case T_DeclareCursorStmt: _fingerprintString(ctx, "DeclareCursorStmt"); _fingerprintDeclareCursorStmt(ctx, obj, parent, field_name, depth); break; case T_CreateTableSpaceStmt: _fingerprintString(ctx, "CreateTableSpaceStmt"); _fingerprintCreateTableSpaceStmt(ctx, obj, parent, field_name, depth); break; case T_DropTableSpaceStmt: _fingerprintString(ctx, "DropTableSpaceStmt"); _fingerprintDropTableSpaceStmt(ctx, obj, parent, field_name, depth); break; case T_AlterObjectDependsStmt: _fingerprintString(ctx, "AlterObjectDependsStmt"); _fingerprintAlterObjectDependsStmt(ctx, obj, parent, field_name, depth); break; case T_AlterObjectSchemaStmt: _fingerprintString(ctx, "AlterObjectSchemaStmt"); _fingerprintAlterObjectSchemaStmt(ctx, obj, parent, field_name, depth); break; case T_AlterOwnerStmt: _fingerprintString(ctx, "AlterOwnerStmt"); _fingerprintAlterOwnerStmt(ctx, obj, parent, field_name, depth); break; case T_AlterOperatorStmt: _fingerprintString(ctx, "AlterOperatorStmt"); _fingerprintAlterOperatorStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTypeStmt: _fingerprintString(ctx, "AlterTypeStmt"); _fingerprintAlterTypeStmt(ctx, obj, parent, field_name, depth); break; case T_DropOwnedStmt: _fingerprintString(ctx, "DropOwnedStmt"); _fingerprintDropOwnedStmt(ctx, obj, parent, field_name, depth); break; case T_ReassignOwnedStmt: _fingerprintString(ctx, "ReassignOwnedStmt"); _fingerprintReassignOwnedStmt(ctx, obj, parent, field_name, depth); break; case T_CompositeTypeStmt: _fingerprintString(ctx, "CompositeTypeStmt"); _fingerprintCompositeTypeStmt(ctx, obj, parent, field_name, depth); break; case T_CreateEnumStmt: _fingerprintString(ctx, "CreateEnumStmt"); _fingerprintCreateEnumStmt(ctx, obj, parent, field_name, depth); break; case T_CreateRangeStmt: _fingerprintString(ctx, "CreateRangeStmt"); _fingerprintCreateRangeStmt(ctx, obj, parent, field_name, depth); break; case T_AlterEnumStmt: _fingerprintString(ctx, "AlterEnumStmt"); _fingerprintAlterEnumStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTSDictionaryStmt: _fingerprintString(ctx, "AlterTSDictionaryStmt"); _fingerprintAlterTSDictionaryStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTSConfigurationStmt: _fingerprintString(ctx, "AlterTSConfigurationStmt"); _fingerprintAlterTSConfigurationStmt(ctx, obj, parent, field_name, depth); break; case T_CreateFdwStmt: _fingerprintString(ctx, "CreateFdwStmt"); _fingerprintCreateFdwStmt(ctx, obj, parent, field_name, depth); break; case T_AlterFdwStmt: _fingerprintString(ctx, "AlterFdwStmt"); _fingerprintAlterFdwStmt(ctx, obj, parent, field_name, depth); break; case T_CreateForeignServerStmt: _fingerprintString(ctx, "CreateForeignServerStmt"); _fingerprintCreateForeignServerStmt(ctx, obj, parent, field_name, depth); break; case T_AlterForeignServerStmt: _fingerprintString(ctx, "AlterForeignServerStmt"); _fingerprintAlterForeignServerStmt(ctx, obj, parent, field_name, depth); break; case T_CreateUserMappingStmt: _fingerprintString(ctx, "CreateUserMappingStmt"); _fingerprintCreateUserMappingStmt(ctx, obj, parent, field_name, depth); break; case T_AlterUserMappingStmt: _fingerprintString(ctx, "AlterUserMappingStmt"); _fingerprintAlterUserMappingStmt(ctx, obj, parent, field_name, depth); break; case T_DropUserMappingStmt: _fingerprintString(ctx, "DropUserMappingStmt"); _fingerprintDropUserMappingStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTableSpaceOptionsStmt: _fingerprintString(ctx, "AlterTableSpaceOptionsStmt"); _fingerprintAlterTableSpaceOptionsStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTableMoveAllStmt: _fingerprintString(ctx, "AlterTableMoveAllStmt"); _fingerprintAlterTableMoveAllStmt(ctx, obj, parent, field_name, depth); break; case T_SecLabelStmt: _fingerprintString(ctx, "SecLabelStmt"); _fingerprintSecLabelStmt(ctx, obj, parent, field_name, depth); break; case T_CreateForeignTableStmt: _fingerprintString(ctx, "CreateForeignTableStmt"); _fingerprintCreateForeignTableStmt(ctx, obj, parent, field_name, depth); break; case T_ImportForeignSchemaStmt: _fingerprintString(ctx, "ImportForeignSchemaStmt"); _fingerprintImportForeignSchemaStmt(ctx, obj, parent, field_name, depth); break; case T_CreateExtensionStmt: _fingerprintString(ctx, "CreateExtensionStmt"); _fingerprintCreateExtensionStmt(ctx, obj, parent, field_name, depth); break; case T_AlterExtensionStmt: _fingerprintString(ctx, "AlterExtensionStmt"); _fingerprintAlterExtensionStmt(ctx, obj, parent, field_name, depth); break; case T_AlterExtensionContentsStmt: _fingerprintString(ctx, "AlterExtensionContentsStmt"); _fingerprintAlterExtensionContentsStmt(ctx, obj, parent, field_name, depth); break; case T_CreateEventTrigStmt: _fingerprintString(ctx, "CreateEventTrigStmt"); _fingerprintCreateEventTrigStmt(ctx, obj, parent, field_name, depth); break; case T_AlterEventTrigStmt: _fingerprintString(ctx, "AlterEventTrigStmt"); _fingerprintAlterEventTrigStmt(ctx, obj, parent, field_name, depth); break; case T_RefreshMatViewStmt: _fingerprintString(ctx, "RefreshMatViewStmt"); _fingerprintRefreshMatViewStmt(ctx, obj, parent, field_name, depth); break; case T_ReplicaIdentityStmt: _fingerprintString(ctx, "ReplicaIdentityStmt"); _fingerprintReplicaIdentityStmt(ctx, obj, parent, field_name, depth); break; case T_AlterSystemStmt: _fingerprintString(ctx, "AlterSystemStmt"); _fingerprintAlterSystemStmt(ctx, obj, parent, field_name, depth); break; case T_CreatePolicyStmt: _fingerprintString(ctx, "CreatePolicyStmt"); _fingerprintCreatePolicyStmt(ctx, obj, parent, field_name, depth); break; case T_AlterPolicyStmt: _fingerprintString(ctx, "AlterPolicyStmt"); _fingerprintAlterPolicyStmt(ctx, obj, parent, field_name, depth); break; case T_CreateTransformStmt: _fingerprintString(ctx, "CreateTransformStmt"); _fingerprintCreateTransformStmt(ctx, obj, parent, field_name, depth); break; case T_CreateAmStmt: _fingerprintString(ctx, "CreateAmStmt"); _fingerprintCreateAmStmt(ctx, obj, parent, field_name, depth); break; case T_CreatePublicationStmt: _fingerprintString(ctx, "CreatePublicationStmt"); _fingerprintCreatePublicationStmt(ctx, obj, parent, field_name, depth); break; case T_AlterPublicationStmt: _fingerprintString(ctx, "AlterPublicationStmt"); _fingerprintAlterPublicationStmt(ctx, obj, parent, field_name, depth); break; case T_CreateSubscriptionStmt: _fingerprintString(ctx, "CreateSubscriptionStmt"); _fingerprintCreateSubscriptionStmt(ctx, obj, parent, field_name, depth); break; case T_AlterSubscriptionStmt: _fingerprintString(ctx, "AlterSubscriptionStmt"); _fingerprintAlterSubscriptionStmt(ctx, obj, parent, field_name, depth); break; case T_DropSubscriptionStmt: _fingerprintString(ctx, "DropSubscriptionStmt"); _fingerprintDropSubscriptionStmt(ctx, obj, parent, field_name, depth); break; case T_CreateStatsStmt: _fingerprintString(ctx, "CreateStatsStmt"); _fingerprintCreateStatsStmt(ctx, obj, parent, field_name, depth); break; case T_AlterCollationStmt: _fingerprintString(ctx, "AlterCollationStmt"); _fingerprintAlterCollationStmt(ctx, obj, parent, field_name, depth); break; case T_CallStmt: _fingerprintString(ctx, "CallStmt"); _fingerprintCallStmt(ctx, obj, parent, field_name, depth); break; case T_AlterStatsStmt: _fingerprintString(ctx, "AlterStatsStmt"); _fingerprintAlterStatsStmt(ctx, obj, parent, field_name, depth); break; case T_A_Expr: _fingerprintString(ctx, "A_Expr"); _fingerprintA_Expr(ctx, obj, parent, field_name, depth); break; case T_ColumnRef: _fingerprintString(ctx, "ColumnRef"); _fingerprintColumnRef(ctx, obj, parent, field_name, depth); break; case T_ParamRef: // Intentionally ignoring for fingerprinting break; case T_FuncCall: _fingerprintString(ctx, "FuncCall"); _fingerprintFuncCall(ctx, obj, parent, field_name, depth); break; case T_A_Star: _fingerprintString(ctx, "A_Star"); _fingerprintA_Star(ctx, obj, parent, field_name, depth); break; case T_A_Indices: _fingerprintString(ctx, "A_Indices"); _fingerprintA_Indices(ctx, obj, parent, field_name, depth); break; case T_A_Indirection: _fingerprintString(ctx, "A_Indirection"); _fingerprintA_Indirection(ctx, obj, parent, field_name, depth); break; case T_A_ArrayExpr: _fingerprintString(ctx, "A_ArrayExpr"); _fingerprintA_ArrayExpr(ctx, obj, parent, field_name, depth); break; case T_ResTarget: _fingerprintString(ctx, "ResTarget"); _fingerprintResTarget(ctx, obj, parent, field_name, depth); break; case T_MultiAssignRef: _fingerprintString(ctx, "MultiAssignRef"); _fingerprintMultiAssignRef(ctx, obj, parent, field_name, depth); break; case T_TypeCast: if (!IsA(castNode(TypeCast, (void*) obj)->arg, A_Const) && !IsA(castNode(TypeCast, (void*) obj)->arg, ParamRef)) { _fingerprintString(ctx, "TypeCast"); _fingerprintTypeCast(ctx, obj, parent, field_name, depth); } break; case T_CollateClause: _fingerprintString(ctx, "CollateClause"); _fingerprintCollateClause(ctx, obj, parent, field_name, depth); break; case T_SortBy: _fingerprintString(ctx, "SortBy"); _fingerprintSortBy(ctx, obj, parent, field_name, depth); break; case T_WindowDef: _fingerprintString(ctx, "WindowDef"); _fingerprintWindowDef(ctx, obj, parent, field_name, depth); break; case T_RangeSubselect: _fingerprintString(ctx, "RangeSubselect"); _fingerprintRangeSubselect(ctx, obj, parent, field_name, depth); break; case T_RangeFunction: _fingerprintString(ctx, "RangeFunction"); _fingerprintRangeFunction(ctx, obj, parent, field_name, depth); break; case T_RangeTableSample: _fingerprintString(ctx, "RangeTableSample"); _fingerprintRangeTableSample(ctx, obj, parent, field_name, depth); break; case T_RangeTableFunc: _fingerprintString(ctx, "RangeTableFunc"); _fingerprintRangeTableFunc(ctx, obj, parent, field_name, depth); break; case T_RangeTableFuncCol: _fingerprintString(ctx, "RangeTableFuncCol"); _fingerprintRangeTableFuncCol(ctx, obj, parent, field_name, depth); break; case T_TypeName: _fingerprintString(ctx, "TypeName"); _fingerprintTypeName(ctx, obj, parent, field_name, depth); break; case T_ColumnDef: _fingerprintString(ctx, "ColumnDef"); _fingerprintColumnDef(ctx, obj, parent, field_name, depth); break; case T_IndexElem: _fingerprintString(ctx, "IndexElem"); _fingerprintIndexElem(ctx, obj, parent, field_name, depth); break; case T_StatsElem: _fingerprintString(ctx, "StatsElem"); _fingerprintStatsElem(ctx, obj, parent, field_name, depth); break; case T_Constraint: _fingerprintString(ctx, "Constraint"); _fingerprintConstraint(ctx, obj, parent, field_name, depth); break; case T_DefElem: _fingerprintString(ctx, "DefElem"); _fingerprintDefElem(ctx, obj, parent, field_name, depth); break; case T_RangeTblEntry: _fingerprintString(ctx, "RangeTblEntry"); _fingerprintRangeTblEntry(ctx, obj, parent, field_name, depth); break; case T_RangeTblFunction: _fingerprintString(ctx, "RangeTblFunction"); _fingerprintRangeTblFunction(ctx, obj, parent, field_name, depth); break; case T_TableSampleClause: _fingerprintString(ctx, "TableSampleClause"); _fingerprintTableSampleClause(ctx, obj, parent, field_name, depth); break; case T_WithCheckOption: _fingerprintString(ctx, "WithCheckOption"); _fingerprintWithCheckOption(ctx, obj, parent, field_name, depth); break; case T_SortGroupClause: _fingerprintString(ctx, "SortGroupClause"); _fingerprintSortGroupClause(ctx, obj, parent, field_name, depth); break; case T_GroupingSet: _fingerprintString(ctx, "GroupingSet"); _fingerprintGroupingSet(ctx, obj, parent, field_name, depth); break; case T_WindowClause: _fingerprintString(ctx, "WindowClause"); _fingerprintWindowClause(ctx, obj, parent, field_name, depth); break; case T_ObjectWithArgs: _fingerprintString(ctx, "ObjectWithArgs"); _fingerprintObjectWithArgs(ctx, obj, parent, field_name, depth); break; case T_AccessPriv: _fingerprintString(ctx, "AccessPriv"); _fingerprintAccessPriv(ctx, obj, parent, field_name, depth); break; case T_CreateOpClassItem: _fingerprintString(ctx, "CreateOpClassItem"); _fingerprintCreateOpClassItem(ctx, obj, parent, field_name, depth); break; case T_TableLikeClause: _fingerprintString(ctx, "TableLikeClause"); _fingerprintTableLikeClause(ctx, obj, parent, field_name, depth); break; case T_FunctionParameter: _fingerprintString(ctx, "FunctionParameter"); _fingerprintFunctionParameter(ctx, obj, parent, field_name, depth); break; case T_LockingClause: _fingerprintString(ctx, "LockingClause"); _fingerprintLockingClause(ctx, obj, parent, field_name, depth); break; case T_RowMarkClause: _fingerprintString(ctx, "RowMarkClause"); _fingerprintRowMarkClause(ctx, obj, parent, field_name, depth); break; case T_XmlSerialize: _fingerprintString(ctx, "XmlSerialize"); _fingerprintXmlSerialize(ctx, obj, parent, field_name, depth); break; case T_WithClause: _fingerprintString(ctx, "WithClause"); _fingerprintWithClause(ctx, obj, parent, field_name, depth); break; case T_InferClause: _fingerprintString(ctx, "InferClause"); _fingerprintInferClause(ctx, obj, parent, field_name, depth); break; case T_OnConflictClause: _fingerprintString(ctx, "OnConflictClause"); _fingerprintOnConflictClause(ctx, obj, parent, field_name, depth); break; case T_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_RoleSpec: _fingerprintString(ctx, "RoleSpec"); _fingerprintRoleSpec(ctx, obj, parent, field_name, depth); break; case T_TriggerTransition: _fingerprintString(ctx, "TriggerTransition"); _fingerprintTriggerTransition(ctx, obj, parent, field_name, depth); break; case T_PartitionElem: _fingerprintString(ctx, "PartitionElem"); _fingerprintPartitionElem(ctx, obj, parent, field_name, depth); break; case T_PartitionSpec: _fingerprintString(ctx, "PartitionSpec"); _fingerprintPartitionSpec(ctx, obj, parent, field_name, depth); break; case T_PartitionBoundSpec: _fingerprintString(ctx, "PartitionBoundSpec"); _fingerprintPartitionBoundSpec(ctx, obj, parent, field_name, depth); break; case T_PartitionRangeDatum: _fingerprintString(ctx, "PartitionRangeDatum"); _fingerprintPartitionRangeDatum(ctx, obj, parent, field_name, depth); break; case T_PartitionCmd: _fingerprintString(ctx, "PartitionCmd"); _fingerprintPartitionCmd(ctx, obj, parent, field_name, depth); break; case T_VacuumRelation: _fingerprintString(ctx, "VacuumRelation"); _fingerprintVacuumRelation(ctx, obj, parent, field_name, depth); break; case T_PublicationObjSpec: _fingerprintString(ctx, "PublicationObjSpec"); _fingerprintPublicationObjSpec(ctx, obj, parent, field_name, depth); break; case T_PublicationTable: _fingerprintString(ctx, "PublicationTable"); _fingerprintPublicationTable(ctx, obj, parent, field_name, depth); break; case T_InlineCodeBlock: _fingerprintString(ctx, "InlineCodeBlock"); _fingerprintInlineCodeBlock(ctx, obj, parent, field_name, depth); break; case T_CallContext: _fingerprintString(ctx, "CallContext"); _fingerprintCallContext(ctx, obj, parent, field_name, depth); break; pg_query-4.2.3/ext/pg_query/include/partitioning/0000755000004100000410000000000014510636647022204 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/partitioning/partdefs.h0000644000004100000410000000125014510636647024163 0ustar www-datawww-data/*------------------------------------------------------------------------- * * partdefs.h * Base definitions for partitioned table handling * * Copyright (c) 2007-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/optimizer/0000755000004100000410000000000014510636647021517 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/optimizer/cost.h0000644000004100000410000002273314510636647022647 0ustar www-datawww-data/*------------------------------------------------------------------------- * * cost.h * prototypes for costsize.c and clausesel.c. * * * Portions Copyright (c) 1996-2022, 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_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); extern void cost_functionscan(Path *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_valuesscan(Path *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_tablefuncscan(Path *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_ctescan(Path *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_namedtuplestorescan(Path *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_resultscan(Path *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_recursive_union(Path *runion, Path *nrterm, Path *rterm); extern void cost_sort(Path *path, PlannerInfo *root, List *pathkeys, Cost input_cost, double tuples, int width, Cost comparison_cost, int sort_mem, double limit_tuples); extern void cost_incremental_sort(Path *path, PlannerInfo *root, List *pathkeys, int presorted_keys, Cost input_startup_cost, Cost input_total_cost, double input_tuples, int width, Cost comparison_cost, int sort_mem, double limit_tuples); extern void cost_append(AppendPath *path); extern void cost_merge_append(Path *path, PlannerInfo *root, List *pathkeys, int n_streams, Cost input_startup_cost, Cost input_total_cost, double tuples); extern void cost_material(Path *path, Cost input_startup_cost, Cost input_total_cost, double tuples, int width); extern void cost_agg(Path *path, PlannerInfo *root, AggStrategy aggstrategy, const AggClauseCosts *aggcosts, int numGroupCols, double numGroups, List *quals, Cost input_startup_cost, Cost input_total_cost, double input_tuples, double input_width); extern void cost_windowagg(Path *path, PlannerInfo *root, List *windowFuncs, int numPartCols, int numOrderCols, Cost input_startup_cost, Cost input_total_cost, double input_tuples); extern void cost_group(Path *path, PlannerInfo *root, int numGroupCols, double numGroups, List *quals, Cost input_startup_cost, Cost input_total_cost, double input_tuples); extern void initial_cost_nestloop(PlannerInfo *root, JoinCostWorkspace *workspace, JoinType jointype, Path *outer_path, Path *inner_path, JoinPathExtraData *extra); extern void final_cost_nestloop(PlannerInfo *root, NestPath *path, JoinCostWorkspace *workspace, JoinPathExtraData *extra); extern void initial_cost_mergejoin(PlannerInfo *root, JoinCostWorkspace *workspace, JoinType jointype, List *mergeclauses, Path *outer_path, Path *inner_path, List *outersortkeys, List *innersortkeys, JoinPathExtraData *extra); extern void final_cost_mergejoin(PlannerInfo *root, MergePath *path, JoinCostWorkspace *workspace, JoinPathExtraData *extra); extern void initial_cost_hashjoin(PlannerInfo *root, JoinCostWorkspace *workspace, JoinType jointype, List *hashclauses, Path *outer_path, Path *inner_path, JoinPathExtraData *extra, bool parallel_hash); extern void final_cost_hashjoin(PlannerInfo *root, HashPath *path, JoinCostWorkspace *workspace, JoinPathExtraData *extra); extern void cost_gather(GatherPath *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info, double *rows); extern void cost_gather_merge(GatherMergePath *path, PlannerInfo *root, RelOptInfo *rel, ParamPathInfo *param_info, Cost input_startup_cost, Cost input_total_cost, double *rows); extern void cost_subplan(PlannerInfo *root, SubPlan *subplan, Plan *plan); extern void cost_qual_eval(QualCost *cost, List *quals, PlannerInfo *root); extern void cost_qual_eval_node(QualCost *cost, Node *qual, PlannerInfo *root); extern void compute_semi_anti_join_factors(PlannerInfo *root, RelOptInfo *joinrel, RelOptInfo *outerrel, RelOptInfo *innerrel, JoinType jointype, SpecialJoinInfo *sjinfo, List *restrictlist, SemiAntiJoinFactors *semifactors); extern void set_baserel_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern double get_parameterized_baserel_size(PlannerInfo *root, RelOptInfo *rel, List *param_clauses); extern double get_parameterized_joinrel_size(PlannerInfo *root, RelOptInfo *rel, Path *outer_path, Path *inner_path, SpecialJoinInfo *sjinfo, List *restrict_clauses); extern void set_joinrel_size_estimates(PlannerInfo *root, RelOptInfo *rel, RelOptInfo *outer_rel, RelOptInfo *inner_rel, SpecialJoinInfo *sjinfo, List *restrictlist); extern void set_subquery_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_function_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_values_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_cte_size_estimates(PlannerInfo *root, RelOptInfo *rel, double cte_rows); extern void set_tablefunc_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_namedtuplestore_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_result_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_foreign_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern PathTarget *set_pathtarget_cost_width(PlannerInfo *root, PathTarget *target); extern double compute_bitmap_pages(PlannerInfo *root, RelOptInfo *baserel, Path *bitmapqual, int loop_count, Cost *cost, double *tuple); #endif /* COST_H */ pg_query-4.2.3/ext/pg_query/include/optimizer/optimizer.h0000644000004100000410000001566614510636647023730 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 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 force_parallel_mode */ typedef enum { FORCE_PARALLEL_OFF, FORCE_PARALLEL_ON, FORCE_PARALLEL_REGRESS } ForceParallelMode; /* GUC parameters */ extern PGDLLIMPORT int force_parallel_mode; 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_volatile_functions(Node *clause); 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(Query *query, Node *node); #endif /* OPTIMIZER_H */ pg_query-4.2.3/ext/pg_query/include/optimizer/paths.h0000644000004100000410000002344714510636647023021 0ustar www-datawww-data/*------------------------------------------------------------------------- * * paths.h * prototypes for various files in optimizer/path * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/optimizer/paths.h * *------------------------------------------------------------------------- */ #ifndef PATHS_H #define PATHS_H #include "nodes/pathnodes.h" /* * allpaths.c */ extern PGDLLIMPORT bool enable_geqo; extern PGDLLIMPORT int geqo_threshold; extern PGDLLIMPORT int min_parallel_table_scan_size; extern PGDLLIMPORT int min_parallel_index_scan_size; /* Hook for plugins to get control in set_rel_pathlist() */ typedef void (*set_rel_pathlist_hook_type) (PlannerInfo *root, RelOptInfo *rel, Index rti, RangeTblEntry *rte); extern PGDLLIMPORT set_rel_pathlist_hook_type set_rel_pathlist_hook; /* Hook for plugins to get control in add_paths_to_joinrel() */ typedef void (*set_join_pathlist_hook_type) (PlannerInfo *root, RelOptInfo *joinrel, RelOptInfo *outerrel, RelOptInfo *innerrel, JoinType jointype, JoinPathExtraData *extra); extern PGDLLIMPORT set_join_pathlist_hook_type set_join_pathlist_hook; /* Hook for plugins to replace standard_join_search() */ typedef RelOptInfo *(*join_search_hook_type) (PlannerInfo *root, int levels_needed, List *initial_rels); extern PGDLLIMPORT join_search_hook_type join_search_hook; extern RelOptInfo *make_one_rel(PlannerInfo *root, List *joinlist); extern RelOptInfo *standard_join_search(PlannerInfo *root, int levels_needed, List *initial_rels); extern void generate_gather_paths(PlannerInfo *root, RelOptInfo *rel, bool override_rows); extern void generate_useful_gather_paths(PlannerInfo *root, RelOptInfo *rel, bool override_rows); extern int compute_parallel_worker(RelOptInfo *rel, double heap_pages, double index_pages, int max_workers); extern void create_partial_bitmap_paths(PlannerInfo *root, RelOptInfo *rel, Path *bitmapqual); extern void generate_partitionwise_join_paths(PlannerInfo *root, RelOptInfo *rel); #ifdef OPTIMIZER_DEBUG extern void debug_print_rel(PlannerInfo *root, RelOptInfo *rel); #endif /* * indxpath.c * routines to generate index paths */ extern void create_index_paths(PlannerInfo *root, RelOptInfo *rel); extern bool relation_has_unique_index_for(PlannerInfo *root, RelOptInfo *rel, List *restrictlist, List *exprlist, List *oprlist); extern bool indexcol_is_bool_constant_for_query(PlannerInfo *root, IndexOptInfo *index, int indexcol); extern bool match_index_to_operand(Node *operand, int indexcol, IndexOptInfo *index); extern void check_index_predicates(PlannerInfo *root, RelOptInfo *rel); /* * tidpath.h * routines to generate tid paths */ extern void create_tidscan_paths(PlannerInfo *root, RelOptInfo *rel); /* * joinpath.c * routines to create join paths */ extern void add_paths_to_joinrel(PlannerInfo *root, RelOptInfo *joinrel, RelOptInfo *outerrel, RelOptInfo *innerrel, JoinType jointype, SpecialJoinInfo *sjinfo, List *restrictlist); /* * joinrels.c * routines to determine which relations to join */ extern void join_search_one_level(PlannerInfo *root, int level); extern RelOptInfo *make_join_rel(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2); extern bool have_join_order_restriction(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2); extern bool have_dangerous_phv(PlannerInfo *root, Relids outer_relids, Relids inner_params); extern void mark_dummy_rel(RelOptInfo *rel); /* * equivclass.c * routines for managing EquivalenceClasses */ typedef bool (*ec_matches_callback_type) (PlannerInfo *root, RelOptInfo *rel, EquivalenceClass *ec, EquivalenceMember *em, void *arg); extern bool process_equivalence(PlannerInfo *root, RestrictInfo **p_restrictinfo, bool below_outer_join); extern Expr *canonicalize_ec_expression(Expr *expr, Oid req_type, Oid req_collation); extern void reconsider_outer_join_clauses(PlannerInfo *root); extern EquivalenceClass *get_eclass_for_sort_expr(PlannerInfo *root, Expr *expr, Relids nullable_relids, List *opfamilies, Oid opcintype, Oid collation, Index sortref, Relids rel, bool create_it); extern EquivalenceMember *find_ec_member_matching_expr(EquivalenceClass *ec, Expr *expr, Relids relids); extern EquivalenceMember *find_computable_ec_member(PlannerInfo *root, EquivalenceClass *ec, List *exprs, Relids relids, bool require_parallel_safe); extern 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); 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_rel, RelOptInfo *child_rel); extern List *generate_implied_equalities_for_column(PlannerInfo *root, RelOptInfo *rel, ec_matches_callback_type callback, void *callback_arg, Relids prohibited_rels); extern bool have_relevant_eclass_joinclause(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2); extern bool has_relevant_eclass_joinclause(PlannerInfo *root, RelOptInfo *rel1); extern bool eclass_useful_for_merging(PlannerInfo *root, EquivalenceClass *eclass, RelOptInfo *rel); extern bool is_redundant_derived_clause(RestrictInfo *rinfo, List *clauselist); extern bool is_redundant_with_indexclauses(RestrictInfo *rinfo, List *indexclauses); /* * pathkeys.c * utilities for matching and building path keys */ typedef enum { PATHKEYS_EQUAL, /* pathkeys are identical */ PATHKEYS_BETTER1, /* pathkey 1 is a superset of pathkey 2 */ PATHKEYS_BETTER2, /* vice versa */ PATHKEYS_DIFFERENT /* neither pathkey includes the other */ } PathKeysComparison; extern PathKeysComparison compare_pathkeys(List *keys1, List *keys2); extern bool pathkeys_contained_in(List *keys1, List *keys2); extern bool pathkeys_count_contained_in(List *keys1, List *keys2, int *n_common); extern Path *get_cheapest_path_for_pathkeys(List *paths, List *pathkeys, Relids required_outer, CostSelector cost_criterion, bool require_parallel_safe); extern Path *get_cheapest_fractional_path_for_pathkeys(List *paths, List *pathkeys, Relids required_outer, double fraction); extern Path *get_cheapest_parallel_safe_total_inner(List *paths); extern List *build_index_pathkeys(PlannerInfo *root, IndexOptInfo *index, ScanDirection scandir); extern List *build_partition_pathkeys(PlannerInfo *root, RelOptInfo *partrel, ScanDirection scandir, bool *partialkeys); extern List *build_expression_pathkey(PlannerInfo *root, Expr *expr, Relids nullable_relids, Oid opno, Relids rel, bool create_it); extern List *convert_subquery_pathkeys(PlannerInfo *root, RelOptInfo *rel, List *subquery_pathkeys, List *subquery_tlist); extern List *build_join_pathkeys(PlannerInfo *root, RelOptInfo *joinrel, JoinType jointype, List *outer_pathkeys); extern List *make_pathkeys_for_sortclauses(PlannerInfo *root, List *sortclauses, List *tlist); extern void initialize_mergeclause_eclasses(PlannerInfo *root, RestrictInfo *restrictinfo); extern void update_mergeclause_eclasses(PlannerInfo *root, RestrictInfo *restrictinfo); extern List *find_mergeclauses_for_outer_pathkeys(PlannerInfo *root, List *pathkeys, List *restrictinfos); extern List *select_outer_pathkeys_for_merge(PlannerInfo *root, List *mergeclauses, RelOptInfo *joinrel); extern List *make_inner_pathkeys_for_merge(PlannerInfo *root, List *mergeclauses, List *outer_pathkeys); extern List *trim_mergeclauses_for_inner_pathkeys(PlannerInfo *root, List *mergeclauses, List *pathkeys); extern List *truncate_useless_pathkeys(PlannerInfo *root, RelOptInfo *rel, List *pathkeys); extern bool has_useful_pathkeys(PlannerInfo *root, RelOptInfo *rel); extern PathKey *make_canonical_pathkey(PlannerInfo *root, EquivalenceClass *eclass, Oid opfamily, int strategy, bool nulls_first); extern void add_paths_to_append_rel(PlannerInfo *root, RelOptInfo *rel, List *live_childrels); #endif /* PATHS_H */ pg_query-4.2.3/ext/pg_query/include/optimizer/geqo.h0000644000004100000410000000434614510636647022632 0ustar www-datawww-data/*------------------------------------------------------------------------- * * geqo.h * prototypes for various files in optimizer/geqo * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/optimizer/geqo_gene.h0000644000004100000410000000213614510636647023623 0ustar www-datawww-data/*------------------------------------------------------------------------- * * geqo_gene.h * genome representation in optimizer/geqo * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/optimizer/planmain.h0000644000004100000410000001064314510636647023473 0ustar www-datawww-data/*------------------------------------------------------------------------- * * planmain.h * prototypes for various files in optimizer/plan * * * Portions Copyright (c) 1996-2022, 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, bool create_new_ph); extern void find_lateral_references(PlannerInfo *root); extern void create_lateral_join_info(PlannerInfo *root); extern List *deconstruct_jointree(PlannerInfo *root); extern void distribute_restrictinfo_to_rels(PlannerInfo *root, RestrictInfo *restrictinfo); extern RestrictInfo *process_implied_equality(PlannerInfo *root, Oid opno, Oid collation, Expr *item1, Expr *item2, Relids qualscope, Relids nullable_relids, Index security_level, bool below_outer_join, bool both_const); extern RestrictInfo *build_implied_join_equality(PlannerInfo *root, Oid opno, Oid collation, Expr *item1, Expr *item2, Relids qualscope, Relids nullable_relids, Index security_level); extern void match_foreign_keys_to_quals(PlannerInfo *root); /* * prototypes for plan/analyzejoins.c */ extern List *remove_useless_joins(PlannerInfo *root, List *joinlist); extern void reduce_unique_semijoins(PlannerInfo *root); extern bool query_supports_distinctness(Query *query); extern bool query_is_distinct_for(Query *query, List *colnos, List *opids); extern bool innerrel_is_unique(PlannerInfo *root, Relids joinrelids, Relids outerrelids, RelOptInfo *innerrel, JoinType jointype, List *restrictlist, bool force_cache); /* * prototypes for plan/setrefs.c */ extern Plan *set_plan_references(PlannerInfo *root, Plan *plan); extern bool trivial_subqueryscan(SubqueryScan *plan); extern void record_plan_function_dependency(PlannerInfo *root, Oid funcid); extern void record_plan_type_dependency(PlannerInfo *root, Oid typid); extern bool extract_query_dependencies_walker(Node *node, PlannerInfo *root); #endif /* PLANMAIN_H */ pg_query-4.2.3/ext/pg_query/include/pg_query_json_helper.c0000644000004100000410000000236014510636647024065 0ustar www-datawww-data#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, '"'); } pg_query-4.2.3/ext/pg_query/include/replication/0000755000004100000410000000000014510636647022006 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/replication/logicalworker.h0000644000004100000410000000100314510636647025015 0ustar www-datawww-data/*------------------------------------------------------------------------- * * logicalworker.h * Exports for logical replication workers. * * Portions Copyright (c) 2016-2022, PostgreSQL Global Development Group * * src/include/replication/logicalworker.h * *------------------------------------------------------------------------- */ #ifndef LOGICALWORKER_H #define LOGICALWORKER_H extern void ApplyWorkerMain(Datum main_arg); extern bool IsLogicalWorker(void); #endif /* LOGICALWORKER_H */ pg_query-4.2.3/ext/pg_query/include/replication/origin.h0000644000004100000410000000460314510636647023451 0ustar www-datawww-data/*------------------------------------------------------------------------- * origin.h * Exports from replication/logical/origin.c * * Copyright (c) 2013-2022, 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 *name, bool missing_ok); extern RepOriginId replorigin_create(const char *name); 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); 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 */ pg_query-4.2.3/ext/pg_query/include/replication/walreceiver.h0000644000004100000410000003554714510636647024505 0ustar www-datawww-data/*------------------------------------------------------------------------- * * walreceiver.h * Exports from replication/walreceiverfuncs.c. * * Portions Copyright (c) 2010-2022, PostgreSQL Global Development Group * * src/include/replication/walreceiver.h * *------------------------------------------------------------------------- */ #ifndef _WALRECEIVER_H #define _WALRECEIVER_H #include "access/xlog.h" #include "access/xlogdefs.h" #include "getaddrinfo.h" /* for NI_MAXHOST */ #include "pgtime.h" #include "port/atomics.h" #include "replication/logicalproto.h" #include "replication/walsender.h" #include "storage/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 */ bool streaming; /* Streaming of large transactions */ bool twophase; /* Streaming of two-phase transactions at * prepare time */ } 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. 'logical' is true if the * connection is logical, and false if the connection is physical. * '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 logical, 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); /* * 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_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, CRSSnapshotAction snapshot_action, XLogRecPtr *lsn); /* * 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_server_version_fn walrcv_server_version; walrcv_readtimelinehistoryfile_fn walrcv_readtimelinehistoryfile; walrcv_startstreaming_fn walrcv_startstreaming; walrcv_endstreaming_fn walrcv_endstreaming; walrcv_receive_fn walrcv_receive; walrcv_send_fn walrcv_send; walrcv_create_slot_fn walrcv_create_slot; walrcv_get_backend_pid_fn walrcv_get_backend_pid; walrcv_exec_fn walrcv_exec; walrcv_disconnect_fn walrcv_disconnect; } WalReceiverFunctionsType; extern PGDLLIMPORT WalReceiverFunctionsType *WalReceiverFunctions; #define walrcv_connect(conninfo, logical, appname, err) \ WalReceiverFunctions->walrcv_connect(conninfo, logical, appname, err) #define walrcv_check_conninfo(conninfo) \ WalReceiverFunctions->walrcv_check_conninfo(conninfo) #define walrcv_get_conninfo(conn) \ WalReceiverFunctions->walrcv_get_conninfo(conn) #define walrcv_get_senderinfo(conn, sender_host, sender_port) \ WalReceiverFunctions->walrcv_get_senderinfo(conn, sender_host, sender_port) #define walrcv_identify_system(conn, primary_tli) \ WalReceiverFunctions->walrcv_identify_system(conn, primary_tli) #define walrcv_server_version(conn) \ WalReceiverFunctions->walrcv_server_version(conn) #define walrcv_readtimelinehistoryfile(conn, tli, filename, content, size) \ WalReceiverFunctions->walrcv_readtimelinehistoryfile(conn, tli, filename, content, size) #define walrcv_startstreaming(conn, options) \ WalReceiverFunctions->walrcv_startstreaming(conn, options) #define walrcv_endstreaming(conn, next_tli) \ WalReceiverFunctions->walrcv_endstreaming(conn, next_tli) #define walrcv_receive(conn, buffer, wait_fd) \ WalReceiverFunctions->walrcv_receive(conn, buffer, wait_fd) #define walrcv_send(conn, buffer, nbytes) \ WalReceiverFunctions->walrcv_send(conn, buffer, nbytes) #define walrcv_create_slot(conn, slotname, temporary, two_phase, snapshot_action, lsn) \ WalReceiverFunctions->walrcv_create_slot(conn, slotname, temporary, two_phase, snapshot_action, lsn) #define walrcv_get_backend_pid(conn) \ WalReceiverFunctions->walrcv_get_backend_pid(conn) #define walrcv_exec(conn, exec, nRetTypes, retTypes) \ WalReceiverFunctions->walrcv_exec(conn, exec, nRetTypes, retTypes) #define walrcv_disconnect(conn) \ WalReceiverFunctions->walrcv_disconnect(conn) static inline void walrcv_clear_result(WalRcvExecResult *walres) { if (!walres) return; if (walres->err) pfree(walres->err); if (walres->tuplestore) tuplestore_end(walres->tuplestore); if (walres->tupledesc) FreeTupleDesc(walres->tupledesc); pfree(walres); } /* prototypes for functions in walreceiver.c */ extern void WalReceiverMain(void) pg_attribute_noreturn(); extern void ProcessWalRcvInterrupts(void); /* prototypes for functions in walreceiverfuncs.c */ extern Size WalRcvShmemSize(void); extern void WalRcvShmemInit(void); extern void ShutdownWalRcv(void); extern bool WalRcvStreaming(void); extern bool WalRcvRunning(void); extern void RequestXLogStreaming(TimeLineID tli, XLogRecPtr recptr, const char *conninfo, const char *slotname, bool create_temp_slot); extern XLogRecPtr GetWalRcvFlushRecPtr(XLogRecPtr *latestChunkStart, TimeLineID *receiveTLI); extern XLogRecPtr GetWalRcvWriteRecPtr(void); extern int GetReplicationApplyDelay(void); extern int GetReplicationTransferLatency(void); extern void WalRcvForceReply(void); #endif /* _WALRECEIVER_H */ pg_query-4.2.3/ext/pg_query/include/replication/syncrep.h0000644000004100000410000000702214510636647023643 0ustar www-datawww-data/*------------------------------------------------------------------------- * * syncrep.h * Exports from replication/syncrep.c. * * Portions Copyright (c) 2010-2022, PostgreSQL Global Development Group * * IDENTIFICATION * src/include/replication/syncrep.h * *------------------------------------------------------------------------- */ #ifndef _SYNCREP_H #define _SYNCREP_H #include "access/xlogdefs.h" #include "utils/guc.h" #define SyncRepRequested() \ (max_wal_senders > 0 && synchronous_commit > SYNCHRONOUS_COMMIT_LOCAL_FLUSH) /* SyncRepWaitMode */ #define SYNC_REP_NO_WAIT (-1) #define SYNC_REP_WAIT_WRITE 0 #define SYNC_REP_WAIT_FLUSH 1 #define SYNC_REP_WAIT_APPLY 2 #define NUM_SYNC_REP_WAIT_MODE 3 /* syncRepState */ #define SYNC_REP_NOT_WAITING 0 #define SYNC_REP_WAITING 1 #define SYNC_REP_WAIT_COMPLETE 2 /* syncrep_method of SyncRepConfigData */ #define SYNC_REP_PRIORITY 0 #define SYNC_REP_QUORUM 1 /* * SyncRepGetCandidateStandbys returns an array of these structs, * one per candidate synchronous walsender. */ typedef struct SyncRepStandbyData { /* Copies of relevant fields from WalSnd shared-memory struct */ pid_t pid; XLogRecPtr write; XLogRecPtr flush; XLogRecPtr apply; int sync_standby_priority; /* Index of this walsender in the WalSnd shared-memory array */ int walsnd_index; /* This flag indicates whether this struct is about our own process */ bool is_me; } SyncRepStandbyData; /* * Struct for the configuration of synchronous replication. * * Note: this must be a flat representation that can be held in a single * chunk of malloc'd memory, so that it can be stored as the "extra" data * for the synchronous_standby_names GUC. */ typedef struct SyncRepConfigData { int config_size; /* total size of this struct, in bytes */ int num_sync; /* number of sync standbys that we need to * wait for */ uint8 syncrep_method; /* method to choose sync standbys */ int nmembers; /* number of members in the following list */ /* member_names contains nmembers consecutive nul-terminated C strings */ char member_names[FLEXIBLE_ARRAY_MEMBER]; } SyncRepConfigData; extern 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); /* GUC infrastructure */ extern bool check_synchronous_standby_names(char **newval, void **extra, GucSource source); extern void assign_synchronous_standby_names(const char *newval, void *extra); extern void assign_synchronous_commit(int newval, void *extra); /* * Internal functions for parsing synchronous_standby_names grammar, * in syncrep_gram.y and syncrep_scanner.l */ extern int syncrep_yyparse(void); extern int syncrep_yylex(void); extern void syncrep_yyerror(const char *str); extern void syncrep_scanner_init(const char *query_string); extern void syncrep_scanner_finish(void); #endif /* _SYNCREP_H */ pg_query-4.2.3/ext/pg_query/include/replication/reorderbuffer.h0000644000004100000410000005113014510636647025013 0ustar www-datawww-data/* * reorderbuffer.h * PostgreSQL logical replay/reorder buffer management. * * Copyright (c) 2012-2022, PostgreSQL Global Development Group * * src/include/replication/reorderbuffer.h */ #ifndef REORDERBUFFER_H #define REORDERBUFFER_H #include "access/htup_details.h" #include "lib/ilist.h" #include "storage/sinval.h" #include "utils/hsearch.h" #include "utils/relcache.h" #include "utils/snapshot.h" #include "utils/timestamp.h" extern PGDLLIMPORT int logical_decoding_work_mem; /* an individual tuple, stored in one chunk of memory */ typedef struct ReorderBufferTupleBuf { /* position in preallocated list */ slist_node node; /* tuple header, the interesting bit for users of logical decoding */ HeapTupleData tuple; /* pre-allocated size of tuple buffer, different from tuple size */ Size alloc_tuple_size; /* actual tuple data follows */ } ReorderBufferTupleBuf; /* pointer to the data stored in a TupleBuf */ #define ReorderBufferTupleBufData(p) \ ((HeapTupleHeader) MAXALIGN(((char *) p) + sizeof(ReorderBufferTupleBuf))) /* * Types of the change passed to a 'change' callback. * * For efficiency and simplicity reasons we want to keep Snapshots, CommandIds * and ComboCids in the same list with the user visible INSERT/UPDATE/DELETE * changes. Users of the decoding facilities will never see changes with * *_INTERNAL_* actions. * * The INTERNAL_SPEC_INSERT and INTERNAL_SPEC_CONFIRM, 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 */ RelFileNode relnode; /* no previously reassembled toast chunks are necessary anymore */ bool clear_toast_afterwards; /* valid for DELETE || UPDATE */ ReorderBufferTupleBuf *oldtuple; /* valid for INSERT || UPDATE */ ReorderBufferTupleBuf *newtuple; } tp; /* * Truncate data for REORDER_BUFFER_CHANGE_TRUNCATE representing one * set of relations to be truncated. */ struct { Size nrelids; bool cascade; bool restart_seqs; Oid *relids; } truncate; /* Message with arbitrary data. */ struct { char *prefix; Size message_size; char *message; } msg; /* New snapshot, set when action == *_INTERNAL_SNAPSHOT */ Snapshot snapshot; /* * New command id for existing snapshot in a catalog changing tx. Set * when action == *_INTERNAL_COMMAND_ID. */ CommandId command_id; /* * New cid mapping for catalog changing transaction, set when action * == *_INTERNAL_TUPLECID. */ struct { RelFileNode node; ItemPointerData tid; CommandId cmin; CommandId cmax; CommandId combocid; } tuplecid; /* 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 /* 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 \ ) /* * 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 \ ) 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 tansaction * * 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; } 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; /* * 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); struct ReorderBuffer { /* * xid => ReorderBufferTXN lookup table */ HTAB *by_txn; /* * Transactions that could be a toplevel xact, ordered by LSN of the first * record bearing that xid. */ dlist_head toplevel_by_lsn; /* * Transactions and subtransactions that have a base snapshot, ordered by * LSN of the record which caused us to first obtain the base snapshot. * This is not the same as toplevel_by_lsn, because we only set the base * snapshot on the first logical-decoding-relevant record (eg. heap * writes), whereas the initial LSN could be set by other operations. */ dlist_head txns_by_base_snapshot_lsn; /* * one-entry sized cache for by_txn. Very frequently the same txn gets * looked up over and over again. */ TransactionId by_txn_last_xid; ReorderBufferTXN *by_txn_last_txn; /* * Callbacks to be called when a transactions commits. */ ReorderBufferBeginCB begin; ReorderBufferApplyChangeCB apply_change; ReorderBufferApplyTruncateCB apply_truncate; ReorderBufferCommitCB commit; ReorderBufferMessageCB message; /* * 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; /* * 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; /* * 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 *); extern ReorderBufferTupleBuf *ReorderBufferGetTupleBuf(ReorderBuffer *, Size tuple_len); extern void ReorderBufferReturnTupleBuf(ReorderBuffer *, ReorderBufferTupleBuf *tuple); extern ReorderBufferChange *ReorderBufferGetChange(ReorderBuffer *); extern void ReorderBufferReturnChange(ReorderBuffer *, ReorderBufferChange *, bool); extern Oid *ReorderBufferGetRelids(ReorderBuffer *, int nrelids); extern void ReorderBufferReturnRelids(ReorderBuffer *, Oid *relids); extern void ReorderBufferQueueChange(ReorderBuffer *, TransactionId, XLogRecPtr lsn, ReorderBufferChange *, bool toast_insert); extern void ReorderBufferQueueMessage(ReorderBuffer *, TransactionId, Snapshot snapshot, XLogRecPtr lsn, bool transactional, const char *prefix, Size message_size, const char *message); extern void ReorderBufferCommit(ReorderBuffer *, TransactionId, 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 *, TransactionId, TransactionId, XLogRecPtr commit_lsn); extern void ReorderBufferCommitChild(ReorderBuffer *, TransactionId, TransactionId, XLogRecPtr commit_lsn, XLogRecPtr end_lsn); extern void ReorderBufferAbort(ReorderBuffer *, TransactionId, XLogRecPtr lsn); extern void ReorderBufferAbortOld(ReorderBuffer *, TransactionId xid); extern void ReorderBufferForget(ReorderBuffer *, TransactionId, XLogRecPtr lsn); extern void ReorderBufferInvalidate(ReorderBuffer *, TransactionId, XLogRecPtr lsn); extern void ReorderBufferSetBaseSnapshot(ReorderBuffer *, TransactionId, XLogRecPtr lsn, struct SnapshotData *snap); extern void ReorderBufferAddSnapshot(ReorderBuffer *, TransactionId, XLogRecPtr lsn, struct SnapshotData *snap); extern void ReorderBufferAddNewCommandId(ReorderBuffer *, TransactionId, XLogRecPtr lsn, CommandId cid); extern void ReorderBufferAddNewTupleCids(ReorderBuffer *, TransactionId, XLogRecPtr lsn, RelFileNode node, ItemPointerData pt, CommandId cmin, CommandId cmax, CommandId combocid); extern void ReorderBufferAddInvalidations(ReorderBuffer *, TransactionId, XLogRecPtr lsn, Size nmsgs, SharedInvalidationMessage *msgs); extern void ReorderBufferImmediateInvalidation(ReorderBuffer *, uint32 ninvalidations, SharedInvalidationMessage *invalidations); extern void ReorderBufferProcessXid(ReorderBuffer *, TransactionId xid, XLogRecPtr lsn); extern void ReorderBufferXidSetCatalogChanges(ReorderBuffer *, TransactionId xid, XLogRecPtr lsn); extern bool ReorderBufferXidHasCatalogChanges(ReorderBuffer *, TransactionId xid); extern bool ReorderBufferXidHasBaseSnapshot(ReorderBuffer *, 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 *); extern TransactionId ReorderBufferGetOldestXmin(ReorderBuffer *rb); extern void ReorderBufferSetRestartPoint(ReorderBuffer *, XLogRecPtr ptr); extern void StartupReorderBuffer(void); #endif pg_query-4.2.3/ext/pg_query/include/replication/slot.h0000644000004100000410000001707514510636647023152 0ustar www-datawww-data/*------------------------------------------------------------------------- * slot.h * Replication slot management. * * Copyright (c) 2012-2022, 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; /* * On-Disk data of a replication slot, preserved across restarts. */ typedef struct ReplicationSlotPersistentData { /* The slot's identifier */ NameData name; /* database the slot is active on */ Oid database; /* * The slot's behaviour when being dropped (or restored after a crash). */ ReplicationSlotPersistency persistency; /* * xmin horizon for data * * NB: This may represent a value that hasn't been written to disk yet; * see notes for effective_xmin, below. */ TransactionId xmin; /* * xmin horizon for catalog tuples * * NB: This may represent a value that hasn't been written to disk yet; * see notes for effective_xmin, below. */ TransactionId catalog_xmin; /* oldest LSN that might be required by this replication slot */ XLogRecPtr restart_lsn; /* restart_lsn is copied here when the slot is invalidated */ XLogRecPtr invalidated_at; /* * Oldest LSN that the client has acked receipt for. This is used as the * start_lsn point in case the client doesn't specify one, and also as a * safety measure to jump forwards in case the client specifies a * start_lsn that's further in the past than this value. */ XLogRecPtr confirmed_flush; /* * 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; } ReplicationSlotPersistentData; /* * Shared memory state of a single replication slot. * * The in-memory data of replication slots follows a locking model based * on two linked concepts: * - A replication slot's in_use flag is switched when added or discarded using * the LWLock ReplicationSlotControlLock, which needs to be hold in exclusive * mode when updating the flag by the backend owning the slot and doing the * operation, while readers (concurrent backends not owning the slot) need * to hold it in shared mode when looking at replication slot data. * - Individual fields are protected by mutex where only the backend owning * the slot is authorized to update the fields from its own slot. The * backend owning the slot does not need to take this lock when reading its * own fields, while concurrent backends not owning this slot should take the * lock when reading this slot's data. */ typedef struct ReplicationSlot { /* lock, on same cacheline as effective_xmin */ slock_t mutex; /* is this slot defined */ bool in_use; /* Who is streaming out changes for this slot? 0 in unused slots. */ pid_t active_pid; /* any outstanding modifications? */ bool just_dirtied; bool dirty; /* * For logical decoding, it's extremely important that we never remove any * data that's still needed for decoding purposes, even after a crash; * otherwise, decoding will produce wrong answers. Ordinary streaming * replication also needs to prevent old row versions from being removed * too soon, but the worst consequence we might encounter there is * unwanted query cancellations on the standby. Thus, for logical * decoding, this value represents the latest xmin that has actually been * written to disk, whereas for streaming replication, it's just the same * as the persistent value (data.xmin). */ TransactionId effective_xmin; TransactionId effective_catalog_xmin; /* data surviving shutdowns and crashes */ ReplicationSlotPersistentData data; /* is somebody performing io on this slot? */ LWLock io_in_progress_lock; /* Condition variable signaled when active_pid changes */ ConditionVariable active_cv; /* all the remaining data is only used for logical slots */ /* * When the client has confirmed flushes >= candidate_xmin_lsn we can * advance the catalog xmin. When restart_valid has been passed, * restart_lsn can be increased. */ TransactionId candidate_catalog_xmin; XLogRecPtr candidate_xmin_lsn; XLogRecPtr candidate_restart_valid; XLogRecPtr candidate_restart_lsn; } ReplicationSlot; #define SlotIsPhysical(slot) ((slot)->data.database == InvalidOid) #define SlotIsLogical(slot) ((slot)->data.database != InvalidOid) /* * Shared memory control area for all of replication slots. */ typedef struct ReplicationSlotCtlData { /* * This array should be declared [FLEXIBLE_ARRAY_MEMBER], but for some * reason you can't do that in an otherwise-empty struct. */ ReplicationSlot replication_slots[1]; } ReplicationSlotCtlData; /* * Pointers to shared memory */ extern PGDLLIMPORT ReplicationSlotCtlData *ReplicationSlotCtl; extern PGDLLIMPORT ReplicationSlot *MyReplicationSlot; /* GUCs */ extern PGDLLIMPORT int max_replication_slots; /* shmem initialization functions */ extern Size ReplicationSlotsShmemSize(void); extern void ReplicationSlotsShmemInit(void); /* management of individual slots */ extern void ReplicationSlotCreate(const char *name, bool db_specific, ReplicationSlotPersistency p, bool two_phase); extern void ReplicationSlotPersist(void); extern void ReplicationSlotDrop(const char *name, bool nowait); extern void ReplicationSlotAcquire(const char *name, bool nowait); extern void ReplicationSlotRelease(void); extern void ReplicationSlotCleanup(void); 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(XLogSegNo oldestSegno); 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, int szslot); extern void ReplicationSlotDropAtPubNode(WalReceiverConn *wrconn, char *slotname, bool missing_ok); extern void StartupReplicationSlots(void); extern void CheckPointReplicationSlots(void); extern void CheckSlotRequirements(void); extern void CheckSlotPermissions(void); #endif /* SLOT_H */ pg_query-4.2.3/ext/pg_query/include/replication/walsender.h0000644000004100000410000000367314510636647024154 0ustar www-datawww-data/*------------------------------------------------------------------------- * * walsender.h * Exports from replication/walsender.c. * * Portions Copyright (c) 2010-2022, PostgreSQL Global Development Group * * src/include/replication/walsender.h * *------------------------------------------------------------------------- */ #ifndef _WALSENDER_H #define _WALSENDER_H #include /* * What to do with a snapshot in create replication slot command. */ typedef enum { CRS_EXPORT_SNAPSHOT, CRS_NOEXPORT_SNAPSHOT, CRS_USE_SNAPSHOT } CRSSnapshotAction; /* global state */ extern 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 *query_string); extern void WalSndErrorCleanup(void); extern void WalSndResourceCleanup(bool isCommit); extern void WalSndSignals(void); extern Size WalSndShmemSize(void); extern void WalSndShmemInit(void); extern void WalSndWakeup(void); extern void WalSndInitStopping(void); extern void WalSndWaitStopping(void); extern void HandleWalSndInitStopping(void); extern void WalSndRqstFileReload(void); /* * Remember that we want to wakeup walsenders later * * This is separated from doing the actual wakeup because the writeout is done * while holding contended locks. */ #define WalSndWakeupRequest() \ do { wake_wal_senders = true; } while (0) /* * wakeup walsenders if there is work to be done */ #define WalSndWakeupProcessRequests() \ do \ { \ if (wake_wal_senders) \ { \ wake_wal_senders = false; \ if (max_wal_senders > 0) \ WalSndWakeup(); \ } \ } while (0) #endif /* _WALSENDER_H */ pg_query-4.2.3/ext/pg_query/include/replication/logicallauncher.h0000644000004100000410000000154614510636647025321 0ustar www-datawww-data/*------------------------------------------------------------------------- * * logicallauncher.h * Exports for logical replication launcher. * * Portions Copyright (c) 2016-2022, 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 void ApplyLauncherRegister(void); extern void ApplyLauncherMain(Datum main_arg); extern Size ApplyLauncherShmemSize(void); extern void ApplyLauncherShmemInit(void); extern void ApplyLauncherWakeupAtCommit(void); extern void AtEOXact_ApplyLauncher(bool isCommit); extern bool IsLogicalLauncher(void); #endif /* LOGICALLAUNCHER_H */ pg_query-4.2.3/ext/pg_query/include/replication/logicalproto.h0000644000004100000410000002261514510636647024663 0ustar www-datawww-data/*------------------------------------------------------------------------- * * logicalproto.h * logical replication protocol * * Copyright (c) 2015-2022, 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. */ #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_MAX_VERSION_NUM LOGICALREP_PROTO_TWOPHASE_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; 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 *oldtuple, bool binary); 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 out, 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 out, LogicalRepCommitData *commit_data); extern void logicalrep_write_stream_abort(StringInfo out, TransactionId xid, TransactionId subxid); extern void logicalrep_read_stream_abort(StringInfo in, TransactionId *xid, TransactionId *subxid); extern char *logicalrep_message_type(LogicalRepMsgType action); #endif /* LOGICAL_PROTO_H */ pg_query-4.2.3/ext/pg_query/include/pg_query_enum_defs.c0000644000004100000410000021776414510636647023542 0ustar www-datawww-data// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb static const char* _enumToStringOverridingKind(OverridingKind value) { switch(value) { case OVERRIDING_NOT_SET: return "OVERRIDING_NOT_SET"; case OVERRIDING_USER_VALUE: return "OVERRIDING_USER_VALUE"; case OVERRIDING_SYSTEM_VALUE: return "OVERRIDING_SYSTEM_VALUE"; } Assert(false); return NULL; } static const char* _enumToStringQuerySource(QuerySource value) { switch(value) { case QSRC_ORIGINAL: return "QSRC_ORIGINAL"; case QSRC_PARSER: return "QSRC_PARSER"; case QSRC_INSTEAD_RULE: return "QSRC_INSTEAD_RULE"; case QSRC_QUAL_INSTEAD_RULE: return "QSRC_QUAL_INSTEAD_RULE"; case QSRC_NON_INSTEAD_RULE: return "QSRC_NON_INSTEAD_RULE"; } Assert(false); return NULL; } static const char* _enumToStringSortByDir(SortByDir value) { switch(value) { case SORTBY_DEFAULT: return "SORTBY_DEFAULT"; case SORTBY_ASC: return "SORTBY_ASC"; case SORTBY_DESC: return "SORTBY_DESC"; case SORTBY_USING: return "SORTBY_USING"; } Assert(false); return NULL; } static const char* _enumToStringSortByNulls(SortByNulls value) { switch(value) { case SORTBY_NULLS_DEFAULT: return "SORTBY_NULLS_DEFAULT"; case SORTBY_NULLS_FIRST: return "SORTBY_NULLS_FIRST"; case SORTBY_NULLS_LAST: return "SORTBY_NULLS_LAST"; } Assert(false); return NULL; } static const char* _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* _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* _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_AddColumnRecurse: return "AT_AddColumnRecurse"; case AT_AddColumnToView: return "AT_AddColumnToView"; case AT_ColumnDefault: return "AT_ColumnDefault"; case AT_CookedColumnDefault: return "AT_CookedColumnDefault"; case AT_DropNotNull: return "AT_DropNotNull"; case AT_SetNotNull: return "AT_SetNotNull"; case AT_DropExpression: return "AT_DropExpression"; case AT_CheckNotNull: return "AT_CheckNotNull"; case AT_SetStatistics: return "AT_SetStatistics"; case AT_SetOptions: return "AT_SetOptions"; case AT_ResetOptions: return "AT_ResetOptions"; case AT_SetStorage: return "AT_SetStorage"; case AT_SetCompression: return "AT_SetCompression"; case AT_DropColumn: return "AT_DropColumn"; case AT_DropColumnRecurse: return "AT_DropColumnRecurse"; case AT_AddIndex: return "AT_AddIndex"; case AT_ReAddIndex: return "AT_ReAddIndex"; case AT_AddConstraint: return "AT_AddConstraint"; case AT_AddConstraintRecurse: return "AT_AddConstraintRecurse"; case AT_ReAddConstraint: return "AT_ReAddConstraint"; case AT_ReAddDomainConstraint: return "AT_ReAddDomainConstraint"; case AT_AlterConstraint: return "AT_AlterConstraint"; case AT_ValidateConstraint: return "AT_ValidateConstraint"; case AT_ValidateConstraintRecurse: return "AT_ValidateConstraintRecurse"; case AT_AddIndexConstraint: return "AT_AddIndexConstraint"; case AT_DropConstraint: return "AT_DropConstraint"; case AT_DropConstraintRecurse: return "AT_DropConstraintRecurse"; case AT_ReAddComment: return "AT_ReAddComment"; case AT_AlterColumnType: return "AT_AlterColumnType"; case AT_AlterColumnGenericOptions: return "AT_AlterColumnGenericOptions"; case AT_ChangeOwner: return "AT_ChangeOwner"; case AT_ClusterOn: return "AT_ClusterOn"; case AT_DropCluster: return "AT_DropCluster"; case AT_SetLogged: return "AT_SetLogged"; case AT_SetUnLogged: return "AT_SetUnLogged"; case AT_DropOids: return "AT_DropOids"; case AT_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* _enumToStringOnCommitAction(OnCommitAction value) { switch(value) { case ONCOMMIT_NOOP: return "ONCOMMIT_NOOP"; case ONCOMMIT_PRESERVE_ROWS: return "ONCOMMIT_PRESERVE_ROWS"; case ONCOMMIT_DELETE_ROWS: return "ONCOMMIT_DELETE_ROWS"; case ONCOMMIT_DROP: return "ONCOMMIT_DROP"; } Assert(false); return NULL; } static const char* _enumToStringParamKind(ParamKind value) { switch(value) { case PARAM_EXTERN: return "PARAM_EXTERN"; case PARAM_EXEC: return "PARAM_EXEC"; case PARAM_SUBLINK: return "PARAM_SUBLINK"; case PARAM_MULTIEXPR: return "PARAM_MULTIEXPR"; } Assert(false); return NULL; } static const char* _enumToStringCoercionContext(CoercionContext value) { switch(value) { case COERCION_IMPLICIT: return "COERCION_IMPLICIT"; case COERCION_ASSIGNMENT: return "COERCION_ASSIGNMENT"; case COERCION_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* _enumToStringNullTestType(NullTestType value) { switch(value) { case IS_NULL: return "IS_NULL"; case IS_NOT_NULL: return "IS_NOT_NULL"; } Assert(false); return NULL; } static const char* _enumToStringBoolTestType(BoolTestType value) { switch(value) { case IS_TRUE: return "IS_TRUE"; case IS_NOT_TRUE: return "IS_NOT_TRUE"; case IS_FALSE: return "IS_FALSE"; case IS_NOT_FALSE: return "IS_NOT_FALSE"; case IS_UNKNOWN: return "IS_UNKNOWN"; case IS_NOT_UNKNOWN: return "IS_NOT_UNKNOWN"; } Assert(false); return NULL; } static const char* _enumToStringCmdType(CmdType value) { switch(value) { case CMD_UNKNOWN: return "CMD_UNKNOWN"; case CMD_SELECT: return "CMD_SELECT"; case CMD_UPDATE: return "CMD_UPDATE"; case CMD_INSERT: return "CMD_INSERT"; case CMD_DELETE: return "CMD_DELETE"; case CMD_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_UNIQUE_OUTER: return "JOIN_UNIQUE_OUTER"; case JOIN_UNIQUE_INNER: return "JOIN_UNIQUE_INNER"; } Assert(false); return NULL; } static const char* _enumToStringAggStrategy(AggStrategy value) { switch(value) { case AGG_PLAIN: return "AGG_PLAIN"; case AGG_SORTED: return "AGG_SORTED"; case AGG_HASHED: return "AGG_HASHED"; case AGG_MIXED: return "AGG_MIXED"; } Assert(false); return NULL; } static const char* _enumToStringAggSplit(AggSplit value) { switch(value) { case AGGSPLIT_SIMPLE: return "AGGSPLIT_SIMPLE"; case AGGSPLIT_INITIAL_SERIAL: return "AGGSPLIT_INITIAL_SERIAL"; case AGGSPLIT_FINAL_DESERIAL: return "AGGSPLIT_FINAL_DESERIAL"; } Assert(false); return NULL; } static const char* _enumToStringSetOpCmd(SetOpCmd value) { switch(value) { case SETOPCMD_INTERSECT: return "SETOPCMD_INTERSECT"; case SETOPCMD_INTERSECT_ALL: return "SETOPCMD_INTERSECT_ALL"; case SETOPCMD_EXCEPT: return "SETOPCMD_EXCEPT"; case SETOPCMD_EXCEPT_ALL: return "SETOPCMD_EXCEPT_ALL"; } Assert(false); return NULL; } static const char* _enumToStringSetOpStrategy(SetOpStrategy value) { switch(value) { case SETOP_SORTED: return "SETOP_SORTED"; case SETOP_HASHED: return "SETOP_HASHED"; } Assert(false); return NULL; } static const char* _enumToStringOnConflictAction(OnConflictAction value) { switch(value) { case ONCONFLICT_NONE: return "ONCONFLICT_NONE"; case ONCONFLICT_NOTHING: return "ONCONFLICT_NOTHING"; case ONCONFLICT_UPDATE: return "ONCONFLICT_UPDATE"; } Assert(false); return NULL; } static const char* _enumToStringLimitOption(LimitOption value) { switch(value) { case LIMIT_OPTION_DEFAULT: return "LIMIT_OPTION_DEFAULT"; case LIMIT_OPTION_COUNT: return "LIMIT_OPTION_COUNT"; case LIMIT_OPTION_WITH_TIES: return "LIMIT_OPTION_WITH_TIES"; } Assert(false); return NULL; } static const char* _enumToStringLockClauseStrength(LockClauseStrength value) { switch(value) { case LCS_NONE: return "LCS_NONE"; case LCS_FORKEYSHARE: return "LCS_FORKEYSHARE"; case LCS_FORSHARE: return "LCS_FORSHARE"; case LCS_FORNOKEYUPDATE: return "LCS_FORNOKEYUPDATE"; case LCS_FORUPDATE: return "LCS_FORUPDATE"; } Assert(false); return NULL; } static const char* _enumToStringLockWaitPolicy(LockWaitPolicy value) { switch(value) { case LockWaitBlock: return "LockWaitBlock"; case LockWaitSkip: return "LockWaitSkip"; case LockWaitError: return "LockWaitError"; } Assert(false); return NULL; } static const char* _enumToStringLockTupleMode(LockTupleMode value) { switch(value) { case LockTupleKeyShare: return "LockTupleKeyShare"; case LockTupleShare: return "LockTupleShare"; case LockTupleNoKeyExclusive: return "LockTupleNoKeyExclusive"; case LockTupleExclusive: return "LockTupleExclusive"; } Assert(false); return NULL; }static int _enumToIntOverridingKind(OverridingKind value) { switch(value) { case OVERRIDING_NOT_SET: return 1; case OVERRIDING_USER_VALUE: return 2; case OVERRIDING_SYSTEM_VALUE: return 3; } Assert(false); return -1; } static int _enumToIntQuerySource(QuerySource value) { switch(value) { case QSRC_ORIGINAL: return 1; case QSRC_PARSER: return 2; case QSRC_INSTEAD_RULE: return 3; case QSRC_QUAL_INSTEAD_RULE: return 4; case QSRC_NON_INSTEAD_RULE: return 5; } Assert(false); return -1; } static int _enumToIntSortByDir(SortByDir value) { switch(value) { case SORTBY_DEFAULT: return 1; case SORTBY_ASC: return 2; case SORTBY_DESC: return 3; case SORTBY_USING: return 4; } Assert(false); return -1; } static int _enumToIntSortByNulls(SortByNulls value) { switch(value) { case SORTBY_NULLS_DEFAULT: return 1; case SORTBY_NULLS_FIRST: return 2; case SORTBY_NULLS_LAST: return 3; } Assert(false); return -1; } static int _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 _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 _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_AddColumnRecurse: return 2; case AT_AddColumnToView: return 3; case AT_ColumnDefault: return 4; case AT_CookedColumnDefault: return 5; case AT_DropNotNull: return 6; case AT_SetNotNull: return 7; case AT_DropExpression: return 8; case AT_CheckNotNull: return 9; case AT_SetStatistics: return 10; case AT_SetOptions: return 11; case AT_ResetOptions: return 12; case AT_SetStorage: return 13; case AT_SetCompression: return 14; case AT_DropColumn: return 15; case AT_DropColumnRecurse: return 16; case AT_AddIndex: return 17; case AT_ReAddIndex: return 18; case AT_AddConstraint: return 19; case AT_AddConstraintRecurse: return 20; case AT_ReAddConstraint: return 21; case AT_ReAddDomainConstraint: return 22; case AT_AlterConstraint: return 23; case AT_ValidateConstraint: return 24; case AT_ValidateConstraintRecurse: return 25; case AT_AddIndexConstraint: return 26; case AT_DropConstraint: return 27; case AT_DropConstraintRecurse: return 28; case AT_ReAddComment: return 29; case AT_AlterColumnType: return 30; case AT_AlterColumnGenericOptions: return 31; case AT_ChangeOwner: return 32; case AT_ClusterOn: return 33; case AT_DropCluster: return 34; case AT_SetLogged: return 35; case AT_SetUnLogged: return 36; case AT_DropOids: return 37; case AT_SetAccessMethod: return 38; case AT_SetTableSpace: return 39; case AT_SetRelOptions: return 40; case AT_ResetRelOptions: return 41; case AT_ReplaceRelOptions: return 42; case AT_EnableTrig: return 43; case AT_EnableAlwaysTrig: return 44; case AT_EnableReplicaTrig: return 45; case AT_DisableTrig: return 46; case AT_EnableTrigAll: return 47; case AT_DisableTrigAll: return 48; case AT_EnableTrigUser: return 49; case AT_DisableTrigUser: return 50; case AT_EnableRule: return 51; case AT_EnableAlwaysRule: return 52; case AT_EnableReplicaRule: return 53; case AT_DisableRule: return 54; case AT_AddInherit: return 55; case AT_DropInherit: return 56; case AT_AddOf: return 57; case AT_DropOf: return 58; case AT_ReplicaIdentity: return 59; case AT_EnableRowSecurity: return 60; case AT_DisableRowSecurity: return 61; case AT_ForceRowSecurity: return 62; case AT_NoForceRowSecurity: return 63; case AT_GenericOptions: return 64; case AT_AttachPartition: return 65; case AT_DetachPartition: return 66; case AT_DetachPartitionFinalize: return 67; case AT_AddIdentity: return 68; case AT_SetIdentity: return 69; case AT_DropIdentity: return 70; case AT_ReAddStatistics: return 71; } 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 _enumToIntOnCommitAction(OnCommitAction value) { switch(value) { case ONCOMMIT_NOOP: return 1; case ONCOMMIT_PRESERVE_ROWS: return 2; case ONCOMMIT_DELETE_ROWS: return 3; case ONCOMMIT_DROP: return 4; } Assert(false); return -1; } static int _enumToIntParamKind(ParamKind value) { switch(value) { case PARAM_EXTERN: return 1; case PARAM_EXEC: return 2; case PARAM_SUBLINK: return 3; case PARAM_MULTIEXPR: return 4; } Assert(false); return -1; } static int _enumToIntCoercionContext(CoercionContext value) { switch(value) { case COERCION_IMPLICIT: return 1; case COERCION_ASSIGNMENT: return 2; case COERCION_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 _enumToIntNullTestType(NullTestType value) { switch(value) { case IS_NULL: return 1; case IS_NOT_NULL: return 2; } Assert(false); return -1; } static int _enumToIntBoolTestType(BoolTestType value) { switch(value) { case IS_TRUE: return 1; case IS_NOT_TRUE: return 2; case IS_FALSE: return 3; case IS_NOT_FALSE: return 4; case IS_UNKNOWN: return 5; case IS_NOT_UNKNOWN: return 6; } Assert(false); return -1; } static int _enumToIntCmdType(CmdType value) { switch(value) { case CMD_UNKNOWN: return 1; case CMD_SELECT: return 2; case CMD_UPDATE: return 3; case CMD_INSERT: return 4; case CMD_DELETE: return 5; case CMD_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_UNIQUE_OUTER: return 7; case JOIN_UNIQUE_INNER: return 8; } Assert(false); return -1; } static int _enumToIntAggStrategy(AggStrategy value) { switch(value) { case AGG_PLAIN: return 1; case AGG_SORTED: return 2; case AGG_HASHED: return 3; case AGG_MIXED: return 4; } Assert(false); return -1; } static int _enumToIntAggSplit(AggSplit value) { switch(value) { case AGGSPLIT_SIMPLE: return 1; case AGGSPLIT_INITIAL_SERIAL: return 2; case AGGSPLIT_FINAL_DESERIAL: return 3; } Assert(false); return -1; } static int _enumToIntSetOpCmd(SetOpCmd value) { switch(value) { case SETOPCMD_INTERSECT: return 1; case SETOPCMD_INTERSECT_ALL: return 2; case SETOPCMD_EXCEPT: return 3; case SETOPCMD_EXCEPT_ALL: return 4; } Assert(false); return -1; } static int _enumToIntSetOpStrategy(SetOpStrategy value) { switch(value) { case SETOP_SORTED: return 1; case SETOP_HASHED: return 2; } Assert(false); return -1; } static int _enumToIntOnConflictAction(OnConflictAction value) { switch(value) { case ONCONFLICT_NONE: return 1; case ONCONFLICT_NOTHING: return 2; case ONCONFLICT_UPDATE: return 3; } Assert(false); return -1; } static int _enumToIntLimitOption(LimitOption value) { switch(value) { case LIMIT_OPTION_DEFAULT: return 1; case LIMIT_OPTION_COUNT: return 2; case LIMIT_OPTION_WITH_TIES: return 3; } Assert(false); return -1; } static int _enumToIntLockClauseStrength(LockClauseStrength value) { switch(value) { case LCS_NONE: return 1; case LCS_FORKEYSHARE: return 2; case LCS_FORSHARE: return 3; case LCS_FORNOKEYUPDATE: return 4; case LCS_FORUPDATE: return 5; } Assert(false); return -1; } static int _enumToIntLockWaitPolicy(LockWaitPolicy value) { switch(value) { case LockWaitBlock: return 1; case LockWaitSkip: return 2; case LockWaitError: return 3; } Assert(false); return -1; } static int _enumToIntLockTupleMode(LockTupleMode value) { switch(value) { case LockTupleKeyShare: return 1; case LockTupleShare: return 2; case LockTupleNoKeyExclusive: return 3; case LockTupleExclusive: return 4; } Assert(false); return -1; }static OverridingKind _intToEnumOverridingKind(int value) { switch(value) { case 1: return OVERRIDING_NOT_SET; case 2: return OVERRIDING_USER_VALUE; case 3: return OVERRIDING_SYSTEM_VALUE; } Assert(false); return OVERRIDING_NOT_SET; } static QuerySource _intToEnumQuerySource(int value) { switch(value) { case 1: return QSRC_ORIGINAL; case 2: return QSRC_PARSER; case 3: return QSRC_INSTEAD_RULE; case 4: return QSRC_QUAL_INSTEAD_RULE; case 5: return QSRC_NON_INSTEAD_RULE; } Assert(false); return QSRC_ORIGINAL; } static SortByDir _intToEnumSortByDir(int value) { switch(value) { case 1: return SORTBY_DEFAULT; case 2: return SORTBY_ASC; case 3: return SORTBY_DESC; case 4: return SORTBY_USING; } Assert(false); return SORTBY_DEFAULT; } static SortByNulls _intToEnumSortByNulls(int value) { switch(value) { case 1: return SORTBY_NULLS_DEFAULT; case 2: return SORTBY_NULLS_FIRST; case 3: return SORTBY_NULLS_LAST; } Assert(false); return SORTBY_NULLS_DEFAULT; } static 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 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 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_AddColumnRecurse; case 3: return AT_AddColumnToView; case 4: return AT_ColumnDefault; case 5: return AT_CookedColumnDefault; case 6: return AT_DropNotNull; case 7: return AT_SetNotNull; case 8: return AT_DropExpression; case 9: return AT_CheckNotNull; case 10: return AT_SetStatistics; case 11: return AT_SetOptions; case 12: return AT_ResetOptions; case 13: return AT_SetStorage; case 14: return AT_SetCompression; case 15: return AT_DropColumn; case 16: return AT_DropColumnRecurse; case 17: return AT_AddIndex; case 18: return AT_ReAddIndex; case 19: return AT_AddConstraint; case 20: return AT_AddConstraintRecurse; case 21: return AT_ReAddConstraint; case 22: return AT_ReAddDomainConstraint; case 23: return AT_AlterConstraint; case 24: return AT_ValidateConstraint; case 25: return AT_ValidateConstraintRecurse; case 26: return AT_AddIndexConstraint; case 27: return AT_DropConstraint; case 28: return AT_DropConstraintRecurse; case 29: return AT_ReAddComment; case 30: return AT_AlterColumnType; case 31: return AT_AlterColumnGenericOptions; case 32: return AT_ChangeOwner; case 33: return AT_ClusterOn; case 34: return AT_DropCluster; case 35: return AT_SetLogged; case 36: return AT_SetUnLogged; case 37: return AT_DropOids; case 38: return AT_SetAccessMethod; case 39: return AT_SetTableSpace; case 40: return AT_SetRelOptions; case 41: return AT_ResetRelOptions; case 42: return AT_ReplaceRelOptions; case 43: return AT_EnableTrig; case 44: return AT_EnableAlwaysTrig; case 45: return AT_EnableReplicaTrig; case 46: return AT_DisableTrig; case 47: return AT_EnableTrigAll; case 48: return AT_DisableTrigAll; case 49: return AT_EnableTrigUser; case 50: return AT_DisableTrigUser; case 51: return AT_EnableRule; case 52: return AT_EnableAlwaysRule; case 53: return AT_EnableReplicaRule; case 54: return AT_DisableRule; case 55: return AT_AddInherit; case 56: return AT_DropInherit; case 57: return AT_AddOf; case 58: return AT_DropOf; case 59: return AT_ReplicaIdentity; case 60: return AT_EnableRowSecurity; case 61: return AT_DisableRowSecurity; case 62: return AT_ForceRowSecurity; case 63: return AT_NoForceRowSecurity; case 64: return AT_GenericOptions; case 65: return AT_AttachPartition; case 66: return AT_DetachPartition; case 67: return AT_DetachPartitionFinalize; case 68: return AT_AddIdentity; case 69: return AT_SetIdentity; case 70: return AT_DropIdentity; case 71: 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 OnCommitAction _intToEnumOnCommitAction(int value) { switch(value) { case 1: return ONCOMMIT_NOOP; case 2: return ONCOMMIT_PRESERVE_ROWS; case 3: return ONCOMMIT_DELETE_ROWS; case 4: return ONCOMMIT_DROP; } Assert(false); return ONCOMMIT_NOOP; } static ParamKind _intToEnumParamKind(int value) { switch(value) { case 1: return PARAM_EXTERN; case 2: return PARAM_EXEC; case 3: return PARAM_SUBLINK; case 4: return PARAM_MULTIEXPR; } Assert(false); return PARAM_EXTERN; } static CoercionContext _intToEnumCoercionContext(int value) { switch(value) { case 1: return COERCION_IMPLICIT; case 2: return COERCION_ASSIGNMENT; case 3: return COERCION_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 NullTestType _intToEnumNullTestType(int value) { switch(value) { case 1: return IS_NULL; case 2: return IS_NOT_NULL; } Assert(false); return IS_NULL; } static BoolTestType _intToEnumBoolTestType(int value) { switch(value) { case 1: return IS_TRUE; case 2: return IS_NOT_TRUE; case 3: return IS_FALSE; case 4: return IS_NOT_FALSE; case 5: return IS_UNKNOWN; case 6: return IS_NOT_UNKNOWN; } Assert(false); return IS_TRUE; } static CmdType _intToEnumCmdType(int value) { switch(value) { case 1: return CMD_UNKNOWN; case 2: return CMD_SELECT; case 3: return CMD_UPDATE; case 4: return CMD_INSERT; case 5: return CMD_DELETE; case 6: return CMD_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_UNIQUE_OUTER; case 8: return JOIN_UNIQUE_INNER; } Assert(false); return JOIN_INNER; } static AggStrategy _intToEnumAggStrategy(int value) { switch(value) { case 1: return AGG_PLAIN; case 2: return AGG_SORTED; case 3: return AGG_HASHED; case 4: return AGG_MIXED; } Assert(false); return AGG_PLAIN; } static AggSplit _intToEnumAggSplit(int value) { switch(value) { case 1: return AGGSPLIT_SIMPLE; case 2: return AGGSPLIT_INITIAL_SERIAL; case 3: return AGGSPLIT_FINAL_DESERIAL; } Assert(false); return AGGSPLIT_SIMPLE; } static SetOpCmd _intToEnumSetOpCmd(int value) { switch(value) { case 1: return SETOPCMD_INTERSECT; case 2: return SETOPCMD_INTERSECT_ALL; case 3: return SETOPCMD_EXCEPT; case 4: return SETOPCMD_EXCEPT_ALL; } Assert(false); return SETOPCMD_INTERSECT; } static SetOpStrategy _intToEnumSetOpStrategy(int value) { switch(value) { case 1: return SETOP_SORTED; case 2: return SETOP_HASHED; } Assert(false); return SETOP_SORTED; } static OnConflictAction _intToEnumOnConflictAction(int value) { switch(value) { case 1: return ONCONFLICT_NONE; case 2: return ONCONFLICT_NOTHING; case 3: return ONCONFLICT_UPDATE; } Assert(false); return ONCONFLICT_NONE; } static LimitOption _intToEnumLimitOption(int value) { switch(value) { case 1: return LIMIT_OPTION_DEFAULT; case 2: return LIMIT_OPTION_COUNT; case 3: return LIMIT_OPTION_WITH_TIES; } Assert(false); return LIMIT_OPTION_DEFAULT; } static LockClauseStrength _intToEnumLockClauseStrength(int value) { switch(value) { case 1: return LCS_NONE; case 2: return LCS_FORKEYSHARE; case 3: return LCS_FORSHARE; case 4: return LCS_FORNOKEYUPDATE; case 5: return LCS_FORUPDATE; } Assert(false); return LCS_NONE; } static LockWaitPolicy _intToEnumLockWaitPolicy(int value) { switch(value) { case 1: return LockWaitBlock; case 2: return LockWaitSkip; case 3: return LockWaitError; } Assert(false); return LockWaitBlock; } static LockTupleMode _intToEnumLockTupleMode(int value) { switch(value) { case 1: return LockTupleKeyShare; case 2: return LockTupleShare; case 3: return LockTupleNoKeyExclusive; case 4: return LockTupleExclusive; } Assert(false); return LockTupleKeyShare; }pg_query-4.2.3/ext/pg_query/include/storage/0000755000004100000410000000000014510636647021141 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/storage/large_object.h0000644000004100000410000000712114510636647023733 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/storage/sinvaladt.h0000644000004100000410000000312714510636647023302 0ustar www-datawww-data/*------------------------------------------------------------------------- * * sinvaladt.h * POSTGRES shared cache invalidation data manager. * * The shared cache invalidation manager is responsible for transmitting * invalidation messages between backends. Any message sent by any backend * must be delivered to all already-running backends before it can be * forgotten. (If we run out of space, we instead deliver a "RESET" * message to backends that have fallen too far behind.) * * The struct type SharedInvalidationMessage, defining the contents of * a single message, is defined in sinval.h. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/sinvaladt.h * *------------------------------------------------------------------------- */ #ifndef SINVALADT_H #define SINVALADT_H #include "storage/lock.h" #include "storage/sinval.h" /* * prototypes for functions in sinvaladt.c */ extern Size SInvalShmemSize(void); extern void CreateSharedInvalidationState(void); extern void SharedInvalBackendInit(bool sendOnly); extern PGPROC *BackendIdGetProc(int backendID); extern void BackendIdGetTransactionIds(int backendID, TransactionId *xid, TransactionId *xmin); extern void SIInsertDataEntries(const SharedInvalidationMessage *data, int n); extern int SIGetDataEntries(SharedInvalidationMessage *data, int datasize); extern void SICleanupQueue(bool callerHasWriteLock, int minFree); extern LocalTransactionId GetNextLocalTransactionId(void); #endif /* SINVALADT_H */ pg_query-4.2.3/ext/pg_query/include/storage/proc.h0000644000004100000410000004421114510636647022257 0ustar www-datawww-data/*------------------------------------------------------------------------- * * proc.h * per-process shared memory data structures * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/proc.h * *------------------------------------------------------------------------- */ #ifndef _PROC_H_ #define _PROC_H_ #include "access/clog.h" #include "access/xlogdefs.h" #include "lib/ilist.h" #include "storage/latch.h" #include "storage/lock.h" #include "storage/pg_sema.h" #include "storage/proclist_types.h" /* * Each backend advertises up to PGPROC_MAX_CACHED_SUBXIDS TransactionIds * for non-aborted subtransactions of its current top transaction. These * have to be treated as running XIDs by other backends. * * We also keep track of whether the cache overflowed (ie, the transaction has * generated at least one subtransaction that didn't fit in the cache). * If none of the caches have overflowed, we can assume that an XID that's not * listed anywhere in the PGPROC array is not a running transaction. Else we * have to look at pg_subtrans. */ #define PGPROC_MAX_CACHED_SUBXIDS 64 /* XXX guessed-at value */ 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 /* * An invalid pgprocno. Must be larger than the maximum number of PGPROC * structures we could possibly have. See comments for MAX_BACKENDS. */ #define INVALID_PGPROCNO PG_INT32_MAX /* * Flags for PGPROC.delayChkpt * * 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 actaully 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 * delayChkpt 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) */ SHM_QUEUE links; /* list link if process is in a list */ PGPROC **procgloballist; /* procglobal list that owns this PGPROC */ PGSemaphore sem; /* ONE semaphore to sleep on */ 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 ! */ LocalTransactionId lxid; /* local id of top-level transaction currently * being executed by this proc, if running; * else InvalidLocalTransactionId */ int pid; /* Backend's process ID; 0 if prepared xact */ int pgxactoff; /* offset into various ProcGlobal->arrays with * data mirrored from this PGPROC */ int pgprocno; /* These fields are zero while a backend is still starting up: */ BackendId backendId; /* This backend's backend ID (if assigned) */ Oid databaseId; /* OID of database this backend is using */ Oid roleId; /* OID of role using this backend */ Oid tempNamespaceId; /* OID of temp schema this backend is * using */ bool isBackgroundWorker; /* true if background worker. */ /* * While in hot standby mode, shows that a conflict signal has been sent * for the current transaction. Set/cleared while holding ProcArrayLock, * though not required. Accessed without lock, if needed. */ bool recoveryConflictPending; /* Info about LWLock the process is currently waiting for, if any. */ bool lwWaiting; /* true if waiting for an LW lock */ uint8 lwWaitMode; /* lwlock mode being waited for */ proclist_node lwWaitLink; /* position in LW lock wait list */ /* Support for condition variables. */ proclist_node cvWaitLink; /* position in CV wait list */ /* Info about lock the process is currently waiting for, if any. */ /* waitLock and waitProcLock are NULL if not currently waiting. */ LOCK *waitLock; /* Lock object we're sleeping on ... */ PROCLOCK *waitProcLock; /* Per-holder info for awaited lock */ LOCKMODE waitLockMode; /* type of lock we're waiting for */ LOCKMASK heldLocks; /* bitmask for lock types already held on this * lock object by this backend */ 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 */ SHM_QUEUE syncRepLinks; /* list link if process is in syncrep queue */ /* * All PROCLOCK objects for locks held or awaited by this backend are * linked into one of these lists, according to the partition number of * their lock. */ SHM_QUEUE myProcLocks[NUM_LOCK_PARTITIONS]; 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 */ int clogGroupMemberPage; /* clog page corresponding to * transaction id of clog group member */ XLogRecPtr clogGroupMemberLsn; /* WAL location of commit record for clog * group member */ /* Lock manager data, recording fast-path locks taken by this backend. */ LWLock fpInfoLock; /* protects per-backend fast-path state */ uint64 fpLockBits; /* lock modes held for each fast-path slot */ Oid fpRelId[FP_LOCK_SLOTS_PER_BACKEND]; /* slots for rel oids */ bool fpVXIDLock; /* are we holding a fast-path VXID lock? */ LocalTransactionId fpLocalTransactionId; /* lxid for fast-path VXID * lock */ /* * Support for lock groups. Use LockHashPartitionLockByProc on the group * leader to get the LWLock protecting these fields. */ PGPROC *lockGroupLeader; /* lock group leader, if I'm a member */ dlist_head lockGroupMembers; /* list of members, if I'm a leader */ dlist_node lockGroupLink; /* my member link, if I'm a member */ }; /* NOTE: "typedef struct PGPROC PGPROC" appears in storage/lock.h. */ extern PGDLLIMPORT PGPROC *MyProc; /* * 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 */ PGPROC *freeProcs; /* Head of list of autovacuum's free PGPROC structures */ PGPROC *autovacFreeProcs; /* Head of list of bgworker free PGPROC structures */ PGPROC *bgworkerFreeProcs; /* Head of list of walsender free PGPROC structures */ PGPROC *walsenderFreeProcs; /* First pgproc waiting for group XID clear */ pg_atomic_uint32 procArrayGroupFirst; /* First pgproc waiting for group transaction status update */ pg_atomic_uint32 clogGroupFirst; /* WALWriter process's latch */ Latch *walwriterLatch; /* Checkpointer process's latch */ Latch *checkpointerLatch; /* Current shared estimate of appropriate spins_per_delay value */ int spins_per_delay; /* 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; /* Accessor for PGPROC given a pgprocno. */ #define GetPGProcByNumber(n) (&ProcGlobal->allProcs[(n)]) /* * We set aside some extra PGPROC structures for auxiliary processes, * ie things that aren't full-fledged backends but need shmem access. * * Background writer, checkpointer, WAL writer 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 5 slots. */ #define NUM_AUXILIARY_PROCS 5 /* configurable options */ extern PGDLLIMPORT int DeadlockTimeout; extern PGDLLIMPORT int StatementTimeout; extern PGDLLIMPORT int LockTimeout; extern PGDLLIMPORT int IdleInTransactionSessionTimeout; 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); extern void ProcReleaseLocks(bool isCommit); extern void ProcQueueInit(PROC_QUEUE *queue); extern ProcWaitStatus ProcSleep(LOCALLOCK *locallock, LockMethod lockMethodTable); extern PGPROC *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(int pgprocno); extern PGPROC *AuxiliaryPidGetProc(int pid); extern void BecomeLockGroupLeader(void); extern bool BecomeLockGroupMember(PGPROC *leader, int pid); #endif /* _PROC_H_ */ pg_query-4.2.3/ext/pg_query/include/storage/pg_sema.h0000644000004100000410000000421714510636647022731 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/storage/shmem.h0000644000004100000410000000544214510636647022430 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/shmem.h * *------------------------------------------------------------------------- */ #ifndef SHMEM_H #define SHMEM_H #include "utils/hsearch.h" /* shmqueue.c */ typedef struct SHM_QUEUE { struct SHM_QUEUE *prev; struct SHM_QUEUE *next; } SHM_QUEUE; /* shmem.c */ extern void InitShmemAccess(void *seghdr); extern void InitShmemAllocation(void); extern void *ShmemAlloc(Size size); extern void *ShmemAllocNoError(Size size); extern void *ShmemAllocUnlocked(Size size); extern bool ShmemAddrIsValid(const void *addr); extern void InitShmemIndex(void); extern HTAB *ShmemInitHash(const char *name, long init_size, long max_size, HASHCTL *infoP, int hash_flags); extern void *ShmemInitStruct(const char *name, Size size, bool *foundPtr); extern Size add_size(Size s1, Size s2); extern Size mul_size(Size s1, Size s2); /* ipci.c */ extern void RequestAddinShmemSpace(Size size); /* size constants for the shmem index table */ /* max size of data structure string name */ #define SHMEM_INDEX_KEYSIZE (48) /* estimated size of the shmem index table (not a hard limit) */ #define SHMEM_INDEX_SIZE (64) /* this is a hash bucket in the shmem index table */ typedef struct { char key[SHMEM_INDEX_KEYSIZE]; /* string name */ void *location; /* location in shared mem */ Size size; /* # bytes requested for the structure */ Size allocated_size; /* # bytes actually allocated */ } ShmemIndexEnt; /* * prototypes for functions in shmqueue.c */ extern void SHMQueueInit(SHM_QUEUE *queue); extern void SHMQueueElemInit(SHM_QUEUE *queue); extern void SHMQueueDelete(SHM_QUEUE *queue); extern void SHMQueueInsertBefore(SHM_QUEUE *queue, SHM_QUEUE *elem); extern void SHMQueueInsertAfter(SHM_QUEUE *queue, SHM_QUEUE *elem); extern Pointer SHMQueueNext(const SHM_QUEUE *queue, const SHM_QUEUE *curElem, Size linkOffset); extern Pointer SHMQueuePrev(const SHM_QUEUE *queue, const SHM_QUEUE *curElem, Size linkOffset); extern bool SHMQueueEmpty(const SHM_QUEUE *queue); extern bool SHMQueueIsDetached(const SHM_QUEUE *queue); #endif /* SHMEM_H */ pg_query-4.2.3/ext/pg_query/include/storage/shm_toc.h0000644000004100000410000000431714510636647022753 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/storage/lwlock.h0000644000004100000410000001626614510636647022620 0ustar www-datawww-data/*------------------------------------------------------------------------- * * lwlock.h * Lightweight lock manager * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/lwlock.h * *------------------------------------------------------------------------- */ #ifndef LWLOCK_H #define LWLOCK_H #ifdef FRONTEND #error "lwlock.h may not be included from frontend code" #endif #include "port/atomics.h" #include "storage/proclist_types.h" struct PGPROC; /* * Code outside of lwlock.c should not manipulate the contents of this * structure directly, but we have to declare it here to allow LWLocks to be * incorporated into other data structures. */ typedef struct LWLock { uint16 tranche; /* tranche ID */ pg_atomic_uint32 state; /* state of exclusive/nonexclusive lockers */ proclist_head waiters; /* list of waiting PGPROCs */ #ifdef LOCK_DEBUG pg_atomic_uint32 nwaiters; /* number of waiters */ struct PGPROC *owner; /* last exclusive owner of the lock */ #endif } LWLock; /* * In most cases, it's desirable to force each tranche of LWLocks to be aligned * on a cache line boundary and make the array stride a power of 2. This saves * a few cycles in indexing, but more importantly ensures that individual * LWLocks don't cross cache line boundaries. This reduces cache contention * problems, especially on AMD Opterons. In some cases, it's useful to add * even more padding so that each LWLock takes up an entire cache line; this is * useful, for example, in the main LWLock array, where the overall number of * locks is small but some are heavily contended. */ #define LWLOCK_PADDED_SIZE PG_CACHE_LINE_SIZE /* LWLock, padded to a full cache line size */ typedef union LWLockPadded { LWLock lock; char pad[LWLOCK_PADDED_SIZE]; } LWLockPadded; extern PGDLLIMPORT LWLockPadded *MainLWLockArray; /* struct for storing named tranche information */ typedef struct NamedLWLockTranche { int trancheId; char *trancheName; } NamedLWLockTranche; extern PGDLLIMPORT NamedLWLockTranche *NamedLWLockTrancheArray; extern PGDLLIMPORT int NamedLWLockTrancheRequests; /* Names for fixed lwlocks */ #include "storage/lwlocknames.h" /* * It's a bit odd to declare NUM_BUFFER_PARTITIONS and NUM_LOCK_PARTITIONS * here, but we need them to figure out offsets within MainLWLockArray, and * having this file include lock.h or bufmgr.h would be backwards. */ /* Number of partitions of the shared buffer mapping hashtable */ #define NUM_BUFFER_PARTITIONS 128 /* Number of partitions the shared lock tables are divided into */ #define LOG2_NUM_LOCK_PARTITIONS 4 #define NUM_LOCK_PARTITIONS (1 << LOG2_NUM_LOCK_PARTITIONS) /* Number of partitions the shared predicate lock tables are divided into */ #define LOG2_NUM_PREDICATELOCK_PARTITIONS 4 #define NUM_PREDICATELOCK_PARTITIONS (1 << LOG2_NUM_PREDICATELOCK_PARTITIONS) /* Offsets for various chunks of preallocated lwlocks. */ #define BUFFER_MAPPING_LWLOCK_OFFSET NUM_INDIVIDUAL_LWLOCKS #define LOCK_MANAGER_LWLOCK_OFFSET \ (BUFFER_MAPPING_LWLOCK_OFFSET + NUM_BUFFER_PARTITIONS) #define PREDICATELOCK_MANAGER_LWLOCK_OFFSET \ (LOCK_MANAGER_LWLOCK_OFFSET + NUM_LOCK_PARTITIONS) #define NUM_FIXED_LWLOCKS \ (PREDICATELOCK_MANAGER_LWLOCK_OFFSET + NUM_PREDICATELOCK_PARTITIONS) typedef enum LWLockMode { LW_EXCLUSIVE, LW_SHARED, LW_WAIT_UNTIL_FREE /* A special mode used in PGPROC->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, 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, uint64 *valptr, uint64 oldval, uint64 *newval); extern void LWLockUpdateVar(LWLock *lock, uint64 *valptr, uint64 value); extern Size LWLockShmemSize(void); extern void CreateLWLocks(void); extern void InitLWLockAccess(void); extern const char *GetLWLockIdentifier(uint32 classId, uint16 eventId); /* * Extensions (or core code) can obtain an LWLocks by calling * RequestNamedLWLockTranche() during postmaster startup. Subsequently, * call GetNamedLWLockTranche() to obtain a pointer to an array containing * the number of LWLocks requested. */ extern void RequestNamedLWLockTranche(const char *tranche_name, int num_lwlocks); extern LWLockPadded *GetNamedLWLockTranche(const char *tranche_name); /* * There is another, more flexible method of obtaining lwlocks. First, call * LWLockNewTrancheId just once to obtain a tranche ID; this allocates from * a shared counter. Next, each individual process using the tranche should * call LWLockRegisterTranche() to associate that tranche ID with a name. * Finally, LWLockInitialize should be called just once per lwlock, passing * the tranche ID as an argument. * * It may seem strange that each process using the tranche must register it * separately, but dynamic shared memory segments aren't guaranteed to be * mapped at the same address in all coordinating backends, so storing the * registration in the main shared memory segment wouldn't work for that case. */ extern int LWLockNewTrancheId(void); extern void LWLockRegisterTranche(int tranche_id, const char *tranche_name); extern void LWLockInitialize(LWLock *lock, int tranche_id); /* * Every tranche ID less than NUM_INDIVIDUAL_LWLOCKS is reserved; also, * we reserve additional tranche IDs for builtin tranches not included in * the set of individual LWLocks. A call to LWLockNewTrancheId will never * return a value less than LWTRANCHE_FIRST_USER_DEFINED. */ typedef enum BuiltinTrancheIds { LWTRANCHE_XACT_BUFFER = NUM_INDIVIDUAL_LWLOCKS, LWTRANCHE_COMMITTS_BUFFER, LWTRANCHE_SUBTRANS_BUFFER, LWTRANCHE_MULTIXACTOFFSET_BUFFER, LWTRANCHE_MULTIXACTMEMBER_BUFFER, LWTRANCHE_NOTIFY_BUFFER, LWTRANCHE_SERIAL_BUFFER, LWTRANCHE_WAL_INSERT, LWTRANCHE_BUFFER_CONTENT, LWTRANCHE_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_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 */ pg_query-4.2.3/ext/pg_query/include/storage/predicate.h0000644000004100000410000000623414510636647023257 0ustar www-datawww-data/*------------------------------------------------------------------------- * * predicate.h * POSTGRES public predicate locking definitions. * * * Portions Copyright (c) 1996-2022, 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; /* Number of SLRU buffers to use for Serial SLRU */ #define NUM_SERIAL_BUFFERS 16 /* * A handle used for sharing SERIALIZABLEXACT objects between the participants * in a parallel query. */ typedef void *SerializableXactHandle; /* * function prototypes */ /* housekeeping for shared memory predicate lock structures */ extern void InitPredicateLocks(void); extern Size PredicateLockShmemSize(void); extern void CheckPointPredicate(void); /* predicate lock reporting */ extern bool PageIsPredicateLocked(Relation relation, BlockNumber blkno); /* predicate lock maintenance */ extern Snapshot GetSerializableTransactionSnapshot(Snapshot snapshot); extern void SetSerializableTransactionSnapshot(Snapshot snapshot, VirtualTransactionId *sourcevxid, int sourcepid); extern void RegisterPredicateLockingXid(TransactionId xid); extern void PredicateLockRelation(Relation relation, Snapshot snapshot); extern void PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot); extern void PredicateLockTID(Relation relation, ItemPointer tid, Snapshot snapshot, TransactionId insert_xid); extern void PredicateLockPageSplit(Relation relation, BlockNumber oldblkno, BlockNumber newblkno); extern void PredicateLockPageCombine(Relation relation, BlockNumber oldblkno, BlockNumber newblkno); extern void TransferPredicateLocksToHeapRelation(Relation relation); extern void ReleasePredicateLocks(bool isCommit, bool isReadOnlySafe); /* conflict detection (may also trigger rollback) */ extern bool CheckForSerializableConflictOutNeeded(Relation relation, Snapshot snapshot); extern void CheckForSerializableConflictOut(Relation relation, TransactionId xid, Snapshot snapshot); extern void CheckForSerializableConflictIn(Relation relation, ItemPointer tid, BlockNumber blkno); extern void CheckTableForSerializableConflictIn(Relation relation); /* final rollback checking */ extern void PreCommit_CheckForSerializationFailure(void); /* two-phase commit support */ extern void AtPrepare_PredicateLocks(void); extern void PostPrepare_PredicateLocks(TransactionId xid); extern void PredicateLockTwoPhaseFinish(TransactionId xid, bool isCommit); extern void predicatelock_twophase_recover(TransactionId xid, uint16 info, void *recdata, uint32 len); /* parallel query support */ extern SerializableXactHandle ShareSerializableXact(void); extern void AttachSerializableXact(SerializableXactHandle handle); #endif /* PREDICATE_H */ pg_query-4.2.3/ext/pg_query/include/storage/sinval.h0000644000004100000410000001300714510636647022607 0ustar www-datawww-data/*------------------------------------------------------------------------- * * sinval.h * POSTGRES shared cache invalidation communication definitions. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/sinval.h * *------------------------------------------------------------------------- */ #ifndef SINVAL_H #define SINVAL_H #include #include "storage/relfilenode.h" /* * We support several types of shared-invalidation messages: * * invalidate a specific tuple in a specific catcache * * invalidate all catcache entries from a given system catalog * * invalidate a relcache entry for a specific logical relation * * invalidate all relcache entries * * invalidate an smgr cache entry for a specific physical relation * * invalidate the mapped-relation mapping for a given database * * invalidate any saved snapshot that might be used to scan a given relation * More types could be added if needed. The message type is identified by * the first "int8" field of the message struct. Zero or positive means a * specific-catcache inval message (and also serves as the catcache ID field). * Negative values identify the other message types, as per codes below. * * Catcache inval events are initially driven by detecting tuple inserts, * updates and deletions in system catalogs (see CacheInvalidateHeapTuple). * An update can generate two inval events, one for the old tuple and one for * the new, but this is reduced to one event if the tuple's hash key doesn't * change. Note that the inval events themselves don't actually say whether * the tuple is being inserted or deleted. Also, since we transmit only a * hash key, there is a small risk of unnecessary invalidations due to chance * matches of hash keys. * * Note that some system catalogs have multiple caches on them (with different * indexes). On detecting a tuple invalidation in such a catalog, separate * catcache inval messages must be generated for each of its caches, since * the hash keys will generally be different. * * Catcache, relcache, and snapshot invalidations are transactional, and so * are sent to other backends upon commit. Internally to the generating * backend, they are also processed at CommandCounterIncrement so that later * commands in the same transaction see the new state. The generating backend * also has to process them at abort, to flush out any cache state it's loaded * from no-longer-valid entries. * * smgr and relation mapping invalidations are non-transactional: they are * sent immediately when the underlying file change is made. */ typedef struct { int8 id; /* cache ID --- must be first */ Oid dbId; /* database ID, or 0 if a shared relation */ uint32 hashValue; /* hash value of key for this catcache */ } SharedInvalCatcacheMsg; #define SHAREDINVALCATALOG_ID (-1) typedef struct { int8 id; /* type field --- must be first */ Oid dbId; /* database ID, or 0 if a shared catalog */ Oid catId; /* ID of catalog whose contents are invalid */ } SharedInvalCatalogMsg; #define SHAREDINVALRELCACHE_ID (-2) typedef struct { int8 id; /* type field --- must be first */ Oid dbId; /* database ID, or 0 if a shared relation */ Oid relId; /* relation ID, or 0 if whole relcache */ } SharedInvalRelcacheMsg; #define SHAREDINVALSMGR_ID (-3) typedef struct { /* note: field layout chosen to pack into 16 bytes */ int8 id; /* type field --- must be first */ int8 backend_hi; /* high bits of backend ID, if temprel */ uint16 backend_lo; /* low bits of backend ID, if temprel */ RelFileNode rnode; /* spcNode, dbNode, relNode */ } SharedInvalSmgrMsg; #define SHAREDINVALRELMAP_ID (-4) typedef struct { int8 id; /* type field --- must be first */ Oid dbId; /* database ID, or 0 for shared catalogs */ } SharedInvalRelmapMsg; #define SHAREDINVALSNAPSHOT_ID (-5) typedef struct { int8 id; /* type field --- must be first */ Oid dbId; /* database ID, or 0 if a shared relation */ Oid relId; /* relation ID */ } SharedInvalSnapshotMsg; typedef union { int8 id; /* type field --- must be first */ SharedInvalCatcacheMsg cc; SharedInvalCatalogMsg cat; SharedInvalRelcacheMsg rc; SharedInvalSmgrMsg sm; SharedInvalRelmapMsg rm; SharedInvalSnapshotMsg sn; } SharedInvalidationMessage; /* Counter of messages processed; don't worry about overflow. */ extern 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 */ pg_query-4.2.3/ext/pg_query/include/storage/fileset.h0000644000004100000410000000221614510636647022746 0ustar www-datawww-data/*------------------------------------------------------------------------- * * fileset.h * Management of named temporary files. * * Portions Copyright (c) 1996-2022, 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 pg_query-4.2.3/ext/pg_query/include/storage/s_lock.h0000644000004100000410000007507314510636647022600 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/s_lock.h * *------------------------------------------------------------------------- */ #ifndef S_LOCK_H #define S_LOCK_H #ifdef FRONTEND #error "s_lock.h may not be included from frontend code" #endif #ifdef HAVE_SPINLOCKS /* skip spinlocks if requested */ #if defined(__GNUC__) || defined(__INTEL_COMPILER) /************************************************************************* * All the gcc inlines * Gcc consistently defines the CPU as __cpu__. * Other compilers use __cpu or __cpu__ so we test for both in those cases. */ /*---------- * Standard gcc asm format (assuming "volatile slock_t *lock"): __asm__ __volatile__( " instruction \n" " instruction \n" " instruction \n" : "=r"(_res), "+m"(*lock) // return register, in/out lock value : "r"(lock) // lock pointer, in input register : "memory", "cc"); // show clobbered registers here * The output-operands list (after first colon) should always include * "+m"(*lock), whether or not the asm code actually refers to this * operand directly. This ensures that gcc believes the value in the * lock variable is used and set by the asm code. Also, the clobbers * list (after third colon) should always include "memory"; this prevents * gcc from thinking it can cache the values of shared-memory fields * across the asm code. Add "cc" if your asm code changes the condition * code register, and also list any temp registers the code uses. *---------- */ #ifdef __i386__ /* 32-bit i386 */ #define HAS_TEST_AND_SET typedef unsigned char slock_t; #define TAS(lock) tas(lock) static __inline__ int tas(volatile slock_t *lock) { register slock_t _res = 1; /* * Use a non-locking test before asserting the bus lock. Note that the * extra test appears to be a small loss on some x86 platforms and a small * win on others; it's by no means clear that we should keep it. * * When this was last tested, we didn't have separate TAS() and TAS_SPIN() * macros. Nowadays it probably would be better to do a non-locking test * in TAS_SPIN() but not in TAS(), like on x86_64, but no-one's done the * testing to verify that. Without some empirical evidence, better to * leave it alone. */ __asm__ __volatile__( " cmpb $0,%1 \n" " jne 1f \n" " lock \n" " xchgb %0,%1 \n" "1: \n" : "+q"(_res), "+m"(*lock) : /* no inputs */ : "memory", "cc"); return (int) _res; } #define SPIN_DELAY() spin_delay() static __inline__ void spin_delay(void) { /* * This sequence is equivalent to the PAUSE instruction ("rep" is * ignored by old IA32 processors if the following instruction is * not a string operation); the IA-32 Architecture Software * Developer's Manual, Vol. 3, Section 7.7.2 describes why using * PAUSE in the inner loop of a spin lock is necessary for good * performance: * * The PAUSE instruction improves the performance of IA-32 * processors supporting Hyper-Threading Technology when * executing spin-wait loops and other routines where one * thread is accessing a shared lock or semaphore in a tight * polling loop. When executing a spin-wait loop, the * processor can suffer a severe performance penalty when * exiting the loop because it detects a possible memory order * violation and flushes the core processor's pipeline. The * PAUSE instruction provides a hint to the processor that the * code sequence is a spin-wait loop. The processor uses this * hint to avoid the memory order violation and prevent the * pipeline flush. In addition, the PAUSE instruction * de-pipelines the spin-wait loop to prevent it from * consuming execution resources excessively. */ __asm__ __volatile__( " rep; nop \n"); } #endif /* __i386__ */ #ifdef __x86_64__ /* AMD Opteron, Intel EM64T */ #define HAS_TEST_AND_SET typedef unsigned char slock_t; #define TAS(lock) tas(lock) /* * On Intel EM64T, it's a win to use a non-locking test before the xchg proper, * but only when spinning. * * See also Implementing Scalable Atomic Locks for Multi-Core Intel(tm) EM64T * and IA32, by Michael Chynoweth and Mary R. Lee. As of this writing, it is * available at: * http://software.intel.com/en-us/articles/implementing-scalable-atomic-locks-for-multi-core-intel-em64t-and-ia32-architectures */ #define TAS_SPIN(lock) (*(lock) ? 1 : TAS(lock)) static __inline__ int tas(volatile slock_t *lock) { register slock_t _res = 1; __asm__ __volatile__( " lock \n" " xchgb %0,%1 \n" : "+q"(_res), "+m"(*lock) : /* no inputs */ : "memory", "cc"); return (int) _res; } #define SPIN_DELAY() spin_delay() static __inline__ void spin_delay(void) { /* * Adding a PAUSE in the spin delay loop is demonstrably a no-op on * Opteron, but it may be of some use on EM64T, so we keep it. */ __asm__ __volatile__( " rep; nop \n"); } #endif /* __x86_64__ */ #if defined(__ia64__) || defined(__ia64) /* * Intel Itanium, gcc or Intel's compiler. * * Itanium has weak memory ordering, but we rely on the compiler to enforce * strict ordering of accesses to volatile data. In particular, while the * xchg instruction implicitly acts as a memory barrier with 'acquire' * semantics, we do not have an explicit memory fence instruction in the * S_UNLOCK macro. We use a regular assignment to clear the spinlock, and * trust that the compiler marks the generated store instruction with the * ".rel" opcode. * * Testing shows that assumption to hold on gcc, although I could not find * any explicit statement on that in the gcc manual. In Intel's compiler, * the -m[no-]serialize-volatile option controls that, and testing shows that * it is enabled by default. * * While icc accepts gcc asm blocks on x86[_64], this is not true on ia64 * (at least not in icc versions before 12.x). So we have to carry a separate * compiler-intrinsic-based implementation for it. */ #define HAS_TEST_AND_SET typedef unsigned int slock_t; #define TAS(lock) tas(lock) /* On IA64, it's a win to use a non-locking test before the xchg proper */ #define TAS_SPIN(lock) (*(lock) ? 1 : TAS(lock)) #ifndef __INTEL_COMPILER static __inline__ int tas(volatile slock_t *lock) { long int ret; __asm__ __volatile__( " xchg4 %0=%1,%2 \n" : "=r"(ret), "+m"(*lock) : "r"(1) : "memory"); return (int) ret; } #else /* __INTEL_COMPILER */ static __inline__ int tas(volatile slock_t *lock) { int ret; ret = _InterlockedExchange(lock,1); /* this is a xchg asm macro */ return ret; } /* icc can't use the regular gcc S_UNLOCK() macro either in this case */ #define S_UNLOCK(lock) \ do { __memory_barrier(); *(lock) = 0; } while (0) #endif /* __INTEL_COMPILER */ #endif /* __ia64__ || __ia64 */ /* * On ARM and ARM64, we use __sync_lock_test_and_set(int *, int) if available. * * We use the int-width variant of the builtin because it works on more chips * than other widths. */ #if defined(__arm__) || defined(__arm) || defined(__aarch64__) || defined(__aarch64) #ifdef HAVE_GCC__SYNC_INT32_TAS #define HAS_TEST_AND_SET #define TAS(lock) tas(lock) typedef int slock_t; static __inline__ int tas(volatile slock_t *lock) { return __sync_lock_test_and_set(lock, 1); } #define S_UNLOCK(lock) __sync_lock_release(lock) /* * 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__) || defined(__aarch64) #define SPIN_DELAY() spin_delay() static __inline__ void spin_delay(void) { __asm__ __volatile__( " isb; \n"); } #endif /* __aarch64__ || __aarch64 */ #endif /* HAVE_GCC__SYNC_INT32_TAS */ #endif /* __arm__ || __arm || __aarch64__ || __aarch64 */ /* S/390 and S/390x Linux (32- and 64-bit zSeries) */ #if defined(__s390__) || defined(__s390x__) #define HAS_TEST_AND_SET typedef unsigned int slock_t; #define TAS(lock) tas(lock) static __inline__ int tas(volatile slock_t *lock) { int _res = 0; __asm__ __volatile__( " cs %0,%3,0(%2) \n" : "+d"(_res), "+m"(*lock) : "a"(lock), "d"(1) : "memory", "cc"); return _res; } #endif /* __s390__ || __s390x__ */ #if defined(__sparc__) /* Sparc */ /* * Solaris has always run sparc processors in TSO (total store) mode, but * linux didn't use to and the *BSDs still don't. So, be careful about * acquire/release semantics. The CPU will treat superfluous membars as * NOPs, so it's just code space. */ #define HAS_TEST_AND_SET typedef unsigned char slock_t; #define TAS(lock) tas(lock) static __inline__ int tas(volatile slock_t *lock) { register slock_t _res; /* * See comment in src/backend/port/tas/sunstudio_sparc.s for why this * uses "ldstub", and that file uses "cas". gcc currently generates * sparcv7-targeted binaries, so "cas" use isn't possible. */ __asm__ __volatile__( " ldstub [%2], %0 \n" : "=r"(_res), "+m"(*lock) : "r"(lock) : "memory"); #if defined(__sparcv7) || defined(__sparc_v7__) /* * No stbar or membar available, luckily no actually produced hardware * requires a barrier. */ #elif defined(__sparcv8) || defined(__sparc_v8__) /* stbar is available (and required for both PSO, RMO), membar isn't */ __asm__ __volatile__ ("stbar \n":::"memory"); #else /* * #LoadStore (RMO) | #LoadLoad (RMO) together are the appropriate acquire * barrier for sparcv8+ upwards. */ __asm__ __volatile__ ("membar #LoadStore | #LoadLoad \n":::"memory"); #endif return (int) _res; } #if defined(__sparcv7) || defined(__sparc_v7__) /* * No stbar or membar available, luckily no actually produced hardware * requires a barrier. We fall through to the default gcc definition of * S_UNLOCK in this case. */ #elif defined(__sparcv8) || defined(__sparc_v8__) /* stbar is available (and required for both PSO, RMO), membar isn't */ #define S_UNLOCK(lock) \ do \ { \ __asm__ __volatile__ ("stbar \n":::"memory"); \ *((volatile slock_t *) (lock)) = 0; \ } while (0) #else /* * #LoadStore (RMO) | #StoreStore (RMO, PSO) together are the appropriate * release barrier for sparcv8+ upwards. */ #define S_UNLOCK(lock) \ do \ { \ __asm__ __volatile__ ("membar #LoadStore | #StoreStore \n":::"memory"); \ *((volatile slock_t *) (lock)) = 0; \ } while (0) #endif #endif /* __sparc__ */ /* PowerPC */ #if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__) #define HAS_TEST_AND_SET typedef unsigned int slock_t; #define TAS(lock) tas(lock) /* On PPC, it's a win to use a non-locking test before the lwarx */ #define TAS_SPIN(lock) (*(lock) ? 1 : TAS(lock)) /* * The second operand of addi can hold a constant zero or a register number, * hence constraint "=&b" to avoid allocating r0. "b" stands for "address * base register"; most operands having this register-or-zero property are * address bases, e.g. the second operand of lwax. * * NOTE: per the Enhanced PowerPC Architecture manual, v1.0 dated 7-May-2002, * an isync is a sufficient synchronization barrier after a lwarx/stwcx loop. * On newer machines, we can use lwsync instead for better performance. * * Ordinarily, we'd code the branches here using GNU-style local symbols, that * is "1f" referencing "1:" and so on. But some people run gcc on AIX with * IBM's assembler as backend, and IBM's assembler doesn't do local symbols. * So hand-code the branch offsets; fortunately, all PPC instructions are * exactly 4 bytes each, so it's not too hard to count. */ static __inline__ int tas(volatile slock_t *lock) { slock_t _t; int _res; __asm__ __volatile__( #ifdef USE_PPC_LWARX_MUTEX_HINT " lwarx %0,0,%3,1 \n" #else " lwarx %0,0,%3 \n" #endif " cmpwi %0,0 \n" " bne $+16 \n" /* branch to li %1,1 */ " addi %0,%0,1 \n" " stwcx. %0,0,%3 \n" " beq $+12 \n" /* branch to lwsync/isync */ " li %1,1 \n" " b $+12 \n" /* branch to end of asm sequence */ #ifdef USE_PPC_LWSYNC " lwsync \n" #else " isync \n" #endif " li %1,0 \n" : "=&b"(_t), "=r"(_res), "+m"(*lock) : "r"(lock) : "memory", "cc"); return _res; } /* * PowerPC S_UNLOCK is almost standard but requires a "sync" instruction. * On newer machines, we can use lwsync instead for better performance. */ #ifdef USE_PPC_LWSYNC #define S_UNLOCK(lock) \ do \ { \ __asm__ __volatile__ (" lwsync \n" ::: "memory"); \ *((volatile slock_t *) (lock)) = 0; \ } while (0) #else #define S_UNLOCK(lock) \ do \ { \ __asm__ __volatile__ (" sync \n" ::: "memory"); \ *((volatile slock_t *) (lock)) = 0; \ } while (0) #endif /* USE_PPC_LWSYNC */ #endif /* powerpc */ /* Linux Motorola 68k */ #if (defined(__mc68000__) || defined(__m68k__)) && defined(__linux__) #define HAS_TEST_AND_SET typedef unsigned char slock_t; #define TAS(lock) tas(lock) static __inline__ int tas(volatile slock_t *lock) { register int rv; __asm__ __volatile__( " clrl %0 \n" " tas %1 \n" " sne %0 \n" : "=d"(rv), "+m"(*lock) : /* no inputs */ : "memory", "cc"); return rv; } #endif /* (__mc68000__ || __m68k__) && __linux__ */ /* Motorola 88k */ #if defined(__m88k__) #define HAS_TEST_AND_SET typedef unsigned int slock_t; #define TAS(lock) tas(lock) static __inline__ int tas(volatile slock_t *lock) { register slock_t _res = 1; __asm__ __volatile__( " xmem %0, %2, %%r0 \n" : "+r"(_res), "+m"(*lock) : "r"(lock) : "memory"); return (int) _res; } #endif /* __m88k__ */ /* * VAXen -- even multiprocessor ones * (thanks to Tom Ivar Helbekkmo) */ #if defined(__vax__) #define HAS_TEST_AND_SET typedef unsigned char slock_t; #define TAS(lock) tas(lock) static __inline__ int tas(volatile slock_t *lock) { register int _res; __asm__ __volatile__( " movl $1, %0 \n" " bbssi $0, (%2), 1f \n" " clrl %0 \n" "1: \n" : "=&r"(_res), "+m"(*lock) : "r"(lock) : "memory"); return _res; } #endif /* __vax__ */ #if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */ #define HAS_TEST_AND_SET typedef unsigned int slock_t; #define TAS(lock) tas(lock) /* * Original MIPS-I processors lacked the LL/SC instructions, but if we are * so unfortunate as to be running on one of those, we expect that the kernel * will handle the illegal-instruction traps and emulate them for us. On * anything newer (and really, MIPS-I is extinct) LL/SC is the only sane * choice because any other synchronization method must involve a kernel * call. Unfortunately, many toolchains still default to MIPS-I as the * codegen target; if the symbol __mips shows that that's the case, we * have to force the assembler to accept LL/SC. * * R10000 and up processors require a separate SYNC, which has the same * issues as LL/SC. */ #if __mips < 2 #define MIPS_SET_MIPS2 " .set mips2 \n" #else #define MIPS_SET_MIPS2 #endif static __inline__ int tas(volatile slock_t *lock) { register volatile slock_t *_l = lock; register int _res; register int _tmp; __asm__ __volatile__( " .set push \n" MIPS_SET_MIPS2 " .set noreorder \n" " .set nomacro \n" " ll %0, %2 \n" " or %1, %0, 1 \n" " sc %1, %2 \n" " xori %1, 1 \n" " or %0, %0, %1 \n" " sync \n" " .set pop " : "=&r" (_res), "=&r" (_tmp), "+R" (*_l) : /* no inputs */ : "memory"); return _res; } /* MIPS S_UNLOCK is almost standard but requires a "sync" instruction */ #define S_UNLOCK(lock) \ do \ { \ __asm__ __volatile__( \ " .set push \n" \ MIPS_SET_MIPS2 \ " .set noreorder \n" \ " .set nomacro \n" \ " sync \n" \ " .set pop " \ : /* no outputs */ \ : /* no inputs */ \ : "memory"); \ *((volatile slock_t *) (lock)) = 0; \ } while (0) #endif /* __mips__ && !__sgi */ #if defined(__m32r__) && defined(HAVE_SYS_TAS_H) /* Renesas' M32R */ #define HAS_TEST_AND_SET #include typedef int slock_t; #define TAS(lock) tas(lock) #endif /* __m32r__ */ #if defined(__sh__) /* Renesas' SuperH */ #define HAS_TEST_AND_SET typedef unsigned char slock_t; #define TAS(lock) tas(lock) static __inline__ int tas(volatile slock_t *lock) { register int _res; /* * This asm is coded as if %0 could be any register, but actually SuperH * restricts the target of xor-immediate to be R0. That's handled by * the "z" constraint on _res. */ __asm__ __volatile__( " tas.b @%2 \n" " movt %0 \n" " xor #1,%0 \n" : "=z"(_res), "+m"(*lock) : "r"(lock) : "memory", "t"); return _res; } #endif /* __sh__ */ /* These live in s_lock.c, but only for gcc */ #if defined(__m68k__) && !defined(__linux__) /* non-Linux Motorola 68k */ #define HAS_TEST_AND_SET typedef unsigned char slock_t; #endif /* * 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 */ #if defined(__hppa) || defined(__hppa__) /* HP PA-RISC, GCC and HP compilers */ /* * HP's PA-RISC * * See src/backend/port/hpux/tas.c.template for details about LDCWX. Because * LDCWX requires a 16-byte-aligned address, we declare slock_t as a 16-byte * struct. The active word in the struct is whichever has the aligned address; * the other three words just sit at -1. * * When using gcc, we can inline the required assembly code. */ #define HAS_TEST_AND_SET typedef struct { int sema[4]; } slock_t; #define TAS_ACTIVE_WORD(lock) ((volatile int *) (((uintptr_t) (lock) + 15) & ~15)) #if defined(__GNUC__) static __inline__ int tas(volatile slock_t *lock) { volatile int *lockword = TAS_ACTIVE_WORD(lock); register int lockval; __asm__ __volatile__( " ldcwx 0(0,%2),%0 \n" : "=r"(lockval), "+m"(*lockword) : "r"(lockword) : "memory"); return (lockval == 0); } /* * The hppa implementation doesn't follow the rules of this files and provides * a gcc specific implementation outside of the above defined(__GNUC__). It * does so to avoid duplication between the HP compiler and gcc. So undefine * the generic fallback S_UNLOCK from above. */ #ifdef S_UNLOCK #undef S_UNLOCK #endif #define S_UNLOCK(lock) \ do { \ __asm__ __volatile__("" : : : "memory"); \ *TAS_ACTIVE_WORD(lock) = -1; \ } while (0) #endif /* __GNUC__ */ #define S_INIT_LOCK(lock) \ do { \ volatile slock_t *lock_ = (lock); \ lock_->sema[0] = -1; \ lock_->sema[1] = -1; \ lock_->sema[2] = -1; \ lock_->sema[3] = -1; \ } while (0) #define S_LOCK_FREE(lock) (*TAS_ACTIVE_WORD(lock) != 0) #endif /* __hppa || __hppa__ */ #if defined(__hpux) && defined(__ia64) && !defined(__GNUC__) /* * HP-UX on Itanium, non-gcc/icc compiler * * We assume that the compiler enforces strict ordering of loads/stores on * volatile data (see comments on the gcc-version earlier in this file). * Note that this assumption does *not* hold if you use the * +Ovolatile=__unordered option on the HP-UX compiler, so don't do that. * * See also Implementing Spinlocks on the Intel Itanium Architecture and * PA-RISC, by Tor Ekqvist and David Graves, for more information. As of * this writing, version 1.0 of the manual is available at: * http://h21007.www2.hp.com/portal/download/files/unprot/itanium/spinlocks.pdf */ #define HAS_TEST_AND_SET typedef unsigned int slock_t; #include #define TAS(lock) _Asm_xchg(_SZ_W, lock, 1, _LDHINT_NONE) /* On IA64, it's a win to use a non-locking test before the xchg proper */ #define TAS_SPIN(lock) (*(lock) ? 1 : TAS(lock)) #define S_UNLOCK(lock) \ do { _Asm_mf(); (*(lock)) = 0; } while (0) #endif /* HPUX on IA64, non gcc/icc */ #if defined(_AIX) /* AIX */ /* * AIX (POWER) */ #define HAS_TEST_AND_SET #include typedef int slock_t; #define TAS(lock) _check_lock((slock_t *) (lock), 0, 1) #define S_UNLOCK(lock) _clear_lock((slock_t *) (lock), 0) #endif /* _AIX */ /* These are in sunstudio_(sparc|x86).s */ #if defined(__SUNPRO_C) && (defined(__i386) || defined(__x86_64__) || defined(__sparc__) || defined(__sparc)) #define HAS_TEST_AND_SET #if defined(__i386) || defined(__x86_64__) || defined(__sparcv9) || defined(__sparcv8plus) typedef unsigned int slock_t; #else typedef unsigned char slock_t; #endif extern slock_t pg_atomic_cas(volatile slock_t *lock, slock_t with, slock_t cmp); #define TAS(a) (pg_atomic_cas((a), 1, 0) != 0) #endif #ifdef _MSC_VER typedef LONG slock_t; #define HAS_TEST_AND_SET #define TAS(lock) (InterlockedCompareExchange(lock, 1, 0)) #define SPIN_DELAY() spin_delay() /* If using Visual C++ on Win64, inline assembly is unavailable. * Use a _mm_pause intrinsic instead of rep nop. */ #if defined(_WIN64) static __forceinline void spin_delay(void) { _mm_pause(); } #else static __forceinline void spin_delay(void) { /* See comment for gcc code. Same code, MASM syntax */ __asm rep nop; } #endif #include #pragma intrinsic(_ReadWriteBarrier) #define S_UNLOCK(lock) \ do { _ReadWriteBarrier(); (*(lock)) = 0; } while (0) #endif #endif /* !defined(HAS_TEST_AND_SET) */ /* Blow up if we didn't have any way to do spinlocks */ #ifndef HAS_TEST_AND_SET #error PostgreSQL does not have native spinlock support on this platform. To continue the compilation, rerun configure using --disable-spinlocks. However, performance will be poor. Please report this to pgsql-bugs@lists.postgresql.org. #endif #else /* !HAVE_SPINLOCKS */ /* * Fake spinlock implementation using semaphores --- slow and prone * to fall foul of kernel limits on number of semaphores, so don't use this * unless you must! The subroutines appear in spin.c. */ typedef int slock_t; extern bool s_lock_free_sema(volatile slock_t *lock); extern void s_unlock_sema(volatile slock_t *lock); extern void s_init_lock_sema(volatile slock_t *lock, bool nested); extern int tas_sema(volatile slock_t *lock); #define S_LOCK_FREE(lock) s_lock_free_sema(lock) #define S_UNLOCK(lock) s_unlock_sema(lock) #define S_INIT_LOCK(lock) s_init_lock_sema(lock, false) #define TAS(lock) tas_sema(lock) #endif /* HAVE_SPINLOCKS */ /* * Default Definitions - override these above as needed. */ #if !defined(S_LOCK) #define S_LOCK(lock) \ (TAS(lock) ? s_lock((lock), __FILE__, __LINE__, PG_FUNCNAME_MACRO) : 0) #endif /* S_LOCK */ #if !defined(S_LOCK_FREE) #define S_LOCK_FREE(lock) (*(lock) == 0) #endif /* S_LOCK_FREE */ #if !defined(S_UNLOCK) /* * Our default implementation of S_UNLOCK is essentially *(lock) = 0. This * is unsafe if the platform can reorder a memory access (either load or * store) after a following store; platforms where this is possible must * define their own S_UNLOCK. But CPU reordering is not the only concern: * if we simply defined S_UNLOCK() as an inline macro, the compiler might * reorder instructions from inside the critical section to occur after the * lock release. Since the compiler probably can't know what the external * function s_unlock is doing, putting the same logic there should be adequate. * A sufficiently-smart globally optimizing compiler could break that * assumption, though, and the cost of a function call for every spinlock * release may hurt performance significantly, so we use this implementation * only for platforms where we don't know of a suitable intrinsic. For the * most part, those are relatively obscure platform/compiler combinations to * which the PostgreSQL project does not have access. */ #define USE_DEFAULT_S_UNLOCK extern void s_unlock(volatile slock_t *lock); #define S_UNLOCK(lock) s_unlock(lock) #endif /* S_UNLOCK */ #if !defined(S_INIT_LOCK) #define S_INIT_LOCK(lock) S_UNLOCK(lock) #endif /* S_INIT_LOCK */ #if !defined(SPIN_DELAY) #define SPIN_DELAY() ((void) 0) #endif /* SPIN_DELAY */ #if !defined(TAS) extern int tas(volatile slock_t *lock); /* in port/.../tas.s, or * s_lock.c */ #define TAS(lock) tas(lock) #endif /* TAS */ #if !defined(TAS_SPIN) #define TAS_SPIN(lock) TAS(lock) #endif /* TAS_SPIN */ extern PGDLLIMPORT slock_t dummy_spinlock; /* * Platform-independent out-of-line support routines */ extern int s_lock(volatile slock_t *lock, const char *file, int line, const char *func); /* Support for dynamic adjustment of spins_per_delay */ #define DEFAULT_SPINS_PER_DELAY 100 extern void set_spins_per_delay(int shared_spins_per_delay); extern int update_spins_per_delay(int shared_spins_per_delay); /* * Support for spin delay which is useful in various places where * spinlock-like procedures take place. */ typedef struct { int spins; int delays; int cur_delay; const char *file; int line; const char *func; } SpinDelayStatus; static inline void init_spin_delay(SpinDelayStatus *status, const char *file, int line, const char *func) { status->spins = 0; status->delays = 0; status->cur_delay = 0; status->file = file; status->line = line; status->func = func; } #define init_local_spin_delay(status) init_spin_delay(status, __FILE__, __LINE__, PG_FUNCNAME_MACRO) extern void perform_spin_delay(SpinDelayStatus *status); extern void finish_spin_delay(SpinDelayStatus *status); #endif /* S_LOCK_H */ pg_query-4.2.3/ext/pg_query/include/storage/procarray.h0000644000004100000410000000765114510636647023325 0ustar www-datawww-data/*------------------------------------------------------------------------- * * procarray.h * POSTGRES process array definitions. * * * Portions Copyright (c) 1996-2022, 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 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 *slot_xmin, TransactionId *catalog_xmin); extern VirtualTransactionId *GetVirtualXIDsDelayingChkpt(int *nvxids, int type); extern bool HaveVirtualXIDsDelayingChkpt(VirtualTransactionId *vxids, int nvxids, int type); 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 */ pg_query-4.2.3/ext/pg_query/include/storage/off.h0000644000004100000410000000303214510636647022062 0ustar www-datawww-data/*------------------------------------------------------------------------- * * off.h * POSTGRES disk "offset" definitions. * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/storage/dsm_impl.h0000644000004100000410000000424414510636647023122 0ustar www-datawww-data/*------------------------------------------------------------------------- * * dsm_impl.h * low-level dynamic shared memory primitives * * Portions Copyright (c) 1996-2022, 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; /* 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 */ pg_query-4.2.3/ext/pg_query/include/storage/spin.h0000644000004100000410000000467314510636647022275 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/storage/ipc.h0000644000004100000410000000555014510636647022072 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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); extern void InitializeShmemGUCs(void); #endif /* IPC_H */ pg_query-4.2.3/ext/pg_query/include/storage/pmsignal.h0000644000004100000410000000655314510636647023135 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pmsignal.h * routines for signaling between the postmaster and its child processes * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/storage/standby.h0000644000004100000410000000744714510636647022772 0ustar www-datawww-data/*------------------------------------------------------------------------- * * standby.h * Definitions for hot standby mode. * * * Portions Copyright (c) 1996-2022, 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/relfilenode.h" #include "storage/standbydefs.h" /* User-settable GUC parameters */ extern PGDLLIMPORT int vacuum_defer_cleanup_age; 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 latestRemovedXid, RelFileNode node); extern void ResolveRecoveryConflictWithSnapshotFullXid(FullTransactionId latestRemovedFullXid, RelFileNode node); 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 cur_ts, 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 struct RunningTransactionsData { int xcnt; /* # of xact ids in xids[] */ int subxcnt; /* # of subxact ids in xids[] */ bool subxid_overflow; /* snapshot overflowed, subxids missing */ TransactionId nextXid; /* xid from ShmemVariableCache->nextXid */ TransactionId oldestRunningXid; /* *not* oldestXmin */ TransactionId latestCompletedXid; /* so we can set xmax */ TransactionId *xids; /* array of (sub)xids still running */ } RunningTransactionsData; typedef RunningTransactionsData *RunningTransactions; extern void LogAccessExclusiveLock(Oid dbOid, Oid relOid); extern void LogAccessExclusiveLockPrepare(void); extern XLogRecPtr LogStandbySnapshot(void); extern void LogStandbyInvalidations(int nmsgs, SharedInvalidationMessage *msgs, bool relcacheInitFileInval); #endif /* STANDBY_H */ pg_query-4.2.3/ext/pg_query/include/storage/shm_mq.h0000644000004100000410000000530114510636647022575 0ustar www-datawww-data/*------------------------------------------------------------------------- * * shm_mq.h * single-reader, single-writer shared memory message queue * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/storage/latch.h0000644000004100000410000001573714510636647022422 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/latch.h * *------------------------------------------------------------------------- */ #ifndef LATCH_H #define LATCH_H #include /* * Latch structure should be treated as opaque and only accessed through * the public functions. It is defined here to allow embedding Latches as * part of bigger structs. */ typedef struct Latch { sig_atomic_t is_set; 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) #define WL_SOCKET_MASK (WL_SOCKET_READABLE | \ WL_SOCKET_WRITEABLE | \ WL_SOCKET_CONNECTED | \ 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(MemoryContext context, int nevents); extern void FreeWaitEventSet(WaitEventSet *set); extern int AddWaitEventToSet(WaitEventSet *set, uint32 events, pgsocket fd, Latch *latch, void *user_data); extern void ModifyWaitEvent(WaitEventSet *set, int pos, uint32 events, Latch *latch); extern int WaitEventSetWait(WaitEventSet *set, long timeout, WaitEvent *occurred_events, int nevents, uint32 wait_event_info); extern int WaitLatch(Latch *latch, int wakeEvents, long timeout, uint32 wait_event_info); extern int WaitLatchOrSocket(Latch *latch, int wakeEvents, pgsocket sock, long timeout, uint32 wait_event_info); extern void InitializeLatchWaitSet(void); extern int GetNumRegisteredWaitEvents(WaitEventSet *set); extern bool WaitEventSetCanReportClosed(void); #endif /* LATCH_H */ pg_query-4.2.3/ext/pg_query/include/storage/dsm.h0000644000004100000410000000406614510636647022103 0ustar www-datawww-data/*------------------------------------------------------------------------- * * dsm.h * manage dynamic shared memory segments * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/dsm.h * *------------------------------------------------------------------------- */ #ifndef DSM_H #define DSM_H #include "storage/dsm_impl.h" typedef struct dsm_segment dsm_segment; #define DSM_CREATE_NULL_IF_MAXSEGMENTS 0x0001 /* A sentinel value for an invalid DSM handle. */ #define DSM_HANDLE_INVALID 0 /* Startup and shutdown functions. */ struct PGShmemHeader; /* avoid including pg_shmem.h */ extern void dsm_cleanup_using_control_segment(dsm_handle old_control_handle); extern void dsm_postmaster_startup(struct PGShmemHeader *); extern void dsm_backend_shutdown(void); extern void dsm_detach_all(void); 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 h); extern dsm_segment *dsm_find_mapping(dsm_handle h); /* Informational functions. */ extern void *dsm_segment_address(dsm_segment *seg); extern Size dsm_segment_map_length(dsm_segment *seg); extern dsm_handle dsm_segment_handle(dsm_segment *seg); /* Cleanup hooks. */ typedef void (*on_dsm_detach_callback) (dsm_segment *, Datum arg); extern void on_dsm_detach(dsm_segment *seg, on_dsm_detach_callback function, Datum arg); extern void cancel_on_dsm_detach(dsm_segment *seg, on_dsm_detach_callback function, Datum arg); extern void reset_on_dsm_detach(void); #endif /* DSM_H */ pg_query-4.2.3/ext/pg_query/include/storage/item.h0000644000004100000410000000073114510636647022251 0ustar www-datawww-data/*------------------------------------------------------------------------- * * item.h * POSTGRES disk item definitions. * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/storage/lock.h0000644000004100000410000006037014510636647022250 0ustar www-datawww-data/*------------------------------------------------------------------------- * * lock.h * POSTGRES low-level lock mechanism * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/lock.h * *------------------------------------------------------------------------- */ #ifndef LOCK_H_ #define LOCK_H_ #ifdef FRONTEND #error "lock.h may not be included from frontend code" #endif #include "storage/backendid.h" #include "storage/lockdefs.h" #include "storage/lwlock.h" #include "storage/shmem.h" #include "utils/timestamp.h" /* struct PGPROC is declared in proc.h, but must forward-reference it */ typedef struct PGPROC PGPROC; typedef struct PROC_QUEUE { SHM_QUEUE links; /* head of list of PGPROC objects */ int size; /* number of entries in list */ } PROC_QUEUE; /* GUC variables */ extern 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 backendId 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 backend ID doesn't change often enough * to be a problem, so we can fetch or assign the two fields separately. * We deliberately refrain from using the struct within PGPROC, to prevent * coding errors from trying to use struct assignment with it; instead use * GET_VXID_FROM_PGPROC(). */ typedef struct { BackendId backendId; /* backendId from PGPROC */ LocalTransactionId localTransactionId; /* lxid from PGPROC */ } VirtualTransactionId; #define InvalidLocalTransactionId 0 #define LocalTransactionIdIsValid(lxid) ((lxid) != InvalidLocalTransactionId) #define VirtualTransactionIdIsValid(vxid) \ (LocalTransactionIdIsValid((vxid).localTransactionId)) #define VirtualTransactionIdIsRecoveredPreparedXact(vxid) \ ((vxid).backendId == InvalidBackendId) #define VirtualTransactionIdEquals(vxid1, vxid2) \ ((vxid1).backendId == (vxid2).backendId && \ (vxid1).localTransactionId == (vxid2).localTransactionId) #define SetInvalidVirtualTransactionId(vxid) \ ((vxid).backendId = InvalidBackendId, \ (vxid).localTransactionId = InvalidLocalTransactionId) #define GET_VXID_FROM_PGPROC(vxid, proc) \ ((vxid).backendId = (proc).backendId, \ (vxid).localTransactionId = (proc).lxid) /* MAX_LOCKMODES cannot be larger than the # of bits in LOCKMASK */ #define MAX_LOCKMODES 10 #define LOCKBIT_ON(lockmode) (1 << (lockmode)) #define LOCKBIT_OFF(lockmode) (~(1 << (lockmode))) /* * This data structure defines the locking semantics associated with a * "lock method". The semantics specify the meaning of each lock mode * (by defining which lock modes it conflicts with). * All of this data is constant and is kept in const tables. * * numLockModes -- number of lock modes (READ,WRITE,etc) that * are defined in this lock method. Must be less than MAX_LOCKMODES. * * conflictTab -- this is an array of bitmasks showing lock * mode conflicts. conflictTab[i] is a mask with the j-th bit * turned on if lock modes i and j conflict. Lock modes are * numbered 1..numLockModes; conflictTab[0] is unused. * * lockModeNames -- ID strings for debug printouts. * * trace_flag -- pointer to GUC trace flag for this lock method. (The * GUC variable is not constant, but we use "const" here to denote that * it can't be changed through this reference.) */ typedef struct LockMethodData { int numLockModes; const LOCKMASK *conflictTab; const char *const *lockModeNames; const bool *trace_flag; } LockMethodData; typedef const LockMethodData *LockMethod; /* * Lock methods are identified by LOCKMETHODID. (Despite the declaration as * uint16, we are constrained to 256 lockmethods by the layout of LOCKTAG.) */ typedef uint16 LOCKMETHODID; /* These identify the known lock methods */ #define DEFAULT_LOCKMETHOD 1 #define USER_LOCKMETHOD 2 /* * LOCKTAG is the key information needed to look up a LOCK item in the * lock hashtable. A LOCKTAG value uniquely identifies a lockable object. * * The LockTagType enum defines the different kinds of objects we can lock. * We can handle up to 256 different LockTagTypes. */ typedef enum LockTagType { LOCKTAG_RELATION, /* whole relation */ LOCKTAG_RELATION_EXTEND, /* the right to extend a relation */ LOCKTAG_DATABASE_FROZEN_IDS, /* pg_database.datfrozenxid */ LOCKTAG_PAGE, /* one page of a relation */ LOCKTAG_TUPLE, /* one physical tuple */ LOCKTAG_TRANSACTION, /* transaction (for waiting for xact done) */ LOCKTAG_VIRTUALTRANSACTION, /* virtual transaction (ditto) */ LOCKTAG_SPECULATIVE_TOKEN, /* speculative insertion Xid and token */ LOCKTAG_OBJECT, /* non-relation database object */ LOCKTAG_USERLOCK, /* reserved for old contrib/userlock code */ LOCKTAG_ADVISORY /* advisory user locks */ } LockTagType; #define LOCKTAG_LAST_TYPE LOCKTAG_ADVISORY extern 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).backendId, \ (locktag).locktag_field2 = (vxid).localTransactionId, \ (locktag).locktag_field3 = 0, \ (locktag).locktag_field4 = 0, \ (locktag).locktag_type = LOCKTAG_VIRTUALTRANSACTION, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) /* * ID info for a speculative insert is TRANSACTION info + * its speculative insert counter. */ #define SET_LOCKTAG_SPECULATIVE_INSERTION(locktag,xid,token) \ ((locktag).locktag_field1 = (xid), \ (locktag).locktag_field2 = (token), \ (locktag).locktag_field3 = 0, \ (locktag).locktag_field4 = 0, \ (locktag).locktag_type = LOCKTAG_SPECULATIVE_TOKEN, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) /* * ID info for an object is DB OID + CLASS OID + OBJECT OID + SUBID * * Note: object ID has same representation as in pg_depend and * pg_description, but notice that we are constraining SUBID to 16 bits. * Also, we use DB OID = 0 for shared objects such as tablespaces. */ #define SET_LOCKTAG_OBJECT(locktag,dboid,classoid,objoid,objsubid) \ ((locktag).locktag_field1 = (dboid), \ (locktag).locktag_field2 = (classoid), \ (locktag).locktag_field3 = (objoid), \ (locktag).locktag_field4 = (objsubid), \ (locktag).locktag_type = LOCKTAG_OBJECT, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) #define SET_LOCKTAG_ADVISORY(locktag,id1,id2,id3,id4) \ ((locktag).locktag_field1 = (id1), \ (locktag).locktag_field2 = (id2), \ (locktag).locktag_field3 = (id3), \ (locktag).locktag_field4 = (id4), \ (locktag).locktag_type = LOCKTAG_ADVISORY, \ (locktag).locktag_lockmethodid = USER_LOCKMETHOD) /* * Per-locked-object lock information: * * tag -- uniquely identifies the object being locked * grantMask -- bitmask for all lock types currently granted on this object. * waitMask -- bitmask for all lock types currently awaited on this object. * procLocks -- list of PROCLOCK objects for this lock. * waitProcs -- queue of processes waiting for this lock. * requested -- count of each lock type currently requested on the lock * (includes requests already granted!!). * nRequested -- total requested locks of all types. * granted -- count of each lock type currently granted on the lock. * nGranted -- total granted locks of all types. * * Note: these counts count 1 for each backend. Internally to a backend, * there may be multiple grabs on a particular lock, but this is not reflected * into shared memory. */ typedef struct LOCK { /* hash key */ LOCKTAG tag; /* unique identifier of lockable object */ /* data */ LOCKMASK grantMask; /* bitmask for lock types already granted */ LOCKMASK waitMask; /* bitmask for lock types awaited */ SHM_QUEUE procLocks; /* list of PROCLOCK objects assoc. with lock */ PROC_QUEUE waitProcs; /* list of PGPROC objects waiting on lock */ int requested[MAX_LOCKMODES]; /* counts of requested locks */ int nRequested; /* total of requested[] array */ int granted[MAX_LOCKMODES]; /* counts of granted locks */ int nGranted; /* total of granted[] array */ } LOCK; #define LOCK_LOCKMETHOD(lock) ((LOCKMETHODID) (lock).tag.locktag_lockmethodid) #define LOCK_LOCKTAG(lock) ((LockTagType) (lock).tag.locktag_type) /* * We may have several different backends holding or awaiting locks * on the same lockable object. We need to store some per-holder/waiter * information for each such holder (or would-be holder). This is kept in * a PROCLOCK struct. * * PROCLOCKTAG is the key information needed to look up a PROCLOCK item in the * proclock hashtable. A PROCLOCKTAG value uniquely identifies the combination * of a lockable object and a holder/waiter for that object. (We can use * pointers here because the PROCLOCKTAG need only be unique for the lifespan * of the PROCLOCK, and it will never outlive the lock or the proc.) * * Internally to a backend, it is possible for the same lock to be held * for different purposes: the backend tracks transaction locks separately * from session locks. However, this is not reflected in the shared-memory * state: we only track which backend(s) hold the lock. This is OK since a * backend can never block itself. * * The holdMask field shows the already-granted locks represented by this * proclock. Note that there will be a proclock object, possibly with * zero holdMask, for any lock that the process is currently waiting on. * Otherwise, proclock objects whose holdMasks are zero are recycled * as soon as convenient. * * releaseMask is workspace for LockReleaseAll(): it shows the locks due * to be released during the current call. This must only be examined or * set by the backend owning the PROCLOCK. * * Each PROCLOCK object is linked into lists for both the associated LOCK * object and the owning PGPROC object. Note that the PROCLOCK is entered * into these lists as soon as it is created, even if no lock has yet been * granted. A PGPROC that is waiting for a lock to be granted will also be * linked into the lock's waitProcs queue. */ typedef struct PROCLOCKTAG { /* NB: we assume this struct contains no padding! */ LOCK *myLock; /* link to per-lockable-object information */ PGPROC *myProc; /* link to PGPROC of owning backend */ } PROCLOCKTAG; typedef struct PROCLOCK { /* tag */ PROCLOCKTAG tag; /* unique identifier of proclock object */ /* data */ PGPROC *groupLeader; /* proc's lock group leader, or proc itself */ LOCKMASK holdMask; /* bitmask for lock types currently held */ LOCKMASK releaseMask; /* bitmask for lock types to be released */ SHM_QUEUE lockLink; /* list link in LOCK's list of proclocks */ SHM_QUEUE procLink; /* list link in PGPROC's list of proclocks */ } PROCLOCK; #define PROCLOCK_LOCKMETHOD(proclock) \ LOCK_LOCKMETHOD(*((proclock).tag.myLock)) /* * Each backend also maintains a local hash table with information about each * lock it is currently interested in. In particular the local table counts * the number of times that lock has been acquired. This allows multiple * requests for the same lock to be executed without additional accesses to * shared memory. We also track the number of lock acquisitions per * ResourceOwner, so that we can release just those locks belonging to a * particular ResourceOwner. * * When holding a lock taken "normally", the lock and proclock fields always * point to the associated objects in shared memory. However, if we acquired * the lock via the fast-path mechanism, the lock and proclock fields are set * to NULL, since there probably aren't any such objects in shared memory. * (If the lock later gets promoted to normal representation, we may eventually * update our locallock's lock/proclock fields after finding the shared * objects.) * * Caution: a locallock object can be left over from a failed lock acquisition * attempt. In this case its lock/proclock fields are untrustworthy, since * the shared lock object is neither held nor awaited, and hence is available * to be reclaimed. If nLocks > 0 then these pointers must either be valid or * NULL, but when nLocks == 0 they should be considered garbage. */ typedef struct LOCALLOCKTAG { LOCKTAG lock; /* identifies the lockable object */ LOCKMODE mode; /* lock mode for this table entry */ } LOCALLOCKTAG; typedef struct LOCALLOCKOWNER { /* * Note: if owner is NULL then the lock is held on behalf of the session; * otherwise it is held on behalf of my current transaction. * * Must use a forward struct reference to avoid circularity. */ struct ResourceOwnerData *owner; int64 nLocks; /* # of times held by this owner */ } LOCALLOCKOWNER; typedef struct LOCALLOCK { /* tag */ LOCALLOCKTAG tag; /* unique identifier of locallock entry */ /* data */ uint32 hashcode; /* copy of LOCKTAG's hash value */ LOCK *lock; /* associated LOCK object, if any */ PROCLOCK *proclock; /* associated PROCLOCK object, if any */ int64 nLocks; /* total number of times lock is held */ int numLockOwners; /* # of relevant ResourceOwners */ int maxLockOwners; /* allocated size of array */ LOCALLOCKOWNER *lockOwners; /* dynamically resizable array */ bool holdsStrongLockCount; /* bumped FastPathStrongRelationLocks */ bool lockCleared; /* we read all sinval msgs for lock */ } LOCALLOCK; #define LOCALLOCK_LOCKMETHOD(llock) ((llock).tag.lock.locktag_lockmethodid) #define LOCALLOCK_LOCKTAG(llock) ((LockTagType) (llock).tag.lock.locktag_type) /* * These structures hold information passed from lmgr internals to the lock * listing user-level functions (in lockfuncs.c). */ typedef struct LockInstanceData { LOCKTAG locktag; /* tag for locked object */ LOCKMASK holdMask; /* locks held by this PGPROC */ LOCKMODE waitLockMode; /* lock awaited by this PGPROC, if any */ BackendId backend; /* backend ID of this PGPROC */ LocalTransactionId lxid; /* local transaction ID of this PGPROC */ 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((leader_pgproc)->pgprocno) /* * function prototypes */ extern void InitLocks(void); extern LockMethod GetLocksMethodTable(const LOCK *lock); extern LockMethod GetLockTagsMethodTable(const LOCKTAG *locktag); extern uint32 LockTagHashCode(const LOCKTAG *locktag); extern bool DoLockModesConflict(LOCKMODE mode1, LOCKMODE mode2); extern LockAcquireResult LockAcquire(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock, bool dontWait); extern LockAcquireResult LockAcquireExtended(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock, bool dontWait, bool reportMemoryError, LOCALLOCK **locallockp); extern void AbortStrongLockAcquire(void); extern void MarkLockClear(LOCALLOCK *locallock); extern bool LockRelease(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock); extern void LockReleaseAll(LOCKMETHODID lockmethodid, bool allLocks); extern void LockReleaseSession(LOCKMETHODID lockmethodid); extern void LockReleaseCurrentOwner(LOCALLOCK **locallocks, int nlocks); extern void LockReassignCurrentOwner(LOCALLOCK **locallocks, int nlocks); extern bool LockHeldByMe(const LOCKTAG *locktag, LOCKMODE lockmode); #ifdef USE_ASSERT_CHECKING extern HTAB *GetLockMethodLocalHash(void); #endif extern bool LockHasWaiters(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock); extern VirtualTransactionId *GetLockConflicts(const LOCKTAG *locktag, LOCKMODE lockmode, int *countp); extern void AtPrepare_Locks(void); extern void PostPrepare_Locks(TransactionId xid); extern bool LockCheckConflicts(LockMethod lockMethodTable, LOCKMODE lockmode, LOCK *lock, PROCLOCK *proclock); extern void GrantLock(LOCK *lock, PROCLOCK *proclock, LOCKMODE lockmode); extern void GrantAwaitedLock(void); extern void RemoveFromWaitQueue(PGPROC *proc, uint32 hashcode); extern Size LockShmemSize(void); extern LockData *GetLockStatusData(void); extern BlockedProcsData *GetBlockerStatusData(int blocked_pid); extern xl_standby_lock *GetRunningTransactionLocks(int *nlocks); extern const char *GetLockmodeName(LOCKMETHODID lockmethodid, LOCKMODE mode); extern void lock_twophase_recover(TransactionId xid, uint16 info, void *recdata, uint32 len); extern void lock_twophase_postcommit(TransactionId xid, uint16 info, void *recdata, uint32 len); extern void lock_twophase_postabort(TransactionId xid, uint16 info, void *recdata, uint32 len); extern void lock_twophase_standby_recover(TransactionId xid, uint16 info, void *recdata, uint32 len); extern DeadLockState DeadLockCheck(PGPROC *proc); extern PGPROC *GetBlockingAutoVacuumPgproc(void); extern void DeadLockReport(void) pg_attribute_noreturn(); extern void RememberSimpleDeadLock(PGPROC *proc1, LOCKMODE lockmode, LOCK *lock, PGPROC *proc2); extern void InitDeadLockChecking(void); extern int LockWaiterCount(const LOCKTAG *locktag); #ifdef LOCK_DEBUG extern void DumpLocks(PGPROC *proc); extern void DumpAllLocks(void); #endif /* Lock a VXID (used to wait for a transaction to finish) */ extern void VirtualXactLockTableInsert(VirtualTransactionId vxid); extern void VirtualXactLockTableCleanup(void); extern bool VirtualXactLock(VirtualTransactionId vxid, bool wait); #endif /* LOCK_H_ */ pg_query-4.2.3/ext/pg_query/include/storage/sync.h0000644000004100000410000000375714510636647022302 0ustar www-datawww-data/*------------------------------------------------------------------------- * * sync.h * File synchronization management code. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/sync.h * *------------------------------------------------------------------------- */ #ifndef SYNC_H #define SYNC_H #include "storage/relfilenode.h" /* * Type of sync request. These are used to manage the set of pending * requests to call a sync handler's sync or unlink functions at the next * checkpoint. */ typedef enum SyncRequestType { SYNC_REQUEST, /* schedule a call of sync function */ SYNC_UNLINK_REQUEST, /* schedule a call of unlink function */ SYNC_FORGET_REQUEST, /* forget all calls for a tag */ SYNC_FILTER_REQUEST /* forget all calls satisfying match fn */ } SyncRequestType; /* * Which set of functions to use to handle a given request. The values of * the enumerators must match the indexes of the function table in sync.c. */ typedef enum SyncRequestHandler { SYNC_HANDLER_MD = 0, 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 */ RelFileNode rnode; uint32 segno; } FileTag; extern void InitSync(void); extern void SyncPreCheckpoint(void); extern void SyncPostCheckpoint(void); extern void ProcessSyncRequests(void); extern void RememberSyncRequest(const FileTag *ftag, SyncRequestType type); extern bool RegisterSyncRequest(const FileTag *ftag, SyncRequestType type, bool retryOnError); #endif /* SYNC_H */ pg_query-4.2.3/ext/pg_query/include/storage/buf.h0000644000004100000410000000207614510636647022073 0ustar www-datawww-data/*------------------------------------------------------------------------- * * buf.h * Basic buffer manager data types. * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/storage/sharedfileset.h0000644000004100000410000000201414510636647024131 0ustar www-datawww-data/*------------------------------------------------------------------------- * * sharedfileset.h * Shared temporary file management. * * * Portions Copyright (c) 1996-2022, 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 pg_query-4.2.3/ext/pg_query/include/storage/proclist_types.h0000644000004100000410000000307014510636647024375 0ustar www-datawww-data/*------------------------------------------------------------------------- * * proclist_types.h * doubly-linked lists of pgprocnos * * See proclist.h for functions that operate on these types. * * Portions Copyright (c) 2016-2022, PostgreSQL Global Development Group * * IDENTIFICATION * src/include/storage/proclist_types.h *------------------------------------------------------------------------- */ #ifndef PROCLIST_TYPES_H #define PROCLIST_TYPES_H /* * A node in a doubly-linked list of processes. The link fields contain * the 0-based PGPROC indexes of the next and previous process, or * INVALID_PGPROCNO in the next-link of the last node and the prev-link * of the first node. A node that is currently not in any list * should have next == prev == 0; this is not a possible state for a node * that is in a list, because we disallow circularity. */ typedef struct proclist_node { int next; /* pgprocno of the next PGPROC */ int prev; /* pgprocno of the prev PGPROC */ } proclist_node; /* * Header of a doubly-linked list of PGPROCs, identified by pgprocno. * An empty list is represented by head == tail == INVALID_PGPROCNO. */ typedef struct proclist_head { int head; /* pgprocno of the head PGPROC */ int tail; /* pgprocno of the tail PGPROC */ } proclist_head; /* * List iterator allowing some modifications while iterating. */ typedef struct proclist_mutable_iter { int cur; /* pgprocno of the current PGPROC */ int next; /* pgprocno of the next PGPROC */ } proclist_mutable_iter; #endif /* PROCLIST_TYPES_H */ pg_query-4.2.3/ext/pg_query/include/storage/fd.h0000644000004100000410000001672314510636647021714 0ustar www-datawww-data/*------------------------------------------------------------------------- * * fd.h * Virtual file descriptor definitions. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/fd.h * *------------------------------------------------------------------------- */ /* * calls: * * File {Close, Read, Write, Size, Sync} * {Path Name Open, Allocate, Free} File * * These are NOT JUST RENAMINGS OF THE UNIX ROUTINES. * Use them for all file activity... * * File fd; * fd = PathNameOpenFile("foo", O_RDONLY); * * AllocateFile(); * FreeFile(); * * Use AllocateFile, not fopen, if you need a stdio file (FILE*); then * use FreeFile, not fclose, to close it. AVOID using stdio for files * that you intend to hold open for any length of time, since there is * no way for them to share kernel file descriptors with other files. * * Likewise, use AllocateDir/FreeDir, not opendir/closedir, to allocate * open directories (DIR*), and OpenTransientFile/CloseTransientFile for an * unbuffered file descriptor. * * If you really can't use any of the above, at least call AcquireExternalFD * or ReserveExternalFD to report any file descriptors that are held for any * length of time. Failure to do so risks unnecessary EMFILE errors. */ #ifndef FD_H #define FD_H #include typedef enum RecoveryInitSyncMethod { RECOVERY_INIT_SYNC_METHOD_FSYNC, RECOVERY_INIT_SYNC_METHOD_SYNCFS } RecoveryInitSyncMethod; struct iovec; /* avoid including port/pg_iovec.h here */ typedef int File; /* GUC parameter */ extern PGDLLIMPORT int max_files_per_process; extern PGDLLIMPORT bool data_sync_retry; extern PGDLLIMPORT int recovery_init_sync_method; /* * 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). */ #if defined(O_DIRECT) #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, int amount, uint32 wait_event_info); extern int FileRead(File file, char *buffer, int amount, off_t offset, uint32 wait_event_info); extern int FileWrite(File file, char *buffer, int amount, off_t offset, uint32 wait_event_info); extern int FileSync(File file, uint32 wait_event_info); extern off_t FileSize(File file); extern int FileTruncate(File file, off_t offset, uint32 wait_event_info); extern void FileWriteback(File file, off_t offset, off_t nbytes, uint32 wait_event_info); extern char *FilePathName(File file); extern int FileGetRawDesc(File file); extern int FileGetRawFlags(File file); extern mode_t FileGetRawMode(File file); /* Operations used for sharing named temporary files */ extern File PathNameCreateTemporaryFile(const char *name, bool error_on_failure); extern File PathNameOpenTemporaryFile(const char *path, int mode); extern bool PathNameDeleteTemporaryFile(const char *name, bool error_on_failure); extern void PathNameCreateTemporaryDir(const char *base, const char *name); extern void PathNameDeleteTemporaryDir(const char *name); extern void TempTablespacePath(char *path, Oid tablespace); /* Operations that allow use of regular stdio --- USE WITH CAUTION */ extern FILE *AllocateFile(const char *name, const char *mode); extern int FreeFile(FILE *file); /* Operations that allow use of pipe streams (popen/pclose) */ extern FILE *OpenPipeStream(const char *command, const char *mode); extern int ClosePipeStream(FILE *file); /* Operations to allow use of the library routines */ extern DIR *AllocateDir(const char *dirname); extern struct dirent *ReadDir(DIR *dir, const char *dirname); extern struct dirent *ReadDirExtended(DIR *dir, const char *dirname, int elevel); extern int FreeDir(DIR *dir); /* Operations to allow use of a plain kernel FD, with automatic cleanup */ extern int OpenTransientFile(const char *fileName, int fileFlags); extern int OpenTransientFilePerm(const char *fileName, int fileFlags, mode_t fileMode); extern int CloseTransientFile(int fd); /* If you've really really gotta have a plain kernel FD, use this */ extern int BasicOpenFile(const char *fileName, int fileFlags); extern int BasicOpenFilePerm(const char *fileName, int fileFlags, mode_t fileMode); /* Use these for other cases, and also for long-lived BasicOpenFile FDs */ extern bool AcquireExternalFD(void); extern void ReserveExternalFD(void); extern void ReleaseExternalFD(void); /* Make a directory with default permissions */ extern int MakePGDirectory(const char *directoryName); /* Miscellaneous support routines */ extern void InitFileAccess(void); extern void 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 void pg_flush_data(int fd, off_t offset, off_t amount); extern ssize_t pg_pwritev_with_retry(int fd, const struct iovec *iov, int iovcnt, off_t offset); 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 loglevel); extern int durable_unlink(const char *fname, int loglevel); extern int durable_rename_excl(const char *oldfile, const char *newfile, int loglevel); extern void SyncDataDirectory(void); extern int data_sync_elevel(int elevel); /* Filename components */ #define PG_TEMP_FILES_DIR "pgsql_tmp" #define PG_TEMP_FILE_PREFIX "pgsql_tmp" #endif /* FD_H */ pg_query-4.2.3/ext/pg_query/include/storage/relfilenode.h0000644000004100000410000000747714510636647023621 0ustar www-datawww-data/*------------------------------------------------------------------------- * * relfilenode.h * Physical access information for relations. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/relfilenode.h * *------------------------------------------------------------------------- */ #ifndef RELFILENODE_H #define RELFILENODE_H #include "common/relpath.h" #include "storage/backendid.h" /* * RelFileNode must provide all that we need to know to physically access * a relation, with the exception of the backend ID, which can be provided * separately. Note, however, that a "physical" relation is comprised of * multiple files on the filesystem, as each fork is stored as a separate * file, and each fork can be divided into multiple segments. See md.c. * * spcNode identifies the tablespace of the relation. It corresponds to * pg_tablespace.oid. * * dbNode identifies the database of the relation. It is zero for * "shared" relations (those common to all databases of a cluster). * Nonzero dbNode values correspond to pg_database.oid. * * relNode identifies the specific relation. relNode corresponds to * pg_class.relfilenode (NOT pg_class.oid, because we need to be able * to assign new physical files to relations in some situations). * Notice that relNode is only unique within a database in a particular * tablespace. * * Note: spcNode must be GLOBALTABLESPACE_OID if and only if dbNode is * zero. We support shared relations only in the "global" tablespace. * * Note: in pg_class we allow reltablespace == 0 to denote that the * relation is stored in its database's "default" tablespace (as * identified by pg_database.dattablespace). However this shorthand * is NOT allowed in RelFileNode structs --- the real tablespace ID * must be supplied when setting spcNode. * * Note: in pg_class, relfilenode can be zero to denote that the relation * is a "mapped" relation, whose current true filenode number is available * from relmapper.c. Again, this case is NOT allowed in RelFileNodes. * * Note: various places use RelFileNode in hashtable keys. Therefore, * there *must not* be any unused padding bytes in this struct. That * should be safe as long as all the fields are of type Oid. */ typedef struct RelFileNode { Oid spcNode; /* tablespace */ Oid dbNode; /* database */ Oid relNode; /* relation */ } RelFileNode; /* * Augmenting a relfilenode with the backend ID provides all the information * we need to locate the physical storage. The backend ID is InvalidBackendId * for regular relations (those accessible to more than one backend), or the * owning backend's ID for backend-local relations. Backend-local relations * are always transient and removed in case of a database crash; they are * never WAL-logged or fsync'd. */ typedef struct RelFileNodeBackend { RelFileNode node; BackendId backend; } RelFileNodeBackend; #define RelFileNodeBackendIsTemp(rnode) \ ((rnode).backend != InvalidBackendId) /* * Note: RelFileNodeEquals and RelFileNodeBackendEquals compare relNode first * since that is most likely to be different in two unequal RelFileNodes. It * is probably redundant to compare spcNode if the other fields are found equal, * but do it anyway to be sure. Likewise for checking the backend ID in * RelFileNodeBackendEquals. */ #define RelFileNodeEquals(node1, node2) \ ((node1).relNode == (node2).relNode && \ (node1).dbNode == (node2).dbNode && \ (node1).spcNode == (node2).spcNode) #define RelFileNodeBackendEquals(node1, node2) \ ((node1).node.relNode == (node2).node.relNode && \ (node1).node.dbNode == (node2).node.dbNode && \ (node1).backend == (node2).backend && \ (node1).node.spcNode == (node2).node.spcNode) #endif /* RELFILENODE_H */ pg_query-4.2.3/ext/pg_query/include/storage/bufmgr.h0000644000004100000410000002361714510636647022605 0ustar www-datawww-data/*------------------------------------------------------------------------- * * bufmgr.h * POSTGRES buffer manager definitions. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/bufmgr.h * *------------------------------------------------------------------------- */ #ifndef BUFMGR_H #define BUFMGR_H #include "storage/block.h" #include "storage/buf.h" #include "storage/bufpage.h" #include "storage/relfilenode.h" #include "utils/relcache.h" #include "utils/snapmgr.h" typedef void *Block; /* Possible arguments for GetAccessStrategy() */ typedef enum BufferAccessStrategyType { BAS_NORMAL, /* Normal random access */ BAS_BULKREAD, /* Large read-only scan (hint bit updates are * ok) */ BAS_BULKWRITE, /* Large multi-block write (e.g. COPY IN) */ BAS_VACUUM /* VACUUM */ } BufferAccessStrategyType; /* Possible modes for ReadBufferExtended() */ typedef enum { RBM_NORMAL, /* Normal read */ RBM_ZERO_AND_LOCK, /* Don't read from disk, caller will * initialize. Also locks the page. */ RBM_ZERO_AND_CLEANUP_LOCK, /* Like RBM_ZERO_AND_LOCK, but locks the page * in "cleanup" mode */ RBM_ZERO_ON_ERROR, /* Read, but return an all-zeros page on error */ RBM_NORMAL_NO_LOG /* Don't log page as invalid during WAL * replay; otherwise same as RBM_NORMAL */ } ReadBufferMode; /* * Type returned by PrefetchBuffer(). */ typedef struct PrefetchBufferResult { Buffer recent_buffer; /* If valid, a hit (recheck needed!) */ bool initiated_io; /* If true, a miss resulting in async I/O */ } PrefetchBufferResult; /* forward declared, to avoid having to expose buf_internals.h here */ struct WritebackContext; /* forward declared, to avoid including smgr.h here */ struct SMgrRelationData; /* in globals.c ... this duplicates miscadmin.h */ extern PGDLLIMPORT int NBuffers; /* in bufmgr.c */ extern PGDLLIMPORT bool zero_damaged_pages; extern PGDLLIMPORT int bgwriter_lru_maxpages; extern PGDLLIMPORT double bgwriter_lru_multiplier; extern PGDLLIMPORT bool track_io_timing; extern PGDLLIMPORT int effective_io_concurrency; extern PGDLLIMPORT int maintenance_io_concurrency; 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 /* * These routines are beaten on quite heavily, hence the macroization. */ /* * BufferIsValid * True iff the given buffer number is valid (either as a shared * or local buffer). * * Note: For a long time this was defined the same as BufferIsPinned, * that is it would say False if you didn't hold a pin on the buffer. * I believe this was bogus and served only to mask logic errors. * Code should always know whether it has a buffer reference, * independently of the pin state. * * Note: For a further long time this was not quite the inverse of the * BufferIsInvalid() macro, in that it also did sanity checks to verify * that the buffer number was in range. Most likely, this macro was * originally intended only to be used in assertions, but its use has * since expanded quite a bit, and the overhead of making those checks * even in non-assert-enabled builds can be significant. Thus, we've * now demoted the range checks to assertions within the macro itself. */ #define BufferIsValid(bufnum) \ ( \ AssertMacro((bufnum) <= NBuffers && (bufnum) >= -NLocBuffer), \ (bufnum) != InvalidBuffer \ ) /* * BufferGetBlock * Returns a reference to a disk page image associated with a buffer. * * Note: * Assumes buffer is valid. */ #define BufferGetBlock(buffer) \ ( \ AssertMacro(BufferIsValid(buffer)), \ BufferIsLocal(buffer) ? \ LocalBufferBlockPointers[-(buffer) - 1] \ : \ (Block) (BufferBlocks + ((Size) ((buffer) - 1)) * BLCKSZ) \ ) /* * BufferGetPageSize * Returns the page size within a buffer. * * Notes: * Assumes buffer is valid. * * The buffer can be a raw disk block and need not contain a valid * (formatted) disk page. */ /* XXX should dig out of buffer descriptor */ #define BufferGetPageSize(buffer) \ ( \ AssertMacro(BufferIsValid(buffer)), \ (Size)BLCKSZ \ ) /* * BufferGetPage * Returns the page associated with a buffer. * * When this is called as part of a scan, there may be a need for a nearby * call to TestForOldSnapshot(). See the definition of that for details. */ #define BufferGetPage(buffer) ((Page)BufferGetBlock(buffer)) /* * prototypes for functions in bufmgr.c */ extern PrefetchBufferResult PrefetchSharedBuffer(struct SMgrRelationData *smgr_reln, ForkNumber forkNum, BlockNumber blockNum); extern PrefetchBufferResult PrefetchBuffer(Relation reln, ForkNumber forkNum, BlockNumber blockNum); extern bool ReadRecentBuffer(RelFileNode rnode, 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(RelFileNode rnode, ForkNumber forkNum, BlockNumber blockNum, ReadBufferMode mode, BufferAccessStrategy strategy, bool permanent); extern void ReleaseBuffer(Buffer buffer); extern void UnlockReleaseBuffer(Buffer buffer); extern void MarkBufferDirty(Buffer buffer); extern void IncrBufferRefCount(Buffer buffer); extern Buffer ReleaseAndReadBuffer(Buffer buffer, Relation relation, BlockNumber blockNum); extern void InitBufferPool(void); extern void InitBufferPoolAccess(void); extern void AtEOXact_Buffers(bool isCommit); extern void PrintBufferLeakWarning(Buffer buffer); extern void CheckPointBuffers(int flags); extern BlockNumber BufferGetBlockNumber(Buffer buffer); extern BlockNumber RelationGetNumberOfBlocksInFork(Relation relation, ForkNumber forkNum); extern void FlushOneBuffer(Buffer buffer); extern void FlushRelationBuffers(Relation rel); extern void FlushRelationsAllBuffers(struct SMgrRelationData **smgrs, int nrels); extern void CreateAndCopyRelationData(RelFileNode src_rnode, RelFileNode dst_rnode, bool permanent); extern void FlushDatabaseBuffers(Oid dbid); extern void DropRelFileNodeBuffers(struct SMgrRelationData *smgr_reln, ForkNumber *forkNum, int nforks, BlockNumber *firstDelBlock); extern void DropRelFileNodesAllBuffers(struct SMgrRelationData **smgr_reln, int nnodes); extern void DropDatabaseBuffers(Oid dbid); #define RelationGetNumberOfBlocks(reln) \ RelationGetNumberOfBlocksInFork(reln, MAIN_FORKNUM) extern bool BufferIsPermanent(Buffer buffer); extern XLogRecPtr BufferGetLSNAtomic(Buffer buffer); #ifdef NOT_USED extern void PrintPinnedBufs(void); #endif extern Size BufferShmemSize(void); extern void BufferGetTag(Buffer buffer, RelFileNode *rnode, ForkNumber *forknum, BlockNumber *blknum); extern void MarkBufferDirtyHint(Buffer buffer, bool buffer_std); extern void UnlockBuffers(void); extern void LockBuffer(Buffer buffer, int mode); extern bool ConditionalLockBuffer(Buffer buffer); extern void LockBufferForCleanup(Buffer buffer); extern bool ConditionalLockBufferForCleanup(Buffer buffer); extern bool IsBufferCleanupOK(Buffer buffer); extern bool HoldingBufferPinThatDelaysRecovery(void); extern void AbortBufferIO(void); extern void BufmgrCommit(void); extern bool BgBufferSync(struct WritebackContext *wb_context); extern void AtProcExit_LocalBuffers(void); extern void TestForOldSnapshot_impl(Snapshot snapshot, Relation relation); /* in freelist.c */ extern BufferAccessStrategy GetAccessStrategy(BufferAccessStrategyType btype); extern void FreeAccessStrategy(BufferAccessStrategy strategy); /* inline functions */ /* * Although this header file is nominally backend-only, certain frontend * programs like pg_waldump include it. For compilers that emit static * inline functions even when they're unused, that leads to unsatisfied * external references; hence hide these with #ifndef FRONTEND. */ #ifndef FRONTEND /* * Check whether the given snapshot is too old to have safely read the given * page from the given table. If so, throw a "snapshot too old" error. * * This test generally needs to be performed after every BufferGetPage() call * that is executed as part of a scan. It is not needed for calls made for * modifying the page (for example, to position to the right place to insert a * new index tuple or for vacuuming). It may also be omitted where calls to * lower-level functions will have already performed the test. * * Note that a NULL snapshot argument is allowed and causes a fast return * without error; this is to support call sites which can be called from * either scans or index modification areas. * * For best performance, keep the tests that are fastest and/or most likely to * exclude a page from old snapshot testing near the front. */ static inline void TestForOldSnapshot(Snapshot snapshot, Relation relation, Page page) { Assert(relation != NULL); if (old_snapshot_threshold >= 0 && (snapshot) != NULL && ((snapshot)->snapshot_type == SNAPSHOT_MVCC || (snapshot)->snapshot_type == SNAPSHOT_TOAST) && !XLogRecPtrIsInvalid((snapshot)->lsn) && PageGetLSN(page) > (snapshot)->lsn) TestForOldSnapshot_impl(snapshot, relation); } #endif /* FRONTEND */ #endif /* BUFMGR_H */ pg_query-4.2.3/ext/pg_query/include/storage/smgr.h0000644000004100000410000001056314510636647022267 0ustar www-datawww-data/*------------------------------------------------------------------------- * * smgr.h * storage manager switch public interface declarations. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/smgr.h * *------------------------------------------------------------------------- */ #ifndef SMGR_H #define SMGR_H #include "lib/ilist.h" #include "storage/block.h" #include "storage/relfilenode.h" /* * smgr.c maintains a table of SMgrRelation objects, which are essentially * cached file handles. An SMgrRelation is created (if not already present) * by smgropen(), and destroyed by smgrclose(). Note that neither of these * operations imply I/O, they just create or destroy a hashtable entry. * (But smgrclose() may release associated resources, such as OS-level file * descriptors.) * * An SMgrRelation may have an "owner", which is just a pointer to it from * somewhere else; smgr.c will clear this pointer if the SMgrRelation is * closed. We use this to avoid dangling pointers from relcache to smgr * without having to make the smgr explicitly aware of relcache. There * can't be more than one "owner" pointer per SMgrRelation, but that's * all we need. * * SMgrRelations that do not have an "owner" are considered to be transient, * and are deleted at end of transaction. */ typedef struct SMgrRelationData { /* rnode is the hashtable lookup key, so it must be first! */ RelFileNodeBackend smgr_rnode; /* relation physical identifier */ /* pointer to owning pointer, or NULL if none */ struct SMgrRelationData **smgr_owner; /* * 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]; /* if unowned, list link in list of all unowned SMgrRelations */ dlist_node node; } SMgrRelationData; typedef SMgrRelationData *SMgrRelation; #define SmgrIsTemp(smgr) \ RelFileNodeBackendIsTemp((smgr)->smgr_rnode) extern void smgrinit(void); extern SMgrRelation smgropen(RelFileNode rnode, BackendId backend); extern bool smgrexists(SMgrRelation reln, ForkNumber forknum); extern void smgrsetowner(SMgrRelation *owner, SMgrRelation reln); extern void smgrclearowner(SMgrRelation *owner, SMgrRelation reln); extern void smgrclose(SMgrRelation reln); extern void smgrcloseall(void); extern void smgrclosenode(RelFileNodeBackend rnode); extern void smgrrelease(SMgrRelation reln); extern void smgrreleaseall(void); extern void smgrcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo); extern void smgrdosyncall(SMgrRelation *rels, int nrels); extern void smgrdounlinkall(SMgrRelation *rels, int nrels, bool isRedo); extern void smgrextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, char *buffer, bool skipFsync); extern bool smgrprefetch(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum); extern void smgrread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, char *buffer); extern void smgrwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, char *buffer, bool skipFsync); extern void smgrwriteback(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, BlockNumber nblocks); extern BlockNumber smgrnblocks(SMgrRelation reln, ForkNumber forknum); extern BlockNumber smgrnblocks_cached(SMgrRelation reln, ForkNumber forknum); extern void smgrtruncate(SMgrRelation reln, ForkNumber *forknum, int nforks, BlockNumber *nblocks); extern void smgrimmedsync(SMgrRelation reln, ForkNumber forknum); extern void AtEOXact_SMgr(void); extern bool ProcessBarrierSmgrRelease(void); #endif /* SMGR_H */ pg_query-4.2.3/ext/pg_query/include/storage/pg_shmem.h0000644000004100000410000000553114510636647023115 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 */ typedef enum { HUGE_PAGES_OFF, HUGE_PAGES_ON, HUGE_PAGES_TRY } HugePagesType; /* Possible values for shared_memory_type */ typedef enum { SHMEM_TYPE_WINDOWS, SHMEM_TYPE_SYSV, SHMEM_TYPE_MMAP } PGShmemType; #ifndef WIN32 extern 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 */ pg_query-4.2.3/ext/pg_query/include/storage/lockdefs.h0000644000004100000410000000401414510636647023103 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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<bi_hi = (blockNumber) >> 16, \ (blockId)->bi_lo = (blockNumber) & 0xffff \ ) /* * BlockIdCopy * Copy a block identifier. */ #define BlockIdCopy(toBlockId, fromBlockId) \ ( \ (toBlockId)->bi_hi = (fromBlockId)->bi_hi, \ (toBlockId)->bi_lo = (fromBlockId)->bi_lo \ ) /* * BlockIdEquals * Check for block number equality. */ #define BlockIdEquals(blockId1, blockId2) \ ((blockId1)->bi_hi == (blockId2)->bi_hi && \ (blockId1)->bi_lo == (blockId2)->bi_lo) /* * BlockIdGetBlockNumber * Retrieve the block number from a block identifier. */ #define BlockIdGetBlockNumber(blockId) \ ((((BlockNumber) (blockId)->bi_hi) << 16) | ((BlockNumber) (blockId)->bi_lo)) #endif /* BLOCK_H */ pg_query-4.2.3/ext/pg_query/include/storage/backendid.h0000644000004100000410000000215214510636647023216 0ustar www-datawww-data/*------------------------------------------------------------------------- * * backendid.h * POSTGRES backend id communication definitions * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/backendid.h * *------------------------------------------------------------------------- */ #ifndef BACKENDID_H #define BACKENDID_H /* ---------------- * -cim 8/17/90 * ---------------- */ typedef int BackendId; /* unique currently active backend identifier */ #define InvalidBackendId (-1) extern PGDLLIMPORT BackendId MyBackendId; /* backend id of this backend */ /* backend id of our parallel session leader, or InvalidBackendId if none */ extern PGDLLIMPORT BackendId ParallelLeaderBackendId; /* * The BackendId to use for our session's temp relations is normally our own, * but parallel workers should use their leader's ID. */ #define BackendIdForTempRelations() \ (ParallelLeaderBackendId == InvalidBackendId ? MyBackendId : ParallelLeaderBackendId) #endif /* BACKENDID_H */ pg_query-4.2.3/ext/pg_query/include/storage/procsignal.h0000644000004100000410000000445714510636647023465 0ustar www-datawww-data/*------------------------------------------------------------------------- * * procsignal.h * Routines for interprocess signaling * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/procsignal.h * *------------------------------------------------------------------------- */ #ifndef PROCSIGNAL_H #define PROCSIGNAL_H #include "storage/backendid.h" /* * Reasons for signaling a Postgres child process (a backend or an auxiliary * process, like checkpointer). We can cope with concurrent signals for different * reasons. However, if the same reason is signaled multiple times in quick * succession, the process is likely to observe only one notification of it. * This is okay for the present uses. * * Also, because of race conditions, it's important that all the signals be * defined so that no harm is done if a process mistakenly receives one. */ typedef enum { PROCSIG_CATCHUP_INTERRUPT, /* sinval catchup interrupt */ PROCSIG_NOTIFY_INTERRUPT, /* listen/notify interrupt */ PROCSIG_PARALLEL_MESSAGE, /* message from cooperating parallel backend */ PROCSIG_WALSND_INIT_STOPPING, /* ask walsenders to prepare for shutdown */ PROCSIG_BARRIER, /* global barrier interrupt */ PROCSIG_LOG_MEMORY_CONTEXT, /* ask backend to log the memory contexts */ /* Recovery conflict reasons */ PROCSIG_RECOVERY_CONFLICT_DATABASE, PROCSIG_RECOVERY_CONFLICT_TABLESPACE, PROCSIG_RECOVERY_CONFLICT_LOCK, PROCSIG_RECOVERY_CONFLICT_SNAPSHOT, PROCSIG_RECOVERY_CONFLICT_BUFFERPIN, PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK, NUM_PROCSIGNALS /* Must be last! */ } ProcSignalReason; typedef enum { 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(int pss_idx); extern int SendProcSignal(pid_t pid, ProcSignalReason reason, BackendId backendId); extern uint64 EmitProcSignalBarrier(ProcSignalBarrierType type); extern void WaitForProcSignalBarrier(uint64 generation); extern void ProcessProcSignalBarrier(void); extern void procsignal_sigusr1_handler(SIGNAL_ARGS); #endif /* PROCSIGNAL_H */ pg_query-4.2.3/ext/pg_query/include/storage/condition_variable.h0000644000004100000410000000563314510636647025154 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 void ConditionVariableCancelSleep(void); /* * Optionally, ConditionVariablePrepareToSleep can be called before entering * the test-and-sleep loop described above. Doing so is more efficient if * at least one sleep is needed, whereas not doing so is more efficient when * no sleep is needed because the test condition is true the first time. */ extern void ConditionVariablePrepareToSleep(ConditionVariable *cv); /* Wake up a single waiter (via signal) or all waiters (via broadcast). */ extern void ConditionVariableSignal(ConditionVariable *cv); extern void ConditionVariableBroadcast(ConditionVariable *cv); #endif /* CONDITION_VARIABLE_H */ pg_query-4.2.3/ext/pg_query/include/storage/itemptr.h0000644000004100000410000001311514510636647022777 0ustar www-datawww-data/*------------------------------------------------------------------------- * * itemptr.h * POSTGRES disk item pointer definitions. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/itemptr.h * *------------------------------------------------------------------------- */ #ifndef ITEMPTR_H #define ITEMPTR_H #include "storage/block.h" #include "storage/off.h" /* * ItemPointer: * * This is a pointer to an item within a disk page of a known file * (for example, a cross-link from an index to its parent table). * ip_blkid tells us which block, ip_posid tells us which entry in * the linp (ItemIdData) array we want. * * Note: because there is an item pointer in each tuple header and index * tuple header on disk, it's very important not to waste space with * structure padding bytes. The struct is designed to be six bytes long * (it contains three int16 fields) but a few compilers will pad it to * eight bytes unless coerced. We apply appropriate persuasion where * possible. If your compiler can't be made to play along, you'll waste * lots of space. */ typedef struct ItemPointerData { BlockIdData ip_blkid; OffsetNumber ip_posid; } /* If compiler understands packed and aligned pragmas, use those */ #if defined(pg_attribute_packed) && defined(pg_attribute_aligned) pg_attribute_packed() pg_attribute_aligned(2) #endif ItemPointerData; typedef ItemPointerData *ItemPointer; /* ---------------- * special values used in heap tuples (t_ctid) * ---------------- */ /* * If a heap tuple holds a speculative insertion token rather than a real * TID, ip_posid is set to SpecTokenOffsetNumber, and the token is stored in * ip_blkid. SpecTokenOffsetNumber must be higher than MaxOffsetNumber, so * that it can be distinguished from a valid offset number in a regular item * pointer. */ #define SpecTokenOffsetNumber 0xfffe /* * When a tuple is moved to a different partition by UPDATE, the t_ctid of * the old tuple version is set to this magic value. */ #define MovedPartitionsOffsetNumber 0xfffd #define MovedPartitionsBlockNumber InvalidBlockNumber /* ---------------- * support macros * ---------------- */ /* * ItemPointerIsValid * True iff the disk item pointer is not NULL. */ #define ItemPointerIsValid(pointer) \ ((bool) (PointerIsValid(pointer) && ((pointer)->ip_posid != 0))) /* * ItemPointerGetBlockNumberNoCheck * Returns the block number of a disk item pointer. */ #define ItemPointerGetBlockNumberNoCheck(pointer) \ ( \ BlockIdGetBlockNumber(&(pointer)->ip_blkid) \ ) /* * ItemPointerGetBlockNumber * As above, but verifies that the item pointer looks valid. */ #define ItemPointerGetBlockNumber(pointer) \ ( \ AssertMacro(ItemPointerIsValid(pointer)), \ ItemPointerGetBlockNumberNoCheck(pointer) \ ) /* * ItemPointerGetOffsetNumberNoCheck * Returns the offset number of a disk item pointer. */ #define ItemPointerGetOffsetNumberNoCheck(pointer) \ ( \ (pointer)->ip_posid \ ) /* * ItemPointerGetOffsetNumber * As above, but verifies that the item pointer looks valid. */ #define ItemPointerGetOffsetNumber(pointer) \ ( \ AssertMacro(ItemPointerIsValid(pointer)), \ ItemPointerGetOffsetNumberNoCheck(pointer) \ ) /* * ItemPointerSet * Sets a disk item pointer to the specified block and offset. */ #define ItemPointerSet(pointer, blockNumber, offNum) \ ( \ AssertMacro(PointerIsValid(pointer)), \ BlockIdSet(&((pointer)->ip_blkid), blockNumber), \ (pointer)->ip_posid = offNum \ ) /* * ItemPointerSetBlockNumber * Sets a disk item pointer to the specified block. */ #define ItemPointerSetBlockNumber(pointer, blockNumber) \ ( \ AssertMacro(PointerIsValid(pointer)), \ BlockIdSet(&((pointer)->ip_blkid), blockNumber) \ ) /* * ItemPointerSetOffsetNumber * Sets a disk item pointer to the specified offset. */ #define ItemPointerSetOffsetNumber(pointer, offsetNumber) \ ( \ AssertMacro(PointerIsValid(pointer)), \ (pointer)->ip_posid = (offsetNumber) \ ) /* * ItemPointerCopy * Copies the contents of one disk item pointer to another. * * Should there ever be padding in an ItemPointer this would need to be handled * differently as it's used as hash key. */ #define ItemPointerCopy(fromPointer, toPointer) \ ( \ AssertMacro(PointerIsValid(toPointer)), \ AssertMacro(PointerIsValid(fromPointer)), \ *(toPointer) = *(fromPointer) \ ) /* * ItemPointerSetInvalid * Sets a disk item pointer to be invalid. */ #define ItemPointerSetInvalid(pointer) \ ( \ AssertMacro(PointerIsValid(pointer)), \ BlockIdSet(&((pointer)->ip_blkid), InvalidBlockNumber), \ (pointer)->ip_posid = InvalidOffsetNumber \ ) /* * ItemPointerIndicatesMovedPartitions * True iff the block number indicates the tuple has moved to another * partition. */ #define ItemPointerIndicatesMovedPartitions(pointer) \ ( \ ItemPointerGetOffsetNumber(pointer) == MovedPartitionsOffsetNumber && \ ItemPointerGetBlockNumberNoCheck(pointer) == MovedPartitionsBlockNumber \ ) /* * ItemPointerSetMovedPartitions * Indicate that the item referenced by the itempointer has moved into a * different partition. */ #define ItemPointerSetMovedPartitions(pointer) \ ItemPointerSet((pointer), MovedPartitionsBlockNumber, MovedPartitionsOffsetNumber) /* ---------------- * externs * ---------------- */ extern bool ItemPointerEquals(ItemPointer pointer1, ItemPointer pointer2); extern int32 ItemPointerCompare(ItemPointer arg1, ItemPointer arg2); extern void ItemPointerInc(ItemPointer pointer); extern void ItemPointerDec(ItemPointer pointer); #endif /* ITEMPTR_H */ pg_query-4.2.3/ext/pg_query/include/storage/lwlocknames.h0000644000004100000410000000512014510636647023627 0ustar www-datawww-data/* autogenerated from src/backend/storage/lmgr/lwlocknames.txt, do not edit */ /* there is deliberately not an #ifndef LWLOCKNAMES_H here */ #define ShmemIndexLock (&MainLWLockArray[1].lock) #define OidGenLock (&MainLWLockArray[2].lock) #define XidGenLock (&MainLWLockArray[3].lock) #define ProcArrayLock (&MainLWLockArray[4].lock) #define SInvalReadLock (&MainLWLockArray[5].lock) #define SInvalWriteLock (&MainLWLockArray[6].lock) #define WALBufMappingLock (&MainLWLockArray[7].lock) #define WALWriteLock (&MainLWLockArray[8].lock) #define ControlFileLock (&MainLWLockArray[9].lock) #define XactSLRULock (&MainLWLockArray[11].lock) #define SubtransSLRULock (&MainLWLockArray[12].lock) #define MultiXactGenLock (&MainLWLockArray[13].lock) #define MultiXactOffsetSLRULock (&MainLWLockArray[14].lock) #define MultiXactMemberSLRULock (&MainLWLockArray[15].lock) #define RelCacheInitLock (&MainLWLockArray[16].lock) #define CheckpointerCommLock (&MainLWLockArray[17].lock) #define TwoPhaseStateLock (&MainLWLockArray[18].lock) #define TablespaceCreateLock (&MainLWLockArray[19].lock) #define BtreeVacuumLock (&MainLWLockArray[20].lock) #define AddinShmemInitLock (&MainLWLockArray[21].lock) #define AutovacuumLock (&MainLWLockArray[22].lock) #define AutovacuumScheduleLock (&MainLWLockArray[23].lock) #define SyncScanLock (&MainLWLockArray[24].lock) #define RelationMappingLock (&MainLWLockArray[25].lock) #define NotifySLRULock (&MainLWLockArray[26].lock) #define NotifyQueueLock (&MainLWLockArray[27].lock) #define SerializableXactHashLock (&MainLWLockArray[28].lock) #define SerializableFinishedListLock (&MainLWLockArray[29].lock) #define SerializablePredicateListLock (&MainLWLockArray[30].lock) #define SerialSLRULock (&MainLWLockArray[31].lock) #define SyncRepLock (&MainLWLockArray[32].lock) #define BackgroundWorkerLock (&MainLWLockArray[33].lock) #define DynamicSharedMemoryControlLock (&MainLWLockArray[34].lock) #define AutoFileLock (&MainLWLockArray[35].lock) #define ReplicationSlotAllocationLock (&MainLWLockArray[36].lock) #define ReplicationSlotControlLock (&MainLWLockArray[37].lock) #define CommitTsSLRULock (&MainLWLockArray[38].lock) #define CommitTsLock (&MainLWLockArray[39].lock) #define ReplicationOriginLock (&MainLWLockArray[40].lock) #define MultiXactTruncationLock (&MainLWLockArray[41].lock) #define OldSnapshotTimeMapLock (&MainLWLockArray[42].lock) #define LogicalRepWorkerLock (&MainLWLockArray[43].lock) #define XactTruncationLock (&MainLWLockArray[44].lock) #define WrapLimitsVacuumLock (&MainLWLockArray[46].lock) #define NotifyQueueTailLock (&MainLWLockArray[47].lock) #define NUM_INDIVIDUAL_LWLOCKS 48 pg_query-4.2.3/ext/pg_query/include/storage/standbydefs.h0000644000004100000410000000441614510636647023625 0ustar www-datawww-data/*------------------------------------------------------------------------- * * standbydefs.h * Frontend exposed definitions for hot standby mode. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/standbydefs.h * *------------------------------------------------------------------------- */ #ifndef STANDBYDEFS_H #define STANDBYDEFS_H #include "access/xlogreader.h" #include "lib/stringinfo.h" #include "storage/lockdefs.h" #include "storage/sinval.h" /* Recovery handlers for the Standby Rmgr (RM_STANDBY_ID) */ extern void standby_redo(XLogReaderState *record); extern void standby_desc(StringInfo buf, XLogReaderState *record); extern const char *standby_identify(uint8 info); extern void standby_desc_invalidations(StringInfo buf, int nmsgs, SharedInvalidationMessage *msgs, Oid dbId, Oid tsId, bool relcacheInitFileInval); /* * XLOG message types */ #define XLOG_STANDBY_LOCK 0x00 #define XLOG_RUNNING_XACTS 0x10 #define XLOG_INVALIDATIONS 0x20 typedef struct xl_standby_locks { int nlocks; /* number of entries in locks array */ xl_standby_lock locks[FLEXIBLE_ARRAY_MEMBER]; } xl_standby_locks; /* * When we write running xact data to WAL, we use this structure. */ typedef struct xl_running_xacts { int xcnt; /* # of xact ids in xids[] */ int subxcnt; /* # of subxact ids in xids[] */ bool subxid_overflow; /* snapshot overflowed, subxids missing */ TransactionId nextXid; /* xid from ShmemVariableCache->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 */ pg_query-4.2.3/ext/pg_query/include/storage/lmgr.h0000644000004100000410000001104414510636647022253 0ustar www-datawww-data/*------------------------------------------------------------------------- * * lmgr.h * POSTGRES lock manager definitions. * * * Portions Copyright (c) 1996-2022, 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 LockHasWaitersRelation(Relation relation, LOCKMODE lockmode); extern void LockRelationIdForSession(LockRelId *relid, LOCKMODE lockmode); extern void UnlockRelationIdForSession(LockRelId *relid, LOCKMODE lockmode); /* Lock a relation for extension */ extern void LockRelationForExtension(Relation relation, LOCKMODE lockmode); extern void UnlockRelationForExtension(Relation relation, LOCKMODE lockmode); extern bool ConditionalLockRelationForExtension(Relation relation, LOCKMODE lockmode); extern int RelationExtensionLockWaiterCount(Relation relation); /* Lock to recompute pg_database.datfrozenxid in the current database */ extern void LockDatabaseFrozenIds(LOCKMODE lockmode); /* Lock a page (currently only used within indexes) */ extern void LockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode); extern bool ConditionalLockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode); extern void UnlockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode); /* Lock a tuple (see heap_lock_tuple before assuming you understand this) */ extern void LockTuple(Relation relation, ItemPointer tid, LOCKMODE lockmode); extern bool ConditionalLockTuple(Relation relation, ItemPointer tid, LOCKMODE lockmode); extern void UnlockTuple(Relation relation, ItemPointer tid, LOCKMODE lockmode); /* Lock an XID (used to wait for a transaction to finish) */ extern void XactLockTableInsert(TransactionId xid); extern void XactLockTableDelete(TransactionId xid); extern void XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid, XLTW_Oper oper); extern bool ConditionalXactLockTableWait(TransactionId xid); /* Lock VXIDs, specified by conflicting locktags */ extern void WaitForLockers(LOCKTAG heaplocktag, LOCKMODE lockmode, bool progress); extern void WaitForLockersMultiple(List *locktags, LOCKMODE lockmode, bool progress); /* Lock an XID for tuple insertion (used to wait for an insertion to finish) */ extern uint32 SpeculativeInsertionLockAcquire(TransactionId xid); extern void SpeculativeInsertionLockRelease(TransactionId xid); extern void SpeculativeInsertionWait(TransactionId xid, uint32 token); /* Lock a general object (other than a relation) of the current database */ extern void LockDatabaseObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode); extern void UnlockDatabaseObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode); /* Lock a shared-across-databases object (other than a relation) */ extern void LockSharedObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode); extern void UnlockSharedObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode); extern void LockSharedObjectForSession(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode); extern void UnlockSharedObjectForSession(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode); /* Describe a locktag for error messages */ extern void DescribeLockTag(StringInfo buf, const LOCKTAG *tag); extern const char *GetLockNameFromTagType(uint16 locktag_type); #endif /* LMGR_H */ pg_query-4.2.3/ext/pg_query/include/storage/bufpage.h0000644000004100000410000003766614510636647022745 0ustar www-datawww-data/*------------------------------------------------------------------------- * * bufpage.h * Standard POSTGRES buffer page definitions. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/bufpage.h * *------------------------------------------------------------------------- */ #ifndef BUFPAGE_H #define BUFPAGE_H #include "access/xlogdefs.h" #include "storage/block.h" #include "storage/item.h" #include "storage/off.h" /* * A postgres disk page is an abstraction layered on top of a postgres * disk block (which is simply a unit of i/o, see block.h). * * specifically, while a disk block can be unformatted, a postgres * disk page is always a slotted page of the form: * * +----------------+---------------------------------+ * | PageHeaderData | linp1 linp2 linp3 ... | * +-----------+----+---------------------------------+ * | ... linpN | | * +-----------+--------------------------------------+ * | ^ pd_lower | * | | * | v pd_upper | * +-------------+------------------------------------+ * | | tupleN ... | * +-------------+------------------+-----------------+ * | ... tuple3 tuple2 tuple1 | "special space" | * +--------------------------------+-----------------+ * ^ pd_special * * a page is full when nothing can be added between pd_lower and * pd_upper. * * all blocks written out by an access method must be disk pages. * * EXCEPTIONS: * * obviously, a page is not formatted before it is initialized by * a call to PageInit. * * NOTES: * * linp1..N form an ItemId (line pointer) array. ItemPointers point * to a physical block number and a logical offset (line pointer * number) within that block/page. Note that OffsetNumbers * conventionally start at 1, not 0. * * tuple1..N are added "backwards" on the page. Since an ItemPointer * offset is used to access an ItemId entry rather than an actual * byte-offset position, tuples can be physically shuffled on a page * whenever the need arises. This indirection also keeps crash recovery * relatively simple, because the low-level details of page space * management can be controlled by standard buffer page code during * logging, and during recovery. * * AM-generic per-page information is kept in PageHeaderData. * * AM-specific per-page data (if any) is kept in the area marked "special * space"; each AM has an "opaque" structure defined somewhere that is * stored as the page trailer. an access method should always * initialize its pages with PageInit and then set its own opaque * fields. */ typedef Pointer Page; /* * location (byte offset) within a page. * * note that this is actually limited to 2^15 because we have limited * ItemIdData.lp_off and ItemIdData.lp_len to 15 bits (see itemid.h). */ typedef uint16 LocationIndex; /* * For historical reasons, the 64-bit LSN value is stored as two 32-bit * values. */ typedef struct { uint32 xlogid; /* high bits */ uint32 xrecoff; /* low bits */ } PageXLogRecPtr; #define PageXLogRecPtrGet(val) \ ((uint64) (val).xlogid << 32 | (val).xrecoff) #define PageXLogRecPtrSet(ptr, lsn) \ ((ptr).xlogid = (uint32) ((lsn) >> 32), (ptr).xrecoff = (uint32) (lsn)) /* * disk page organization * * space management information generic to any page * * pd_lsn - identifies xlog record for last change to this page. * pd_checksum - page checksum, if set. * pd_flags - flag bits. * pd_lower - offset to start of free space. * pd_upper - offset to end of free space. * pd_special - offset to start of special space. * pd_pagesize_version - size in bytes and page layout version number. * pd_prune_xid - oldest XID among potentially prunable tuples on page. * * The LSN is used by the buffer manager to enforce the basic rule of WAL: * "thou shalt write xlog before data". A dirty buffer cannot be dumped * to disk until xlog has been flushed at least as far as the page's LSN. * * pd_checksum stores the page checksum, if it has been set for this page; * zero is a valid value for a checksum. If a checksum is not in use then * we leave the field unset. This will typically mean the field is zero * though non-zero values may also be present if databases have been * pg_upgraded from releases prior to 9.3, when the same byte offset was * used to store the current timelineid when the page was last updated. * Note that there is no indication on a page as to whether the checksum * is valid or not, a deliberate design choice which avoids the problem * of relying on the page contents to decide whether to verify it. Hence * there are no flag bits relating to checksums. * * pd_prune_xid is a hint field that helps determine whether pruning will be * useful. It is currently unused in index pages. * * The page version number and page size are packed together into a single * uint16 field. This is for historical reasons: before PostgreSQL 7.3, * there was no concept of a page version number, and doing it this way * lets us pretend that pre-7.3 databases have page version number zero. * We constrain page sizes to be multiples of 256, leaving the low eight * bits available for a version number. * * Minimum possible page size is perhaps 64B to fit page header, opaque space * and a minimal tuple; of course, in reality you want it much bigger, so * the constraint on pagesize mod 256 is not an important restriction. * On the high end, we can only support pages up to 32KB because lp_off/lp_len * are 15 bits. */ typedef struct PageHeaderData { /* XXX LSN is member of *any* block, not only page-organized ones */ PageXLogRecPtr pd_lsn; /* LSN: next byte after last byte of xlog * record for last change to this page */ uint16 pd_checksum; /* checksum */ uint16 pd_flags; /* flag bits, see below */ LocationIndex pd_lower; /* offset to start of free space */ LocationIndex pd_upper; /* offset to end of free space */ LocationIndex pd_special; /* offset to start of special space */ uint16 pd_pagesize_version; TransactionId pd_prune_xid; /* oldest prunable XID, or zero if none */ ItemIdData pd_linp[FLEXIBLE_ARRAY_MEMBER]; /* line pointer array */ } PageHeaderData; typedef PageHeaderData *PageHeader; /* * pd_flags contains the following flag bits. Undefined bits are initialized * to zero and may be used in the future. * * PD_HAS_FREE_LINES is set if there are any LP_UNUSED line pointers before * pd_lower. This should be considered a hint rather than the truth, since * changes to it are not WAL-logged. * * PD_PAGE_FULL is set if an UPDATE doesn't find enough free space in the * page for its new tuple version; this suggests that a prune is needed. * Again, this is just a hint. */ #define PD_HAS_FREE_LINES 0x0001 /* are there any unused line pointers? */ #define PD_PAGE_FULL 0x0002 /* not enough free space for new tuple? */ #define PD_ALL_VISIBLE 0x0004 /* all tuples on page are visible to * everyone */ #define PD_VALID_FLAG_BITS 0x0007 /* OR of all valid pd_flags bits */ /* * Page layout version number 0 is for pre-7.3 Postgres releases. * Releases 7.3 and 7.4 use 1, denoting a new HeapTupleHeader layout. * Release 8.0 uses 2; it changed the HeapTupleHeader layout again. * Release 8.1 uses 3; it redefined HeapTupleHeader infomask bits. * Release 8.3 uses 4; it changed the HeapTupleHeader layout again, and * added the pd_flags field (by stealing some bits from pd_tli), * as well as adding the pd_prune_xid field (which enlarges the header). * * As of Release 9.3, the checksum version must also be considered when * handling pages. */ #define PG_PAGE_LAYOUT_VERSION 4 #define PG_DATA_CHECKSUM_VERSION 1 /* ---------------------------------------------------------------- * page support macros * ---------------------------------------------------------------- */ /* * PageIsValid * True iff page is valid. */ #define PageIsValid(page) PointerIsValid(page) /* * line pointer(s) do not count as part of header */ #define SizeOfPageHeaderData (offsetof(PageHeaderData, pd_linp)) /* * PageIsEmpty * returns true iff no itemid has been allocated on the page */ #define PageIsEmpty(page) \ (((PageHeader) (page))->pd_lower <= SizeOfPageHeaderData) /* * PageIsNew * returns true iff page has not been initialized (by PageInit) */ #define PageIsNew(page) (((PageHeader) (page))->pd_upper == 0) /* * PageGetItemId * Returns an item identifier of a page. */ #define PageGetItemId(page, offsetNumber) \ ((ItemId) (&((PageHeader) (page))->pd_linp[(offsetNumber) - 1])) /* * PageGetContents * To be used in cases where the page does not contain line pointers. * * Note: prior to 8.3 this was not guaranteed to yield a MAXALIGN'd result. * Now it is. Beware of old code that might think the offset to the contents * is just SizeOfPageHeaderData rather than MAXALIGN(SizeOfPageHeaderData). */ #define PageGetContents(page) \ ((char *) (page) + MAXALIGN(SizeOfPageHeaderData)) /* ---------------- * macros to access page size info * ---------------- */ /* * PageSizeIsValid * True iff the page size is valid. */ #define PageSizeIsValid(pageSize) ((pageSize) == BLCKSZ) /* * PageGetPageSize * Returns the page size of a page. * * this can only be called on a formatted page (unlike * BufferGetPageSize, which can be called on an unformatted page). * however, it can be called on a page that is not stored in a buffer. */ #define PageGetPageSize(page) \ ((Size) (((PageHeader) (page))->pd_pagesize_version & (uint16) 0xFF00)) /* * PageGetPageLayoutVersion * Returns the page layout version of a page. */ #define PageGetPageLayoutVersion(page) \ (((PageHeader) (page))->pd_pagesize_version & 0x00FF) /* * PageSetPageSizeAndVersion * Sets the page size and page layout version number of a page. * * We could support setting these two values separately, but there's * no real need for it at the moment. */ #define PageSetPageSizeAndVersion(page, size, version) \ ( \ AssertMacro(((size) & 0xFF00) == (size)), \ AssertMacro(((version) & 0x00FF) == (version)), \ ((PageHeader) (page))->pd_pagesize_version = (size) | (version) \ ) /* ---------------- * page special data macros * ---------------- */ /* * PageGetSpecialSize * Returns size of special space on a page. */ #define PageGetSpecialSize(page) \ ((uint16) (PageGetPageSize(page) - ((PageHeader)(page))->pd_special)) /* * Using assertions, validate that the page special pointer is OK. * * This is intended to catch use of the pointer before page initialization. * It is implemented as a function due to the limitations of the MSVC * compiler, which choked on doing all these tests within another macro. We * return true so that AssertMacro() can be used while still getting the * specifics from the macro failure within this function. */ static inline bool PageValidateSpecialPointer(Page page) { Assert(PageIsValid(page)); Assert(((PageHeader) (page))->pd_special <= BLCKSZ); Assert(((PageHeader) (page))->pd_special >= SizeOfPageHeaderData); return true; } /* * PageGetSpecialPointer * Returns pointer to special space on a page. */ #define PageGetSpecialPointer(page) \ ( \ AssertMacro(PageValidateSpecialPointer(page)), \ (char *) ((char *) (page) + ((PageHeader) (page))->pd_special) \ ) /* * PageGetItem * Retrieves an item on the given page. * * Note: * This does not change the status of any of the resources passed. * The semantics may change in the future. */ #define PageGetItem(page, itemId) \ ( \ AssertMacro(PageIsValid(page)), \ AssertMacro(ItemIdHasStorage(itemId)), \ (Item)(((char *)(page)) + ItemIdGetOffset(itemId)) \ ) /* * PageGetMaxOffsetNumber * Returns the maximum offset number used by the given page. * Since offset numbers are 1-based, this is also the number * of items on the page. * * NOTE: if the page is not initialized (pd_lower == 0), we must * return zero to ensure sane behavior. Accept double evaluation * of the argument so that we can ensure this. */ #define PageGetMaxOffsetNumber(page) \ (((PageHeader) (page))->pd_lower <= SizeOfPageHeaderData ? 0 : \ ((((PageHeader) (page))->pd_lower - SizeOfPageHeaderData) \ / sizeof(ItemIdData))) /* * Additional macros for access to page headers. (Beware multiple evaluation * of the arguments!) */ #define PageGetLSN(page) \ PageXLogRecPtrGet(((PageHeader) (page))->pd_lsn) #define PageSetLSN(page, lsn) \ PageXLogRecPtrSet(((PageHeader) (page))->pd_lsn, lsn) #define PageHasFreeLinePointers(page) \ (((PageHeader) (page))->pd_flags & PD_HAS_FREE_LINES) #define PageSetHasFreeLinePointers(page) \ (((PageHeader) (page))->pd_flags |= PD_HAS_FREE_LINES) #define PageClearHasFreeLinePointers(page) \ (((PageHeader) (page))->pd_flags &= ~PD_HAS_FREE_LINES) #define PageIsFull(page) \ (((PageHeader) (page))->pd_flags & PD_PAGE_FULL) #define PageSetFull(page) \ (((PageHeader) (page))->pd_flags |= PD_PAGE_FULL) #define PageClearFull(page) \ (((PageHeader) (page))->pd_flags &= ~PD_PAGE_FULL) #define PageIsAllVisible(page) \ (((PageHeader) (page))->pd_flags & PD_ALL_VISIBLE) #define PageSetAllVisible(page) \ (((PageHeader) (page))->pd_flags |= PD_ALL_VISIBLE) #define PageClearAllVisible(page) \ (((PageHeader) (page))->pd_flags &= ~PD_ALL_VISIBLE) #define 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 offset); extern void PageIndexMultiDelete(Page page, OffsetNumber *itemnos, int nitems); extern void PageIndexTupleDeleteNoCompact(Page page, OffsetNumber offset); extern bool PageIndexTupleOverwrite(Page page, OffsetNumber offnum, Item newtup, Size newsize); extern char *PageSetChecksumCopy(Page page, BlockNumber blkno); extern void PageSetChecksumInplace(Page page, BlockNumber blkno); #endif /* BUFPAGE_H */ pg_query-4.2.3/ext/pg_query/include/storage/itemid.h0000644000004100000410000001051414510636647022566 0ustar www-datawww-data/*------------------------------------------------------------------------- * * itemid.h * Standard POSTGRES buffer page item identifier/line pointer definitions. * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/pl_gram.h0000644000004100000410000002136114510636647021272 0ustar www-datawww-data/* 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_PRINT_STRICT_PARAMS = 357, K_PRIOR = 358, K_QUERY = 359, K_RAISE = 360, K_RELATIVE = 361, K_RETURN = 362, K_RETURNED_SQLSTATE = 363, K_REVERSE = 364, K_ROLLBACK = 365, K_ROW_COUNT = 366, K_ROWTYPE = 367, K_SCHEMA = 368, K_SCHEMA_NAME = 369, K_SCROLL = 370, K_SLICE = 371, K_SQLSTATE = 372, K_STACKED = 373, K_STRICT = 374, K_TABLE = 375, K_TABLE_NAME = 376, K_THEN = 377, K_TO = 378, K_TYPE = 379, K_USE_COLUMN = 380, K_USE_VARIABLE = 381, K_USING = 382, K_VARIABLE_CONFLICT = 383, K_WARNING = 384, K_WHEN = 385, K_WHILE = 386 }; #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_PRINT_STRICT_PARAMS 357 #define K_PRIOR 358 #define K_QUERY 359 #define K_RAISE 360 #define K_RELATIVE 361 #define K_RETURN 362 #define K_RETURNED_SQLSTATE 363 #define K_REVERSE 364 #define K_ROLLBACK 365 #define K_ROW_COUNT 366 #define K_ROWTYPE 367 #define K_SCHEMA 368 #define K_SCHEMA_NAME 369 #define K_SCROLL 370 #define K_SLICE 371 #define K_SQLSTATE 372 #define K_STACKED 373 #define K_STRICT 374 #define K_TABLE 375 #define K_TABLE_NAME 376 #define K_THEN 377 #define K_TO 378 #define K_TYPE 379 #define K_USE_COLUMN 380 #define K_USE_VARIABLE 381 #define K_USING 382 #define K_VARIABLE_CONFLICT 383 #define K_WARNING 384 #define K_WHEN 385 #define K_WHILE 386 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 120 "pl_gram.y" { core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ int ival; char *str; const char *keyword; PLword word; PLcword cword; PLwdatum wdatum; bool boolean; Oid oid; struct { char *name; int lineno; } varname; struct { char *name; int lineno; PLpgSQL_datum *scalar; PLpgSQL_datum *row; } forvariable; struct { char *label; int n_initvars; int *initvarnos; } declhdr; struct { List *stmts; char *end_label; int end_label_location; } loop_body; List *list; PLpgSQL_type *dtype; PLpgSQL_datum *datum; PLpgSQL_var *var; PLpgSQL_expr *expr; PLpgSQL_stmt *stmt; PLpgSQL_condition *condition; PLpgSQL_exception *exception; PLpgSQL_exception_block *exception_block; PLpgSQL_nsitem *nsitem; PLpgSQL_diag_item *diagitem; PLpgSQL_stmt_fetch *fetch; PLpgSQL_case_when *casewhen; } /* Line 1529 of yacc.c. */ #line 362 "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; pg_query-4.2.3/ext/pg_query/include/pg_query_readfuncs_defs.c0000644000004100000410000036044514510636647024543 0ustar www-datawww-data// 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 Var * _readVar(OUT_TYPE(Var, Var) msg); static Param * _readParam(OUT_TYPE(Param, Param) msg); static Aggref * _readAggref(OUT_TYPE(Aggref, Aggref) msg); static GroupingFunc * _readGroupingFunc(OUT_TYPE(GroupingFunc, GroupingFunc) msg); static WindowFunc * _readWindowFunc(OUT_TYPE(WindowFunc, WindowFunc) msg); static SubscriptingRef * _readSubscriptingRef(OUT_TYPE(SubscriptingRef, SubscriptingRef) msg); static FuncExpr * _readFuncExpr(OUT_TYPE(FuncExpr, FuncExpr) msg); static NamedArgExpr * _readNamedArgExpr(OUT_TYPE(NamedArgExpr, NamedArgExpr) msg); static OpExpr * _readOpExpr(OUT_TYPE(OpExpr, OpExpr) msg); static DistinctExpr * _readDistinctExpr(OUT_TYPE(DistinctExpr, DistinctExpr) msg); static NullIfExpr * _readNullIfExpr(OUT_TYPE(NullIfExpr, NullIfExpr) msg); static ScalarArrayOpExpr * _readScalarArrayOpExpr(OUT_TYPE(ScalarArrayOpExpr, ScalarArrayOpExpr) msg); static BoolExpr * _readBoolExpr(OUT_TYPE(BoolExpr, BoolExpr) msg); static SubLink * _readSubLink(OUT_TYPE(SubLink, SubLink) msg); static SubPlan * _readSubPlan(OUT_TYPE(SubPlan, SubPlan) msg); static AlternativeSubPlan * _readAlternativeSubPlan(OUT_TYPE(AlternativeSubPlan, AlternativeSubPlan) msg); static FieldSelect * _readFieldSelect(OUT_TYPE(FieldSelect, FieldSelect) msg); static FieldStore * _readFieldStore(OUT_TYPE(FieldStore, FieldStore) msg); static RelabelType * _readRelabelType(OUT_TYPE(RelabelType, RelabelType) msg); static CoerceViaIO * _readCoerceViaIO(OUT_TYPE(CoerceViaIO, CoerceViaIO) msg); static ArrayCoerceExpr * _readArrayCoerceExpr(OUT_TYPE(ArrayCoerceExpr, ArrayCoerceExpr) msg); static ConvertRowtypeExpr * _readConvertRowtypeExpr(OUT_TYPE(ConvertRowtypeExpr, ConvertRowtypeExpr) msg); static CollateExpr * _readCollateExpr(OUT_TYPE(CollateExpr, CollateExpr) msg); static CaseExpr * _readCaseExpr(OUT_TYPE(CaseExpr, CaseExpr) msg); static CaseWhen * _readCaseWhen(OUT_TYPE(CaseWhen, CaseWhen) msg); static CaseTestExpr * _readCaseTestExpr(OUT_TYPE(CaseTestExpr, CaseTestExpr) msg); static ArrayExpr * _readArrayExpr(OUT_TYPE(ArrayExpr, ArrayExpr) msg); static RowExpr * _readRowExpr(OUT_TYPE(RowExpr, RowExpr) msg); static RowCompareExpr * _readRowCompareExpr(OUT_TYPE(RowCompareExpr, RowCompareExpr) msg); static CoalesceExpr * _readCoalesceExpr(OUT_TYPE(CoalesceExpr, CoalesceExpr) msg); static MinMaxExpr * _readMinMaxExpr(OUT_TYPE(MinMaxExpr, MinMaxExpr) msg); static SQLValueFunction * _readSQLValueFunction(OUT_TYPE(SQLValueFunction, SQLValueFunction) msg); static XmlExpr * _readXmlExpr(OUT_TYPE(XmlExpr, XmlExpr) msg); static NullTest * _readNullTest(OUT_TYPE(NullTest, NullTest) msg); static BooleanTest * _readBooleanTest(OUT_TYPE(BooleanTest, BooleanTest) msg); static CoerceToDomain * _readCoerceToDomain(OUT_TYPE(CoerceToDomain, CoerceToDomain) msg); static CoerceToDomainValue * _readCoerceToDomainValue(OUT_TYPE(CoerceToDomainValue, CoerceToDomainValue) msg); static SetToDefault * _readSetToDefault(OUT_TYPE(SetToDefault, SetToDefault) msg); static CurrentOfExpr * _readCurrentOfExpr(OUT_TYPE(CurrentOfExpr, CurrentOfExpr) msg); static NextValueExpr * _readNextValueExpr(OUT_TYPE(NextValueExpr, NextValueExpr) msg); static InferenceElem * _readInferenceElem(OUT_TYPE(InferenceElem, InferenceElem) msg); static TargetEntry * _readTargetEntry(OUT_TYPE(TargetEntry, TargetEntry) msg); static RangeTblRef * _readRangeTblRef(OUT_TYPE(RangeTblRef, RangeTblRef) msg); static JoinExpr * _readJoinExpr(OUT_TYPE(JoinExpr, JoinExpr) msg); static FromExpr * _readFromExpr(OUT_TYPE(FromExpr, FromExpr) msg); static OnConflictExpr * _readOnConflictExpr(OUT_TYPE(OnConflictExpr, OnConflictExpr) msg); static IntoClause * _readIntoClause(OUT_TYPE(IntoClause, IntoClause) msg); static MergeAction * _readMergeAction(OUT_TYPE(MergeAction, MergeAction) msg); static RawStmt * _readRawStmt(OUT_TYPE(RawStmt, RawStmt) msg); static Query * _readQuery(OUT_TYPE(Query, Query) msg); static InsertStmt * _readInsertStmt(OUT_TYPE(InsertStmt, InsertStmt) msg); static DeleteStmt * _readDeleteStmt(OUT_TYPE(DeleteStmt, DeleteStmt) msg); static UpdateStmt * _readUpdateStmt(OUT_TYPE(UpdateStmt, UpdateStmt) msg); static MergeStmt * _readMergeStmt(OUT_TYPE(MergeStmt, MergeStmt) msg); static SelectStmt * _readSelectStmt(OUT_TYPE(SelectStmt, SelectStmt) msg); static ReturnStmt * _readReturnStmt(OUT_TYPE(ReturnStmt, ReturnStmt) msg); static PLAssignStmt * _readPLAssignStmt(OUT_TYPE(PLAssignStmt, PLAssignStmt) msg); static AlterTableStmt * _readAlterTableStmt(OUT_TYPE(AlterTableStmt, AlterTableStmt) msg); static AlterTableCmd * _readAlterTableCmd(OUT_TYPE(AlterTableCmd, AlterTableCmd) msg); static AlterDomainStmt * _readAlterDomainStmt(OUT_TYPE(AlterDomainStmt, AlterDomainStmt) msg); static SetOperationStmt * _readSetOperationStmt(OUT_TYPE(SetOperationStmt, SetOperationStmt) msg); static GrantStmt * _readGrantStmt(OUT_TYPE(GrantStmt, GrantStmt) msg); static GrantRoleStmt * _readGrantRoleStmt(OUT_TYPE(GrantRoleStmt, GrantRoleStmt) msg); static AlterDefaultPrivilegesStmt * _readAlterDefaultPrivilegesStmt(OUT_TYPE(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt) msg); static ClosePortalStmt * _readClosePortalStmt(OUT_TYPE(ClosePortalStmt, ClosePortalStmt) msg); static ClusterStmt * _readClusterStmt(OUT_TYPE(ClusterStmt, ClusterStmt) msg); static CopyStmt * _readCopyStmt(OUT_TYPE(CopyStmt, CopyStmt) msg); static CreateStmt * _readCreateStmt(OUT_TYPE(CreateStmt, CreateStmt) msg); static DefineStmt * _readDefineStmt(OUT_TYPE(DefineStmt, DefineStmt) msg); static DropStmt * _readDropStmt(OUT_TYPE(DropStmt, DropStmt) msg); static TruncateStmt * _readTruncateStmt(OUT_TYPE(TruncateStmt, TruncateStmt) msg); static CommentStmt * _readCommentStmt(OUT_TYPE(CommentStmt, CommentStmt) msg); static FetchStmt * _readFetchStmt(OUT_TYPE(FetchStmt, FetchStmt) msg); static IndexStmt * _readIndexStmt(OUT_TYPE(IndexStmt, IndexStmt) msg); static CreateFunctionStmt * _readCreateFunctionStmt(OUT_TYPE(CreateFunctionStmt, CreateFunctionStmt) msg); static AlterFunctionStmt * _readAlterFunctionStmt(OUT_TYPE(AlterFunctionStmt, AlterFunctionStmt) msg); static DoStmt * _readDoStmt(OUT_TYPE(DoStmt, DoStmt) msg); static RenameStmt * _readRenameStmt(OUT_TYPE(RenameStmt, RenameStmt) msg); static RuleStmt * _readRuleStmt(OUT_TYPE(RuleStmt, RuleStmt) msg); static NotifyStmt * _readNotifyStmt(OUT_TYPE(NotifyStmt, NotifyStmt) msg); static ListenStmt * _readListenStmt(OUT_TYPE(ListenStmt, ListenStmt) msg); static UnlistenStmt * _readUnlistenStmt(OUT_TYPE(UnlistenStmt, UnlistenStmt) msg); static TransactionStmt * _readTransactionStmt(OUT_TYPE(TransactionStmt, TransactionStmt) msg); static ViewStmt * _readViewStmt(OUT_TYPE(ViewStmt, ViewStmt) msg); static LoadStmt * _readLoadStmt(OUT_TYPE(LoadStmt, LoadStmt) msg); static CreateDomainStmt * _readCreateDomainStmt(OUT_TYPE(CreateDomainStmt, CreateDomainStmt) msg); static CreatedbStmt * _readCreatedbStmt(OUT_TYPE(CreatedbStmt, CreatedbStmt) msg); static DropdbStmt * _readDropdbStmt(OUT_TYPE(DropdbStmt, DropdbStmt) msg); static VacuumStmt * _readVacuumStmt(OUT_TYPE(VacuumStmt, VacuumStmt) msg); static ExplainStmt * _readExplainStmt(OUT_TYPE(ExplainStmt, ExplainStmt) msg); static CreateTableAsStmt * _readCreateTableAsStmt(OUT_TYPE(CreateTableAsStmt, CreateTableAsStmt) msg); static CreateSeqStmt * _readCreateSeqStmt(OUT_TYPE(CreateSeqStmt, CreateSeqStmt) msg); static AlterSeqStmt * _readAlterSeqStmt(OUT_TYPE(AlterSeqStmt, AlterSeqStmt) msg); static VariableSetStmt * _readVariableSetStmt(OUT_TYPE(VariableSetStmt, VariableSetStmt) msg); static VariableShowStmt * _readVariableShowStmt(OUT_TYPE(VariableShowStmt, VariableShowStmt) msg); static DiscardStmt * _readDiscardStmt(OUT_TYPE(DiscardStmt, DiscardStmt) msg); static CreateTrigStmt * _readCreateTrigStmt(OUT_TYPE(CreateTrigStmt, CreateTrigStmt) msg); static CreatePLangStmt * _readCreatePLangStmt(OUT_TYPE(CreatePLangStmt, CreatePLangStmt) msg); static CreateRoleStmt * _readCreateRoleStmt(OUT_TYPE(CreateRoleStmt, CreateRoleStmt) msg); static AlterRoleStmt * _readAlterRoleStmt(OUT_TYPE(AlterRoleStmt, AlterRoleStmt) msg); static DropRoleStmt * _readDropRoleStmt(OUT_TYPE(DropRoleStmt, DropRoleStmt) msg); static LockStmt * _readLockStmt(OUT_TYPE(LockStmt, LockStmt) msg); static ConstraintsSetStmt * _readConstraintsSetStmt(OUT_TYPE(ConstraintsSetStmt, ConstraintsSetStmt) msg); static ReindexStmt * _readReindexStmt(OUT_TYPE(ReindexStmt, ReindexStmt) msg); static CheckPointStmt * _readCheckPointStmt(OUT_TYPE(CheckPointStmt, CheckPointStmt) msg); static CreateSchemaStmt * _readCreateSchemaStmt(OUT_TYPE(CreateSchemaStmt, CreateSchemaStmt) msg); static AlterDatabaseStmt * _readAlterDatabaseStmt(OUT_TYPE(AlterDatabaseStmt, AlterDatabaseStmt) msg); static AlterDatabaseRefreshCollStmt * _readAlterDatabaseRefreshCollStmt(OUT_TYPE(AlterDatabaseRefreshCollStmt, AlterDatabaseRefreshCollStmt) msg); static AlterDatabaseSetStmt * _readAlterDatabaseSetStmt(OUT_TYPE(AlterDatabaseSetStmt, AlterDatabaseSetStmt) msg); static AlterRoleSetStmt * _readAlterRoleSetStmt(OUT_TYPE(AlterRoleSetStmt, AlterRoleSetStmt) msg); static CreateConversionStmt * _readCreateConversionStmt(OUT_TYPE(CreateConversionStmt, CreateConversionStmt) msg); static CreateCastStmt * _readCreateCastStmt(OUT_TYPE(CreateCastStmt, CreateCastStmt) msg); static CreateOpClassStmt * _readCreateOpClassStmt(OUT_TYPE(CreateOpClassStmt, CreateOpClassStmt) msg); static CreateOpFamilyStmt * _readCreateOpFamilyStmt(OUT_TYPE(CreateOpFamilyStmt, CreateOpFamilyStmt) msg); static AlterOpFamilyStmt * _readAlterOpFamilyStmt(OUT_TYPE(AlterOpFamilyStmt, AlterOpFamilyStmt) msg); static PrepareStmt * _readPrepareStmt(OUT_TYPE(PrepareStmt, PrepareStmt) msg); static ExecuteStmt * _readExecuteStmt(OUT_TYPE(ExecuteStmt, ExecuteStmt) msg); static DeallocateStmt * _readDeallocateStmt(OUT_TYPE(DeallocateStmt, DeallocateStmt) msg); static DeclareCursorStmt * _readDeclareCursorStmt(OUT_TYPE(DeclareCursorStmt, DeclareCursorStmt) msg); static CreateTableSpaceStmt * _readCreateTableSpaceStmt(OUT_TYPE(CreateTableSpaceStmt, CreateTableSpaceStmt) msg); static DropTableSpaceStmt * _readDropTableSpaceStmt(OUT_TYPE(DropTableSpaceStmt, DropTableSpaceStmt) msg); static AlterObjectDependsStmt * _readAlterObjectDependsStmt(OUT_TYPE(AlterObjectDependsStmt, AlterObjectDependsStmt) msg); static AlterObjectSchemaStmt * _readAlterObjectSchemaStmt(OUT_TYPE(AlterObjectSchemaStmt, AlterObjectSchemaStmt) msg); static AlterOwnerStmt * _readAlterOwnerStmt(OUT_TYPE(AlterOwnerStmt, AlterOwnerStmt) msg); static AlterOperatorStmt * _readAlterOperatorStmt(OUT_TYPE(AlterOperatorStmt, AlterOperatorStmt) msg); static AlterTypeStmt * _readAlterTypeStmt(OUT_TYPE(AlterTypeStmt, AlterTypeStmt) msg); static DropOwnedStmt * _readDropOwnedStmt(OUT_TYPE(DropOwnedStmt, DropOwnedStmt) msg); static ReassignOwnedStmt * _readReassignOwnedStmt(OUT_TYPE(ReassignOwnedStmt, ReassignOwnedStmt) msg); static CompositeTypeStmt * _readCompositeTypeStmt(OUT_TYPE(CompositeTypeStmt, CompositeTypeStmt) msg); static CreateEnumStmt * _readCreateEnumStmt(OUT_TYPE(CreateEnumStmt, CreateEnumStmt) msg); static CreateRangeStmt * _readCreateRangeStmt(OUT_TYPE(CreateRangeStmt, CreateRangeStmt) msg); static AlterEnumStmt * _readAlterEnumStmt(OUT_TYPE(AlterEnumStmt, AlterEnumStmt) msg); static AlterTSDictionaryStmt * _readAlterTSDictionaryStmt(OUT_TYPE(AlterTSDictionaryStmt, AlterTSDictionaryStmt) msg); static AlterTSConfigurationStmt * _readAlterTSConfigurationStmt(OUT_TYPE(AlterTSConfigurationStmt, AlterTSConfigurationStmt) msg); static CreateFdwStmt * _readCreateFdwStmt(OUT_TYPE(CreateFdwStmt, CreateFdwStmt) msg); static AlterFdwStmt * _readAlterFdwStmt(OUT_TYPE(AlterFdwStmt, AlterFdwStmt) msg); static CreateForeignServerStmt * _readCreateForeignServerStmt(OUT_TYPE(CreateForeignServerStmt, CreateForeignServerStmt) msg); static AlterForeignServerStmt * _readAlterForeignServerStmt(OUT_TYPE(AlterForeignServerStmt, AlterForeignServerStmt) msg); static CreateUserMappingStmt * _readCreateUserMappingStmt(OUT_TYPE(CreateUserMappingStmt, CreateUserMappingStmt) msg); static AlterUserMappingStmt * _readAlterUserMappingStmt(OUT_TYPE(AlterUserMappingStmt, AlterUserMappingStmt) msg); static DropUserMappingStmt * _readDropUserMappingStmt(OUT_TYPE(DropUserMappingStmt, DropUserMappingStmt) msg); static AlterTableSpaceOptionsStmt * _readAlterTableSpaceOptionsStmt(OUT_TYPE(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt) msg); static AlterTableMoveAllStmt * _readAlterTableMoveAllStmt(OUT_TYPE(AlterTableMoveAllStmt, AlterTableMoveAllStmt) msg); static SecLabelStmt * _readSecLabelStmt(OUT_TYPE(SecLabelStmt, SecLabelStmt) msg); static CreateForeignTableStmt * _readCreateForeignTableStmt(OUT_TYPE(CreateForeignTableStmt, CreateForeignTableStmt) msg); static ImportForeignSchemaStmt * _readImportForeignSchemaStmt(OUT_TYPE(ImportForeignSchemaStmt, ImportForeignSchemaStmt) msg); static CreateExtensionStmt * _readCreateExtensionStmt(OUT_TYPE(CreateExtensionStmt, CreateExtensionStmt) msg); static AlterExtensionStmt * _readAlterExtensionStmt(OUT_TYPE(AlterExtensionStmt, AlterExtensionStmt) msg); static AlterExtensionContentsStmt * _readAlterExtensionContentsStmt(OUT_TYPE(AlterExtensionContentsStmt, AlterExtensionContentsStmt) msg); static CreateEventTrigStmt * _readCreateEventTrigStmt(OUT_TYPE(CreateEventTrigStmt, CreateEventTrigStmt) msg); static AlterEventTrigStmt * _readAlterEventTrigStmt(OUT_TYPE(AlterEventTrigStmt, AlterEventTrigStmt) msg); static RefreshMatViewStmt * _readRefreshMatViewStmt(OUT_TYPE(RefreshMatViewStmt, RefreshMatViewStmt) msg); static ReplicaIdentityStmt * _readReplicaIdentityStmt(OUT_TYPE(ReplicaIdentityStmt, ReplicaIdentityStmt) msg); static AlterSystemStmt * _readAlterSystemStmt(OUT_TYPE(AlterSystemStmt, AlterSystemStmt) msg); static CreatePolicyStmt * _readCreatePolicyStmt(OUT_TYPE(CreatePolicyStmt, CreatePolicyStmt) msg); static AlterPolicyStmt * _readAlterPolicyStmt(OUT_TYPE(AlterPolicyStmt, AlterPolicyStmt) msg); static CreateTransformStmt * _readCreateTransformStmt(OUT_TYPE(CreateTransformStmt, CreateTransformStmt) msg); static CreateAmStmt * _readCreateAmStmt(OUT_TYPE(CreateAmStmt, CreateAmStmt) msg); static CreatePublicationStmt * _readCreatePublicationStmt(OUT_TYPE(CreatePublicationStmt, CreatePublicationStmt) msg); static AlterPublicationStmt * _readAlterPublicationStmt(OUT_TYPE(AlterPublicationStmt, AlterPublicationStmt) msg); static CreateSubscriptionStmt * _readCreateSubscriptionStmt(OUT_TYPE(CreateSubscriptionStmt, CreateSubscriptionStmt) msg); static AlterSubscriptionStmt * _readAlterSubscriptionStmt(OUT_TYPE(AlterSubscriptionStmt, AlterSubscriptionStmt) msg); static DropSubscriptionStmt * _readDropSubscriptionStmt(OUT_TYPE(DropSubscriptionStmt, DropSubscriptionStmt) msg); static CreateStatsStmt * _readCreateStatsStmt(OUT_TYPE(CreateStatsStmt, CreateStatsStmt) msg); static AlterCollationStmt * _readAlterCollationStmt(OUT_TYPE(AlterCollationStmt, AlterCollationStmt) msg); static CallStmt * _readCallStmt(OUT_TYPE(CallStmt, CallStmt) msg); static AlterStatsStmt * _readAlterStatsStmt(OUT_TYPE(AlterStatsStmt, AlterStatsStmt) msg); static A_Expr * _readAExpr(OUT_TYPE(A_Expr, AExpr) msg); static ColumnRef * _readColumnRef(OUT_TYPE(ColumnRef, ColumnRef) msg); static ParamRef * _readParamRef(OUT_TYPE(ParamRef, ParamRef) msg); static FuncCall * _readFuncCall(OUT_TYPE(FuncCall, FuncCall) msg); static A_Star * _readAStar(OUT_TYPE(A_Star, AStar) msg); static A_Indices * _readAIndices(OUT_TYPE(A_Indices, AIndices) msg); static A_Indirection * _readAIndirection(OUT_TYPE(A_Indirection, AIndirection) msg); static A_ArrayExpr * _readAArrayExpr(OUT_TYPE(A_ArrayExpr, AArrayExpr) msg); static ResTarget * _readResTarget(OUT_TYPE(ResTarget, ResTarget) msg); static MultiAssignRef * _readMultiAssignRef(OUT_TYPE(MultiAssignRef, MultiAssignRef) msg); static TypeCast * _readTypeCast(OUT_TYPE(TypeCast, TypeCast) msg); static CollateClause * _readCollateClause(OUT_TYPE(CollateClause, CollateClause) msg); static SortBy * _readSortBy(OUT_TYPE(SortBy, SortBy) msg); static WindowDef * _readWindowDef(OUT_TYPE(WindowDef, WindowDef) msg); static RangeSubselect * _readRangeSubselect(OUT_TYPE(RangeSubselect, RangeSubselect) msg); static RangeFunction * _readRangeFunction(OUT_TYPE(RangeFunction, RangeFunction) msg); static RangeTableSample * _readRangeTableSample(OUT_TYPE(RangeTableSample, RangeTableSample) msg); static RangeTableFunc * _readRangeTableFunc(OUT_TYPE(RangeTableFunc, RangeTableFunc) msg); static RangeTableFuncCol * _readRangeTableFuncCol(OUT_TYPE(RangeTableFuncCol, RangeTableFuncCol) msg); static TypeName * _readTypeName(OUT_TYPE(TypeName, TypeName) msg); static ColumnDef * _readColumnDef(OUT_TYPE(ColumnDef, ColumnDef) msg); static IndexElem * _readIndexElem(OUT_TYPE(IndexElem, IndexElem) msg); static StatsElem * _readStatsElem(OUT_TYPE(StatsElem, StatsElem) msg); static Constraint * _readConstraint(OUT_TYPE(Constraint, Constraint) msg); static DefElem * _readDefElem(OUT_TYPE(DefElem, DefElem) msg); static RangeTblEntry * _readRangeTblEntry(OUT_TYPE(RangeTblEntry, RangeTblEntry) msg); static RangeTblFunction * _readRangeTblFunction(OUT_TYPE(RangeTblFunction, RangeTblFunction) msg); static TableSampleClause * _readTableSampleClause(OUT_TYPE(TableSampleClause, TableSampleClause) msg); static WithCheckOption * _readWithCheckOption(OUT_TYPE(WithCheckOption, WithCheckOption) msg); static SortGroupClause * _readSortGroupClause(OUT_TYPE(SortGroupClause, SortGroupClause) msg); static GroupingSet * _readGroupingSet(OUT_TYPE(GroupingSet, GroupingSet) msg); static WindowClause * _readWindowClause(OUT_TYPE(WindowClause, WindowClause) msg); static ObjectWithArgs * _readObjectWithArgs(OUT_TYPE(ObjectWithArgs, ObjectWithArgs) msg); static AccessPriv * _readAccessPriv(OUT_TYPE(AccessPriv, AccessPriv) msg); static CreateOpClassItem * _readCreateOpClassItem(OUT_TYPE(CreateOpClassItem, CreateOpClassItem) msg); static TableLikeClause * _readTableLikeClause(OUT_TYPE(TableLikeClause, TableLikeClause) msg); static FunctionParameter * _readFunctionParameter(OUT_TYPE(FunctionParameter, FunctionParameter) msg); static LockingClause * _readLockingClause(OUT_TYPE(LockingClause, LockingClause) msg); static RowMarkClause * _readRowMarkClause(OUT_TYPE(RowMarkClause, RowMarkClause) msg); static XmlSerialize * _readXmlSerialize(OUT_TYPE(XmlSerialize, XmlSerialize) msg); static WithClause * _readWithClause(OUT_TYPE(WithClause, WithClause) msg); static InferClause * _readInferClause(OUT_TYPE(InferClause, InferClause) msg); static OnConflictClause * _readOnConflictClause(OUT_TYPE(OnConflictClause, OnConflictClause) msg); static 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 RoleSpec * _readRoleSpec(OUT_TYPE(RoleSpec, RoleSpec) msg); static TriggerTransition * _readTriggerTransition(OUT_TYPE(TriggerTransition, TriggerTransition) msg); static PartitionElem * _readPartitionElem(OUT_TYPE(PartitionElem, PartitionElem) msg); static PartitionSpec * _readPartitionSpec(OUT_TYPE(PartitionSpec, PartitionSpec) msg); static PartitionBoundSpec * _readPartitionBoundSpec(OUT_TYPE(PartitionBoundSpec, PartitionBoundSpec) msg); static PartitionRangeDatum * _readPartitionRangeDatum(OUT_TYPE(PartitionRangeDatum, PartitionRangeDatum) msg); static PartitionCmd * _readPartitionCmd(OUT_TYPE(PartitionCmd, PartitionCmd) msg); static VacuumRelation * _readVacuumRelation(OUT_TYPE(VacuumRelation, VacuumRelation) msg); static PublicationObjSpec * _readPublicationObjSpec(OUT_TYPE(PublicationObjSpec, PublicationObjSpec) msg); static PublicationTable * _readPublicationTable(OUT_TYPE(PublicationTable, PublicationTable) msg); static InlineCodeBlock * _readInlineCodeBlock(OUT_TYPE(InlineCodeBlock, InlineCodeBlock) msg); static CallContext * _readCallContext(OUT_TYPE(CallContext, CallContext) msg); static Alias * _readAlias(OUT_TYPE(Alias, Alias) msg) { Alias *node = makeNode(Alias); READ_STRING_FIELD(aliasname, aliasname, aliasname); READ_LIST_FIELD(colnames, colnames, colnames); return node; } static RangeVar * _readRangeVar(OUT_TYPE(RangeVar, RangeVar) msg) { RangeVar *node = makeNode(RangeVar); READ_STRING_FIELD(catalogname, catalogname, catalogname); READ_STRING_FIELD(schemaname, schemaname, schemaname); READ_STRING_FIELD(relname, relname, relname); READ_BOOL_FIELD(inh, inh, inh); READ_CHAR_FIELD(relpersistence, relpersistence, relpersistence); READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); READ_INT_FIELD(location, location, location); return node; } static TableFunc * _readTableFunc(OUT_TYPE(TableFunc, TableFunc) msg) { TableFunc *node = makeNode(TableFunc); READ_LIST_FIELD(ns_uris, ns_uris, ns_uris); READ_LIST_FIELD(ns_names, ns_names, ns_names); READ_NODE_PTR_FIELD(docexpr, docexpr, docexpr); READ_NODE_PTR_FIELD(rowexpr, rowexpr, rowexpr); READ_LIST_FIELD(colnames, colnames, colnames); READ_LIST_FIELD(coltypes, coltypes, coltypes); READ_LIST_FIELD(coltypmods, coltypmods, coltypmods); READ_LIST_FIELD(colcollations, colcollations, colcollations); READ_LIST_FIELD(colexprs, colexprs, colexprs); READ_LIST_FIELD(coldefexprs, coldefexprs, coldefexprs); READ_BITMAPSET_FIELD(notnulls, notnulls, notnulls); READ_INT_FIELD(ordinalitycol, ordinalitycol, ordinalitycol); READ_INT_FIELD(location, location, location); return node; } static 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_UINT_FIELD(varlevelsup, varlevelsup, varlevelsup); READ_UINT_FIELD(varnosyn, varnosyn, varnosyn); READ_INT_FIELD(varattnosyn, varattnosyn, varattnosyn); READ_INT_FIELD(location, location, location); return node; } static Param * _readParam(OUT_TYPE(Param, Param) msg) { Param *node = makeNode(Param); READ_ENUM_FIELD(ParamKind, paramkind, paramkind, paramkind); READ_INT_FIELD(paramid, paramid, paramid); READ_UINT_FIELD(paramtype, paramtype, paramtype); READ_INT_FIELD(paramtypmod, paramtypmod, paramtypmod); READ_UINT_FIELD(paramcollid, paramcollid, paramcollid); READ_INT_FIELD(location, location, location); return node; } static Aggref * _readAggref(OUT_TYPE(Aggref, Aggref) msg) { Aggref *node = makeNode(Aggref); READ_UINT_FIELD(aggfnoid, aggfnoid, aggfnoid); READ_UINT_FIELD(aggtype, aggtype, aggtype); READ_UINT_FIELD(aggcollid, aggcollid, aggcollid); READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); READ_UINT_FIELD(aggtranstype, aggtranstype, aggtranstype); READ_LIST_FIELD(aggargtypes, aggargtypes, aggargtypes); READ_LIST_FIELD(aggdirectargs, aggdirectargs, aggdirectargs); READ_LIST_FIELD(args, args, args); READ_LIST_FIELD(aggorder, aggorder, aggorder); READ_LIST_FIELD(aggdistinct, aggdistinct, aggdistinct); READ_EXPR_PTR_FIELD(aggfilter, aggfilter, aggfilter); READ_BOOL_FIELD(aggstar, aggstar, aggstar); READ_BOOL_FIELD(aggvariadic, aggvariadic, aggvariadic); READ_CHAR_FIELD(aggkind, aggkind, aggkind); READ_UINT_FIELD(agglevelsup, agglevelsup, agglevelsup); READ_ENUM_FIELD(AggSplit, aggsplit, aggsplit, aggsplit); READ_INT_FIELD(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_LIST_FIELD(cols, cols, cols); READ_UINT_FIELD(agglevelsup, agglevelsup, agglevelsup); READ_INT_FIELD(location, location, location); return node; } static WindowFunc * _readWindowFunc(OUT_TYPE(WindowFunc, WindowFunc) msg) { WindowFunc *node = makeNode(WindowFunc); READ_UINT_FIELD(winfnoid, winfnoid, winfnoid); READ_UINT_FIELD(wintype, wintype, wintype); READ_UINT_FIELD(wincollid, wincollid, wincollid); READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); READ_LIST_FIELD(args, args, args); READ_EXPR_PTR_FIELD(aggfilter, aggfilter, aggfilter); READ_UINT_FIELD(winref, winref, winref); READ_BOOL_FIELD(winstar, winstar, winstar); READ_BOOL_FIELD(winagg, winagg, winagg); READ_INT_FIELD(location, location, location); return node; } static SubscriptingRef * _readSubscriptingRef(OUT_TYPE(SubscriptingRef, SubscriptingRef) msg) { SubscriptingRef *node = makeNode(SubscriptingRef); READ_UINT_FIELD(refcontainertype, refcontainertype, refcontainertype); READ_UINT_FIELD(refelemtype, refelemtype, refelemtype); READ_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_EXPR_PTR_FIELD(refexpr, refexpr, refexpr); READ_EXPR_PTR_FIELD(refassgnexpr, refassgnexpr, refassgnexpr); return node; } static FuncExpr * _readFuncExpr(OUT_TYPE(FuncExpr, FuncExpr) msg) { FuncExpr *node = makeNode(FuncExpr); READ_UINT_FIELD(funcid, funcid, funcid); READ_UINT_FIELD(funcresulttype, funcresulttype, funcresulttype); READ_BOOL_FIELD(funcretset, funcretset, funcretset); READ_BOOL_FIELD(funcvariadic, funcvariadic, funcvariadic); READ_ENUM_FIELD(CoercionForm, funcformat, funcformat, funcformat); READ_UINT_FIELD(funccollid, funccollid, funccollid); READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); READ_LIST_FIELD(args, args, args); READ_INT_FIELD(location, location, location); return node; } static NamedArgExpr * _readNamedArgExpr(OUT_TYPE(NamedArgExpr, NamedArgExpr) msg) { NamedArgExpr *node = makeNode(NamedArgExpr); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_STRING_FIELD(name, name, name); READ_INT_FIELD(argnumber, argnumber, argnumber); READ_INT_FIELD(location, location, location); return node; } static OpExpr * _readOpExpr(OUT_TYPE(OpExpr, OpExpr) msg) { OpExpr *node = makeNode(OpExpr); READ_UINT_FIELD(opno, opno, opno); READ_UINT_FIELD(opfuncid, opfuncid, opfuncid); READ_UINT_FIELD(opresulttype, opresulttype, opresulttype); READ_BOOL_FIELD(opretset, opretset, opretset); READ_UINT_FIELD(opcollid, opcollid, opcollid); READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); READ_LIST_FIELD(args, args, args); READ_INT_FIELD(location, location, location); return node; } static DistinctExpr * _readDistinctExpr(OUT_TYPE(DistinctExpr, DistinctExpr) msg) { DistinctExpr *node = makeNode(DistinctExpr); READ_UINT_FIELD(opno, opno, opno); READ_UINT_FIELD(opfuncid, opfuncid, opfuncid); READ_UINT_FIELD(opresulttype, opresulttype, opresulttype); READ_BOOL_FIELD(opretset, opretset, opretset); READ_UINT_FIELD(opcollid, opcollid, opcollid); READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); READ_LIST_FIELD(args, args, args); READ_INT_FIELD(location, location, location); return node; } static NullIfExpr * _readNullIfExpr(OUT_TYPE(NullIfExpr, NullIfExpr) msg) { NullIfExpr *node = makeNode(NullIfExpr); READ_UINT_FIELD(opno, opno, opno); READ_UINT_FIELD(opfuncid, opfuncid, opfuncid); READ_UINT_FIELD(opresulttype, opresulttype, opresulttype); READ_BOOL_FIELD(opretset, opretset, opretset); READ_UINT_FIELD(opcollid, opcollid, opcollid); READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); READ_LIST_FIELD(args, args, args); READ_INT_FIELD(location, location, location); return node; } static ScalarArrayOpExpr * _readScalarArrayOpExpr(OUT_TYPE(ScalarArrayOpExpr, ScalarArrayOpExpr) msg) { ScalarArrayOpExpr *node = makeNode(ScalarArrayOpExpr); READ_UINT_FIELD(opno, opno, opno); READ_UINT_FIELD(opfuncid, opfuncid, opfuncid); READ_UINT_FIELD(hashfuncid, hashfuncid, hashfuncid); READ_UINT_FIELD(negfuncid, negfuncid, negfuncid); READ_BOOL_FIELD(use_or, useOr, useOr); READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); READ_LIST_FIELD(args, args, args); READ_INT_FIELD(location, location, location); return node; } static BoolExpr * _readBoolExpr(OUT_TYPE(BoolExpr, BoolExpr) msg) { BoolExpr *node = makeNode(BoolExpr); READ_ENUM_FIELD(BoolExprType, boolop, boolop, boolop); READ_LIST_FIELD(args, args, args); READ_INT_FIELD(location, location, location); return node; } static SubLink * _readSubLink(OUT_TYPE(SubLink, SubLink) msg) { SubLink *node = makeNode(SubLink); READ_ENUM_FIELD(SubLinkType, sub_link_type, subLinkType, subLinkType); READ_INT_FIELD(sub_link_id, subLinkId, subLinkId); READ_NODE_PTR_FIELD(testexpr, testexpr, testexpr); READ_LIST_FIELD(oper_name, operName, operName); READ_NODE_PTR_FIELD(subselect, subselect, subselect); READ_INT_FIELD(location, location, location); return node; } static SubPlan * _readSubPlan(OUT_TYPE(SubPlan, SubPlan) msg) { SubPlan *node = makeNode(SubPlan); READ_ENUM_FIELD(SubLinkType, sub_link_type, subLinkType, subLinkType); READ_NODE_PTR_FIELD(testexpr, testexpr, testexpr); READ_LIST_FIELD(param_ids, paramIds, paramIds); READ_INT_FIELD(plan_id, plan_id, plan_id); READ_STRING_FIELD(plan_name, plan_name, plan_name); READ_UINT_FIELD(first_col_type, firstColType, firstColType); READ_INT_FIELD(first_col_typmod, firstColTypmod, firstColTypmod); READ_UINT_FIELD(first_col_collation, firstColCollation, firstColCollation); READ_BOOL_FIELD(use_hash_table, useHashTable, useHashTable); READ_BOOL_FIELD(unknown_eq_false, unknownEqFalse, unknownEqFalse); READ_BOOL_FIELD(parallel_safe, parallel_safe, parallel_safe); READ_LIST_FIELD(set_param, setParam, setParam); READ_LIST_FIELD(par_param, parParam, parParam); READ_LIST_FIELD(args, args, args); READ_FLOAT_FIELD(startup_cost, startup_cost, startup_cost); READ_FLOAT_FIELD(per_call_cost, per_call_cost, per_call_cost); return node; } static AlternativeSubPlan * _readAlternativeSubPlan(OUT_TYPE(AlternativeSubPlan, AlternativeSubPlan) msg) { AlternativeSubPlan *node = makeNode(AlternativeSubPlan); READ_LIST_FIELD(subplans, subplans, subplans); return node; } static FieldSelect * _readFieldSelect(OUT_TYPE(FieldSelect, FieldSelect) msg) { FieldSelect *node = makeNode(FieldSelect); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_INT_FIELD(fieldnum, fieldnum, fieldnum); READ_UINT_FIELD(resulttype, resulttype, resulttype); READ_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); READ_UINT_FIELD(resultcollid, resultcollid, resultcollid); return node; } static FieldStore * _readFieldStore(OUT_TYPE(FieldStore, FieldStore) msg) { FieldStore *node = makeNode(FieldStore); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_LIST_FIELD(newvals, newvals, newvals); READ_LIST_FIELD(fieldnums, fieldnums, fieldnums); READ_UINT_FIELD(resulttype, resulttype, resulttype); return node; } static RelabelType * _readRelabelType(OUT_TYPE(RelabelType, RelabelType) msg) { RelabelType *node = makeNode(RelabelType); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_UINT_FIELD(resulttype, resulttype, resulttype); READ_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); READ_UINT_FIELD(resultcollid, resultcollid, resultcollid); READ_ENUM_FIELD(CoercionForm, relabelformat, relabelformat, relabelformat); READ_INT_FIELD(location, location, location); return node; } static CoerceViaIO * _readCoerceViaIO(OUT_TYPE(CoerceViaIO, CoerceViaIO) msg) { CoerceViaIO *node = makeNode(CoerceViaIO); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_UINT_FIELD(resulttype, resulttype, resulttype); READ_UINT_FIELD(resultcollid, resultcollid, resultcollid); READ_ENUM_FIELD(CoercionForm, coerceformat, coerceformat, coerceformat); READ_INT_FIELD(location, location, location); return node; } static ArrayCoerceExpr * _readArrayCoerceExpr(OUT_TYPE(ArrayCoerceExpr, ArrayCoerceExpr) msg) { ArrayCoerceExpr *node = makeNode(ArrayCoerceExpr); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_EXPR_PTR_FIELD(elemexpr, elemexpr, elemexpr); READ_UINT_FIELD(resulttype, resulttype, resulttype); READ_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); READ_UINT_FIELD(resultcollid, resultcollid, resultcollid); READ_ENUM_FIELD(CoercionForm, coerceformat, coerceformat, coerceformat); READ_INT_FIELD(location, location, location); return node; } static ConvertRowtypeExpr * _readConvertRowtypeExpr(OUT_TYPE(ConvertRowtypeExpr, ConvertRowtypeExpr) msg) { ConvertRowtypeExpr *node = makeNode(ConvertRowtypeExpr); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_UINT_FIELD(resulttype, resulttype, resulttype); READ_ENUM_FIELD(CoercionForm, convertformat, convertformat, convertformat); READ_INT_FIELD(location, location, location); return node; } static CollateExpr * _readCollateExpr(OUT_TYPE(CollateExpr, CollateExpr) msg) { CollateExpr *node = makeNode(CollateExpr); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_UINT_FIELD(coll_oid, collOid, collOid); READ_INT_FIELD(location, location, location); return node; } static CaseExpr * _readCaseExpr(OUT_TYPE(CaseExpr, CaseExpr) msg) { CaseExpr *node = makeNode(CaseExpr); READ_UINT_FIELD(casetype, casetype, casetype); READ_UINT_FIELD(casecollid, casecollid, casecollid); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_LIST_FIELD(args, args, args); READ_EXPR_PTR_FIELD(defresult, defresult, defresult); READ_INT_FIELD(location, location, location); return node; } static CaseWhen * _readCaseWhen(OUT_TYPE(CaseWhen, CaseWhen) msg) { CaseWhen *node = makeNode(CaseWhen); READ_EXPR_PTR_FIELD(expr, expr, expr); READ_EXPR_PTR_FIELD(result, result, result); READ_INT_FIELD(location, location, location); return node; } static CaseTestExpr * _readCaseTestExpr(OUT_TYPE(CaseTestExpr, CaseTestExpr) msg) { CaseTestExpr *node = makeNode(CaseTestExpr); READ_UINT_FIELD(type_id, typeId, typeId); READ_INT_FIELD(type_mod, typeMod, typeMod); READ_UINT_FIELD(collation, collation, collation); return node; } static ArrayExpr * _readArrayExpr(OUT_TYPE(ArrayExpr, ArrayExpr) msg) { ArrayExpr *node = makeNode(ArrayExpr); READ_UINT_FIELD(array_typeid, array_typeid, array_typeid); READ_UINT_FIELD(array_collid, array_collid, array_collid); READ_UINT_FIELD(element_typeid, element_typeid, element_typeid); READ_LIST_FIELD(elements, elements, elements); READ_BOOL_FIELD(multidims, multidims, multidims); READ_INT_FIELD(location, location, location); return node; } static RowExpr * _readRowExpr(OUT_TYPE(RowExpr, RowExpr) msg) { RowExpr *node = makeNode(RowExpr); READ_LIST_FIELD(args, args, args); READ_UINT_FIELD(row_typeid, row_typeid, row_typeid); READ_ENUM_FIELD(CoercionForm, row_format, row_format, row_format); READ_LIST_FIELD(colnames, colnames, colnames); READ_INT_FIELD(location, location, location); return node; } static RowCompareExpr * _readRowCompareExpr(OUT_TYPE(RowCompareExpr, RowCompareExpr) msg) { RowCompareExpr *node = makeNode(RowCompareExpr); READ_ENUM_FIELD(RowCompareType, rctype, rctype, rctype); READ_LIST_FIELD(opnos, opnos, opnos); READ_LIST_FIELD(opfamilies, opfamilies, opfamilies); READ_LIST_FIELD(inputcollids, inputcollids, inputcollids); READ_LIST_FIELD(largs, largs, largs); READ_LIST_FIELD(rargs, rargs, rargs); return node; } static CoalesceExpr * _readCoalesceExpr(OUT_TYPE(CoalesceExpr, CoalesceExpr) msg) { CoalesceExpr *node = makeNode(CoalesceExpr); READ_UINT_FIELD(coalescetype, coalescetype, coalescetype); READ_UINT_FIELD(coalescecollid, coalescecollid, coalescecollid); READ_LIST_FIELD(args, args, args); READ_INT_FIELD(location, location, location); return node; } static MinMaxExpr * _readMinMaxExpr(OUT_TYPE(MinMaxExpr, MinMaxExpr) msg) { MinMaxExpr *node = makeNode(MinMaxExpr); READ_UINT_FIELD(minmaxtype, minmaxtype, minmaxtype); READ_UINT_FIELD(minmaxcollid, minmaxcollid, minmaxcollid); READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); READ_ENUM_FIELD(MinMaxOp, op, op, op); READ_LIST_FIELD(args, args, args); READ_INT_FIELD(location, location, location); return node; } static SQLValueFunction * _readSQLValueFunction(OUT_TYPE(SQLValueFunction, SQLValueFunction) msg) { SQLValueFunction *node = makeNode(SQLValueFunction); READ_ENUM_FIELD(SQLValueFunctionOp, op, op, op); READ_UINT_FIELD(type, type, type); READ_INT_FIELD(typmod, typmod, typmod); READ_INT_FIELD(location, location, location); return node; } static XmlExpr * _readXmlExpr(OUT_TYPE(XmlExpr, XmlExpr) msg) { XmlExpr *node = makeNode(XmlExpr); READ_ENUM_FIELD(XmlExprOp, op, op, op); READ_STRING_FIELD(name, name, name); READ_LIST_FIELD(named_args, named_args, named_args); READ_LIST_FIELD(arg_names, arg_names, arg_names); READ_LIST_FIELD(args, args, args); READ_ENUM_FIELD(XmlOptionType, xmloption, xmloption, xmloption); READ_UINT_FIELD(type, type, type); READ_INT_FIELD(typmod, typmod, typmod); READ_INT_FIELD(location, location, location); return node; } static NullTest * _readNullTest(OUT_TYPE(NullTest, NullTest) msg) { NullTest *node = makeNode(NullTest); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_ENUM_FIELD(NullTestType, nulltesttype, nulltesttype, nulltesttype); READ_BOOL_FIELD(argisrow, argisrow, argisrow); READ_INT_FIELD(location, location, location); return node; } static BooleanTest * _readBooleanTest(OUT_TYPE(BooleanTest, BooleanTest) msg) { BooleanTest *node = makeNode(BooleanTest); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_ENUM_FIELD(BoolTestType, booltesttype, booltesttype, booltesttype); READ_INT_FIELD(location, location, location); return node; } static CoerceToDomain * _readCoerceToDomain(OUT_TYPE(CoerceToDomain, CoerceToDomain) msg) { CoerceToDomain *node = makeNode(CoerceToDomain); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_UINT_FIELD(resulttype, resulttype, resulttype); READ_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); READ_UINT_FIELD(resultcollid, resultcollid, resultcollid); READ_ENUM_FIELD(CoercionForm, coercionformat, coercionformat, coercionformat); READ_INT_FIELD(location, location, location); return node; } static CoerceToDomainValue * _readCoerceToDomainValue(OUT_TYPE(CoerceToDomainValue, CoerceToDomainValue) msg) { CoerceToDomainValue *node = makeNode(CoerceToDomainValue); READ_UINT_FIELD(type_id, typeId, typeId); READ_INT_FIELD(type_mod, typeMod, typeMod); READ_UINT_FIELD(collation, collation, collation); READ_INT_FIELD(location, location, location); return node; } static SetToDefault * _readSetToDefault(OUT_TYPE(SetToDefault, SetToDefault) msg) { SetToDefault *node = makeNode(SetToDefault); READ_UINT_FIELD(type_id, typeId, typeId); READ_INT_FIELD(type_mod, typeMod, typeMod); READ_UINT_FIELD(collation, collation, collation); READ_INT_FIELD(location, location, location); return node; } static CurrentOfExpr * _readCurrentOfExpr(OUT_TYPE(CurrentOfExpr, CurrentOfExpr) msg) { CurrentOfExpr *node = makeNode(CurrentOfExpr); READ_UINT_FIELD(cvarno, cvarno, cvarno); READ_STRING_FIELD(cursor_name, cursor_name, cursor_name); READ_INT_FIELD(cursor_param, cursor_param, cursor_param); return node; } static NextValueExpr * _readNextValueExpr(OUT_TYPE(NextValueExpr, NextValueExpr) msg) { NextValueExpr *node = makeNode(NextValueExpr); READ_UINT_FIELD(seqid, seqid, seqid); READ_UINT_FIELD(type_id, typeId, typeId); return node; } static InferenceElem * _readInferenceElem(OUT_TYPE(InferenceElem, InferenceElem) msg) { InferenceElem *node = makeNode(InferenceElem); READ_NODE_PTR_FIELD(expr, expr, expr); READ_UINT_FIELD(infercollid, infercollid, infercollid); READ_UINT_FIELD(inferopclass, inferopclass, inferopclass); return node; } static TargetEntry * _readTargetEntry(OUT_TYPE(TargetEntry, TargetEntry) msg) { TargetEntry *node = makeNode(TargetEntry); READ_EXPR_PTR_FIELD(expr, expr, expr); READ_INT_FIELD(resno, resno, resno); READ_STRING_FIELD(resname, resname, resname); READ_UINT_FIELD(ressortgroupref, ressortgroupref, ressortgroupref); READ_UINT_FIELD(resorigtbl, resorigtbl, resorigtbl); READ_INT_FIELD(resorigcol, resorigcol, resorigcol); READ_BOOL_FIELD(resjunk, resjunk, resjunk); return node; } static RangeTblRef * _readRangeTblRef(OUT_TYPE(RangeTblRef, RangeTblRef) msg) { RangeTblRef *node = makeNode(RangeTblRef); READ_INT_FIELD(rtindex, rtindex, rtindex); return node; } static JoinExpr * _readJoinExpr(OUT_TYPE(JoinExpr, JoinExpr) msg) { JoinExpr *node = makeNode(JoinExpr); READ_ENUM_FIELD(JoinType, jointype, jointype, jointype); READ_BOOL_FIELD(is_natural, isNatural, isNatural); READ_NODE_PTR_FIELD(larg, larg, larg); READ_NODE_PTR_FIELD(rarg, rarg, rarg); READ_LIST_FIELD(using_clause, usingClause, usingClause); READ_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 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 MergeAction * _readMergeAction(OUT_TYPE(MergeAction, MergeAction) msg) { MergeAction *node = makeNode(MergeAction); READ_BOOL_FIELD(matched, matched, matched); 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 RawStmt * _readRawStmt(OUT_TYPE(RawStmt, RawStmt) msg) { RawStmt *node = makeNode(RawStmt); READ_NODE_PTR_FIELD(stmt, stmt, stmt); READ_INT_FIELD(stmt_location, stmt_location, stmt_location); READ_INT_FIELD(stmt_len, stmt_len, stmt_len); return node; } static Query * _readQuery(OUT_TYPE(Query, Query) msg) { Query *node = makeNode(Query); READ_ENUM_FIELD(CmdType, command_type, commandType, commandType); READ_ENUM_FIELD(QuerySource, query_source, querySource, querySource); READ_BOOL_FIELD(can_set_tag, canSetTag, canSetTag); READ_NODE_PTR_FIELD(utility_stmt, utilityStmt, utilityStmt); READ_INT_FIELD(result_relation, resultRelation, resultRelation); READ_BOOL_FIELD(has_aggs, hasAggs, hasAggs); READ_BOOL_FIELD(has_window_funcs, hasWindowFuncs, hasWindowFuncs); READ_BOOL_FIELD(has_target_srfs, hasTargetSRFs, hasTargetSRFs); READ_BOOL_FIELD(has_sub_links, hasSubLinks, hasSubLinks); READ_BOOL_FIELD(has_distinct_on, hasDistinctOn, hasDistinctOn); READ_BOOL_FIELD(has_recursive, hasRecursive, hasRecursive); READ_BOOL_FIELD(has_modifying_cte, hasModifyingCTE, hasModifyingCTE); READ_BOOL_FIELD(has_for_update, hasForUpdate, hasForUpdate); READ_BOOL_FIELD(has_row_security, hasRowSecurity, hasRowSecurity); READ_BOOL_FIELD(is_return, isReturn, isReturn); READ_LIST_FIELD(cte_list, cteList, cteList); READ_LIST_FIELD(rtable, rtable, rtable); READ_SPECIFIC_NODE_PTR_FIELD(FromExpr, from_expr, jointree, jointree, jointree); READ_LIST_FIELD(merge_action_list, mergeActionList, mergeActionList); READ_BOOL_FIELD(merge_use_outer_join, mergeUseOuterJoin, mergeUseOuterJoin); 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 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_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 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 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 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 AlterDomainStmt * _readAlterDomainStmt(OUT_TYPE(AlterDomainStmt, AlterDomainStmt) msg) { AlterDomainStmt *node = makeNode(AlterDomainStmt); READ_CHAR_FIELD(subtype, subtype, subtype); READ_LIST_FIELD(type_name, typeName, typeName); READ_STRING_FIELD(name, name, name); READ_NODE_PTR_FIELD(def, def, def); READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static SetOperationStmt * _readSetOperationStmt(OUT_TYPE(SetOperationStmt, SetOperationStmt) msg) { SetOperationStmt *node = makeNode(SetOperationStmt); READ_ENUM_FIELD(SetOperation, op, op, op); READ_BOOL_FIELD(all, all, all); READ_NODE_PTR_FIELD(larg, larg, larg); READ_NODE_PTR_FIELD(rarg, rarg, rarg); READ_LIST_FIELD(col_types, colTypes, colTypes); READ_LIST_FIELD(col_typmods, colTypmods, colTypmods); READ_LIST_FIELD(col_collations, colCollations, colCollations); READ_LIST_FIELD(group_clauses, groupClauses, groupClauses); return node; } static GrantStmt * _readGrantStmt(OUT_TYPE(GrantStmt, GrantStmt) msg) { GrantStmt *node = makeNode(GrantStmt); READ_BOOL_FIELD(is_grant, is_grant, is_grant); READ_ENUM_FIELD(GrantTargetType, targtype, targtype, targtype); READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); READ_LIST_FIELD(objects, objects, objects); READ_LIST_FIELD(privileges, privileges, privileges); READ_LIST_FIELD(grantees, grantees, grantees); READ_BOOL_FIELD(grant_option, grant_option, grant_option); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, grantor, grantor, grantor); READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); return node; } static GrantRoleStmt * _readGrantRoleStmt(OUT_TYPE(GrantRoleStmt, GrantRoleStmt) msg) { GrantRoleStmt *node = makeNode(GrantRoleStmt); READ_LIST_FIELD(granted_roles, granted_roles, granted_roles); READ_LIST_FIELD(grantee_roles, grantee_roles, grantee_roles); READ_BOOL_FIELD(is_grant, is_grant, is_grant); READ_BOOL_FIELD(admin_opt, admin_opt, admin_opt); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, grantor, grantor, grantor); READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); return node; } static AlterDefaultPrivilegesStmt * _readAlterDefaultPrivilegesStmt(OUT_TYPE(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt) msg) { AlterDefaultPrivilegesStmt *node = makeNode(AlterDefaultPrivilegesStmt); READ_LIST_FIELD(options, options, options); READ_SPECIFIC_NODE_PTR_FIELD(GrantStmt, grant_stmt, action, action, action); return node; } static ClosePortalStmt * _readClosePortalStmt(OUT_TYPE(ClosePortalStmt, ClosePortalStmt) msg) { ClosePortalStmt *node = makeNode(ClosePortalStmt); READ_STRING_FIELD(portalname, portalname, portalname); return node; } static ClusterStmt * _readClusterStmt(OUT_TYPE(ClusterStmt, ClusterStmt) msg) { ClusterStmt *node = makeNode(ClusterStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_STRING_FIELD(indexname, indexname, indexname); READ_LIST_FIELD(params, params, params); return node; } static CopyStmt * _readCopyStmt(OUT_TYPE(CopyStmt, CopyStmt) msg) { CopyStmt *node = makeNode(CopyStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_NODE_PTR_FIELD(query, query, query); READ_LIST_FIELD(attlist, attlist, attlist); READ_BOOL_FIELD(is_from, is_from, is_from); READ_BOOL_FIELD(is_program, is_program, is_program); READ_STRING_FIELD(filename, filename, filename); READ_LIST_FIELD(options, options, options); READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); return node; } static CreateStmt * _readCreateStmt(OUT_TYPE(CreateStmt, CreateStmt) msg) { CreateStmt *node = makeNode(CreateStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_LIST_FIELD(table_elts, tableElts, tableElts); READ_LIST_FIELD(inh_relations, inhRelations, inhRelations); READ_SPECIFIC_NODE_PTR_FIELD(PartitionBoundSpec, partition_bound_spec, partbound, partbound, partbound); READ_SPECIFIC_NODE_PTR_FIELD(PartitionSpec, partition_spec, partspec, partspec, partspec); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, of_typename, ofTypename, ofTypename); READ_LIST_FIELD(constraints, constraints, constraints); READ_LIST_FIELD(options, options, options); READ_ENUM_FIELD(OnCommitAction, oncommit, oncommit, oncommit); READ_STRING_FIELD(tablespacename, tablespacename, tablespacename); READ_STRING_FIELD(access_method, accessMethod, accessMethod); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); return node; } static DefineStmt * _readDefineStmt(OUT_TYPE(DefineStmt, DefineStmt) msg) { DefineStmt *node = makeNode(DefineStmt); READ_ENUM_FIELD(ObjectType, kind, kind, kind); READ_BOOL_FIELD(oldstyle, oldstyle, oldstyle); READ_LIST_FIELD(defnames, defnames, defnames); READ_LIST_FIELD(args, args, args); READ_LIST_FIELD(definition, definition, definition); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); READ_BOOL_FIELD(replace, replace, replace); return node; } static DropStmt * _readDropStmt(OUT_TYPE(DropStmt, DropStmt) msg) { DropStmt *node = makeNode(DropStmt); READ_LIST_FIELD(objects, objects, objects); READ_ENUM_FIELD(ObjectType, remove_type, removeType, removeType); READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); READ_BOOL_FIELD(concurrent, concurrent, concurrent); return node; } static TruncateStmt * _readTruncateStmt(OUT_TYPE(TruncateStmt, TruncateStmt) msg) { TruncateStmt *node = makeNode(TruncateStmt); READ_LIST_FIELD(relations, relations, relations); READ_BOOL_FIELD(restart_seqs, restart_seqs, restart_seqs); READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); return node; } static CommentStmt * _readCommentStmt(OUT_TYPE(CommentStmt, CommentStmt) msg) { CommentStmt *node = makeNode(CommentStmt); READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); READ_NODE_PTR_FIELD(object, object, object); READ_STRING_FIELD(comment, comment, comment); return node; } static FetchStmt * _readFetchStmt(OUT_TYPE(FetchStmt, FetchStmt) msg) { FetchStmt *node = makeNode(FetchStmt); READ_ENUM_FIELD(FetchDirection, direction, direction, direction); READ_LONG_FIELD(how_many, howMany, howMany); READ_STRING_FIELD(portalname, portalname, portalname); READ_BOOL_FIELD(ismove, ismove, ismove); return node; } static IndexStmt * _readIndexStmt(OUT_TYPE(IndexStmt, IndexStmt) msg) { IndexStmt *node = makeNode(IndexStmt); READ_STRING_FIELD(idxname, idxname, idxname); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_STRING_FIELD(access_method, accessMethod, accessMethod); READ_STRING_FIELD(table_space, tableSpace, tableSpace); READ_LIST_FIELD(index_params, indexParams, indexParams); READ_LIST_FIELD(index_including_params, indexIncludingParams, indexIncludingParams); READ_LIST_FIELD(options, options, options); READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); READ_LIST_FIELD(exclude_op_names, excludeOpNames, excludeOpNames); READ_STRING_FIELD(idxcomment, idxcomment, idxcomment); READ_UINT_FIELD(index_oid, indexOid, indexOid); READ_UINT_FIELD(old_node, oldNode, oldNode); READ_UINT_FIELD(old_create_subid, oldCreateSubid, oldCreateSubid); READ_UINT_FIELD(old_first_relfilenode_subid, oldFirstRelfilenodeSubid, oldFirstRelfilenodeSubid); READ_BOOL_FIELD(unique, unique, unique); READ_BOOL_FIELD(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 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 AlterFunctionStmt * _readAlterFunctionStmt(OUT_TYPE(AlterFunctionStmt, AlterFunctionStmt) msg) { AlterFunctionStmt *node = makeNode(AlterFunctionStmt); READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); READ_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, func, func, func); READ_LIST_FIELD(actions, actions, actions); return node; } static DoStmt * _readDoStmt(OUT_TYPE(DoStmt, DoStmt) msg) { DoStmt *node = makeNode(DoStmt); READ_LIST_FIELD(args, args, args); return node; } static RenameStmt * _readRenameStmt(OUT_TYPE(RenameStmt, RenameStmt) msg) { RenameStmt *node = makeNode(RenameStmt); READ_ENUM_FIELD(ObjectType, rename_type, renameType, renameType); READ_ENUM_FIELD(ObjectType, relation_type, relationType, relationType); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_NODE_PTR_FIELD(object, object, object); READ_STRING_FIELD(subname, subname, subname); READ_STRING_FIELD(newname, newname, newname); READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static RuleStmt * _readRuleStmt(OUT_TYPE(RuleStmt, RuleStmt) msg) { RuleStmt *node = makeNode(RuleStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_STRING_FIELD(rulename, rulename, rulename); READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); READ_ENUM_FIELD(CmdType, event, event, event); READ_BOOL_FIELD(instead, instead, instead); READ_LIST_FIELD(actions, actions, actions); READ_BOOL_FIELD(replace, replace, replace); return node; } static NotifyStmt * _readNotifyStmt(OUT_TYPE(NotifyStmt, NotifyStmt) msg) { NotifyStmt *node = makeNode(NotifyStmt); READ_STRING_FIELD(conditionname, conditionname, conditionname); READ_STRING_FIELD(payload, payload, payload); return node; } static ListenStmt * _readListenStmt(OUT_TYPE(ListenStmt, ListenStmt) msg) { ListenStmt *node = makeNode(ListenStmt); READ_STRING_FIELD(conditionname, conditionname, conditionname); return node; } static UnlistenStmt * _readUnlistenStmt(OUT_TYPE(UnlistenStmt, UnlistenStmt) msg) { UnlistenStmt *node = makeNode(UnlistenStmt); READ_STRING_FIELD(conditionname, conditionname, conditionname); return node; } static TransactionStmt * _readTransactionStmt(OUT_TYPE(TransactionStmt, TransactionStmt) msg) { TransactionStmt *node = makeNode(TransactionStmt); READ_ENUM_FIELD(TransactionStmtKind, kind, kind, kind); READ_LIST_FIELD(options, options, options); READ_STRING_FIELD(savepoint_name, savepoint_name, savepoint_name); READ_STRING_FIELD(gid, gid, gid); READ_BOOL_FIELD(chain, chain, chain); return node; } static ViewStmt * _readViewStmt(OUT_TYPE(ViewStmt, ViewStmt) msg) { ViewStmt *node = makeNode(ViewStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, view, view, view); READ_LIST_FIELD(aliases, aliases, aliases); READ_NODE_PTR_FIELD(query, query, query); READ_BOOL_FIELD(replace, replace, replace); READ_LIST_FIELD(options, options, options); READ_ENUM_FIELD(ViewCheckOption, with_check_option, withCheckOption, withCheckOption); return node; } static LoadStmt * _readLoadStmt(OUT_TYPE(LoadStmt, LoadStmt) msg) { LoadStmt *node = makeNode(LoadStmt); READ_STRING_FIELD(filename, filename, filename); return node; } static CreateDomainStmt * _readCreateDomainStmt(OUT_TYPE(CreateDomainStmt, CreateDomainStmt) msg) { CreateDomainStmt *node = makeNode(CreateDomainStmt); READ_LIST_FIELD(domainname, domainname, domainname); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); READ_SPECIFIC_NODE_PTR_FIELD(CollateClause, collate_clause, coll_clause, collClause, collClause); READ_LIST_FIELD(constraints, constraints, constraints); return node; } static CreatedbStmt * _readCreatedbStmt(OUT_TYPE(CreatedbStmt, CreatedbStmt) msg) { CreatedbStmt *node = makeNode(CreatedbStmt); READ_STRING_FIELD(dbname, dbname, dbname); READ_LIST_FIELD(options, options, options); return node; } static DropdbStmt * _readDropdbStmt(OUT_TYPE(DropdbStmt, DropdbStmt) msg) { DropdbStmt *node = makeNode(DropdbStmt); READ_STRING_FIELD(dbname, dbname, dbname); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); READ_LIST_FIELD(options, options, options); return node; } static VacuumStmt * _readVacuumStmt(OUT_TYPE(VacuumStmt, VacuumStmt) msg) { VacuumStmt *node = makeNode(VacuumStmt); READ_LIST_FIELD(options, options, options); READ_LIST_FIELD(rels, rels, rels); READ_BOOL_FIELD(is_vacuumcmd, is_vacuumcmd, is_vacuumcmd); return node; } static ExplainStmt * _readExplainStmt(OUT_TYPE(ExplainStmt, ExplainStmt) msg) { ExplainStmt *node = makeNode(ExplainStmt); READ_NODE_PTR_FIELD(query, query, query); READ_LIST_FIELD(options, options, options); return node; } static CreateTableAsStmt * _readCreateTableAsStmt(OUT_TYPE(CreateTableAsStmt, CreateTableAsStmt) msg) { CreateTableAsStmt *node = makeNode(CreateTableAsStmt); READ_NODE_PTR_FIELD(query, query, query); READ_SPECIFIC_NODE_PTR_FIELD(IntoClause, into_clause, into, into, into); READ_ENUM_FIELD(ObjectType, 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 CreateSeqStmt * _readCreateSeqStmt(OUT_TYPE(CreateSeqStmt, CreateSeqStmt) msg) { CreateSeqStmt *node = makeNode(CreateSeqStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, sequence, sequence, sequence); READ_LIST_FIELD(options, options, options); READ_UINT_FIELD(owner_id, ownerId, ownerId); READ_BOOL_FIELD(for_identity, for_identity, for_identity); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); return node; } static AlterSeqStmt * _readAlterSeqStmt(OUT_TYPE(AlterSeqStmt, AlterSeqStmt) msg) { AlterSeqStmt *node = makeNode(AlterSeqStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, sequence, sequence, sequence); READ_LIST_FIELD(options, options, options); READ_BOOL_FIELD(for_identity, for_identity, for_identity); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static VariableSetStmt * _readVariableSetStmt(OUT_TYPE(VariableSetStmt, VariableSetStmt) msg) { VariableSetStmt *node = makeNode(VariableSetStmt); READ_ENUM_FIELD(VariableSetKind, kind, kind, kind); READ_STRING_FIELD(name, name, name); READ_LIST_FIELD(args, args, args); READ_BOOL_FIELD(is_local, is_local, is_local); return node; } static VariableShowStmt * _readVariableShowStmt(OUT_TYPE(VariableShowStmt, VariableShowStmt) msg) { VariableShowStmt *node = makeNode(VariableShowStmt); READ_STRING_FIELD(name, name, name); return node; } static DiscardStmt * _readDiscardStmt(OUT_TYPE(DiscardStmt, DiscardStmt) msg) { DiscardStmt *node = makeNode(DiscardStmt); READ_ENUM_FIELD(DiscardMode, target, target, target); return node; } static CreateTrigStmt * _readCreateTrigStmt(OUT_TYPE(CreateTrigStmt, CreateTrigStmt) msg) { CreateTrigStmt *node = makeNode(CreateTrigStmt); READ_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 CreatePLangStmt * _readCreatePLangStmt(OUT_TYPE(CreatePLangStmt, CreatePLangStmt) msg) { CreatePLangStmt *node = makeNode(CreatePLangStmt); READ_BOOL_FIELD(replace, replace, replace); READ_STRING_FIELD(plname, plname, plname); READ_LIST_FIELD(plhandler, plhandler, plhandler); READ_LIST_FIELD(plinline, plinline, plinline); READ_LIST_FIELD(plvalidator, plvalidator, plvalidator); READ_BOOL_FIELD(pltrusted, pltrusted, pltrusted); return node; } static CreateRoleStmt * _readCreateRoleStmt(OUT_TYPE(CreateRoleStmt, CreateRoleStmt) msg) { CreateRoleStmt *node = makeNode(CreateRoleStmt); READ_ENUM_FIELD(RoleStmtType, stmt_type, stmt_type, stmt_type); READ_STRING_FIELD(role, role, role); READ_LIST_FIELD(options, options, options); return node; } static AlterRoleStmt * _readAlterRoleStmt(OUT_TYPE(AlterRoleStmt, AlterRoleStmt) msg) { AlterRoleStmt *node = makeNode(AlterRoleStmt); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, role, role, role); READ_LIST_FIELD(options, options, options); READ_INT_FIELD(action, action, action); return node; } static DropRoleStmt * _readDropRoleStmt(OUT_TYPE(DropRoleStmt, DropRoleStmt) msg) { DropRoleStmt *node = makeNode(DropRoleStmt); READ_LIST_FIELD(roles, roles, roles); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static LockStmt * _readLockStmt(OUT_TYPE(LockStmt, LockStmt) msg) { LockStmt *node = makeNode(LockStmt); READ_LIST_FIELD(relations, relations, relations); READ_INT_FIELD(mode, mode, mode); READ_BOOL_FIELD(nowait, nowait, nowait); return node; } static ConstraintsSetStmt * _readConstraintsSetStmt(OUT_TYPE(ConstraintsSetStmt, ConstraintsSetStmt) msg) { ConstraintsSetStmt *node = makeNode(ConstraintsSetStmt); READ_LIST_FIELD(constraints, constraints, constraints); READ_BOOL_FIELD(deferred, deferred, deferred); return node; } static ReindexStmt * _readReindexStmt(OUT_TYPE(ReindexStmt, ReindexStmt) msg) { ReindexStmt *node = makeNode(ReindexStmt); READ_ENUM_FIELD(ReindexObjectType, kind, kind, kind); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_STRING_FIELD(name, name, name); READ_LIST_FIELD(params, params, params); return node; } static CheckPointStmt * _readCheckPointStmt(OUT_TYPE(CheckPointStmt, CheckPointStmt) msg) { CheckPointStmt *node = makeNode(CheckPointStmt); return node; } static CreateSchemaStmt * _readCreateSchemaStmt(OUT_TYPE(CreateSchemaStmt, CreateSchemaStmt) msg) { CreateSchemaStmt *node = makeNode(CreateSchemaStmt); READ_STRING_FIELD(schemaname, schemaname, schemaname); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, authrole, authrole, authrole); READ_LIST_FIELD(schema_elts, schemaElts, schemaElts); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); return node; } static AlterDatabaseStmt * _readAlterDatabaseStmt(OUT_TYPE(AlterDatabaseStmt, AlterDatabaseStmt) msg) { AlterDatabaseStmt *node = makeNode(AlterDatabaseStmt); READ_STRING_FIELD(dbname, dbname, dbname); READ_LIST_FIELD(options, options, options); return node; } static 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 AlterRoleSetStmt * _readAlterRoleSetStmt(OUT_TYPE(AlterRoleSetStmt, AlterRoleSetStmt) msg) { AlterRoleSetStmt *node = makeNode(AlterRoleSetStmt); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, role, role, role); READ_STRING_FIELD(database, database, database); READ_SPECIFIC_NODE_PTR_FIELD(VariableSetStmt, variable_set_stmt, setstmt, setstmt, setstmt); return node; } static CreateConversionStmt * _readCreateConversionStmt(OUT_TYPE(CreateConversionStmt, CreateConversionStmt) msg) { CreateConversionStmt *node = makeNode(CreateConversionStmt); READ_LIST_FIELD(conversion_name, conversion_name, conversion_name); READ_STRING_FIELD(for_encoding_name, for_encoding_name, for_encoding_name); READ_STRING_FIELD(to_encoding_name, to_encoding_name, to_encoding_name); READ_LIST_FIELD(func_name, func_name, func_name); READ_BOOL_FIELD(def, def, def); return node; } static CreateCastStmt * _readCreateCastStmt(OUT_TYPE(CreateCastStmt, CreateCastStmt) msg) { CreateCastStmt *node = makeNode(CreateCastStmt); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, sourcetype, sourcetype, sourcetype); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, targettype, targettype, targettype); READ_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, func, func, func); READ_ENUM_FIELD(CoercionContext, context, context, context); READ_BOOL_FIELD(inout, inout, inout); return node; } static CreateOpClassStmt * _readCreateOpClassStmt(OUT_TYPE(CreateOpClassStmt, CreateOpClassStmt) msg) { CreateOpClassStmt *node = makeNode(CreateOpClassStmt); READ_LIST_FIELD(opclassname, opclassname, opclassname); READ_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); READ_STRING_FIELD(amname, amname, amname); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, datatype, datatype, datatype); READ_LIST_FIELD(items, items, items); READ_BOOL_FIELD(is_default, isDefault, isDefault); return node; } static CreateOpFamilyStmt * _readCreateOpFamilyStmt(OUT_TYPE(CreateOpFamilyStmt, CreateOpFamilyStmt) msg) { CreateOpFamilyStmt *node = makeNode(CreateOpFamilyStmt); READ_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); READ_STRING_FIELD(amname, amname, amname); return node; } static AlterOpFamilyStmt * _readAlterOpFamilyStmt(OUT_TYPE(AlterOpFamilyStmt, AlterOpFamilyStmt) msg) { AlterOpFamilyStmt *node = makeNode(AlterOpFamilyStmt); READ_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); READ_STRING_FIELD(amname, amname, amname); READ_BOOL_FIELD(is_drop, isDrop, isDrop); READ_LIST_FIELD(items, items, items); return node; } static PrepareStmt * _readPrepareStmt(OUT_TYPE(PrepareStmt, PrepareStmt) msg) { PrepareStmt *node = makeNode(PrepareStmt); READ_STRING_FIELD(name, name, name); READ_LIST_FIELD(argtypes, argtypes, argtypes); READ_NODE_PTR_FIELD(query, query, query); return node; } static ExecuteStmt * _readExecuteStmt(OUT_TYPE(ExecuteStmt, ExecuteStmt) msg) { ExecuteStmt *node = makeNode(ExecuteStmt); READ_STRING_FIELD(name, name, name); READ_LIST_FIELD(params, params, params); return node; } static DeallocateStmt * _readDeallocateStmt(OUT_TYPE(DeallocateStmt, DeallocateStmt) msg) { DeallocateStmt *node = makeNode(DeallocateStmt); READ_STRING_FIELD(name, name, name); return node; } static DeclareCursorStmt * _readDeclareCursorStmt(OUT_TYPE(DeclareCursorStmt, DeclareCursorStmt) msg) { DeclareCursorStmt *node = makeNode(DeclareCursorStmt); READ_STRING_FIELD(portalname, portalname, portalname); READ_INT_FIELD(options, options, options); READ_NODE_PTR_FIELD(query, query, query); return node; } static CreateTableSpaceStmt * _readCreateTableSpaceStmt(OUT_TYPE(CreateTableSpaceStmt, CreateTableSpaceStmt) msg) { CreateTableSpaceStmt *node = makeNode(CreateTableSpaceStmt); READ_STRING_FIELD(tablespacename, tablespacename, tablespacename); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, owner, owner, owner); READ_STRING_FIELD(location, location, location); READ_LIST_FIELD(options, options, options); return node; } static DropTableSpaceStmt * _readDropTableSpaceStmt(OUT_TYPE(DropTableSpaceStmt, DropTableSpaceStmt) msg) { DropTableSpaceStmt *node = makeNode(DropTableSpaceStmt); READ_STRING_FIELD(tablespacename, tablespacename, tablespacename); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static AlterObjectDependsStmt * _readAlterObjectDependsStmt(OUT_TYPE(AlterObjectDependsStmt, AlterObjectDependsStmt) msg) { AlterObjectDependsStmt *node = makeNode(AlterObjectDependsStmt); READ_ENUM_FIELD(ObjectType, object_type, objectType, objectType); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_NODE_PTR_FIELD(object, object, object); READ_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 DropOwnedStmt * _readDropOwnedStmt(OUT_TYPE(DropOwnedStmt, DropOwnedStmt) msg) { DropOwnedStmt *node = makeNode(DropOwnedStmt); READ_LIST_FIELD(roles, roles, roles); READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); return node; } static ReassignOwnedStmt * _readReassignOwnedStmt(OUT_TYPE(ReassignOwnedStmt, ReassignOwnedStmt) msg) { ReassignOwnedStmt *node = makeNode(ReassignOwnedStmt); READ_LIST_FIELD(roles, roles, roles); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, newrole, newrole, newrole); return node; } static CompositeTypeStmt * _readCompositeTypeStmt(OUT_TYPE(CompositeTypeStmt, CompositeTypeStmt) msg) { CompositeTypeStmt *node = makeNode(CompositeTypeStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, typevar, typevar, typevar); READ_LIST_FIELD(coldeflist, coldeflist, coldeflist); return node; } static CreateEnumStmt * _readCreateEnumStmt(OUT_TYPE(CreateEnumStmt, CreateEnumStmt) msg) { CreateEnumStmt *node = makeNode(CreateEnumStmt); READ_LIST_FIELD(type_name, typeName, typeName); READ_LIST_FIELD(vals, vals, vals); return node; } static CreateRangeStmt * _readCreateRangeStmt(OUT_TYPE(CreateRangeStmt, CreateRangeStmt) msg) { CreateRangeStmt *node = makeNode(CreateRangeStmt); READ_LIST_FIELD(type_name, typeName, typeName); READ_LIST_FIELD(params, params, params); return node; } static AlterEnumStmt * _readAlterEnumStmt(OUT_TYPE(AlterEnumStmt, AlterEnumStmt) msg) { AlterEnumStmt *node = makeNode(AlterEnumStmt); READ_LIST_FIELD(type_name, typeName, typeName); READ_STRING_FIELD(old_val, oldVal, oldVal); READ_STRING_FIELD(new_val, newVal, newVal); READ_STRING_FIELD(new_val_neighbor, newValNeighbor, newValNeighbor); READ_BOOL_FIELD(new_val_is_after, newValIsAfter, newValIsAfter); READ_BOOL_FIELD(skip_if_new_val_exists, skipIfNewValExists, skipIfNewValExists); return node; } static AlterTSDictionaryStmt * _readAlterTSDictionaryStmt(OUT_TYPE(AlterTSDictionaryStmt, AlterTSDictionaryStmt) msg) { AlterTSDictionaryStmt *node = makeNode(AlterTSDictionaryStmt); READ_LIST_FIELD(dictname, dictname, dictname); READ_LIST_FIELD(options, options, options); return node; } static AlterTSConfigurationStmt * _readAlterTSConfigurationStmt(OUT_TYPE(AlterTSConfigurationStmt, AlterTSConfigurationStmt) msg) { AlterTSConfigurationStmt *node = makeNode(AlterTSConfigurationStmt); READ_ENUM_FIELD(AlterTSConfigType, kind, kind, kind); READ_LIST_FIELD(cfgname, cfgname, cfgname); READ_LIST_FIELD(tokentype, tokentype, tokentype); READ_LIST_FIELD(dicts, dicts, dicts); READ_BOOL_FIELD(override, override, override); READ_BOOL_FIELD(replace, replace, replace); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static CreateFdwStmt * _readCreateFdwStmt(OUT_TYPE(CreateFdwStmt, CreateFdwStmt) msg) { CreateFdwStmt *node = makeNode(CreateFdwStmt); READ_STRING_FIELD(fdwname, fdwname, fdwname); READ_LIST_FIELD(func_options, func_options, func_options); READ_LIST_FIELD(options, options, options); return node; } static AlterFdwStmt * _readAlterFdwStmt(OUT_TYPE(AlterFdwStmt, AlterFdwStmt) msg) { AlterFdwStmt *node = makeNode(AlterFdwStmt); READ_STRING_FIELD(fdwname, fdwname, fdwname); READ_LIST_FIELD(func_options, func_options, func_options); READ_LIST_FIELD(options, options, options); return node; } static CreateForeignServerStmt * _readCreateForeignServerStmt(OUT_TYPE(CreateForeignServerStmt, CreateForeignServerStmt) msg) { CreateForeignServerStmt *node = makeNode(CreateForeignServerStmt); READ_STRING_FIELD(servername, servername, servername); READ_STRING_FIELD(servertype, servertype, servertype); READ_STRING_FIELD(version, version, version); READ_STRING_FIELD(fdwname, fdwname, fdwname); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); READ_LIST_FIELD(options, options, options); return node; } static AlterForeignServerStmt * _readAlterForeignServerStmt(OUT_TYPE(AlterForeignServerStmt, AlterForeignServerStmt) msg) { AlterForeignServerStmt *node = makeNode(AlterForeignServerStmt); READ_STRING_FIELD(servername, servername, servername); READ_STRING_FIELD(version, version, version); READ_LIST_FIELD(options, options, options); READ_BOOL_FIELD(has_version, has_version, has_version); return node; } static CreateUserMappingStmt * _readCreateUserMappingStmt(OUT_TYPE(CreateUserMappingStmt, CreateUserMappingStmt) msg) { CreateUserMappingStmt *node = makeNode(CreateUserMappingStmt); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); READ_STRING_FIELD(servername, servername, servername); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); READ_LIST_FIELD(options, options, options); return node; } static AlterUserMappingStmt * _readAlterUserMappingStmt(OUT_TYPE(AlterUserMappingStmt, AlterUserMappingStmt) msg) { AlterUserMappingStmt *node = makeNode(AlterUserMappingStmt); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); READ_STRING_FIELD(servername, servername, servername); READ_LIST_FIELD(options, options, options); return node; } static DropUserMappingStmt * _readDropUserMappingStmt(OUT_TYPE(DropUserMappingStmt, DropUserMappingStmt) msg) { DropUserMappingStmt *node = makeNode(DropUserMappingStmt); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); READ_STRING_FIELD(servername, servername, servername); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static AlterTableSpaceOptionsStmt * _readAlterTableSpaceOptionsStmt(OUT_TYPE(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt) msg) { AlterTableSpaceOptionsStmt *node = makeNode(AlterTableSpaceOptionsStmt); READ_STRING_FIELD(tablespacename, tablespacename, tablespacename); READ_LIST_FIELD(options, options, options); READ_BOOL_FIELD(is_reset, isReset, isReset); return node; } static AlterTableMoveAllStmt * _readAlterTableMoveAllStmt(OUT_TYPE(AlterTableMoveAllStmt, AlterTableMoveAllStmt) msg) { AlterTableMoveAllStmt *node = makeNode(AlterTableMoveAllStmt); READ_STRING_FIELD(orig_tablespacename, orig_tablespacename, orig_tablespacename); READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); READ_LIST_FIELD(roles, roles, roles); READ_STRING_FIELD(new_tablespacename, new_tablespacename, new_tablespacename); READ_BOOL_FIELD(nowait, nowait, nowait); return node; } static SecLabelStmt * _readSecLabelStmt(OUT_TYPE(SecLabelStmt, SecLabelStmt) msg) { SecLabelStmt *node = makeNode(SecLabelStmt); READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); READ_NODE_PTR_FIELD(object, object, object); READ_STRING_FIELD(provider, provider, provider); READ_STRING_FIELD(label, label, label); return node; } static CreateForeignTableStmt * _readCreateForeignTableStmt(OUT_TYPE(CreateForeignTableStmt, CreateForeignTableStmt) msg) { CreateForeignTableStmt *node = makeNode(CreateForeignTableStmt); READ_SPECIFIC_NODE_FIELD(CreateStmt, create_stmt, base_stmt, base, base); READ_STRING_FIELD(servername, servername, servername); READ_LIST_FIELD(options, options, options); NodeSetTag(node, T_CreateForeignTableStmt); return node; } static ImportForeignSchemaStmt * _readImportForeignSchemaStmt(OUT_TYPE(ImportForeignSchemaStmt, ImportForeignSchemaStmt) msg) { ImportForeignSchemaStmt *node = makeNode(ImportForeignSchemaStmt); READ_STRING_FIELD(server_name, server_name, server_name); READ_STRING_FIELD(remote_schema, remote_schema, remote_schema); READ_STRING_FIELD(local_schema, local_schema, local_schema); READ_ENUM_FIELD(ImportForeignSchemaType, list_type, list_type, list_type); READ_LIST_FIELD(table_list, table_list, table_list); READ_LIST_FIELD(options, options, options); return node; } static CreateExtensionStmt * _readCreateExtensionStmt(OUT_TYPE(CreateExtensionStmt, CreateExtensionStmt) msg) { CreateExtensionStmt *node = makeNode(CreateExtensionStmt); READ_STRING_FIELD(extname, extname, extname); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); READ_LIST_FIELD(options, options, options); return node; } static AlterExtensionStmt * _readAlterExtensionStmt(OUT_TYPE(AlterExtensionStmt, AlterExtensionStmt) msg) { AlterExtensionStmt *node = makeNode(AlterExtensionStmt); READ_STRING_FIELD(extname, extname, extname); READ_LIST_FIELD(options, options, options); return node; } static AlterExtensionContentsStmt * _readAlterExtensionContentsStmt(OUT_TYPE(AlterExtensionContentsStmt, AlterExtensionContentsStmt) msg) { AlterExtensionContentsStmt *node = makeNode(AlterExtensionContentsStmt); READ_STRING_FIELD(extname, extname, extname); READ_INT_FIELD(action, action, action); READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); READ_NODE_PTR_FIELD(object, object, object); return node; } static CreateEventTrigStmt * _readCreateEventTrigStmt(OUT_TYPE(CreateEventTrigStmt, CreateEventTrigStmt) msg) { CreateEventTrigStmt *node = makeNode(CreateEventTrigStmt); READ_STRING_FIELD(trigname, trigname, trigname); READ_STRING_FIELD(eventname, eventname, eventname); READ_LIST_FIELD(whenclause, whenclause, whenclause); READ_LIST_FIELD(funcname, funcname, funcname); return node; } static AlterEventTrigStmt * _readAlterEventTrigStmt(OUT_TYPE(AlterEventTrigStmt, AlterEventTrigStmt) msg) { AlterEventTrigStmt *node = makeNode(AlterEventTrigStmt); READ_STRING_FIELD(trigname, trigname, trigname); READ_CHAR_FIELD(tgenabled, tgenabled, tgenabled); return node; } static RefreshMatViewStmt * _readRefreshMatViewStmt(OUT_TYPE(RefreshMatViewStmt, RefreshMatViewStmt) msg) { RefreshMatViewStmt *node = makeNode(RefreshMatViewStmt); READ_BOOL_FIELD(concurrent, concurrent, concurrent); READ_BOOL_FIELD(skip_data, skipData, skipData); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); return node; } static ReplicaIdentityStmt * _readReplicaIdentityStmt(OUT_TYPE(ReplicaIdentityStmt, ReplicaIdentityStmt) msg) { ReplicaIdentityStmt *node = makeNode(ReplicaIdentityStmt); READ_CHAR_FIELD(identity_type, identity_type, identity_type); READ_STRING_FIELD(name, name, name); return node; } static AlterSystemStmt * _readAlterSystemStmt(OUT_TYPE(AlterSystemStmt, AlterSystemStmt) msg) { AlterSystemStmt *node = makeNode(AlterSystemStmt); READ_SPECIFIC_NODE_PTR_FIELD(VariableSetStmt, variable_set_stmt, setstmt, setstmt, setstmt); return node; } static CreatePolicyStmt * _readCreatePolicyStmt(OUT_TYPE(CreatePolicyStmt, CreatePolicyStmt) msg) { CreatePolicyStmt *node = makeNode(CreatePolicyStmt); READ_STRING_FIELD(policy_name, policy_name, policy_name); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, table, table, table); READ_STRING_FIELD(cmd_name, cmd_name, cmd_name); READ_BOOL_FIELD(permissive, permissive, permissive); READ_LIST_FIELD(roles, roles, roles); READ_NODE_PTR_FIELD(qual, qual, qual); READ_NODE_PTR_FIELD(with_check, with_check, with_check); return node; } static AlterPolicyStmt * _readAlterPolicyStmt(OUT_TYPE(AlterPolicyStmt, AlterPolicyStmt) msg) { AlterPolicyStmt *node = makeNode(AlterPolicyStmt); READ_STRING_FIELD(policy_name, policy_name, policy_name); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, table, table, table); READ_LIST_FIELD(roles, roles, roles); READ_NODE_PTR_FIELD(qual, qual, qual); READ_NODE_PTR_FIELD(with_check, with_check, with_check); return node; } static CreateTransformStmt * _readCreateTransformStmt(OUT_TYPE(CreateTransformStmt, CreateTransformStmt) msg) { CreateTransformStmt *node = makeNode(CreateTransformStmt); READ_BOOL_FIELD(replace, replace, replace); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, type_name, type_name); READ_STRING_FIELD(lang, lang, lang); READ_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, fromsql, fromsql, fromsql); READ_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, tosql, tosql, tosql); return node; } static CreateAmStmt * _readCreateAmStmt(OUT_TYPE(CreateAmStmt, CreateAmStmt) msg) { CreateAmStmt *node = makeNode(CreateAmStmt); READ_STRING_FIELD(amname, amname, amname); READ_LIST_FIELD(handler_name, handler_name, handler_name); READ_CHAR_FIELD(amtype, amtype, amtype); return node; } static CreatePublicationStmt * _readCreatePublicationStmt(OUT_TYPE(CreatePublicationStmt, CreatePublicationStmt) msg) { CreatePublicationStmt *node = makeNode(CreatePublicationStmt); READ_STRING_FIELD(pubname, pubname, pubname); READ_LIST_FIELD(options, options, options); READ_LIST_FIELD(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; } 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 AlterCollationStmt * _readAlterCollationStmt(OUT_TYPE(AlterCollationStmt, AlterCollationStmt) msg) { AlterCollationStmt *node = makeNode(AlterCollationStmt); READ_LIST_FIELD(collname, collname, collname); return node; } static CallStmt * _readCallStmt(OUT_TYPE(CallStmt, CallStmt) msg) { CallStmt *node = makeNode(CallStmt); READ_SPECIFIC_NODE_PTR_FIELD(FuncCall, func_call, funccall, funccall, funccall); READ_SPECIFIC_NODE_PTR_FIELD(FuncExpr, func_expr, funcexpr, funcexpr, funcexpr); READ_LIST_FIELD(outargs, outargs, outargs); return node; } static AlterStatsStmt * _readAlterStatsStmt(OUT_TYPE(AlterStatsStmt, AlterStatsStmt) msg) { AlterStatsStmt *node = makeNode(AlterStatsStmt); READ_LIST_FIELD(defnames, defnames, defnames); READ_INT_FIELD(stxstattarget, stxstattarget, stxstattarget); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static A_Expr * _readAExpr(OUT_TYPE(A_Expr, AExpr) msg) { A_Expr *node = makeNode(A_Expr); READ_ENUM_FIELD(A_Expr_Kind, kind, kind, kind); READ_LIST_FIELD(name, name, name); READ_NODE_PTR_FIELD(lexpr, lexpr, lexpr); READ_NODE_PTR_FIELD(rexpr, rexpr, rexpr); READ_INT_FIELD(location, location, location); return node; } static ColumnRef * _readColumnRef(OUT_TYPE(ColumnRef, ColumnRef) msg) { ColumnRef *node = makeNode(ColumnRef); READ_LIST_FIELD(fields, fields, fields); READ_INT_FIELD(location, location, location); return node; } static ParamRef * _readParamRef(OUT_TYPE(ParamRef, ParamRef) msg) { ParamRef *node = makeNode(ParamRef); READ_INT_FIELD(number, number, number); READ_INT_FIELD(location, location, location); return node; } static 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 TypeCast * _readTypeCast(OUT_TYPE(TypeCast, TypeCast) msg) { TypeCast *node = makeNode(TypeCast); READ_NODE_PTR_FIELD(arg, arg, arg); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); READ_INT_FIELD(location, location, location); return node; } static CollateClause * _readCollateClause(OUT_TYPE(CollateClause, CollateClause) msg) { CollateClause *node = makeNode(CollateClause); READ_NODE_PTR_FIELD(arg, arg, arg); READ_LIST_FIELD(collname, collname, collname); READ_INT_FIELD(location, location, location); return node; } static SortBy * _readSortBy(OUT_TYPE(SortBy, SortBy) msg) { SortBy *node = makeNode(SortBy); READ_NODE_PTR_FIELD(node, node, node); READ_ENUM_FIELD(SortByDir, sortby_dir, sortby_dir, sortby_dir); READ_ENUM_FIELD(SortByNulls, sortby_nulls, sortby_nulls, sortby_nulls); READ_LIST_FIELD(use_op, useOp, useOp); READ_INT_FIELD(location, location, location); return node; } static WindowDef * _readWindowDef(OUT_TYPE(WindowDef, WindowDef) msg) { WindowDef *node = makeNode(WindowDef); READ_STRING_FIELD(name, name, name); READ_STRING_FIELD(refname, refname, refname); READ_LIST_FIELD(partition_clause, partitionClause, partitionClause); READ_LIST_FIELD(order_clause, orderClause, orderClause); READ_INT_FIELD(frame_options, frameOptions, frameOptions); READ_NODE_PTR_FIELD(start_offset, startOffset, startOffset); READ_NODE_PTR_FIELD(end_offset, endOffset, endOffset); READ_INT_FIELD(location, location, location); return node; } static RangeSubselect * _readRangeSubselect(OUT_TYPE(RangeSubselect, RangeSubselect) msg) { RangeSubselect *node = makeNode(RangeSubselect); READ_BOOL_FIELD(lateral, lateral, lateral); READ_NODE_PTR_FIELD(subquery, subquery, subquery); READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); return node; } static RangeFunction * _readRangeFunction(OUT_TYPE(RangeFunction, RangeFunction) msg) { RangeFunction *node = makeNode(RangeFunction); READ_BOOL_FIELD(lateral, lateral, lateral); READ_BOOL_FIELD(ordinality, ordinality, ordinality); READ_BOOL_FIELD(is_rowsfrom, is_rowsfrom, is_rowsfrom); READ_LIST_FIELD(functions, functions, functions); READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); READ_LIST_FIELD(coldeflist, coldeflist, coldeflist); return node; } static RangeTableSample * _readRangeTableSample(OUT_TYPE(RangeTableSample, RangeTableSample) msg) { RangeTableSample *node = makeNode(RangeTableSample); READ_NODE_PTR_FIELD(relation, relation, relation); READ_LIST_FIELD(method, method, method); READ_LIST_FIELD(args, args, args); READ_NODE_PTR_FIELD(repeatable, repeatable, repeatable); READ_INT_FIELD(location, location, location); return node; } static RangeTableFunc * _readRangeTableFunc(OUT_TYPE(RangeTableFunc, RangeTableFunc) msg) { RangeTableFunc *node = makeNode(RangeTableFunc); READ_BOOL_FIELD(lateral, lateral, lateral); READ_NODE_PTR_FIELD(docexpr, docexpr, docexpr); READ_NODE_PTR_FIELD(rowexpr, rowexpr, rowexpr); READ_LIST_FIELD(namespaces, namespaces, namespaces); READ_LIST_FIELD(columns, columns, columns); READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); READ_INT_FIELD(location, location, location); return node; } static RangeTableFuncCol * _readRangeTableFuncCol(OUT_TYPE(RangeTableFuncCol, RangeTableFuncCol) msg) { RangeTableFuncCol *node = makeNode(RangeTableFuncCol); READ_STRING_FIELD(colname, colname, colname); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); READ_BOOL_FIELD(for_ordinality, for_ordinality, for_ordinality); READ_BOOL_FIELD(is_not_null, is_not_null, is_not_null); READ_NODE_PTR_FIELD(colexpr, colexpr, colexpr); READ_NODE_PTR_FIELD(coldefexpr, coldefexpr, coldefexpr); READ_INT_FIELD(location, location, location); return node; } static TypeName * _readTypeName(OUT_TYPE(TypeName, TypeName) msg) { TypeName *node = makeNode(TypeName); READ_LIST_FIELD(names, names, names); READ_UINT_FIELD(type_oid, typeOid, typeOid); READ_BOOL_FIELD(setof, setof, setof); READ_BOOL_FIELD(pct_type, pct_type, pct_type); READ_LIST_FIELD(typmods, typmods, typmods); READ_INT_FIELD(typemod, typemod, typemod); READ_LIST_FIELD(array_bounds, arrayBounds, arrayBounds); READ_INT_FIELD(location, location, location); return node; } static ColumnDef * _readColumnDef(OUT_TYPE(ColumnDef, ColumnDef) msg) { ColumnDef *node = makeNode(ColumnDef); READ_STRING_FIELD(colname, colname, colname); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); READ_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_NODE_PTR_FIELD(raw_default, raw_default, raw_default); READ_NODE_PTR_FIELD(cooked_default, cooked_default, cooked_default); READ_CHAR_FIELD(identity, identity, identity); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, identity_sequence, identitySequence, identitySequence); READ_CHAR_FIELD(generated, generated, generated); READ_SPECIFIC_NODE_PTR_FIELD(CollateClause, collate_clause, coll_clause, collClause, collClause); READ_UINT_FIELD(coll_oid, collOid, collOid); READ_LIST_FIELD(constraints, constraints, constraints); READ_LIST_FIELD(fdwoptions, fdwoptions, fdwoptions); READ_INT_FIELD(location, location, location); return node; } static IndexElem * _readIndexElem(OUT_TYPE(IndexElem, IndexElem) msg) { IndexElem *node = makeNode(IndexElem); READ_STRING_FIELD(name, name, name); READ_NODE_PTR_FIELD(expr, expr, expr); READ_STRING_FIELD(indexcolname, indexcolname, indexcolname); READ_LIST_FIELD(collation, collation, collation); READ_LIST_FIELD(opclass, opclass, opclass); READ_LIST_FIELD(opclassopts, opclassopts, opclassopts); READ_ENUM_FIELD(SortByDir, ordering, ordering, ordering); READ_ENUM_FIELD(SortByNulls, nulls_ordering, nulls_ordering, nulls_ordering); return node; } static 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 Constraint * _readConstraint(OUT_TYPE(Constraint, Constraint) msg) { Constraint *node = makeNode(Constraint); READ_ENUM_FIELD(ConstrType, contype, contype, contype); READ_STRING_FIELD(conname, conname, conname); READ_BOOL_FIELD(deferrable, deferrable, deferrable); READ_BOOL_FIELD(initdeferred, initdeferred, initdeferred); READ_INT_FIELD(location, location, location); READ_BOOL_FIELD(is_no_inherit, is_no_inherit, is_no_inherit); READ_NODE_PTR_FIELD(raw_expr, raw_expr, raw_expr); READ_STRING_FIELD(cooked_expr, cooked_expr, cooked_expr); READ_CHAR_FIELD(generated_when, generated_when, generated_when); READ_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_BOOL_FIELD(skip_validation, skip_validation, skip_validation); READ_BOOL_FIELD(initially_valid, initially_valid, initially_valid); return node; } static DefElem * _readDefElem(OUT_TYPE(DefElem, DefElem) msg) { DefElem *node = makeNode(DefElem); READ_STRING_FIELD(defnamespace, defnamespace, defnamespace); READ_STRING_FIELD(defname, defname, defname); READ_NODE_PTR_FIELD(arg, arg, arg); READ_ENUM_FIELD(DefElemAction, defaction, defaction, defaction); READ_INT_FIELD(location, location, location); return node; } static RangeTblEntry * _readRangeTblEntry(OUT_TYPE(RangeTblEntry, RangeTblEntry) msg) { RangeTblEntry *node = makeNode(RangeTblEntry); READ_ENUM_FIELD(RTEKind, rtekind, rtekind, rtekind); READ_UINT_FIELD(relid, relid, relid); READ_CHAR_FIELD(relkind, relkind, relkind); READ_INT_FIELD(rellockmode, rellockmode, rellockmode); READ_SPECIFIC_NODE_PTR_FIELD(TableSampleClause, table_sample_clause, tablesample, tablesample, tablesample); READ_SPECIFIC_NODE_PTR_FIELD(Query, query, subquery, subquery, subquery); READ_BOOL_FIELD(security_barrier, security_barrier, security_barrier); READ_ENUM_FIELD(JoinType, jointype, jointype, jointype); READ_INT_FIELD(joinmergedcols, joinmergedcols, joinmergedcols); READ_LIST_FIELD(joinaliasvars, joinaliasvars, joinaliasvars); READ_LIST_FIELD(joinleftcols, joinleftcols, joinleftcols); READ_LIST_FIELD(joinrightcols, joinrightcols, joinrightcols); READ_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_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, eref, eref, eref); READ_BOOL_FIELD(lateral, lateral, lateral); READ_BOOL_FIELD(inh, inh, inh); READ_BOOL_FIELD(in_from_cl, inFromCl, inFromCl); READ_UINT_FIELD(required_perms, requiredPerms, requiredPerms); READ_UINT_FIELD(check_as_user, checkAsUser, checkAsUser); READ_BITMAPSET_FIELD(selected_cols, selectedCols, selectedCols); READ_BITMAPSET_FIELD(inserted_cols, insertedCols, insertedCols); READ_BITMAPSET_FIELD(updated_cols, updatedCols, updatedCols); READ_BITMAPSET_FIELD(extra_updated_cols, extraUpdatedCols, extraUpdatedCols); READ_LIST_FIELD(security_quals, securityQuals, securityQuals); return node; } static RangeTblFunction * _readRangeTblFunction(OUT_TYPE(RangeTblFunction, RangeTblFunction) msg) { RangeTblFunction *node = makeNode(RangeTblFunction); READ_NODE_PTR_FIELD(funcexpr, funcexpr, funcexpr); READ_INT_FIELD(funccolcount, funccolcount, funccolcount); READ_LIST_FIELD(funccolnames, funccolnames, funccolnames); READ_LIST_FIELD(funccoltypes, funccoltypes, funccoltypes); READ_LIST_FIELD(funccoltypmods, funccoltypmods, funccoltypmods); READ_LIST_FIELD(funccolcollations, funccolcollations, funccolcollations); READ_BITMAPSET_FIELD(funcparams, funcparams, funcparams); return node; } static TableSampleClause * _readTableSampleClause(OUT_TYPE(TableSampleClause, TableSampleClause) msg) { TableSampleClause *node = makeNode(TableSampleClause); READ_UINT_FIELD(tsmhandler, tsmhandler, tsmhandler); READ_LIST_FIELD(args, args, args); READ_EXPR_PTR_FIELD(repeatable, repeatable, repeatable); return node; } static WithCheckOption * _readWithCheckOption(OUT_TYPE(WithCheckOption, WithCheckOption) msg) { WithCheckOption *node = makeNode(WithCheckOption); READ_ENUM_FIELD(WCOKind, kind, kind, kind); READ_STRING_FIELD(relname, relname, relname); READ_STRING_FIELD(polname, polname, polname); READ_NODE_PTR_FIELD(qual, qual, qual); READ_BOOL_FIELD(cascaded, cascaded, cascaded); return node; } static SortGroupClause * _readSortGroupClause(OUT_TYPE(SortGroupClause, SortGroupClause) msg) { SortGroupClause *node = makeNode(SortGroupClause); READ_UINT_FIELD(tle_sort_group_ref, tleSortGroupRef, tleSortGroupRef); READ_UINT_FIELD(eqop, eqop, eqop); READ_UINT_FIELD(sortop, sortop, sortop); READ_BOOL_FIELD(nulls_first, nulls_first, nulls_first); READ_BOOL_FIELD(hashable, hashable, hashable); return node; } static GroupingSet * _readGroupingSet(OUT_TYPE(GroupingSet, GroupingSet) msg) { GroupingSet *node = makeNode(GroupingSet); READ_ENUM_FIELD(GroupingSetKind, kind, kind, kind); READ_LIST_FIELD(content, content, content); READ_INT_FIELD(location, location, location); return node; } static WindowClause * _readWindowClause(OUT_TYPE(WindowClause, WindowClause) msg) { WindowClause *node = makeNode(WindowClause); READ_STRING_FIELD(name, name, name); READ_STRING_FIELD(refname, refname, refname); READ_LIST_FIELD(partition_clause, partitionClause, partitionClause); READ_LIST_FIELD(order_clause, orderClause, orderClause); READ_INT_FIELD(frame_options, frameOptions, frameOptions); READ_NODE_PTR_FIELD(start_offset, startOffset, startOffset); READ_NODE_PTR_FIELD(end_offset, endOffset, endOffset); READ_LIST_FIELD(run_condition, runCondition, runCondition); READ_UINT_FIELD(start_in_range_func, startInRangeFunc, startInRangeFunc); READ_UINT_FIELD(end_in_range_func, endInRangeFunc, endInRangeFunc); READ_UINT_FIELD(in_range_coll, inRangeColl, inRangeColl); READ_BOOL_FIELD(in_range_asc, inRangeAsc, inRangeAsc); READ_BOOL_FIELD(in_range_nulls_first, inRangeNullsFirst, inRangeNullsFirst); READ_UINT_FIELD(winref, winref, winref); READ_BOOL_FIELD(copied_order, copiedOrder, copiedOrder); return node; } static ObjectWithArgs * _readObjectWithArgs(OUT_TYPE(ObjectWithArgs, ObjectWithArgs) msg) { ObjectWithArgs *node = makeNode(ObjectWithArgs); READ_LIST_FIELD(objname, objname, objname); READ_LIST_FIELD(objargs, objargs, objargs); READ_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 CreateOpClassItem * _readCreateOpClassItem(OUT_TYPE(CreateOpClassItem, CreateOpClassItem) msg) { CreateOpClassItem *node = makeNode(CreateOpClassItem); READ_INT_FIELD(itemtype, itemtype, itemtype); READ_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, name, name, name); READ_INT_FIELD(number, number, number); READ_LIST_FIELD(order_family, order_family, order_family); READ_LIST_FIELD(class_args, class_args, class_args); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, storedtype, storedtype, storedtype); return node; } static TableLikeClause * _readTableLikeClause(OUT_TYPE(TableLikeClause, TableLikeClause) msg) { TableLikeClause *node = makeNode(TableLikeClause); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_UINT_FIELD(options, options, options); READ_UINT_FIELD(relation_oid, relationOid, relationOid); return node; } static FunctionParameter * _readFunctionParameter(OUT_TYPE(FunctionParameter, FunctionParameter) msg) { FunctionParameter *node = makeNode(FunctionParameter); READ_STRING_FIELD(name, name, name); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, arg_type, argType, argType); READ_ENUM_FIELD(FunctionParameterMode, mode, mode, mode); READ_NODE_PTR_FIELD(defexpr, defexpr, defexpr); return node; } static LockingClause * _readLockingClause(OUT_TYPE(LockingClause, LockingClause) msg) { LockingClause *node = makeNode(LockingClause); READ_LIST_FIELD(locked_rels, lockedRels, lockedRels); READ_ENUM_FIELD(LockClauseStrength, strength, strength, strength); READ_ENUM_FIELD(LockWaitPolicy, wait_policy, waitPolicy, waitPolicy); return node; } static RowMarkClause * _readRowMarkClause(OUT_TYPE(RowMarkClause, RowMarkClause) msg) { RowMarkClause *node = makeNode(RowMarkClause); READ_UINT_FIELD(rti, rti, rti); READ_ENUM_FIELD(LockClauseStrength, strength, strength, strength); READ_ENUM_FIELD(LockWaitPolicy, wait_policy, waitPolicy, waitPolicy); READ_BOOL_FIELD(pushed_down, pushedDown, pushedDown); return node; } static XmlSerialize * _readXmlSerialize(OUT_TYPE(XmlSerialize, XmlSerialize) msg) { XmlSerialize *node = makeNode(XmlSerialize); READ_ENUM_FIELD(XmlOptionType, xmloption, xmloption, xmloption); READ_NODE_PTR_FIELD(expr, expr, expr); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); READ_INT_FIELD(location, location, location); return node; } static WithClause * _readWithClause(OUT_TYPE(WithClause, WithClause) msg) { WithClause *node = makeNode(WithClause); READ_LIST_FIELD(ctes, ctes, ctes); READ_BOOL_FIELD(recursive, recursive, recursive); READ_INT_FIELD(location, location, location); return node; } static InferClause * _readInferClause(OUT_TYPE(InferClause, InferClause) msg) { InferClause *node = makeNode(InferClause); READ_LIST_FIELD(index_elems, indexElems, indexElems); READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); READ_STRING_FIELD(conname, conname, conname); READ_INT_FIELD(location, location, location); return node; } static OnConflictClause * _readOnConflictClause(OUT_TYPE(OnConflictClause, OnConflictClause) msg) { OnConflictClause *node = makeNode(OnConflictClause); READ_ENUM_FIELD(OnConflictAction, action, action, action); READ_SPECIFIC_NODE_PTR_FIELD(InferClause, infer_clause, infer, infer, infer); READ_LIST_FIELD(target_list, targetList, targetList); READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); READ_INT_FIELD(location, location, location); return node; } static 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_BOOL_FIELD(matched, matched, matched); 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 RoleSpec * _readRoleSpec(OUT_TYPE(RoleSpec, RoleSpec) msg) { RoleSpec *node = makeNode(RoleSpec); READ_ENUM_FIELD(RoleSpecType, roletype, roletype, roletype); READ_STRING_FIELD(rolename, rolename, rolename); READ_INT_FIELD(location, location, location); return node; } static TriggerTransition * _readTriggerTransition(OUT_TYPE(TriggerTransition, TriggerTransition) msg) { TriggerTransition *node = makeNode(TriggerTransition); READ_STRING_FIELD(name, name, name); READ_BOOL_FIELD(is_new, isNew, isNew); READ_BOOL_FIELD(is_table, isTable, isTable); return node; } static PartitionElem * _readPartitionElem(OUT_TYPE(PartitionElem, PartitionElem) msg) { PartitionElem *node = makeNode(PartitionElem); READ_STRING_FIELD(name, name, name); READ_NODE_PTR_FIELD(expr, expr, expr); READ_LIST_FIELD(collation, collation, collation); READ_LIST_FIELD(opclass, opclass, opclass); READ_INT_FIELD(location, location, location); return node; } static PartitionSpec * _readPartitionSpec(OUT_TYPE(PartitionSpec, PartitionSpec) msg) { PartitionSpec *node = makeNode(PartitionSpec); READ_STRING_FIELD(strategy, strategy, strategy); READ_LIST_FIELD(part_params, partParams, partParams); READ_INT_FIELD(location, location, location); return node; } static PartitionBoundSpec * _readPartitionBoundSpec(OUT_TYPE(PartitionBoundSpec, PartitionBoundSpec) msg) { PartitionBoundSpec *node = makeNode(PartitionBoundSpec); READ_CHAR_FIELD(strategy, strategy, strategy); READ_BOOL_FIELD(is_default, is_default, is_default); READ_INT_FIELD(modulus, modulus, modulus); READ_INT_FIELD(remainder, remainder, remainder); READ_LIST_FIELD(listdatums, listdatums, listdatums); READ_LIST_FIELD(lowerdatums, lowerdatums, lowerdatums); READ_LIST_FIELD(upperdatums, upperdatums, upperdatums); READ_INT_FIELD(location, location, location); return node; } static PartitionRangeDatum * _readPartitionRangeDatum(OUT_TYPE(PartitionRangeDatum, PartitionRangeDatum) msg) { PartitionRangeDatum *node = makeNode(PartitionRangeDatum); READ_ENUM_FIELD(PartitionRangeDatumKind, kind, kind, kind); READ_NODE_PTR_FIELD(value, value, value); READ_INT_FIELD(location, location, location); return node; } static PartitionCmd * _readPartitionCmd(OUT_TYPE(PartitionCmd, PartitionCmd) msg) { PartitionCmd *node = makeNode(PartitionCmd); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, name, name, name); READ_SPECIFIC_NODE_PTR_FIELD(PartitionBoundSpec, partition_bound_spec, bound, bound, bound); READ_BOOL_FIELD(concurrent, concurrent, concurrent); 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 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 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 InlineCodeBlock * _readInlineCodeBlock(OUT_TYPE(InlineCodeBlock, InlineCodeBlock) msg) { InlineCodeBlock *node = makeNode(InlineCodeBlock); READ_STRING_FIELD(source_text, source_text, source_text); READ_UINT_FIELD(lang_oid, langOid, langOid); READ_BOOL_FIELD(lang_is_trusted, langIsTrusted, langIsTrusted); READ_BOOL_FIELD(atomic, atomic, atomic); return node; } static CallContext * _readCallContext(OUT_TYPE(CallContext, CallContext) msg) { CallContext *node = makeNode(CallContext); READ_BOOL_FIELD(atomic, atomic, atomic); return node; } pg_query-4.2.3/ext/pg_query/include/port/0000755000004100000410000000000014510636647020461 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/port/pg_crc32c.h0000644000004100000410000000631514510636647022404 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/port/pg_crc32c.h * *------------------------------------------------------------------------- */ #ifndef PG_CRC32C_H #define PG_CRC32C_H #include "port/pg_bswap.h" typedef uint32 pg_crc32c; /* The INIT and EQ macros are the same for all implementations. */ #define INIT_CRC32C(crc) ((crc) = 0xFFFFFFFF) #define EQ_CRC32C(c1, c2) ((c1) == (c2)) #if defined(USE_SSE42_CRC32C) /* Use Intel SSE4.2 instructions. */ #define COMP_CRC32C(crc, data, len) \ ((crc) = pg_comp_crc32c_sse42((crc), (data), (len))) #define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF) extern pg_crc32c pg_comp_crc32c_sse42(pg_crc32c crc, const void *data, size_t len); #elif defined(USE_ARMV8_CRC32C) /* Use ARMv8 CRC Extension instructions. */ #define COMP_CRC32C(crc, data, len) \ ((crc) = pg_comp_crc32c_armv8((crc), (data), (len))) #define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF) extern pg_crc32c pg_comp_crc32c_armv8(pg_crc32c crc, const void *data, size_t len); #elif defined(USE_SSE42_CRC32C_WITH_RUNTIME_CHECK) || defined(USE_ARMV8_CRC32C_WITH_RUNTIME_CHECK) /* * Use Intel SSE 4.2 or ARMv8 instructions, but perform a runtime check first * to check that they are available. */ #define COMP_CRC32C(crc, data, len) \ ((crc) = pg_comp_crc32c((crc), (data), (len))) #define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF) extern pg_crc32c pg_comp_crc32c_sb8(pg_crc32c crc, const void *data, size_t len); extern pg_crc32c (*pg_comp_crc32c) (pg_crc32c crc, const void *data, size_t len); #ifdef USE_SSE42_CRC32C_WITH_RUNTIME_CHECK extern pg_crc32c pg_comp_crc32c_sse42(pg_crc32c crc, const void *data, size_t len); #endif #ifdef USE_ARMV8_CRC32C_WITH_RUNTIME_CHECK extern pg_crc32c pg_comp_crc32c_armv8(pg_crc32c crc, const void *data, size_t len); #endif #else /* * Use slicing-by-8 algorithm. * * On big-endian systems, the intermediate value is kept in reverse byte * order, to avoid byte-swapping during the calculation. FIN_CRC32C reverses * the bytes to the final order. */ #define COMP_CRC32C(crc, data, len) \ ((crc) = pg_comp_crc32c_sb8((crc), (data), (len))) #ifdef WORDS_BIGENDIAN #define FIN_CRC32C(crc) ((crc) = pg_bswap32(crc) ^ 0xFFFFFFFF) #else #define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF) #endif extern pg_crc32c pg_comp_crc32c_sb8(pg_crc32c crc, const void *data, size_t len); #endif #endif /* PG_CRC32C_H */ pg_query-4.2.3/ext/pg_query/include/port/atomics/0000755000004100000410000000000014510636647022120 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/port/atomics/arch-arm.h0000644000004100000410000000170614510636647023767 0ustar www-datawww-data/*------------------------------------------------------------------------- * * arch-arm.h * Atomic operations considerations specific to ARM * * Portions Copyright (c) 2013-2022, PostgreSQL Global Development Group * * NOTES: * * src/include/port/atomics/arch-arm.h * *------------------------------------------------------------------------- */ /* intentionally no include guards, should only be included by atomics.h */ #ifndef INSIDE_ATOMICS_H #error "should be included via atomics.h" #endif /* * 64 bit atomics on ARM32 are implemented using kernel fallbacks and thus * might be slow, so disable entirely. On ARM64 that problem doesn't exist. */ #if !defined(__aarch64__) && !defined(__aarch64) #define PG_DISABLE_64_BIT_ATOMICS #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__ || __aarch64 */ pg_query-4.2.3/ext/pg_query/include/port/atomics/arch-x86.h0000644000004100000410000001627514510636647023644 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES: * * src/include/port/atomics/arch-x86.h * *------------------------------------------------------------------------- */ /* * Both 32 and 64 bit x86 do not allow loads to be reordered with other loads, * or stores to be reordered with other stores, but a load can be performed * before a subsequent store. * * Technically, some x86-ish chips support uncached memory access and/or * special instructions that are weakly ordered. In those cases we'd need * the read and write barriers to be lfence and sfence. But since we don't * do those things, a compiler barrier should be enough. * * "lock; addl" has worked for longer than "mfence". It's also rumored to be * faster in many scenarios. */ #if defined(__GNUC__) || defined(__INTEL_COMPILER) #if defined(__i386__) || defined(__i386) #define pg_memory_barrier_impl() \ __asm__ __volatile__ ("lock; addl $0,0(%%esp)" : : : "memory", "cc") #elif defined(__x86_64__) #define pg_memory_barrier_impl() \ __asm__ __volatile__ ("lock; addl $0,0(%%rsp)" : : : "memory", "cc") #endif #endif /* defined(__GNUC__) || defined(__INTEL_COMPILER) */ #define pg_read_barrier_impl() pg_compiler_barrier_impl() #define pg_write_barrier_impl() pg_compiler_barrier_impl() /* * Provide implementation for atomics using inline assembly on x86 gcc. It's * nice to support older gcc's and the compare/exchange implementation here is * actually more efficient than the * __sync variant. */ #if defined(HAVE_ATOMICS) #if defined(__GNUC__) || defined(__INTEL_COMPILER) #define PG_HAVE_ATOMIC_FLAG_SUPPORT typedef struct pg_atomic_flag { volatile char value; } pg_atomic_flag; #define PG_HAVE_ATOMIC_U32_SUPPORT typedef struct pg_atomic_uint32 { volatile uint32 value; } pg_atomic_uint32; /* * It's too complicated to write inline asm for 64bit types on 32bit and the * 486 can't do it anyway. */ #ifdef __x86_64__ #define PG_HAVE_ATOMIC_U64_SUPPORT typedef struct pg_atomic_uint64 { /* alignment guaranteed due to being on a 64bit platform */ volatile uint64 value; } pg_atomic_uint64; #endif /* __x86_64__ */ #endif /* defined(__GNUC__) || defined(__INTEL_COMPILER) */ #endif /* defined(HAVE_ATOMICS) */ #if !defined(PG_HAVE_SPIN_DELAY) /* * This sequence is equivalent to the PAUSE instruction ("rep" is * ignored by old IA32 processors if the following instruction is * not a string operation); the IA-32 Architecture Software * Developer's Manual, Vol. 3, Section 7.7.2 describes why using * PAUSE in the inner loop of a spin lock is necessary for good * performance: * * The PAUSE instruction improves the performance of IA-32 * processors supporting Hyper-Threading Technology when * executing spin-wait loops and other routines where one * thread is accessing a shared lock or semaphore in a tight * polling loop. When executing a spin-wait loop, the * processor can suffer a severe performance penalty when * exiting the loop because it detects a possible memory order * violation and flushes the core processor's pipeline. The * PAUSE instruction provides a hint to the processor that the * code sequence is a spin-wait loop. The processor uses this * hint to avoid the memory order violation and prevent the * pipeline flush. In addition, the PAUSE instruction * de-pipelines the spin-wait loop to prevent it from * consuming execution resources excessively. */ #if defined(__GNUC__) || defined(__INTEL_COMPILER) #define PG_HAVE_SPIN_DELAY static __inline__ void pg_spin_delay_impl(void) { __asm__ __volatile__(" rep; nop \n"); } #elif defined(_MSC_VER) && defined(__x86_64__) #define PG_HAVE_SPIN_DELAY static __forceinline void pg_spin_delay_impl(void) { _mm_pause(); } #elif defined(_MSC_VER) #define PG_HAVE_SPIN_DELAY static __forceinline void pg_spin_delay_impl(void) { /* See comment for gcc code. Same code, MASM syntax */ __asm rep nop; } #endif #endif /* !defined(PG_HAVE_SPIN_DELAY) */ #if defined(HAVE_ATOMICS) #if defined(__GNUC__) || defined(__INTEL_COMPILER) #define PG_HAVE_ATOMIC_TEST_SET_FLAG static inline bool pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr) { register char _res = 1; __asm__ __volatile__( " lock \n" " xchgb %0,%1 \n" : "+q"(_res), "+m"(ptr->value) : : "memory"); return _res == 0; } #define PG_HAVE_ATOMIC_CLEAR_FLAG static inline void pg_atomic_clear_flag_impl(volatile pg_atomic_flag *ptr) { /* * On a TSO architecture like x86 it's sufficient to use a compiler * barrier to achieve release semantics. */ __asm__ __volatile__("" ::: "memory"); ptr->value = 0; } #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32 static inline bool pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 *expected, uint32 newval) { char ret; /* * Perform cmpxchg and use the zero flag which it implicitly sets when * equal to measure the success. */ __asm__ __volatile__( " lock \n" " cmpxchgl %4,%5 \n" " setz %2 \n" : "=a" (*expected), "=m"(ptr->value), "=q" (ret) : "a" (*expected), "r" (newval), "m"(ptr->value) : "memory", "cc"); return (bool) ret; } #define PG_HAVE_ATOMIC_FETCH_ADD_U32 static inline uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) { uint32 res; __asm__ __volatile__( " lock \n" " xaddl %0,%1 \n" : "=q"(res), "=m"(ptr->value) : "0" (add_), "m"(ptr->value) : "memory", "cc"); return res; } #ifdef __x86_64__ #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64 static inline bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 *expected, uint64 newval) { char ret; /* * Perform cmpxchg and use the zero flag which it implicitly sets when * equal to measure the success. */ __asm__ __volatile__( " lock \n" " cmpxchgq %4,%5 \n" " setz %2 \n" : "=a" (*expected), "=m"(ptr->value), "=q" (ret) : "a" (*expected), "r" (newval), "m"(ptr->value) : "memory", "cc"); return (bool) ret; } #define PG_HAVE_ATOMIC_FETCH_ADD_U64 static inline uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_) { uint64 res; __asm__ __volatile__( " lock \n" " xaddq %0,%1 \n" : "=q"(res), "=m"(ptr->value) : "0" (add_), "m"(ptr->value) : "memory", "cc"); return res; } #endif /* __x86_64__ */ #endif /* defined(__GNUC__) || defined(__INTEL_COMPILER) */ /* * 8 byte reads / writes have single-copy atomicity on 32 bit x86 platforms * since at least the 586. As well as on all x86-64 cpus. */ #if defined(__i568__) || defined(__i668__) || /* gcc i586+ */ \ (defined(_M_IX86) && _M_IX86 >= 500) || /* msvc i586+ */ \ defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) /* gcc, sunpro, msvc */ #define PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY #endif /* 8 byte single-copy atomicity */ #endif /* HAVE_ATOMICS */ pg_query-4.2.3/ext/pg_query/include/port/atomics/fallback.h0000644000004100000410000001302514510636647024031 0ustar www-datawww-data/*------------------------------------------------------------------------- * * fallback.h * Fallback for platforms without spinlock and/or atomics support. Slower * than native atomics support, but not unusably slow. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/port/atomics/fallback.h * *------------------------------------------------------------------------- */ /* intentionally no include guards, should only be included by atomics.h */ #ifndef INSIDE_ATOMICS_H # error "should be included via atomics.h" #endif #ifndef pg_memory_barrier_impl /* * If we have no memory barrier implementation for this architecture, we * fall back to acquiring and releasing a spinlock. This might, in turn, * fall back to the semaphore-based spinlock implementation, which will be * amazingly slow. * * It's not self-evident that every possible legal implementation of a * spinlock acquire-and-release would be equivalent to a full memory barrier. * For example, I'm not sure that Itanium's acq and rel add up to a full * fence. But all of our actual implementations seem OK in this regard. */ #define PG_HAVE_MEMORY_BARRIER_EMULATION extern void pg_spinlock_barrier(void); #define pg_memory_barrier_impl pg_spinlock_barrier #endif #ifndef pg_compiler_barrier_impl /* * If the compiler/arch combination does not provide compiler barriers, * provide a fallback. The fallback simply consists of a function call into * an externally defined function. That should guarantee compiler barrier * semantics except for compilers that do inter translation unit/global * optimization - those better provide an actual compiler barrier. * * A native compiler barrier for sure is a lot faster than this... */ #define PG_HAVE_COMPILER_BARRIER_EMULATION extern void pg_extern_compiler_barrier(void); #define pg_compiler_barrier_impl pg_extern_compiler_barrier #endif /* * If we have atomics implementation for this platform, fall back to providing * the atomics API using a spinlock to protect the internal state. Possibly * the spinlock implementation uses semaphores internally... * * We have to be a bit careful here, as it's not guaranteed that atomic * variables are mapped to the same address in every process (e.g. dynamic * shared memory segments). We can't just hash the address and use that to map * to a spinlock. Instead assign a spinlock on initialization of the atomic * variable. */ #if !defined(PG_HAVE_ATOMIC_FLAG_SUPPORT) && !defined(PG_HAVE_ATOMIC_U32_SUPPORT) #define PG_HAVE_ATOMIC_FLAG_SIMULATION #define PG_HAVE_ATOMIC_FLAG_SUPPORT typedef struct pg_atomic_flag { /* * To avoid circular includes we can't use s_lock as a type here. Instead * just reserve enough space for all spinlock types. Some platforms would * be content with just one byte instead of 4, but that's not too much * waste. */ #if defined(__hppa) || defined(__hppa__) /* HP PA-RISC, GCC and HP compilers */ int sema[4]; #else int sema; #endif volatile bool value; } pg_atomic_flag; #endif /* PG_HAVE_ATOMIC_FLAG_SUPPORT */ #if !defined(PG_HAVE_ATOMIC_U32_SUPPORT) #define PG_HAVE_ATOMIC_U32_SIMULATION #define PG_HAVE_ATOMIC_U32_SUPPORT typedef struct pg_atomic_uint32 { /* Check pg_atomic_flag's definition above for an explanation */ #if defined(__hppa) || defined(__hppa__) /* HP PA-RISC, GCC and HP compilers */ int sema[4]; #else int sema; #endif volatile uint32 value; } pg_atomic_uint32; #endif /* PG_HAVE_ATOMIC_U32_SUPPORT */ #if !defined(PG_HAVE_ATOMIC_U64_SUPPORT) #define PG_HAVE_ATOMIC_U64_SIMULATION #define PG_HAVE_ATOMIC_U64_SUPPORT typedef struct pg_atomic_uint64 { /* Check pg_atomic_flag's definition above for an explanation */ #if defined(__hppa) || defined(__hppa__) /* HP PA-RISC, GCC and HP compilers */ int sema[4]; #else int sema; #endif volatile uint64 value; } pg_atomic_uint64; #endif /* PG_HAVE_ATOMIC_U64_SUPPORT */ #ifdef PG_HAVE_ATOMIC_FLAG_SIMULATION #define PG_HAVE_ATOMIC_INIT_FLAG extern void pg_atomic_init_flag_impl(volatile pg_atomic_flag *ptr); #define PG_HAVE_ATOMIC_TEST_SET_FLAG extern bool pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr); #define PG_HAVE_ATOMIC_CLEAR_FLAG extern void pg_atomic_clear_flag_impl(volatile pg_atomic_flag *ptr); #define PG_HAVE_ATOMIC_UNLOCKED_TEST_FLAG extern bool pg_atomic_unlocked_test_flag_impl(volatile pg_atomic_flag *ptr); #endif /* PG_HAVE_ATOMIC_FLAG_SIMULATION */ #ifdef PG_HAVE_ATOMIC_U32_SIMULATION #define PG_HAVE_ATOMIC_INIT_U32 extern void pg_atomic_init_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 val_); #define PG_HAVE_ATOMIC_WRITE_U32 extern void pg_atomic_write_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 val); #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32 extern bool pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 *expected, uint32 newval); #define PG_HAVE_ATOMIC_FETCH_ADD_U32 extern uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_); #endif /* PG_HAVE_ATOMIC_U32_SIMULATION */ #ifdef PG_HAVE_ATOMIC_U64_SIMULATION #define PG_HAVE_ATOMIC_INIT_U64 extern void pg_atomic_init_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 val_); #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64 extern bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 *expected, uint64 newval); #define PG_HAVE_ATOMIC_FETCH_ADD_U64 extern uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_); #endif /* PG_HAVE_ATOMIC_U64_SIMULATION */ pg_query-4.2.3/ext/pg_query/include/port/atomics/generic.h0000644000004100000410000002551114510636647023711 0ustar www-datawww-data/*------------------------------------------------------------------------- * * generic.h * Implement higher level operations based on some lower level atomic * operations. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/port/atomics/generic.h * *------------------------------------------------------------------------- */ /* intentionally no include guards, should only be included by atomics.h */ #ifndef INSIDE_ATOMICS_H # error "should be included via atomics.h" #endif /* * If read or write barriers are undefined, we upgrade them to full memory * barriers. */ #if !defined(pg_read_barrier_impl) # define pg_read_barrier_impl pg_memory_barrier_impl #endif #if !defined(pg_write_barrier_impl) # define pg_write_barrier_impl pg_memory_barrier_impl #endif #ifndef PG_HAVE_SPIN_DELAY #define PG_HAVE_SPIN_DELAY #define pg_spin_delay_impl() ((void)0) #endif /* provide fallback */ #if !defined(PG_HAVE_ATOMIC_FLAG_SUPPORT) && defined(PG_HAVE_ATOMIC_U32_SUPPORT) #define PG_HAVE_ATOMIC_FLAG_SUPPORT typedef pg_atomic_uint32 pg_atomic_flag; #endif #ifndef PG_HAVE_ATOMIC_READ_U32 #define PG_HAVE_ATOMIC_READ_U32 static inline uint32 pg_atomic_read_u32_impl(volatile pg_atomic_uint32 *ptr) { return ptr->value; } #endif #ifndef PG_HAVE_ATOMIC_WRITE_U32 #define PG_HAVE_ATOMIC_WRITE_U32 static inline void pg_atomic_write_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 val) { ptr->value = val; } #endif #ifndef PG_HAVE_ATOMIC_UNLOCKED_WRITE_U32 #define PG_HAVE_ATOMIC_UNLOCKED_WRITE_U32 static inline void pg_atomic_unlocked_write_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 val) { ptr->value = val; } #endif /* * provide fallback for test_and_set using atomic_exchange if available */ #if !defined(PG_HAVE_ATOMIC_TEST_SET_FLAG) && defined(PG_HAVE_ATOMIC_EXCHANGE_U32) #define PG_HAVE_ATOMIC_INIT_FLAG static inline void pg_atomic_init_flag_impl(volatile pg_atomic_flag *ptr) { pg_atomic_write_u32_impl(ptr, 0); } #define PG_HAVE_ATOMIC_TEST_SET_FLAG static inline bool pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr) { return pg_atomic_exchange_u32_impl(ptr, &value, 1) == 0; } #define PG_HAVE_ATOMIC_UNLOCKED_TEST_FLAG static inline bool pg_atomic_unlocked_test_flag_impl(volatile pg_atomic_flag *ptr) { return pg_atomic_read_u32_impl(ptr) == 0; } #define PG_HAVE_ATOMIC_CLEAR_FLAG static inline void pg_atomic_clear_flag_impl(volatile pg_atomic_flag *ptr) { /* XXX: release semantics suffice? */ pg_memory_barrier_impl(); pg_atomic_write_u32_impl(ptr, 0); } /* * provide fallback for test_and_set using atomic_compare_exchange if * available. */ #elif !defined(PG_HAVE_ATOMIC_TEST_SET_FLAG) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32) #define PG_HAVE_ATOMIC_INIT_FLAG static inline void pg_atomic_init_flag_impl(volatile pg_atomic_flag *ptr) { pg_atomic_write_u32_impl(ptr, 0); } #define PG_HAVE_ATOMIC_TEST_SET_FLAG static inline bool pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr) { uint32 value = 0; return pg_atomic_compare_exchange_u32_impl(ptr, &value, 1); } #define PG_HAVE_ATOMIC_UNLOCKED_TEST_FLAG static inline bool pg_atomic_unlocked_test_flag_impl(volatile pg_atomic_flag *ptr) { return pg_atomic_read_u32_impl(ptr) == 0; } #define PG_HAVE_ATOMIC_CLEAR_FLAG static inline void pg_atomic_clear_flag_impl(volatile pg_atomic_flag *ptr) { /* * Use a memory barrier + plain write if we have a native memory * barrier. But don't do so if memory barriers use spinlocks - that'd lead * to circularity if flags are used to implement spinlocks. */ #ifndef PG_HAVE_MEMORY_BARRIER_EMULATION /* XXX: release semantics suffice? */ pg_memory_barrier_impl(); pg_atomic_write_u32_impl(ptr, 0); #else uint32 value = 1; pg_atomic_compare_exchange_u32_impl(ptr, &value, 0); #endif } #elif !defined(PG_HAVE_ATOMIC_TEST_SET_FLAG) # error "No pg_atomic_test_and_set provided" #endif /* !defined(PG_HAVE_ATOMIC_TEST_SET_FLAG) */ #ifndef PG_HAVE_ATOMIC_INIT_U32 #define PG_HAVE_ATOMIC_INIT_U32 static inline void pg_atomic_init_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 val_) { ptr->value = val_; } #endif #if !defined(PG_HAVE_ATOMIC_EXCHANGE_U32) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32) #define PG_HAVE_ATOMIC_EXCHANGE_U32 static inline uint32 pg_atomic_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 xchg_) { uint32 old; old = ptr->value; /* ok if read is not atomic */ while (!pg_atomic_compare_exchange_u32_impl(ptr, &old, xchg_)) /* skip */; return old; } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_ADD_U32) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32) #define PG_HAVE_ATOMIC_FETCH_ADD_U32 static inline uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) { uint32 old; old = ptr->value; /* ok if read is not atomic */ while (!pg_atomic_compare_exchange_u32_impl(ptr, &old, old + add_)) /* skip */; return old; } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_SUB_U32) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32) #define PG_HAVE_ATOMIC_FETCH_SUB_U32 static inline uint32 pg_atomic_fetch_sub_u32_impl(volatile pg_atomic_uint32 *ptr, int32 sub_) { return pg_atomic_fetch_add_u32_impl(ptr, -sub_); } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_AND_U32) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32) #define PG_HAVE_ATOMIC_FETCH_AND_U32 static inline uint32 pg_atomic_fetch_and_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 and_) { uint32 old; old = ptr->value; /* ok if read is not atomic */ while (!pg_atomic_compare_exchange_u32_impl(ptr, &old, old & and_)) /* skip */; return old; } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_OR_U32) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32) #define PG_HAVE_ATOMIC_FETCH_OR_U32 static inline uint32 pg_atomic_fetch_or_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 or_) { uint32 old; old = ptr->value; /* ok if read is not atomic */ while (!pg_atomic_compare_exchange_u32_impl(ptr, &old, old | or_)) /* skip */; return old; } #endif #if !defined(PG_HAVE_ATOMIC_ADD_FETCH_U32) && defined(PG_HAVE_ATOMIC_FETCH_ADD_U32) #define PG_HAVE_ATOMIC_ADD_FETCH_U32 static inline uint32 pg_atomic_add_fetch_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) { return pg_atomic_fetch_add_u32_impl(ptr, add_) + add_; } #endif #if !defined(PG_HAVE_ATOMIC_SUB_FETCH_U32) && defined(PG_HAVE_ATOMIC_FETCH_SUB_U32) #define PG_HAVE_ATOMIC_SUB_FETCH_U32 static inline uint32 pg_atomic_sub_fetch_u32_impl(volatile pg_atomic_uint32 *ptr, int32 sub_) { return pg_atomic_fetch_sub_u32_impl(ptr, sub_) - sub_; } #endif #if !defined(PG_HAVE_ATOMIC_EXCHANGE_U64) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64) #define PG_HAVE_ATOMIC_EXCHANGE_U64 static inline uint64 pg_atomic_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 xchg_) { uint64 old; old = ptr->value; /* ok if read is not atomic */ while (!pg_atomic_compare_exchange_u64_impl(ptr, &old, xchg_)) /* skip */; return old; } #endif #ifndef PG_HAVE_ATOMIC_WRITE_U64 #define PG_HAVE_ATOMIC_WRITE_U64 #if defined(PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY) && \ !defined(PG_HAVE_ATOMIC_U64_SIMULATION) static inline void pg_atomic_write_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 val) { /* * On this platform aligned 64bit writes are guaranteed to be atomic, * except if using the fallback implementation, where can't guarantee the * required alignment. */ AssertPointerAlignment(ptr, 8); ptr->value = val; } #else static inline void pg_atomic_write_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 val) { /* * 64 bit writes aren't safe on all platforms. In the generic * implementation implement them as an atomic exchange. */ pg_atomic_exchange_u64_impl(ptr, val); } #endif /* PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY && !PG_HAVE_ATOMIC_U64_SIMULATION */ #endif /* PG_HAVE_ATOMIC_WRITE_U64 */ #ifndef PG_HAVE_ATOMIC_READ_U64 #define PG_HAVE_ATOMIC_READ_U64 #if defined(PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY) && \ !defined(PG_HAVE_ATOMIC_U64_SIMULATION) static inline uint64 pg_atomic_read_u64_impl(volatile pg_atomic_uint64 *ptr) { /* * On this platform aligned 64-bit reads are guaranteed to be atomic. */ AssertPointerAlignment(ptr, 8); return ptr->value; } #else static inline uint64 pg_atomic_read_u64_impl(volatile pg_atomic_uint64 *ptr) { uint64 old = 0; /* * 64-bit reads aren't atomic on all platforms. In the generic * implementation implement them as a compare/exchange with 0. That'll * fail or succeed, but always return the old value. Possibly might store * a 0, but only if the previous value also was a 0 - i.e. harmless. */ pg_atomic_compare_exchange_u64_impl(ptr, &old, 0); return old; } #endif /* PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY && !PG_HAVE_ATOMIC_U64_SIMULATION */ #endif /* PG_HAVE_ATOMIC_READ_U64 */ #ifndef PG_HAVE_ATOMIC_INIT_U64 #define PG_HAVE_ATOMIC_INIT_U64 static inline void pg_atomic_init_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 val_) { ptr->value = val_; } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_ADD_U64) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64) #define PG_HAVE_ATOMIC_FETCH_ADD_U64 static inline uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_) { uint64 old; old = ptr->value; /* ok if read is not atomic */ while (!pg_atomic_compare_exchange_u64_impl(ptr, &old, old + add_)) /* skip */; return old; } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_SUB_U64) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64) #define PG_HAVE_ATOMIC_FETCH_SUB_U64 static inline uint64 pg_atomic_fetch_sub_u64_impl(volatile pg_atomic_uint64 *ptr, int64 sub_) { return pg_atomic_fetch_add_u64_impl(ptr, -sub_); } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_AND_U64) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64) #define PG_HAVE_ATOMIC_FETCH_AND_U64 static inline uint64 pg_atomic_fetch_and_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 and_) { uint64 old; old = ptr->value; /* ok if read is not atomic */ while (!pg_atomic_compare_exchange_u64_impl(ptr, &old, old & and_)) /* skip */; return old; } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_OR_U64) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64) #define PG_HAVE_ATOMIC_FETCH_OR_U64 static inline uint64 pg_atomic_fetch_or_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 or_) { uint64 old; old = ptr->value; /* ok if read is not atomic */ while (!pg_atomic_compare_exchange_u64_impl(ptr, &old, old | or_)) /* skip */; return old; } #endif #if !defined(PG_HAVE_ATOMIC_ADD_FETCH_U64) && defined(PG_HAVE_ATOMIC_FETCH_ADD_U64) #define PG_HAVE_ATOMIC_ADD_FETCH_U64 static inline uint64 pg_atomic_add_fetch_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_) { return pg_atomic_fetch_add_u64_impl(ptr, add_) + add_; } #endif #if !defined(PG_HAVE_ATOMIC_SUB_FETCH_U64) && defined(PG_HAVE_ATOMIC_FETCH_SUB_U64) #define PG_HAVE_ATOMIC_SUB_FETCH_U64 static inline uint64 pg_atomic_sub_fetch_u64_impl(volatile pg_atomic_uint64 *ptr, int64 sub_) { return pg_atomic_fetch_sub_u64_impl(ptr, sub_) - sub_; } #endif pg_query-4.2.3/ext/pg_query/include/port/atomics/arch-ppc.h0000644000004100000410000001565114510636647023776 0ustar www-datawww-data/*------------------------------------------------------------------------- * * arch-ppc.h * Atomic operations considerations specific to PowerPC * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES: * * src/include/port/atomics/arch-ppc.h * *------------------------------------------------------------------------- */ #if defined(__GNUC__) /* * lwsync orders loads with respect to each other, and similarly with stores. * But a load can be performed before a subsequent store, so sync must be used * for a full memory barrier. */ #define pg_memory_barrier_impl() __asm__ __volatile__ ("sync" : : : "memory") #define pg_read_barrier_impl() __asm__ __volatile__ ("lwsync" : : : "memory") #define pg_write_barrier_impl() __asm__ __volatile__ ("lwsync" : : : "memory") #endif #define PG_HAVE_ATOMIC_U32_SUPPORT typedef struct pg_atomic_uint32 { volatile uint32 value; } pg_atomic_uint32; /* 64bit atomics are only supported in 64bit mode */ #if SIZEOF_VOID_P >= 8 #define PG_HAVE_ATOMIC_U64_SUPPORT typedef struct pg_atomic_uint64 { volatile uint64 value pg_attribute_aligned(8); } pg_atomic_uint64; #endif /* * This mimics gcc __atomic_compare_exchange_n(..., __ATOMIC_SEQ_CST), but * code generation differs at the end. __atomic_compare_exchange_n(): * 100: isync * 104: mfcr r3 * 108: rlwinm r3,r3,3,31,31 * 10c: bne 120 <.eb+0x10> * 110: clrldi r3,r3,63 * 114: addi r1,r1,112 * 118: blr * 11c: nop * 120: clrldi r3,r3,63 * 124: stw r9,0(r4) * 128: addi r1,r1,112 * 12c: blr * * This: * f0: isync * f4: mfcr r9 * f8: rldicl. r3,r9,35,63 * fc: bne 104 <.eb> * 100: stw r10,0(r4) * 104: addi r1,r1,112 * 108: blr * * This implementation may or may not have materially different performance. * It's not exploiting the fact that cr0 still holds the relevant comparison * bits, set during the __asm__. One could fix that by moving more code into * the __asm__. (That would remove the freedom to eliminate dead stores when * the caller ignores "expected", but few callers do.) * * Recognizing constant "newval" would be superfluous, because there's no * immediate-operand version of stwcx. */ #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32 static inline bool pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 *expected, uint32 newval) { uint32 found; uint32 condition_register; bool ret; #ifdef HAVE_I_CONSTRAINT__BUILTIN_CONSTANT_P if (__builtin_constant_p(*expected) && (int32) *expected <= PG_INT16_MAX && (int32) *expected >= PG_INT16_MIN) __asm__ __volatile__( " sync \n" " lwarx %0,0,%5 \n" " cmpwi %0,%3 \n" " bne $+12 \n" /* branch to isync */ " stwcx. %4,0,%5 \n" " bne $-16 \n" /* branch to lwarx */ " isync \n" " mfcr %1 \n" : "=&r"(found), "=r"(condition_register), "+m"(ptr->value) : "i"(*expected), "r"(newval), "r"(&ptr->value) : "memory", "cc"); else #endif __asm__ __volatile__( " sync \n" " lwarx %0,0,%5 \n" " cmpw %0,%3 \n" " bne $+12 \n" /* branch to isync */ " stwcx. %4,0,%5 \n" " bne $-16 \n" /* branch to lwarx */ " isync \n" " mfcr %1 \n" : "=&r"(found), "=r"(condition_register), "+m"(ptr->value) : "r"(*expected), "r"(newval), "r"(&ptr->value) : "memory", "cc"); ret = (condition_register >> 29) & 1; /* test eq bit of cr0 */ if (!ret) *expected = found; return ret; } /* * This mirrors gcc __sync_fetch_and_add(). * * Like tas(), use constraint "=&b" to avoid allocating r0. */ #define PG_HAVE_ATOMIC_FETCH_ADD_U32 static inline uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) { uint32 _t; uint32 res; #ifdef HAVE_I_CONSTRAINT__BUILTIN_CONSTANT_P if (__builtin_constant_p(add_) && add_ <= PG_INT16_MAX && add_ >= PG_INT16_MIN) __asm__ __volatile__( " sync \n" " lwarx %1,0,%4 \n" " addi %0,%1,%3 \n" " stwcx. %0,0,%4 \n" " bne $-12 \n" /* branch to lwarx */ " isync \n" : "=&r"(_t), "=&b"(res), "+m"(ptr->value) : "i"(add_), "r"(&ptr->value) : "memory", "cc"); else #endif __asm__ __volatile__( " sync \n" " lwarx %1,0,%4 \n" " add %0,%1,%3 \n" " stwcx. %0,0,%4 \n" " bne $-12 \n" /* branch to lwarx */ " isync \n" : "=&r"(_t), "=&r"(res), "+m"(ptr->value) : "r"(add_), "r"(&ptr->value) : "memory", "cc"); return res; } #ifdef PG_HAVE_ATOMIC_U64_SUPPORT #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64 static inline bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 *expected, uint64 newval) { uint64 found; uint32 condition_register; bool ret; /* Like u32, but s/lwarx/ldarx/; s/stwcx/stdcx/; s/cmpw/cmpd/ */ #ifdef HAVE_I_CONSTRAINT__BUILTIN_CONSTANT_P if (__builtin_constant_p(*expected) && (int64) *expected <= PG_INT16_MAX && (int64) *expected >= PG_INT16_MIN) __asm__ __volatile__( " sync \n" " ldarx %0,0,%5 \n" " cmpdi %0,%3 \n" " bne $+12 \n" /* branch to isync */ " stdcx. %4,0,%5 \n" " bne $-16 \n" /* branch to ldarx */ " isync \n" " mfcr %1 \n" : "=&r"(found), "=r"(condition_register), "+m"(ptr->value) : "i"(*expected), "r"(newval), "r"(&ptr->value) : "memory", "cc"); else #endif __asm__ __volatile__( " sync \n" " ldarx %0,0,%5 \n" " cmpd %0,%3 \n" " bne $+12 \n" /* branch to isync */ " stdcx. %4,0,%5 \n" " bne $-16 \n" /* branch to ldarx */ " isync \n" " mfcr %1 \n" : "=&r"(found), "=r"(condition_register), "+m"(ptr->value) : "r"(*expected), "r"(newval), "r"(&ptr->value) : "memory", "cc"); ret = (condition_register >> 29) & 1; /* test eq bit of cr0 */ if (!ret) *expected = found; return ret; } #define PG_HAVE_ATOMIC_FETCH_ADD_U64 static inline uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_) { uint64 _t; uint64 res; /* Like u32, but s/lwarx/ldarx/; s/stwcx/stdcx/ */ #ifdef HAVE_I_CONSTRAINT__BUILTIN_CONSTANT_P if (__builtin_constant_p(add_) && add_ <= PG_INT16_MAX && add_ >= PG_INT16_MIN) __asm__ __volatile__( " sync \n" " ldarx %1,0,%4 \n" " addi %0,%1,%3 \n" " stdcx. %0,0,%4 \n" " bne $-12 \n" /* branch to ldarx */ " isync \n" : "=&r"(_t), "=&b"(res), "+m"(ptr->value) : "i"(add_), "r"(&ptr->value) : "memory", "cc"); else #endif __asm__ __volatile__( " sync \n" " ldarx %1,0,%4 \n" " add %0,%1,%3 \n" " stdcx. %0,0,%4 \n" " bne $-12 \n" /* branch to ldarx */ " isync \n" : "=&r"(_t), "=&r"(res), "+m"(ptr->value) : "r"(add_), "r"(&ptr->value) : "memory", "cc"); return res; } #endif /* PG_HAVE_ATOMIC_U64_SUPPORT */ /* per architecture manual doubleword accesses have single copy atomicity */ #define PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY pg_query-4.2.3/ext/pg_query/include/port/atomics/generic-gcc.h0000644000004100000410000002120514510636647024437 0ustar www-datawww-data/*------------------------------------------------------------------------- * * generic-gcc.h * Atomic operations, implemented using gcc (or compatible) intrinsics. * * Portions Copyright (c) 1996-2022, 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 /* if we have 32-bit __sync_val_compare_and_swap, assume we have these too: */ #if !defined(PG_HAVE_ATOMIC_FETCH_ADD_U32) && defined(HAVE_GCC__SYNC_INT32_CAS) #define PG_HAVE_ATOMIC_FETCH_ADD_U32 static inline uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) { return __sync_fetch_and_add(&ptr->value, add_); } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_SUB_U32) && defined(HAVE_GCC__SYNC_INT32_CAS) #define PG_HAVE_ATOMIC_FETCH_SUB_U32 static inline uint32 pg_atomic_fetch_sub_u32_impl(volatile pg_atomic_uint32 *ptr, int32 sub_) { return __sync_fetch_and_sub(&ptr->value, sub_); } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_AND_U32) && defined(HAVE_GCC__SYNC_INT32_CAS) #define PG_HAVE_ATOMIC_FETCH_AND_U32 static inline uint32 pg_atomic_fetch_and_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 and_) { return __sync_fetch_and_and(&ptr->value, and_); } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_OR_U32) && defined(HAVE_GCC__SYNC_INT32_CAS) #define PG_HAVE_ATOMIC_FETCH_OR_U32 static inline uint32 pg_atomic_fetch_or_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 or_) { return __sync_fetch_and_or(&ptr->value, or_); } #endif #if !defined(PG_DISABLE_64_BIT_ATOMICS) #if !defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64) && defined(HAVE_GCC__ATOMIC_INT64_CAS) #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64 static inline bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 *expected, uint64 newval) { return __atomic_compare_exchange_n(&ptr->value, expected, newval, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); } #endif #if !defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64) && defined(HAVE_GCC__SYNC_INT64_CAS) #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64 static inline bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 *expected, uint64 newval) { bool ret; uint64 current; current = __sync_val_compare_and_swap(&ptr->value, *expected, newval); ret = current == *expected; *expected = current; return ret; } #endif /* if we have 64-bit __sync_val_compare_and_swap, assume we have these too: */ #if !defined(PG_HAVE_ATOMIC_FETCH_ADD_U64) && defined(HAVE_GCC__SYNC_INT64_CAS) #define PG_HAVE_ATOMIC_FETCH_ADD_U64 static inline uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_) { return __sync_fetch_and_add(&ptr->value, add_); } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_SUB_U64) && defined(HAVE_GCC__SYNC_INT64_CAS) #define PG_HAVE_ATOMIC_FETCH_SUB_U64 static inline uint64 pg_atomic_fetch_sub_u64_impl(volatile pg_atomic_uint64 *ptr, int64 sub_) { return __sync_fetch_and_sub(&ptr->value, sub_); } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_AND_U64) && defined(HAVE_GCC__SYNC_INT64_CAS) #define PG_HAVE_ATOMIC_FETCH_AND_U64 static inline uint64 pg_atomic_fetch_and_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 and_) { return __sync_fetch_and_and(&ptr->value, and_); } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_OR_U64) && defined(HAVE_GCC__SYNC_INT64_CAS) #define PG_HAVE_ATOMIC_FETCH_OR_U64 static inline uint64 pg_atomic_fetch_or_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 or_) { return __sync_fetch_and_or(&ptr->value, or_); } #endif #endif /* !defined(PG_DISABLE_64_BIT_ATOMICS) */ #endif /* defined(HAVE_ATOMICS) */ pg_query-4.2.3/ext/pg_query/include/port/pg_bswap.h0000644000004100000410000001025414510636647022436 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/port/atomics.h0000644000004100000410000003642214510636647022300 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/port/atomics.h * *------------------------------------------------------------------------- */ #ifndef ATOMICS_H #define ATOMICS_H #ifdef FRONTEND #error "atomics.h may not be included from frontend code" #endif #define INSIDE_ATOMICS_H #include /* * First a set of architecture specific files is included. * * These files can provide the full set of atomics or can do pretty much * nothing if all the compilers commonly used on these platforms provide * usable generics. * * Don't add an inline assembly of the actual atomic operations if all the * common implementations of your platform provide intrinsics. Intrinsics are * much easier to understand and potentially support more architectures. * * It will often make sense to define memory barrier semantics here, since * e.g. generic compiler intrinsics for x86 memory barriers can't know that * postgres doesn't need x86 read/write barriers do anything more than a * compiler barrier. * */ #if defined(__arm__) || defined(__arm) || \ defined(__aarch64__) || defined(__aarch64) #include "port/atomics/arch-arm.h" #elif defined(__i386__) || defined(__i386) || defined(__x86_64__) #include "port/atomics/arch-x86.h" #elif defined(__ia64__) || defined(__ia64) #include "port/atomics/arch-ia64.h" #elif defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__) #include "port/atomics/arch-ppc.h" #elif defined(__hppa) || defined(__hppa__) #include "port/atomics/arch-hppa.h" #endif /* * Compiler specific, but architecture independent implementations. * * Provide architecture independent implementations of the atomic * facilities. At the very least compiler barriers should be provided, but a * full implementation of * * pg_compiler_barrier(), pg_write_barrier(), pg_read_barrier() * * pg_atomic_compare_exchange_u32(), pg_atomic_fetch_add_u32() * using compiler intrinsics are a good idea. */ /* * gcc or compatible, including clang and icc. Exclude xlc. The ppc64le "IBM * XL C/C++ for Linux, V13.1.2" emulates gcc, but __sync_lock_test_and_set() * of one-byte types elicits SIGSEGV. That bug was gone by V13.1.5 (2016-12). */ #if (defined(__GNUC__) || defined(__INTEL_COMPILER)) && !(defined(__IBMC__) || defined(__IBMCPP__)) #include "port/atomics/generic-gcc.h" #elif defined(_MSC_VER) #include "port/atomics/generic-msvc.h" #elif defined(__hpux) && defined(__ia64) && !defined(__GNUC__) #include "port/atomics/generic-acc.h" #elif defined(__SUNPRO_C) && !defined(__GNUC__) #include "port/atomics/generic-sunpro.h" #else /* * Unsupported compiler, we'll likely use slower fallbacks... At least * compiler barriers should really be provided. */ #endif /* * Provide a full fallback of the pg_*_barrier(), pg_atomic**_flag and * pg_atomic_* APIs for platforms without sufficient spinlock and/or atomics * support. In the case of spinlock backed atomics the emulation is expected * to be efficient, although less so than native atomics support. */ #include "port/atomics/fallback.h" /* * Provide additional operations using supported infrastructure. These are * expected to be efficient if the underlying atomic operations are efficient. */ #include "port/atomics/generic.h" /* * pg_compiler_barrier - prevent the compiler from moving code across * * A compiler barrier need not (and preferably should not) emit any actual * machine code, but must act as an optimization fence: the compiler must not * reorder loads or stores to main memory around the barrier. However, the * CPU may still reorder loads or stores at runtime, if the architecture's * memory model permits this. */ #define pg_compiler_barrier() pg_compiler_barrier_impl() /* * pg_memory_barrier - prevent the CPU from reordering memory access * * A memory barrier must act as a compiler barrier, and in addition must * guarantee that all loads and stores issued prior to the barrier are * completed before any loads or stores issued after the barrier. Unless * loads and stores are totally ordered (which is not the case on most * architectures) this requires issuing some sort of memory fencing * instruction. */ #define pg_memory_barrier() pg_memory_barrier_impl() /* * pg_(read|write)_barrier - prevent the CPU from reordering memory access * * A read barrier must act as a compiler barrier, and in addition must * guarantee that any loads issued prior to the barrier are completed before * any loads issued after the barrier. Similarly, a write barrier acts * as a compiler barrier, and also orders stores. Read and write barriers * are thus weaker than a full memory barrier, but stronger than a compiler * barrier. In practice, on machines with strong memory ordering, read and * write barriers may require nothing more than a compiler barrier. */ #define pg_read_barrier() pg_read_barrier_impl() #define pg_write_barrier() pg_write_barrier_impl() /* * Spinloop delay - Allow CPU to relax in busy loops */ #define pg_spin_delay() pg_spin_delay_impl() /* * pg_atomic_init_flag - initialize atomic flag. * * No barrier semantics. */ static inline void pg_atomic_init_flag(volatile pg_atomic_flag *ptr) { pg_atomic_init_flag_impl(ptr); } /* * pg_atomic_test_set_flag - TAS() * * Returns true if the flag has successfully been set, false otherwise. * * Acquire (including read barrier) semantics. */ static inline bool pg_atomic_test_set_flag(volatile pg_atomic_flag *ptr) { return pg_atomic_test_set_flag_impl(ptr); } /* * pg_atomic_unlocked_test_flag - Check if the lock is free * * Returns true if the flag currently is not set, false otherwise. * * No barrier semantics. */ static inline bool pg_atomic_unlocked_test_flag(volatile pg_atomic_flag *ptr) { return pg_atomic_unlocked_test_flag_impl(ptr); } /* * pg_atomic_clear_flag - release lock set by TAS() * * Release (including write barrier) semantics. */ static inline void pg_atomic_clear_flag(volatile pg_atomic_flag *ptr) { pg_atomic_clear_flag_impl(ptr); } /* * pg_atomic_init_u32 - initialize atomic variable * * Has to be done before any concurrent usage.. * * No barrier semantics. */ static inline void pg_atomic_init_u32(volatile pg_atomic_uint32 *ptr, uint32 val) { AssertPointerAlignment(ptr, 4); pg_atomic_init_u32_impl(ptr, val); } /* * pg_atomic_read_u32 - unlocked read from atomic variable. * * The read is guaranteed to return a value as it has been written by this or * another process at some point in the past. There's however no cache * coherency interaction guaranteeing the value hasn't since been written to * again. * * No barrier semantics. */ static inline uint32 pg_atomic_read_u32(volatile pg_atomic_uint32 *ptr) { AssertPointerAlignment(ptr, 4); return pg_atomic_read_u32_impl(ptr); } /* * pg_atomic_write_u32 - write to atomic variable. * * The write is guaranteed to succeed as a whole, i.e. it's not possible to * observe a partial write for any reader. Note that this correctly interacts * with pg_atomic_compare_exchange_u32, in contrast to * pg_atomic_unlocked_write_u32(). * * No barrier semantics. */ static inline void pg_atomic_write_u32(volatile pg_atomic_uint32 *ptr, uint32 val) { AssertPointerAlignment(ptr, 4); pg_atomic_write_u32_impl(ptr, val); } /* * pg_atomic_unlocked_write_u32 - unlocked write to atomic variable. * * The write is guaranteed to succeed as a whole, i.e. it's not possible to * observe a partial write for any reader. But note that writing this way is * not guaranteed to correctly interact with read-modify-write operations like * pg_atomic_compare_exchange_u32. This should only be used in cases where * minor performance regressions due to atomics emulation are unacceptable. * * No barrier semantics. */ static inline void pg_atomic_unlocked_write_u32(volatile pg_atomic_uint32 *ptr, uint32 val) { AssertPointerAlignment(ptr, 4); pg_atomic_unlocked_write_u32_impl(ptr, val); } /* * pg_atomic_exchange_u32 - exchange newval with current value * * Returns the old value of 'ptr' before the swap. * * Full barrier semantics. */ static inline uint32 pg_atomic_exchange_u32(volatile pg_atomic_uint32 *ptr, uint32 newval) { AssertPointerAlignment(ptr, 4); return pg_atomic_exchange_u32_impl(ptr, newval); } /* * pg_atomic_compare_exchange_u32 - CAS operation * * Atomically compare the current value of ptr with *expected and store newval * iff ptr and *expected have the same value. The current value of *ptr will * always be stored in *expected. * * Return true if values have been exchanged, false otherwise. * * Full barrier semantics. */ static inline bool pg_atomic_compare_exchange_u32(volatile pg_atomic_uint32 *ptr, uint32 *expected, uint32 newval) { AssertPointerAlignment(ptr, 4); AssertPointerAlignment(expected, 4); return pg_atomic_compare_exchange_u32_impl(ptr, expected, newval); } /* * pg_atomic_fetch_add_u32 - atomically add to variable * * Returns the value of ptr before the arithmetic operation. * * Full barrier semantics. */ static inline uint32 pg_atomic_fetch_add_u32(volatile pg_atomic_uint32 *ptr, int32 add_) { AssertPointerAlignment(ptr, 4); return pg_atomic_fetch_add_u32_impl(ptr, add_); } /* * pg_atomic_fetch_sub_u32 - atomically subtract from variable * * Returns the value of ptr before the arithmetic operation. Note that sub_ * may not be INT_MIN due to platform limitations. * * Full barrier semantics. */ static inline uint32 pg_atomic_fetch_sub_u32(volatile pg_atomic_uint32 *ptr, int32 sub_) { AssertPointerAlignment(ptr, 4); Assert(sub_ != INT_MIN); return pg_atomic_fetch_sub_u32_impl(ptr, sub_); } /* * pg_atomic_fetch_and_u32 - atomically bit-and and_ with variable * * Returns the value of ptr before the arithmetic operation. * * Full barrier semantics. */ static inline uint32 pg_atomic_fetch_and_u32(volatile pg_atomic_uint32 *ptr, uint32 and_) { AssertPointerAlignment(ptr, 4); return pg_atomic_fetch_and_u32_impl(ptr, and_); } /* * pg_atomic_fetch_or_u32 - atomically bit-or or_ with variable * * Returns the value of ptr before the arithmetic operation. * * Full barrier semantics. */ static inline uint32 pg_atomic_fetch_or_u32(volatile pg_atomic_uint32 *ptr, uint32 or_) { AssertPointerAlignment(ptr, 4); return pg_atomic_fetch_or_u32_impl(ptr, or_); } /* * pg_atomic_add_fetch_u32 - atomically add to variable * * Returns the value of ptr after the arithmetic operation. * * Full barrier semantics. */ static inline uint32 pg_atomic_add_fetch_u32(volatile pg_atomic_uint32 *ptr, int32 add_) { AssertPointerAlignment(ptr, 4); return pg_atomic_add_fetch_u32_impl(ptr, add_); } /* * pg_atomic_sub_fetch_u32 - atomically subtract from variable * * Returns the value of ptr after the arithmetic operation. Note that sub_ may * not be INT_MIN due to platform limitations. * * Full barrier semantics. */ static inline uint32 pg_atomic_sub_fetch_u32(volatile pg_atomic_uint32 *ptr, int32 sub_) { AssertPointerAlignment(ptr, 4); Assert(sub_ != INT_MIN); return pg_atomic_sub_fetch_u32_impl(ptr, sub_); } /* ---- * The 64 bit operations have the same semantics as their 32bit counterparts * if they are available. Check the corresponding 32bit function for * documentation. * ---- */ static inline void pg_atomic_init_u64(volatile pg_atomic_uint64 *ptr, uint64 val) { /* * Can't necessarily enforce alignment - and don't need it - when using * the spinlock based fallback implementation. Therefore only assert when * not using it. */ #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif pg_atomic_init_u64_impl(ptr, val); } static inline uint64 pg_atomic_read_u64(volatile pg_atomic_uint64 *ptr) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif return pg_atomic_read_u64_impl(ptr); } static inline void pg_atomic_write_u64(volatile pg_atomic_uint64 *ptr, uint64 val) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif pg_atomic_write_u64_impl(ptr, val); } static inline uint64 pg_atomic_exchange_u64(volatile pg_atomic_uint64 *ptr, uint64 newval) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif return pg_atomic_exchange_u64_impl(ptr, newval); } static inline bool pg_atomic_compare_exchange_u64(volatile pg_atomic_uint64 *ptr, uint64 *expected, uint64 newval) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); AssertPointerAlignment(expected, 8); #endif return pg_atomic_compare_exchange_u64_impl(ptr, expected, newval); } static inline uint64 pg_atomic_fetch_add_u64(volatile pg_atomic_uint64 *ptr, int64 add_) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif return pg_atomic_fetch_add_u64_impl(ptr, add_); } static inline uint64 pg_atomic_fetch_sub_u64(volatile pg_atomic_uint64 *ptr, int64 sub_) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif Assert(sub_ != PG_INT64_MIN); return pg_atomic_fetch_sub_u64_impl(ptr, sub_); } static inline uint64 pg_atomic_fetch_and_u64(volatile pg_atomic_uint64 *ptr, uint64 and_) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif return pg_atomic_fetch_and_u64_impl(ptr, and_); } static inline uint64 pg_atomic_fetch_or_u64(volatile pg_atomic_uint64 *ptr, uint64 or_) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif return pg_atomic_fetch_or_u64_impl(ptr, or_); } static inline uint64 pg_atomic_add_fetch_u64(volatile pg_atomic_uint64 *ptr, int64 add_) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif return pg_atomic_add_fetch_u64_impl(ptr, add_); } static inline uint64 pg_atomic_sub_fetch_u64(volatile pg_atomic_uint64 *ptr, int64 sub_) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif Assert(sub_ != PG_INT64_MIN); return pg_atomic_sub_fetch_u64_impl(ptr, sub_); } #undef INSIDE_ATOMICS_H #endif /* ATOMICS_H */ pg_query-4.2.3/ext/pg_query/include/port/pg_bitutils.h0000644000004100000410000001525314510636647023165 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pg_bitutils.h * Miscellaneous functions for bit-wise operations. * * * Copyright (c) 2019-2022, PostgreSQL Global Development Group * * src/include/port/pg_bitutils.h * *------------------------------------------------------------------------- */ #ifndef PG_BITUTILS_H #define PG_BITUTILS_H 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); #else int shift = 32 - 8; Assert(word != 0); while ((word >> shift) == 0) shift -= 8; return shift + pg_leftmost_one_pos[(word >> shift) & 255]; #endif /* HAVE__BUILTIN_CLZ */ } /* * pg_leftmost_one_pos64 * As above, but for a 64-bit word. */ static inline int pg_leftmost_one_pos64(uint64 word) { #ifdef HAVE__BUILTIN_CLZ Assert(word != 0); #if defined(HAVE_LONG_INT_64) return 63 - __builtin_clzl(word); #elif defined(HAVE_LONG_LONG_INT_64) return 63 - __builtin_clzll(word); #else #error must have a working 64-bit integer datatype #endif #else /* !HAVE__BUILTIN_CLZ */ int shift = 64 - 8; Assert(word != 0); while ((word >> shift) == 0) shift -= 8; return shift + pg_leftmost_one_pos[(word >> shift) & 255]; #endif /* HAVE__BUILTIN_CLZ */ } /* * pg_rightmost_one_pos32 * Returns the position of the least significant set bit in "word", * measured from the least significant bit. word must not be 0. */ static inline int pg_rightmost_one_pos32(uint32 word) { #ifdef HAVE__BUILTIN_CTZ Assert(word != 0); return __builtin_ctz(word); #else int result = 0; Assert(word != 0); while ((word & 255) == 0) { word >>= 8; result += 8; } result += pg_rightmost_one_pos[word & 255]; return result; #endif /* HAVE__BUILTIN_CTZ */ } /* * pg_rightmost_one_pos64 * As above, but for a 64-bit word. */ static inline int pg_rightmost_one_pos64(uint64 word) { #ifdef HAVE__BUILTIN_CTZ Assert(word != 0); #if defined(HAVE_LONG_INT_64) return __builtin_ctzl(word); #elif defined(HAVE_LONG_LONG_INT_64) return __builtin_ctzll(word); #else #error must have a working 64-bit integer datatype #endif #else /* !HAVE__BUILTIN_CTZ */ int result = 0; Assert(word != 0); while ((word & 255) == 0) { word >>= 8; result += 8; } result += pg_rightmost_one_pos[word & 255]; return result; #endif /* HAVE__BUILTIN_CTZ */ } /* * pg_nextpower2_32 * Returns the next 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_nextpower2_size_t * Returns the next higher power of 2 above 'num', for a size_t input. */ #if SIZEOF_SIZE_T == 4 #define pg_nextpower2_size_t(num) pg_nextpower2_32(num) #else #define pg_nextpower2_size_t(num) pg_nextpower2_64(num) #endif /* * 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_prevpower2_size_t * Returns the next lower power of 2 below 'num', for a size_t input. */ #if SIZEOF_SIZE_T == 4 #define pg_prevpower2_size_t(num) pg_prevpower2_32(num) #else #define pg_prevpower2_size_t(num) pg_prevpower2_64(num) #endif /* * 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 int (*pg_popcount32) (uint32 word); extern int (*pg_popcount64) (uint64 word); #else /* Use a portable implementation -- no need for a function pointer. */ extern int pg_popcount32(uint32 word); extern int pg_popcount64(uint64 word); #endif /* TRY_POPCNT_FAST */ /* Count the number of one-bits in a byte array */ extern uint64 pg_popcount(const char *buf, int bytes); /* * Rotate the bits of "word" to the right/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)); } #endif /* PG_BITUTILS_H */ pg_query-4.2.3/ext/pg_query/include/pl_reserved_kwlist_d.h0000644000004100000410000000403214510636647024057 0ustar www-datawww-data/*------------------------------------------------------------------------- * * pl_reserved_kwlist_d.h * List of keywords represented as a ScanKeywordList. * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/pg_query_readfuncs_conds.c0000644000004100000410000006123614510636647024724 0ustar www-datawww-data// 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(Var, Var, var, VAR, Var, var); READ_COND(Param, Param, param, PARAM, Param, param); READ_COND(Aggref, Aggref, aggref, AGGREF, Aggref, aggref); READ_COND(GroupingFunc, GroupingFunc, grouping_func, GROUPING_FUNC, GroupingFunc, grouping_func); READ_COND(WindowFunc, WindowFunc, window_func, WINDOW_FUNC, WindowFunc, window_func); READ_COND(SubscriptingRef, SubscriptingRef, subscripting_ref, SUBSCRIPTING_REF, SubscriptingRef, subscripting_ref); READ_COND(FuncExpr, FuncExpr, func_expr, FUNC_EXPR, FuncExpr, func_expr); READ_COND(NamedArgExpr, NamedArgExpr, named_arg_expr, NAMED_ARG_EXPR, NamedArgExpr, named_arg_expr); READ_COND(OpExpr, OpExpr, op_expr, OP_EXPR, OpExpr, op_expr); READ_COND(DistinctExpr, DistinctExpr, distinct_expr, DISTINCT_EXPR, DistinctExpr, distinct_expr); READ_COND(NullIfExpr, NullIfExpr, null_if_expr, NULL_IF_EXPR, NullIfExpr, null_if_expr); READ_COND(ScalarArrayOpExpr, ScalarArrayOpExpr, scalar_array_op_expr, SCALAR_ARRAY_OP_EXPR, ScalarArrayOpExpr, scalar_array_op_expr); READ_COND(BoolExpr, BoolExpr, bool_expr, BOOL_EXPR, BoolExpr, bool_expr); READ_COND(SubLink, SubLink, sub_link, SUB_LINK, SubLink, sub_link); READ_COND(SubPlan, SubPlan, sub_plan, SUB_PLAN, SubPlan, sub_plan); READ_COND(AlternativeSubPlan, AlternativeSubPlan, alternative_sub_plan, ALTERNATIVE_SUB_PLAN, AlternativeSubPlan, alternative_sub_plan); READ_COND(FieldSelect, FieldSelect, field_select, FIELD_SELECT, FieldSelect, field_select); READ_COND(FieldStore, FieldStore, field_store, FIELD_STORE, FieldStore, field_store); READ_COND(RelabelType, RelabelType, relabel_type, RELABEL_TYPE, RelabelType, relabel_type); READ_COND(CoerceViaIO, CoerceViaIO, coerce_via_io, COERCE_VIA_IO, CoerceViaIO, coerce_via_io); READ_COND(ArrayCoerceExpr, ArrayCoerceExpr, array_coerce_expr, ARRAY_COERCE_EXPR, ArrayCoerceExpr, array_coerce_expr); READ_COND(ConvertRowtypeExpr, ConvertRowtypeExpr, convert_rowtype_expr, CONVERT_ROWTYPE_EXPR, ConvertRowtypeExpr, convert_rowtype_expr); READ_COND(CollateExpr, CollateExpr, collate_expr, COLLATE_EXPR, CollateExpr, collate_expr); READ_COND(CaseExpr, CaseExpr, case_expr, CASE_EXPR, CaseExpr, case_expr); READ_COND(CaseWhen, CaseWhen, case_when, CASE_WHEN, CaseWhen, case_when); READ_COND(CaseTestExpr, CaseTestExpr, case_test_expr, CASE_TEST_EXPR, CaseTestExpr, case_test_expr); READ_COND(ArrayExpr, ArrayExpr, array_expr, ARRAY_EXPR, ArrayExpr, array_expr); READ_COND(RowExpr, RowExpr, row_expr, ROW_EXPR, RowExpr, row_expr); READ_COND(RowCompareExpr, RowCompareExpr, row_compare_expr, ROW_COMPARE_EXPR, RowCompareExpr, row_compare_expr); READ_COND(CoalesceExpr, CoalesceExpr, coalesce_expr, COALESCE_EXPR, CoalesceExpr, coalesce_expr); READ_COND(MinMaxExpr, MinMaxExpr, min_max_expr, MIN_MAX_EXPR, MinMaxExpr, min_max_expr); READ_COND(SQLValueFunction, SQLValueFunction, sqlvalue_function, SQLVALUE_FUNCTION, SQLValueFunction, sqlvalue_function); READ_COND(XmlExpr, XmlExpr, xml_expr, XML_EXPR, XmlExpr, xml_expr); READ_COND(NullTest, NullTest, null_test, NULL_TEST, NullTest, null_test); READ_COND(BooleanTest, BooleanTest, boolean_test, BOOLEAN_TEST, BooleanTest, boolean_test); READ_COND(CoerceToDomain, CoerceToDomain, coerce_to_domain, COERCE_TO_DOMAIN, CoerceToDomain, coerce_to_domain); READ_COND(CoerceToDomainValue, CoerceToDomainValue, coerce_to_domain_value, COERCE_TO_DOMAIN_VALUE, CoerceToDomainValue, coerce_to_domain_value); READ_COND(SetToDefault, SetToDefault, set_to_default, SET_TO_DEFAULT, SetToDefault, set_to_default); READ_COND(CurrentOfExpr, CurrentOfExpr, current_of_expr, CURRENT_OF_EXPR, CurrentOfExpr, current_of_expr); READ_COND(NextValueExpr, NextValueExpr, next_value_expr, NEXT_VALUE_EXPR, NextValueExpr, next_value_expr); READ_COND(InferenceElem, InferenceElem, inference_elem, INFERENCE_ELEM, InferenceElem, inference_elem); READ_COND(TargetEntry, TargetEntry, target_entry, TARGET_ENTRY, TargetEntry, target_entry); READ_COND(RangeTblRef, RangeTblRef, range_tbl_ref, RANGE_TBL_REF, RangeTblRef, range_tbl_ref); READ_COND(JoinExpr, JoinExpr, join_expr, JOIN_EXPR, JoinExpr, join_expr); READ_COND(FromExpr, FromExpr, from_expr, FROM_EXPR, FromExpr, from_expr); READ_COND(OnConflictExpr, OnConflictExpr, on_conflict_expr, ON_CONFLICT_EXPR, OnConflictExpr, on_conflict_expr); READ_COND(IntoClause, IntoClause, into_clause, INTO_CLAUSE, IntoClause, into_clause); READ_COND(MergeAction, MergeAction, merge_action, MERGE_ACTION, MergeAction, merge_action); READ_COND(RawStmt, RawStmt, raw_stmt, RAW_STMT, RawStmt, raw_stmt); READ_COND(Query, Query, query, QUERY, Query, query); READ_COND(InsertStmt, InsertStmt, insert_stmt, INSERT_STMT, InsertStmt, insert_stmt); READ_COND(DeleteStmt, DeleteStmt, delete_stmt, DELETE_STMT, DeleteStmt, delete_stmt); READ_COND(UpdateStmt, UpdateStmt, update_stmt, UPDATE_STMT, UpdateStmt, update_stmt); READ_COND(MergeStmt, MergeStmt, merge_stmt, MERGE_STMT, MergeStmt, merge_stmt); READ_COND(SelectStmt, SelectStmt, select_stmt, SELECT_STMT, SelectStmt, select_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(AlterTableStmt, AlterTableStmt, alter_table_stmt, ALTER_TABLE_STMT, AlterTableStmt, alter_table_stmt); READ_COND(AlterTableCmd, AlterTableCmd, alter_table_cmd, ALTER_TABLE_CMD, AlterTableCmd, alter_table_cmd); READ_COND(AlterDomainStmt, AlterDomainStmt, alter_domain_stmt, ALTER_DOMAIN_STMT, AlterDomainStmt, alter_domain_stmt); READ_COND(SetOperationStmt, SetOperationStmt, set_operation_stmt, SET_OPERATION_STMT, SetOperationStmt, set_operation_stmt); READ_COND(GrantStmt, GrantStmt, grant_stmt, GRANT_STMT, GrantStmt, grant_stmt); READ_COND(GrantRoleStmt, GrantRoleStmt, grant_role_stmt, GRANT_ROLE_STMT, GrantRoleStmt, grant_role_stmt); READ_COND(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt, alter_default_privileges_stmt, ALTER_DEFAULT_PRIVILEGES_STMT, AlterDefaultPrivilegesStmt, alter_default_privileges_stmt); READ_COND(ClosePortalStmt, ClosePortalStmt, close_portal_stmt, CLOSE_PORTAL_STMT, ClosePortalStmt, close_portal_stmt); READ_COND(ClusterStmt, ClusterStmt, cluster_stmt, CLUSTER_STMT, ClusterStmt, cluster_stmt); READ_COND(CopyStmt, CopyStmt, copy_stmt, COPY_STMT, CopyStmt, copy_stmt); READ_COND(CreateStmt, CreateStmt, create_stmt, CREATE_STMT, CreateStmt, create_stmt); READ_COND(DefineStmt, DefineStmt, define_stmt, DEFINE_STMT, DefineStmt, define_stmt); READ_COND(DropStmt, DropStmt, drop_stmt, DROP_STMT, DropStmt, drop_stmt); READ_COND(TruncateStmt, TruncateStmt, truncate_stmt, TRUNCATE_STMT, TruncateStmt, truncate_stmt); READ_COND(CommentStmt, CommentStmt, comment_stmt, COMMENT_STMT, CommentStmt, comment_stmt); READ_COND(FetchStmt, FetchStmt, fetch_stmt, FETCH_STMT, FetchStmt, fetch_stmt); READ_COND(IndexStmt, IndexStmt, index_stmt, INDEX_STMT, IndexStmt, index_stmt); READ_COND(CreateFunctionStmt, CreateFunctionStmt, create_function_stmt, CREATE_FUNCTION_STMT, CreateFunctionStmt, create_function_stmt); READ_COND(AlterFunctionStmt, AlterFunctionStmt, alter_function_stmt, ALTER_FUNCTION_STMT, AlterFunctionStmt, alter_function_stmt); READ_COND(DoStmt, DoStmt, do_stmt, DO_STMT, DoStmt, do_stmt); READ_COND(RenameStmt, RenameStmt, rename_stmt, RENAME_STMT, RenameStmt, rename_stmt); READ_COND(RuleStmt, RuleStmt, rule_stmt, RULE_STMT, RuleStmt, rule_stmt); READ_COND(NotifyStmt, NotifyStmt, notify_stmt, NOTIFY_STMT, NotifyStmt, notify_stmt); READ_COND(ListenStmt, ListenStmt, listen_stmt, LISTEN_STMT, ListenStmt, listen_stmt); READ_COND(UnlistenStmt, UnlistenStmt, unlisten_stmt, UNLISTEN_STMT, UnlistenStmt, unlisten_stmt); READ_COND(TransactionStmt, TransactionStmt, transaction_stmt, TRANSACTION_STMT, TransactionStmt, transaction_stmt); READ_COND(ViewStmt, ViewStmt, view_stmt, VIEW_STMT, ViewStmt, view_stmt); READ_COND(LoadStmt, LoadStmt, load_stmt, LOAD_STMT, LoadStmt, load_stmt); READ_COND(CreateDomainStmt, CreateDomainStmt, create_domain_stmt, CREATE_DOMAIN_STMT, CreateDomainStmt, create_domain_stmt); READ_COND(CreatedbStmt, CreatedbStmt, createdb_stmt, CREATEDB_STMT, CreatedbStmt, createdb_stmt); READ_COND(DropdbStmt, DropdbStmt, dropdb_stmt, DROPDB_STMT, DropdbStmt, dropdb_stmt); READ_COND(VacuumStmt, VacuumStmt, vacuum_stmt, VACUUM_STMT, VacuumStmt, vacuum_stmt); READ_COND(ExplainStmt, ExplainStmt, explain_stmt, EXPLAIN_STMT, ExplainStmt, explain_stmt); READ_COND(CreateTableAsStmt, CreateTableAsStmt, create_table_as_stmt, CREATE_TABLE_AS_STMT, CreateTableAsStmt, create_table_as_stmt); READ_COND(CreateSeqStmt, CreateSeqStmt, create_seq_stmt, CREATE_SEQ_STMT, CreateSeqStmt, create_seq_stmt); READ_COND(AlterSeqStmt, AlterSeqStmt, alter_seq_stmt, ALTER_SEQ_STMT, AlterSeqStmt, alter_seq_stmt); READ_COND(VariableSetStmt, VariableSetStmt, variable_set_stmt, VARIABLE_SET_STMT, VariableSetStmt, variable_set_stmt); READ_COND(VariableShowStmt, VariableShowStmt, variable_show_stmt, VARIABLE_SHOW_STMT, VariableShowStmt, variable_show_stmt); READ_COND(DiscardStmt, DiscardStmt, discard_stmt, DISCARD_STMT, DiscardStmt, discard_stmt); READ_COND(CreateTrigStmt, CreateTrigStmt, create_trig_stmt, CREATE_TRIG_STMT, CreateTrigStmt, create_trig_stmt); READ_COND(CreatePLangStmt, CreatePLangStmt, create_plang_stmt, CREATE_PLANG_STMT, CreatePLangStmt, create_plang_stmt); READ_COND(CreateRoleStmt, CreateRoleStmt, create_role_stmt, CREATE_ROLE_STMT, CreateRoleStmt, create_role_stmt); READ_COND(AlterRoleStmt, AlterRoleStmt, alter_role_stmt, ALTER_ROLE_STMT, AlterRoleStmt, alter_role_stmt); READ_COND(DropRoleStmt, DropRoleStmt, drop_role_stmt, DROP_ROLE_STMT, DropRoleStmt, drop_role_stmt); READ_COND(LockStmt, LockStmt, lock_stmt, LOCK_STMT, LockStmt, lock_stmt); READ_COND(ConstraintsSetStmt, ConstraintsSetStmt, constraints_set_stmt, CONSTRAINTS_SET_STMT, ConstraintsSetStmt, constraints_set_stmt); READ_COND(ReindexStmt, ReindexStmt, reindex_stmt, REINDEX_STMT, ReindexStmt, reindex_stmt); READ_COND(CheckPointStmt, CheckPointStmt, check_point_stmt, CHECK_POINT_STMT, CheckPointStmt, check_point_stmt); READ_COND(CreateSchemaStmt, CreateSchemaStmt, create_schema_stmt, CREATE_SCHEMA_STMT, CreateSchemaStmt, create_schema_stmt); READ_COND(AlterDatabaseStmt, AlterDatabaseStmt, alter_database_stmt, ALTER_DATABASE_STMT, AlterDatabaseStmt, alter_database_stmt); READ_COND(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(AlterRoleSetStmt, AlterRoleSetStmt, alter_role_set_stmt, ALTER_ROLE_SET_STMT, AlterRoleSetStmt, alter_role_set_stmt); READ_COND(CreateConversionStmt, CreateConversionStmt, create_conversion_stmt, CREATE_CONVERSION_STMT, CreateConversionStmt, create_conversion_stmt); READ_COND(CreateCastStmt, CreateCastStmt, create_cast_stmt, CREATE_CAST_STMT, CreateCastStmt, create_cast_stmt); READ_COND(CreateOpClassStmt, CreateOpClassStmt, create_op_class_stmt, CREATE_OP_CLASS_STMT, CreateOpClassStmt, create_op_class_stmt); READ_COND(CreateOpFamilyStmt, CreateOpFamilyStmt, create_op_family_stmt, CREATE_OP_FAMILY_STMT, CreateOpFamilyStmt, create_op_family_stmt); READ_COND(AlterOpFamilyStmt, AlterOpFamilyStmt, alter_op_family_stmt, ALTER_OP_FAMILY_STMT, AlterOpFamilyStmt, alter_op_family_stmt); READ_COND(PrepareStmt, PrepareStmt, prepare_stmt, PREPARE_STMT, PrepareStmt, prepare_stmt); READ_COND(ExecuteStmt, ExecuteStmt, execute_stmt, EXECUTE_STMT, ExecuteStmt, execute_stmt); READ_COND(DeallocateStmt, DeallocateStmt, deallocate_stmt, DEALLOCATE_STMT, DeallocateStmt, deallocate_stmt); READ_COND(DeclareCursorStmt, DeclareCursorStmt, declare_cursor_stmt, DECLARE_CURSOR_STMT, DeclareCursorStmt, declare_cursor_stmt); READ_COND(CreateTableSpaceStmt, CreateTableSpaceStmt, create_table_space_stmt, CREATE_TABLE_SPACE_STMT, CreateTableSpaceStmt, create_table_space_stmt); READ_COND(DropTableSpaceStmt, DropTableSpaceStmt, drop_table_space_stmt, DROP_TABLE_SPACE_STMT, DropTableSpaceStmt, drop_table_space_stmt); READ_COND(AlterObjectDependsStmt, AlterObjectDependsStmt, alter_object_depends_stmt, ALTER_OBJECT_DEPENDS_STMT, AlterObjectDependsStmt, alter_object_depends_stmt); READ_COND(AlterObjectSchemaStmt, AlterObjectSchemaStmt, alter_object_schema_stmt, ALTER_OBJECT_SCHEMA_STMT, AlterObjectSchemaStmt, alter_object_schema_stmt); READ_COND(AlterOwnerStmt, AlterOwnerStmt, alter_owner_stmt, ALTER_OWNER_STMT, AlterOwnerStmt, alter_owner_stmt); READ_COND(AlterOperatorStmt, AlterOperatorStmt, alter_operator_stmt, ALTER_OPERATOR_STMT, AlterOperatorStmt, alter_operator_stmt); READ_COND(AlterTypeStmt, AlterTypeStmt, alter_type_stmt, ALTER_TYPE_STMT, AlterTypeStmt, alter_type_stmt); READ_COND(DropOwnedStmt, DropOwnedStmt, drop_owned_stmt, DROP_OWNED_STMT, DropOwnedStmt, drop_owned_stmt); READ_COND(ReassignOwnedStmt, ReassignOwnedStmt, reassign_owned_stmt, REASSIGN_OWNED_STMT, ReassignOwnedStmt, reassign_owned_stmt); READ_COND(CompositeTypeStmt, CompositeTypeStmt, composite_type_stmt, COMPOSITE_TYPE_STMT, CompositeTypeStmt, composite_type_stmt); READ_COND(CreateEnumStmt, CreateEnumStmt, create_enum_stmt, CREATE_ENUM_STMT, CreateEnumStmt, create_enum_stmt); READ_COND(CreateRangeStmt, CreateRangeStmt, create_range_stmt, CREATE_RANGE_STMT, CreateRangeStmt, create_range_stmt); READ_COND(AlterEnumStmt, AlterEnumStmt, alter_enum_stmt, ALTER_ENUM_STMT, AlterEnumStmt, alter_enum_stmt); READ_COND(AlterTSDictionaryStmt, AlterTSDictionaryStmt, alter_tsdictionary_stmt, ALTER_TSDICTIONARY_STMT, AlterTSDictionaryStmt, alter_tsdictionary_stmt); READ_COND(AlterTSConfigurationStmt, AlterTSConfigurationStmt, alter_tsconfiguration_stmt, ALTER_TSCONFIGURATION_STMT, AlterTSConfigurationStmt, alter_tsconfiguration_stmt); READ_COND(CreateFdwStmt, CreateFdwStmt, create_fdw_stmt, CREATE_FDW_STMT, CreateFdwStmt, create_fdw_stmt); READ_COND(AlterFdwStmt, AlterFdwStmt, alter_fdw_stmt, ALTER_FDW_STMT, AlterFdwStmt, alter_fdw_stmt); READ_COND(CreateForeignServerStmt, CreateForeignServerStmt, create_foreign_server_stmt, CREATE_FOREIGN_SERVER_STMT, CreateForeignServerStmt, create_foreign_server_stmt); READ_COND(AlterForeignServerStmt, AlterForeignServerStmt, alter_foreign_server_stmt, ALTER_FOREIGN_SERVER_STMT, AlterForeignServerStmt, alter_foreign_server_stmt); READ_COND(CreateUserMappingStmt, CreateUserMappingStmt, create_user_mapping_stmt, CREATE_USER_MAPPING_STMT, CreateUserMappingStmt, create_user_mapping_stmt); READ_COND(AlterUserMappingStmt, AlterUserMappingStmt, alter_user_mapping_stmt, ALTER_USER_MAPPING_STMT, AlterUserMappingStmt, alter_user_mapping_stmt); READ_COND(DropUserMappingStmt, DropUserMappingStmt, drop_user_mapping_stmt, DROP_USER_MAPPING_STMT, DropUserMappingStmt, drop_user_mapping_stmt); READ_COND(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt, alter_table_space_options_stmt, ALTER_TABLE_SPACE_OPTIONS_STMT, AlterTableSpaceOptionsStmt, alter_table_space_options_stmt); READ_COND(AlterTableMoveAllStmt, AlterTableMoveAllStmt, alter_table_move_all_stmt, ALTER_TABLE_MOVE_ALL_STMT, AlterTableMoveAllStmt, alter_table_move_all_stmt); READ_COND(SecLabelStmt, SecLabelStmt, sec_label_stmt, SEC_LABEL_STMT, SecLabelStmt, sec_label_stmt); READ_COND(CreateForeignTableStmt, CreateForeignTableStmt, create_foreign_table_stmt, CREATE_FOREIGN_TABLE_STMT, CreateForeignTableStmt, create_foreign_table_stmt); READ_COND(ImportForeignSchemaStmt, ImportForeignSchemaStmt, import_foreign_schema_stmt, IMPORT_FOREIGN_SCHEMA_STMT, ImportForeignSchemaStmt, import_foreign_schema_stmt); READ_COND(CreateExtensionStmt, CreateExtensionStmt, create_extension_stmt, CREATE_EXTENSION_STMT, CreateExtensionStmt, create_extension_stmt); READ_COND(AlterExtensionStmt, AlterExtensionStmt, alter_extension_stmt, ALTER_EXTENSION_STMT, AlterExtensionStmt, alter_extension_stmt); READ_COND(AlterExtensionContentsStmt, AlterExtensionContentsStmt, alter_extension_contents_stmt, ALTER_EXTENSION_CONTENTS_STMT, AlterExtensionContentsStmt, alter_extension_contents_stmt); READ_COND(CreateEventTrigStmt, CreateEventTrigStmt, create_event_trig_stmt, CREATE_EVENT_TRIG_STMT, CreateEventTrigStmt, create_event_trig_stmt); READ_COND(AlterEventTrigStmt, AlterEventTrigStmt, alter_event_trig_stmt, ALTER_EVENT_TRIG_STMT, AlterEventTrigStmt, alter_event_trig_stmt); READ_COND(RefreshMatViewStmt, RefreshMatViewStmt, refresh_mat_view_stmt, REFRESH_MAT_VIEW_STMT, RefreshMatViewStmt, refresh_mat_view_stmt); READ_COND(ReplicaIdentityStmt, ReplicaIdentityStmt, replica_identity_stmt, REPLICA_IDENTITY_STMT, ReplicaIdentityStmt, replica_identity_stmt); READ_COND(AlterSystemStmt, AlterSystemStmt, alter_system_stmt, ALTER_SYSTEM_STMT, AlterSystemStmt, alter_system_stmt); READ_COND(CreatePolicyStmt, CreatePolicyStmt, create_policy_stmt, CREATE_POLICY_STMT, CreatePolicyStmt, create_policy_stmt); READ_COND(AlterPolicyStmt, AlterPolicyStmt, alter_policy_stmt, ALTER_POLICY_STMT, AlterPolicyStmt, alter_policy_stmt); READ_COND(CreateTransformStmt, CreateTransformStmt, create_transform_stmt, CREATE_TRANSFORM_STMT, CreateTransformStmt, create_transform_stmt); READ_COND(CreateAmStmt, CreateAmStmt, create_am_stmt, CREATE_AM_STMT, CreateAmStmt, create_am_stmt); READ_COND(CreatePublicationStmt, CreatePublicationStmt, create_publication_stmt, CREATE_PUBLICATION_STMT, CreatePublicationStmt, create_publication_stmt); READ_COND(AlterPublicationStmt, AlterPublicationStmt, alter_publication_stmt, ALTER_PUBLICATION_STMT, AlterPublicationStmt, alter_publication_stmt); READ_COND(CreateSubscriptionStmt, CreateSubscriptionStmt, create_subscription_stmt, CREATE_SUBSCRIPTION_STMT, CreateSubscriptionStmt, create_subscription_stmt); READ_COND(AlterSubscriptionStmt, AlterSubscriptionStmt, alter_subscription_stmt, ALTER_SUBSCRIPTION_STMT, AlterSubscriptionStmt, alter_subscription_stmt); READ_COND(DropSubscriptionStmt, DropSubscriptionStmt, drop_subscription_stmt, DROP_SUBSCRIPTION_STMT, DropSubscriptionStmt, drop_subscription_stmt); READ_COND(CreateStatsStmt, CreateStatsStmt, create_stats_stmt, CREATE_STATS_STMT, CreateStatsStmt, create_stats_stmt); READ_COND(AlterCollationStmt, AlterCollationStmt, alter_collation_stmt, ALTER_COLLATION_STMT, AlterCollationStmt, alter_collation_stmt); READ_COND(CallStmt, CallStmt, call_stmt, CALL_STMT, CallStmt, call_stmt); READ_COND(AlterStatsStmt, AlterStatsStmt, alter_stats_stmt, ALTER_STATS_STMT, AlterStatsStmt, alter_stats_stmt); READ_COND(A_Expr, AExpr, a__expr, A_EXPR, A_Expr, a_expr); READ_COND(ColumnRef, ColumnRef, column_ref, COLUMN_REF, ColumnRef, column_ref); READ_COND(ParamRef, ParamRef, param_ref, PARAM_REF, ParamRef, param_ref); READ_COND(FuncCall, FuncCall, func_call, FUNC_CALL, FuncCall, func_call); READ_COND(A_Star, AStar, a__star, A_STAR, A_Star, a_star); READ_COND(A_Indices, AIndices, a__indices, A_INDICES, A_Indices, a_indices); READ_COND(A_Indirection, AIndirection, a__indirection, A_INDIRECTION, A_Indirection, a_indirection); READ_COND(A_ArrayExpr, AArrayExpr, a__array_expr, A_ARRAY_EXPR, A_ArrayExpr, a_array_expr); READ_COND(ResTarget, ResTarget, res_target, RES_TARGET, ResTarget, res_target); READ_COND(MultiAssignRef, MultiAssignRef, multi_assign_ref, MULTI_ASSIGN_REF, MultiAssignRef, multi_assign_ref); READ_COND(TypeCast, TypeCast, type_cast, TYPE_CAST, TypeCast, type_cast); READ_COND(CollateClause, CollateClause, collate_clause, COLLATE_CLAUSE, CollateClause, collate_clause); READ_COND(SortBy, SortBy, sort_by, SORT_BY, SortBy, sort_by); READ_COND(WindowDef, WindowDef, window_def, WINDOW_DEF, WindowDef, window_def); READ_COND(RangeSubselect, RangeSubselect, range_subselect, RANGE_SUBSELECT, RangeSubselect, range_subselect); READ_COND(RangeFunction, RangeFunction, range_function, RANGE_FUNCTION, RangeFunction, range_function); READ_COND(RangeTableSample, RangeTableSample, range_table_sample, RANGE_TABLE_SAMPLE, RangeTableSample, range_table_sample); READ_COND(RangeTableFunc, RangeTableFunc, range_table_func, RANGE_TABLE_FUNC, RangeTableFunc, range_table_func); READ_COND(RangeTableFuncCol, RangeTableFuncCol, range_table_func_col, RANGE_TABLE_FUNC_COL, RangeTableFuncCol, range_table_func_col); READ_COND(TypeName, TypeName, type_name, TYPE_NAME, TypeName, type_name); READ_COND(ColumnDef, ColumnDef, column_def, COLUMN_DEF, ColumnDef, column_def); READ_COND(IndexElem, IndexElem, index_elem, INDEX_ELEM, IndexElem, index_elem); READ_COND(StatsElem, StatsElem, stats_elem, STATS_ELEM, StatsElem, stats_elem); READ_COND(Constraint, Constraint, constraint, CONSTRAINT, Constraint, constraint); READ_COND(DefElem, DefElem, def_elem, DEF_ELEM, DefElem, def_elem); READ_COND(RangeTblEntry, RangeTblEntry, range_tbl_entry, RANGE_TBL_ENTRY, RangeTblEntry, range_tbl_entry); READ_COND(RangeTblFunction, RangeTblFunction, range_tbl_function, RANGE_TBL_FUNCTION, RangeTblFunction, range_tbl_function); READ_COND(TableSampleClause, TableSampleClause, table_sample_clause, TABLE_SAMPLE_CLAUSE, TableSampleClause, table_sample_clause); READ_COND(WithCheckOption, WithCheckOption, with_check_option, WITH_CHECK_OPTION, WithCheckOption, with_check_option); READ_COND(SortGroupClause, SortGroupClause, sort_group_clause, SORT_GROUP_CLAUSE, SortGroupClause, sort_group_clause); READ_COND(GroupingSet, GroupingSet, grouping_set, GROUPING_SET, GroupingSet, grouping_set); READ_COND(WindowClause, WindowClause, window_clause, WINDOW_CLAUSE, WindowClause, window_clause); READ_COND(ObjectWithArgs, ObjectWithArgs, object_with_args, OBJECT_WITH_ARGS, ObjectWithArgs, object_with_args); READ_COND(AccessPriv, AccessPriv, access_priv, ACCESS_PRIV, AccessPriv, access_priv); READ_COND(CreateOpClassItem, CreateOpClassItem, create_op_class_item, CREATE_OP_CLASS_ITEM, CreateOpClassItem, create_op_class_item); READ_COND(TableLikeClause, TableLikeClause, table_like_clause, TABLE_LIKE_CLAUSE, TableLikeClause, table_like_clause); READ_COND(FunctionParameter, FunctionParameter, function_parameter, FUNCTION_PARAMETER, FunctionParameter, function_parameter); READ_COND(LockingClause, LockingClause, locking_clause, LOCKING_CLAUSE, LockingClause, locking_clause); READ_COND(RowMarkClause, RowMarkClause, row_mark_clause, ROW_MARK_CLAUSE, RowMarkClause, row_mark_clause); READ_COND(XmlSerialize, XmlSerialize, xml_serialize, XML_SERIALIZE, XmlSerialize, xml_serialize); READ_COND(WithClause, WithClause, with_clause, WITH_CLAUSE, WithClause, with_clause); READ_COND(InferClause, InferClause, infer_clause, INFER_CLAUSE, InferClause, infer_clause); READ_COND(OnConflictClause, OnConflictClause, on_conflict_clause, ON_CONFLICT_CLAUSE, OnConflictClause, on_conflict_clause); READ_COND(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(RoleSpec, RoleSpec, role_spec, ROLE_SPEC, RoleSpec, role_spec); READ_COND(TriggerTransition, TriggerTransition, trigger_transition, TRIGGER_TRANSITION, TriggerTransition, trigger_transition); READ_COND(PartitionElem, PartitionElem, partition_elem, PARTITION_ELEM, PartitionElem, partition_elem); READ_COND(PartitionSpec, PartitionSpec, partition_spec, PARTITION_SPEC, PartitionSpec, partition_spec); READ_COND(PartitionBoundSpec, PartitionBoundSpec, partition_bound_spec, PARTITION_BOUND_SPEC, PartitionBoundSpec, partition_bound_spec); READ_COND(PartitionRangeDatum, PartitionRangeDatum, partition_range_datum, PARTITION_RANGE_DATUM, PartitionRangeDatum, partition_range_datum); READ_COND(PartitionCmd, PartitionCmd, partition_cmd, PARTITION_CMD, PartitionCmd, partition_cmd); READ_COND(VacuumRelation, VacuumRelation, vacuum_relation, VACUUM_RELATION, VacuumRelation, vacuum_relation); READ_COND(PublicationObjSpec, PublicationObjSpec, publication_obj_spec, PUBLICATION_OBJ_SPEC, PublicationObjSpec, publication_obj_spec); READ_COND(PublicationTable, PublicationTable, publication_table, PUBLICATION_TABLE, PublicationTable, publication_table); READ_COND(InlineCodeBlock, InlineCodeBlock, inline_code_block, INLINE_CODE_BLOCK, InlineCodeBlock, inline_code_block); READ_COND(CallContext, CallContext, call_context, CALL_CONTEXT, CallContext, call_context); pg_query-4.2.3/ext/pg_query/include/commands/0000755000004100000410000000000014510636647021276 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/commands/defrem.h0000644000004100000410000001531714510636647022720 0ustar www-datawww-data/*------------------------------------------------------------------------- * * defrem.h * POSTGRES define and remove utility definitions. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/defrem.h * *------------------------------------------------------------------------- */ #ifndef DEFREM_H #define DEFREM_H #include "catalog/objectaddress.h" #include "nodes/params.h" #include "parser/parse_node.h" #include "tcop/dest.h" #include "utils/array.h" /* commands/dropcmds.c */ extern void RemoveObjects(DropStmt *stmt); /* commands/indexcmds.c */ extern ObjectAddress DefineIndex(Oid relationId, IndexStmt *stmt, Oid indexRelationId, Oid parentIndexId, Oid parentConstraintId, bool is_alter_table, bool check_rights, bool check_not_in_use, bool skip_build, bool quiet); extern void ExecReindex(ParseState *pstate, 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, List *attributeList, List *exclusionOpNames); extern Oid GetDefaultOpClass(Oid type_id, Oid am_id); extern Oid ResolveOpClass(List *opclass, Oid attrType, const char *accessMethodName, Oid accessMethodId); /* commands/functioncmds.c */ extern ObjectAddress CreateFunction(ParseState *pstate, CreateFunctionStmt *stmt); extern void RemoveFunctionById(Oid funcOid); extern ObjectAddress AlterFunction(ParseState *pstate, AlterFunctionStmt *stmt); extern ObjectAddress CreateCast(CreateCastStmt *stmt); extern 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 */ pg_query-4.2.3/ext/pg_query/include/commands/prepare.h0000644000004100000410000000423114510636647023105 0ustar www-datawww-data/*------------------------------------------------------------------------- * * prepare.h * PREPARE, EXECUTE and DEALLOCATE commands, and prepared-stmt storage * * * Copyright (c) 2002-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/commands/tablespace.h0000644000004100000410000000402314510636647023551 0ustar www-datawww-data/*------------------------------------------------------------------------- * * tablespace.h * Tablespace management commands (create/drop tablespace). * * * Portions Copyright (c) 1996-2022, 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 spcNode, Oid dbNode, bool isRedo); extern Oid GetDefaultTablespace(char relpersistence, bool partitioned); extern void PrepareTempTablespaces(void); extern Oid get_tablespace_oid(const char *tablespacename, bool missing_ok); extern char *get_tablespace_name(Oid spc_oid); extern bool directory_is_empty(const char *path); extern void remove_tablespace_symlink(const char *linkloc); extern void tblspc_redo(XLogReaderState *rptr); extern void tblspc_desc(StringInfo buf, XLogReaderState *rptr); extern const char *tblspc_identify(uint8 info); #endif /* TABLESPACE_H */ pg_query-4.2.3/ext/pg_query/include/commands/user.h0000644000004100000410000000246114510636647022430 0ustar www-datawww-data/*------------------------------------------------------------------------- * * user.h * Commands for manipulating roles (formerly called users). * * * src/include/commands/user.h * *------------------------------------------------------------------------- */ #ifndef USER_H #define USER_H #include "catalog/objectaddress.h" #include "libpq/crypt.h" #include "nodes/parsenodes.h" #include "parser/parse_node.h" /* GUC. Is actually of type PasswordType. */ extern PGDLLIMPORT int Password_encryption; /* Hook to check passwords in CreateRole() and AlterRole() */ typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null); extern PGDLLIMPORT check_password_hook_type check_password_hook; extern Oid CreateRole(ParseState *pstate, CreateRoleStmt *stmt); extern Oid AlterRole(ParseState *pstate, AlterRoleStmt *stmt); extern Oid AlterRoleSet(AlterRoleSetStmt *stmt); extern void DropRole(DropRoleStmt *stmt); extern void GrantRole(GrantRoleStmt *stmt); extern ObjectAddress RenameRole(const char *oldname, const char *newname); extern void DropOwnedObjects(DropOwnedStmt *stmt); extern void ReassignOwnedObjects(ReassignOwnedStmt *stmt); extern List *roleSpecsToIds(List *memberNames); #endif /* USER_H */ pg_query-4.2.3/ext/pg_query/include/commands/explain.h0000644000004100000410000001155414510636647023115 0ustar www-datawww-data/*------------------------------------------------------------------------- * * explain.h * prototypes for explain.c * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994-5, Regents of the University of California * * src/include/commands/explain.h * *------------------------------------------------------------------------- */ #ifndef EXPLAIN_H #define EXPLAIN_H #include "executor/executor.h" #include "lib/stringinfo.h" #include "parser/parse_node.h" typedef enum ExplainFormat { EXPLAIN_FORMAT_TEXT, EXPLAIN_FORMAT_XML, EXPLAIN_FORMAT_JSON, EXPLAIN_FORMAT_YAML } ExplainFormat; typedef struct ExplainWorkersState { int num_workers; /* # of worker processes the plan used */ bool *worker_inited; /* per-worker state-initialized flags */ StringInfoData *worker_str; /* per-worker transient output buffers */ int *worker_state_save; /* per-worker grouping state save areas */ StringInfo prev_str; /* saved output buffer while redirecting */ } ExplainWorkersState; typedef struct ExplainState { StringInfo str; /* output buffer */ /* options */ bool verbose; /* be verbose */ bool analyze; /* print actual times */ bool costs; /* print estimated costs */ bool buffers; /* print buffer usage */ bool wal; /* print WAL usage */ bool timing; /* print detailed node timing */ bool summary; /* print total planning and execution timing */ bool settings; /* print modified settings */ ExplainFormat format; /* output format */ /* state for output formatting --- not reset for each new plan tree */ int indent; /* current indentation level */ List *grouping_stack; /* format-specific grouping state */ /* state related to the current plan tree (filled by ExplainPrintPlan) */ PlannedStmt *pstmt; /* top of plan */ List *rtable; /* range table */ List *rtable_names; /* alias names for RTEs */ List *deparse_cxt; /* context list for deparsing expressions */ Bitmapset *printed_subplans; /* ids of SubPlans we've printed */ bool hide_workers; /* set if we find an invisible Gather */ /* state related to the current plan node */ ExplainWorkersState *workers_state; /* needed if parallel plan */ } ExplainState; /* Hook for plugins to get control in ExplainOneQuery() */ typedef void (*ExplainOneQuery_hook_type) (Query *query, int cursorOptions, IntoClause *into, ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv); extern PGDLLIMPORT ExplainOneQuery_hook_type ExplainOneQuery_hook; /* Hook for plugins to get control in explain_get_index_name() */ typedef const char *(*explain_get_index_name_hook_type) (Oid indexId); extern PGDLLIMPORT explain_get_index_name_hook_type explain_get_index_name_hook; extern void ExplainQuery(ParseState *pstate, ExplainStmt *stmt, ParamListInfo params, DestReceiver *dest); extern ExplainState *NewExplainState(void); extern TupleDesc ExplainResultDesc(ExplainStmt *stmt); extern void ExplainOneUtility(Node *utilityStmt, IntoClause *into, ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv); extern void ExplainOnePlan(PlannedStmt *plannedstmt, IntoClause *into, ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv, const instr_time *planduration, const BufferUsage *bufusage); extern void ExplainPrintPlan(ExplainState *es, QueryDesc *queryDesc); extern void ExplainPrintTriggers(ExplainState *es, QueryDesc *queryDesc); extern void ExplainPrintJITSummary(ExplainState *es, QueryDesc *queryDesc); extern void ExplainQueryText(ExplainState *es, QueryDesc *queryDesc); extern void ExplainBeginOutput(ExplainState *es); extern void ExplainEndOutput(ExplainState *es); extern void ExplainSeparatePlans(ExplainState *es); extern void ExplainPropertyList(const char *qlabel, List *data, ExplainState *es); extern void ExplainPropertyListNested(const char *qlabel, List *data, ExplainState *es); extern void ExplainPropertyText(const char *qlabel, const char *value, ExplainState *es); extern void ExplainPropertyInteger(const char *qlabel, const char *unit, int64 value, ExplainState *es); extern void ExplainPropertyUInteger(const char *qlabel, const char *unit, uint64 value, ExplainState *es); extern void ExplainPropertyFloat(const char *qlabel, const char *unit, double value, int ndigits, ExplainState *es); extern void ExplainPropertyBool(const char *qlabel, bool value, ExplainState *es); extern void ExplainOpenGroup(const char *objtype, const char *labelname, bool labeled, ExplainState *es); extern void ExplainCloseGroup(const char *objtype, const char *labelname, bool labeled, ExplainState *es); #endif /* EXPLAIN_H */ pg_query-4.2.3/ext/pg_query/include/commands/vacuum.h0000644000004100000410000003225314510636647022754 0ustar www-datawww-data/*------------------------------------------------------------------------- * * vacuum.h * header file for postgres vacuum cleaner and statistics analyzer * * * Portions Copyright (c) 1996-2022, 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 "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. * * Note: do not assume that the data being analyzed has the same datatype * shown in attr, ie do not trust attr->atttypid, attlen, etc. This is * because some index opclasses store a different type than the underlying * column/expression. Instead use attrtypid, attrtypmod, and attrtype for * information about the datatype being fed to the typanalyze function. * Likewise, use attrcollid not attr->attcollation. */ Form_pg_attribute attr; /* copy of pg_attribute row for column */ Oid attrtypid; /* type of data being analyzed */ int32 attrtypmod; /* typmod of data being analyzed */ Form_pg_type attrtype; /* copy of pg_type row for attrtypid */ Oid attrcollid; /* collation of data being analyzed */ MemoryContext anl_context; /* where to save long-lived data */ /* * These fields must be filled in by the typanalyze routine, unless it * returns false. */ AnalyzeAttrComputeStatsFunc compute_stats; /* function pointer */ int minrows; /* Minimum # of rows wanted for stats */ void *extra_data; /* for extra type-specific data */ /* * These fields are to be filled in by the compute_stats routine. (They * are initialized to zero when the struct is created.) */ bool stats_valid; float4 stanullfrac; /* fraction of entries that are NULL */ int32 stawidth; /* average width of column values */ float4 stadistinct; /* # distinct values */ int16 stakind[STATISTIC_NUM_SLOTS]; Oid staop[STATISTIC_NUM_SLOTS]; Oid stacoll[STATISTIC_NUM_SLOTS]; int numnumbers[STATISTIC_NUM_SLOTS]; float4 *stanumbers[STATISTIC_NUM_SLOTS]; int numvalues[STATISTIC_NUM_SLOTS]; Datum *stavalues[STATISTIC_NUM_SLOTS]; /* * These fields describe the stavalues[n] element types. They will be * initialized to match attrtypid, but a custom typanalyze function might * want to store an array of something other than the analyzed column's * elements. It should then overwrite these fields. */ Oid statypid[STATISTIC_NUM_SLOTS]; int16 statyplen[STATISTIC_NUM_SLOTS]; bool statypbyval[STATISTIC_NUM_SLOTS]; char statypalign[STATISTIC_NUM_SLOTS]; /* * These fields are private to the main ANALYZE code and should not be * looked at by type-specific functions. */ int tupattnum; /* attribute number within tuples */ HeapTuple *rows; /* access info for std fetch function */ TupleDesc tupDesc; Datum *exprvals; /* access info for index fetch function */ bool *exprnulls; int rowstride; } VacAttrStats; /* 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_TOAST 0x40 /* process the TOAST table, if any */ #define VACOPT_DISABLE_PAGE_SKIPPING 0x80 /* don't skip any pages */ /* * 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. */ 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 */ /* * 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; /* * VacDeadItems stores TIDs whose index tuples are deleted by index vacuuming. */ typedef struct VacDeadItems { int max_items; /* # slots allocated in array */ int num_items; /* current # of entries */ /* Sorted array of TIDs to delete from indexes */ ItemPointerData items[FLEXIBLE_ARRAY_MEMBER]; } VacDeadItems; #define MAXDEADITEMS(avail_mem) \ (((avail_mem) - offsetof(VacDeadItems, items)) / sizeof(ItemPointerData)) /* 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; /* Variables for cost-based parallel vacuum */ extern PGDLLIMPORT pg_atomic_uint32 *VacuumSharedCostBalance; extern PGDLLIMPORT pg_atomic_uint32 *VacuumActiveNWorkers; extern PGDLLIMPORT int VacuumCostBalanceLocal; /* in commands/vacuum.c */ extern void ExecVacuum(ParseState *pstate, VacuumStmt *vacstmt, bool isTopLevel); extern void vacuum(List *relations, VacuumParams *params, BufferAccessStrategy bstrategy, bool isTopLevel); extern void vac_open_indexes(Relation relation, LOCKMODE lockmode, int *nindexes, Relation **Irel); extern void vac_close_indexes(int nindexes, Relation *Irel, LOCKMODE lockmode); extern double vac_estimate_reltuples(Relation relation, BlockNumber total_pages, BlockNumber scanned_pages, double scanned_tuples); extern void vac_update_relstats(Relation relation, BlockNumber num_pages, double num_tuples, BlockNumber num_all_visible_pages, bool hasindex, TransactionId frozenxid, MultiXactId minmulti, bool *frozenxid_updated, bool *minmulti_updated, bool in_outer_xact); extern bool vacuum_set_xid_limits(Relation rel, int freeze_min_age, int freeze_table_age, int multixact_freeze_min_age, int multixact_freeze_table_age, TransactionId *oldestXmin, MultiXactId *oldestMxact, TransactionId *freezeLimit, MultiXactId *multiXactCutoff); extern bool vacuum_xid_failsafe_check(TransactionId relfrozenxid, MultiXactId relminmxid); extern void vac_update_datfrozenxid(void); extern void vacuum_delay_point(void); extern bool vacuum_is_relation_owner(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, VacDeadItems *dead_items); extern IndexBulkDeleteResult *vac_cleanup_one_index(IndexVacuumInfo *ivinfo, IndexBulkDeleteResult *istat); extern Size vac_max_items_to_alloc_size(int max_items); /* in commands/vacuumparallel.c */ extern ParallelVacuumState *parallel_vacuum_init(Relation rel, Relation *indrels, int nindexes, int nrequested_workers, int max_items, int elevel, BufferAccessStrategy bstrategy); extern void parallel_vacuum_end(ParallelVacuumState *pvs, IndexBulkDeleteResult **istats); extern VacDeadItems *parallel_vacuum_get_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 */ pg_query-4.2.3/ext/pg_query/include/commands/trigger.h0000644000004100000410000002366014510636647023121 0ustar www-datawww-data/*------------------------------------------------------------------------- * * trigger.h * Declarations for trigger handling. * * Portions Copyright (c) 1996-2022, 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 *name, bool missing_ok); extern ObjectAddress renametrig(RenameStmt *stmt); extern void EnableDisableTriggerNew(Relation rel, const char *tgname, char fires_when, bool skip_system, bool recurse, LOCKMODE lockmode); extern void EnableDisableTrigger(Relation rel, const char *tgname, char fires_when, bool skip_system, LOCKMODE lockmode); extern void RelationBuildTriggers(Relation relation); extern TriggerDesc *CopyTriggerDesc(TriggerDesc *trigdesc); extern const char *FindTriggerIncompatibleWithInheritance(TriggerDesc *trigdesc); extern TransitionCaptureState *MakeTransitionCaptureState(TriggerDesc *trigdesc, Oid relid, CmdType cmdType); extern void FreeTriggerDesc(TriggerDesc *trigdesc); extern void ExecBSInsertTriggers(EState *estate, ResultRelInfo *relinfo); extern void ExecASInsertTriggers(EState *estate, ResultRelInfo *relinfo, TransitionCaptureState *transition_capture); extern bool ExecBRInsertTriggers(EState *estate, ResultRelInfo *relinfo, TupleTableSlot *slot); extern void ExecARInsertTriggers(EState *estate, ResultRelInfo *relinfo, TupleTableSlot *slot, List *recheckIndexes, TransitionCaptureState *transition_capture); extern bool ExecIRInsertTriggers(EState *estate, ResultRelInfo *relinfo, TupleTableSlot *slot); extern void ExecBSDeleteTriggers(EState *estate, ResultRelInfo *relinfo); extern void ExecASDeleteTriggers(EState *estate, ResultRelInfo *relinfo, TransitionCaptureState *transition_capture); extern bool ExecBRDeleteTriggers(EState *estate, EPQState *epqstate, ResultRelInfo *relinfo, ItemPointer tupleid, HeapTuple fdw_trigtuple, TupleTableSlot **epqslot); extern void ExecARDeleteTriggers(EState *estate, ResultRelInfo *relinfo, ItemPointer tupleid, HeapTuple fdw_trigtuple, TransitionCaptureState *transition_capture, 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 *slot, TM_FailureData *tmfdp); extern void ExecARUpdateTriggers(EState *estate, ResultRelInfo *relinfo, ResultRelInfo *src_partinfo, ResultRelInfo *dst_partinfo, ItemPointer tupleid, HeapTuple fdw_trigtuple, TupleTableSlot *slot, List *recheckIndexes, TransitionCaptureState *transition_capture, bool is_crosspart_update); extern bool ExecIRUpdateTriggers(EState *estate, ResultRelInfo *relinfo, HeapTuple trigtuple, TupleTableSlot *slot); extern void ExecBSTruncateTriggers(EState *estate, ResultRelInfo *relinfo); extern void ExecASTruncateTriggers(EState *estate, ResultRelInfo *relinfo); extern void AfterTriggerBeginXact(void); extern void AfterTriggerBeginQuery(void); extern void AfterTriggerEndQuery(EState *estate); extern void AfterTriggerFireDeferred(void); extern void AfterTriggerEndXact(bool isCommit); extern void AfterTriggerBeginSubXact(void); extern void AfterTriggerEndSubXact(bool isCommit); extern void AfterTriggerSetState(ConstraintsSetStmt *stmt); extern bool AfterTriggerPendingOnRel(Oid relid); /* * in utils/adt/ri_triggers.c */ extern bool RI_FKey_pk_upd_check_required(Trigger *trigger, Relation pk_rel, TupleTableSlot *old_slot, TupleTableSlot *new_slot); extern bool RI_FKey_fk_upd_check_required(Trigger *trigger, Relation fk_rel, TupleTableSlot *old_slot, TupleTableSlot *new_slot); extern bool RI_Initial_Check(Trigger *trigger, Relation fk_rel, Relation pk_rel); extern void RI_PartitionRemove_Check(Trigger *trigger, Relation fk_rel, Relation pk_rel); /* result values for RI_FKey_trigger_type: */ #define RI_TRIGGER_PK 1 /* is a trigger on the PK relation */ #define RI_TRIGGER_FK 2 /* is a trigger on the FK relation */ #define RI_TRIGGER_NONE 0 /* is not an RI trigger function */ extern int RI_FKey_trigger_type(Oid tgfoid); #endif /* TRIGGER_H */ pg_query-4.2.3/ext/pg_query/include/commands/dbcommands.h0000644000004100000410000000261314510636647023560 0ustar www-datawww-data/*------------------------------------------------------------------------- * * dbcommands.h * Database management commands (create/drop database). * * * Portions Copyright (c) 1996-2022, 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 void check_encoding_locale_matches(int encoding, const char *collate, const char *ctype); #endif /* DBCOMMANDS_H */ pg_query-4.2.3/ext/pg_query/include/commands/variable.h0000644000004100000410000000335514510636647023242 0ustar www-datawww-data/* * variable.h * Routines for handling specialized SET variables. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/variable.h */ #ifndef VARIABLE_H #define VARIABLE_H #include "utils/guc.h" extern bool check_datestyle(char **newval, void **extra, GucSource source); extern void assign_datestyle(const char *newval, void *extra); extern bool check_timezone(char **newval, void **extra, GucSource source); extern void assign_timezone(const char *newval, void *extra); extern const char *show_timezone(void); extern bool check_log_timezone(char **newval, void **extra, GucSource source); extern void assign_log_timezone(const char *newval, void *extra); extern const char *show_log_timezone(void); extern bool check_transaction_read_only(bool *newval, void **extra, GucSource source); extern bool check_XactIsoLevel(int *newval, void **extra, GucSource source); extern bool check_transaction_deferrable(bool *newval, void **extra, GucSource source); extern bool check_random_seed(double *newval, void **extra, GucSource source); extern void assign_random_seed(double newval, void *extra); extern const char *show_random_seed(void); extern bool check_client_encoding(char **newval, void **extra, GucSource source); extern void assign_client_encoding(const char *newval, void *extra); extern bool check_session_authorization(char **newval, void **extra, GucSource source); extern void assign_session_authorization(const char *newval, void *extra); extern bool check_role(char **newval, void **extra, GucSource source); extern void assign_role(const char *newval, void *extra); extern const char *show_role(void); #endif /* VARIABLE_H */ pg_query-4.2.3/ext/pg_query/include/commands/event_trigger.h0000644000004100000410000000641714510636647024323 0ustar www-datawww-data/*------------------------------------------------------------------------- * * event_trigger.h * Declarations for command trigger handling. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/event_trigger.h * *------------------------------------------------------------------------- */ #ifndef EVENT_TRIGGER_H #define EVENT_TRIGGER_H #include "catalog/dependency.h" #include "catalog/objectaddress.h" #include "catalog/pg_event_trigger.h" #include "nodes/parsenodes.h" #include "tcop/cmdtag.h" #include "tcop/deparse_utility.h" #include "utils/aclchk_internal.h" typedef struct EventTriggerData { NodeTag type; const char *event; /* event name */ Node *parsetree; /* parse tree */ CommandTag tag; } EventTriggerData; #define AT_REWRITE_ALTER_PERSISTENCE 0x01 #define AT_REWRITE_DEFAULT_VAL 0x02 #define AT_REWRITE_COLUMN_REWRITE 0x04 #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 EventTriggerSupportsObjectClass(ObjectClass objclass); extern void EventTriggerDDLCommandStart(Node *parsetree); extern void EventTriggerDDLCommandEnd(Node *parsetree); extern void EventTriggerSQLDrop(Node *parsetree); extern void EventTriggerTableRewrite(Node *parsetree, Oid tableOid, int reason); extern bool EventTriggerBeginCompleteQuery(void); extern void EventTriggerEndCompleteQuery(void); extern bool trackDroppedObjectsNeeded(void); extern void EventTriggerSQLDropAddObject(const ObjectAddress *object, bool original, bool normal); extern void EventTriggerInhibitCommandCollection(void); extern void EventTriggerUndoInhibitCommandCollection(void); extern void EventTriggerCollectSimpleCommand(ObjectAddress address, ObjectAddress secondaryObject, Node *parsetree); extern void EventTriggerAlterTableStart(Node *parsetree); extern void EventTriggerAlterTableRelid(Oid objectId); extern void EventTriggerCollectAlterTableSubcmd(Node *subcmd, ObjectAddress address); extern void EventTriggerAlterTableEnd(void); extern void EventTriggerCollectGrant(InternalGrant *istmt); extern void EventTriggerCollectAlterOpFam(AlterOpFamilyStmt *stmt, Oid opfamoid, List *operators, List *procedures); extern void EventTriggerCollectCreateOpClass(CreateOpClassStmt *stmt, Oid opcoid, List *operators, List *procedures); extern void EventTriggerCollectAlterTSConfig(AlterTSConfigurationStmt *stmt, Oid cfgId, Oid *dictIds, int ndicts); extern void EventTriggerCollectAlterDefPrivs(AlterDefaultPrivilegesStmt *stmt); #endif /* EVENT_TRIGGER_H */ pg_query-4.2.3/ext/pg_query/include/commands/async.h0000644000004100000410000000307014510636647022564 0ustar www-datawww-data/*------------------------------------------------------------------------- * * async.h * Asynchronous notification: NOTIFY, LISTEN, UNLISTEN * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/async.h * *------------------------------------------------------------------------- */ #ifndef ASYNC_H #define ASYNC_H #include /* * The number of SLRU page buffers we use for the notification queue. */ #define NUM_NOTIFY_BUFFERS 8 extern PGDLLIMPORT bool Trace_notify; 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 */ pg_query-4.2.3/ext/pg_query/include/protobuf/0000755000004100000410000000000014510636647021335 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/protobuf/pg_query.pb-c.h0000644000004100000410000163631314510636647024176 0ustar www-datawww-data/* 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 1004001 < 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__Var PgQuery__Var; typedef struct PgQuery__Param PgQuery__Param; typedef struct PgQuery__Aggref PgQuery__Aggref; typedef struct PgQuery__GroupingFunc PgQuery__GroupingFunc; typedef struct PgQuery__WindowFunc PgQuery__WindowFunc; typedef struct PgQuery__SubscriptingRef PgQuery__SubscriptingRef; typedef struct PgQuery__FuncExpr PgQuery__FuncExpr; typedef struct PgQuery__NamedArgExpr PgQuery__NamedArgExpr; typedef struct PgQuery__OpExpr PgQuery__OpExpr; typedef struct PgQuery__DistinctExpr PgQuery__DistinctExpr; typedef struct PgQuery__NullIfExpr PgQuery__NullIfExpr; typedef struct PgQuery__ScalarArrayOpExpr PgQuery__ScalarArrayOpExpr; typedef struct PgQuery__BoolExpr PgQuery__BoolExpr; typedef struct PgQuery__SubLink PgQuery__SubLink; typedef struct PgQuery__SubPlan PgQuery__SubPlan; typedef struct PgQuery__AlternativeSubPlan PgQuery__AlternativeSubPlan; typedef struct PgQuery__FieldSelect PgQuery__FieldSelect; typedef struct PgQuery__FieldStore PgQuery__FieldStore; typedef struct PgQuery__RelabelType PgQuery__RelabelType; typedef struct PgQuery__CoerceViaIO PgQuery__CoerceViaIO; typedef struct PgQuery__ArrayCoerceExpr PgQuery__ArrayCoerceExpr; typedef struct PgQuery__ConvertRowtypeExpr PgQuery__ConvertRowtypeExpr; typedef struct PgQuery__CollateExpr PgQuery__CollateExpr; typedef struct PgQuery__CaseExpr PgQuery__CaseExpr; typedef struct PgQuery__CaseWhen PgQuery__CaseWhen; typedef struct PgQuery__CaseTestExpr PgQuery__CaseTestExpr; typedef struct PgQuery__ArrayExpr PgQuery__ArrayExpr; typedef struct PgQuery__RowExpr PgQuery__RowExpr; typedef struct PgQuery__RowCompareExpr PgQuery__RowCompareExpr; typedef struct PgQuery__CoalesceExpr PgQuery__CoalesceExpr; typedef struct PgQuery__MinMaxExpr PgQuery__MinMaxExpr; typedef struct PgQuery__SQLValueFunction PgQuery__SQLValueFunction; typedef struct PgQuery__XmlExpr PgQuery__XmlExpr; typedef struct PgQuery__NullTest PgQuery__NullTest; typedef struct PgQuery__BooleanTest PgQuery__BooleanTest; typedef struct PgQuery__CoerceToDomain PgQuery__CoerceToDomain; typedef struct PgQuery__CoerceToDomainValue PgQuery__CoerceToDomainValue; typedef struct PgQuery__SetToDefault PgQuery__SetToDefault; typedef struct PgQuery__CurrentOfExpr PgQuery__CurrentOfExpr; typedef struct PgQuery__NextValueExpr PgQuery__NextValueExpr; typedef struct PgQuery__InferenceElem PgQuery__InferenceElem; typedef struct PgQuery__TargetEntry PgQuery__TargetEntry; typedef struct PgQuery__RangeTblRef PgQuery__RangeTblRef; typedef struct PgQuery__JoinExpr PgQuery__JoinExpr; typedef struct PgQuery__FromExpr PgQuery__FromExpr; typedef struct PgQuery__OnConflictExpr PgQuery__OnConflictExpr; typedef struct PgQuery__IntoClause PgQuery__IntoClause; typedef struct PgQuery__MergeAction PgQuery__MergeAction; typedef struct PgQuery__RawStmt PgQuery__RawStmt; typedef struct PgQuery__Query PgQuery__Query; typedef struct PgQuery__InsertStmt PgQuery__InsertStmt; typedef struct PgQuery__DeleteStmt PgQuery__DeleteStmt; typedef struct PgQuery__UpdateStmt PgQuery__UpdateStmt; typedef struct PgQuery__MergeStmt PgQuery__MergeStmt; typedef struct PgQuery__SelectStmt PgQuery__SelectStmt; typedef struct PgQuery__ReturnStmt PgQuery__ReturnStmt; typedef struct PgQuery__PLAssignStmt PgQuery__PLAssignStmt; typedef struct PgQuery__AlterTableStmt PgQuery__AlterTableStmt; typedef struct PgQuery__AlterTableCmd PgQuery__AlterTableCmd; typedef struct PgQuery__AlterDomainStmt PgQuery__AlterDomainStmt; typedef struct PgQuery__SetOperationStmt PgQuery__SetOperationStmt; typedef struct PgQuery__GrantStmt PgQuery__GrantStmt; typedef struct PgQuery__GrantRoleStmt PgQuery__GrantRoleStmt; typedef struct PgQuery__AlterDefaultPrivilegesStmt PgQuery__AlterDefaultPrivilegesStmt; typedef struct PgQuery__ClosePortalStmt PgQuery__ClosePortalStmt; typedef struct PgQuery__ClusterStmt PgQuery__ClusterStmt; typedef struct PgQuery__CopyStmt PgQuery__CopyStmt; typedef struct PgQuery__CreateStmt PgQuery__CreateStmt; typedef struct PgQuery__DefineStmt PgQuery__DefineStmt; typedef struct PgQuery__DropStmt PgQuery__DropStmt; typedef struct PgQuery__TruncateStmt PgQuery__TruncateStmt; typedef struct PgQuery__CommentStmt PgQuery__CommentStmt; typedef struct PgQuery__FetchStmt PgQuery__FetchStmt; typedef struct PgQuery__IndexStmt PgQuery__IndexStmt; typedef struct PgQuery__CreateFunctionStmt PgQuery__CreateFunctionStmt; typedef struct PgQuery__AlterFunctionStmt PgQuery__AlterFunctionStmt; typedef struct PgQuery__DoStmt PgQuery__DoStmt; typedef struct PgQuery__RenameStmt PgQuery__RenameStmt; typedef struct PgQuery__RuleStmt PgQuery__RuleStmt; typedef struct PgQuery__NotifyStmt PgQuery__NotifyStmt; typedef struct PgQuery__ListenStmt PgQuery__ListenStmt; typedef struct PgQuery__UnlistenStmt PgQuery__UnlistenStmt; typedef struct PgQuery__TransactionStmt PgQuery__TransactionStmt; typedef struct PgQuery__ViewStmt PgQuery__ViewStmt; typedef struct PgQuery__LoadStmt PgQuery__LoadStmt; typedef struct PgQuery__CreateDomainStmt PgQuery__CreateDomainStmt; typedef struct PgQuery__CreatedbStmt PgQuery__CreatedbStmt; typedef struct PgQuery__DropdbStmt PgQuery__DropdbStmt; typedef struct PgQuery__VacuumStmt PgQuery__VacuumStmt; typedef struct PgQuery__ExplainStmt PgQuery__ExplainStmt; typedef struct PgQuery__CreateTableAsStmt PgQuery__CreateTableAsStmt; typedef struct PgQuery__CreateSeqStmt PgQuery__CreateSeqStmt; typedef struct PgQuery__AlterSeqStmt PgQuery__AlterSeqStmt; typedef struct PgQuery__VariableSetStmt PgQuery__VariableSetStmt; typedef struct PgQuery__VariableShowStmt PgQuery__VariableShowStmt; typedef struct PgQuery__DiscardStmt PgQuery__DiscardStmt; typedef struct PgQuery__CreateTrigStmt PgQuery__CreateTrigStmt; typedef struct PgQuery__CreatePLangStmt PgQuery__CreatePLangStmt; typedef struct PgQuery__CreateRoleStmt PgQuery__CreateRoleStmt; typedef struct PgQuery__AlterRoleStmt PgQuery__AlterRoleStmt; typedef struct PgQuery__DropRoleStmt PgQuery__DropRoleStmt; typedef struct PgQuery__LockStmt PgQuery__LockStmt; typedef struct PgQuery__ConstraintsSetStmt PgQuery__ConstraintsSetStmt; typedef struct PgQuery__ReindexStmt PgQuery__ReindexStmt; typedef struct PgQuery__CheckPointStmt PgQuery__CheckPointStmt; typedef struct PgQuery__CreateSchemaStmt PgQuery__CreateSchemaStmt; typedef struct PgQuery__AlterDatabaseStmt PgQuery__AlterDatabaseStmt; typedef struct PgQuery__AlterDatabaseRefreshCollStmt PgQuery__AlterDatabaseRefreshCollStmt; typedef struct PgQuery__AlterDatabaseSetStmt PgQuery__AlterDatabaseSetStmt; typedef struct PgQuery__AlterRoleSetStmt PgQuery__AlterRoleSetStmt; typedef struct PgQuery__CreateConversionStmt PgQuery__CreateConversionStmt; typedef struct PgQuery__CreateCastStmt PgQuery__CreateCastStmt; typedef struct PgQuery__CreateOpClassStmt PgQuery__CreateOpClassStmt; typedef struct PgQuery__CreateOpFamilyStmt PgQuery__CreateOpFamilyStmt; typedef struct PgQuery__AlterOpFamilyStmt PgQuery__AlterOpFamilyStmt; typedef struct PgQuery__PrepareStmt PgQuery__PrepareStmt; typedef struct PgQuery__ExecuteStmt PgQuery__ExecuteStmt; typedef struct PgQuery__DeallocateStmt PgQuery__DeallocateStmt; typedef struct PgQuery__DeclareCursorStmt PgQuery__DeclareCursorStmt; typedef struct PgQuery__CreateTableSpaceStmt PgQuery__CreateTableSpaceStmt; typedef struct PgQuery__DropTableSpaceStmt PgQuery__DropTableSpaceStmt; typedef struct PgQuery__AlterObjectDependsStmt PgQuery__AlterObjectDependsStmt; typedef struct PgQuery__AlterObjectSchemaStmt PgQuery__AlterObjectSchemaStmt; typedef struct PgQuery__AlterOwnerStmt PgQuery__AlterOwnerStmt; typedef struct PgQuery__AlterOperatorStmt PgQuery__AlterOperatorStmt; typedef struct PgQuery__AlterTypeStmt PgQuery__AlterTypeStmt; typedef struct PgQuery__DropOwnedStmt PgQuery__DropOwnedStmt; typedef struct PgQuery__ReassignOwnedStmt PgQuery__ReassignOwnedStmt; typedef struct PgQuery__CompositeTypeStmt PgQuery__CompositeTypeStmt; typedef struct PgQuery__CreateEnumStmt PgQuery__CreateEnumStmt; typedef struct PgQuery__CreateRangeStmt PgQuery__CreateRangeStmt; typedef struct PgQuery__AlterEnumStmt PgQuery__AlterEnumStmt; typedef struct PgQuery__AlterTSDictionaryStmt PgQuery__AlterTSDictionaryStmt; typedef struct PgQuery__AlterTSConfigurationStmt PgQuery__AlterTSConfigurationStmt; typedef struct PgQuery__CreateFdwStmt PgQuery__CreateFdwStmt; typedef struct PgQuery__AlterFdwStmt PgQuery__AlterFdwStmt; typedef struct PgQuery__CreateForeignServerStmt PgQuery__CreateForeignServerStmt; typedef struct PgQuery__AlterForeignServerStmt PgQuery__AlterForeignServerStmt; typedef struct PgQuery__CreateUserMappingStmt PgQuery__CreateUserMappingStmt; typedef struct PgQuery__AlterUserMappingStmt PgQuery__AlterUserMappingStmt; typedef struct PgQuery__DropUserMappingStmt PgQuery__DropUserMappingStmt; typedef struct PgQuery__AlterTableSpaceOptionsStmt PgQuery__AlterTableSpaceOptionsStmt; typedef struct PgQuery__AlterTableMoveAllStmt PgQuery__AlterTableMoveAllStmt; typedef struct PgQuery__SecLabelStmt PgQuery__SecLabelStmt; typedef struct PgQuery__CreateForeignTableStmt PgQuery__CreateForeignTableStmt; typedef struct PgQuery__ImportForeignSchemaStmt PgQuery__ImportForeignSchemaStmt; typedef struct PgQuery__CreateExtensionStmt PgQuery__CreateExtensionStmt; typedef struct PgQuery__AlterExtensionStmt PgQuery__AlterExtensionStmt; typedef struct PgQuery__AlterExtensionContentsStmt PgQuery__AlterExtensionContentsStmt; typedef struct PgQuery__CreateEventTrigStmt PgQuery__CreateEventTrigStmt; typedef struct PgQuery__AlterEventTrigStmt PgQuery__AlterEventTrigStmt; typedef struct PgQuery__RefreshMatViewStmt PgQuery__RefreshMatViewStmt; typedef struct PgQuery__ReplicaIdentityStmt PgQuery__ReplicaIdentityStmt; typedef struct PgQuery__AlterSystemStmt PgQuery__AlterSystemStmt; typedef struct PgQuery__CreatePolicyStmt PgQuery__CreatePolicyStmt; typedef struct PgQuery__AlterPolicyStmt PgQuery__AlterPolicyStmt; typedef struct PgQuery__CreateTransformStmt PgQuery__CreateTransformStmt; typedef struct PgQuery__CreateAmStmt PgQuery__CreateAmStmt; typedef struct PgQuery__CreatePublicationStmt PgQuery__CreatePublicationStmt; typedef struct PgQuery__AlterPublicationStmt PgQuery__AlterPublicationStmt; typedef struct PgQuery__CreateSubscriptionStmt PgQuery__CreateSubscriptionStmt; typedef struct PgQuery__AlterSubscriptionStmt PgQuery__AlterSubscriptionStmt; typedef struct PgQuery__DropSubscriptionStmt PgQuery__DropSubscriptionStmt; typedef struct PgQuery__CreateStatsStmt PgQuery__CreateStatsStmt; typedef struct PgQuery__AlterCollationStmt PgQuery__AlterCollationStmt; typedef struct PgQuery__CallStmt PgQuery__CallStmt; typedef struct PgQuery__AlterStatsStmt PgQuery__AlterStatsStmt; typedef struct PgQuery__AExpr PgQuery__AExpr; typedef struct PgQuery__ColumnRef PgQuery__ColumnRef; typedef struct PgQuery__ParamRef PgQuery__ParamRef; typedef struct PgQuery__FuncCall PgQuery__FuncCall; typedef struct PgQuery__AStar PgQuery__AStar; typedef struct PgQuery__AIndices PgQuery__AIndices; typedef struct PgQuery__AIndirection PgQuery__AIndirection; typedef struct PgQuery__AArrayExpr PgQuery__AArrayExpr; typedef struct PgQuery__ResTarget PgQuery__ResTarget; typedef struct PgQuery__MultiAssignRef PgQuery__MultiAssignRef; typedef struct PgQuery__TypeCast PgQuery__TypeCast; typedef struct PgQuery__CollateClause PgQuery__CollateClause; typedef struct PgQuery__SortBy PgQuery__SortBy; typedef struct PgQuery__WindowDef PgQuery__WindowDef; typedef struct PgQuery__RangeSubselect PgQuery__RangeSubselect; typedef struct PgQuery__RangeFunction PgQuery__RangeFunction; typedef struct PgQuery__RangeTableSample PgQuery__RangeTableSample; typedef struct PgQuery__RangeTableFunc PgQuery__RangeTableFunc; typedef struct PgQuery__RangeTableFuncCol PgQuery__RangeTableFuncCol; typedef struct PgQuery__TypeName PgQuery__TypeName; typedef struct PgQuery__ColumnDef PgQuery__ColumnDef; typedef struct PgQuery__IndexElem PgQuery__IndexElem; typedef struct PgQuery__StatsElem PgQuery__StatsElem; typedef struct PgQuery__Constraint PgQuery__Constraint; typedef struct PgQuery__DefElem PgQuery__DefElem; typedef struct PgQuery__RangeTblEntry PgQuery__RangeTblEntry; typedef struct PgQuery__RangeTblFunction PgQuery__RangeTblFunction; typedef struct PgQuery__TableSampleClause PgQuery__TableSampleClause; typedef struct PgQuery__WithCheckOption PgQuery__WithCheckOption; typedef struct PgQuery__SortGroupClause PgQuery__SortGroupClause; typedef struct PgQuery__GroupingSet PgQuery__GroupingSet; typedef struct PgQuery__WindowClause PgQuery__WindowClause; typedef struct PgQuery__ObjectWithArgs PgQuery__ObjectWithArgs; typedef struct PgQuery__AccessPriv PgQuery__AccessPriv; typedef struct PgQuery__CreateOpClassItem PgQuery__CreateOpClassItem; typedef struct PgQuery__TableLikeClause PgQuery__TableLikeClause; typedef struct PgQuery__FunctionParameter PgQuery__FunctionParameter; typedef struct PgQuery__LockingClause PgQuery__LockingClause; typedef struct PgQuery__RowMarkClause PgQuery__RowMarkClause; typedef struct PgQuery__XmlSerialize PgQuery__XmlSerialize; typedef struct PgQuery__WithClause PgQuery__WithClause; typedef struct PgQuery__InferClause PgQuery__InferClause; typedef struct PgQuery__OnConflictClause PgQuery__OnConflictClause; typedef struct PgQuery__CTESearchClause PgQuery__CTESearchClause; typedef struct PgQuery__CTECycleClause PgQuery__CTECycleClause; typedef struct PgQuery__CommonTableExpr PgQuery__CommonTableExpr; typedef struct PgQuery__MergeWhenClause PgQuery__MergeWhenClause; typedef struct PgQuery__RoleSpec PgQuery__RoleSpec; typedef struct PgQuery__TriggerTransition PgQuery__TriggerTransition; typedef struct PgQuery__PartitionElem PgQuery__PartitionElem; typedef struct PgQuery__PartitionSpec PgQuery__PartitionSpec; typedef struct PgQuery__PartitionBoundSpec PgQuery__PartitionBoundSpec; typedef struct PgQuery__PartitionRangeDatum PgQuery__PartitionRangeDatum; typedef struct PgQuery__PartitionCmd PgQuery__PartitionCmd; typedef struct PgQuery__VacuumRelation PgQuery__VacuumRelation; typedef struct PgQuery__PublicationObjSpec PgQuery__PublicationObjSpec; typedef struct PgQuery__PublicationTable PgQuery__PublicationTable; typedef struct PgQuery__InlineCodeBlock PgQuery__InlineCodeBlock; typedef struct PgQuery__CallContext PgQuery__CallContext; typedef struct PgQuery__ScanToken PgQuery__ScanToken; /* --- enums --- */ typedef enum _PgQuery__OverridingKind { PG_QUERY__OVERRIDING_KIND__OVERRIDING_KIND_UNDEFINED = 0, PG_QUERY__OVERRIDING_KIND__OVERRIDING_NOT_SET = 1, PG_QUERY__OVERRIDING_KIND__OVERRIDING_USER_VALUE = 2, PG_QUERY__OVERRIDING_KIND__OVERRIDING_SYSTEM_VALUE = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__OVERRIDING_KIND) } PgQuery__OverridingKind; typedef enum _PgQuery__QuerySource { PG_QUERY__QUERY_SOURCE__QUERY_SOURCE_UNDEFINED = 0, PG_QUERY__QUERY_SOURCE__QSRC_ORIGINAL = 1, PG_QUERY__QUERY_SOURCE__QSRC_PARSER = 2, PG_QUERY__QUERY_SOURCE__QSRC_INSTEAD_RULE = 3, PG_QUERY__QUERY_SOURCE__QSRC_QUAL_INSTEAD_RULE = 4, PG_QUERY__QUERY_SOURCE__QSRC_NON_INSTEAD_RULE = 5 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__QUERY_SOURCE) } PgQuery__QuerySource; typedef enum _PgQuery__SortByDir { PG_QUERY__SORT_BY_DIR__SORT_BY_DIR_UNDEFINED = 0, PG_QUERY__SORT_BY_DIR__SORTBY_DEFAULT = 1, PG_QUERY__SORT_BY_DIR__SORTBY_ASC = 2, PG_QUERY__SORT_BY_DIR__SORTBY_DESC = 3, PG_QUERY__SORT_BY_DIR__SORTBY_USING = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SORT_BY_DIR) } PgQuery__SortByDir; typedef enum _PgQuery__SortByNulls { PG_QUERY__SORT_BY_NULLS__SORT_BY_NULLS_UNDEFINED = 0, PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_DEFAULT = 1, PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_FIRST = 2, PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_LAST = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SORT_BY_NULLS) } PgQuery__SortByNulls; typedef enum _PgQuery__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__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__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_AddColumnRecurse = 2, PG_QUERY__ALTER_TABLE_TYPE__AT_AddColumnToView = 3, PG_QUERY__ALTER_TABLE_TYPE__AT_ColumnDefault = 4, PG_QUERY__ALTER_TABLE_TYPE__AT_CookedColumnDefault = 5, PG_QUERY__ALTER_TABLE_TYPE__AT_DropNotNull = 6, PG_QUERY__ALTER_TABLE_TYPE__AT_SetNotNull = 7, PG_QUERY__ALTER_TABLE_TYPE__AT_DropExpression = 8, PG_QUERY__ALTER_TABLE_TYPE__AT_CheckNotNull = 9, PG_QUERY__ALTER_TABLE_TYPE__AT_SetStatistics = 10, PG_QUERY__ALTER_TABLE_TYPE__AT_SetOptions = 11, PG_QUERY__ALTER_TABLE_TYPE__AT_ResetOptions = 12, PG_QUERY__ALTER_TABLE_TYPE__AT_SetStorage = 13, PG_QUERY__ALTER_TABLE_TYPE__AT_SetCompression = 14, PG_QUERY__ALTER_TABLE_TYPE__AT_DropColumn = 15, PG_QUERY__ALTER_TABLE_TYPE__AT_DropColumnRecurse = 16, PG_QUERY__ALTER_TABLE_TYPE__AT_AddIndex = 17, PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddIndex = 18, PG_QUERY__ALTER_TABLE_TYPE__AT_AddConstraint = 19, PG_QUERY__ALTER_TABLE_TYPE__AT_AddConstraintRecurse = 20, PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddConstraint = 21, PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddDomainConstraint = 22, PG_QUERY__ALTER_TABLE_TYPE__AT_AlterConstraint = 23, PG_QUERY__ALTER_TABLE_TYPE__AT_ValidateConstraint = 24, PG_QUERY__ALTER_TABLE_TYPE__AT_ValidateConstraintRecurse = 25, PG_QUERY__ALTER_TABLE_TYPE__AT_AddIndexConstraint = 26, PG_QUERY__ALTER_TABLE_TYPE__AT_DropConstraint = 27, PG_QUERY__ALTER_TABLE_TYPE__AT_DropConstraintRecurse = 28, PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddComment = 29, PG_QUERY__ALTER_TABLE_TYPE__AT_AlterColumnType = 30, PG_QUERY__ALTER_TABLE_TYPE__AT_AlterColumnGenericOptions = 31, PG_QUERY__ALTER_TABLE_TYPE__AT_ChangeOwner = 32, PG_QUERY__ALTER_TABLE_TYPE__AT_ClusterOn = 33, PG_QUERY__ALTER_TABLE_TYPE__AT_DropCluster = 34, PG_QUERY__ALTER_TABLE_TYPE__AT_SetLogged = 35, PG_QUERY__ALTER_TABLE_TYPE__AT_SetUnLogged = 36, PG_QUERY__ALTER_TABLE_TYPE__AT_DropOids = 37, PG_QUERY__ALTER_TABLE_TYPE__AT_SetAccessMethod = 38, PG_QUERY__ALTER_TABLE_TYPE__AT_SetTableSpace = 39, PG_QUERY__ALTER_TABLE_TYPE__AT_SetRelOptions = 40, PG_QUERY__ALTER_TABLE_TYPE__AT_ResetRelOptions = 41, PG_QUERY__ALTER_TABLE_TYPE__AT_ReplaceRelOptions = 42, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrig = 43, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableAlwaysTrig = 44, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableReplicaTrig = 45, PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrig = 46, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrigAll = 47, PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrigAll = 48, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrigUser = 49, PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrigUser = 50, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableRule = 51, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableAlwaysRule = 52, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableReplicaRule = 53, PG_QUERY__ALTER_TABLE_TYPE__AT_DisableRule = 54, PG_QUERY__ALTER_TABLE_TYPE__AT_AddInherit = 55, PG_QUERY__ALTER_TABLE_TYPE__AT_DropInherit = 56, PG_QUERY__ALTER_TABLE_TYPE__AT_AddOf = 57, PG_QUERY__ALTER_TABLE_TYPE__AT_DropOf = 58, PG_QUERY__ALTER_TABLE_TYPE__AT_ReplicaIdentity = 59, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableRowSecurity = 60, PG_QUERY__ALTER_TABLE_TYPE__AT_DisableRowSecurity = 61, PG_QUERY__ALTER_TABLE_TYPE__AT_ForceRowSecurity = 62, PG_QUERY__ALTER_TABLE_TYPE__AT_NoForceRowSecurity = 63, PG_QUERY__ALTER_TABLE_TYPE__AT_GenericOptions = 64, PG_QUERY__ALTER_TABLE_TYPE__AT_AttachPartition = 65, PG_QUERY__ALTER_TABLE_TYPE__AT_DetachPartition = 66, PG_QUERY__ALTER_TABLE_TYPE__AT_DetachPartitionFinalize = 67, PG_QUERY__ALTER_TABLE_TYPE__AT_AddIdentity = 68, PG_QUERY__ALTER_TABLE_TYPE__AT_SetIdentity = 69, PG_QUERY__ALTER_TABLE_TYPE__AT_DropIdentity = 70, PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddStatistics = 71 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__OnCommitAction { PG_QUERY__ON_COMMIT_ACTION__ON_COMMIT_ACTION_UNDEFINED = 0, PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_NOOP = 1, PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_PRESERVE_ROWS = 2, PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_DELETE_ROWS = 3, PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_DROP = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ON_COMMIT_ACTION) } PgQuery__OnCommitAction; typedef enum _PgQuery__ParamKind { PG_QUERY__PARAM_KIND__PARAM_KIND_UNDEFINED = 0, PG_QUERY__PARAM_KIND__PARAM_EXTERN = 1, PG_QUERY__PARAM_KIND__PARAM_EXEC = 2, PG_QUERY__PARAM_KIND__PARAM_SUBLINK = 3, PG_QUERY__PARAM_KIND__PARAM_MULTIEXPR = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__PARAM_KIND) } PgQuery__ParamKind; typedef enum _PgQuery__CoercionContext { PG_QUERY__COERCION_CONTEXT__COERCION_CONTEXT_UNDEFINED = 0, PG_QUERY__COERCION_CONTEXT__COERCION_IMPLICIT = 1, PG_QUERY__COERCION_CONTEXT__COERCION_ASSIGNMENT = 2, PG_QUERY__COERCION_CONTEXT__COERCION_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__NullTestType { PG_QUERY__NULL_TEST_TYPE__NULL_TEST_TYPE_UNDEFINED = 0, PG_QUERY__NULL_TEST_TYPE__IS_NULL = 1, PG_QUERY__NULL_TEST_TYPE__IS_NOT_NULL = 2 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__NULL_TEST_TYPE) } PgQuery__NullTestType; typedef enum _PgQuery__BoolTestType { PG_QUERY__BOOL_TEST_TYPE__BOOL_TEST_TYPE_UNDEFINED = 0, PG_QUERY__BOOL_TEST_TYPE__IS_TRUE = 1, PG_QUERY__BOOL_TEST_TYPE__IS_NOT_TRUE = 2, PG_QUERY__BOOL_TEST_TYPE__IS_FALSE = 3, PG_QUERY__BOOL_TEST_TYPE__IS_NOT_FALSE = 4, PG_QUERY__BOOL_TEST_TYPE__IS_UNKNOWN = 5, PG_QUERY__BOOL_TEST_TYPE__IS_NOT_UNKNOWN = 6 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__BOOL_TEST_TYPE) } PgQuery__BoolTestType; typedef enum _PgQuery__CmdType { PG_QUERY__CMD_TYPE__CMD_TYPE_UNDEFINED = 0, PG_QUERY__CMD_TYPE__CMD_UNKNOWN = 1, PG_QUERY__CMD_TYPE__CMD_SELECT = 2, PG_QUERY__CMD_TYPE__CMD_UPDATE = 3, PG_QUERY__CMD_TYPE__CMD_INSERT = 4, PG_QUERY__CMD_TYPE__CMD_DELETE = 5, PG_QUERY__CMD_TYPE__CMD_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_UNIQUE_OUTER = 7, PG_QUERY__JOIN_TYPE__JOIN_UNIQUE_INNER = 8 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__JOIN_TYPE) } PgQuery__JoinType; typedef enum _PgQuery__AggStrategy { PG_QUERY__AGG_STRATEGY__AGG_STRATEGY_UNDEFINED = 0, PG_QUERY__AGG_STRATEGY__AGG_PLAIN = 1, PG_QUERY__AGG_STRATEGY__AGG_SORTED = 2, PG_QUERY__AGG_STRATEGY__AGG_HASHED = 3, PG_QUERY__AGG_STRATEGY__AGG_MIXED = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__AGG_STRATEGY) } PgQuery__AggStrategy; typedef enum _PgQuery__AggSplit { PG_QUERY__AGG_SPLIT__AGG_SPLIT_UNDEFINED = 0, PG_QUERY__AGG_SPLIT__AGGSPLIT_SIMPLE = 1, PG_QUERY__AGG_SPLIT__AGGSPLIT_INITIAL_SERIAL = 2, PG_QUERY__AGG_SPLIT__AGGSPLIT_FINAL_DESERIAL = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__AGG_SPLIT) } PgQuery__AggSplit; typedef enum _PgQuery__SetOpCmd { PG_QUERY__SET_OP_CMD__SET_OP_CMD_UNDEFINED = 0, PG_QUERY__SET_OP_CMD__SETOPCMD_INTERSECT = 1, PG_QUERY__SET_OP_CMD__SETOPCMD_INTERSECT_ALL = 2, PG_QUERY__SET_OP_CMD__SETOPCMD_EXCEPT = 3, PG_QUERY__SET_OP_CMD__SETOPCMD_EXCEPT_ALL = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SET_OP_CMD) } PgQuery__SetOpCmd; typedef enum _PgQuery__SetOpStrategy { PG_QUERY__SET_OP_STRATEGY__SET_OP_STRATEGY_UNDEFINED = 0, PG_QUERY__SET_OP_STRATEGY__SETOP_SORTED = 1, PG_QUERY__SET_OP_STRATEGY__SETOP_HASHED = 2 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SET_OP_STRATEGY) } PgQuery__SetOpStrategy; typedef enum _PgQuery__OnConflictAction { PG_QUERY__ON_CONFLICT_ACTION__ON_CONFLICT_ACTION_UNDEFINED = 0, PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_NONE = 1, PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_NOTHING = 2, PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_UPDATE = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ON_CONFLICT_ACTION) } PgQuery__OnConflictAction; typedef enum _PgQuery__LimitOption { PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_UNDEFINED = 0, PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_DEFAULT = 1, PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_COUNT = 2, PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_WITH_TIES = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__LIMIT_OPTION) } PgQuery__LimitOption; typedef enum _PgQuery__LockClauseStrength { PG_QUERY__LOCK_CLAUSE_STRENGTH__LOCK_CLAUSE_STRENGTH_UNDEFINED = 0, PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_NONE = 1, PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORKEYSHARE = 2, PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORSHARE = 3, PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORNOKEYUPDATE = 4, PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORUPDATE = 5 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__LOCK_CLAUSE_STRENGTH) } PgQuery__LockClauseStrength; typedef enum _PgQuery__LockWaitPolicy { PG_QUERY__LOCK_WAIT_POLICY__LOCK_WAIT_POLICY_UNDEFINED = 0, PG_QUERY__LOCK_WAIT_POLICY__LockWaitBlock = 1, PG_QUERY__LOCK_WAIT_POLICY__LockWaitSkip = 2, PG_QUERY__LOCK_WAIT_POLICY__LockWaitError = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__LOCK_WAIT_POLICY) } PgQuery__LockWaitPolicy; typedef enum _PgQuery__LockTupleMode { PG_QUERY__LOCK_TUPLE_MODE__LOCK_TUPLE_MODE_UNDEFINED = 0, PG_QUERY__LOCK_TUPLE_MODE__LockTupleKeyShare = 1, PG_QUERY__LOCK_TUPLE_MODE__LockTupleShare = 2, PG_QUERY__LOCK_TUPLE_MODE__LockTupleNoKeyExclusive = 3, PG_QUERY__LOCK_TUPLE_MODE__LockTupleExclusive = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__LOCK_TUPLE_MODE) } PgQuery__LockTupleMode; typedef enum _PgQuery__KeywordKind { PG_QUERY__KEYWORD_KIND__NO_KEYWORD = 0, PG_QUERY__KEYWORD_KIND__UNRESERVED_KEYWORD = 1, PG_QUERY__KEYWORD_KIND__COL_NAME_KEYWORD = 2, PG_QUERY__KEYWORD_KIND__TYPE_FUNC_NAME_KEYWORD = 3, PG_QUERY__KEYWORD_KIND__RESERVED_KEYWORD = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__KEYWORD_KIND) } PgQuery__KeywordKind; typedef enum _PgQuery__Token { PG_QUERY__TOKEN__NUL = 0, /* * Single-character tokens that are returned 1:1 (identical with "self" list in scan.l) * Either supporting syntax, or single-character operators (some can be both) * Also see https://www.postgresql.org/docs/12/sql-syntax-lexical.html#SQL-SYNTAX-SPECIAL-CHARS */ /* * "%" */ PG_QUERY__TOKEN__ASCII_37 = 37, /* * "(" */ PG_QUERY__TOKEN__ASCII_40 = 40, /* * ")" */ PG_QUERY__TOKEN__ASCII_41 = 41, /* * "*" */ PG_QUERY__TOKEN__ASCII_42 = 42, /* * "+" */ PG_QUERY__TOKEN__ASCII_43 = 43, /* * "," */ PG_QUERY__TOKEN__ASCII_44 = 44, /* * "-" */ PG_QUERY__TOKEN__ASCII_45 = 45, /* * "." */ PG_QUERY__TOKEN__ASCII_46 = 46, /* * "/" */ PG_QUERY__TOKEN__ASCII_47 = 47, /* * ":" */ PG_QUERY__TOKEN__ASCII_58 = 58, /* * ";" */ PG_QUERY__TOKEN__ASCII_59 = 59, /* * "<" */ PG_QUERY__TOKEN__ASCII_60 = 60, /* * "=" */ PG_QUERY__TOKEN__ASCII_61 = 61, /* * ">" */ PG_QUERY__TOKEN__ASCII_62 = 62, /* * "?" */ PG_QUERY__TOKEN__ASCII_63 = 63, /* * "[" */ PG_QUERY__TOKEN__ASCII_91 = 91, /* * "\" */ PG_QUERY__TOKEN__ASCII_92 = 92, /* * "]" */ PG_QUERY__TOKEN__ASCII_93 = 93, /* * "^" */ PG_QUERY__TOKEN__ASCII_94 = 94, /* * Named tokens in scan.l */ PG_QUERY__TOKEN__IDENT = 258, PG_QUERY__TOKEN__UIDENT = 259, PG_QUERY__TOKEN__FCONST = 260, PG_QUERY__TOKEN__SCONST = 261, PG_QUERY__TOKEN__USCONST = 262, PG_QUERY__TOKEN__BCONST = 263, PG_QUERY__TOKEN__XCONST = 264, PG_QUERY__TOKEN__Op = 265, PG_QUERY__TOKEN__ICONST = 266, PG_QUERY__TOKEN__PARAM = 267, PG_QUERY__TOKEN__TYPECAST = 268, PG_QUERY__TOKEN__DOT_DOT = 269, PG_QUERY__TOKEN__COLON_EQUALS = 270, PG_QUERY__TOKEN__EQUALS_GREATER = 271, PG_QUERY__TOKEN__LESS_EQUALS = 272, PG_QUERY__TOKEN__GREATER_EQUALS = 273, PG_QUERY__TOKEN__NOT_EQUALS = 274, PG_QUERY__TOKEN__SQL_COMMENT = 275, PG_QUERY__TOKEN__C_COMMENT = 276, PG_QUERY__TOKEN__ABORT_P = 277, PG_QUERY__TOKEN__ABSOLUTE_P = 278, PG_QUERY__TOKEN__ACCESS = 279, PG_QUERY__TOKEN__ACTION = 280, PG_QUERY__TOKEN__ADD_P = 281, PG_QUERY__TOKEN__ADMIN = 282, PG_QUERY__TOKEN__AFTER = 283, PG_QUERY__TOKEN__AGGREGATE = 284, PG_QUERY__TOKEN__ALL = 285, PG_QUERY__TOKEN__ALSO = 286, PG_QUERY__TOKEN__ALTER = 287, PG_QUERY__TOKEN__ALWAYS = 288, PG_QUERY__TOKEN__ANALYSE = 289, PG_QUERY__TOKEN__ANALYZE = 290, PG_QUERY__TOKEN__AND = 291, PG_QUERY__TOKEN__ANY = 292, PG_QUERY__TOKEN__ARRAY = 293, PG_QUERY__TOKEN__AS = 294, PG_QUERY__TOKEN__ASC = 295, PG_QUERY__TOKEN__ASENSITIVE = 296, PG_QUERY__TOKEN__ASSERTION = 297, PG_QUERY__TOKEN__ASSIGNMENT = 298, PG_QUERY__TOKEN__ASYMMETRIC = 299, PG_QUERY__TOKEN__ATOMIC = 300, PG_QUERY__TOKEN__AT = 301, PG_QUERY__TOKEN__ATTACH = 302, PG_QUERY__TOKEN__ATTRIBUTE = 303, PG_QUERY__TOKEN__AUTHORIZATION = 304, PG_QUERY__TOKEN__BACKWARD = 305, PG_QUERY__TOKEN__BEFORE = 306, PG_QUERY__TOKEN__BEGIN_P = 307, PG_QUERY__TOKEN__BETWEEN = 308, PG_QUERY__TOKEN__BIGINT = 309, PG_QUERY__TOKEN__BINARY = 310, PG_QUERY__TOKEN__BIT = 311, PG_QUERY__TOKEN__BOOLEAN_P = 312, PG_QUERY__TOKEN__BOTH = 313, PG_QUERY__TOKEN__BREADTH = 314, PG_QUERY__TOKEN__BY = 315, PG_QUERY__TOKEN__CACHE = 316, PG_QUERY__TOKEN__CALL = 317, PG_QUERY__TOKEN__CALLED = 318, PG_QUERY__TOKEN__CASCADE = 319, PG_QUERY__TOKEN__CASCADED = 320, PG_QUERY__TOKEN__CASE = 321, PG_QUERY__TOKEN__CAST = 322, PG_QUERY__TOKEN__CATALOG_P = 323, PG_QUERY__TOKEN__CHAIN = 324, PG_QUERY__TOKEN__CHAR_P = 325, PG_QUERY__TOKEN__CHARACTER = 326, PG_QUERY__TOKEN__CHARACTERISTICS = 327, PG_QUERY__TOKEN__CHECK = 328, PG_QUERY__TOKEN__CHECKPOINT = 329, PG_QUERY__TOKEN__CLASS = 330, PG_QUERY__TOKEN__CLOSE = 331, PG_QUERY__TOKEN__CLUSTER = 332, PG_QUERY__TOKEN__COALESCE = 333, PG_QUERY__TOKEN__COLLATE = 334, PG_QUERY__TOKEN__COLLATION = 335, PG_QUERY__TOKEN__COLUMN = 336, PG_QUERY__TOKEN__COLUMNS = 337, PG_QUERY__TOKEN__COMMENT = 338, PG_QUERY__TOKEN__COMMENTS = 339, PG_QUERY__TOKEN__COMMIT = 340, PG_QUERY__TOKEN__COMMITTED = 341, PG_QUERY__TOKEN__COMPRESSION = 342, PG_QUERY__TOKEN__CONCURRENTLY = 343, PG_QUERY__TOKEN__CONFIGURATION = 344, PG_QUERY__TOKEN__CONFLICT = 345, PG_QUERY__TOKEN__CONNECTION = 346, PG_QUERY__TOKEN__CONSTRAINT = 347, PG_QUERY__TOKEN__CONSTRAINTS = 348, PG_QUERY__TOKEN__CONTENT_P = 349, PG_QUERY__TOKEN__CONTINUE_P = 350, PG_QUERY__TOKEN__CONVERSION_P = 351, PG_QUERY__TOKEN__COPY = 352, PG_QUERY__TOKEN__COST = 353, PG_QUERY__TOKEN__CREATE = 354, PG_QUERY__TOKEN__CROSS = 355, PG_QUERY__TOKEN__CSV = 356, PG_QUERY__TOKEN__CUBE = 357, PG_QUERY__TOKEN__CURRENT_P = 358, PG_QUERY__TOKEN__CURRENT_CATALOG = 359, PG_QUERY__TOKEN__CURRENT_DATE = 360, PG_QUERY__TOKEN__CURRENT_ROLE = 361, PG_QUERY__TOKEN__CURRENT_SCHEMA = 362, PG_QUERY__TOKEN__CURRENT_TIME = 363, PG_QUERY__TOKEN__CURRENT_TIMESTAMP = 364, PG_QUERY__TOKEN__CURRENT_USER = 365, PG_QUERY__TOKEN__CURSOR = 366, PG_QUERY__TOKEN__CYCLE = 367, PG_QUERY__TOKEN__DATA_P = 368, PG_QUERY__TOKEN__DATABASE = 369, PG_QUERY__TOKEN__DAY_P = 370, PG_QUERY__TOKEN__DEALLOCATE = 371, PG_QUERY__TOKEN__DEC = 372, PG_QUERY__TOKEN__DECIMAL_P = 373, PG_QUERY__TOKEN__DECLARE = 374, PG_QUERY__TOKEN__DEFAULT = 375, PG_QUERY__TOKEN__DEFAULTS = 376, PG_QUERY__TOKEN__DEFERRABLE = 377, PG_QUERY__TOKEN__DEFERRED = 378, PG_QUERY__TOKEN__DEFINER = 379, PG_QUERY__TOKEN__DELETE_P = 380, PG_QUERY__TOKEN__DELIMITER = 381, PG_QUERY__TOKEN__DELIMITERS = 382, PG_QUERY__TOKEN__DEPENDS = 383, PG_QUERY__TOKEN__DEPTH = 384, PG_QUERY__TOKEN__DESC = 385, PG_QUERY__TOKEN__DETACH = 386, PG_QUERY__TOKEN__DICTIONARY = 387, PG_QUERY__TOKEN__DISABLE_P = 388, PG_QUERY__TOKEN__DISCARD = 389, PG_QUERY__TOKEN__DISTINCT = 390, PG_QUERY__TOKEN__DO = 391, PG_QUERY__TOKEN__DOCUMENT_P = 392, PG_QUERY__TOKEN__DOMAIN_P = 393, PG_QUERY__TOKEN__DOUBLE_P = 394, PG_QUERY__TOKEN__DROP = 395, PG_QUERY__TOKEN__EACH = 396, PG_QUERY__TOKEN__ELSE = 397, PG_QUERY__TOKEN__ENABLE_P = 398, PG_QUERY__TOKEN__ENCODING = 399, PG_QUERY__TOKEN__ENCRYPTED = 400, PG_QUERY__TOKEN__END_P = 401, PG_QUERY__TOKEN__ENUM_P = 402, PG_QUERY__TOKEN__ESCAPE = 403, PG_QUERY__TOKEN__EVENT = 404, PG_QUERY__TOKEN__EXCEPT = 405, PG_QUERY__TOKEN__EXCLUDE = 406, PG_QUERY__TOKEN__EXCLUDING = 407, PG_QUERY__TOKEN__EXCLUSIVE = 408, PG_QUERY__TOKEN__EXECUTE = 409, PG_QUERY__TOKEN__EXISTS = 410, PG_QUERY__TOKEN__EXPLAIN = 411, PG_QUERY__TOKEN__EXPRESSION = 412, PG_QUERY__TOKEN__EXTENSION = 413, PG_QUERY__TOKEN__EXTERNAL = 414, PG_QUERY__TOKEN__EXTRACT = 415, PG_QUERY__TOKEN__FALSE_P = 416, PG_QUERY__TOKEN__FAMILY = 417, PG_QUERY__TOKEN__FETCH = 418, PG_QUERY__TOKEN__FILTER = 419, PG_QUERY__TOKEN__FINALIZE = 420, PG_QUERY__TOKEN__FIRST_P = 421, PG_QUERY__TOKEN__FLOAT_P = 422, PG_QUERY__TOKEN__FOLLOWING = 423, PG_QUERY__TOKEN__FOR = 424, PG_QUERY__TOKEN__FORCE = 425, PG_QUERY__TOKEN__FOREIGN = 426, PG_QUERY__TOKEN__FORWARD = 427, PG_QUERY__TOKEN__FREEZE = 428, PG_QUERY__TOKEN__FROM = 429, PG_QUERY__TOKEN__FULL = 430, PG_QUERY__TOKEN__FUNCTION = 431, PG_QUERY__TOKEN__FUNCTIONS = 432, PG_QUERY__TOKEN__GENERATED = 433, PG_QUERY__TOKEN__GLOBAL = 434, PG_QUERY__TOKEN__GRANT = 435, PG_QUERY__TOKEN__GRANTED = 436, PG_QUERY__TOKEN__GREATEST = 437, PG_QUERY__TOKEN__GROUP_P = 438, PG_QUERY__TOKEN__GROUPING = 439, PG_QUERY__TOKEN__GROUPS = 440, PG_QUERY__TOKEN__HANDLER = 441, PG_QUERY__TOKEN__HAVING = 442, PG_QUERY__TOKEN__HEADER_P = 443, PG_QUERY__TOKEN__HOLD = 444, PG_QUERY__TOKEN__HOUR_P = 445, PG_QUERY__TOKEN__IDENTITY_P = 446, PG_QUERY__TOKEN__IF_P = 447, PG_QUERY__TOKEN__ILIKE = 448, PG_QUERY__TOKEN__IMMEDIATE = 449, PG_QUERY__TOKEN__IMMUTABLE = 450, PG_QUERY__TOKEN__IMPLICIT_P = 451, PG_QUERY__TOKEN__IMPORT_P = 452, PG_QUERY__TOKEN__IN_P = 453, PG_QUERY__TOKEN__INCLUDE = 454, PG_QUERY__TOKEN__INCLUDING = 455, PG_QUERY__TOKEN__INCREMENT = 456, PG_QUERY__TOKEN__INDEX = 457, PG_QUERY__TOKEN__INDEXES = 458, PG_QUERY__TOKEN__INHERIT = 459, PG_QUERY__TOKEN__INHERITS = 460, PG_QUERY__TOKEN__INITIALLY = 461, PG_QUERY__TOKEN__INLINE_P = 462, PG_QUERY__TOKEN__INNER_P = 463, PG_QUERY__TOKEN__INOUT = 464, PG_QUERY__TOKEN__INPUT_P = 465, PG_QUERY__TOKEN__INSENSITIVE = 466, PG_QUERY__TOKEN__INSERT = 467, PG_QUERY__TOKEN__INSTEAD = 468, PG_QUERY__TOKEN__INT_P = 469, PG_QUERY__TOKEN__INTEGER = 470, PG_QUERY__TOKEN__INTERSECT = 471, PG_QUERY__TOKEN__INTERVAL = 472, PG_QUERY__TOKEN__INTO = 473, PG_QUERY__TOKEN__INVOKER = 474, PG_QUERY__TOKEN__IS = 475, PG_QUERY__TOKEN__ISNULL = 476, PG_QUERY__TOKEN__ISOLATION = 477, PG_QUERY__TOKEN__JOIN = 478, PG_QUERY__TOKEN__KEY = 479, PG_QUERY__TOKEN__LABEL = 480, PG_QUERY__TOKEN__LANGUAGE = 481, PG_QUERY__TOKEN__LARGE_P = 482, PG_QUERY__TOKEN__LAST_P = 483, PG_QUERY__TOKEN__LATERAL_P = 484, PG_QUERY__TOKEN__LEADING = 485, PG_QUERY__TOKEN__LEAKPROOF = 486, PG_QUERY__TOKEN__LEAST = 487, PG_QUERY__TOKEN__LEFT = 488, PG_QUERY__TOKEN__LEVEL = 489, PG_QUERY__TOKEN__LIKE = 490, PG_QUERY__TOKEN__LIMIT = 491, PG_QUERY__TOKEN__LISTEN = 492, PG_QUERY__TOKEN__LOAD = 493, PG_QUERY__TOKEN__LOCAL = 494, PG_QUERY__TOKEN__LOCALTIME = 495, PG_QUERY__TOKEN__LOCALTIMESTAMP = 496, PG_QUERY__TOKEN__LOCATION = 497, PG_QUERY__TOKEN__LOCK_P = 498, PG_QUERY__TOKEN__LOCKED = 499, PG_QUERY__TOKEN__LOGGED = 500, PG_QUERY__TOKEN__MAPPING = 501, PG_QUERY__TOKEN__MATCH = 502, PG_QUERY__TOKEN__MATCHED = 503, PG_QUERY__TOKEN__MATERIALIZED = 504, PG_QUERY__TOKEN__MAXVALUE = 505, PG_QUERY__TOKEN__MERGE = 506, PG_QUERY__TOKEN__METHOD = 507, PG_QUERY__TOKEN__MINUTE_P = 508, PG_QUERY__TOKEN__MINVALUE = 509, PG_QUERY__TOKEN__MODE = 510, PG_QUERY__TOKEN__MONTH_P = 511, PG_QUERY__TOKEN__MOVE = 512, PG_QUERY__TOKEN__NAME_P = 513, PG_QUERY__TOKEN__NAMES = 514, PG_QUERY__TOKEN__NATIONAL = 515, PG_QUERY__TOKEN__NATURAL = 516, PG_QUERY__TOKEN__NCHAR = 517, PG_QUERY__TOKEN__NEW = 518, PG_QUERY__TOKEN__NEXT = 519, PG_QUERY__TOKEN__NFC = 520, PG_QUERY__TOKEN__NFD = 521, PG_QUERY__TOKEN__NFKC = 522, PG_QUERY__TOKEN__NFKD = 523, PG_QUERY__TOKEN__NO = 524, PG_QUERY__TOKEN__NONE = 525, PG_QUERY__TOKEN__NORMALIZE = 526, PG_QUERY__TOKEN__NORMALIZED = 527, PG_QUERY__TOKEN__NOT = 528, PG_QUERY__TOKEN__NOTHING = 529, PG_QUERY__TOKEN__NOTIFY = 530, PG_QUERY__TOKEN__NOTNULL = 531, PG_QUERY__TOKEN__NOWAIT = 532, PG_QUERY__TOKEN__NULL_P = 533, PG_QUERY__TOKEN__NULLIF = 534, PG_QUERY__TOKEN__NULLS_P = 535, PG_QUERY__TOKEN__NUMERIC = 536, PG_QUERY__TOKEN__OBJECT_P = 537, PG_QUERY__TOKEN__OF = 538, PG_QUERY__TOKEN__OFF = 539, PG_QUERY__TOKEN__OFFSET = 540, PG_QUERY__TOKEN__OIDS = 541, PG_QUERY__TOKEN__OLD = 542, PG_QUERY__TOKEN__ON = 543, PG_QUERY__TOKEN__ONLY = 544, PG_QUERY__TOKEN__OPERATOR = 545, PG_QUERY__TOKEN__OPTION = 546, PG_QUERY__TOKEN__OPTIONS = 547, PG_QUERY__TOKEN__OR = 548, PG_QUERY__TOKEN__ORDER = 549, PG_QUERY__TOKEN__ORDINALITY = 550, PG_QUERY__TOKEN__OTHERS = 551, PG_QUERY__TOKEN__OUT_P = 552, PG_QUERY__TOKEN__OUTER_P = 553, PG_QUERY__TOKEN__OVER = 554, PG_QUERY__TOKEN__OVERLAPS = 555, PG_QUERY__TOKEN__OVERLAY = 556, PG_QUERY__TOKEN__OVERRIDING = 557, PG_QUERY__TOKEN__OWNED = 558, PG_QUERY__TOKEN__OWNER = 559, PG_QUERY__TOKEN__PARALLEL = 560, PG_QUERY__TOKEN__PARAMETER = 561, PG_QUERY__TOKEN__PARSER = 562, PG_QUERY__TOKEN__PARTIAL = 563, PG_QUERY__TOKEN__PARTITION = 564, PG_QUERY__TOKEN__PASSING = 565, PG_QUERY__TOKEN__PASSWORD = 566, PG_QUERY__TOKEN__PLACING = 567, PG_QUERY__TOKEN__PLANS = 568, PG_QUERY__TOKEN__POLICY = 569, PG_QUERY__TOKEN__POSITION = 570, PG_QUERY__TOKEN__PRECEDING = 571, PG_QUERY__TOKEN__PRECISION = 572, PG_QUERY__TOKEN__PRESERVE = 573, PG_QUERY__TOKEN__PREPARE = 574, PG_QUERY__TOKEN__PREPARED = 575, PG_QUERY__TOKEN__PRIMARY = 576, PG_QUERY__TOKEN__PRIOR = 577, PG_QUERY__TOKEN__PRIVILEGES = 578, PG_QUERY__TOKEN__PROCEDURAL = 579, PG_QUERY__TOKEN__PROCEDURE = 580, PG_QUERY__TOKEN__PROCEDURES = 581, PG_QUERY__TOKEN__PROGRAM = 582, PG_QUERY__TOKEN__PUBLICATION = 583, PG_QUERY__TOKEN__QUOTE = 584, PG_QUERY__TOKEN__RANGE = 585, PG_QUERY__TOKEN__READ = 586, PG_QUERY__TOKEN__REAL = 587, PG_QUERY__TOKEN__REASSIGN = 588, PG_QUERY__TOKEN__RECHECK = 589, PG_QUERY__TOKEN__RECURSIVE = 590, PG_QUERY__TOKEN__REF_P = 591, PG_QUERY__TOKEN__REFERENCES = 592, PG_QUERY__TOKEN__REFERENCING = 593, PG_QUERY__TOKEN__REFRESH = 594, PG_QUERY__TOKEN__REINDEX = 595, PG_QUERY__TOKEN__RELATIVE_P = 596, PG_QUERY__TOKEN__RELEASE = 597, PG_QUERY__TOKEN__RENAME = 598, PG_QUERY__TOKEN__REPEATABLE = 599, PG_QUERY__TOKEN__REPLACE = 600, PG_QUERY__TOKEN__REPLICA = 601, PG_QUERY__TOKEN__RESET = 602, PG_QUERY__TOKEN__RESTART = 603, PG_QUERY__TOKEN__RESTRICT = 604, PG_QUERY__TOKEN__RETURN = 605, PG_QUERY__TOKEN__RETURNING = 606, PG_QUERY__TOKEN__RETURNS = 607, PG_QUERY__TOKEN__REVOKE = 608, PG_QUERY__TOKEN__RIGHT = 609, PG_QUERY__TOKEN__ROLE = 610, PG_QUERY__TOKEN__ROLLBACK = 611, PG_QUERY__TOKEN__ROLLUP = 612, PG_QUERY__TOKEN__ROUTINE = 613, PG_QUERY__TOKEN__ROUTINES = 614, PG_QUERY__TOKEN__ROW = 615, PG_QUERY__TOKEN__ROWS = 616, PG_QUERY__TOKEN__RULE = 617, PG_QUERY__TOKEN__SAVEPOINT = 618, PG_QUERY__TOKEN__SCHEMA = 619, PG_QUERY__TOKEN__SCHEMAS = 620, PG_QUERY__TOKEN__SCROLL = 621, PG_QUERY__TOKEN__SEARCH = 622, PG_QUERY__TOKEN__SECOND_P = 623, PG_QUERY__TOKEN__SECURITY = 624, PG_QUERY__TOKEN__SELECT = 625, PG_QUERY__TOKEN__SEQUENCE = 626, PG_QUERY__TOKEN__SEQUENCES = 627, PG_QUERY__TOKEN__SERIALIZABLE = 628, PG_QUERY__TOKEN__SERVER = 629, PG_QUERY__TOKEN__SESSION = 630, PG_QUERY__TOKEN__SESSION_USER = 631, PG_QUERY__TOKEN__SET = 632, PG_QUERY__TOKEN__SETS = 633, PG_QUERY__TOKEN__SETOF = 634, PG_QUERY__TOKEN__SHARE = 635, PG_QUERY__TOKEN__SHOW = 636, PG_QUERY__TOKEN__SIMILAR = 637, PG_QUERY__TOKEN__SIMPLE = 638, PG_QUERY__TOKEN__SKIP = 639, PG_QUERY__TOKEN__SMALLINT = 640, PG_QUERY__TOKEN__SNAPSHOT = 641, PG_QUERY__TOKEN__SOME = 642, PG_QUERY__TOKEN__SQL_P = 643, PG_QUERY__TOKEN__STABLE = 644, PG_QUERY__TOKEN__STANDALONE_P = 645, PG_QUERY__TOKEN__START = 646, PG_QUERY__TOKEN__STATEMENT = 647, PG_QUERY__TOKEN__STATISTICS = 648, PG_QUERY__TOKEN__STDIN = 649, PG_QUERY__TOKEN__STDOUT = 650, PG_QUERY__TOKEN__STORAGE = 651, PG_QUERY__TOKEN__STORED = 652, PG_QUERY__TOKEN__STRICT_P = 653, PG_QUERY__TOKEN__STRIP_P = 654, PG_QUERY__TOKEN__SUBSCRIPTION = 655, PG_QUERY__TOKEN__SUBSTRING = 656, PG_QUERY__TOKEN__SUPPORT = 657, PG_QUERY__TOKEN__SYMMETRIC = 658, PG_QUERY__TOKEN__SYSID = 659, PG_QUERY__TOKEN__SYSTEM_P = 660, PG_QUERY__TOKEN__TABLE = 661, PG_QUERY__TOKEN__TABLES = 662, PG_QUERY__TOKEN__TABLESAMPLE = 663, PG_QUERY__TOKEN__TABLESPACE = 664, PG_QUERY__TOKEN__TEMP = 665, PG_QUERY__TOKEN__TEMPLATE = 666, PG_QUERY__TOKEN__TEMPORARY = 667, PG_QUERY__TOKEN__TEXT_P = 668, PG_QUERY__TOKEN__THEN = 669, PG_QUERY__TOKEN__TIES = 670, PG_QUERY__TOKEN__TIME = 671, PG_QUERY__TOKEN__TIMESTAMP = 672, PG_QUERY__TOKEN__TO = 673, PG_QUERY__TOKEN__TRAILING = 674, PG_QUERY__TOKEN__TRANSACTION = 675, PG_QUERY__TOKEN__TRANSFORM = 676, PG_QUERY__TOKEN__TREAT = 677, PG_QUERY__TOKEN__TRIGGER = 678, PG_QUERY__TOKEN__TRIM = 679, PG_QUERY__TOKEN__TRUE_P = 680, PG_QUERY__TOKEN__TRUNCATE = 681, PG_QUERY__TOKEN__TRUSTED = 682, PG_QUERY__TOKEN__TYPE_P = 683, PG_QUERY__TOKEN__TYPES_P = 684, PG_QUERY__TOKEN__UESCAPE = 685, PG_QUERY__TOKEN__UNBOUNDED = 686, PG_QUERY__TOKEN__UNCOMMITTED = 687, PG_QUERY__TOKEN__UNENCRYPTED = 688, PG_QUERY__TOKEN__UNION = 689, PG_QUERY__TOKEN__UNIQUE = 690, PG_QUERY__TOKEN__UNKNOWN = 691, PG_QUERY__TOKEN__UNLISTEN = 692, PG_QUERY__TOKEN__UNLOGGED = 693, PG_QUERY__TOKEN__UNTIL = 694, PG_QUERY__TOKEN__UPDATE = 695, PG_QUERY__TOKEN__USER = 696, PG_QUERY__TOKEN__USING = 697, PG_QUERY__TOKEN__VACUUM = 698, PG_QUERY__TOKEN__VALID = 699, PG_QUERY__TOKEN__VALIDATE = 700, PG_QUERY__TOKEN__VALIDATOR = 701, PG_QUERY__TOKEN__VALUE_P = 702, PG_QUERY__TOKEN__VALUES = 703, PG_QUERY__TOKEN__VARCHAR = 704, PG_QUERY__TOKEN__VARIADIC = 705, PG_QUERY__TOKEN__VARYING = 706, PG_QUERY__TOKEN__VERBOSE = 707, PG_QUERY__TOKEN__VERSION_P = 708, PG_QUERY__TOKEN__VIEW = 709, PG_QUERY__TOKEN__VIEWS = 710, PG_QUERY__TOKEN__VOLATILE = 711, PG_QUERY__TOKEN__WHEN = 712, PG_QUERY__TOKEN__WHERE = 713, PG_QUERY__TOKEN__WHITESPACE_P = 714, PG_QUERY__TOKEN__WINDOW = 715, PG_QUERY__TOKEN__WITH = 716, PG_QUERY__TOKEN__WITHIN = 717, PG_QUERY__TOKEN__WITHOUT = 718, PG_QUERY__TOKEN__WORK = 719, PG_QUERY__TOKEN__WRAPPER = 720, PG_QUERY__TOKEN__WRITE = 721, PG_QUERY__TOKEN__XML_P = 722, PG_QUERY__TOKEN__XMLATTRIBUTES = 723, PG_QUERY__TOKEN__XMLCONCAT = 724, PG_QUERY__TOKEN__XMLELEMENT = 725, PG_QUERY__TOKEN__XMLEXISTS = 726, PG_QUERY__TOKEN__XMLFOREST = 727, PG_QUERY__TOKEN__XMLNAMESPACES = 728, PG_QUERY__TOKEN__XMLPARSE = 729, PG_QUERY__TOKEN__XMLPI = 730, PG_QUERY__TOKEN__XMLROOT = 731, PG_QUERY__TOKEN__XMLSERIALIZE = 732, PG_QUERY__TOKEN__XMLTABLE = 733, PG_QUERY__TOKEN__YEAR_P = 734, PG_QUERY__TOKEN__YES_P = 735, PG_QUERY__TOKEN__ZONE = 736, PG_QUERY__TOKEN__NOT_LA = 737, PG_QUERY__TOKEN__NULLS_LA = 738, PG_QUERY__TOKEN__WITH_LA = 739, PG_QUERY__TOKEN__MODE_TYPE_NAME = 740, PG_QUERY__TOKEN__MODE_PLPGSQL_EXPR = 741, PG_QUERY__TOKEN__MODE_PLPGSQL_ASSIGN1 = 742, PG_QUERY__TOKEN__MODE_PLPGSQL_ASSIGN2 = 743, PG_QUERY__TOKEN__MODE_PLPGSQL_ASSIGN3 = 744, PG_QUERY__TOKEN__UMINUS = 745 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_VAR = 4, PG_QUERY__NODE__NODE_PARAM = 5, PG_QUERY__NODE__NODE_AGGREF = 6, PG_QUERY__NODE__NODE_GROUPING_FUNC = 7, PG_QUERY__NODE__NODE_WINDOW_FUNC = 8, PG_QUERY__NODE__NODE_SUBSCRIPTING_REF = 9, PG_QUERY__NODE__NODE_FUNC_EXPR = 10, PG_QUERY__NODE__NODE_NAMED_ARG_EXPR = 11, PG_QUERY__NODE__NODE_OP_EXPR = 12, PG_QUERY__NODE__NODE_DISTINCT_EXPR = 13, PG_QUERY__NODE__NODE_NULL_IF_EXPR = 14, PG_QUERY__NODE__NODE_SCALAR_ARRAY_OP_EXPR = 15, PG_QUERY__NODE__NODE_BOOL_EXPR = 16, PG_QUERY__NODE__NODE_SUB_LINK = 17, PG_QUERY__NODE__NODE_SUB_PLAN = 18, PG_QUERY__NODE__NODE_ALTERNATIVE_SUB_PLAN = 19, PG_QUERY__NODE__NODE_FIELD_SELECT = 20, PG_QUERY__NODE__NODE_FIELD_STORE = 21, PG_QUERY__NODE__NODE_RELABEL_TYPE = 22, PG_QUERY__NODE__NODE_COERCE_VIA_IO = 23, PG_QUERY__NODE__NODE_ARRAY_COERCE_EXPR = 24, PG_QUERY__NODE__NODE_CONVERT_ROWTYPE_EXPR = 25, PG_QUERY__NODE__NODE_COLLATE_EXPR = 26, PG_QUERY__NODE__NODE_CASE_EXPR = 27, PG_QUERY__NODE__NODE_CASE_WHEN = 28, PG_QUERY__NODE__NODE_CASE_TEST_EXPR = 29, PG_QUERY__NODE__NODE_ARRAY_EXPR = 30, PG_QUERY__NODE__NODE_ROW_EXPR = 31, PG_QUERY__NODE__NODE_ROW_COMPARE_EXPR = 32, PG_QUERY__NODE__NODE_COALESCE_EXPR = 33, PG_QUERY__NODE__NODE_MIN_MAX_EXPR = 34, PG_QUERY__NODE__NODE_SQLVALUE_FUNCTION = 35, PG_QUERY__NODE__NODE_XML_EXPR = 36, PG_QUERY__NODE__NODE_NULL_TEST = 37, PG_QUERY__NODE__NODE_BOOLEAN_TEST = 38, PG_QUERY__NODE__NODE_COERCE_TO_DOMAIN = 39, PG_QUERY__NODE__NODE_COERCE_TO_DOMAIN_VALUE = 40, PG_QUERY__NODE__NODE_SET_TO_DEFAULT = 41, PG_QUERY__NODE__NODE_CURRENT_OF_EXPR = 42, PG_QUERY__NODE__NODE_NEXT_VALUE_EXPR = 43, PG_QUERY__NODE__NODE_INFERENCE_ELEM = 44, PG_QUERY__NODE__NODE_TARGET_ENTRY = 45, PG_QUERY__NODE__NODE_RANGE_TBL_REF = 46, PG_QUERY__NODE__NODE_JOIN_EXPR = 47, PG_QUERY__NODE__NODE_FROM_EXPR = 48, PG_QUERY__NODE__NODE_ON_CONFLICT_EXPR = 49, PG_QUERY__NODE__NODE_INTO_CLAUSE = 50, PG_QUERY__NODE__NODE_MERGE_ACTION = 51, PG_QUERY__NODE__NODE_RAW_STMT = 52, PG_QUERY__NODE__NODE_QUERY = 53, PG_QUERY__NODE__NODE_INSERT_STMT = 54, PG_QUERY__NODE__NODE_DELETE_STMT = 55, PG_QUERY__NODE__NODE_UPDATE_STMT = 56, PG_QUERY__NODE__NODE_MERGE_STMT = 57, PG_QUERY__NODE__NODE_SELECT_STMT = 58, PG_QUERY__NODE__NODE_RETURN_STMT = 59, PG_QUERY__NODE__NODE_PLASSIGN_STMT = 60, PG_QUERY__NODE__NODE_ALTER_TABLE_STMT = 61, PG_QUERY__NODE__NODE_ALTER_TABLE_CMD = 62, PG_QUERY__NODE__NODE_ALTER_DOMAIN_STMT = 63, PG_QUERY__NODE__NODE_SET_OPERATION_STMT = 64, PG_QUERY__NODE__NODE_GRANT_STMT = 65, PG_QUERY__NODE__NODE_GRANT_ROLE_STMT = 66, PG_QUERY__NODE__NODE_ALTER_DEFAULT_PRIVILEGES_STMT = 67, PG_QUERY__NODE__NODE_CLOSE_PORTAL_STMT = 68, PG_QUERY__NODE__NODE_CLUSTER_STMT = 69, PG_QUERY__NODE__NODE_COPY_STMT = 70, PG_QUERY__NODE__NODE_CREATE_STMT = 71, PG_QUERY__NODE__NODE_DEFINE_STMT = 72, PG_QUERY__NODE__NODE_DROP_STMT = 73, PG_QUERY__NODE__NODE_TRUNCATE_STMT = 74, PG_QUERY__NODE__NODE_COMMENT_STMT = 75, PG_QUERY__NODE__NODE_FETCH_STMT = 76, PG_QUERY__NODE__NODE_INDEX_STMT = 77, PG_QUERY__NODE__NODE_CREATE_FUNCTION_STMT = 78, PG_QUERY__NODE__NODE_ALTER_FUNCTION_STMT = 79, PG_QUERY__NODE__NODE_DO_STMT = 80, PG_QUERY__NODE__NODE_RENAME_STMT = 81, PG_QUERY__NODE__NODE_RULE_STMT = 82, PG_QUERY__NODE__NODE_NOTIFY_STMT = 83, PG_QUERY__NODE__NODE_LISTEN_STMT = 84, PG_QUERY__NODE__NODE_UNLISTEN_STMT = 85, PG_QUERY__NODE__NODE_TRANSACTION_STMT = 86, PG_QUERY__NODE__NODE_VIEW_STMT = 87, PG_QUERY__NODE__NODE_LOAD_STMT = 88, PG_QUERY__NODE__NODE_CREATE_DOMAIN_STMT = 89, PG_QUERY__NODE__NODE_CREATEDB_STMT = 90, PG_QUERY__NODE__NODE_DROPDB_STMT = 91, PG_QUERY__NODE__NODE_VACUUM_STMT = 92, PG_QUERY__NODE__NODE_EXPLAIN_STMT = 93, PG_QUERY__NODE__NODE_CREATE_TABLE_AS_STMT = 94, PG_QUERY__NODE__NODE_CREATE_SEQ_STMT = 95, PG_QUERY__NODE__NODE_ALTER_SEQ_STMT = 96, PG_QUERY__NODE__NODE_VARIABLE_SET_STMT = 97, PG_QUERY__NODE__NODE_VARIABLE_SHOW_STMT = 98, PG_QUERY__NODE__NODE_DISCARD_STMT = 99, PG_QUERY__NODE__NODE_CREATE_TRIG_STMT = 100, PG_QUERY__NODE__NODE_CREATE_PLANG_STMT = 101, PG_QUERY__NODE__NODE_CREATE_ROLE_STMT = 102, PG_QUERY__NODE__NODE_ALTER_ROLE_STMT = 103, PG_QUERY__NODE__NODE_DROP_ROLE_STMT = 104, PG_QUERY__NODE__NODE_LOCK_STMT = 105, PG_QUERY__NODE__NODE_CONSTRAINTS_SET_STMT = 106, PG_QUERY__NODE__NODE_REINDEX_STMT = 107, PG_QUERY__NODE__NODE_CHECK_POINT_STMT = 108, PG_QUERY__NODE__NODE_CREATE_SCHEMA_STMT = 109, PG_QUERY__NODE__NODE_ALTER_DATABASE_STMT = 110, PG_QUERY__NODE__NODE_ALTER_DATABASE_REFRESH_COLL_STMT = 111, PG_QUERY__NODE__NODE_ALTER_DATABASE_SET_STMT = 112, PG_QUERY__NODE__NODE_ALTER_ROLE_SET_STMT = 113, PG_QUERY__NODE__NODE_CREATE_CONVERSION_STMT = 114, PG_QUERY__NODE__NODE_CREATE_CAST_STMT = 115, PG_QUERY__NODE__NODE_CREATE_OP_CLASS_STMT = 116, PG_QUERY__NODE__NODE_CREATE_OP_FAMILY_STMT = 117, PG_QUERY__NODE__NODE_ALTER_OP_FAMILY_STMT = 118, PG_QUERY__NODE__NODE_PREPARE_STMT = 119, PG_QUERY__NODE__NODE_EXECUTE_STMT = 120, PG_QUERY__NODE__NODE_DEALLOCATE_STMT = 121, PG_QUERY__NODE__NODE_DECLARE_CURSOR_STMT = 122, PG_QUERY__NODE__NODE_CREATE_TABLE_SPACE_STMT = 123, PG_QUERY__NODE__NODE_DROP_TABLE_SPACE_STMT = 124, PG_QUERY__NODE__NODE_ALTER_OBJECT_DEPENDS_STMT = 125, PG_QUERY__NODE__NODE_ALTER_OBJECT_SCHEMA_STMT = 126, PG_QUERY__NODE__NODE_ALTER_OWNER_STMT = 127, PG_QUERY__NODE__NODE_ALTER_OPERATOR_STMT = 128, PG_QUERY__NODE__NODE_ALTER_TYPE_STMT = 129, PG_QUERY__NODE__NODE_DROP_OWNED_STMT = 130, PG_QUERY__NODE__NODE_REASSIGN_OWNED_STMT = 131, PG_QUERY__NODE__NODE_COMPOSITE_TYPE_STMT = 132, PG_QUERY__NODE__NODE_CREATE_ENUM_STMT = 133, PG_QUERY__NODE__NODE_CREATE_RANGE_STMT = 134, PG_QUERY__NODE__NODE_ALTER_ENUM_STMT = 135, PG_QUERY__NODE__NODE_ALTER_TSDICTIONARY_STMT = 136, PG_QUERY__NODE__NODE_ALTER_TSCONFIGURATION_STMT = 137, PG_QUERY__NODE__NODE_CREATE_FDW_STMT = 138, PG_QUERY__NODE__NODE_ALTER_FDW_STMT = 139, PG_QUERY__NODE__NODE_CREATE_FOREIGN_SERVER_STMT = 140, PG_QUERY__NODE__NODE_ALTER_FOREIGN_SERVER_STMT = 141, PG_QUERY__NODE__NODE_CREATE_USER_MAPPING_STMT = 142, PG_QUERY__NODE__NODE_ALTER_USER_MAPPING_STMT = 143, PG_QUERY__NODE__NODE_DROP_USER_MAPPING_STMT = 144, PG_QUERY__NODE__NODE_ALTER_TABLE_SPACE_OPTIONS_STMT = 145, PG_QUERY__NODE__NODE_ALTER_TABLE_MOVE_ALL_STMT = 146, PG_QUERY__NODE__NODE_SEC_LABEL_STMT = 147, PG_QUERY__NODE__NODE_CREATE_FOREIGN_TABLE_STMT = 148, PG_QUERY__NODE__NODE_IMPORT_FOREIGN_SCHEMA_STMT = 149, PG_QUERY__NODE__NODE_CREATE_EXTENSION_STMT = 150, PG_QUERY__NODE__NODE_ALTER_EXTENSION_STMT = 151, PG_QUERY__NODE__NODE_ALTER_EXTENSION_CONTENTS_STMT = 152, PG_QUERY__NODE__NODE_CREATE_EVENT_TRIG_STMT = 153, PG_QUERY__NODE__NODE_ALTER_EVENT_TRIG_STMT = 154, PG_QUERY__NODE__NODE_REFRESH_MAT_VIEW_STMT = 155, PG_QUERY__NODE__NODE_REPLICA_IDENTITY_STMT = 156, PG_QUERY__NODE__NODE_ALTER_SYSTEM_STMT = 157, PG_QUERY__NODE__NODE_CREATE_POLICY_STMT = 158, PG_QUERY__NODE__NODE_ALTER_POLICY_STMT = 159, PG_QUERY__NODE__NODE_CREATE_TRANSFORM_STMT = 160, PG_QUERY__NODE__NODE_CREATE_AM_STMT = 161, PG_QUERY__NODE__NODE_CREATE_PUBLICATION_STMT = 162, PG_QUERY__NODE__NODE_ALTER_PUBLICATION_STMT = 163, PG_QUERY__NODE__NODE_CREATE_SUBSCRIPTION_STMT = 164, PG_QUERY__NODE__NODE_ALTER_SUBSCRIPTION_STMT = 165, PG_QUERY__NODE__NODE_DROP_SUBSCRIPTION_STMT = 166, PG_QUERY__NODE__NODE_CREATE_STATS_STMT = 167, PG_QUERY__NODE__NODE_ALTER_COLLATION_STMT = 168, PG_QUERY__NODE__NODE_CALL_STMT = 169, PG_QUERY__NODE__NODE_ALTER_STATS_STMT = 170, PG_QUERY__NODE__NODE_A_EXPR = 171, PG_QUERY__NODE__NODE_COLUMN_REF = 172, PG_QUERY__NODE__NODE_PARAM_REF = 173, PG_QUERY__NODE__NODE_FUNC_CALL = 174, PG_QUERY__NODE__NODE_A_STAR = 175, PG_QUERY__NODE__NODE_A_INDICES = 176, PG_QUERY__NODE__NODE_A_INDIRECTION = 177, PG_QUERY__NODE__NODE_A_ARRAY_EXPR = 178, PG_QUERY__NODE__NODE_RES_TARGET = 179, PG_QUERY__NODE__NODE_MULTI_ASSIGN_REF = 180, PG_QUERY__NODE__NODE_TYPE_CAST = 181, PG_QUERY__NODE__NODE_COLLATE_CLAUSE = 182, PG_QUERY__NODE__NODE_SORT_BY = 183, PG_QUERY__NODE__NODE_WINDOW_DEF = 184, PG_QUERY__NODE__NODE_RANGE_SUBSELECT = 185, PG_QUERY__NODE__NODE_RANGE_FUNCTION = 186, PG_QUERY__NODE__NODE_RANGE_TABLE_SAMPLE = 187, PG_QUERY__NODE__NODE_RANGE_TABLE_FUNC = 188, PG_QUERY__NODE__NODE_RANGE_TABLE_FUNC_COL = 189, PG_QUERY__NODE__NODE_TYPE_NAME = 190, PG_QUERY__NODE__NODE_COLUMN_DEF = 191, PG_QUERY__NODE__NODE_INDEX_ELEM = 192, PG_QUERY__NODE__NODE_STATS_ELEM = 193, PG_QUERY__NODE__NODE_CONSTRAINT = 194, PG_QUERY__NODE__NODE_DEF_ELEM = 195, PG_QUERY__NODE__NODE_RANGE_TBL_ENTRY = 196, PG_QUERY__NODE__NODE_RANGE_TBL_FUNCTION = 197, PG_QUERY__NODE__NODE_TABLE_SAMPLE_CLAUSE = 198, PG_QUERY__NODE__NODE_WITH_CHECK_OPTION = 199, PG_QUERY__NODE__NODE_SORT_GROUP_CLAUSE = 200, PG_QUERY__NODE__NODE_GROUPING_SET = 201, PG_QUERY__NODE__NODE_WINDOW_CLAUSE = 202, PG_QUERY__NODE__NODE_OBJECT_WITH_ARGS = 203, PG_QUERY__NODE__NODE_ACCESS_PRIV = 204, PG_QUERY__NODE__NODE_CREATE_OP_CLASS_ITEM = 205, PG_QUERY__NODE__NODE_TABLE_LIKE_CLAUSE = 206, PG_QUERY__NODE__NODE_FUNCTION_PARAMETER = 207, PG_QUERY__NODE__NODE_LOCKING_CLAUSE = 208, PG_QUERY__NODE__NODE_ROW_MARK_CLAUSE = 209, PG_QUERY__NODE__NODE_XML_SERIALIZE = 210, PG_QUERY__NODE__NODE_WITH_CLAUSE = 211, PG_QUERY__NODE__NODE_INFER_CLAUSE = 212, PG_QUERY__NODE__NODE_ON_CONFLICT_CLAUSE = 213, PG_QUERY__NODE__NODE_CTESEARCH_CLAUSE = 214, PG_QUERY__NODE__NODE_CTECYCLE_CLAUSE = 215, PG_QUERY__NODE__NODE_COMMON_TABLE_EXPR = 216, PG_QUERY__NODE__NODE_MERGE_WHEN_CLAUSE = 217, PG_QUERY__NODE__NODE_ROLE_SPEC = 218, PG_QUERY__NODE__NODE_TRIGGER_TRANSITION = 219, PG_QUERY__NODE__NODE_PARTITION_ELEM = 220, PG_QUERY__NODE__NODE_PARTITION_SPEC = 221, PG_QUERY__NODE__NODE_PARTITION_BOUND_SPEC = 222, PG_QUERY__NODE__NODE_PARTITION_RANGE_DATUM = 223, PG_QUERY__NODE__NODE_PARTITION_CMD = 224, PG_QUERY__NODE__NODE_VACUUM_RELATION = 225, PG_QUERY__NODE__NODE_PUBLICATION_OBJ_SPEC = 226, PG_QUERY__NODE__NODE_PUBLICATION_TABLE = 227, PG_QUERY__NODE__NODE_INLINE_CODE_BLOCK = 228, PG_QUERY__NODE__NODE_CALL_CONTEXT = 229, PG_QUERY__NODE__NODE_INTEGER = 230, PG_QUERY__NODE__NODE_FLOAT = 231, PG_QUERY__NODE__NODE_BOOLEAN = 232, PG_QUERY__NODE__NODE_STRING = 233, PG_QUERY__NODE__NODE_BIT_STRING = 234, PG_QUERY__NODE__NODE_LIST = 235, PG_QUERY__NODE__NODE_INT_LIST = 236, PG_QUERY__NODE__NODE_OID_LIST = 237, PG_QUERY__NODE__NODE_A_CONST = 238 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__Var *var; PgQuery__Param *param; PgQuery__Aggref *aggref; PgQuery__GroupingFunc *grouping_func; PgQuery__WindowFunc *window_func; PgQuery__SubscriptingRef *subscripting_ref; PgQuery__FuncExpr *func_expr; PgQuery__NamedArgExpr *named_arg_expr; PgQuery__OpExpr *op_expr; PgQuery__DistinctExpr *distinct_expr; PgQuery__NullIfExpr *null_if_expr; PgQuery__ScalarArrayOpExpr *scalar_array_op_expr; PgQuery__BoolExpr *bool_expr; PgQuery__SubLink *sub_link; PgQuery__SubPlan *sub_plan; PgQuery__AlternativeSubPlan *alternative_sub_plan; PgQuery__FieldSelect *field_select; PgQuery__FieldStore *field_store; PgQuery__RelabelType *relabel_type; PgQuery__CoerceViaIO *coerce_via_io; PgQuery__ArrayCoerceExpr *array_coerce_expr; PgQuery__ConvertRowtypeExpr *convert_rowtype_expr; PgQuery__CollateExpr *collate_expr; PgQuery__CaseExpr *case_expr; PgQuery__CaseWhen *case_when; PgQuery__CaseTestExpr *case_test_expr; PgQuery__ArrayExpr *array_expr; PgQuery__RowExpr *row_expr; PgQuery__RowCompareExpr *row_compare_expr; PgQuery__CoalesceExpr *coalesce_expr; PgQuery__MinMaxExpr *min_max_expr; PgQuery__SQLValueFunction *sqlvalue_function; PgQuery__XmlExpr *xml_expr; PgQuery__NullTest *null_test; PgQuery__BooleanTest *boolean_test; PgQuery__CoerceToDomain *coerce_to_domain; PgQuery__CoerceToDomainValue *coerce_to_domain_value; PgQuery__SetToDefault *set_to_default; PgQuery__CurrentOfExpr *current_of_expr; PgQuery__NextValueExpr *next_value_expr; PgQuery__InferenceElem *inference_elem; PgQuery__TargetEntry *target_entry; PgQuery__RangeTblRef *range_tbl_ref; PgQuery__JoinExpr *join_expr; PgQuery__FromExpr *from_expr; PgQuery__OnConflictExpr *on_conflict_expr; PgQuery__IntoClause *into_clause; PgQuery__MergeAction *merge_action; PgQuery__RawStmt *raw_stmt; PgQuery__Query *query; PgQuery__InsertStmt *insert_stmt; PgQuery__DeleteStmt *delete_stmt; PgQuery__UpdateStmt *update_stmt; PgQuery__MergeStmt *merge_stmt; PgQuery__SelectStmt *select_stmt; PgQuery__ReturnStmt *return_stmt; PgQuery__PLAssignStmt *plassign_stmt; PgQuery__AlterTableStmt *alter_table_stmt; PgQuery__AlterTableCmd *alter_table_cmd; PgQuery__AlterDomainStmt *alter_domain_stmt; PgQuery__SetOperationStmt *set_operation_stmt; PgQuery__GrantStmt *grant_stmt; PgQuery__GrantRoleStmt *grant_role_stmt; PgQuery__AlterDefaultPrivilegesStmt *alter_default_privileges_stmt; PgQuery__ClosePortalStmt *close_portal_stmt; PgQuery__ClusterStmt *cluster_stmt; PgQuery__CopyStmt *copy_stmt; PgQuery__CreateStmt *create_stmt; PgQuery__DefineStmt *define_stmt; PgQuery__DropStmt *drop_stmt; PgQuery__TruncateStmt *truncate_stmt; PgQuery__CommentStmt *comment_stmt; PgQuery__FetchStmt *fetch_stmt; PgQuery__IndexStmt *index_stmt; PgQuery__CreateFunctionStmt *create_function_stmt; PgQuery__AlterFunctionStmt *alter_function_stmt; PgQuery__DoStmt *do_stmt; PgQuery__RenameStmt *rename_stmt; PgQuery__RuleStmt *rule_stmt; PgQuery__NotifyStmt *notify_stmt; PgQuery__ListenStmt *listen_stmt; PgQuery__UnlistenStmt *unlisten_stmt; PgQuery__TransactionStmt *transaction_stmt; PgQuery__ViewStmt *view_stmt; PgQuery__LoadStmt *load_stmt; PgQuery__CreateDomainStmt *create_domain_stmt; PgQuery__CreatedbStmt *createdb_stmt; PgQuery__DropdbStmt *dropdb_stmt; PgQuery__VacuumStmt *vacuum_stmt; PgQuery__ExplainStmt *explain_stmt; PgQuery__CreateTableAsStmt *create_table_as_stmt; PgQuery__CreateSeqStmt *create_seq_stmt; PgQuery__AlterSeqStmt *alter_seq_stmt; PgQuery__VariableSetStmt *variable_set_stmt; PgQuery__VariableShowStmt *variable_show_stmt; PgQuery__DiscardStmt *discard_stmt; PgQuery__CreateTrigStmt *create_trig_stmt; PgQuery__CreatePLangStmt *create_plang_stmt; PgQuery__CreateRoleStmt *create_role_stmt; PgQuery__AlterRoleStmt *alter_role_stmt; PgQuery__DropRoleStmt *drop_role_stmt; PgQuery__LockStmt *lock_stmt; PgQuery__ConstraintsSetStmt *constraints_set_stmt; PgQuery__ReindexStmt *reindex_stmt; PgQuery__CheckPointStmt *check_point_stmt; PgQuery__CreateSchemaStmt *create_schema_stmt; PgQuery__AlterDatabaseStmt *alter_database_stmt; PgQuery__AlterDatabaseRefreshCollStmt *alter_database_refresh_coll_stmt; PgQuery__AlterDatabaseSetStmt *alter_database_set_stmt; PgQuery__AlterRoleSetStmt *alter_role_set_stmt; PgQuery__CreateConversionStmt *create_conversion_stmt; PgQuery__CreateCastStmt *create_cast_stmt; PgQuery__CreateOpClassStmt *create_op_class_stmt; PgQuery__CreateOpFamilyStmt *create_op_family_stmt; PgQuery__AlterOpFamilyStmt *alter_op_family_stmt; PgQuery__PrepareStmt *prepare_stmt; PgQuery__ExecuteStmt *execute_stmt; PgQuery__DeallocateStmt *deallocate_stmt; PgQuery__DeclareCursorStmt *declare_cursor_stmt; PgQuery__CreateTableSpaceStmt *create_table_space_stmt; PgQuery__DropTableSpaceStmt *drop_table_space_stmt; PgQuery__AlterObjectDependsStmt *alter_object_depends_stmt; PgQuery__AlterObjectSchemaStmt *alter_object_schema_stmt; PgQuery__AlterOwnerStmt *alter_owner_stmt; PgQuery__AlterOperatorStmt *alter_operator_stmt; PgQuery__AlterTypeStmt *alter_type_stmt; PgQuery__DropOwnedStmt *drop_owned_stmt; PgQuery__ReassignOwnedStmt *reassign_owned_stmt; PgQuery__CompositeTypeStmt *composite_type_stmt; PgQuery__CreateEnumStmt *create_enum_stmt; PgQuery__CreateRangeStmt *create_range_stmt; PgQuery__AlterEnumStmt *alter_enum_stmt; PgQuery__AlterTSDictionaryStmt *alter_tsdictionary_stmt; PgQuery__AlterTSConfigurationStmt *alter_tsconfiguration_stmt; PgQuery__CreateFdwStmt *create_fdw_stmt; PgQuery__AlterFdwStmt *alter_fdw_stmt; PgQuery__CreateForeignServerStmt *create_foreign_server_stmt; PgQuery__AlterForeignServerStmt *alter_foreign_server_stmt; PgQuery__CreateUserMappingStmt *create_user_mapping_stmt; PgQuery__AlterUserMappingStmt *alter_user_mapping_stmt; PgQuery__DropUserMappingStmt *drop_user_mapping_stmt; PgQuery__AlterTableSpaceOptionsStmt *alter_table_space_options_stmt; PgQuery__AlterTableMoveAllStmt *alter_table_move_all_stmt; PgQuery__SecLabelStmt *sec_label_stmt; PgQuery__CreateForeignTableStmt *create_foreign_table_stmt; PgQuery__ImportForeignSchemaStmt *import_foreign_schema_stmt; PgQuery__CreateExtensionStmt *create_extension_stmt; PgQuery__AlterExtensionStmt *alter_extension_stmt; PgQuery__AlterExtensionContentsStmt *alter_extension_contents_stmt; PgQuery__CreateEventTrigStmt *create_event_trig_stmt; PgQuery__AlterEventTrigStmt *alter_event_trig_stmt; PgQuery__RefreshMatViewStmt *refresh_mat_view_stmt; PgQuery__ReplicaIdentityStmt *replica_identity_stmt; PgQuery__AlterSystemStmt *alter_system_stmt; PgQuery__CreatePolicyStmt *create_policy_stmt; PgQuery__AlterPolicyStmt *alter_policy_stmt; PgQuery__CreateTransformStmt *create_transform_stmt; PgQuery__CreateAmStmt *create_am_stmt; PgQuery__CreatePublicationStmt *create_publication_stmt; PgQuery__AlterPublicationStmt *alter_publication_stmt; PgQuery__CreateSubscriptionStmt *create_subscription_stmt; PgQuery__AlterSubscriptionStmt *alter_subscription_stmt; PgQuery__DropSubscriptionStmt *drop_subscription_stmt; PgQuery__CreateStatsStmt *create_stats_stmt; PgQuery__AlterCollationStmt *alter_collation_stmt; PgQuery__CallStmt *call_stmt; PgQuery__AlterStatsStmt *alter_stats_stmt; PgQuery__AExpr *a_expr; PgQuery__ColumnRef *column_ref; PgQuery__ParamRef *param_ref; PgQuery__FuncCall *func_call; PgQuery__AStar *a_star; PgQuery__AIndices *a_indices; PgQuery__AIndirection *a_indirection; PgQuery__AArrayExpr *a_array_expr; PgQuery__ResTarget *res_target; PgQuery__MultiAssignRef *multi_assign_ref; PgQuery__TypeCast *type_cast; PgQuery__CollateClause *collate_clause; PgQuery__SortBy *sort_by; PgQuery__WindowDef *window_def; PgQuery__RangeSubselect *range_subselect; PgQuery__RangeFunction *range_function; PgQuery__RangeTableSample *range_table_sample; PgQuery__RangeTableFunc *range_table_func; PgQuery__RangeTableFuncCol *range_table_func_col; PgQuery__TypeName *type_name; PgQuery__ColumnDef *column_def; PgQuery__IndexElem *index_elem; PgQuery__StatsElem *stats_elem; PgQuery__Constraint *constraint; PgQuery__DefElem *def_elem; PgQuery__RangeTblEntry *range_tbl_entry; PgQuery__RangeTblFunction *range_tbl_function; PgQuery__TableSampleClause *table_sample_clause; PgQuery__WithCheckOption *with_check_option; PgQuery__SortGroupClause *sort_group_clause; PgQuery__GroupingSet *grouping_set; PgQuery__WindowClause *window_clause; PgQuery__ObjectWithArgs *object_with_args; PgQuery__AccessPriv *access_priv; PgQuery__CreateOpClassItem *create_op_class_item; PgQuery__TableLikeClause *table_like_clause; PgQuery__FunctionParameter *function_parameter; PgQuery__LockingClause *locking_clause; PgQuery__RowMarkClause *row_mark_clause; PgQuery__XmlSerialize *xml_serialize; PgQuery__WithClause *with_clause; PgQuery__InferClause *infer_clause; PgQuery__OnConflictClause *on_conflict_clause; PgQuery__CTESearchClause *ctesearch_clause; PgQuery__CTECycleClause *ctecycle_clause; PgQuery__CommonTableExpr *common_table_expr; PgQuery__MergeWhenClause *merge_when_clause; PgQuery__RoleSpec *role_spec; PgQuery__TriggerTransition *trigger_transition; PgQuery__PartitionElem *partition_elem; PgQuery__PartitionSpec *partition_spec; PgQuery__PartitionBoundSpec *partition_bound_spec; PgQuery__PartitionRangeDatum *partition_range_datum; PgQuery__PartitionCmd *partition_cmd; PgQuery__VacuumRelation *vacuum_relation; PgQuery__PublicationObjSpec *publication_obj_spec; PgQuery__PublicationTable *publication_table; PgQuery__InlineCodeBlock *inline_code_block; PgQuery__CallContext *call_context; 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; size_t n_ns_uris; PgQuery__Node **ns_uris; size_t n_ns_names; PgQuery__Node **ns_names; PgQuery__Node *docexpr; PgQuery__Node *rowexpr; size_t n_colnames; PgQuery__Node **colnames; size_t n_coltypes; PgQuery__Node **coltypes; size_t n_coltypmods; PgQuery__Node **coltypmods; size_t n_colcollations; PgQuery__Node **colcollations; size_t n_colexprs; PgQuery__Node **colexprs; size_t n_coldefexprs; PgQuery__Node **coldefexprs; size_t n_notnulls; uint64_t *notnulls; int32_t ordinalitycol; int32_t location; }; #define PG_QUERY__TABLE_FUNC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__table_func__descriptor) \ , 0,NULL, 0,NULL, NULL, NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0, 0 } struct PgQuery__Var { ProtobufCMessage base; PgQuery__Node *xpr; int32_t varno; int32_t varattno; uint32_t vartype; int32_t vartypmod; uint32_t varcollid; uint32_t varlevelsup; uint32_t varnosyn; int32_t varattnosyn; int32_t location; }; #define PG_QUERY__VAR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__var__descriptor) \ , NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0 } struct PgQuery__Param { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__ParamKind paramkind; int32_t paramid; uint32_t paramtype; int32_t paramtypmod; uint32_t paramcollid; int32_t location; }; #define PG_QUERY__PARAM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__param__descriptor) \ , NULL, PG_QUERY__PARAM_KIND__PARAM_KIND_UNDEFINED, 0, 0, 0, 0, 0 } struct PgQuery__Aggref { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t aggfnoid; uint32_t aggtype; uint32_t aggcollid; uint32_t inputcollid; uint32_t aggtranstype; size_t n_aggargtypes; PgQuery__Node **aggargtypes; size_t n_aggdirectargs; PgQuery__Node **aggdirectargs; size_t n_args; PgQuery__Node **args; size_t n_aggorder; PgQuery__Node **aggorder; size_t n_aggdistinct; PgQuery__Node **aggdistinct; PgQuery__Node *aggfilter; protobuf_c_boolean aggstar; protobuf_c_boolean aggvariadic; char *aggkind; uint32_t agglevelsup; PgQuery__AggSplit aggsplit; int32_t 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, 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; size_t n_cols; PgQuery__Node **cols; uint32_t agglevelsup; int32_t location; }; #define PG_QUERY__GROUPING_FUNC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__grouping_func__descriptor) \ , NULL, 0,NULL, 0,NULL, 0,NULL, 0, 0 } struct PgQuery__WindowFunc { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t winfnoid; uint32_t wintype; uint32_t wincollid; uint32_t inputcollid; size_t n_args; PgQuery__Node **args; PgQuery__Node *aggfilter; uint32_t winref; protobuf_c_boolean winstar; protobuf_c_boolean winagg; int32_t location; }; #define PG_QUERY__WINDOW_FUNC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__window_func__descriptor) \ , NULL, 0, 0, 0, 0, 0,NULL, NULL, 0, 0, 0, 0 } struct PgQuery__SubscriptingRef { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t refcontainertype; uint32_t refelemtype; 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 opfuncid; uint32_t opresulttype; protobuf_c_boolean opretset; uint32_t opcollid; uint32_t inputcollid; size_t n_args; PgQuery__Node **args; int32_t location; }; #define PG_QUERY__OP_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__op_expr__descriptor) \ , NULL, 0, 0, 0, 0, 0, 0, 0,NULL, 0 } struct PgQuery__DistinctExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t opno; uint32_t opfuncid; uint32_t opresulttype; protobuf_c_boolean opretset; uint32_t opcollid; uint32_t inputcollid; size_t n_args; PgQuery__Node **args; int32_t location; }; #define PG_QUERY__DISTINCT_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__distinct_expr__descriptor) \ , NULL, 0, 0, 0, 0, 0, 0, 0,NULL, 0 } struct PgQuery__NullIfExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t opno; uint32_t opfuncid; uint32_t opresulttype; protobuf_c_boolean opretset; uint32_t opcollid; uint32_t inputcollid; size_t n_args; PgQuery__Node **args; int32_t location; }; #define PG_QUERY__NULL_IF_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__null_if_expr__descriptor) \ , NULL, 0, 0, 0, 0, 0, 0, 0,NULL, 0 } struct PgQuery__ScalarArrayOpExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t opno; uint32_t opfuncid; uint32_t hashfuncid; uint32_t negfuncid; protobuf_c_boolean use_or; uint32_t inputcollid; size_t n_args; PgQuery__Node **args; int32_t location; }; #define PG_QUERY__SCALAR_ARRAY_OP_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__scalar_array_op_expr__descriptor) \ , NULL, 0, 0, 0, 0, 0, 0, 0,NULL, 0 } struct PgQuery__BoolExpr { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__BoolExprType boolop; size_t n_args; PgQuery__Node **args; int32_t location; }; #define PG_QUERY__BOOL_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__bool_expr__descriptor) \ , NULL, PG_QUERY__BOOL_EXPR_TYPE__BOOL_EXPR_TYPE_UNDEFINED, 0,NULL, 0 } struct PgQuery__SubLink { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__SubLinkType sub_link_type; int32_t sub_link_id; PgQuery__Node *testexpr; size_t n_oper_name; PgQuery__Node **oper_name; PgQuery__Node *subselect; int32_t location; }; #define PG_QUERY__SUB_LINK__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__sub_link__descriptor) \ , NULL, PG_QUERY__SUB_LINK_TYPE__SUB_LINK_TYPE_UNDEFINED, 0, NULL, 0,NULL, NULL, 0 } struct PgQuery__SubPlan { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__SubLinkType sub_link_type; PgQuery__Node *testexpr; size_t n_param_ids; PgQuery__Node **param_ids; int32_t plan_id; char *plan_name; uint32_t first_col_type; int32_t first_col_typmod; uint32_t first_col_collation; protobuf_c_boolean use_hash_table; protobuf_c_boolean unknown_eq_false; protobuf_c_boolean parallel_safe; size_t n_set_param; PgQuery__Node **set_param; size_t n_par_param; PgQuery__Node **par_param; size_t n_args; PgQuery__Node **args; double startup_cost; double per_call_cost; }; #define PG_QUERY__SUB_PLAN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__sub_plan__descriptor) \ , NULL, PG_QUERY__SUB_LINK_TYPE__SUB_LINK_TYPE_UNDEFINED, NULL, 0,NULL, 0, (char *)protobuf_c_empty_string, 0, 0, 0, 0, 0, 0, 0,NULL, 0,NULL, 0,NULL, 0, 0 } struct PgQuery__AlternativeSubPlan { ProtobufCMessage base; PgQuery__Node *xpr; size_t n_subplans; PgQuery__Node **subplans; }; #define PG_QUERY__ALTERNATIVE_SUB_PLAN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alternative_sub_plan__descriptor) \ , NULL, 0,NULL } struct PgQuery__FieldSelect { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; int32_t fieldnum; uint32_t resulttype; int32_t resulttypmod; uint32_t resultcollid; }; #define PG_QUERY__FIELD_SELECT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__field_select__descriptor) \ , NULL, NULL, 0, 0, 0, 0 } struct PgQuery__FieldStore { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; size_t n_newvals; PgQuery__Node **newvals; size_t n_fieldnums; PgQuery__Node **fieldnums; uint32_t resulttype; }; #define PG_QUERY__FIELD_STORE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__field_store__descriptor) \ , NULL, NULL, 0,NULL, 0,NULL, 0 } struct PgQuery__RelabelType { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; uint32_t resulttype; int32_t resulttypmod; uint32_t resultcollid; PgQuery__CoercionForm relabelformat; int32_t location; }; #define PG_QUERY__RELABEL_TYPE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__relabel_type__descriptor) \ , NULL, NULL, 0, 0, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0 } struct PgQuery__CoerceViaIO { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; uint32_t resulttype; uint32_t resultcollid; PgQuery__CoercionForm coerceformat; int32_t location; }; #define PG_QUERY__COERCE_VIA_IO__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__coerce_via_io__descriptor) \ , NULL, NULL, 0, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0 } struct PgQuery__ArrayCoerceExpr { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; PgQuery__Node *elemexpr; uint32_t resulttype; int32_t resulttypmod; uint32_t resultcollid; PgQuery__CoercionForm coerceformat; int32_t location; }; #define PG_QUERY__ARRAY_COERCE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__array_coerce_expr__descriptor) \ , NULL, NULL, NULL, 0, 0, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0 } struct PgQuery__ConvertRowtypeExpr { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; uint32_t resulttype; PgQuery__CoercionForm convertformat; int32_t location; }; #define PG_QUERY__CONVERT_ROWTYPE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__convert_rowtype_expr__descriptor) \ , NULL, NULL, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0 } struct PgQuery__CollateExpr { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; uint32_t coll_oid; int32_t location; }; #define PG_QUERY__COLLATE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__collate_expr__descriptor) \ , NULL, NULL, 0, 0 } struct PgQuery__CaseExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t casetype; uint32_t casecollid; PgQuery__Node *arg; size_t n_args; PgQuery__Node **args; PgQuery__Node *defresult; int32_t location; }; #define PG_QUERY__CASE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__case_expr__descriptor) \ , NULL, 0, 0, NULL, 0,NULL, NULL, 0 } struct PgQuery__CaseWhen { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *expr; PgQuery__Node *result; int32_t location; }; #define PG_QUERY__CASE_WHEN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__case_when__descriptor) \ , NULL, NULL, NULL, 0 } struct PgQuery__CaseTestExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t type_id; int32_t type_mod; uint32_t collation; }; #define PG_QUERY__CASE_TEST_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__case_test_expr__descriptor) \ , NULL, 0, 0, 0 } struct PgQuery__ArrayExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t array_typeid; uint32_t array_collid; uint32_t element_typeid; size_t n_elements; PgQuery__Node **elements; protobuf_c_boolean multidims; int32_t location; }; #define PG_QUERY__ARRAY_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__array_expr__descriptor) \ , NULL, 0, 0, 0, 0,NULL, 0, 0 } struct PgQuery__RowExpr { ProtobufCMessage base; PgQuery__Node *xpr; size_t n_args; PgQuery__Node **args; uint32_t row_typeid; PgQuery__CoercionForm row_format; size_t n_colnames; PgQuery__Node **colnames; int32_t location; }; #define PG_QUERY__ROW_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__row_expr__descriptor) \ , NULL, 0,NULL, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0,NULL, 0 } struct PgQuery__RowCompareExpr { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__RowCompareType rctype; size_t n_opnos; PgQuery__Node **opnos; size_t n_opfamilies; PgQuery__Node **opfamilies; size_t n_inputcollids; PgQuery__Node **inputcollids; size_t n_largs; PgQuery__Node **largs; size_t n_rargs; PgQuery__Node **rargs; }; #define PG_QUERY__ROW_COMPARE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__row_compare_expr__descriptor) \ , NULL, PG_QUERY__ROW_COMPARE_TYPE__ROW_COMPARE_TYPE_UNDEFINED, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL } struct PgQuery__CoalesceExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t coalescetype; uint32_t coalescecollid; size_t n_args; PgQuery__Node **args; int32_t location; }; #define PG_QUERY__COALESCE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__coalesce_expr__descriptor) \ , NULL, 0, 0, 0,NULL, 0 } struct PgQuery__MinMaxExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t minmaxtype; uint32_t minmaxcollid; uint32_t inputcollid; PgQuery__MinMaxOp op; size_t n_args; PgQuery__Node **args; int32_t location; }; #define PG_QUERY__MIN_MAX_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__min_max_expr__descriptor) \ , NULL, 0, 0, 0, PG_QUERY__MIN_MAX_OP__MIN_MAX_OP_UNDEFINED, 0,NULL, 0 } struct PgQuery__SQLValueFunction { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__SQLValueFunctionOp op; uint32_t type; int32_t typmod; int32_t location; }; #define PG_QUERY__SQLVALUE_FUNCTION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__sqlvalue_function__descriptor) \ , NULL, PG_QUERY__SQLVALUE_FUNCTION_OP__SQLVALUE_FUNCTION_OP_UNDEFINED, 0, 0, 0 } struct PgQuery__XmlExpr { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__XmlExprOp op; char *name; size_t n_named_args; PgQuery__Node **named_args; size_t n_arg_names; PgQuery__Node **arg_names; size_t n_args; PgQuery__Node **args; PgQuery__XmlOptionType xmloption; uint32_t type; int32_t typmod; int32_t location; }; #define PG_QUERY__XML_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__xml_expr__descriptor) \ , NULL, PG_QUERY__XML_EXPR_OP__XML_EXPR_OP_UNDEFINED, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0,NULL, PG_QUERY__XML_OPTION_TYPE__XML_OPTION_TYPE_UNDEFINED, 0, 0, 0 } struct PgQuery__NullTest { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; PgQuery__NullTestType nulltesttype; protobuf_c_boolean argisrow; int32_t location; }; #define PG_QUERY__NULL_TEST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__null_test__descriptor) \ , NULL, NULL, PG_QUERY__NULL_TEST_TYPE__NULL_TEST_TYPE_UNDEFINED, 0, 0 } struct PgQuery__BooleanTest { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; PgQuery__BoolTestType booltesttype; int32_t location; }; #define PG_QUERY__BOOLEAN_TEST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__boolean_test__descriptor) \ , NULL, NULL, PG_QUERY__BOOL_TEST_TYPE__BOOL_TEST_TYPE_UNDEFINED, 0 } struct PgQuery__CoerceToDomain { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; uint32_t resulttype; int32_t resulttypmod; uint32_t resultcollid; PgQuery__CoercionForm coercionformat; int32_t location; }; #define PG_QUERY__COERCE_TO_DOMAIN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__coerce_to_domain__descriptor) \ , NULL, NULL, 0, 0, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0 } struct PgQuery__CoerceToDomainValue { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t type_id; int32_t type_mod; uint32_t collation; int32_t location; }; #define PG_QUERY__COERCE_TO_DOMAIN_VALUE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__coerce_to_domain_value__descriptor) \ , NULL, 0, 0, 0, 0 } struct PgQuery__SetToDefault { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t type_id; int32_t type_mod; uint32_t collation; int32_t location; }; #define PG_QUERY__SET_TO_DEFAULT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__set_to_default__descriptor) \ , NULL, 0, 0, 0, 0 } struct PgQuery__CurrentOfExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t cvarno; char *cursor_name; int32_t cursor_param; }; #define PG_QUERY__CURRENT_OF_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__current_of_expr__descriptor) \ , NULL, 0, (char *)protobuf_c_empty_string, 0 } struct PgQuery__NextValueExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t seqid; uint32_t type_id; }; #define PG_QUERY__NEXT_VALUE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__next_value_expr__descriptor) \ , NULL, 0, 0 } struct PgQuery__InferenceElem { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *expr; uint32_t infercollid; uint32_t inferopclass; }; #define PG_QUERY__INFERENCE_ELEM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__inference_elem__descriptor) \ , NULL, NULL, 0, 0 } struct PgQuery__TargetEntry { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *expr; int32_t resno; char *resname; uint32_t ressortgroupref; uint32_t resorigtbl; int32_t resorigcol; protobuf_c_boolean resjunk; }; #define PG_QUERY__TARGET_ENTRY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__target_entry__descriptor) \ , NULL, NULL, 0, (char *)protobuf_c_empty_string, 0, 0, 0, 0 } struct PgQuery__RangeTblRef { ProtobufCMessage base; int32_t rtindex; }; #define PG_QUERY__RANGE_TBL_REF__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_tbl_ref__descriptor) \ , 0 } struct PgQuery__JoinExpr { ProtobufCMessage base; PgQuery__JoinType jointype; protobuf_c_boolean is_natural; PgQuery__Node *larg; PgQuery__Node *rarg; size_t n_using_clause; PgQuery__Node **using_clause; PgQuery__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__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__MergeAction { ProtobufCMessage base; protobuf_c_boolean matched; 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) \ , 0, PG_QUERY__CMD_TYPE__CMD_TYPE_UNDEFINED, PG_QUERY__OVERRIDING_KIND__OVERRIDING_KIND_UNDEFINED, NULL, 0,NULL, 0,NULL } struct PgQuery__RawStmt { ProtobufCMessage base; PgQuery__Node *stmt; int32_t stmt_location; int32_t stmt_len; }; #define PG_QUERY__RAW_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__raw_stmt__descriptor) \ , NULL, 0, 0 } struct PgQuery__Query { ProtobufCMessage base; PgQuery__CmdType command_type; PgQuery__QuerySource query_source; protobuf_c_boolean can_set_tag; PgQuery__Node *utility_stmt; int32_t result_relation; protobuf_c_boolean has_aggs; protobuf_c_boolean has_window_funcs; protobuf_c_boolean has_target_srfs; protobuf_c_boolean has_sub_links; protobuf_c_boolean has_distinct_on; protobuf_c_boolean has_recursive; protobuf_c_boolean has_modifying_cte; protobuf_c_boolean has_for_update; protobuf_c_boolean has_row_security; protobuf_c_boolean is_return; size_t n_cte_list; PgQuery__Node **cte_list; size_t n_rtable; PgQuery__Node **rtable; PgQuery__FromExpr *jointree; size_t n_merge_action_list; PgQuery__Node **merge_action_list; protobuf_c_boolean merge_use_outer_join; 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, NULL, 0,NULL, 0, 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__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; PgQuery__WithClause *with_clause; }; #define PG_QUERY__MERGE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__merge_stmt__descriptor) \ , NULL, NULL, 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__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__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__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__AlterDomainStmt { ProtobufCMessage base; char *subtype; size_t n_type_name; PgQuery__Node **type_name; char *name; PgQuery__Node *def; PgQuery__DropBehavior behavior; protobuf_c_boolean missing_ok; }; #define PG_QUERY__ALTER_DOMAIN_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_domain_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, (char *)protobuf_c_empty_string, NULL, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED, 0 } struct PgQuery__SetOperationStmt { ProtobufCMessage base; PgQuery__SetOperation op; protobuf_c_boolean all; PgQuery__Node *larg; PgQuery__Node *rarg; size_t n_col_types; PgQuery__Node **col_types; size_t n_col_typmods; PgQuery__Node **col_typmods; size_t n_col_collations; PgQuery__Node **col_collations; size_t n_group_clauses; PgQuery__Node **group_clauses; }; #define PG_QUERY__SET_OPERATION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__set_operation_stmt__descriptor) \ , PG_QUERY__SET_OPERATION__SET_OPERATION_UNDEFINED, 0, NULL, NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL } struct PgQuery__GrantStmt { ProtobufCMessage base; protobuf_c_boolean is_grant; PgQuery__GrantTargetType targtype; PgQuery__ObjectType objtype; size_t n_objects; PgQuery__Node **objects; size_t n_privileges; PgQuery__Node **privileges; size_t n_grantees; PgQuery__Node **grantees; protobuf_c_boolean grant_option; PgQuery__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__GrantRoleStmt { ProtobufCMessage base; size_t n_granted_roles; PgQuery__Node **granted_roles; size_t n_grantee_roles; PgQuery__Node **grantee_roles; protobuf_c_boolean is_grant; protobuf_c_boolean admin_opt; PgQuery__RoleSpec *grantor; PgQuery__DropBehavior behavior; }; #define PG_QUERY__GRANT_ROLE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__grant_role_stmt__descriptor) \ , 0,NULL, 0,NULL, 0, 0, NULL, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED } struct PgQuery__AlterDefaultPrivilegesStmt { ProtobufCMessage base; size_t n_options; PgQuery__Node **options; PgQuery__GrantStmt *action; }; #define PG_QUERY__ALTER_DEFAULT_PRIVILEGES_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_default_privileges_stmt__descriptor) \ , 0,NULL, NULL } struct PgQuery__ClosePortalStmt { ProtobufCMessage base; char *portalname; }; #define PG_QUERY__CLOSE_PORTAL_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__close_portal_stmt__descriptor) \ , (char *)protobuf_c_empty_string } struct PgQuery__ClusterStmt { ProtobufCMessage base; PgQuery__RangeVar *relation; char *indexname; 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__CopyStmt { ProtobufCMessage base; PgQuery__RangeVar *relation; PgQuery__Node *query; size_t n_attlist; PgQuery__Node **attlist; protobuf_c_boolean is_from; protobuf_c_boolean is_program; char *filename; size_t n_options; PgQuery__Node **options; PgQuery__Node *where_clause; }; #define PG_QUERY__COPY_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__copy_stmt__descriptor) \ , NULL, NULL, 0,NULL, 0, 0, (char *)protobuf_c_empty_string, 0,NULL, NULL } struct PgQuery__CreateStmt { ProtobufCMessage base; PgQuery__RangeVar *relation; size_t n_table_elts; PgQuery__Node **table_elts; size_t n_inh_relations; PgQuery__Node **inh_relations; PgQuery__PartitionBoundSpec *partbound; PgQuery__PartitionSpec *partspec; PgQuery__TypeName *of_typename; size_t n_constraints; PgQuery__Node **constraints; size_t n_options; PgQuery__Node **options; PgQuery__OnCommitAction oncommit; char *tablespacename; char *access_method; protobuf_c_boolean if_not_exists; }; #define PG_QUERY__CREATE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_stmt__descriptor) \ , NULL, 0,NULL, 0,NULL, NULL, NULL, NULL, 0,NULL, 0,NULL, PG_QUERY__ON_COMMIT_ACTION__ON_COMMIT_ACTION_UNDEFINED, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0 } struct PgQuery__DefineStmt { ProtobufCMessage base; PgQuery__ObjectType kind; protobuf_c_boolean oldstyle; size_t n_defnames; PgQuery__Node **defnames; size_t n_args; PgQuery__Node **args; size_t n_definition; PgQuery__Node **definition; protobuf_c_boolean if_not_exists; protobuf_c_boolean replace; }; #define PG_QUERY__DEFINE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__define_stmt__descriptor) \ , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, 0, 0,NULL, 0,NULL, 0,NULL, 0, 0 } struct PgQuery__DropStmt { ProtobufCMessage base; size_t n_objects; PgQuery__Node **objects; PgQuery__ObjectType remove_type; PgQuery__DropBehavior behavior; protobuf_c_boolean missing_ok; protobuf_c_boolean concurrent; }; #define PG_QUERY__DROP_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__drop_stmt__descriptor) \ , 0,NULL, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED, 0, 0 } struct PgQuery__TruncateStmt { ProtobufCMessage base; size_t n_relations; PgQuery__Node **relations; protobuf_c_boolean restart_seqs; PgQuery__DropBehavior behavior; }; #define PG_QUERY__TRUNCATE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__truncate_stmt__descriptor) \ , 0,NULL, 0, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED } struct PgQuery__CommentStmt { ProtobufCMessage base; PgQuery__ObjectType objtype; PgQuery__Node *object; char *comment; }; #define PG_QUERY__COMMENT_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__comment_stmt__descriptor) \ , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, (char *)protobuf_c_empty_string } struct PgQuery__FetchStmt { ProtobufCMessage base; PgQuery__FetchDirection direction; int64_t how_many; char *portalname; protobuf_c_boolean ismove; }; #define PG_QUERY__FETCH_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__fetch_stmt__descriptor) \ , PG_QUERY__FETCH_DIRECTION__FETCH_DIRECTION_UNDEFINED, 0, (char *)protobuf_c_empty_string, 0 } struct PgQuery__IndexStmt { ProtobufCMessage base; char *idxname; PgQuery__RangeVar *relation; char *access_method; char *table_space; size_t n_index_params; PgQuery__Node **index_params; size_t n_index_including_params; PgQuery__Node **index_including_params; size_t n_options; PgQuery__Node **options; PgQuery__Node *where_clause; size_t n_exclude_op_names; PgQuery__Node **exclude_op_names; char *idxcomment; uint32_t index_oid; uint32_t old_node; uint32_t old_create_subid; uint32_t old_first_relfilenode_subid; protobuf_c_boolean unique; protobuf_c_boolean 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__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__AlterFunctionStmt { ProtobufCMessage base; PgQuery__ObjectType objtype; PgQuery__ObjectWithArgs *func; size_t n_actions; PgQuery__Node **actions; }; #define PG_QUERY__ALTER_FUNCTION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_function_stmt__descriptor) \ , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, 0,NULL } struct PgQuery__DoStmt { ProtobufCMessage base; size_t n_args; PgQuery__Node **args; }; #define PG_QUERY__DO_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__do_stmt__descriptor) \ , 0,NULL } struct PgQuery__RenameStmt { ProtobufCMessage base; PgQuery__ObjectType rename_type; PgQuery__ObjectType relation_type; PgQuery__RangeVar *relation; PgQuery__Node *object; char *subname; char *newname; PgQuery__DropBehavior behavior; protobuf_c_boolean missing_ok; }; #define PG_QUERY__RENAME_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__rename_stmt__descriptor) \ , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED, 0 } struct PgQuery__RuleStmt { ProtobufCMessage base; PgQuery__RangeVar *relation; char *rulename; PgQuery__Node *where_clause; PgQuery__CmdType event; protobuf_c_boolean instead; size_t n_actions; PgQuery__Node **actions; protobuf_c_boolean replace; }; #define PG_QUERY__RULE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__rule_stmt__descriptor) \ , NULL, (char *)protobuf_c_empty_string, NULL, PG_QUERY__CMD_TYPE__CMD_TYPE_UNDEFINED, 0, 0,NULL, 0 } struct PgQuery__NotifyStmt { ProtobufCMessage base; char *conditionname; char *payload; }; #define PG_QUERY__NOTIFY_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__notify_stmt__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string } struct PgQuery__ListenStmt { ProtobufCMessage base; char *conditionname; }; #define PG_QUERY__LISTEN_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__listen_stmt__descriptor) \ , (char *)protobuf_c_empty_string } struct PgQuery__UnlistenStmt { ProtobufCMessage base; char *conditionname; }; #define PG_QUERY__UNLISTEN_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__unlisten_stmt__descriptor) \ , (char *)protobuf_c_empty_string } struct PgQuery__TransactionStmt { ProtobufCMessage base; PgQuery__TransactionStmtKind kind; size_t n_options; PgQuery__Node **options; char *savepoint_name; char *gid; protobuf_c_boolean chain; }; #define PG_QUERY__TRANSACTION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__transaction_stmt__descriptor) \ , PG_QUERY__TRANSACTION_STMT_KIND__TRANSACTION_STMT_KIND_UNDEFINED, 0,NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0 } struct PgQuery__ViewStmt { ProtobufCMessage base; PgQuery__RangeVar *view; size_t n_aliases; PgQuery__Node **aliases; PgQuery__Node *query; protobuf_c_boolean replace; size_t n_options; PgQuery__Node **options; PgQuery__ViewCheckOption with_check_option; }; #define PG_QUERY__VIEW_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__view_stmt__descriptor) \ , NULL, 0,NULL, NULL, 0, 0,NULL, PG_QUERY__VIEW_CHECK_OPTION__VIEW_CHECK_OPTION_UNDEFINED } struct PgQuery__LoadStmt { ProtobufCMessage base; char *filename; }; #define PG_QUERY__LOAD_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__load_stmt__descriptor) \ , (char *)protobuf_c_empty_string } struct PgQuery__CreateDomainStmt { ProtobufCMessage base; size_t n_domainname; PgQuery__Node **domainname; PgQuery__TypeName *type_name; PgQuery__CollateClause *coll_clause; size_t n_constraints; PgQuery__Node **constraints; }; #define PG_QUERY__CREATE_DOMAIN_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_domain_stmt__descriptor) \ , 0,NULL, NULL, NULL, 0,NULL } struct PgQuery__CreatedbStmt { ProtobufCMessage base; char *dbname; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATEDB_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__createdb_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__DropdbStmt { ProtobufCMessage base; char *dbname; protobuf_c_boolean missing_ok; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__DROPDB_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__dropdb_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0, 0,NULL } struct PgQuery__VacuumStmt { ProtobufCMessage base; size_t n_options; PgQuery__Node **options; size_t n_rels; PgQuery__Node **rels; protobuf_c_boolean is_vacuumcmd; }; #define PG_QUERY__VACUUM_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__vacuum_stmt__descriptor) \ , 0,NULL, 0,NULL, 0 } struct PgQuery__ExplainStmt { ProtobufCMessage base; PgQuery__Node *query; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__EXPLAIN_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__explain_stmt__descriptor) \ , NULL, 0,NULL } struct PgQuery__CreateTableAsStmt { ProtobufCMessage base; PgQuery__Node *query; PgQuery__IntoClause *into; PgQuery__ObjectType 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__CreateSeqStmt { ProtobufCMessage base; PgQuery__RangeVar *sequence; size_t n_options; PgQuery__Node **options; uint32_t owner_id; protobuf_c_boolean for_identity; protobuf_c_boolean if_not_exists; }; #define PG_QUERY__CREATE_SEQ_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_seq_stmt__descriptor) \ , NULL, 0,NULL, 0, 0, 0 } struct PgQuery__AlterSeqStmt { ProtobufCMessage base; PgQuery__RangeVar *sequence; size_t n_options; PgQuery__Node **options; protobuf_c_boolean for_identity; protobuf_c_boolean missing_ok; }; #define PG_QUERY__ALTER_SEQ_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_seq_stmt__descriptor) \ , NULL, 0,NULL, 0, 0 } struct PgQuery__VariableSetStmt { ProtobufCMessage base; PgQuery__VariableSetKind kind; char *name; size_t n_args; PgQuery__Node **args; protobuf_c_boolean is_local; }; #define PG_QUERY__VARIABLE_SET_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__variable_set_stmt__descriptor) \ , PG_QUERY__VARIABLE_SET_KIND__VARIABLE_SET_KIND_UNDEFINED, (char *)protobuf_c_empty_string, 0,NULL, 0 } struct PgQuery__VariableShowStmt { ProtobufCMessage base; char *name; }; #define PG_QUERY__VARIABLE_SHOW_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__variable_show_stmt__descriptor) \ , (char *)protobuf_c_empty_string } struct PgQuery__DiscardStmt { ProtobufCMessage base; PgQuery__DiscardMode target; }; #define PG_QUERY__DISCARD_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__discard_stmt__descriptor) \ , PG_QUERY__DISCARD_MODE__DISCARD_MODE_UNDEFINED } struct PgQuery__CreateTrigStmt { ProtobufCMessage base; 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__CreatePLangStmt { ProtobufCMessage base; protobuf_c_boolean replace; char *plname; size_t n_plhandler; PgQuery__Node **plhandler; size_t n_plinline; PgQuery__Node **plinline; size_t n_plvalidator; PgQuery__Node **plvalidator; protobuf_c_boolean pltrusted; }; #define PG_QUERY__CREATE_PLANG_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_plang_stmt__descriptor) \ , 0, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0,NULL, 0 } struct PgQuery__CreateRoleStmt { ProtobufCMessage base; PgQuery__RoleStmtType stmt_type; char *role; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATE_ROLE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_role_stmt__descriptor) \ , PG_QUERY__ROLE_STMT_TYPE__ROLE_STMT_TYPE_UNDEFINED, (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__AlterRoleStmt { ProtobufCMessage base; PgQuery__RoleSpec *role; size_t n_options; PgQuery__Node **options; int32_t action; }; #define PG_QUERY__ALTER_ROLE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_role_stmt__descriptor) \ , NULL, 0,NULL, 0 } struct PgQuery__DropRoleStmt { ProtobufCMessage base; size_t n_roles; PgQuery__Node **roles; protobuf_c_boolean missing_ok; }; #define PG_QUERY__DROP_ROLE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__drop_role_stmt__descriptor) \ , 0,NULL, 0 } struct PgQuery__LockStmt { ProtobufCMessage base; size_t n_relations; PgQuery__Node **relations; int32_t mode; protobuf_c_boolean nowait; }; #define PG_QUERY__LOCK_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__lock_stmt__descriptor) \ , 0,NULL, 0, 0 } struct PgQuery__ConstraintsSetStmt { ProtobufCMessage base; size_t n_constraints; PgQuery__Node **constraints; protobuf_c_boolean deferred; }; #define PG_QUERY__CONSTRAINTS_SET_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__constraints_set_stmt__descriptor) \ , 0,NULL, 0 } struct PgQuery__ReindexStmt { ProtobufCMessage base; PgQuery__ReindexObjectType kind; PgQuery__RangeVar *relation; char *name; 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__CheckPointStmt { ProtobufCMessage base; }; #define PG_QUERY__CHECK_POINT_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__check_point_stmt__descriptor) \ } struct PgQuery__CreateSchemaStmt { ProtobufCMessage base; char *schemaname; PgQuery__RoleSpec *authrole; size_t n_schema_elts; PgQuery__Node **schema_elts; protobuf_c_boolean if_not_exists; }; #define PG_QUERY__CREATE_SCHEMA_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_schema_stmt__descriptor) \ , (char *)protobuf_c_empty_string, NULL, 0,NULL, 0 } struct PgQuery__AlterDatabaseStmt { ProtobufCMessage base; char *dbname; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__ALTER_DATABASE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_database_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__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__AlterRoleSetStmt { ProtobufCMessage base; PgQuery__RoleSpec *role; char *database; PgQuery__VariableSetStmt *setstmt; }; #define PG_QUERY__ALTER_ROLE_SET_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_role_set_stmt__descriptor) \ , NULL, (char *)protobuf_c_empty_string, NULL } struct PgQuery__CreateConversionStmt { ProtobufCMessage base; size_t n_conversion_name; PgQuery__Node **conversion_name; char *for_encoding_name; char *to_encoding_name; size_t n_func_name; PgQuery__Node **func_name; protobuf_c_boolean def; }; #define PG_QUERY__CREATE_CONVERSION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_conversion_stmt__descriptor) \ , 0,NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0 } struct PgQuery__CreateCastStmt { ProtobufCMessage base; PgQuery__TypeName *sourcetype; PgQuery__TypeName *targettype; PgQuery__ObjectWithArgs *func; PgQuery__CoercionContext context; protobuf_c_boolean inout; }; #define PG_QUERY__CREATE_CAST_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_cast_stmt__descriptor) \ , NULL, NULL, NULL, PG_QUERY__COERCION_CONTEXT__COERCION_CONTEXT_UNDEFINED, 0 } struct PgQuery__CreateOpClassStmt { ProtobufCMessage base; size_t n_opclassname; PgQuery__Node **opclassname; size_t n_opfamilyname; PgQuery__Node **opfamilyname; char *amname; PgQuery__TypeName *datatype; size_t n_items; PgQuery__Node **items; protobuf_c_boolean is_default; }; #define PG_QUERY__CREATE_OP_CLASS_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_op_class_stmt__descriptor) \ , 0,NULL, 0,NULL, (char *)protobuf_c_empty_string, NULL, 0,NULL, 0 } struct PgQuery__CreateOpFamilyStmt { ProtobufCMessage base; size_t n_opfamilyname; PgQuery__Node **opfamilyname; char *amname; }; #define PG_QUERY__CREATE_OP_FAMILY_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_op_family_stmt__descriptor) \ , 0,NULL, (char *)protobuf_c_empty_string } struct PgQuery__AlterOpFamilyStmt { ProtobufCMessage base; size_t n_opfamilyname; PgQuery__Node **opfamilyname; char *amname; protobuf_c_boolean is_drop; size_t n_items; PgQuery__Node **items; }; #define PG_QUERY__ALTER_OP_FAMILY_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_op_family_stmt__descriptor) \ , 0,NULL, (char *)protobuf_c_empty_string, 0, 0,NULL } struct PgQuery__PrepareStmt { ProtobufCMessage base; char *name; size_t n_argtypes; PgQuery__Node **argtypes; PgQuery__Node *query; }; #define PG_QUERY__PREPARE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__prepare_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, NULL } struct PgQuery__ExecuteStmt { ProtobufCMessage base; char *name; size_t n_params; PgQuery__Node **params; }; #define PG_QUERY__EXECUTE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__execute_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__DeallocateStmt { ProtobufCMessage base; char *name; }; #define PG_QUERY__DEALLOCATE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__deallocate_stmt__descriptor) \ , (char *)protobuf_c_empty_string } struct PgQuery__DeclareCursorStmt { ProtobufCMessage base; char *portalname; int32_t options; PgQuery__Node *query; }; #define PG_QUERY__DECLARE_CURSOR_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__declare_cursor_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0, NULL } struct PgQuery__CreateTableSpaceStmt { ProtobufCMessage base; char *tablespacename; PgQuery__RoleSpec *owner; char *location; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATE_TABLE_SPACE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_table_space_stmt__descriptor) \ , (char *)protobuf_c_empty_string, NULL, (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__DropTableSpaceStmt { ProtobufCMessage base; char *tablespacename; protobuf_c_boolean missing_ok; }; #define PG_QUERY__DROP_TABLE_SPACE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__drop_table_space_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0 } struct PgQuery__AlterObjectDependsStmt { ProtobufCMessage base; PgQuery__ObjectType object_type; PgQuery__RangeVar *relation; PgQuery__Node *object; PgQuery__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__DropOwnedStmt { ProtobufCMessage base; size_t n_roles; PgQuery__Node **roles; PgQuery__DropBehavior behavior; }; #define PG_QUERY__DROP_OWNED_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__drop_owned_stmt__descriptor) \ , 0,NULL, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED } struct PgQuery__ReassignOwnedStmt { ProtobufCMessage base; size_t n_roles; PgQuery__Node **roles; PgQuery__RoleSpec *newrole; }; #define PG_QUERY__REASSIGN_OWNED_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__reassign_owned_stmt__descriptor) \ , 0,NULL, NULL } struct PgQuery__CompositeTypeStmt { ProtobufCMessage base; PgQuery__RangeVar *typevar; size_t n_coldeflist; PgQuery__Node **coldeflist; }; #define PG_QUERY__COMPOSITE_TYPE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__composite_type_stmt__descriptor) \ , NULL, 0,NULL } struct PgQuery__CreateEnumStmt { ProtobufCMessage base; size_t n_type_name; PgQuery__Node **type_name; size_t n_vals; PgQuery__Node **vals; }; #define PG_QUERY__CREATE_ENUM_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_enum_stmt__descriptor) \ , 0,NULL, 0,NULL } struct PgQuery__CreateRangeStmt { ProtobufCMessage base; size_t n_type_name; PgQuery__Node **type_name; size_t n_params; PgQuery__Node **params; }; #define PG_QUERY__CREATE_RANGE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_range_stmt__descriptor) \ , 0,NULL, 0,NULL } struct PgQuery__AlterEnumStmt { ProtobufCMessage base; size_t n_type_name; PgQuery__Node **type_name; char *old_val; char *new_val; char *new_val_neighbor; protobuf_c_boolean new_val_is_after; protobuf_c_boolean skip_if_new_val_exists; }; #define PG_QUERY__ALTER_ENUM_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_enum_stmt__descriptor) \ , 0,NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0, 0 } struct PgQuery__AlterTSDictionaryStmt { ProtobufCMessage base; size_t n_dictname; PgQuery__Node **dictname; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__ALTER_TSDICTIONARY_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_tsdictionary_stmt__descriptor) \ , 0,NULL, 0,NULL } struct PgQuery__AlterTSConfigurationStmt { ProtobufCMessage base; PgQuery__AlterTSConfigType kind; size_t n_cfgname; PgQuery__Node **cfgname; size_t n_tokentype; PgQuery__Node **tokentype; size_t n_dicts; PgQuery__Node **dicts; protobuf_c_boolean override; protobuf_c_boolean replace; protobuf_c_boolean missing_ok; }; #define PG_QUERY__ALTER_TSCONFIGURATION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_tsconfiguration_stmt__descriptor) \ , PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_TYPE_UNDEFINED, 0,NULL, 0,NULL, 0,NULL, 0, 0, 0 } struct PgQuery__CreateFdwStmt { ProtobufCMessage base; char *fdwname; size_t n_func_options; PgQuery__Node **func_options; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATE_FDW_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_fdw_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, 0,NULL } struct PgQuery__AlterFdwStmt { ProtobufCMessage base; char *fdwname; size_t n_func_options; PgQuery__Node **func_options; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__ALTER_FDW_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_fdw_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, 0,NULL } struct PgQuery__CreateForeignServerStmt { ProtobufCMessage base; char *servername; char *servertype; char *version; char *fdwname; protobuf_c_boolean if_not_exists; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATE_FOREIGN_SERVER_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_foreign_server_stmt__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0, 0,NULL } struct PgQuery__AlterForeignServerStmt { ProtobufCMessage base; char *servername; char *version; size_t n_options; PgQuery__Node **options; protobuf_c_boolean has_version; }; #define PG_QUERY__ALTER_FOREIGN_SERVER_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_foreign_server_stmt__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0 } struct PgQuery__CreateUserMappingStmt { ProtobufCMessage base; PgQuery__RoleSpec *user; char *servername; protobuf_c_boolean if_not_exists; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATE_USER_MAPPING_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_user_mapping_stmt__descriptor) \ , NULL, (char *)protobuf_c_empty_string, 0, 0,NULL } struct PgQuery__AlterUserMappingStmt { ProtobufCMessage base; PgQuery__RoleSpec *user; char *servername; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__ALTER_USER_MAPPING_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_user_mapping_stmt__descriptor) \ , NULL, (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__DropUserMappingStmt { ProtobufCMessage base; PgQuery__RoleSpec *user; char *servername; protobuf_c_boolean missing_ok; }; #define PG_QUERY__DROP_USER_MAPPING_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__drop_user_mapping_stmt__descriptor) \ , NULL, (char *)protobuf_c_empty_string, 0 } struct PgQuery__AlterTableSpaceOptionsStmt { ProtobufCMessage base; char *tablespacename; size_t n_options; PgQuery__Node **options; protobuf_c_boolean is_reset; }; #define PG_QUERY__ALTER_TABLE_SPACE_OPTIONS_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_table_space_options_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, 0 } struct PgQuery__AlterTableMoveAllStmt { ProtobufCMessage base; char *orig_tablespacename; PgQuery__ObjectType objtype; size_t n_roles; PgQuery__Node **roles; char *new_tablespacename; protobuf_c_boolean nowait; }; #define PG_QUERY__ALTER_TABLE_MOVE_ALL_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_table_move_all_stmt__descriptor) \ , (char *)protobuf_c_empty_string, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, 0,NULL, (char *)protobuf_c_empty_string, 0 } struct PgQuery__SecLabelStmt { ProtobufCMessage base; PgQuery__ObjectType objtype; PgQuery__Node *object; char *provider; char *label; }; #define PG_QUERY__SEC_LABEL_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__sec_label_stmt__descriptor) \ , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string } struct PgQuery__CreateForeignTableStmt { ProtobufCMessage base; PgQuery__CreateStmt *base_stmt; char *servername; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATE_FOREIGN_TABLE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_foreign_table_stmt__descriptor) \ , NULL, (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__ImportForeignSchemaStmt { ProtobufCMessage base; char *server_name; char *remote_schema; char *local_schema; PgQuery__ImportForeignSchemaType list_type; size_t n_table_list; PgQuery__Node **table_list; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__IMPORT_FOREIGN_SCHEMA_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__import_foreign_schema_stmt__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED, 0,NULL, 0,NULL } struct PgQuery__CreateExtensionStmt { ProtobufCMessage base; char *extname; protobuf_c_boolean if_not_exists; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATE_EXTENSION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_extension_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0, 0,NULL } struct PgQuery__AlterExtensionStmt { ProtobufCMessage base; char *extname; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__ALTER_EXTENSION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_extension_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__AlterExtensionContentsStmt { ProtobufCMessage base; char *extname; int32_t action; PgQuery__ObjectType objtype; PgQuery__Node *object; }; #define PG_QUERY__ALTER_EXTENSION_CONTENTS_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_extension_contents_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL } struct PgQuery__CreateEventTrigStmt { ProtobufCMessage base; char *trigname; char *eventname; size_t n_whenclause; PgQuery__Node **whenclause; size_t n_funcname; PgQuery__Node **funcname; }; #define PG_QUERY__CREATE_EVENT_TRIG_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_event_trig_stmt__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL } struct PgQuery__AlterEventTrigStmt { ProtobufCMessage base; char *trigname; char *tgenabled; }; #define PG_QUERY__ALTER_EVENT_TRIG_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_event_trig_stmt__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string } struct PgQuery__RefreshMatViewStmt { ProtobufCMessage base; protobuf_c_boolean concurrent; protobuf_c_boolean skip_data; PgQuery__RangeVar *relation; }; #define PG_QUERY__REFRESH_MAT_VIEW_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__refresh_mat_view_stmt__descriptor) \ , 0, 0, NULL } struct PgQuery__ReplicaIdentityStmt { ProtobufCMessage base; char *identity_type; char *name; }; #define PG_QUERY__REPLICA_IDENTITY_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__replica_identity_stmt__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string } struct PgQuery__AlterSystemStmt { ProtobufCMessage base; PgQuery__VariableSetStmt *setstmt; }; #define PG_QUERY__ALTER_SYSTEM_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_system_stmt__descriptor) \ , NULL } struct PgQuery__CreatePolicyStmt { ProtobufCMessage base; char *policy_name; PgQuery__RangeVar *table; char *cmd_name; protobuf_c_boolean permissive; size_t n_roles; PgQuery__Node **roles; PgQuery__Node *qual; PgQuery__Node *with_check; }; #define PG_QUERY__CREATE_POLICY_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_policy_stmt__descriptor) \ , (char *)protobuf_c_empty_string, NULL, (char *)protobuf_c_empty_string, 0, 0,NULL, NULL, NULL } struct PgQuery__AlterPolicyStmt { ProtobufCMessage base; char *policy_name; PgQuery__RangeVar *table; size_t n_roles; PgQuery__Node **roles; PgQuery__Node *qual; PgQuery__Node *with_check; }; #define PG_QUERY__ALTER_POLICY_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_policy_stmt__descriptor) \ , (char *)protobuf_c_empty_string, NULL, 0,NULL, NULL, NULL } struct PgQuery__CreateTransformStmt { ProtobufCMessage base; protobuf_c_boolean replace; PgQuery__TypeName *type_name; char *lang; PgQuery__ObjectWithArgs *fromsql; PgQuery__ObjectWithArgs *tosql; }; #define PG_QUERY__CREATE_TRANSFORM_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_transform_stmt__descriptor) \ , 0, NULL, (char *)protobuf_c_empty_string, NULL, NULL } struct PgQuery__CreateAmStmt { ProtobufCMessage base; char *amname; size_t n_handler_name; PgQuery__Node **handler_name; char *amtype; }; #define PG_QUERY__CREATE_AM_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_am_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, (char *)protobuf_c_empty_string } struct PgQuery__CreatePublicationStmt { ProtobufCMessage base; char *pubname; size_t n_options; PgQuery__Node **options; size_t n_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__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__AlterCollationStmt { ProtobufCMessage base; size_t n_collname; PgQuery__Node **collname; }; #define PG_QUERY__ALTER_COLLATION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_collation_stmt__descriptor) \ , 0,NULL } struct PgQuery__CallStmt { ProtobufCMessage base; PgQuery__FuncCall *funccall; PgQuery__FuncExpr *funcexpr; 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__AlterStatsStmt { ProtobufCMessage base; size_t n_defnames; PgQuery__Node **defnames; int32_t stxstattarget; protobuf_c_boolean missing_ok; }; #define PG_QUERY__ALTER_STATS_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_stats_stmt__descriptor) \ , 0,NULL, 0, 0 } struct PgQuery__AExpr { ProtobufCMessage base; PgQuery__AExprKind kind; size_t n_name; PgQuery__Node **name; PgQuery__Node *lexpr; PgQuery__Node *rexpr; int32_t location; }; #define PG_QUERY__A__EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__a__expr__descriptor) \ , PG_QUERY__A__EXPR__KIND__A_EXPR_KIND_UNDEFINED, 0,NULL, NULL, NULL, 0 } struct PgQuery__ColumnRef { ProtobufCMessage base; size_t n_fields; PgQuery__Node **fields; int32_t location; }; #define PG_QUERY__COLUMN_REF__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__column_ref__descriptor) \ , 0,NULL, 0 } struct PgQuery__ParamRef { ProtobufCMessage base; int32_t number; int32_t location; }; #define PG_QUERY__PARAM_REF__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__param_ref__descriptor) \ , 0, 0 } struct PgQuery__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__TypeCast { ProtobufCMessage base; PgQuery__Node *arg; PgQuery__TypeName *type_name; int32_t location; }; #define PG_QUERY__TYPE_CAST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__type_cast__descriptor) \ , NULL, NULL, 0 } struct PgQuery__CollateClause { ProtobufCMessage base; PgQuery__Node *arg; size_t n_collname; PgQuery__Node **collname; int32_t location; }; #define PG_QUERY__COLLATE_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__collate_clause__descriptor) \ , NULL, 0,NULL, 0 } struct PgQuery__SortBy { ProtobufCMessage base; PgQuery__Node *node; PgQuery__SortByDir sortby_dir; PgQuery__SortByNulls sortby_nulls; size_t n_use_op; PgQuery__Node **use_op; int32_t location; }; #define PG_QUERY__SORT_BY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__sort_by__descriptor) \ , NULL, PG_QUERY__SORT_BY_DIR__SORT_BY_DIR_UNDEFINED, PG_QUERY__SORT_BY_NULLS__SORT_BY_NULLS_UNDEFINED, 0,NULL, 0 } struct PgQuery__WindowDef { ProtobufCMessage base; char *name; char *refname; size_t n_partition_clause; PgQuery__Node **partition_clause; size_t n_order_clause; PgQuery__Node **order_clause; int32_t frame_options; PgQuery__Node *start_offset; PgQuery__Node *end_offset; int32_t location; }; #define PG_QUERY__WINDOW_DEF__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__window_def__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0, NULL, NULL, 0 } struct PgQuery__RangeSubselect { ProtobufCMessage base; protobuf_c_boolean lateral; PgQuery__Node *subquery; PgQuery__Alias *alias; }; #define PG_QUERY__RANGE_SUBSELECT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_subselect__descriptor) \ , 0, NULL, NULL } struct PgQuery__RangeFunction { ProtobufCMessage base; protobuf_c_boolean lateral; protobuf_c_boolean ordinality; protobuf_c_boolean is_rowsfrom; size_t n_functions; PgQuery__Node **functions; PgQuery__Alias *alias; size_t n_coldeflist; PgQuery__Node **coldeflist; }; #define PG_QUERY__RANGE_FUNCTION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_function__descriptor) \ , 0, 0, 0, 0,NULL, NULL, 0,NULL } struct PgQuery__RangeTableSample { ProtobufCMessage base; PgQuery__Node *relation; size_t n_method; PgQuery__Node **method; size_t n_args; PgQuery__Node **args; PgQuery__Node *repeatable; int32_t location; }; #define PG_QUERY__RANGE_TABLE_SAMPLE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_table_sample__descriptor) \ , NULL, 0,NULL, 0,NULL, NULL, 0 } struct PgQuery__RangeTableFunc { ProtobufCMessage base; protobuf_c_boolean lateral; PgQuery__Node *docexpr; PgQuery__Node *rowexpr; size_t n_namespaces; PgQuery__Node **namespaces; size_t n_columns; PgQuery__Node **columns; PgQuery__Alias *alias; int32_t location; }; #define PG_QUERY__RANGE_TABLE_FUNC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_table_func__descriptor) \ , 0, NULL, NULL, 0,NULL, 0,NULL, NULL, 0 } struct PgQuery__RangeTableFuncCol { ProtobufCMessage base; char *colname; PgQuery__TypeName *type_name; protobuf_c_boolean for_ordinality; protobuf_c_boolean is_not_null; PgQuery__Node *colexpr; PgQuery__Node *coldefexpr; int32_t location; }; #define PG_QUERY__RANGE_TABLE_FUNC_COL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_table_func_col__descriptor) \ , (char *)protobuf_c_empty_string, NULL, 0, 0, NULL, NULL, 0 } struct PgQuery__TypeName { ProtobufCMessage base; size_t n_names; PgQuery__Node **names; uint32_t type_oid; protobuf_c_boolean setof; protobuf_c_boolean pct_type; size_t n_typmods; PgQuery__Node **typmods; int32_t typemod; size_t n_array_bounds; PgQuery__Node **array_bounds; int32_t location; }; #define PG_QUERY__TYPE_NAME__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__type_name__descriptor) \ , 0,NULL, 0, 0, 0, 0,NULL, 0, 0,NULL, 0 } struct PgQuery__ColumnDef { ProtobufCMessage base; char *colname; PgQuery__TypeName *type_name; char *compression; int32_t inhcount; protobuf_c_boolean is_local; protobuf_c_boolean is_not_null; protobuf_c_boolean is_from_type; char *storage; PgQuery__Node *raw_default; PgQuery__Node *cooked_default; char *identity; PgQuery__RangeVar *identity_sequence; char *generated; PgQuery__CollateClause *coll_clause; uint32_t coll_oid; size_t n_constraints; PgQuery__Node **constraints; size_t n_fdwoptions; PgQuery__Node **fdwoptions; int32_t location; }; #define PG_QUERY__COLUMN_DEF__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__column_def__descriptor) \ , (char *)protobuf_c_empty_string, NULL, (char *)protobuf_c_empty_string, 0, 0, 0, 0, (char *)protobuf_c_empty_string, NULL, NULL, (char *)protobuf_c_empty_string, NULL, (char *)protobuf_c_empty_string, NULL, 0, 0,NULL, 0,NULL, 0 } struct PgQuery__IndexElem { ProtobufCMessage base; char *name; PgQuery__Node *expr; char *indexcolname; size_t n_collation; PgQuery__Node **collation; size_t n_opclass; PgQuery__Node **opclass; size_t n_opclassopts; PgQuery__Node **opclassopts; PgQuery__SortByDir ordering; PgQuery__SortByNulls nulls_ordering; }; #define PG_QUERY__INDEX_ELEM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__index_elem__descriptor) \ , (char *)protobuf_c_empty_string, NULL, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0,NULL, PG_QUERY__SORT_BY_DIR__SORT_BY_DIR_UNDEFINED, PG_QUERY__SORT_BY_NULLS__SORT_BY_NULLS_UNDEFINED } struct PgQuery__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__Constraint { ProtobufCMessage base; PgQuery__ConstrType contype; char *conname; protobuf_c_boolean deferrable; protobuf_c_boolean initdeferred; int32_t location; protobuf_c_boolean is_no_inherit; PgQuery__Node *raw_expr; char *cooked_expr; char *generated_when; 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; protobuf_c_boolean skip_validation; protobuf_c_boolean initially_valid; }; #define PG_QUERY__CONSTRAINT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__constraint__descriptor) \ , PG_QUERY__CONSTR_TYPE__CONSTR_TYPE_UNDEFINED, (char *)protobuf_c_empty_string, 0, 0, 0, 0, NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0, 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, 0 } struct PgQuery__DefElem { ProtobufCMessage base; char *defnamespace; char *defname; PgQuery__Node *arg; PgQuery__DefElemAction defaction; int32_t location; }; #define PG_QUERY__DEF_ELEM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__def_elem__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, NULL, PG_QUERY__DEF_ELEM_ACTION__DEF_ELEM_ACTION_UNDEFINED, 0 } struct PgQuery__RangeTblEntry { ProtobufCMessage base; PgQuery__RTEKind rtekind; uint32_t relid; char *relkind; int32_t rellockmode; PgQuery__TableSampleClause *tablesample; PgQuery__Query *subquery; protobuf_c_boolean security_barrier; PgQuery__JoinType jointype; int32_t joinmergedcols; size_t n_joinaliasvars; PgQuery__Node **joinaliasvars; size_t n_joinleftcols; PgQuery__Node **joinleftcols; size_t n_joinrightcols; PgQuery__Node **joinrightcols; 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; PgQuery__Alias *alias; PgQuery__Alias *eref; protobuf_c_boolean lateral; protobuf_c_boolean inh; protobuf_c_boolean in_from_cl; uint32_t required_perms; uint32_t check_as_user; size_t n_selected_cols; uint64_t *selected_cols; size_t n_inserted_cols; uint64_t *inserted_cols; size_t n_updated_cols; uint64_t *updated_cols; size_t n_extra_updated_cols; uint64_t *extra_updated_cols; size_t n_security_quals; PgQuery__Node **security_quals; }; #define PG_QUERY__RANGE_TBL_ENTRY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_tbl_entry__descriptor) \ , PG_QUERY__RTEKIND__RTEKIND_UNDEFINED, 0, (char *)protobuf_c_empty_string, 0, NULL, NULL, 0, PG_QUERY__JOIN_TYPE__JOIN_TYPE_UNDEFINED, 0, 0,NULL, 0,NULL, 0,NULL, NULL, 0,NULL, 0, NULL, 0,NULL, (char *)protobuf_c_empty_string, 0, 0, 0,NULL, 0,NULL, 0,NULL, (char *)protobuf_c_empty_string, 0, NULL, NULL, 0, 0, 0, 0, 0, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL } struct PgQuery__RangeTblFunction { ProtobufCMessage base; PgQuery__Node *funcexpr; int32_t funccolcount; size_t n_funccolnames; PgQuery__Node **funccolnames; size_t n_funccoltypes; PgQuery__Node **funccoltypes; size_t n_funccoltypmods; PgQuery__Node **funccoltypmods; size_t n_funccolcollations; PgQuery__Node **funccolcollations; size_t n_funcparams; uint64_t *funcparams; }; #define PG_QUERY__RANGE_TBL_FUNCTION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_tbl_function__descriptor) \ , NULL, 0, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL } struct PgQuery__TableSampleClause { ProtobufCMessage base; uint32_t tsmhandler; size_t n_args; PgQuery__Node **args; PgQuery__Node *repeatable; }; #define PG_QUERY__TABLE_SAMPLE_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__table_sample_clause__descriptor) \ , 0, 0,NULL, NULL } struct PgQuery__WithCheckOption { ProtobufCMessage base; PgQuery__WCOKind kind; char *relname; char *polname; PgQuery__Node *qual; protobuf_c_boolean cascaded; }; #define PG_QUERY__WITH_CHECK_OPTION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__with_check_option__descriptor) \ , PG_QUERY__WCOKIND__WCOKIND_UNDEFINED, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, NULL, 0 } struct PgQuery__SortGroupClause { ProtobufCMessage base; uint32_t tle_sort_group_ref; uint32_t eqop; uint32_t sortop; protobuf_c_boolean nulls_first; protobuf_c_boolean hashable; }; #define PG_QUERY__SORT_GROUP_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__sort_group_clause__descriptor) \ , 0, 0, 0, 0, 0 } struct PgQuery__GroupingSet { ProtobufCMessage base; PgQuery__GroupingSetKind kind; size_t n_content; PgQuery__Node **content; int32_t location; }; #define PG_QUERY__GROUPING_SET__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__grouping_set__descriptor) \ , PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_KIND_UNDEFINED, 0,NULL, 0 } struct PgQuery__WindowClause { ProtobufCMessage base; char *name; char *refname; size_t n_partition_clause; PgQuery__Node **partition_clause; size_t n_order_clause; PgQuery__Node **order_clause; int32_t frame_options; PgQuery__Node *start_offset; PgQuery__Node *end_offset; size_t n_run_condition; PgQuery__Node **run_condition; 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,NULL, 0, 0, 0, 0, 0, 0, 0 } struct PgQuery__ObjectWithArgs { ProtobufCMessage base; size_t n_objname; PgQuery__Node **objname; size_t n_objargs; PgQuery__Node **objargs; 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__CreateOpClassItem { ProtobufCMessage base; int32_t itemtype; PgQuery__ObjectWithArgs *name; int32_t number; size_t n_order_family; PgQuery__Node **order_family; size_t n_class_args; PgQuery__Node **class_args; PgQuery__TypeName *storedtype; }; #define PG_QUERY__CREATE_OP_CLASS_ITEM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_op_class_item__descriptor) \ , 0, NULL, 0, 0,NULL, 0,NULL, NULL } struct PgQuery__TableLikeClause { ProtobufCMessage base; PgQuery__RangeVar *relation; uint32_t options; uint32_t relation_oid; }; #define PG_QUERY__TABLE_LIKE_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__table_like_clause__descriptor) \ , NULL, 0, 0 } struct PgQuery__FunctionParameter { ProtobufCMessage base; char *name; PgQuery__TypeName *arg_type; PgQuery__FunctionParameterMode mode; PgQuery__Node *defexpr; }; #define PG_QUERY__FUNCTION_PARAMETER__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__function_parameter__descriptor) \ , (char *)protobuf_c_empty_string, NULL, PG_QUERY__FUNCTION_PARAMETER_MODE__FUNCTION_PARAMETER_MODE_UNDEFINED, NULL } struct PgQuery__LockingClause { ProtobufCMessage base; size_t n_locked_rels; PgQuery__Node **locked_rels; PgQuery__LockClauseStrength strength; PgQuery__LockWaitPolicy wait_policy; }; #define PG_QUERY__LOCKING_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__locking_clause__descriptor) \ , 0,NULL, PG_QUERY__LOCK_CLAUSE_STRENGTH__LOCK_CLAUSE_STRENGTH_UNDEFINED, PG_QUERY__LOCK_WAIT_POLICY__LOCK_WAIT_POLICY_UNDEFINED } struct PgQuery__RowMarkClause { ProtobufCMessage base; uint32_t rti; PgQuery__LockClauseStrength strength; PgQuery__LockWaitPolicy wait_policy; protobuf_c_boolean pushed_down; }; #define PG_QUERY__ROW_MARK_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__row_mark_clause__descriptor) \ , 0, PG_QUERY__LOCK_CLAUSE_STRENGTH__LOCK_CLAUSE_STRENGTH_UNDEFINED, PG_QUERY__LOCK_WAIT_POLICY__LOCK_WAIT_POLICY_UNDEFINED, 0 } struct PgQuery__XmlSerialize { ProtobufCMessage base; PgQuery__XmlOptionType xmloption; PgQuery__Node *expr; PgQuery__TypeName *type_name; int32_t location; }; #define PG_QUERY__XML_SERIALIZE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__xml_serialize__descriptor) \ , PG_QUERY__XML_OPTION_TYPE__XML_OPTION_TYPE_UNDEFINED, NULL, NULL, 0 } struct PgQuery__WithClause { ProtobufCMessage base; size_t n_ctes; PgQuery__Node **ctes; protobuf_c_boolean recursive; int32_t location; }; #define PG_QUERY__WITH_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__with_clause__descriptor) \ , 0,NULL, 0, 0 } struct PgQuery__InferClause { ProtobufCMessage base; size_t n_index_elems; PgQuery__Node **index_elems; PgQuery__Node *where_clause; char *conname; int32_t location; }; #define PG_QUERY__INFER_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__infer_clause__descriptor) \ , 0,NULL, NULL, (char *)protobuf_c_empty_string, 0 } struct PgQuery__OnConflictClause { ProtobufCMessage base; PgQuery__OnConflictAction action; PgQuery__InferClause *infer; size_t n_target_list; PgQuery__Node **target_list; PgQuery__Node *where_clause; int32_t location; }; #define PG_QUERY__ON_CONFLICT_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__on_conflict_clause__descriptor) \ , PG_QUERY__ON_CONFLICT_ACTION__ON_CONFLICT_ACTION_UNDEFINED, NULL, 0,NULL, NULL, 0 } struct PgQuery__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; protobuf_c_boolean matched; 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) \ , 0, PG_QUERY__CMD_TYPE__CMD_TYPE_UNDEFINED, PG_QUERY__OVERRIDING_KIND__OVERRIDING_KIND_UNDEFINED, NULL, 0,NULL, 0,NULL } struct PgQuery__RoleSpec { ProtobufCMessage base; PgQuery__RoleSpecType roletype; char *rolename; int32_t location; }; #define PG_QUERY__ROLE_SPEC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__role_spec__descriptor) \ , PG_QUERY__ROLE_SPEC_TYPE__ROLE_SPEC_TYPE_UNDEFINED, (char *)protobuf_c_empty_string, 0 } struct PgQuery__TriggerTransition { ProtobufCMessage base; char *name; protobuf_c_boolean is_new; protobuf_c_boolean is_table; }; #define PG_QUERY__TRIGGER_TRANSITION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__trigger_transition__descriptor) \ , (char *)protobuf_c_empty_string, 0, 0 } struct PgQuery__PartitionElem { ProtobufCMessage base; char *name; PgQuery__Node *expr; size_t n_collation; PgQuery__Node **collation; size_t n_opclass; PgQuery__Node **opclass; int32_t location; }; #define PG_QUERY__PARTITION_ELEM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__partition_elem__descriptor) \ , (char *)protobuf_c_empty_string, NULL, 0,NULL, 0,NULL, 0 } struct PgQuery__PartitionSpec { ProtobufCMessage base; char *strategy; size_t n_part_params; PgQuery__Node **part_params; int32_t location; }; #define PG_QUERY__PARTITION_SPEC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__partition_spec__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, 0 } struct PgQuery__PartitionBoundSpec { ProtobufCMessage base; char *strategy; protobuf_c_boolean is_default; int32_t modulus; int32_t remainder; size_t n_listdatums; PgQuery__Node **listdatums; size_t n_lowerdatums; PgQuery__Node **lowerdatums; size_t n_upperdatums; PgQuery__Node **upperdatums; int32_t location; }; #define PG_QUERY__PARTITION_BOUND_SPEC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__partition_bound_spec__descriptor) \ , (char *)protobuf_c_empty_string, 0, 0, 0, 0,NULL, 0,NULL, 0,NULL, 0 } struct PgQuery__PartitionRangeDatum { ProtobufCMessage base; PgQuery__PartitionRangeDatumKind kind; PgQuery__Node *value; int32_t location; }; #define PG_QUERY__PARTITION_RANGE_DATUM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__partition_range_datum__descriptor) \ , PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_KIND_UNDEFINED, NULL, 0 } struct PgQuery__PartitionCmd { ProtobufCMessage base; PgQuery__RangeVar *name; PgQuery__PartitionBoundSpec *bound; protobuf_c_boolean concurrent; }; #define PG_QUERY__PARTITION_CMD__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__partition_cmd__descriptor) \ , NULL, 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__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__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__InlineCodeBlock { ProtobufCMessage base; char *source_text; uint32_t lang_oid; protobuf_c_boolean lang_is_trusted; protobuf_c_boolean atomic; }; #define PG_QUERY__INLINE_CODE_BLOCK__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__inline_code_block__descriptor) \ , (char *)protobuf_c_empty_string, 0, 0, 0 } struct PgQuery__CallContext { ProtobufCMessage base; protobuf_c_boolean atomic; }; #define PG_QUERY__CALL_CONTEXT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__call_context__descriptor) \ , 0 } struct PgQuery__ScanToken { ProtobufCMessage base; int32_t start; int32_t end; PgQuery__Token token; PgQuery__KeywordKind keyword_kind; }; #define PG_QUERY__SCAN_TOKEN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__scan_token__descriptor) \ , 0, 0, PG_QUERY__TOKEN__NUL, PG_QUERY__KEYWORD_KIND__NO_KEYWORD } /* PgQuery__ParseResult methods */ void pg_query__parse_result__init (PgQuery__ParseResult *message); size_t pg_query__parse_result__get_packed_size (const PgQuery__ParseResult *message); size_t pg_query__parse_result__pack (const PgQuery__ParseResult *message, uint8_t *out); size_t pg_query__parse_result__pack_to_buffer (const PgQuery__ParseResult *message, ProtobufCBuffer *buffer); PgQuery__ParseResult * pg_query__parse_result__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__parse_result__free_unpacked (PgQuery__ParseResult *message, ProtobufCAllocator *allocator); /* PgQuery__ScanResult methods */ void pg_query__scan_result__init (PgQuery__ScanResult *message); size_t pg_query__scan_result__get_packed_size (const PgQuery__ScanResult *message); size_t pg_query__scan_result__pack (const PgQuery__ScanResult *message, uint8_t *out); size_t pg_query__scan_result__pack_to_buffer (const PgQuery__ScanResult *message, ProtobufCBuffer *buffer); PgQuery__ScanResult * pg_query__scan_result__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__scan_result__free_unpacked (PgQuery__ScanResult *message, ProtobufCAllocator *allocator); /* PgQuery__Node methods */ void pg_query__node__init (PgQuery__Node *message); size_t pg_query__node__get_packed_size (const PgQuery__Node *message); size_t pg_query__node__pack (const PgQuery__Node *message, uint8_t *out); size_t pg_query__node__pack_to_buffer (const PgQuery__Node *message, ProtobufCBuffer *buffer); PgQuery__Node * pg_query__node__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__node__free_unpacked (PgQuery__Node *message, ProtobufCAllocator *allocator); /* PgQuery__Integer methods */ void pg_query__integer__init (PgQuery__Integer *message); size_t pg_query__integer__get_packed_size (const PgQuery__Integer *message); size_t pg_query__integer__pack (const PgQuery__Integer *message, uint8_t *out); size_t pg_query__integer__pack_to_buffer (const PgQuery__Integer *message, ProtobufCBuffer *buffer); PgQuery__Integer * pg_query__integer__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__integer__free_unpacked (PgQuery__Integer *message, ProtobufCAllocator *allocator); /* PgQuery__Float methods */ void pg_query__float__init (PgQuery__Float *message); size_t pg_query__float__get_packed_size (const PgQuery__Float *message); size_t pg_query__float__pack (const PgQuery__Float *message, uint8_t *out); size_t pg_query__float__pack_to_buffer (const PgQuery__Float *message, ProtobufCBuffer *buffer); PgQuery__Float * pg_query__float__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__float__free_unpacked (PgQuery__Float *message, ProtobufCAllocator *allocator); /* PgQuery__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__Var methods */ void pg_query__var__init (PgQuery__Var *message); size_t pg_query__var__get_packed_size (const PgQuery__Var *message); size_t pg_query__var__pack (const PgQuery__Var *message, uint8_t *out); size_t pg_query__var__pack_to_buffer (const PgQuery__Var *message, ProtobufCBuffer *buffer); PgQuery__Var * pg_query__var__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__var__free_unpacked (PgQuery__Var *message, ProtobufCAllocator *allocator); /* PgQuery__Param methods */ void pg_query__param__init (PgQuery__Param *message); size_t pg_query__param__get_packed_size (const PgQuery__Param *message); size_t pg_query__param__pack (const PgQuery__Param *message, uint8_t *out); size_t pg_query__param__pack_to_buffer (const PgQuery__Param *message, ProtobufCBuffer *buffer); PgQuery__Param * pg_query__param__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__param__free_unpacked (PgQuery__Param *message, ProtobufCAllocator *allocator); /* PgQuery__Aggref methods */ void pg_query__aggref__init (PgQuery__Aggref *message); size_t pg_query__aggref__get_packed_size (const PgQuery__Aggref *message); size_t pg_query__aggref__pack (const PgQuery__Aggref *message, uint8_t *out); size_t pg_query__aggref__pack_to_buffer (const PgQuery__Aggref *message, ProtobufCBuffer *buffer); PgQuery__Aggref * pg_query__aggref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__aggref__free_unpacked (PgQuery__Aggref *message, ProtobufCAllocator *allocator); /* PgQuery__GroupingFunc methods */ void pg_query__grouping_func__init (PgQuery__GroupingFunc *message); size_t pg_query__grouping_func__get_packed_size (const PgQuery__GroupingFunc *message); size_t pg_query__grouping_func__pack (const PgQuery__GroupingFunc *message, uint8_t *out); size_t pg_query__grouping_func__pack_to_buffer (const PgQuery__GroupingFunc *message, ProtobufCBuffer *buffer); PgQuery__GroupingFunc * pg_query__grouping_func__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__grouping_func__free_unpacked (PgQuery__GroupingFunc *message, ProtobufCAllocator *allocator); /* PgQuery__WindowFunc methods */ void pg_query__window_func__init (PgQuery__WindowFunc *message); size_t pg_query__window_func__get_packed_size (const PgQuery__WindowFunc *message); size_t pg_query__window_func__pack (const PgQuery__WindowFunc *message, uint8_t *out); size_t pg_query__window_func__pack_to_buffer (const PgQuery__WindowFunc *message, ProtobufCBuffer *buffer); PgQuery__WindowFunc * pg_query__window_func__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__window_func__free_unpacked (PgQuery__WindowFunc *message, ProtobufCAllocator *allocator); /* PgQuery__SubscriptingRef methods */ void pg_query__subscripting_ref__init (PgQuery__SubscriptingRef *message); size_t pg_query__subscripting_ref__get_packed_size (const PgQuery__SubscriptingRef *message); size_t pg_query__subscripting_ref__pack (const PgQuery__SubscriptingRef *message, uint8_t *out); size_t pg_query__subscripting_ref__pack_to_buffer (const PgQuery__SubscriptingRef *message, ProtobufCBuffer *buffer); PgQuery__SubscriptingRef * pg_query__subscripting_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__subscripting_ref__free_unpacked (PgQuery__SubscriptingRef *message, ProtobufCAllocator *allocator); /* PgQuery__FuncExpr methods */ void pg_query__func_expr__init (PgQuery__FuncExpr *message); size_t pg_query__func_expr__get_packed_size (const PgQuery__FuncExpr *message); size_t pg_query__func_expr__pack (const PgQuery__FuncExpr *message, uint8_t *out); size_t pg_query__func_expr__pack_to_buffer (const PgQuery__FuncExpr *message, ProtobufCBuffer *buffer); PgQuery__FuncExpr * pg_query__func_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__func_expr__free_unpacked (PgQuery__FuncExpr *message, ProtobufCAllocator *allocator); /* PgQuery__NamedArgExpr methods */ void pg_query__named_arg_expr__init (PgQuery__NamedArgExpr *message); size_t pg_query__named_arg_expr__get_packed_size (const PgQuery__NamedArgExpr *message); size_t pg_query__named_arg_expr__pack (const PgQuery__NamedArgExpr *message, uint8_t *out); size_t pg_query__named_arg_expr__pack_to_buffer (const PgQuery__NamedArgExpr *message, ProtobufCBuffer *buffer); PgQuery__NamedArgExpr * pg_query__named_arg_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__named_arg_expr__free_unpacked (PgQuery__NamedArgExpr *message, ProtobufCAllocator *allocator); /* PgQuery__OpExpr methods */ void pg_query__op_expr__init (PgQuery__OpExpr *message); size_t pg_query__op_expr__get_packed_size (const PgQuery__OpExpr *message); size_t pg_query__op_expr__pack (const PgQuery__OpExpr *message, uint8_t *out); size_t pg_query__op_expr__pack_to_buffer (const PgQuery__OpExpr *message, ProtobufCBuffer *buffer); PgQuery__OpExpr * pg_query__op_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__op_expr__free_unpacked (PgQuery__OpExpr *message, ProtobufCAllocator *allocator); /* PgQuery__DistinctExpr methods */ void pg_query__distinct_expr__init (PgQuery__DistinctExpr *message); size_t pg_query__distinct_expr__get_packed_size (const PgQuery__DistinctExpr *message); size_t pg_query__distinct_expr__pack (const PgQuery__DistinctExpr *message, uint8_t *out); size_t pg_query__distinct_expr__pack_to_buffer (const PgQuery__DistinctExpr *message, ProtobufCBuffer *buffer); PgQuery__DistinctExpr * pg_query__distinct_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__distinct_expr__free_unpacked (PgQuery__DistinctExpr *message, ProtobufCAllocator *allocator); /* PgQuery__NullIfExpr methods */ void pg_query__null_if_expr__init (PgQuery__NullIfExpr *message); size_t pg_query__null_if_expr__get_packed_size (const PgQuery__NullIfExpr *message); size_t pg_query__null_if_expr__pack (const PgQuery__NullIfExpr *message, uint8_t *out); size_t pg_query__null_if_expr__pack_to_buffer (const PgQuery__NullIfExpr *message, ProtobufCBuffer *buffer); PgQuery__NullIfExpr * pg_query__null_if_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__null_if_expr__free_unpacked (PgQuery__NullIfExpr *message, ProtobufCAllocator *allocator); /* PgQuery__ScalarArrayOpExpr methods */ void pg_query__scalar_array_op_expr__init (PgQuery__ScalarArrayOpExpr *message); size_t pg_query__scalar_array_op_expr__get_packed_size (const PgQuery__ScalarArrayOpExpr *message); size_t pg_query__scalar_array_op_expr__pack (const PgQuery__ScalarArrayOpExpr *message, uint8_t *out); size_t pg_query__scalar_array_op_expr__pack_to_buffer (const PgQuery__ScalarArrayOpExpr *message, ProtobufCBuffer *buffer); PgQuery__ScalarArrayOpExpr * pg_query__scalar_array_op_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__scalar_array_op_expr__free_unpacked (PgQuery__ScalarArrayOpExpr *message, ProtobufCAllocator *allocator); /* PgQuery__BoolExpr methods */ void pg_query__bool_expr__init (PgQuery__BoolExpr *message); size_t pg_query__bool_expr__get_packed_size (const PgQuery__BoolExpr *message); size_t pg_query__bool_expr__pack (const PgQuery__BoolExpr *message, uint8_t *out); size_t pg_query__bool_expr__pack_to_buffer (const PgQuery__BoolExpr *message, ProtobufCBuffer *buffer); PgQuery__BoolExpr * pg_query__bool_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__bool_expr__free_unpacked (PgQuery__BoolExpr *message, ProtobufCAllocator *allocator); /* PgQuery__SubLink methods */ void pg_query__sub_link__init (PgQuery__SubLink *message); size_t pg_query__sub_link__get_packed_size (const PgQuery__SubLink *message); size_t pg_query__sub_link__pack (const PgQuery__SubLink *message, uint8_t *out); size_t pg_query__sub_link__pack_to_buffer (const PgQuery__SubLink *message, ProtobufCBuffer *buffer); PgQuery__SubLink * pg_query__sub_link__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__sub_link__free_unpacked (PgQuery__SubLink *message, ProtobufCAllocator *allocator); /* PgQuery__SubPlan methods */ void pg_query__sub_plan__init (PgQuery__SubPlan *message); size_t pg_query__sub_plan__get_packed_size (const PgQuery__SubPlan *message); size_t pg_query__sub_plan__pack (const PgQuery__SubPlan *message, uint8_t *out); size_t pg_query__sub_plan__pack_to_buffer (const PgQuery__SubPlan *message, ProtobufCBuffer *buffer); PgQuery__SubPlan * pg_query__sub_plan__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__sub_plan__free_unpacked (PgQuery__SubPlan *message, ProtobufCAllocator *allocator); /* PgQuery__AlternativeSubPlan methods */ void pg_query__alternative_sub_plan__init (PgQuery__AlternativeSubPlan *message); size_t pg_query__alternative_sub_plan__get_packed_size (const PgQuery__AlternativeSubPlan *message); size_t pg_query__alternative_sub_plan__pack (const PgQuery__AlternativeSubPlan *message, uint8_t *out); size_t pg_query__alternative_sub_plan__pack_to_buffer (const PgQuery__AlternativeSubPlan *message, ProtobufCBuffer *buffer); PgQuery__AlternativeSubPlan * pg_query__alternative_sub_plan__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alternative_sub_plan__free_unpacked (PgQuery__AlternativeSubPlan *message, ProtobufCAllocator *allocator); /* PgQuery__FieldSelect methods */ void pg_query__field_select__init (PgQuery__FieldSelect *message); size_t pg_query__field_select__get_packed_size (const PgQuery__FieldSelect *message); size_t pg_query__field_select__pack (const PgQuery__FieldSelect *message, uint8_t *out); size_t pg_query__field_select__pack_to_buffer (const PgQuery__FieldSelect *message, ProtobufCBuffer *buffer); PgQuery__FieldSelect * pg_query__field_select__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__field_select__free_unpacked (PgQuery__FieldSelect *message, ProtobufCAllocator *allocator); /* PgQuery__FieldStore methods */ void pg_query__field_store__init (PgQuery__FieldStore *message); size_t pg_query__field_store__get_packed_size (const PgQuery__FieldStore *message); size_t pg_query__field_store__pack (const PgQuery__FieldStore *message, uint8_t *out); size_t pg_query__field_store__pack_to_buffer (const PgQuery__FieldStore *message, ProtobufCBuffer *buffer); PgQuery__FieldStore * pg_query__field_store__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__field_store__free_unpacked (PgQuery__FieldStore *message, ProtobufCAllocator *allocator); /* PgQuery__RelabelType methods */ void pg_query__relabel_type__init (PgQuery__RelabelType *message); size_t pg_query__relabel_type__get_packed_size (const PgQuery__RelabelType *message); size_t pg_query__relabel_type__pack (const PgQuery__RelabelType *message, uint8_t *out); size_t pg_query__relabel_type__pack_to_buffer (const PgQuery__RelabelType *message, ProtobufCBuffer *buffer); PgQuery__RelabelType * pg_query__relabel_type__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__relabel_type__free_unpacked (PgQuery__RelabelType *message, ProtobufCAllocator *allocator); /* PgQuery__CoerceViaIO methods */ void pg_query__coerce_via_io__init (PgQuery__CoerceViaIO *message); size_t pg_query__coerce_via_io__get_packed_size (const PgQuery__CoerceViaIO *message); size_t pg_query__coerce_via_io__pack (const PgQuery__CoerceViaIO *message, uint8_t *out); size_t pg_query__coerce_via_io__pack_to_buffer (const PgQuery__CoerceViaIO *message, ProtobufCBuffer *buffer); PgQuery__CoerceViaIO * pg_query__coerce_via_io__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__coerce_via_io__free_unpacked (PgQuery__CoerceViaIO *message, ProtobufCAllocator *allocator); /* PgQuery__ArrayCoerceExpr methods */ void pg_query__array_coerce_expr__init (PgQuery__ArrayCoerceExpr *message); size_t pg_query__array_coerce_expr__get_packed_size (const PgQuery__ArrayCoerceExpr *message); size_t pg_query__array_coerce_expr__pack (const PgQuery__ArrayCoerceExpr *message, uint8_t *out); size_t pg_query__array_coerce_expr__pack_to_buffer (const PgQuery__ArrayCoerceExpr *message, ProtobufCBuffer *buffer); PgQuery__ArrayCoerceExpr * pg_query__array_coerce_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__array_coerce_expr__free_unpacked (PgQuery__ArrayCoerceExpr *message, ProtobufCAllocator *allocator); /* PgQuery__ConvertRowtypeExpr methods */ void pg_query__convert_rowtype_expr__init (PgQuery__ConvertRowtypeExpr *message); size_t pg_query__convert_rowtype_expr__get_packed_size (const PgQuery__ConvertRowtypeExpr *message); size_t pg_query__convert_rowtype_expr__pack (const PgQuery__ConvertRowtypeExpr *message, uint8_t *out); size_t pg_query__convert_rowtype_expr__pack_to_buffer (const PgQuery__ConvertRowtypeExpr *message, ProtobufCBuffer *buffer); PgQuery__ConvertRowtypeExpr * pg_query__convert_rowtype_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__convert_rowtype_expr__free_unpacked (PgQuery__ConvertRowtypeExpr *message, ProtobufCAllocator *allocator); /* PgQuery__CollateExpr methods */ void pg_query__collate_expr__init (PgQuery__CollateExpr *message); size_t pg_query__collate_expr__get_packed_size (const PgQuery__CollateExpr *message); size_t pg_query__collate_expr__pack (const PgQuery__CollateExpr *message, uint8_t *out); size_t pg_query__collate_expr__pack_to_buffer (const PgQuery__CollateExpr *message, ProtobufCBuffer *buffer); PgQuery__CollateExpr * pg_query__collate_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__collate_expr__free_unpacked (PgQuery__CollateExpr *message, ProtobufCAllocator *allocator); /* PgQuery__CaseExpr methods */ void pg_query__case_expr__init (PgQuery__CaseExpr *message); size_t pg_query__case_expr__get_packed_size (const PgQuery__CaseExpr *message); size_t pg_query__case_expr__pack (const PgQuery__CaseExpr *message, uint8_t *out); size_t pg_query__case_expr__pack_to_buffer (const PgQuery__CaseExpr *message, ProtobufCBuffer *buffer); PgQuery__CaseExpr * pg_query__case_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__case_expr__free_unpacked (PgQuery__CaseExpr *message, ProtobufCAllocator *allocator); /* PgQuery__CaseWhen methods */ void pg_query__case_when__init (PgQuery__CaseWhen *message); size_t pg_query__case_when__get_packed_size (const PgQuery__CaseWhen *message); size_t pg_query__case_when__pack (const PgQuery__CaseWhen *message, uint8_t *out); size_t pg_query__case_when__pack_to_buffer (const PgQuery__CaseWhen *message, ProtobufCBuffer *buffer); PgQuery__CaseWhen * pg_query__case_when__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__case_when__free_unpacked (PgQuery__CaseWhen *message, ProtobufCAllocator *allocator); /* PgQuery__CaseTestExpr methods */ void pg_query__case_test_expr__init (PgQuery__CaseTestExpr *message); size_t pg_query__case_test_expr__get_packed_size (const PgQuery__CaseTestExpr *message); size_t pg_query__case_test_expr__pack (const PgQuery__CaseTestExpr *message, uint8_t *out); size_t pg_query__case_test_expr__pack_to_buffer (const PgQuery__CaseTestExpr *message, ProtobufCBuffer *buffer); PgQuery__CaseTestExpr * pg_query__case_test_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__case_test_expr__free_unpacked (PgQuery__CaseTestExpr *message, ProtobufCAllocator *allocator); /* PgQuery__ArrayExpr methods */ void pg_query__array_expr__init (PgQuery__ArrayExpr *message); size_t pg_query__array_expr__get_packed_size (const PgQuery__ArrayExpr *message); size_t pg_query__array_expr__pack (const PgQuery__ArrayExpr *message, uint8_t *out); size_t pg_query__array_expr__pack_to_buffer (const PgQuery__ArrayExpr *message, ProtobufCBuffer *buffer); PgQuery__ArrayExpr * pg_query__array_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__array_expr__free_unpacked (PgQuery__ArrayExpr *message, ProtobufCAllocator *allocator); /* PgQuery__RowExpr methods */ void pg_query__row_expr__init (PgQuery__RowExpr *message); size_t pg_query__row_expr__get_packed_size (const PgQuery__RowExpr *message); size_t pg_query__row_expr__pack (const PgQuery__RowExpr *message, uint8_t *out); size_t pg_query__row_expr__pack_to_buffer (const PgQuery__RowExpr *message, ProtobufCBuffer *buffer); PgQuery__RowExpr * pg_query__row_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__row_expr__free_unpacked (PgQuery__RowExpr *message, ProtobufCAllocator *allocator); /* PgQuery__RowCompareExpr methods */ void pg_query__row_compare_expr__init (PgQuery__RowCompareExpr *message); size_t pg_query__row_compare_expr__get_packed_size (const PgQuery__RowCompareExpr *message); size_t pg_query__row_compare_expr__pack (const PgQuery__RowCompareExpr *message, uint8_t *out); size_t pg_query__row_compare_expr__pack_to_buffer (const PgQuery__RowCompareExpr *message, ProtobufCBuffer *buffer); PgQuery__RowCompareExpr * pg_query__row_compare_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__row_compare_expr__free_unpacked (PgQuery__RowCompareExpr *message, ProtobufCAllocator *allocator); /* PgQuery__CoalesceExpr methods */ void pg_query__coalesce_expr__init (PgQuery__CoalesceExpr *message); size_t pg_query__coalesce_expr__get_packed_size (const PgQuery__CoalesceExpr *message); size_t pg_query__coalesce_expr__pack (const PgQuery__CoalesceExpr *message, uint8_t *out); size_t pg_query__coalesce_expr__pack_to_buffer (const PgQuery__CoalesceExpr *message, ProtobufCBuffer *buffer); PgQuery__CoalesceExpr * pg_query__coalesce_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__coalesce_expr__free_unpacked (PgQuery__CoalesceExpr *message, ProtobufCAllocator *allocator); /* PgQuery__MinMaxExpr methods */ void pg_query__min_max_expr__init (PgQuery__MinMaxExpr *message); size_t pg_query__min_max_expr__get_packed_size (const PgQuery__MinMaxExpr *message); size_t pg_query__min_max_expr__pack (const PgQuery__MinMaxExpr *message, uint8_t *out); size_t pg_query__min_max_expr__pack_to_buffer (const PgQuery__MinMaxExpr *message, ProtobufCBuffer *buffer); PgQuery__MinMaxExpr * pg_query__min_max_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__min_max_expr__free_unpacked (PgQuery__MinMaxExpr *message, ProtobufCAllocator *allocator); /* PgQuery__SQLValueFunction methods */ void pg_query__sqlvalue_function__init (PgQuery__SQLValueFunction *message); size_t pg_query__sqlvalue_function__get_packed_size (const PgQuery__SQLValueFunction *message); size_t pg_query__sqlvalue_function__pack (const PgQuery__SQLValueFunction *message, uint8_t *out); size_t pg_query__sqlvalue_function__pack_to_buffer (const PgQuery__SQLValueFunction *message, ProtobufCBuffer *buffer); PgQuery__SQLValueFunction * pg_query__sqlvalue_function__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__sqlvalue_function__free_unpacked (PgQuery__SQLValueFunction *message, ProtobufCAllocator *allocator); /* PgQuery__XmlExpr methods */ void pg_query__xml_expr__init (PgQuery__XmlExpr *message); size_t pg_query__xml_expr__get_packed_size (const PgQuery__XmlExpr *message); size_t pg_query__xml_expr__pack (const PgQuery__XmlExpr *message, uint8_t *out); size_t pg_query__xml_expr__pack_to_buffer (const PgQuery__XmlExpr *message, ProtobufCBuffer *buffer); PgQuery__XmlExpr * pg_query__xml_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__xml_expr__free_unpacked (PgQuery__XmlExpr *message, ProtobufCAllocator *allocator); /* PgQuery__NullTest methods */ void pg_query__null_test__init (PgQuery__NullTest *message); size_t pg_query__null_test__get_packed_size (const PgQuery__NullTest *message); size_t pg_query__null_test__pack (const PgQuery__NullTest *message, uint8_t *out); size_t pg_query__null_test__pack_to_buffer (const PgQuery__NullTest *message, ProtobufCBuffer *buffer); PgQuery__NullTest * pg_query__null_test__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__null_test__free_unpacked (PgQuery__NullTest *message, ProtobufCAllocator *allocator); /* PgQuery__BooleanTest methods */ void pg_query__boolean_test__init (PgQuery__BooleanTest *message); size_t pg_query__boolean_test__get_packed_size (const PgQuery__BooleanTest *message); size_t pg_query__boolean_test__pack (const PgQuery__BooleanTest *message, uint8_t *out); size_t pg_query__boolean_test__pack_to_buffer (const PgQuery__BooleanTest *message, ProtobufCBuffer *buffer); PgQuery__BooleanTest * pg_query__boolean_test__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__boolean_test__free_unpacked (PgQuery__BooleanTest *message, ProtobufCAllocator *allocator); /* PgQuery__CoerceToDomain methods */ void pg_query__coerce_to_domain__init (PgQuery__CoerceToDomain *message); size_t pg_query__coerce_to_domain__get_packed_size (const PgQuery__CoerceToDomain *message); size_t pg_query__coerce_to_domain__pack (const PgQuery__CoerceToDomain *message, uint8_t *out); size_t pg_query__coerce_to_domain__pack_to_buffer (const PgQuery__CoerceToDomain *message, ProtobufCBuffer *buffer); PgQuery__CoerceToDomain * pg_query__coerce_to_domain__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__coerce_to_domain__free_unpacked (PgQuery__CoerceToDomain *message, ProtobufCAllocator *allocator); /* PgQuery__CoerceToDomainValue methods */ void pg_query__coerce_to_domain_value__init (PgQuery__CoerceToDomainValue *message); size_t pg_query__coerce_to_domain_value__get_packed_size (const PgQuery__CoerceToDomainValue *message); size_t pg_query__coerce_to_domain_value__pack (const PgQuery__CoerceToDomainValue *message, uint8_t *out); size_t pg_query__coerce_to_domain_value__pack_to_buffer (const PgQuery__CoerceToDomainValue *message, ProtobufCBuffer *buffer); PgQuery__CoerceToDomainValue * pg_query__coerce_to_domain_value__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__coerce_to_domain_value__free_unpacked (PgQuery__CoerceToDomainValue *message, ProtobufCAllocator *allocator); /* PgQuery__SetToDefault methods */ void pg_query__set_to_default__init (PgQuery__SetToDefault *message); size_t pg_query__set_to_default__get_packed_size (const PgQuery__SetToDefault *message); size_t pg_query__set_to_default__pack (const PgQuery__SetToDefault *message, uint8_t *out); size_t pg_query__set_to_default__pack_to_buffer (const PgQuery__SetToDefault *message, ProtobufCBuffer *buffer); PgQuery__SetToDefault * pg_query__set_to_default__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__set_to_default__free_unpacked (PgQuery__SetToDefault *message, ProtobufCAllocator *allocator); /* PgQuery__CurrentOfExpr methods */ void pg_query__current_of_expr__init (PgQuery__CurrentOfExpr *message); size_t pg_query__current_of_expr__get_packed_size (const PgQuery__CurrentOfExpr *message); size_t pg_query__current_of_expr__pack (const PgQuery__CurrentOfExpr *message, uint8_t *out); size_t pg_query__current_of_expr__pack_to_buffer (const PgQuery__CurrentOfExpr *message, ProtobufCBuffer *buffer); PgQuery__CurrentOfExpr * pg_query__current_of_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__current_of_expr__free_unpacked (PgQuery__CurrentOfExpr *message, ProtobufCAllocator *allocator); /* PgQuery__NextValueExpr methods */ void pg_query__next_value_expr__init (PgQuery__NextValueExpr *message); size_t pg_query__next_value_expr__get_packed_size (const PgQuery__NextValueExpr *message); size_t pg_query__next_value_expr__pack (const PgQuery__NextValueExpr *message, uint8_t *out); size_t pg_query__next_value_expr__pack_to_buffer (const PgQuery__NextValueExpr *message, ProtobufCBuffer *buffer); PgQuery__NextValueExpr * pg_query__next_value_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__next_value_expr__free_unpacked (PgQuery__NextValueExpr *message, ProtobufCAllocator *allocator); /* PgQuery__InferenceElem methods */ void pg_query__inference_elem__init (PgQuery__InferenceElem *message); size_t pg_query__inference_elem__get_packed_size (const PgQuery__InferenceElem *message); size_t pg_query__inference_elem__pack (const PgQuery__InferenceElem *message, uint8_t *out); size_t pg_query__inference_elem__pack_to_buffer (const PgQuery__InferenceElem *message, ProtobufCBuffer *buffer); PgQuery__InferenceElem * pg_query__inference_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__inference_elem__free_unpacked (PgQuery__InferenceElem *message, ProtobufCAllocator *allocator); /* PgQuery__TargetEntry methods */ void pg_query__target_entry__init (PgQuery__TargetEntry *message); size_t pg_query__target_entry__get_packed_size (const PgQuery__TargetEntry *message); size_t pg_query__target_entry__pack (const PgQuery__TargetEntry *message, uint8_t *out); size_t pg_query__target_entry__pack_to_buffer (const PgQuery__TargetEntry *message, ProtobufCBuffer *buffer); PgQuery__TargetEntry * pg_query__target_entry__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__target_entry__free_unpacked (PgQuery__TargetEntry *message, ProtobufCAllocator *allocator); /* PgQuery__RangeTblRef methods */ void pg_query__range_tbl_ref__init (PgQuery__RangeTblRef *message); size_t pg_query__range_tbl_ref__get_packed_size (const PgQuery__RangeTblRef *message); size_t pg_query__range_tbl_ref__pack (const PgQuery__RangeTblRef *message, uint8_t *out); size_t pg_query__range_tbl_ref__pack_to_buffer (const PgQuery__RangeTblRef *message, ProtobufCBuffer *buffer); PgQuery__RangeTblRef * pg_query__range_tbl_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__range_tbl_ref__free_unpacked (PgQuery__RangeTblRef *message, ProtobufCAllocator *allocator); /* PgQuery__JoinExpr methods */ void pg_query__join_expr__init (PgQuery__JoinExpr *message); size_t pg_query__join_expr__get_packed_size (const PgQuery__JoinExpr *message); size_t pg_query__join_expr__pack (const PgQuery__JoinExpr *message, uint8_t *out); size_t pg_query__join_expr__pack_to_buffer (const PgQuery__JoinExpr *message, ProtobufCBuffer *buffer); PgQuery__JoinExpr * pg_query__join_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__join_expr__free_unpacked (PgQuery__JoinExpr *message, ProtobufCAllocator *allocator); /* PgQuery__FromExpr methods */ void pg_query__from_expr__init (PgQuery__FromExpr *message); size_t pg_query__from_expr__get_packed_size (const PgQuery__FromExpr *message); size_t pg_query__from_expr__pack (const PgQuery__FromExpr *message, uint8_t *out); size_t pg_query__from_expr__pack_to_buffer (const PgQuery__FromExpr *message, ProtobufCBuffer *buffer); PgQuery__FromExpr * pg_query__from_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__from_expr__free_unpacked (PgQuery__FromExpr *message, ProtobufCAllocator *allocator); /* PgQuery__OnConflictExpr methods */ void pg_query__on_conflict_expr__init (PgQuery__OnConflictExpr *message); size_t pg_query__on_conflict_expr__get_packed_size (const PgQuery__OnConflictExpr *message); size_t pg_query__on_conflict_expr__pack (const PgQuery__OnConflictExpr *message, uint8_t *out); size_t pg_query__on_conflict_expr__pack_to_buffer (const PgQuery__OnConflictExpr *message, ProtobufCBuffer *buffer); PgQuery__OnConflictExpr * pg_query__on_conflict_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__on_conflict_expr__free_unpacked (PgQuery__OnConflictExpr *message, ProtobufCAllocator *allocator); /* PgQuery__IntoClause methods */ void pg_query__into_clause__init (PgQuery__IntoClause *message); size_t pg_query__into_clause__get_packed_size (const PgQuery__IntoClause *message); size_t pg_query__into_clause__pack (const PgQuery__IntoClause *message, uint8_t *out); size_t pg_query__into_clause__pack_to_buffer (const PgQuery__IntoClause *message, ProtobufCBuffer *buffer); PgQuery__IntoClause * pg_query__into_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__into_clause__free_unpacked (PgQuery__IntoClause *message, ProtobufCAllocator *allocator); /* PgQuery__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__RawStmt methods */ void pg_query__raw_stmt__init (PgQuery__RawStmt *message); size_t pg_query__raw_stmt__get_packed_size (const PgQuery__RawStmt *message); size_t pg_query__raw_stmt__pack (const PgQuery__RawStmt *message, uint8_t *out); size_t pg_query__raw_stmt__pack_to_buffer (const PgQuery__RawStmt *message, ProtobufCBuffer *buffer); PgQuery__RawStmt * pg_query__raw_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__raw_stmt__free_unpacked (PgQuery__RawStmt *message, ProtobufCAllocator *allocator); /* PgQuery__Query methods */ void pg_query__query__init (PgQuery__Query *message); size_t pg_query__query__get_packed_size (const PgQuery__Query *message); size_t pg_query__query__pack (const PgQuery__Query *message, uint8_t *out); size_t pg_query__query__pack_to_buffer (const PgQuery__Query *message, ProtobufCBuffer *buffer); PgQuery__Query * pg_query__query__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__query__free_unpacked (PgQuery__Query *message, ProtobufCAllocator *allocator); /* PgQuery__InsertStmt methods */ void pg_query__insert_stmt__init (PgQuery__InsertStmt *message); size_t pg_query__insert_stmt__get_packed_size (const PgQuery__InsertStmt *message); size_t pg_query__insert_stmt__pack (const PgQuery__InsertStmt *message, uint8_t *out); size_t pg_query__insert_stmt__pack_to_buffer (const PgQuery__InsertStmt *message, ProtobufCBuffer *buffer); PgQuery__InsertStmt * pg_query__insert_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__insert_stmt__free_unpacked (PgQuery__InsertStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DeleteStmt methods */ void pg_query__delete_stmt__init (PgQuery__DeleteStmt *message); size_t pg_query__delete_stmt__get_packed_size (const PgQuery__DeleteStmt *message); size_t pg_query__delete_stmt__pack (const PgQuery__DeleteStmt *message, uint8_t *out); size_t pg_query__delete_stmt__pack_to_buffer (const PgQuery__DeleteStmt *message, ProtobufCBuffer *buffer); PgQuery__DeleteStmt * pg_query__delete_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__delete_stmt__free_unpacked (PgQuery__DeleteStmt *message, ProtobufCAllocator *allocator); /* PgQuery__UpdateStmt methods */ void pg_query__update_stmt__init (PgQuery__UpdateStmt *message); size_t pg_query__update_stmt__get_packed_size (const PgQuery__UpdateStmt *message); size_t pg_query__update_stmt__pack (const PgQuery__UpdateStmt *message, uint8_t *out); size_t pg_query__update_stmt__pack_to_buffer (const PgQuery__UpdateStmt *message, ProtobufCBuffer *buffer); PgQuery__UpdateStmt * pg_query__update_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__update_stmt__free_unpacked (PgQuery__UpdateStmt *message, ProtobufCAllocator *allocator); /* PgQuery__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__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__AlterTableStmt methods */ void pg_query__alter_table_stmt__init (PgQuery__AlterTableStmt *message); size_t pg_query__alter_table_stmt__get_packed_size (const PgQuery__AlterTableStmt *message); size_t pg_query__alter_table_stmt__pack (const PgQuery__AlterTableStmt *message, uint8_t *out); size_t pg_query__alter_table_stmt__pack_to_buffer (const PgQuery__AlterTableStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterTableStmt * pg_query__alter_table_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_table_stmt__free_unpacked (PgQuery__AlterTableStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterTableCmd methods */ void pg_query__alter_table_cmd__init (PgQuery__AlterTableCmd *message); size_t pg_query__alter_table_cmd__get_packed_size (const PgQuery__AlterTableCmd *message); size_t pg_query__alter_table_cmd__pack (const PgQuery__AlterTableCmd *message, uint8_t *out); size_t pg_query__alter_table_cmd__pack_to_buffer (const PgQuery__AlterTableCmd *message, ProtobufCBuffer *buffer); PgQuery__AlterTableCmd * pg_query__alter_table_cmd__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_table_cmd__free_unpacked (PgQuery__AlterTableCmd *message, ProtobufCAllocator *allocator); /* PgQuery__AlterDomainStmt methods */ void pg_query__alter_domain_stmt__init (PgQuery__AlterDomainStmt *message); size_t pg_query__alter_domain_stmt__get_packed_size (const PgQuery__AlterDomainStmt *message); size_t pg_query__alter_domain_stmt__pack (const PgQuery__AlterDomainStmt *message, uint8_t *out); size_t pg_query__alter_domain_stmt__pack_to_buffer (const PgQuery__AlterDomainStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterDomainStmt * pg_query__alter_domain_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_domain_stmt__free_unpacked (PgQuery__AlterDomainStmt *message, ProtobufCAllocator *allocator); /* PgQuery__SetOperationStmt methods */ void pg_query__set_operation_stmt__init (PgQuery__SetOperationStmt *message); size_t pg_query__set_operation_stmt__get_packed_size (const PgQuery__SetOperationStmt *message); size_t pg_query__set_operation_stmt__pack (const PgQuery__SetOperationStmt *message, uint8_t *out); size_t pg_query__set_operation_stmt__pack_to_buffer (const PgQuery__SetOperationStmt *message, ProtobufCBuffer *buffer); PgQuery__SetOperationStmt * pg_query__set_operation_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__set_operation_stmt__free_unpacked (PgQuery__SetOperationStmt *message, ProtobufCAllocator *allocator); /* PgQuery__GrantStmt methods */ void pg_query__grant_stmt__init (PgQuery__GrantStmt *message); size_t pg_query__grant_stmt__get_packed_size (const PgQuery__GrantStmt *message); size_t pg_query__grant_stmt__pack (const PgQuery__GrantStmt *message, uint8_t *out); size_t pg_query__grant_stmt__pack_to_buffer (const PgQuery__GrantStmt *message, ProtobufCBuffer *buffer); PgQuery__GrantStmt * pg_query__grant_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__grant_stmt__free_unpacked (PgQuery__GrantStmt *message, ProtobufCAllocator *allocator); /* PgQuery__GrantRoleStmt methods */ void pg_query__grant_role_stmt__init (PgQuery__GrantRoleStmt *message); size_t pg_query__grant_role_stmt__get_packed_size (const PgQuery__GrantRoleStmt *message); size_t pg_query__grant_role_stmt__pack (const PgQuery__GrantRoleStmt *message, uint8_t *out); size_t pg_query__grant_role_stmt__pack_to_buffer (const PgQuery__GrantRoleStmt *message, ProtobufCBuffer *buffer); PgQuery__GrantRoleStmt * pg_query__grant_role_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__grant_role_stmt__free_unpacked (PgQuery__GrantRoleStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterDefaultPrivilegesStmt methods */ void pg_query__alter_default_privileges_stmt__init (PgQuery__AlterDefaultPrivilegesStmt *message); size_t pg_query__alter_default_privileges_stmt__get_packed_size (const PgQuery__AlterDefaultPrivilegesStmt *message); size_t pg_query__alter_default_privileges_stmt__pack (const PgQuery__AlterDefaultPrivilegesStmt *message, uint8_t *out); size_t pg_query__alter_default_privileges_stmt__pack_to_buffer (const PgQuery__AlterDefaultPrivilegesStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterDefaultPrivilegesStmt * pg_query__alter_default_privileges_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_default_privileges_stmt__free_unpacked (PgQuery__AlterDefaultPrivilegesStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ClosePortalStmt methods */ void pg_query__close_portal_stmt__init (PgQuery__ClosePortalStmt *message); size_t pg_query__close_portal_stmt__get_packed_size (const PgQuery__ClosePortalStmt *message); size_t pg_query__close_portal_stmt__pack (const PgQuery__ClosePortalStmt *message, uint8_t *out); size_t pg_query__close_portal_stmt__pack_to_buffer (const PgQuery__ClosePortalStmt *message, ProtobufCBuffer *buffer); PgQuery__ClosePortalStmt * pg_query__close_portal_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__close_portal_stmt__free_unpacked (PgQuery__ClosePortalStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ClusterStmt methods */ void pg_query__cluster_stmt__init (PgQuery__ClusterStmt *message); size_t pg_query__cluster_stmt__get_packed_size (const PgQuery__ClusterStmt *message); size_t pg_query__cluster_stmt__pack (const PgQuery__ClusterStmt *message, uint8_t *out); size_t pg_query__cluster_stmt__pack_to_buffer (const PgQuery__ClusterStmt *message, ProtobufCBuffer *buffer); PgQuery__ClusterStmt * pg_query__cluster_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__cluster_stmt__free_unpacked (PgQuery__ClusterStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CopyStmt methods */ void pg_query__copy_stmt__init (PgQuery__CopyStmt *message); size_t pg_query__copy_stmt__get_packed_size (const PgQuery__CopyStmt *message); size_t pg_query__copy_stmt__pack (const PgQuery__CopyStmt *message, uint8_t *out); size_t pg_query__copy_stmt__pack_to_buffer (const PgQuery__CopyStmt *message, ProtobufCBuffer *buffer); PgQuery__CopyStmt * pg_query__copy_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__copy_stmt__free_unpacked (PgQuery__CopyStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateStmt methods */ void pg_query__create_stmt__init (PgQuery__CreateStmt *message); size_t pg_query__create_stmt__get_packed_size (const PgQuery__CreateStmt *message); size_t pg_query__create_stmt__pack (const PgQuery__CreateStmt *message, uint8_t *out); size_t pg_query__create_stmt__pack_to_buffer (const PgQuery__CreateStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateStmt * pg_query__create_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_stmt__free_unpacked (PgQuery__CreateStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DefineStmt methods */ void pg_query__define_stmt__init (PgQuery__DefineStmt *message); size_t pg_query__define_stmt__get_packed_size (const PgQuery__DefineStmt *message); size_t pg_query__define_stmt__pack (const PgQuery__DefineStmt *message, uint8_t *out); size_t pg_query__define_stmt__pack_to_buffer (const PgQuery__DefineStmt *message, ProtobufCBuffer *buffer); PgQuery__DefineStmt * pg_query__define_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__define_stmt__free_unpacked (PgQuery__DefineStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DropStmt methods */ void pg_query__drop_stmt__init (PgQuery__DropStmt *message); size_t pg_query__drop_stmt__get_packed_size (const PgQuery__DropStmt *message); size_t pg_query__drop_stmt__pack (const PgQuery__DropStmt *message, uint8_t *out); size_t pg_query__drop_stmt__pack_to_buffer (const PgQuery__DropStmt *message, ProtobufCBuffer *buffer); PgQuery__DropStmt * pg_query__drop_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__drop_stmt__free_unpacked (PgQuery__DropStmt *message, ProtobufCAllocator *allocator); /* PgQuery__TruncateStmt methods */ void pg_query__truncate_stmt__init (PgQuery__TruncateStmt *message); size_t pg_query__truncate_stmt__get_packed_size (const PgQuery__TruncateStmt *message); size_t pg_query__truncate_stmt__pack (const PgQuery__TruncateStmt *message, uint8_t *out); size_t pg_query__truncate_stmt__pack_to_buffer (const PgQuery__TruncateStmt *message, ProtobufCBuffer *buffer); PgQuery__TruncateStmt * pg_query__truncate_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__truncate_stmt__free_unpacked (PgQuery__TruncateStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CommentStmt methods */ void pg_query__comment_stmt__init (PgQuery__CommentStmt *message); size_t pg_query__comment_stmt__get_packed_size (const PgQuery__CommentStmt *message); size_t pg_query__comment_stmt__pack (const PgQuery__CommentStmt *message, uint8_t *out); size_t pg_query__comment_stmt__pack_to_buffer (const PgQuery__CommentStmt *message, ProtobufCBuffer *buffer); PgQuery__CommentStmt * pg_query__comment_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__comment_stmt__free_unpacked (PgQuery__CommentStmt *message, ProtobufCAllocator *allocator); /* PgQuery__FetchStmt methods */ void pg_query__fetch_stmt__init (PgQuery__FetchStmt *message); size_t pg_query__fetch_stmt__get_packed_size (const PgQuery__FetchStmt *message); size_t pg_query__fetch_stmt__pack (const PgQuery__FetchStmt *message, uint8_t *out); size_t pg_query__fetch_stmt__pack_to_buffer (const PgQuery__FetchStmt *message, ProtobufCBuffer *buffer); PgQuery__FetchStmt * pg_query__fetch_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__fetch_stmt__free_unpacked (PgQuery__FetchStmt *message, ProtobufCAllocator *allocator); /* PgQuery__IndexStmt methods */ void pg_query__index_stmt__init (PgQuery__IndexStmt *message); size_t pg_query__index_stmt__get_packed_size (const PgQuery__IndexStmt *message); size_t pg_query__index_stmt__pack (const PgQuery__IndexStmt *message, uint8_t *out); size_t pg_query__index_stmt__pack_to_buffer (const PgQuery__IndexStmt *message, ProtobufCBuffer *buffer); PgQuery__IndexStmt * pg_query__index_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__index_stmt__free_unpacked (PgQuery__IndexStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateFunctionStmt methods */ void pg_query__create_function_stmt__init (PgQuery__CreateFunctionStmt *message); size_t pg_query__create_function_stmt__get_packed_size (const PgQuery__CreateFunctionStmt *message); size_t pg_query__create_function_stmt__pack (const PgQuery__CreateFunctionStmt *message, uint8_t *out); size_t pg_query__create_function_stmt__pack_to_buffer (const PgQuery__CreateFunctionStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateFunctionStmt * pg_query__create_function_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_function_stmt__free_unpacked (PgQuery__CreateFunctionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterFunctionStmt methods */ void pg_query__alter_function_stmt__init (PgQuery__AlterFunctionStmt *message); size_t pg_query__alter_function_stmt__get_packed_size (const PgQuery__AlterFunctionStmt *message); size_t pg_query__alter_function_stmt__pack (const PgQuery__AlterFunctionStmt *message, uint8_t *out); size_t pg_query__alter_function_stmt__pack_to_buffer (const PgQuery__AlterFunctionStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterFunctionStmt * pg_query__alter_function_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_function_stmt__free_unpacked (PgQuery__AlterFunctionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DoStmt methods */ void pg_query__do_stmt__init (PgQuery__DoStmt *message); size_t pg_query__do_stmt__get_packed_size (const PgQuery__DoStmt *message); size_t pg_query__do_stmt__pack (const PgQuery__DoStmt *message, uint8_t *out); size_t pg_query__do_stmt__pack_to_buffer (const PgQuery__DoStmt *message, ProtobufCBuffer *buffer); PgQuery__DoStmt * pg_query__do_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__do_stmt__free_unpacked (PgQuery__DoStmt *message, ProtobufCAllocator *allocator); /* PgQuery__RenameStmt methods */ void pg_query__rename_stmt__init (PgQuery__RenameStmt *message); size_t pg_query__rename_stmt__get_packed_size (const PgQuery__RenameStmt *message); size_t pg_query__rename_stmt__pack (const PgQuery__RenameStmt *message, uint8_t *out); size_t pg_query__rename_stmt__pack_to_buffer (const PgQuery__RenameStmt *message, ProtobufCBuffer *buffer); PgQuery__RenameStmt * pg_query__rename_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__rename_stmt__free_unpacked (PgQuery__RenameStmt *message, ProtobufCAllocator *allocator); /* PgQuery__RuleStmt methods */ void pg_query__rule_stmt__init (PgQuery__RuleStmt *message); size_t pg_query__rule_stmt__get_packed_size (const PgQuery__RuleStmt *message); size_t pg_query__rule_stmt__pack (const PgQuery__RuleStmt *message, uint8_t *out); size_t pg_query__rule_stmt__pack_to_buffer (const PgQuery__RuleStmt *message, ProtobufCBuffer *buffer); PgQuery__RuleStmt * pg_query__rule_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__rule_stmt__free_unpacked (PgQuery__RuleStmt *message, ProtobufCAllocator *allocator); /* PgQuery__NotifyStmt methods */ void pg_query__notify_stmt__init (PgQuery__NotifyStmt *message); size_t pg_query__notify_stmt__get_packed_size (const PgQuery__NotifyStmt *message); size_t pg_query__notify_stmt__pack (const PgQuery__NotifyStmt *message, uint8_t *out); size_t pg_query__notify_stmt__pack_to_buffer (const PgQuery__NotifyStmt *message, ProtobufCBuffer *buffer); PgQuery__NotifyStmt * pg_query__notify_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__notify_stmt__free_unpacked (PgQuery__NotifyStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ListenStmt methods */ void pg_query__listen_stmt__init (PgQuery__ListenStmt *message); size_t pg_query__listen_stmt__get_packed_size (const PgQuery__ListenStmt *message); size_t pg_query__listen_stmt__pack (const PgQuery__ListenStmt *message, uint8_t *out); size_t pg_query__listen_stmt__pack_to_buffer (const PgQuery__ListenStmt *message, ProtobufCBuffer *buffer); PgQuery__ListenStmt * pg_query__listen_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__listen_stmt__free_unpacked (PgQuery__ListenStmt *message, ProtobufCAllocator *allocator); /* PgQuery__UnlistenStmt methods */ void pg_query__unlisten_stmt__init (PgQuery__UnlistenStmt *message); size_t pg_query__unlisten_stmt__get_packed_size (const PgQuery__UnlistenStmt *message); size_t pg_query__unlisten_stmt__pack (const PgQuery__UnlistenStmt *message, uint8_t *out); size_t pg_query__unlisten_stmt__pack_to_buffer (const PgQuery__UnlistenStmt *message, ProtobufCBuffer *buffer); PgQuery__UnlistenStmt * pg_query__unlisten_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__unlisten_stmt__free_unpacked (PgQuery__UnlistenStmt *message, ProtobufCAllocator *allocator); /* PgQuery__TransactionStmt methods */ void pg_query__transaction_stmt__init (PgQuery__TransactionStmt *message); size_t pg_query__transaction_stmt__get_packed_size (const PgQuery__TransactionStmt *message); size_t pg_query__transaction_stmt__pack (const PgQuery__TransactionStmt *message, uint8_t *out); size_t pg_query__transaction_stmt__pack_to_buffer (const PgQuery__TransactionStmt *message, ProtobufCBuffer *buffer); PgQuery__TransactionStmt * pg_query__transaction_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__transaction_stmt__free_unpacked (PgQuery__TransactionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ViewStmt methods */ void pg_query__view_stmt__init (PgQuery__ViewStmt *message); size_t pg_query__view_stmt__get_packed_size (const PgQuery__ViewStmt *message); size_t pg_query__view_stmt__pack (const PgQuery__ViewStmt *message, uint8_t *out); size_t pg_query__view_stmt__pack_to_buffer (const PgQuery__ViewStmt *message, ProtobufCBuffer *buffer); PgQuery__ViewStmt * pg_query__view_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__view_stmt__free_unpacked (PgQuery__ViewStmt *message, ProtobufCAllocator *allocator); /* PgQuery__LoadStmt methods */ void pg_query__load_stmt__init (PgQuery__LoadStmt *message); size_t pg_query__load_stmt__get_packed_size (const PgQuery__LoadStmt *message); size_t pg_query__load_stmt__pack (const PgQuery__LoadStmt *message, uint8_t *out); size_t pg_query__load_stmt__pack_to_buffer (const PgQuery__LoadStmt *message, ProtobufCBuffer *buffer); PgQuery__LoadStmt * pg_query__load_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__load_stmt__free_unpacked (PgQuery__LoadStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateDomainStmt methods */ void pg_query__create_domain_stmt__init (PgQuery__CreateDomainStmt *message); size_t pg_query__create_domain_stmt__get_packed_size (const PgQuery__CreateDomainStmt *message); size_t pg_query__create_domain_stmt__pack (const PgQuery__CreateDomainStmt *message, uint8_t *out); size_t pg_query__create_domain_stmt__pack_to_buffer (const PgQuery__CreateDomainStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateDomainStmt * pg_query__create_domain_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_domain_stmt__free_unpacked (PgQuery__CreateDomainStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreatedbStmt methods */ void pg_query__createdb_stmt__init (PgQuery__CreatedbStmt *message); size_t pg_query__createdb_stmt__get_packed_size (const PgQuery__CreatedbStmt *message); size_t pg_query__createdb_stmt__pack (const PgQuery__CreatedbStmt *message, uint8_t *out); size_t pg_query__createdb_stmt__pack_to_buffer (const PgQuery__CreatedbStmt *message, ProtobufCBuffer *buffer); PgQuery__CreatedbStmt * pg_query__createdb_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__createdb_stmt__free_unpacked (PgQuery__CreatedbStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DropdbStmt methods */ void pg_query__dropdb_stmt__init (PgQuery__DropdbStmt *message); size_t pg_query__dropdb_stmt__get_packed_size (const PgQuery__DropdbStmt *message); size_t pg_query__dropdb_stmt__pack (const PgQuery__DropdbStmt *message, uint8_t *out); size_t pg_query__dropdb_stmt__pack_to_buffer (const PgQuery__DropdbStmt *message, ProtobufCBuffer *buffer); PgQuery__DropdbStmt * pg_query__dropdb_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__dropdb_stmt__free_unpacked (PgQuery__DropdbStmt *message, ProtobufCAllocator *allocator); /* PgQuery__VacuumStmt methods */ void pg_query__vacuum_stmt__init (PgQuery__VacuumStmt *message); size_t pg_query__vacuum_stmt__get_packed_size (const PgQuery__VacuumStmt *message); size_t pg_query__vacuum_stmt__pack (const PgQuery__VacuumStmt *message, uint8_t *out); size_t pg_query__vacuum_stmt__pack_to_buffer (const PgQuery__VacuumStmt *message, ProtobufCBuffer *buffer); PgQuery__VacuumStmt * pg_query__vacuum_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__vacuum_stmt__free_unpacked (PgQuery__VacuumStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ExplainStmt methods */ void pg_query__explain_stmt__init (PgQuery__ExplainStmt *message); size_t pg_query__explain_stmt__get_packed_size (const PgQuery__ExplainStmt *message); size_t pg_query__explain_stmt__pack (const PgQuery__ExplainStmt *message, uint8_t *out); size_t pg_query__explain_stmt__pack_to_buffer (const PgQuery__ExplainStmt *message, ProtobufCBuffer *buffer); PgQuery__ExplainStmt * pg_query__explain_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__explain_stmt__free_unpacked (PgQuery__ExplainStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateTableAsStmt methods */ void pg_query__create_table_as_stmt__init (PgQuery__CreateTableAsStmt *message); size_t pg_query__create_table_as_stmt__get_packed_size (const PgQuery__CreateTableAsStmt *message); size_t pg_query__create_table_as_stmt__pack (const PgQuery__CreateTableAsStmt *message, uint8_t *out); size_t pg_query__create_table_as_stmt__pack_to_buffer (const PgQuery__CreateTableAsStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateTableAsStmt * pg_query__create_table_as_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_table_as_stmt__free_unpacked (PgQuery__CreateTableAsStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateSeqStmt methods */ void pg_query__create_seq_stmt__init (PgQuery__CreateSeqStmt *message); size_t pg_query__create_seq_stmt__get_packed_size (const PgQuery__CreateSeqStmt *message); size_t pg_query__create_seq_stmt__pack (const PgQuery__CreateSeqStmt *message, uint8_t *out); size_t pg_query__create_seq_stmt__pack_to_buffer (const PgQuery__CreateSeqStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateSeqStmt * pg_query__create_seq_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_seq_stmt__free_unpacked (PgQuery__CreateSeqStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterSeqStmt methods */ void pg_query__alter_seq_stmt__init (PgQuery__AlterSeqStmt *message); size_t pg_query__alter_seq_stmt__get_packed_size (const PgQuery__AlterSeqStmt *message); size_t pg_query__alter_seq_stmt__pack (const PgQuery__AlterSeqStmt *message, uint8_t *out); size_t pg_query__alter_seq_stmt__pack_to_buffer (const PgQuery__AlterSeqStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterSeqStmt * pg_query__alter_seq_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_seq_stmt__free_unpacked (PgQuery__AlterSeqStmt *message, ProtobufCAllocator *allocator); /* PgQuery__VariableSetStmt methods */ void pg_query__variable_set_stmt__init (PgQuery__VariableSetStmt *message); size_t pg_query__variable_set_stmt__get_packed_size (const PgQuery__VariableSetStmt *message); size_t pg_query__variable_set_stmt__pack (const PgQuery__VariableSetStmt *message, uint8_t *out); size_t pg_query__variable_set_stmt__pack_to_buffer (const PgQuery__VariableSetStmt *message, ProtobufCBuffer *buffer); PgQuery__VariableSetStmt * pg_query__variable_set_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__variable_set_stmt__free_unpacked (PgQuery__VariableSetStmt *message, ProtobufCAllocator *allocator); /* PgQuery__VariableShowStmt methods */ void pg_query__variable_show_stmt__init (PgQuery__VariableShowStmt *message); size_t pg_query__variable_show_stmt__get_packed_size (const PgQuery__VariableShowStmt *message); size_t pg_query__variable_show_stmt__pack (const PgQuery__VariableShowStmt *message, uint8_t *out); size_t pg_query__variable_show_stmt__pack_to_buffer (const PgQuery__VariableShowStmt *message, ProtobufCBuffer *buffer); PgQuery__VariableShowStmt * pg_query__variable_show_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__variable_show_stmt__free_unpacked (PgQuery__VariableShowStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DiscardStmt methods */ void pg_query__discard_stmt__init (PgQuery__DiscardStmt *message); size_t pg_query__discard_stmt__get_packed_size (const PgQuery__DiscardStmt *message); size_t pg_query__discard_stmt__pack (const PgQuery__DiscardStmt *message, uint8_t *out); size_t pg_query__discard_stmt__pack_to_buffer (const PgQuery__DiscardStmt *message, ProtobufCBuffer *buffer); PgQuery__DiscardStmt * pg_query__discard_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__discard_stmt__free_unpacked (PgQuery__DiscardStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateTrigStmt methods */ void pg_query__create_trig_stmt__init (PgQuery__CreateTrigStmt *message); size_t pg_query__create_trig_stmt__get_packed_size (const PgQuery__CreateTrigStmt *message); size_t pg_query__create_trig_stmt__pack (const PgQuery__CreateTrigStmt *message, uint8_t *out); size_t pg_query__create_trig_stmt__pack_to_buffer (const PgQuery__CreateTrigStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateTrigStmt * pg_query__create_trig_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_trig_stmt__free_unpacked (PgQuery__CreateTrigStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreatePLangStmt methods */ void pg_query__create_plang_stmt__init (PgQuery__CreatePLangStmt *message); size_t pg_query__create_plang_stmt__get_packed_size (const PgQuery__CreatePLangStmt *message); size_t pg_query__create_plang_stmt__pack (const PgQuery__CreatePLangStmt *message, uint8_t *out); size_t pg_query__create_plang_stmt__pack_to_buffer (const PgQuery__CreatePLangStmt *message, ProtobufCBuffer *buffer); PgQuery__CreatePLangStmt * pg_query__create_plang_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_plang_stmt__free_unpacked (PgQuery__CreatePLangStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateRoleStmt methods */ void pg_query__create_role_stmt__init (PgQuery__CreateRoleStmt *message); size_t pg_query__create_role_stmt__get_packed_size (const PgQuery__CreateRoleStmt *message); size_t pg_query__create_role_stmt__pack (const PgQuery__CreateRoleStmt *message, uint8_t *out); size_t pg_query__create_role_stmt__pack_to_buffer (const PgQuery__CreateRoleStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateRoleStmt * pg_query__create_role_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_role_stmt__free_unpacked (PgQuery__CreateRoleStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterRoleStmt methods */ void pg_query__alter_role_stmt__init (PgQuery__AlterRoleStmt *message); size_t pg_query__alter_role_stmt__get_packed_size (const PgQuery__AlterRoleStmt *message); size_t pg_query__alter_role_stmt__pack (const PgQuery__AlterRoleStmt *message, uint8_t *out); size_t pg_query__alter_role_stmt__pack_to_buffer (const PgQuery__AlterRoleStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterRoleStmt * pg_query__alter_role_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_role_stmt__free_unpacked (PgQuery__AlterRoleStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DropRoleStmt methods */ void pg_query__drop_role_stmt__init (PgQuery__DropRoleStmt *message); size_t pg_query__drop_role_stmt__get_packed_size (const PgQuery__DropRoleStmt *message); size_t pg_query__drop_role_stmt__pack (const PgQuery__DropRoleStmt *message, uint8_t *out); size_t pg_query__drop_role_stmt__pack_to_buffer (const PgQuery__DropRoleStmt *message, ProtobufCBuffer *buffer); PgQuery__DropRoleStmt * pg_query__drop_role_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__drop_role_stmt__free_unpacked (PgQuery__DropRoleStmt *message, ProtobufCAllocator *allocator); /* PgQuery__LockStmt methods */ void pg_query__lock_stmt__init (PgQuery__LockStmt *message); size_t pg_query__lock_stmt__get_packed_size (const PgQuery__LockStmt *message); size_t pg_query__lock_stmt__pack (const PgQuery__LockStmt *message, uint8_t *out); size_t pg_query__lock_stmt__pack_to_buffer (const PgQuery__LockStmt *message, ProtobufCBuffer *buffer); PgQuery__LockStmt * pg_query__lock_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__lock_stmt__free_unpacked (PgQuery__LockStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ConstraintsSetStmt methods */ void pg_query__constraints_set_stmt__init (PgQuery__ConstraintsSetStmt *message); size_t pg_query__constraints_set_stmt__get_packed_size (const PgQuery__ConstraintsSetStmt *message); size_t pg_query__constraints_set_stmt__pack (const PgQuery__ConstraintsSetStmt *message, uint8_t *out); size_t pg_query__constraints_set_stmt__pack_to_buffer (const PgQuery__ConstraintsSetStmt *message, ProtobufCBuffer *buffer); PgQuery__ConstraintsSetStmt * pg_query__constraints_set_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__constraints_set_stmt__free_unpacked (PgQuery__ConstraintsSetStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ReindexStmt methods */ void pg_query__reindex_stmt__init (PgQuery__ReindexStmt *message); size_t pg_query__reindex_stmt__get_packed_size (const PgQuery__ReindexStmt *message); size_t pg_query__reindex_stmt__pack (const PgQuery__ReindexStmt *message, uint8_t *out); size_t pg_query__reindex_stmt__pack_to_buffer (const PgQuery__ReindexStmt *message, ProtobufCBuffer *buffer); PgQuery__ReindexStmt * pg_query__reindex_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__reindex_stmt__free_unpacked (PgQuery__ReindexStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CheckPointStmt methods */ void pg_query__check_point_stmt__init (PgQuery__CheckPointStmt *message); size_t pg_query__check_point_stmt__get_packed_size (const PgQuery__CheckPointStmt *message); size_t pg_query__check_point_stmt__pack (const PgQuery__CheckPointStmt *message, uint8_t *out); size_t pg_query__check_point_stmt__pack_to_buffer (const PgQuery__CheckPointStmt *message, ProtobufCBuffer *buffer); PgQuery__CheckPointStmt * pg_query__check_point_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__check_point_stmt__free_unpacked (PgQuery__CheckPointStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateSchemaStmt methods */ void pg_query__create_schema_stmt__init (PgQuery__CreateSchemaStmt *message); size_t pg_query__create_schema_stmt__get_packed_size (const PgQuery__CreateSchemaStmt *message); size_t pg_query__create_schema_stmt__pack (const PgQuery__CreateSchemaStmt *message, uint8_t *out); size_t pg_query__create_schema_stmt__pack_to_buffer (const PgQuery__CreateSchemaStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateSchemaStmt * pg_query__create_schema_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_schema_stmt__free_unpacked (PgQuery__CreateSchemaStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterDatabaseStmt methods */ void pg_query__alter_database_stmt__init (PgQuery__AlterDatabaseStmt *message); size_t pg_query__alter_database_stmt__get_packed_size (const PgQuery__AlterDatabaseStmt *message); size_t pg_query__alter_database_stmt__pack (const PgQuery__AlterDatabaseStmt *message, uint8_t *out); size_t pg_query__alter_database_stmt__pack_to_buffer (const PgQuery__AlterDatabaseStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterDatabaseStmt * pg_query__alter_database_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_database_stmt__free_unpacked (PgQuery__AlterDatabaseStmt *message, ProtobufCAllocator *allocator); /* PgQuery__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__AlterRoleSetStmt methods */ void pg_query__alter_role_set_stmt__init (PgQuery__AlterRoleSetStmt *message); size_t pg_query__alter_role_set_stmt__get_packed_size (const PgQuery__AlterRoleSetStmt *message); size_t pg_query__alter_role_set_stmt__pack (const PgQuery__AlterRoleSetStmt *message, uint8_t *out); size_t pg_query__alter_role_set_stmt__pack_to_buffer (const PgQuery__AlterRoleSetStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterRoleSetStmt * pg_query__alter_role_set_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_role_set_stmt__free_unpacked (PgQuery__AlterRoleSetStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateConversionStmt methods */ void pg_query__create_conversion_stmt__init (PgQuery__CreateConversionStmt *message); size_t pg_query__create_conversion_stmt__get_packed_size (const PgQuery__CreateConversionStmt *message); size_t pg_query__create_conversion_stmt__pack (const PgQuery__CreateConversionStmt *message, uint8_t *out); size_t pg_query__create_conversion_stmt__pack_to_buffer (const PgQuery__CreateConversionStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateConversionStmt * pg_query__create_conversion_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_conversion_stmt__free_unpacked (PgQuery__CreateConversionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateCastStmt methods */ void pg_query__create_cast_stmt__init (PgQuery__CreateCastStmt *message); size_t pg_query__create_cast_stmt__get_packed_size (const PgQuery__CreateCastStmt *message); size_t pg_query__create_cast_stmt__pack (const PgQuery__CreateCastStmt *message, uint8_t *out); size_t pg_query__create_cast_stmt__pack_to_buffer (const PgQuery__CreateCastStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateCastStmt * pg_query__create_cast_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_cast_stmt__free_unpacked (PgQuery__CreateCastStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateOpClassStmt methods */ void pg_query__create_op_class_stmt__init (PgQuery__CreateOpClassStmt *message); size_t pg_query__create_op_class_stmt__get_packed_size (const PgQuery__CreateOpClassStmt *message); size_t pg_query__create_op_class_stmt__pack (const PgQuery__CreateOpClassStmt *message, uint8_t *out); size_t pg_query__create_op_class_stmt__pack_to_buffer (const PgQuery__CreateOpClassStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateOpClassStmt * pg_query__create_op_class_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_op_class_stmt__free_unpacked (PgQuery__CreateOpClassStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateOpFamilyStmt methods */ void pg_query__create_op_family_stmt__init (PgQuery__CreateOpFamilyStmt *message); size_t pg_query__create_op_family_stmt__get_packed_size (const PgQuery__CreateOpFamilyStmt *message); size_t pg_query__create_op_family_stmt__pack (const PgQuery__CreateOpFamilyStmt *message, uint8_t *out); size_t pg_query__create_op_family_stmt__pack_to_buffer (const PgQuery__CreateOpFamilyStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateOpFamilyStmt * pg_query__create_op_family_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_op_family_stmt__free_unpacked (PgQuery__CreateOpFamilyStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterOpFamilyStmt methods */ void pg_query__alter_op_family_stmt__init (PgQuery__AlterOpFamilyStmt *message); size_t pg_query__alter_op_family_stmt__get_packed_size (const PgQuery__AlterOpFamilyStmt *message); size_t pg_query__alter_op_family_stmt__pack (const PgQuery__AlterOpFamilyStmt *message, uint8_t *out); size_t pg_query__alter_op_family_stmt__pack_to_buffer (const PgQuery__AlterOpFamilyStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterOpFamilyStmt * pg_query__alter_op_family_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_op_family_stmt__free_unpacked (PgQuery__AlterOpFamilyStmt *message, ProtobufCAllocator *allocator); /* PgQuery__PrepareStmt methods */ void pg_query__prepare_stmt__init (PgQuery__PrepareStmt *message); size_t pg_query__prepare_stmt__get_packed_size (const PgQuery__PrepareStmt *message); size_t pg_query__prepare_stmt__pack (const PgQuery__PrepareStmt *message, uint8_t *out); size_t pg_query__prepare_stmt__pack_to_buffer (const PgQuery__PrepareStmt *message, ProtobufCBuffer *buffer); PgQuery__PrepareStmt * pg_query__prepare_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__prepare_stmt__free_unpacked (PgQuery__PrepareStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ExecuteStmt methods */ void pg_query__execute_stmt__init (PgQuery__ExecuteStmt *message); size_t pg_query__execute_stmt__get_packed_size (const PgQuery__ExecuteStmt *message); size_t pg_query__execute_stmt__pack (const PgQuery__ExecuteStmt *message, uint8_t *out); size_t pg_query__execute_stmt__pack_to_buffer (const PgQuery__ExecuteStmt *message, ProtobufCBuffer *buffer); PgQuery__ExecuteStmt * pg_query__execute_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__execute_stmt__free_unpacked (PgQuery__ExecuteStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DeallocateStmt methods */ void pg_query__deallocate_stmt__init (PgQuery__DeallocateStmt *message); size_t pg_query__deallocate_stmt__get_packed_size (const PgQuery__DeallocateStmt *message); size_t pg_query__deallocate_stmt__pack (const PgQuery__DeallocateStmt *message, uint8_t *out); size_t pg_query__deallocate_stmt__pack_to_buffer (const PgQuery__DeallocateStmt *message, ProtobufCBuffer *buffer); PgQuery__DeallocateStmt * pg_query__deallocate_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__deallocate_stmt__free_unpacked (PgQuery__DeallocateStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DeclareCursorStmt methods */ void pg_query__declare_cursor_stmt__init (PgQuery__DeclareCursorStmt *message); size_t pg_query__declare_cursor_stmt__get_packed_size (const PgQuery__DeclareCursorStmt *message); size_t pg_query__declare_cursor_stmt__pack (const PgQuery__DeclareCursorStmt *message, uint8_t *out); size_t pg_query__declare_cursor_stmt__pack_to_buffer (const PgQuery__DeclareCursorStmt *message, ProtobufCBuffer *buffer); PgQuery__DeclareCursorStmt * pg_query__declare_cursor_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__declare_cursor_stmt__free_unpacked (PgQuery__DeclareCursorStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateTableSpaceStmt methods */ void pg_query__create_table_space_stmt__init (PgQuery__CreateTableSpaceStmt *message); size_t pg_query__create_table_space_stmt__get_packed_size (const PgQuery__CreateTableSpaceStmt *message); size_t pg_query__create_table_space_stmt__pack (const PgQuery__CreateTableSpaceStmt *message, uint8_t *out); size_t pg_query__create_table_space_stmt__pack_to_buffer (const PgQuery__CreateTableSpaceStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateTableSpaceStmt * pg_query__create_table_space_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_table_space_stmt__free_unpacked (PgQuery__CreateTableSpaceStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DropTableSpaceStmt methods */ void pg_query__drop_table_space_stmt__init (PgQuery__DropTableSpaceStmt *message); size_t pg_query__drop_table_space_stmt__get_packed_size (const PgQuery__DropTableSpaceStmt *message); size_t pg_query__drop_table_space_stmt__pack (const PgQuery__DropTableSpaceStmt *message, uint8_t *out); size_t pg_query__drop_table_space_stmt__pack_to_buffer (const PgQuery__DropTableSpaceStmt *message, ProtobufCBuffer *buffer); PgQuery__DropTableSpaceStmt * pg_query__drop_table_space_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__drop_table_space_stmt__free_unpacked (PgQuery__DropTableSpaceStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterObjectDependsStmt methods */ void pg_query__alter_object_depends_stmt__init (PgQuery__AlterObjectDependsStmt *message); size_t pg_query__alter_object_depends_stmt__get_packed_size (const PgQuery__AlterObjectDependsStmt *message); size_t pg_query__alter_object_depends_stmt__pack (const PgQuery__AlterObjectDependsStmt *message, uint8_t *out); size_t pg_query__alter_object_depends_stmt__pack_to_buffer (const PgQuery__AlterObjectDependsStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterObjectDependsStmt * pg_query__alter_object_depends_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_object_depends_stmt__free_unpacked (PgQuery__AlterObjectDependsStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterObjectSchemaStmt methods */ void pg_query__alter_object_schema_stmt__init (PgQuery__AlterObjectSchemaStmt *message); size_t pg_query__alter_object_schema_stmt__get_packed_size (const PgQuery__AlterObjectSchemaStmt *message); size_t pg_query__alter_object_schema_stmt__pack (const PgQuery__AlterObjectSchemaStmt *message, uint8_t *out); size_t pg_query__alter_object_schema_stmt__pack_to_buffer (const PgQuery__AlterObjectSchemaStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterObjectSchemaStmt * pg_query__alter_object_schema_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_object_schema_stmt__free_unpacked (PgQuery__AlterObjectSchemaStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterOwnerStmt methods */ void pg_query__alter_owner_stmt__init (PgQuery__AlterOwnerStmt *message); size_t pg_query__alter_owner_stmt__get_packed_size (const PgQuery__AlterOwnerStmt *message); size_t pg_query__alter_owner_stmt__pack (const PgQuery__AlterOwnerStmt *message, uint8_t *out); size_t pg_query__alter_owner_stmt__pack_to_buffer (const PgQuery__AlterOwnerStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterOwnerStmt * pg_query__alter_owner_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_owner_stmt__free_unpacked (PgQuery__AlterOwnerStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterOperatorStmt methods */ void pg_query__alter_operator_stmt__init (PgQuery__AlterOperatorStmt *message); size_t pg_query__alter_operator_stmt__get_packed_size (const PgQuery__AlterOperatorStmt *message); size_t pg_query__alter_operator_stmt__pack (const PgQuery__AlterOperatorStmt *message, uint8_t *out); size_t pg_query__alter_operator_stmt__pack_to_buffer (const PgQuery__AlterOperatorStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterOperatorStmt * pg_query__alter_operator_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_operator_stmt__free_unpacked (PgQuery__AlterOperatorStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterTypeStmt methods */ void pg_query__alter_type_stmt__init (PgQuery__AlterTypeStmt *message); size_t pg_query__alter_type_stmt__get_packed_size (const PgQuery__AlterTypeStmt *message); size_t pg_query__alter_type_stmt__pack (const PgQuery__AlterTypeStmt *message, uint8_t *out); size_t pg_query__alter_type_stmt__pack_to_buffer (const PgQuery__AlterTypeStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterTypeStmt * pg_query__alter_type_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_type_stmt__free_unpacked (PgQuery__AlterTypeStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DropOwnedStmt methods */ void pg_query__drop_owned_stmt__init (PgQuery__DropOwnedStmt *message); size_t pg_query__drop_owned_stmt__get_packed_size (const PgQuery__DropOwnedStmt *message); size_t pg_query__drop_owned_stmt__pack (const PgQuery__DropOwnedStmt *message, uint8_t *out); size_t pg_query__drop_owned_stmt__pack_to_buffer (const PgQuery__DropOwnedStmt *message, ProtobufCBuffer *buffer); PgQuery__DropOwnedStmt * pg_query__drop_owned_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__drop_owned_stmt__free_unpacked (PgQuery__DropOwnedStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ReassignOwnedStmt methods */ void pg_query__reassign_owned_stmt__init (PgQuery__ReassignOwnedStmt *message); size_t pg_query__reassign_owned_stmt__get_packed_size (const PgQuery__ReassignOwnedStmt *message); size_t pg_query__reassign_owned_stmt__pack (const PgQuery__ReassignOwnedStmt *message, uint8_t *out); size_t pg_query__reassign_owned_stmt__pack_to_buffer (const PgQuery__ReassignOwnedStmt *message, ProtobufCBuffer *buffer); PgQuery__ReassignOwnedStmt * pg_query__reassign_owned_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__reassign_owned_stmt__free_unpacked (PgQuery__ReassignOwnedStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CompositeTypeStmt methods */ void pg_query__composite_type_stmt__init (PgQuery__CompositeTypeStmt *message); size_t pg_query__composite_type_stmt__get_packed_size (const PgQuery__CompositeTypeStmt *message); size_t pg_query__composite_type_stmt__pack (const PgQuery__CompositeTypeStmt *message, uint8_t *out); size_t pg_query__composite_type_stmt__pack_to_buffer (const PgQuery__CompositeTypeStmt *message, ProtobufCBuffer *buffer); PgQuery__CompositeTypeStmt * pg_query__composite_type_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__composite_type_stmt__free_unpacked (PgQuery__CompositeTypeStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateEnumStmt methods */ void pg_query__create_enum_stmt__init (PgQuery__CreateEnumStmt *message); size_t pg_query__create_enum_stmt__get_packed_size (const PgQuery__CreateEnumStmt *message); size_t pg_query__create_enum_stmt__pack (const PgQuery__CreateEnumStmt *message, uint8_t *out); size_t pg_query__create_enum_stmt__pack_to_buffer (const PgQuery__CreateEnumStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateEnumStmt * pg_query__create_enum_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_enum_stmt__free_unpacked (PgQuery__CreateEnumStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateRangeStmt methods */ void pg_query__create_range_stmt__init (PgQuery__CreateRangeStmt *message); size_t pg_query__create_range_stmt__get_packed_size (const PgQuery__CreateRangeStmt *message); size_t pg_query__create_range_stmt__pack (const PgQuery__CreateRangeStmt *message, uint8_t *out); size_t pg_query__create_range_stmt__pack_to_buffer (const PgQuery__CreateRangeStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateRangeStmt * pg_query__create_range_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_range_stmt__free_unpacked (PgQuery__CreateRangeStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterEnumStmt methods */ void pg_query__alter_enum_stmt__init (PgQuery__AlterEnumStmt *message); size_t pg_query__alter_enum_stmt__get_packed_size (const PgQuery__AlterEnumStmt *message); size_t pg_query__alter_enum_stmt__pack (const PgQuery__AlterEnumStmt *message, uint8_t *out); size_t pg_query__alter_enum_stmt__pack_to_buffer (const PgQuery__AlterEnumStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterEnumStmt * pg_query__alter_enum_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_enum_stmt__free_unpacked (PgQuery__AlterEnumStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterTSDictionaryStmt methods */ void pg_query__alter_tsdictionary_stmt__init (PgQuery__AlterTSDictionaryStmt *message); size_t pg_query__alter_tsdictionary_stmt__get_packed_size (const PgQuery__AlterTSDictionaryStmt *message); size_t pg_query__alter_tsdictionary_stmt__pack (const PgQuery__AlterTSDictionaryStmt *message, uint8_t *out); size_t pg_query__alter_tsdictionary_stmt__pack_to_buffer (const PgQuery__AlterTSDictionaryStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterTSDictionaryStmt * pg_query__alter_tsdictionary_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_tsdictionary_stmt__free_unpacked (PgQuery__AlterTSDictionaryStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterTSConfigurationStmt methods */ void pg_query__alter_tsconfiguration_stmt__init (PgQuery__AlterTSConfigurationStmt *message); size_t pg_query__alter_tsconfiguration_stmt__get_packed_size (const PgQuery__AlterTSConfigurationStmt *message); size_t pg_query__alter_tsconfiguration_stmt__pack (const PgQuery__AlterTSConfigurationStmt *message, uint8_t *out); size_t pg_query__alter_tsconfiguration_stmt__pack_to_buffer (const PgQuery__AlterTSConfigurationStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterTSConfigurationStmt * pg_query__alter_tsconfiguration_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_tsconfiguration_stmt__free_unpacked (PgQuery__AlterTSConfigurationStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateFdwStmt methods */ void pg_query__create_fdw_stmt__init (PgQuery__CreateFdwStmt *message); size_t pg_query__create_fdw_stmt__get_packed_size (const PgQuery__CreateFdwStmt *message); size_t pg_query__create_fdw_stmt__pack (const PgQuery__CreateFdwStmt *message, uint8_t *out); size_t pg_query__create_fdw_stmt__pack_to_buffer (const PgQuery__CreateFdwStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateFdwStmt * pg_query__create_fdw_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_fdw_stmt__free_unpacked (PgQuery__CreateFdwStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterFdwStmt methods */ void pg_query__alter_fdw_stmt__init (PgQuery__AlterFdwStmt *message); size_t pg_query__alter_fdw_stmt__get_packed_size (const PgQuery__AlterFdwStmt *message); size_t pg_query__alter_fdw_stmt__pack (const PgQuery__AlterFdwStmt *message, uint8_t *out); size_t pg_query__alter_fdw_stmt__pack_to_buffer (const PgQuery__AlterFdwStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterFdwStmt * pg_query__alter_fdw_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_fdw_stmt__free_unpacked (PgQuery__AlterFdwStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateForeignServerStmt methods */ void pg_query__create_foreign_server_stmt__init (PgQuery__CreateForeignServerStmt *message); size_t pg_query__create_foreign_server_stmt__get_packed_size (const PgQuery__CreateForeignServerStmt *message); size_t pg_query__create_foreign_server_stmt__pack (const PgQuery__CreateForeignServerStmt *message, uint8_t *out); size_t pg_query__create_foreign_server_stmt__pack_to_buffer (const PgQuery__CreateForeignServerStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateForeignServerStmt * pg_query__create_foreign_server_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_foreign_server_stmt__free_unpacked (PgQuery__CreateForeignServerStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterForeignServerStmt methods */ void pg_query__alter_foreign_server_stmt__init (PgQuery__AlterForeignServerStmt *message); size_t pg_query__alter_foreign_server_stmt__get_packed_size (const PgQuery__AlterForeignServerStmt *message); size_t pg_query__alter_foreign_server_stmt__pack (const PgQuery__AlterForeignServerStmt *message, uint8_t *out); size_t pg_query__alter_foreign_server_stmt__pack_to_buffer (const PgQuery__AlterForeignServerStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterForeignServerStmt * pg_query__alter_foreign_server_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_foreign_server_stmt__free_unpacked (PgQuery__AlterForeignServerStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateUserMappingStmt methods */ void pg_query__create_user_mapping_stmt__init (PgQuery__CreateUserMappingStmt *message); size_t pg_query__create_user_mapping_stmt__get_packed_size (const PgQuery__CreateUserMappingStmt *message); size_t pg_query__create_user_mapping_stmt__pack (const PgQuery__CreateUserMappingStmt *message, uint8_t *out); size_t pg_query__create_user_mapping_stmt__pack_to_buffer (const PgQuery__CreateUserMappingStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateUserMappingStmt * pg_query__create_user_mapping_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_user_mapping_stmt__free_unpacked (PgQuery__CreateUserMappingStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterUserMappingStmt methods */ void pg_query__alter_user_mapping_stmt__init (PgQuery__AlterUserMappingStmt *message); size_t pg_query__alter_user_mapping_stmt__get_packed_size (const PgQuery__AlterUserMappingStmt *message); size_t pg_query__alter_user_mapping_stmt__pack (const PgQuery__AlterUserMappingStmt *message, uint8_t *out); size_t pg_query__alter_user_mapping_stmt__pack_to_buffer (const PgQuery__AlterUserMappingStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterUserMappingStmt * pg_query__alter_user_mapping_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_user_mapping_stmt__free_unpacked (PgQuery__AlterUserMappingStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DropUserMappingStmt methods */ void pg_query__drop_user_mapping_stmt__init (PgQuery__DropUserMappingStmt *message); size_t pg_query__drop_user_mapping_stmt__get_packed_size (const PgQuery__DropUserMappingStmt *message); size_t pg_query__drop_user_mapping_stmt__pack (const PgQuery__DropUserMappingStmt *message, uint8_t *out); size_t pg_query__drop_user_mapping_stmt__pack_to_buffer (const PgQuery__DropUserMappingStmt *message, ProtobufCBuffer *buffer); PgQuery__DropUserMappingStmt * pg_query__drop_user_mapping_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__drop_user_mapping_stmt__free_unpacked (PgQuery__DropUserMappingStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterTableSpaceOptionsStmt methods */ void pg_query__alter_table_space_options_stmt__init (PgQuery__AlterTableSpaceOptionsStmt *message); size_t pg_query__alter_table_space_options_stmt__get_packed_size (const PgQuery__AlterTableSpaceOptionsStmt *message); size_t pg_query__alter_table_space_options_stmt__pack (const PgQuery__AlterTableSpaceOptionsStmt *message, uint8_t *out); size_t pg_query__alter_table_space_options_stmt__pack_to_buffer (const PgQuery__AlterTableSpaceOptionsStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterTableSpaceOptionsStmt * pg_query__alter_table_space_options_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_table_space_options_stmt__free_unpacked (PgQuery__AlterTableSpaceOptionsStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterTableMoveAllStmt methods */ void pg_query__alter_table_move_all_stmt__init (PgQuery__AlterTableMoveAllStmt *message); size_t pg_query__alter_table_move_all_stmt__get_packed_size (const PgQuery__AlterTableMoveAllStmt *message); size_t pg_query__alter_table_move_all_stmt__pack (const PgQuery__AlterTableMoveAllStmt *message, uint8_t *out); size_t pg_query__alter_table_move_all_stmt__pack_to_buffer (const PgQuery__AlterTableMoveAllStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterTableMoveAllStmt * pg_query__alter_table_move_all_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_table_move_all_stmt__free_unpacked (PgQuery__AlterTableMoveAllStmt *message, ProtobufCAllocator *allocator); /* PgQuery__SecLabelStmt methods */ void pg_query__sec_label_stmt__init (PgQuery__SecLabelStmt *message); size_t pg_query__sec_label_stmt__get_packed_size (const PgQuery__SecLabelStmt *message); size_t pg_query__sec_label_stmt__pack (const PgQuery__SecLabelStmt *message, uint8_t *out); size_t pg_query__sec_label_stmt__pack_to_buffer (const PgQuery__SecLabelStmt *message, ProtobufCBuffer *buffer); PgQuery__SecLabelStmt * pg_query__sec_label_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__sec_label_stmt__free_unpacked (PgQuery__SecLabelStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateForeignTableStmt methods */ void pg_query__create_foreign_table_stmt__init (PgQuery__CreateForeignTableStmt *message); size_t pg_query__create_foreign_table_stmt__get_packed_size (const PgQuery__CreateForeignTableStmt *message); size_t pg_query__create_foreign_table_stmt__pack (const PgQuery__CreateForeignTableStmt *message, uint8_t *out); size_t pg_query__create_foreign_table_stmt__pack_to_buffer (const PgQuery__CreateForeignTableStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateForeignTableStmt * pg_query__create_foreign_table_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_foreign_table_stmt__free_unpacked (PgQuery__CreateForeignTableStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ImportForeignSchemaStmt methods */ void pg_query__import_foreign_schema_stmt__init (PgQuery__ImportForeignSchemaStmt *message); size_t pg_query__import_foreign_schema_stmt__get_packed_size (const PgQuery__ImportForeignSchemaStmt *message); size_t pg_query__import_foreign_schema_stmt__pack (const PgQuery__ImportForeignSchemaStmt *message, uint8_t *out); size_t pg_query__import_foreign_schema_stmt__pack_to_buffer (const PgQuery__ImportForeignSchemaStmt *message, ProtobufCBuffer *buffer); PgQuery__ImportForeignSchemaStmt * pg_query__import_foreign_schema_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__import_foreign_schema_stmt__free_unpacked (PgQuery__ImportForeignSchemaStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateExtensionStmt methods */ void pg_query__create_extension_stmt__init (PgQuery__CreateExtensionStmt *message); size_t pg_query__create_extension_stmt__get_packed_size (const PgQuery__CreateExtensionStmt *message); size_t pg_query__create_extension_stmt__pack (const PgQuery__CreateExtensionStmt *message, uint8_t *out); size_t pg_query__create_extension_stmt__pack_to_buffer (const PgQuery__CreateExtensionStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateExtensionStmt * pg_query__create_extension_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_extension_stmt__free_unpacked (PgQuery__CreateExtensionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterExtensionStmt methods */ void pg_query__alter_extension_stmt__init (PgQuery__AlterExtensionStmt *message); size_t pg_query__alter_extension_stmt__get_packed_size (const PgQuery__AlterExtensionStmt *message); size_t pg_query__alter_extension_stmt__pack (const PgQuery__AlterExtensionStmt *message, uint8_t *out); size_t pg_query__alter_extension_stmt__pack_to_buffer (const PgQuery__AlterExtensionStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterExtensionStmt * pg_query__alter_extension_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_extension_stmt__free_unpacked (PgQuery__AlterExtensionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterExtensionContentsStmt methods */ void pg_query__alter_extension_contents_stmt__init (PgQuery__AlterExtensionContentsStmt *message); size_t pg_query__alter_extension_contents_stmt__get_packed_size (const PgQuery__AlterExtensionContentsStmt *message); size_t pg_query__alter_extension_contents_stmt__pack (const PgQuery__AlterExtensionContentsStmt *message, uint8_t *out); size_t pg_query__alter_extension_contents_stmt__pack_to_buffer (const PgQuery__AlterExtensionContentsStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterExtensionContentsStmt * pg_query__alter_extension_contents_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_extension_contents_stmt__free_unpacked (PgQuery__AlterExtensionContentsStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateEventTrigStmt methods */ void pg_query__create_event_trig_stmt__init (PgQuery__CreateEventTrigStmt *message); size_t pg_query__create_event_trig_stmt__get_packed_size (const PgQuery__CreateEventTrigStmt *message); size_t pg_query__create_event_trig_stmt__pack (const PgQuery__CreateEventTrigStmt *message, uint8_t *out); size_t pg_query__create_event_trig_stmt__pack_to_buffer (const PgQuery__CreateEventTrigStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateEventTrigStmt * pg_query__create_event_trig_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_event_trig_stmt__free_unpacked (PgQuery__CreateEventTrigStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterEventTrigStmt methods */ void pg_query__alter_event_trig_stmt__init (PgQuery__AlterEventTrigStmt *message); size_t pg_query__alter_event_trig_stmt__get_packed_size (const PgQuery__AlterEventTrigStmt *message); size_t pg_query__alter_event_trig_stmt__pack (const PgQuery__AlterEventTrigStmt *message, uint8_t *out); size_t pg_query__alter_event_trig_stmt__pack_to_buffer (const PgQuery__AlterEventTrigStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterEventTrigStmt * pg_query__alter_event_trig_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_event_trig_stmt__free_unpacked (PgQuery__AlterEventTrigStmt *message, ProtobufCAllocator *allocator); /* PgQuery__RefreshMatViewStmt methods */ void pg_query__refresh_mat_view_stmt__init (PgQuery__RefreshMatViewStmt *message); size_t pg_query__refresh_mat_view_stmt__get_packed_size (const PgQuery__RefreshMatViewStmt *message); size_t pg_query__refresh_mat_view_stmt__pack (const PgQuery__RefreshMatViewStmt *message, uint8_t *out); size_t pg_query__refresh_mat_view_stmt__pack_to_buffer (const PgQuery__RefreshMatViewStmt *message, ProtobufCBuffer *buffer); PgQuery__RefreshMatViewStmt * pg_query__refresh_mat_view_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__refresh_mat_view_stmt__free_unpacked (PgQuery__RefreshMatViewStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ReplicaIdentityStmt methods */ void pg_query__replica_identity_stmt__init (PgQuery__ReplicaIdentityStmt *message); size_t pg_query__replica_identity_stmt__get_packed_size (const PgQuery__ReplicaIdentityStmt *message); size_t pg_query__replica_identity_stmt__pack (const PgQuery__ReplicaIdentityStmt *message, uint8_t *out); size_t pg_query__replica_identity_stmt__pack_to_buffer (const PgQuery__ReplicaIdentityStmt *message, ProtobufCBuffer *buffer); PgQuery__ReplicaIdentityStmt * pg_query__replica_identity_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__replica_identity_stmt__free_unpacked (PgQuery__ReplicaIdentityStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterSystemStmt methods */ void pg_query__alter_system_stmt__init (PgQuery__AlterSystemStmt *message); size_t pg_query__alter_system_stmt__get_packed_size (const PgQuery__AlterSystemStmt *message); size_t pg_query__alter_system_stmt__pack (const PgQuery__AlterSystemStmt *message, uint8_t *out); size_t pg_query__alter_system_stmt__pack_to_buffer (const PgQuery__AlterSystemStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterSystemStmt * pg_query__alter_system_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_system_stmt__free_unpacked (PgQuery__AlterSystemStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreatePolicyStmt methods */ void pg_query__create_policy_stmt__init (PgQuery__CreatePolicyStmt *message); size_t pg_query__create_policy_stmt__get_packed_size (const PgQuery__CreatePolicyStmt *message); size_t pg_query__create_policy_stmt__pack (const PgQuery__CreatePolicyStmt *message, uint8_t *out); size_t pg_query__create_policy_stmt__pack_to_buffer (const PgQuery__CreatePolicyStmt *message, ProtobufCBuffer *buffer); PgQuery__CreatePolicyStmt * pg_query__create_policy_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_policy_stmt__free_unpacked (PgQuery__CreatePolicyStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterPolicyStmt methods */ void pg_query__alter_policy_stmt__init (PgQuery__AlterPolicyStmt *message); size_t pg_query__alter_policy_stmt__get_packed_size (const PgQuery__AlterPolicyStmt *message); size_t pg_query__alter_policy_stmt__pack (const PgQuery__AlterPolicyStmt *message, uint8_t *out); size_t pg_query__alter_policy_stmt__pack_to_buffer (const PgQuery__AlterPolicyStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterPolicyStmt * pg_query__alter_policy_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_policy_stmt__free_unpacked (PgQuery__AlterPolicyStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateTransformStmt methods */ void pg_query__create_transform_stmt__init (PgQuery__CreateTransformStmt *message); size_t pg_query__create_transform_stmt__get_packed_size (const PgQuery__CreateTransformStmt *message); size_t pg_query__create_transform_stmt__pack (const PgQuery__CreateTransformStmt *message, uint8_t *out); size_t pg_query__create_transform_stmt__pack_to_buffer (const PgQuery__CreateTransformStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateTransformStmt * pg_query__create_transform_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_transform_stmt__free_unpacked (PgQuery__CreateTransformStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateAmStmt methods */ void pg_query__create_am_stmt__init (PgQuery__CreateAmStmt *message); size_t pg_query__create_am_stmt__get_packed_size (const PgQuery__CreateAmStmt *message); size_t pg_query__create_am_stmt__pack (const PgQuery__CreateAmStmt *message, uint8_t *out); size_t pg_query__create_am_stmt__pack_to_buffer (const PgQuery__CreateAmStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateAmStmt * pg_query__create_am_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_am_stmt__free_unpacked (PgQuery__CreateAmStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreatePublicationStmt methods */ void pg_query__create_publication_stmt__init (PgQuery__CreatePublicationStmt *message); size_t pg_query__create_publication_stmt__get_packed_size (const PgQuery__CreatePublicationStmt *message); size_t pg_query__create_publication_stmt__pack (const PgQuery__CreatePublicationStmt *message, uint8_t *out); size_t pg_query__create_publication_stmt__pack_to_buffer (const PgQuery__CreatePublicationStmt *message, ProtobufCBuffer *buffer); PgQuery__CreatePublicationStmt * pg_query__create_publication_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_publication_stmt__free_unpacked (PgQuery__CreatePublicationStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterPublicationStmt methods */ void pg_query__alter_publication_stmt__init (PgQuery__AlterPublicationStmt *message); size_t pg_query__alter_publication_stmt__get_packed_size (const PgQuery__AlterPublicationStmt *message); size_t pg_query__alter_publication_stmt__pack (const PgQuery__AlterPublicationStmt *message, uint8_t *out); size_t pg_query__alter_publication_stmt__pack_to_buffer (const PgQuery__AlterPublicationStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterPublicationStmt * pg_query__alter_publication_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_publication_stmt__free_unpacked (PgQuery__AlterPublicationStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateSubscriptionStmt methods */ void pg_query__create_subscription_stmt__init (PgQuery__CreateSubscriptionStmt *message); size_t pg_query__create_subscription_stmt__get_packed_size (const PgQuery__CreateSubscriptionStmt *message); size_t pg_query__create_subscription_stmt__pack (const PgQuery__CreateSubscriptionStmt *message, uint8_t *out); size_t pg_query__create_subscription_stmt__pack_to_buffer (const PgQuery__CreateSubscriptionStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateSubscriptionStmt * pg_query__create_subscription_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_subscription_stmt__free_unpacked (PgQuery__CreateSubscriptionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterSubscriptionStmt methods */ void pg_query__alter_subscription_stmt__init (PgQuery__AlterSubscriptionStmt *message); size_t pg_query__alter_subscription_stmt__get_packed_size (const PgQuery__AlterSubscriptionStmt *message); size_t pg_query__alter_subscription_stmt__pack (const PgQuery__AlterSubscriptionStmt *message, uint8_t *out); size_t pg_query__alter_subscription_stmt__pack_to_buffer (const PgQuery__AlterSubscriptionStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterSubscriptionStmt * pg_query__alter_subscription_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_subscription_stmt__free_unpacked (PgQuery__AlterSubscriptionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DropSubscriptionStmt methods */ void pg_query__drop_subscription_stmt__init (PgQuery__DropSubscriptionStmt *message); size_t pg_query__drop_subscription_stmt__get_packed_size (const PgQuery__DropSubscriptionStmt *message); size_t pg_query__drop_subscription_stmt__pack (const PgQuery__DropSubscriptionStmt *message, uint8_t *out); size_t pg_query__drop_subscription_stmt__pack_to_buffer (const PgQuery__DropSubscriptionStmt *message, ProtobufCBuffer *buffer); PgQuery__DropSubscriptionStmt * pg_query__drop_subscription_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__drop_subscription_stmt__free_unpacked (PgQuery__DropSubscriptionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateStatsStmt methods */ void pg_query__create_stats_stmt__init (PgQuery__CreateStatsStmt *message); size_t pg_query__create_stats_stmt__get_packed_size (const PgQuery__CreateStatsStmt *message); size_t pg_query__create_stats_stmt__pack (const PgQuery__CreateStatsStmt *message, uint8_t *out); size_t pg_query__create_stats_stmt__pack_to_buffer (const PgQuery__CreateStatsStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateStatsStmt * pg_query__create_stats_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_stats_stmt__free_unpacked (PgQuery__CreateStatsStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterCollationStmt methods */ void pg_query__alter_collation_stmt__init (PgQuery__AlterCollationStmt *message); size_t pg_query__alter_collation_stmt__get_packed_size (const PgQuery__AlterCollationStmt *message); size_t pg_query__alter_collation_stmt__pack (const PgQuery__AlterCollationStmt *message, uint8_t *out); size_t pg_query__alter_collation_stmt__pack_to_buffer (const PgQuery__AlterCollationStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterCollationStmt * pg_query__alter_collation_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_collation_stmt__free_unpacked (PgQuery__AlterCollationStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CallStmt methods */ void pg_query__call_stmt__init (PgQuery__CallStmt *message); size_t pg_query__call_stmt__get_packed_size (const PgQuery__CallStmt *message); size_t pg_query__call_stmt__pack (const PgQuery__CallStmt *message, uint8_t *out); size_t pg_query__call_stmt__pack_to_buffer (const PgQuery__CallStmt *message, ProtobufCBuffer *buffer); PgQuery__CallStmt * pg_query__call_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__call_stmt__free_unpacked (PgQuery__CallStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterStatsStmt methods */ void pg_query__alter_stats_stmt__init (PgQuery__AlterStatsStmt *message); size_t pg_query__alter_stats_stmt__get_packed_size (const PgQuery__AlterStatsStmt *message); size_t pg_query__alter_stats_stmt__pack (const PgQuery__AlterStatsStmt *message, uint8_t *out); size_t pg_query__alter_stats_stmt__pack_to_buffer (const PgQuery__AlterStatsStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterStatsStmt * pg_query__alter_stats_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_stats_stmt__free_unpacked (PgQuery__AlterStatsStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AExpr methods */ void pg_query__a__expr__init (PgQuery__AExpr *message); size_t pg_query__a__expr__get_packed_size (const PgQuery__AExpr *message); size_t pg_query__a__expr__pack (const PgQuery__AExpr *message, uint8_t *out); size_t pg_query__a__expr__pack_to_buffer (const PgQuery__AExpr *message, ProtobufCBuffer *buffer); PgQuery__AExpr * pg_query__a__expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__a__expr__free_unpacked (PgQuery__AExpr *message, ProtobufCAllocator *allocator); /* PgQuery__ColumnRef methods */ void pg_query__column_ref__init (PgQuery__ColumnRef *message); size_t pg_query__column_ref__get_packed_size (const PgQuery__ColumnRef *message); size_t pg_query__column_ref__pack (const PgQuery__ColumnRef *message, uint8_t *out); size_t pg_query__column_ref__pack_to_buffer (const PgQuery__ColumnRef *message, ProtobufCBuffer *buffer); PgQuery__ColumnRef * pg_query__column_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__column_ref__free_unpacked (PgQuery__ColumnRef *message, ProtobufCAllocator *allocator); /* PgQuery__ParamRef methods */ void pg_query__param_ref__init (PgQuery__ParamRef *message); size_t pg_query__param_ref__get_packed_size (const PgQuery__ParamRef *message); size_t pg_query__param_ref__pack (const PgQuery__ParamRef *message, uint8_t *out); size_t pg_query__param_ref__pack_to_buffer (const PgQuery__ParamRef *message, ProtobufCBuffer *buffer); PgQuery__ParamRef * pg_query__param_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__param_ref__free_unpacked (PgQuery__ParamRef *message, ProtobufCAllocator *allocator); /* PgQuery__FuncCall methods */ void pg_query__func_call__init (PgQuery__FuncCall *message); size_t pg_query__func_call__get_packed_size (const PgQuery__FuncCall *message); size_t pg_query__func_call__pack (const PgQuery__FuncCall *message, uint8_t *out); size_t pg_query__func_call__pack_to_buffer (const PgQuery__FuncCall *message, ProtobufCBuffer *buffer); PgQuery__FuncCall * pg_query__func_call__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__func_call__free_unpacked (PgQuery__FuncCall *message, ProtobufCAllocator *allocator); /* PgQuery__AStar methods */ void pg_query__a__star__init (PgQuery__AStar *message); size_t pg_query__a__star__get_packed_size (const PgQuery__AStar *message); size_t pg_query__a__star__pack (const PgQuery__AStar *message, uint8_t *out); size_t pg_query__a__star__pack_to_buffer (const PgQuery__AStar *message, ProtobufCBuffer *buffer); PgQuery__AStar * pg_query__a__star__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__a__star__free_unpacked (PgQuery__AStar *message, ProtobufCAllocator *allocator); /* PgQuery__AIndices methods */ void pg_query__a__indices__init (PgQuery__AIndices *message); size_t pg_query__a__indices__get_packed_size (const PgQuery__AIndices *message); size_t pg_query__a__indices__pack (const PgQuery__AIndices *message, uint8_t *out); size_t pg_query__a__indices__pack_to_buffer (const PgQuery__AIndices *message, ProtobufCBuffer *buffer); PgQuery__AIndices * pg_query__a__indices__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__a__indices__free_unpacked (PgQuery__AIndices *message, ProtobufCAllocator *allocator); /* PgQuery__AIndirection methods */ void pg_query__a__indirection__init (PgQuery__AIndirection *message); size_t pg_query__a__indirection__get_packed_size (const PgQuery__AIndirection *message); size_t pg_query__a__indirection__pack (const PgQuery__AIndirection *message, uint8_t *out); size_t pg_query__a__indirection__pack_to_buffer (const PgQuery__AIndirection *message, ProtobufCBuffer *buffer); PgQuery__AIndirection * pg_query__a__indirection__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__a__indirection__free_unpacked (PgQuery__AIndirection *message, ProtobufCAllocator *allocator); /* PgQuery__AArrayExpr methods */ void pg_query__a__array_expr__init (PgQuery__AArrayExpr *message); size_t pg_query__a__array_expr__get_packed_size (const PgQuery__AArrayExpr *message); size_t pg_query__a__array_expr__pack (const PgQuery__AArrayExpr *message, uint8_t *out); size_t pg_query__a__array_expr__pack_to_buffer (const PgQuery__AArrayExpr *message, ProtobufCBuffer *buffer); PgQuery__AArrayExpr * pg_query__a__array_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__a__array_expr__free_unpacked (PgQuery__AArrayExpr *message, ProtobufCAllocator *allocator); /* PgQuery__ResTarget methods */ void pg_query__res_target__init (PgQuery__ResTarget *message); size_t pg_query__res_target__get_packed_size (const PgQuery__ResTarget *message); size_t pg_query__res_target__pack (const PgQuery__ResTarget *message, uint8_t *out); size_t pg_query__res_target__pack_to_buffer (const PgQuery__ResTarget *message, ProtobufCBuffer *buffer); PgQuery__ResTarget * pg_query__res_target__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__res_target__free_unpacked (PgQuery__ResTarget *message, ProtobufCAllocator *allocator); /* PgQuery__MultiAssignRef methods */ void pg_query__multi_assign_ref__init (PgQuery__MultiAssignRef *message); size_t pg_query__multi_assign_ref__get_packed_size (const PgQuery__MultiAssignRef *message); size_t pg_query__multi_assign_ref__pack (const PgQuery__MultiAssignRef *message, uint8_t *out); size_t pg_query__multi_assign_ref__pack_to_buffer (const PgQuery__MultiAssignRef *message, ProtobufCBuffer *buffer); PgQuery__MultiAssignRef * pg_query__multi_assign_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__multi_assign_ref__free_unpacked (PgQuery__MultiAssignRef *message, ProtobufCAllocator *allocator); /* PgQuery__TypeCast methods */ void pg_query__type_cast__init (PgQuery__TypeCast *message); size_t pg_query__type_cast__get_packed_size (const PgQuery__TypeCast *message); size_t pg_query__type_cast__pack (const PgQuery__TypeCast *message, uint8_t *out); size_t pg_query__type_cast__pack_to_buffer (const PgQuery__TypeCast *message, ProtobufCBuffer *buffer); PgQuery__TypeCast * pg_query__type_cast__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__type_cast__free_unpacked (PgQuery__TypeCast *message, ProtobufCAllocator *allocator); /* PgQuery__CollateClause methods */ void pg_query__collate_clause__init (PgQuery__CollateClause *message); size_t pg_query__collate_clause__get_packed_size (const PgQuery__CollateClause *message); size_t pg_query__collate_clause__pack (const PgQuery__CollateClause *message, uint8_t *out); size_t pg_query__collate_clause__pack_to_buffer (const PgQuery__CollateClause *message, ProtobufCBuffer *buffer); PgQuery__CollateClause * pg_query__collate_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__collate_clause__free_unpacked (PgQuery__CollateClause *message, ProtobufCAllocator *allocator); /* PgQuery__SortBy methods */ void pg_query__sort_by__init (PgQuery__SortBy *message); size_t pg_query__sort_by__get_packed_size (const PgQuery__SortBy *message); size_t pg_query__sort_by__pack (const PgQuery__SortBy *message, uint8_t *out); size_t pg_query__sort_by__pack_to_buffer (const PgQuery__SortBy *message, ProtobufCBuffer *buffer); PgQuery__SortBy * pg_query__sort_by__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__sort_by__free_unpacked (PgQuery__SortBy *message, ProtobufCAllocator *allocator); /* PgQuery__WindowDef methods */ void pg_query__window_def__init (PgQuery__WindowDef *message); size_t pg_query__window_def__get_packed_size (const PgQuery__WindowDef *message); size_t pg_query__window_def__pack (const PgQuery__WindowDef *message, uint8_t *out); size_t pg_query__window_def__pack_to_buffer (const PgQuery__WindowDef *message, ProtobufCBuffer *buffer); PgQuery__WindowDef * pg_query__window_def__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__window_def__free_unpacked (PgQuery__WindowDef *message, ProtobufCAllocator *allocator); /* PgQuery__RangeSubselect methods */ void pg_query__range_subselect__init (PgQuery__RangeSubselect *message); size_t pg_query__range_subselect__get_packed_size (const PgQuery__RangeSubselect *message); size_t pg_query__range_subselect__pack (const PgQuery__RangeSubselect *message, uint8_t *out); size_t pg_query__range_subselect__pack_to_buffer (const PgQuery__RangeSubselect *message, ProtobufCBuffer *buffer); PgQuery__RangeSubselect * pg_query__range_subselect__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__range_subselect__free_unpacked (PgQuery__RangeSubselect *message, ProtobufCAllocator *allocator); /* PgQuery__RangeFunction methods */ void pg_query__range_function__init (PgQuery__RangeFunction *message); size_t pg_query__range_function__get_packed_size (const PgQuery__RangeFunction *message); size_t pg_query__range_function__pack (const PgQuery__RangeFunction *message, uint8_t *out); size_t pg_query__range_function__pack_to_buffer (const PgQuery__RangeFunction *message, ProtobufCBuffer *buffer); PgQuery__RangeFunction * pg_query__range_function__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__range_function__free_unpacked (PgQuery__RangeFunction *message, ProtobufCAllocator *allocator); /* PgQuery__RangeTableSample methods */ void pg_query__range_table_sample__init (PgQuery__RangeTableSample *message); size_t pg_query__range_table_sample__get_packed_size (const PgQuery__RangeTableSample *message); size_t pg_query__range_table_sample__pack (const PgQuery__RangeTableSample *message, uint8_t *out); size_t pg_query__range_table_sample__pack_to_buffer (const PgQuery__RangeTableSample *message, ProtobufCBuffer *buffer); PgQuery__RangeTableSample * pg_query__range_table_sample__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__range_table_sample__free_unpacked (PgQuery__RangeTableSample *message, ProtobufCAllocator *allocator); /* PgQuery__RangeTableFunc methods */ void pg_query__range_table_func__init (PgQuery__RangeTableFunc *message); size_t pg_query__range_table_func__get_packed_size (const PgQuery__RangeTableFunc *message); size_t pg_query__range_table_func__pack (const PgQuery__RangeTableFunc *message, uint8_t *out); size_t pg_query__range_table_func__pack_to_buffer (const PgQuery__RangeTableFunc *message, ProtobufCBuffer *buffer); PgQuery__RangeTableFunc * pg_query__range_table_func__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__range_table_func__free_unpacked (PgQuery__RangeTableFunc *message, ProtobufCAllocator *allocator); /* PgQuery__RangeTableFuncCol methods */ void pg_query__range_table_func_col__init (PgQuery__RangeTableFuncCol *message); size_t pg_query__range_table_func_col__get_packed_size (const PgQuery__RangeTableFuncCol *message); size_t pg_query__range_table_func_col__pack (const PgQuery__RangeTableFuncCol *message, uint8_t *out); size_t pg_query__range_table_func_col__pack_to_buffer (const PgQuery__RangeTableFuncCol *message, ProtobufCBuffer *buffer); PgQuery__RangeTableFuncCol * pg_query__range_table_func_col__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__range_table_func_col__free_unpacked (PgQuery__RangeTableFuncCol *message, ProtobufCAllocator *allocator); /* PgQuery__TypeName methods */ void pg_query__type_name__init (PgQuery__TypeName *message); size_t pg_query__type_name__get_packed_size (const PgQuery__TypeName *message); size_t pg_query__type_name__pack (const PgQuery__TypeName *message, uint8_t *out); size_t pg_query__type_name__pack_to_buffer (const PgQuery__TypeName *message, ProtobufCBuffer *buffer); PgQuery__TypeName * pg_query__type_name__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__type_name__free_unpacked (PgQuery__TypeName *message, ProtobufCAllocator *allocator); /* PgQuery__ColumnDef methods */ void pg_query__column_def__init (PgQuery__ColumnDef *message); size_t pg_query__column_def__get_packed_size (const PgQuery__ColumnDef *message); size_t pg_query__column_def__pack (const PgQuery__ColumnDef *message, uint8_t *out); size_t pg_query__column_def__pack_to_buffer (const PgQuery__ColumnDef *message, ProtobufCBuffer *buffer); PgQuery__ColumnDef * pg_query__column_def__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__column_def__free_unpacked (PgQuery__ColumnDef *message, ProtobufCAllocator *allocator); /* PgQuery__IndexElem methods */ void pg_query__index_elem__init (PgQuery__IndexElem *message); size_t pg_query__index_elem__get_packed_size (const PgQuery__IndexElem *message); size_t pg_query__index_elem__pack (const PgQuery__IndexElem *message, uint8_t *out); size_t pg_query__index_elem__pack_to_buffer (const PgQuery__IndexElem *message, ProtobufCBuffer *buffer); PgQuery__IndexElem * pg_query__index_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__index_elem__free_unpacked (PgQuery__IndexElem *message, ProtobufCAllocator *allocator); /* PgQuery__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__Constraint methods */ void pg_query__constraint__init (PgQuery__Constraint *message); size_t pg_query__constraint__get_packed_size (const PgQuery__Constraint *message); size_t pg_query__constraint__pack (const PgQuery__Constraint *message, uint8_t *out); size_t pg_query__constraint__pack_to_buffer (const PgQuery__Constraint *message, ProtobufCBuffer *buffer); PgQuery__Constraint * pg_query__constraint__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__constraint__free_unpacked (PgQuery__Constraint *message, ProtobufCAllocator *allocator); /* PgQuery__DefElem methods */ void pg_query__def_elem__init (PgQuery__DefElem *message); size_t pg_query__def_elem__get_packed_size (const PgQuery__DefElem *message); size_t pg_query__def_elem__pack (const PgQuery__DefElem *message, uint8_t *out); size_t pg_query__def_elem__pack_to_buffer (const PgQuery__DefElem *message, ProtobufCBuffer *buffer); PgQuery__DefElem * pg_query__def_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__def_elem__free_unpacked (PgQuery__DefElem *message, ProtobufCAllocator *allocator); /* PgQuery__RangeTblEntry methods */ void pg_query__range_tbl_entry__init (PgQuery__RangeTblEntry *message); size_t pg_query__range_tbl_entry__get_packed_size (const PgQuery__RangeTblEntry *message); size_t pg_query__range_tbl_entry__pack (const PgQuery__RangeTblEntry *message, uint8_t *out); size_t pg_query__range_tbl_entry__pack_to_buffer (const PgQuery__RangeTblEntry *message, ProtobufCBuffer *buffer); PgQuery__RangeTblEntry * pg_query__range_tbl_entry__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__range_tbl_entry__free_unpacked (PgQuery__RangeTblEntry *message, ProtobufCAllocator *allocator); /* PgQuery__RangeTblFunction methods */ void pg_query__range_tbl_function__init (PgQuery__RangeTblFunction *message); size_t pg_query__range_tbl_function__get_packed_size (const PgQuery__RangeTblFunction *message); size_t pg_query__range_tbl_function__pack (const PgQuery__RangeTblFunction *message, uint8_t *out); size_t pg_query__range_tbl_function__pack_to_buffer (const PgQuery__RangeTblFunction *message, ProtobufCBuffer *buffer); PgQuery__RangeTblFunction * pg_query__range_tbl_function__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__range_tbl_function__free_unpacked (PgQuery__RangeTblFunction *message, ProtobufCAllocator *allocator); /* PgQuery__TableSampleClause methods */ void pg_query__table_sample_clause__init (PgQuery__TableSampleClause *message); size_t pg_query__table_sample_clause__get_packed_size (const PgQuery__TableSampleClause *message); size_t pg_query__table_sample_clause__pack (const PgQuery__TableSampleClause *message, uint8_t *out); size_t pg_query__table_sample_clause__pack_to_buffer (const PgQuery__TableSampleClause *message, ProtobufCBuffer *buffer); PgQuery__TableSampleClause * pg_query__table_sample_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__table_sample_clause__free_unpacked (PgQuery__TableSampleClause *message, ProtobufCAllocator *allocator); /* PgQuery__WithCheckOption methods */ void pg_query__with_check_option__init (PgQuery__WithCheckOption *message); size_t pg_query__with_check_option__get_packed_size (const PgQuery__WithCheckOption *message); size_t pg_query__with_check_option__pack (const PgQuery__WithCheckOption *message, uint8_t *out); size_t pg_query__with_check_option__pack_to_buffer (const PgQuery__WithCheckOption *message, ProtobufCBuffer *buffer); PgQuery__WithCheckOption * pg_query__with_check_option__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__with_check_option__free_unpacked (PgQuery__WithCheckOption *message, ProtobufCAllocator *allocator); /* PgQuery__SortGroupClause methods */ void pg_query__sort_group_clause__init (PgQuery__SortGroupClause *message); size_t pg_query__sort_group_clause__get_packed_size (const PgQuery__SortGroupClause *message); size_t pg_query__sort_group_clause__pack (const PgQuery__SortGroupClause *message, uint8_t *out); size_t pg_query__sort_group_clause__pack_to_buffer (const PgQuery__SortGroupClause *message, ProtobufCBuffer *buffer); PgQuery__SortGroupClause * pg_query__sort_group_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__sort_group_clause__free_unpacked (PgQuery__SortGroupClause *message, ProtobufCAllocator *allocator); /* PgQuery__GroupingSet methods */ void pg_query__grouping_set__init (PgQuery__GroupingSet *message); size_t pg_query__grouping_set__get_packed_size (const PgQuery__GroupingSet *message); size_t pg_query__grouping_set__pack (const PgQuery__GroupingSet *message, uint8_t *out); size_t pg_query__grouping_set__pack_to_buffer (const PgQuery__GroupingSet *message, ProtobufCBuffer *buffer); PgQuery__GroupingSet * pg_query__grouping_set__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__grouping_set__free_unpacked (PgQuery__GroupingSet *message, ProtobufCAllocator *allocator); /* PgQuery__WindowClause methods */ void pg_query__window_clause__init (PgQuery__WindowClause *message); size_t pg_query__window_clause__get_packed_size (const PgQuery__WindowClause *message); size_t pg_query__window_clause__pack (const PgQuery__WindowClause *message, uint8_t *out); size_t pg_query__window_clause__pack_to_buffer (const PgQuery__WindowClause *message, ProtobufCBuffer *buffer); PgQuery__WindowClause * pg_query__window_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__window_clause__free_unpacked (PgQuery__WindowClause *message, ProtobufCAllocator *allocator); /* PgQuery__ObjectWithArgs methods */ void pg_query__object_with_args__init (PgQuery__ObjectWithArgs *message); size_t pg_query__object_with_args__get_packed_size (const PgQuery__ObjectWithArgs *message); size_t pg_query__object_with_args__pack (const PgQuery__ObjectWithArgs *message, uint8_t *out); size_t pg_query__object_with_args__pack_to_buffer (const PgQuery__ObjectWithArgs *message, ProtobufCBuffer *buffer); PgQuery__ObjectWithArgs * pg_query__object_with_args__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__object_with_args__free_unpacked (PgQuery__ObjectWithArgs *message, ProtobufCAllocator *allocator); /* PgQuery__AccessPriv methods */ void pg_query__access_priv__init (PgQuery__AccessPriv *message); size_t pg_query__access_priv__get_packed_size (const PgQuery__AccessPriv *message); size_t pg_query__access_priv__pack (const PgQuery__AccessPriv *message, uint8_t *out); size_t pg_query__access_priv__pack_to_buffer (const PgQuery__AccessPriv *message, ProtobufCBuffer *buffer); PgQuery__AccessPriv * pg_query__access_priv__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__access_priv__free_unpacked (PgQuery__AccessPriv *message, ProtobufCAllocator *allocator); /* PgQuery__CreateOpClassItem methods */ void pg_query__create_op_class_item__init (PgQuery__CreateOpClassItem *message); size_t pg_query__create_op_class_item__get_packed_size (const PgQuery__CreateOpClassItem *message); size_t pg_query__create_op_class_item__pack (const PgQuery__CreateOpClassItem *message, uint8_t *out); size_t pg_query__create_op_class_item__pack_to_buffer (const PgQuery__CreateOpClassItem *message, ProtobufCBuffer *buffer); PgQuery__CreateOpClassItem * pg_query__create_op_class_item__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_op_class_item__free_unpacked (PgQuery__CreateOpClassItem *message, ProtobufCAllocator *allocator); /* PgQuery__TableLikeClause methods */ void pg_query__table_like_clause__init (PgQuery__TableLikeClause *message); size_t pg_query__table_like_clause__get_packed_size (const PgQuery__TableLikeClause *message); size_t pg_query__table_like_clause__pack (const PgQuery__TableLikeClause *message, uint8_t *out); size_t pg_query__table_like_clause__pack_to_buffer (const PgQuery__TableLikeClause *message, ProtobufCBuffer *buffer); PgQuery__TableLikeClause * pg_query__table_like_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__table_like_clause__free_unpacked (PgQuery__TableLikeClause *message, ProtobufCAllocator *allocator); /* PgQuery__FunctionParameter methods */ void pg_query__function_parameter__init (PgQuery__FunctionParameter *message); size_t pg_query__function_parameter__get_packed_size (const PgQuery__FunctionParameter *message); size_t pg_query__function_parameter__pack (const PgQuery__FunctionParameter *message, uint8_t *out); size_t pg_query__function_parameter__pack_to_buffer (const PgQuery__FunctionParameter *message, ProtobufCBuffer *buffer); PgQuery__FunctionParameter * pg_query__function_parameter__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__function_parameter__free_unpacked (PgQuery__FunctionParameter *message, ProtobufCAllocator *allocator); /* PgQuery__LockingClause methods */ void pg_query__locking_clause__init (PgQuery__LockingClause *message); size_t pg_query__locking_clause__get_packed_size (const PgQuery__LockingClause *message); size_t pg_query__locking_clause__pack (const PgQuery__LockingClause *message, uint8_t *out); size_t pg_query__locking_clause__pack_to_buffer (const PgQuery__LockingClause *message, ProtobufCBuffer *buffer); PgQuery__LockingClause * pg_query__locking_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__locking_clause__free_unpacked (PgQuery__LockingClause *message, ProtobufCAllocator *allocator); /* PgQuery__RowMarkClause methods */ void pg_query__row_mark_clause__init (PgQuery__RowMarkClause *message); size_t pg_query__row_mark_clause__get_packed_size (const PgQuery__RowMarkClause *message); size_t pg_query__row_mark_clause__pack (const PgQuery__RowMarkClause *message, uint8_t *out); size_t pg_query__row_mark_clause__pack_to_buffer (const PgQuery__RowMarkClause *message, ProtobufCBuffer *buffer); PgQuery__RowMarkClause * pg_query__row_mark_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__row_mark_clause__free_unpacked (PgQuery__RowMarkClause *message, ProtobufCAllocator *allocator); /* PgQuery__XmlSerialize methods */ void pg_query__xml_serialize__init (PgQuery__XmlSerialize *message); size_t pg_query__xml_serialize__get_packed_size (const PgQuery__XmlSerialize *message); size_t pg_query__xml_serialize__pack (const PgQuery__XmlSerialize *message, uint8_t *out); size_t pg_query__xml_serialize__pack_to_buffer (const PgQuery__XmlSerialize *message, ProtobufCBuffer *buffer); PgQuery__XmlSerialize * pg_query__xml_serialize__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__xml_serialize__free_unpacked (PgQuery__XmlSerialize *message, ProtobufCAllocator *allocator); /* PgQuery__WithClause methods */ void pg_query__with_clause__init (PgQuery__WithClause *message); size_t pg_query__with_clause__get_packed_size (const PgQuery__WithClause *message); size_t pg_query__with_clause__pack (const PgQuery__WithClause *message, uint8_t *out); size_t pg_query__with_clause__pack_to_buffer (const PgQuery__WithClause *message, ProtobufCBuffer *buffer); PgQuery__WithClause * pg_query__with_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__with_clause__free_unpacked (PgQuery__WithClause *message, ProtobufCAllocator *allocator); /* PgQuery__InferClause methods */ void pg_query__infer_clause__init (PgQuery__InferClause *message); size_t pg_query__infer_clause__get_packed_size (const PgQuery__InferClause *message); size_t pg_query__infer_clause__pack (const PgQuery__InferClause *message, uint8_t *out); size_t pg_query__infer_clause__pack_to_buffer (const PgQuery__InferClause *message, ProtobufCBuffer *buffer); PgQuery__InferClause * pg_query__infer_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__infer_clause__free_unpacked (PgQuery__InferClause *message, ProtobufCAllocator *allocator); /* PgQuery__OnConflictClause methods */ void pg_query__on_conflict_clause__init (PgQuery__OnConflictClause *message); size_t pg_query__on_conflict_clause__get_packed_size (const PgQuery__OnConflictClause *message); size_t pg_query__on_conflict_clause__pack (const PgQuery__OnConflictClause *message, uint8_t *out); size_t pg_query__on_conflict_clause__pack_to_buffer (const PgQuery__OnConflictClause *message, ProtobufCBuffer *buffer); PgQuery__OnConflictClause * pg_query__on_conflict_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__on_conflict_clause__free_unpacked (PgQuery__OnConflictClause *message, ProtobufCAllocator *allocator); /* PgQuery__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__RoleSpec methods */ void pg_query__role_spec__init (PgQuery__RoleSpec *message); size_t pg_query__role_spec__get_packed_size (const PgQuery__RoleSpec *message); size_t pg_query__role_spec__pack (const PgQuery__RoleSpec *message, uint8_t *out); size_t pg_query__role_spec__pack_to_buffer (const PgQuery__RoleSpec *message, ProtobufCBuffer *buffer); PgQuery__RoleSpec * pg_query__role_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__role_spec__free_unpacked (PgQuery__RoleSpec *message, ProtobufCAllocator *allocator); /* PgQuery__TriggerTransition methods */ void pg_query__trigger_transition__init (PgQuery__TriggerTransition *message); size_t pg_query__trigger_transition__get_packed_size (const PgQuery__TriggerTransition *message); size_t pg_query__trigger_transition__pack (const PgQuery__TriggerTransition *message, uint8_t *out); size_t pg_query__trigger_transition__pack_to_buffer (const PgQuery__TriggerTransition *message, ProtobufCBuffer *buffer); PgQuery__TriggerTransition * pg_query__trigger_transition__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__trigger_transition__free_unpacked (PgQuery__TriggerTransition *message, ProtobufCAllocator *allocator); /* PgQuery__PartitionElem methods */ void pg_query__partition_elem__init (PgQuery__PartitionElem *message); size_t pg_query__partition_elem__get_packed_size (const PgQuery__PartitionElem *message); size_t pg_query__partition_elem__pack (const PgQuery__PartitionElem *message, uint8_t *out); size_t pg_query__partition_elem__pack_to_buffer (const PgQuery__PartitionElem *message, ProtobufCBuffer *buffer); PgQuery__PartitionElem * pg_query__partition_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__partition_elem__free_unpacked (PgQuery__PartitionElem *message, ProtobufCAllocator *allocator); /* PgQuery__PartitionSpec methods */ void pg_query__partition_spec__init (PgQuery__PartitionSpec *message); size_t pg_query__partition_spec__get_packed_size (const PgQuery__PartitionSpec *message); size_t pg_query__partition_spec__pack (const PgQuery__PartitionSpec *message, uint8_t *out); size_t pg_query__partition_spec__pack_to_buffer (const PgQuery__PartitionSpec *message, ProtobufCBuffer *buffer); PgQuery__PartitionSpec * pg_query__partition_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__partition_spec__free_unpacked (PgQuery__PartitionSpec *message, ProtobufCAllocator *allocator); /* PgQuery__PartitionBoundSpec methods */ void pg_query__partition_bound_spec__init (PgQuery__PartitionBoundSpec *message); size_t pg_query__partition_bound_spec__get_packed_size (const PgQuery__PartitionBoundSpec *message); size_t pg_query__partition_bound_spec__pack (const PgQuery__PartitionBoundSpec *message, uint8_t *out); size_t pg_query__partition_bound_spec__pack_to_buffer (const PgQuery__PartitionBoundSpec *message, ProtobufCBuffer *buffer); PgQuery__PartitionBoundSpec * pg_query__partition_bound_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__partition_bound_spec__free_unpacked (PgQuery__PartitionBoundSpec *message, ProtobufCAllocator *allocator); /* PgQuery__PartitionRangeDatum methods */ void pg_query__partition_range_datum__init (PgQuery__PartitionRangeDatum *message); size_t pg_query__partition_range_datum__get_packed_size (const PgQuery__PartitionRangeDatum *message); size_t pg_query__partition_range_datum__pack (const PgQuery__PartitionRangeDatum *message, uint8_t *out); size_t pg_query__partition_range_datum__pack_to_buffer (const PgQuery__PartitionRangeDatum *message, ProtobufCBuffer *buffer); PgQuery__PartitionRangeDatum * pg_query__partition_range_datum__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__partition_range_datum__free_unpacked (PgQuery__PartitionRangeDatum *message, ProtobufCAllocator *allocator); /* PgQuery__PartitionCmd methods */ void pg_query__partition_cmd__init (PgQuery__PartitionCmd *message); size_t pg_query__partition_cmd__get_packed_size (const PgQuery__PartitionCmd *message); size_t pg_query__partition_cmd__pack (const PgQuery__PartitionCmd *message, uint8_t *out); size_t pg_query__partition_cmd__pack_to_buffer (const PgQuery__PartitionCmd *message, ProtobufCBuffer *buffer); PgQuery__PartitionCmd * pg_query__partition_cmd__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__partition_cmd__free_unpacked (PgQuery__PartitionCmd *message, ProtobufCAllocator *allocator); /* PgQuery__VacuumRelation methods */ void pg_query__vacuum_relation__init (PgQuery__VacuumRelation *message); size_t pg_query__vacuum_relation__get_packed_size (const PgQuery__VacuumRelation *message); size_t pg_query__vacuum_relation__pack (const PgQuery__VacuumRelation *message, uint8_t *out); size_t pg_query__vacuum_relation__pack_to_buffer (const PgQuery__VacuumRelation *message, ProtobufCBuffer *buffer); PgQuery__VacuumRelation * pg_query__vacuum_relation__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__vacuum_relation__free_unpacked (PgQuery__VacuumRelation *message, ProtobufCAllocator *allocator); /* PgQuery__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__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__InlineCodeBlock methods */ void pg_query__inline_code_block__init (PgQuery__InlineCodeBlock *message); size_t pg_query__inline_code_block__get_packed_size (const PgQuery__InlineCodeBlock *message); size_t pg_query__inline_code_block__pack (const PgQuery__InlineCodeBlock *message, uint8_t *out); size_t pg_query__inline_code_block__pack_to_buffer (const PgQuery__InlineCodeBlock *message, ProtobufCBuffer *buffer); PgQuery__InlineCodeBlock * pg_query__inline_code_block__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__inline_code_block__free_unpacked (PgQuery__InlineCodeBlock *message, ProtobufCAllocator *allocator); /* PgQuery__CallContext methods */ void pg_query__call_context__init (PgQuery__CallContext *message); size_t pg_query__call_context__get_packed_size (const PgQuery__CallContext *message); size_t pg_query__call_context__pack (const PgQuery__CallContext *message, uint8_t *out); size_t pg_query__call_context__pack_to_buffer (const PgQuery__CallContext *message, ProtobufCBuffer *buffer); PgQuery__CallContext * pg_query__call_context__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__call_context__free_unpacked (PgQuery__CallContext *message, ProtobufCAllocator *allocator); /* PgQuery__ScanToken methods */ void pg_query__scan_token__init (PgQuery__ScanToken *message); size_t pg_query__scan_token__get_packed_size (const PgQuery__ScanToken *message); size_t pg_query__scan_token__pack (const PgQuery__ScanToken *message, uint8_t *out); size_t pg_query__scan_token__pack_to_buffer (const PgQuery__ScanToken *message, ProtobufCBuffer *buffer); PgQuery__ScanToken * pg_query__scan_token__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__scan_token__free_unpacked (PgQuery__ScanToken *message, ProtobufCAllocator *allocator); /* --- per-message closures --- */ typedef void (*PgQuery__ParseResult_Closure) (const PgQuery__ParseResult *message, void *closure_data); typedef void (*PgQuery__ScanResult_Closure) (const PgQuery__ScanResult *message, void *closure_data); typedef void (*PgQuery__Node_Closure) (const PgQuery__Node *message, void *closure_data); typedef void (*PgQuery__Integer_Closure) (const PgQuery__Integer *message, void *closure_data); typedef void (*PgQuery__Float_Closure) (const PgQuery__Float *message, void *closure_data); typedef void (*PgQuery__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__Var_Closure) (const PgQuery__Var *message, void *closure_data); typedef void (*PgQuery__Param_Closure) (const PgQuery__Param *message, void *closure_data); typedef void (*PgQuery__Aggref_Closure) (const PgQuery__Aggref *message, void *closure_data); typedef void (*PgQuery__GroupingFunc_Closure) (const PgQuery__GroupingFunc *message, void *closure_data); typedef void (*PgQuery__WindowFunc_Closure) (const PgQuery__WindowFunc *message, void *closure_data); typedef void (*PgQuery__SubscriptingRef_Closure) (const PgQuery__SubscriptingRef *message, void *closure_data); typedef void (*PgQuery__FuncExpr_Closure) (const PgQuery__FuncExpr *message, void *closure_data); typedef void (*PgQuery__NamedArgExpr_Closure) (const PgQuery__NamedArgExpr *message, void *closure_data); typedef void (*PgQuery__OpExpr_Closure) (const PgQuery__OpExpr *message, void *closure_data); typedef void (*PgQuery__DistinctExpr_Closure) (const PgQuery__DistinctExpr *message, void *closure_data); typedef void (*PgQuery__NullIfExpr_Closure) (const PgQuery__NullIfExpr *message, void *closure_data); typedef void (*PgQuery__ScalarArrayOpExpr_Closure) (const PgQuery__ScalarArrayOpExpr *message, void *closure_data); typedef void (*PgQuery__BoolExpr_Closure) (const PgQuery__BoolExpr *message, void *closure_data); typedef void (*PgQuery__SubLink_Closure) (const PgQuery__SubLink *message, void *closure_data); typedef void (*PgQuery__SubPlan_Closure) (const PgQuery__SubPlan *message, void *closure_data); typedef void (*PgQuery__AlternativeSubPlan_Closure) (const PgQuery__AlternativeSubPlan *message, void *closure_data); typedef void (*PgQuery__FieldSelect_Closure) (const PgQuery__FieldSelect *message, void *closure_data); typedef void (*PgQuery__FieldStore_Closure) (const PgQuery__FieldStore *message, void *closure_data); typedef void (*PgQuery__RelabelType_Closure) (const PgQuery__RelabelType *message, void *closure_data); typedef void (*PgQuery__CoerceViaIO_Closure) (const PgQuery__CoerceViaIO *message, void *closure_data); typedef void (*PgQuery__ArrayCoerceExpr_Closure) (const PgQuery__ArrayCoerceExpr *message, void *closure_data); typedef void (*PgQuery__ConvertRowtypeExpr_Closure) (const PgQuery__ConvertRowtypeExpr *message, void *closure_data); typedef void (*PgQuery__CollateExpr_Closure) (const PgQuery__CollateExpr *message, void *closure_data); typedef void (*PgQuery__CaseExpr_Closure) (const PgQuery__CaseExpr *message, void *closure_data); typedef void (*PgQuery__CaseWhen_Closure) (const PgQuery__CaseWhen *message, void *closure_data); typedef void (*PgQuery__CaseTestExpr_Closure) (const PgQuery__CaseTestExpr *message, void *closure_data); typedef void (*PgQuery__ArrayExpr_Closure) (const PgQuery__ArrayExpr *message, void *closure_data); typedef void (*PgQuery__RowExpr_Closure) (const PgQuery__RowExpr *message, void *closure_data); typedef void (*PgQuery__RowCompareExpr_Closure) (const PgQuery__RowCompareExpr *message, void *closure_data); typedef void (*PgQuery__CoalesceExpr_Closure) (const PgQuery__CoalesceExpr *message, void *closure_data); typedef void (*PgQuery__MinMaxExpr_Closure) (const PgQuery__MinMaxExpr *message, void *closure_data); typedef void (*PgQuery__SQLValueFunction_Closure) (const PgQuery__SQLValueFunction *message, void *closure_data); typedef void (*PgQuery__XmlExpr_Closure) (const PgQuery__XmlExpr *message, void *closure_data); typedef void (*PgQuery__NullTest_Closure) (const PgQuery__NullTest *message, void *closure_data); typedef void (*PgQuery__BooleanTest_Closure) (const PgQuery__BooleanTest *message, void *closure_data); typedef void (*PgQuery__CoerceToDomain_Closure) (const PgQuery__CoerceToDomain *message, void *closure_data); typedef void (*PgQuery__CoerceToDomainValue_Closure) (const PgQuery__CoerceToDomainValue *message, void *closure_data); typedef void (*PgQuery__SetToDefault_Closure) (const PgQuery__SetToDefault *message, void *closure_data); typedef void (*PgQuery__CurrentOfExpr_Closure) (const PgQuery__CurrentOfExpr *message, void *closure_data); typedef void (*PgQuery__NextValueExpr_Closure) (const PgQuery__NextValueExpr *message, void *closure_data); typedef void (*PgQuery__InferenceElem_Closure) (const PgQuery__InferenceElem *message, void *closure_data); typedef void (*PgQuery__TargetEntry_Closure) (const PgQuery__TargetEntry *message, void *closure_data); typedef void (*PgQuery__RangeTblRef_Closure) (const PgQuery__RangeTblRef *message, void *closure_data); typedef void (*PgQuery__JoinExpr_Closure) (const PgQuery__JoinExpr *message, void *closure_data); typedef void (*PgQuery__FromExpr_Closure) (const PgQuery__FromExpr *message, void *closure_data); typedef void (*PgQuery__OnConflictExpr_Closure) (const PgQuery__OnConflictExpr *message, void *closure_data); typedef void (*PgQuery__IntoClause_Closure) (const PgQuery__IntoClause *message, void *closure_data); typedef void (*PgQuery__MergeAction_Closure) (const PgQuery__MergeAction *message, void *closure_data); typedef void (*PgQuery__RawStmt_Closure) (const PgQuery__RawStmt *message, void *closure_data); typedef void (*PgQuery__Query_Closure) (const PgQuery__Query *message, void *closure_data); typedef void (*PgQuery__InsertStmt_Closure) (const PgQuery__InsertStmt *message, void *closure_data); typedef void (*PgQuery__DeleteStmt_Closure) (const PgQuery__DeleteStmt *message, void *closure_data); typedef void (*PgQuery__UpdateStmt_Closure) (const PgQuery__UpdateStmt *message, void *closure_data); typedef void (*PgQuery__MergeStmt_Closure) (const PgQuery__MergeStmt *message, void *closure_data); typedef void (*PgQuery__SelectStmt_Closure) (const PgQuery__SelectStmt *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__AlterTableStmt_Closure) (const PgQuery__AlterTableStmt *message, void *closure_data); typedef void (*PgQuery__AlterTableCmd_Closure) (const PgQuery__AlterTableCmd *message, void *closure_data); typedef void (*PgQuery__AlterDomainStmt_Closure) (const PgQuery__AlterDomainStmt *message, void *closure_data); typedef void (*PgQuery__SetOperationStmt_Closure) (const PgQuery__SetOperationStmt *message, void *closure_data); typedef void (*PgQuery__GrantStmt_Closure) (const PgQuery__GrantStmt *message, void *closure_data); typedef void (*PgQuery__GrantRoleStmt_Closure) (const PgQuery__GrantRoleStmt *message, void *closure_data); typedef void (*PgQuery__AlterDefaultPrivilegesStmt_Closure) (const PgQuery__AlterDefaultPrivilegesStmt *message, void *closure_data); typedef void (*PgQuery__ClosePortalStmt_Closure) (const PgQuery__ClosePortalStmt *message, void *closure_data); typedef void (*PgQuery__ClusterStmt_Closure) (const PgQuery__ClusterStmt *message, void *closure_data); typedef void (*PgQuery__CopyStmt_Closure) (const PgQuery__CopyStmt *message, void *closure_data); typedef void (*PgQuery__CreateStmt_Closure) (const PgQuery__CreateStmt *message, void *closure_data); typedef void (*PgQuery__DefineStmt_Closure) (const PgQuery__DefineStmt *message, void *closure_data); typedef void (*PgQuery__DropStmt_Closure) (const PgQuery__DropStmt *message, void *closure_data); typedef void (*PgQuery__TruncateStmt_Closure) (const PgQuery__TruncateStmt *message, void *closure_data); typedef void (*PgQuery__CommentStmt_Closure) (const PgQuery__CommentStmt *message, void *closure_data); typedef void (*PgQuery__FetchStmt_Closure) (const PgQuery__FetchStmt *message, void *closure_data); typedef void (*PgQuery__IndexStmt_Closure) (const PgQuery__IndexStmt *message, void *closure_data); typedef void (*PgQuery__CreateFunctionStmt_Closure) (const PgQuery__CreateFunctionStmt *message, void *closure_data); typedef void (*PgQuery__AlterFunctionStmt_Closure) (const PgQuery__AlterFunctionStmt *message, void *closure_data); typedef void (*PgQuery__DoStmt_Closure) (const PgQuery__DoStmt *message, void *closure_data); typedef void (*PgQuery__RenameStmt_Closure) (const PgQuery__RenameStmt *message, void *closure_data); typedef void (*PgQuery__RuleStmt_Closure) (const PgQuery__RuleStmt *message, void *closure_data); typedef void (*PgQuery__NotifyStmt_Closure) (const PgQuery__NotifyStmt *message, void *closure_data); typedef void (*PgQuery__ListenStmt_Closure) (const PgQuery__ListenStmt *message, void *closure_data); typedef void (*PgQuery__UnlistenStmt_Closure) (const PgQuery__UnlistenStmt *message, void *closure_data); typedef void (*PgQuery__TransactionStmt_Closure) (const PgQuery__TransactionStmt *message, void *closure_data); typedef void (*PgQuery__ViewStmt_Closure) (const PgQuery__ViewStmt *message, void *closure_data); typedef void (*PgQuery__LoadStmt_Closure) (const PgQuery__LoadStmt *message, void *closure_data); typedef void (*PgQuery__CreateDomainStmt_Closure) (const PgQuery__CreateDomainStmt *message, void *closure_data); typedef void (*PgQuery__CreatedbStmt_Closure) (const PgQuery__CreatedbStmt *message, void *closure_data); typedef void (*PgQuery__DropdbStmt_Closure) (const PgQuery__DropdbStmt *message, void *closure_data); typedef void (*PgQuery__VacuumStmt_Closure) (const PgQuery__VacuumStmt *message, void *closure_data); typedef void (*PgQuery__ExplainStmt_Closure) (const PgQuery__ExplainStmt *message, void *closure_data); typedef void (*PgQuery__CreateTableAsStmt_Closure) (const PgQuery__CreateTableAsStmt *message, void *closure_data); typedef void (*PgQuery__CreateSeqStmt_Closure) (const PgQuery__CreateSeqStmt *message, void *closure_data); typedef void (*PgQuery__AlterSeqStmt_Closure) (const PgQuery__AlterSeqStmt *message, void *closure_data); typedef void (*PgQuery__VariableSetStmt_Closure) (const PgQuery__VariableSetStmt *message, void *closure_data); typedef void (*PgQuery__VariableShowStmt_Closure) (const PgQuery__VariableShowStmt *message, void *closure_data); typedef void (*PgQuery__DiscardStmt_Closure) (const PgQuery__DiscardStmt *message, void *closure_data); typedef void (*PgQuery__CreateTrigStmt_Closure) (const PgQuery__CreateTrigStmt *message, void *closure_data); typedef void (*PgQuery__CreatePLangStmt_Closure) (const PgQuery__CreatePLangStmt *message, void *closure_data); typedef void (*PgQuery__CreateRoleStmt_Closure) (const PgQuery__CreateRoleStmt *message, void *closure_data); typedef void (*PgQuery__AlterRoleStmt_Closure) (const PgQuery__AlterRoleStmt *message, void *closure_data); typedef void (*PgQuery__DropRoleStmt_Closure) (const PgQuery__DropRoleStmt *message, void *closure_data); typedef void (*PgQuery__LockStmt_Closure) (const PgQuery__LockStmt *message, void *closure_data); typedef void (*PgQuery__ConstraintsSetStmt_Closure) (const PgQuery__ConstraintsSetStmt *message, void *closure_data); typedef void (*PgQuery__ReindexStmt_Closure) (const PgQuery__ReindexStmt *message, void *closure_data); typedef void (*PgQuery__CheckPointStmt_Closure) (const PgQuery__CheckPointStmt *message, void *closure_data); typedef void (*PgQuery__CreateSchemaStmt_Closure) (const PgQuery__CreateSchemaStmt *message, void *closure_data); typedef void (*PgQuery__AlterDatabaseStmt_Closure) (const PgQuery__AlterDatabaseStmt *message, void *closure_data); typedef void (*PgQuery__AlterDatabaseRefreshCollStmt_Closure) (const PgQuery__AlterDatabaseRefreshCollStmt *message, void *closure_data); typedef void (*PgQuery__AlterDatabaseSetStmt_Closure) (const PgQuery__AlterDatabaseSetStmt *message, void *closure_data); typedef void (*PgQuery__AlterRoleSetStmt_Closure) (const PgQuery__AlterRoleSetStmt *message, void *closure_data); typedef void (*PgQuery__CreateConversionStmt_Closure) (const PgQuery__CreateConversionStmt *message, void *closure_data); typedef void (*PgQuery__CreateCastStmt_Closure) (const PgQuery__CreateCastStmt *message, void *closure_data); typedef void (*PgQuery__CreateOpClassStmt_Closure) (const PgQuery__CreateOpClassStmt *message, void *closure_data); typedef void (*PgQuery__CreateOpFamilyStmt_Closure) (const PgQuery__CreateOpFamilyStmt *message, void *closure_data); typedef void (*PgQuery__AlterOpFamilyStmt_Closure) (const PgQuery__AlterOpFamilyStmt *message, void *closure_data); typedef void (*PgQuery__PrepareStmt_Closure) (const PgQuery__PrepareStmt *message, void *closure_data); typedef void (*PgQuery__ExecuteStmt_Closure) (const PgQuery__ExecuteStmt *message, void *closure_data); typedef void (*PgQuery__DeallocateStmt_Closure) (const PgQuery__DeallocateStmt *message, void *closure_data); typedef void (*PgQuery__DeclareCursorStmt_Closure) (const PgQuery__DeclareCursorStmt *message, void *closure_data); typedef void (*PgQuery__CreateTableSpaceStmt_Closure) (const PgQuery__CreateTableSpaceStmt *message, void *closure_data); typedef void (*PgQuery__DropTableSpaceStmt_Closure) (const PgQuery__DropTableSpaceStmt *message, void *closure_data); typedef void (*PgQuery__AlterObjectDependsStmt_Closure) (const PgQuery__AlterObjectDependsStmt *message, void *closure_data); typedef void (*PgQuery__AlterObjectSchemaStmt_Closure) (const PgQuery__AlterObjectSchemaStmt *message, void *closure_data); typedef void (*PgQuery__AlterOwnerStmt_Closure) (const PgQuery__AlterOwnerStmt *message, void *closure_data); typedef void (*PgQuery__AlterOperatorStmt_Closure) (const PgQuery__AlterOperatorStmt *message, void *closure_data); typedef void (*PgQuery__AlterTypeStmt_Closure) (const PgQuery__AlterTypeStmt *message, void *closure_data); typedef void (*PgQuery__DropOwnedStmt_Closure) (const PgQuery__DropOwnedStmt *message, void *closure_data); typedef void (*PgQuery__ReassignOwnedStmt_Closure) (const PgQuery__ReassignOwnedStmt *message, void *closure_data); typedef void (*PgQuery__CompositeTypeStmt_Closure) (const PgQuery__CompositeTypeStmt *message, void *closure_data); typedef void (*PgQuery__CreateEnumStmt_Closure) (const PgQuery__CreateEnumStmt *message, void *closure_data); typedef void (*PgQuery__CreateRangeStmt_Closure) (const PgQuery__CreateRangeStmt *message, void *closure_data); typedef void (*PgQuery__AlterEnumStmt_Closure) (const PgQuery__AlterEnumStmt *message, void *closure_data); typedef void (*PgQuery__AlterTSDictionaryStmt_Closure) (const PgQuery__AlterTSDictionaryStmt *message, void *closure_data); typedef void (*PgQuery__AlterTSConfigurationStmt_Closure) (const PgQuery__AlterTSConfigurationStmt *message, void *closure_data); typedef void (*PgQuery__CreateFdwStmt_Closure) (const PgQuery__CreateFdwStmt *message, void *closure_data); typedef void (*PgQuery__AlterFdwStmt_Closure) (const PgQuery__AlterFdwStmt *message, void *closure_data); typedef void (*PgQuery__CreateForeignServerStmt_Closure) (const PgQuery__CreateForeignServerStmt *message, void *closure_data); typedef void (*PgQuery__AlterForeignServerStmt_Closure) (const PgQuery__AlterForeignServerStmt *message, void *closure_data); typedef void (*PgQuery__CreateUserMappingStmt_Closure) (const PgQuery__CreateUserMappingStmt *message, void *closure_data); typedef void (*PgQuery__AlterUserMappingStmt_Closure) (const PgQuery__AlterUserMappingStmt *message, void *closure_data); typedef void (*PgQuery__DropUserMappingStmt_Closure) (const PgQuery__DropUserMappingStmt *message, void *closure_data); typedef void (*PgQuery__AlterTableSpaceOptionsStmt_Closure) (const PgQuery__AlterTableSpaceOptionsStmt *message, void *closure_data); typedef void (*PgQuery__AlterTableMoveAllStmt_Closure) (const PgQuery__AlterTableMoveAllStmt *message, void *closure_data); typedef void (*PgQuery__SecLabelStmt_Closure) (const PgQuery__SecLabelStmt *message, void *closure_data); typedef void (*PgQuery__CreateForeignTableStmt_Closure) (const PgQuery__CreateForeignTableStmt *message, void *closure_data); typedef void (*PgQuery__ImportForeignSchemaStmt_Closure) (const PgQuery__ImportForeignSchemaStmt *message, void *closure_data); typedef void (*PgQuery__CreateExtensionStmt_Closure) (const PgQuery__CreateExtensionStmt *message, void *closure_data); typedef void (*PgQuery__AlterExtensionStmt_Closure) (const PgQuery__AlterExtensionStmt *message, void *closure_data); typedef void (*PgQuery__AlterExtensionContentsStmt_Closure) (const PgQuery__AlterExtensionContentsStmt *message, void *closure_data); typedef void (*PgQuery__CreateEventTrigStmt_Closure) (const PgQuery__CreateEventTrigStmt *message, void *closure_data); typedef void (*PgQuery__AlterEventTrigStmt_Closure) (const PgQuery__AlterEventTrigStmt *message, void *closure_data); typedef void (*PgQuery__RefreshMatViewStmt_Closure) (const PgQuery__RefreshMatViewStmt *message, void *closure_data); typedef void (*PgQuery__ReplicaIdentityStmt_Closure) (const PgQuery__ReplicaIdentityStmt *message, void *closure_data); typedef void (*PgQuery__AlterSystemStmt_Closure) (const PgQuery__AlterSystemStmt *message, void *closure_data); typedef void (*PgQuery__CreatePolicyStmt_Closure) (const PgQuery__CreatePolicyStmt *message, void *closure_data); typedef void (*PgQuery__AlterPolicyStmt_Closure) (const PgQuery__AlterPolicyStmt *message, void *closure_data); typedef void (*PgQuery__CreateTransformStmt_Closure) (const PgQuery__CreateTransformStmt *message, void *closure_data); typedef void (*PgQuery__CreateAmStmt_Closure) (const PgQuery__CreateAmStmt *message, void *closure_data); typedef void (*PgQuery__CreatePublicationStmt_Closure) (const PgQuery__CreatePublicationStmt *message, void *closure_data); typedef void (*PgQuery__AlterPublicationStmt_Closure) (const PgQuery__AlterPublicationStmt *message, void *closure_data); typedef void (*PgQuery__CreateSubscriptionStmt_Closure) (const PgQuery__CreateSubscriptionStmt *message, void *closure_data); typedef void (*PgQuery__AlterSubscriptionStmt_Closure) (const PgQuery__AlterSubscriptionStmt *message, void *closure_data); typedef void (*PgQuery__DropSubscriptionStmt_Closure) (const PgQuery__DropSubscriptionStmt *message, void *closure_data); typedef void (*PgQuery__CreateStatsStmt_Closure) (const PgQuery__CreateStatsStmt *message, void *closure_data); typedef void (*PgQuery__AlterCollationStmt_Closure) (const PgQuery__AlterCollationStmt *message, void *closure_data); typedef void (*PgQuery__CallStmt_Closure) (const PgQuery__CallStmt *message, void *closure_data); typedef void (*PgQuery__AlterStatsStmt_Closure) (const PgQuery__AlterStatsStmt *message, void *closure_data); typedef void (*PgQuery__AExpr_Closure) (const PgQuery__AExpr *message, void *closure_data); typedef void (*PgQuery__ColumnRef_Closure) (const PgQuery__ColumnRef *message, void *closure_data); typedef void (*PgQuery__ParamRef_Closure) (const PgQuery__ParamRef *message, void *closure_data); typedef void (*PgQuery__FuncCall_Closure) (const PgQuery__FuncCall *message, void *closure_data); typedef void (*PgQuery__AStar_Closure) (const PgQuery__AStar *message, void *closure_data); typedef void (*PgQuery__AIndices_Closure) (const PgQuery__AIndices *message, void *closure_data); typedef void (*PgQuery__AIndirection_Closure) (const PgQuery__AIndirection *message, void *closure_data); typedef void (*PgQuery__AArrayExpr_Closure) (const PgQuery__AArrayExpr *message, void *closure_data); typedef void (*PgQuery__ResTarget_Closure) (const PgQuery__ResTarget *message, void *closure_data); typedef void (*PgQuery__MultiAssignRef_Closure) (const PgQuery__MultiAssignRef *message, void *closure_data); typedef void (*PgQuery__TypeCast_Closure) (const PgQuery__TypeCast *message, void *closure_data); typedef void (*PgQuery__CollateClause_Closure) (const PgQuery__CollateClause *message, void *closure_data); typedef void (*PgQuery__SortBy_Closure) (const PgQuery__SortBy *message, void *closure_data); typedef void (*PgQuery__WindowDef_Closure) (const PgQuery__WindowDef *message, void *closure_data); typedef void (*PgQuery__RangeSubselect_Closure) (const PgQuery__RangeSubselect *message, void *closure_data); typedef void (*PgQuery__RangeFunction_Closure) (const PgQuery__RangeFunction *message, void *closure_data); typedef void (*PgQuery__RangeTableSample_Closure) (const PgQuery__RangeTableSample *message, void *closure_data); typedef void (*PgQuery__RangeTableFunc_Closure) (const PgQuery__RangeTableFunc *message, void *closure_data); typedef void (*PgQuery__RangeTableFuncCol_Closure) (const PgQuery__RangeTableFuncCol *message, void *closure_data); typedef void (*PgQuery__TypeName_Closure) (const PgQuery__TypeName *message, void *closure_data); typedef void (*PgQuery__ColumnDef_Closure) (const PgQuery__ColumnDef *message, void *closure_data); typedef void (*PgQuery__IndexElem_Closure) (const PgQuery__IndexElem *message, void *closure_data); typedef void (*PgQuery__StatsElem_Closure) (const PgQuery__StatsElem *message, void *closure_data); typedef void (*PgQuery__Constraint_Closure) (const PgQuery__Constraint *message, void *closure_data); typedef void (*PgQuery__DefElem_Closure) (const PgQuery__DefElem *message, void *closure_data); typedef void (*PgQuery__RangeTblEntry_Closure) (const PgQuery__RangeTblEntry *message, void *closure_data); typedef void (*PgQuery__RangeTblFunction_Closure) (const PgQuery__RangeTblFunction *message, void *closure_data); typedef void (*PgQuery__TableSampleClause_Closure) (const PgQuery__TableSampleClause *message, void *closure_data); typedef void (*PgQuery__WithCheckOption_Closure) (const PgQuery__WithCheckOption *message, void *closure_data); typedef void (*PgQuery__SortGroupClause_Closure) (const PgQuery__SortGroupClause *message, void *closure_data); typedef void (*PgQuery__GroupingSet_Closure) (const PgQuery__GroupingSet *message, void *closure_data); typedef void (*PgQuery__WindowClause_Closure) (const PgQuery__WindowClause *message, void *closure_data); typedef void (*PgQuery__ObjectWithArgs_Closure) (const PgQuery__ObjectWithArgs *message, void *closure_data); typedef void (*PgQuery__AccessPriv_Closure) (const PgQuery__AccessPriv *message, void *closure_data); typedef void (*PgQuery__CreateOpClassItem_Closure) (const PgQuery__CreateOpClassItem *message, void *closure_data); typedef void (*PgQuery__TableLikeClause_Closure) (const PgQuery__TableLikeClause *message, void *closure_data); typedef void (*PgQuery__FunctionParameter_Closure) (const PgQuery__FunctionParameter *message, void *closure_data); typedef void (*PgQuery__LockingClause_Closure) (const PgQuery__LockingClause *message, void *closure_data); typedef void (*PgQuery__RowMarkClause_Closure) (const PgQuery__RowMarkClause *message, void *closure_data); typedef void (*PgQuery__XmlSerialize_Closure) (const PgQuery__XmlSerialize *message, void *closure_data); typedef void (*PgQuery__WithClause_Closure) (const PgQuery__WithClause *message, void *closure_data); typedef void (*PgQuery__InferClause_Closure) (const PgQuery__InferClause *message, void *closure_data); typedef void (*PgQuery__OnConflictClause_Closure) (const PgQuery__OnConflictClause *message, void *closure_data); typedef void (*PgQuery__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__RoleSpec_Closure) (const PgQuery__RoleSpec *message, void *closure_data); typedef void (*PgQuery__TriggerTransition_Closure) (const PgQuery__TriggerTransition *message, void *closure_data); typedef void (*PgQuery__PartitionElem_Closure) (const PgQuery__PartitionElem *message, void *closure_data); typedef void (*PgQuery__PartitionSpec_Closure) (const PgQuery__PartitionSpec *message, void *closure_data); typedef void (*PgQuery__PartitionBoundSpec_Closure) (const PgQuery__PartitionBoundSpec *message, void *closure_data); typedef void (*PgQuery__PartitionRangeDatum_Closure) (const PgQuery__PartitionRangeDatum *message, void *closure_data); typedef void (*PgQuery__PartitionCmd_Closure) (const PgQuery__PartitionCmd *message, void *closure_data); typedef void (*PgQuery__VacuumRelation_Closure) (const PgQuery__VacuumRelation *message, void *closure_data); typedef void (*PgQuery__PublicationObjSpec_Closure) (const PgQuery__PublicationObjSpec *message, void *closure_data); typedef void (*PgQuery__PublicationTable_Closure) (const PgQuery__PublicationTable *message, void *closure_data); typedef void (*PgQuery__InlineCodeBlock_Closure) (const PgQuery__InlineCodeBlock *message, void *closure_data); typedef void (*PgQuery__CallContext_Closure) (const PgQuery__CallContext *message, void *closure_data); typedef void (*PgQuery__ScanToken_Closure) (const PgQuery__ScanToken *message, void *closure_data); /* --- services --- */ /* --- descriptors --- */ extern const ProtobufCEnumDescriptor pg_query__overriding_kind__descriptor; extern const ProtobufCEnumDescriptor pg_query__query_source__descriptor; extern const ProtobufCEnumDescriptor pg_query__sort_by_dir__descriptor; extern const ProtobufCEnumDescriptor pg_query__sort_by_nulls__descriptor; extern const ProtobufCEnumDescriptor pg_query__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_range_datum_kind__descriptor; extern const ProtobufCEnumDescriptor pg_query__rtekind__descriptor; extern const ProtobufCEnumDescriptor pg_query__wcokind__descriptor; extern const ProtobufCEnumDescriptor pg_query__grouping_set_kind__descriptor; extern const ProtobufCEnumDescriptor pg_query__ctematerialize__descriptor; extern const ProtobufCEnumDescriptor pg_query__set_operation__descriptor; extern const ProtobufCEnumDescriptor pg_query__object_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__drop_behavior__descriptor; extern const ProtobufCEnumDescriptor pg_query__alter_table_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__grant_target_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__variable_set_kind__descriptor; extern const ProtobufCEnumDescriptor pg_query__constr_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__import_foreign_schema_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__role_stmt_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__fetch_direction__descriptor; extern const ProtobufCEnumDescriptor pg_query__function_parameter_mode__descriptor; extern const ProtobufCEnumDescriptor pg_query__transaction_stmt_kind__descriptor; extern const ProtobufCEnumDescriptor pg_query__view_check_option__descriptor; extern const ProtobufCEnumDescriptor pg_query__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__on_commit_action__descriptor; extern const ProtobufCEnumDescriptor pg_query__param_kind__descriptor; extern const ProtobufCEnumDescriptor pg_query__coercion_context__descriptor; extern const ProtobufCEnumDescriptor pg_query__coercion_form__descriptor; extern const ProtobufCEnumDescriptor pg_query__bool_expr_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__sub_link_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__row_compare_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__min_max_op__descriptor; extern const ProtobufCEnumDescriptor pg_query__sqlvalue_function_op__descriptor; extern const ProtobufCEnumDescriptor pg_query__xml_expr_op__descriptor; extern const ProtobufCEnumDescriptor pg_query__xml_option_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__null_test_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__bool_test_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__cmd_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__join_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__agg_strategy__descriptor; extern const ProtobufCEnumDescriptor pg_query__agg_split__descriptor; extern const ProtobufCEnumDescriptor pg_query__set_op_cmd__descriptor; extern const ProtobufCEnumDescriptor pg_query__set_op_strategy__descriptor; extern const ProtobufCEnumDescriptor pg_query__on_conflict_action__descriptor; extern const ProtobufCEnumDescriptor pg_query__limit_option__descriptor; extern const ProtobufCEnumDescriptor pg_query__lock_clause_strength__descriptor; extern const ProtobufCEnumDescriptor pg_query__lock_wait_policy__descriptor; extern const ProtobufCEnumDescriptor pg_query__lock_tuple_mode__descriptor; extern const ProtobufCEnumDescriptor pg_query__keyword_kind__descriptor; extern const ProtobufCEnumDescriptor pg_query__token__descriptor; extern const ProtobufCMessageDescriptor pg_query__parse_result__descriptor; extern const ProtobufCMessageDescriptor pg_query__scan_result__descriptor; extern const ProtobufCMessageDescriptor pg_query__node__descriptor; extern const ProtobufCMessageDescriptor pg_query__integer__descriptor; extern const ProtobufCMessageDescriptor pg_query__float__descriptor; extern const ProtobufCMessageDescriptor pg_query__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__var__descriptor; extern const ProtobufCMessageDescriptor pg_query__param__descriptor; extern const ProtobufCMessageDescriptor pg_query__aggref__descriptor; extern const ProtobufCMessageDescriptor pg_query__grouping_func__descriptor; extern const ProtobufCMessageDescriptor pg_query__window_func__descriptor; extern const ProtobufCMessageDescriptor pg_query__subscripting_ref__descriptor; extern const ProtobufCMessageDescriptor pg_query__func_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__named_arg_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__op_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__distinct_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__null_if_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__scalar_array_op_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__bool_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__sub_link__descriptor; extern const ProtobufCMessageDescriptor pg_query__sub_plan__descriptor; extern const ProtobufCMessageDescriptor pg_query__alternative_sub_plan__descriptor; extern const ProtobufCMessageDescriptor pg_query__field_select__descriptor; extern const ProtobufCMessageDescriptor pg_query__field_store__descriptor; extern const ProtobufCMessageDescriptor pg_query__relabel_type__descriptor; extern const ProtobufCMessageDescriptor pg_query__coerce_via_io__descriptor; extern const ProtobufCMessageDescriptor pg_query__array_coerce_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__convert_rowtype_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__collate_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__case_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__case_when__descriptor; extern const ProtobufCMessageDescriptor pg_query__case_test_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__array_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__row_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__row_compare_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__coalesce_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__min_max_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__sqlvalue_function__descriptor; extern const ProtobufCMessageDescriptor pg_query__xml_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__null_test__descriptor; extern const ProtobufCMessageDescriptor pg_query__boolean_test__descriptor; extern const ProtobufCMessageDescriptor pg_query__coerce_to_domain__descriptor; extern const ProtobufCMessageDescriptor pg_query__coerce_to_domain_value__descriptor; extern const ProtobufCMessageDescriptor pg_query__set_to_default__descriptor; extern const ProtobufCMessageDescriptor pg_query__current_of_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__next_value_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__inference_elem__descriptor; extern const ProtobufCMessageDescriptor pg_query__target_entry__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_tbl_ref__descriptor; extern const ProtobufCMessageDescriptor pg_query__join_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__from_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__on_conflict_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__into_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__merge_action__descriptor; extern const ProtobufCMessageDescriptor pg_query__raw_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__query__descriptor; extern const ProtobufCMessageDescriptor pg_query__insert_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__delete_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__update_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__merge_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__select_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__return_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__plassign_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_table_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_table_cmd__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_domain_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__set_operation_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__grant_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__grant_role_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_default_privileges_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__close_portal_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__cluster_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__copy_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__define_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__drop_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__truncate_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__comment_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__fetch_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__index_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_function_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_function_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__do_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__rename_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__rule_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__notify_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__listen_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__unlisten_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__transaction_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__view_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__load_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_domain_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__createdb_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__dropdb_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__vacuum_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__explain_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_table_as_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_seq_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_seq_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__variable_set_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__variable_show_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__discard_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_trig_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_plang_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_role_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_role_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__drop_role_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__lock_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__constraints_set_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__reindex_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__check_point_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_schema_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_database_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_database_refresh_coll_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_database_set_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_role_set_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_conversion_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_cast_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_op_class_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_op_family_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_op_family_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__prepare_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__execute_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__deallocate_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__declare_cursor_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_table_space_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__drop_table_space_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_object_depends_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_object_schema_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_owner_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_operator_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_type_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__drop_owned_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__reassign_owned_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__composite_type_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_enum_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_range_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_enum_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_tsdictionary_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_tsconfiguration_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_fdw_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_fdw_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_foreign_server_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_foreign_server_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_user_mapping_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_user_mapping_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__drop_user_mapping_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_table_space_options_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_table_move_all_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__sec_label_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_foreign_table_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__import_foreign_schema_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_extension_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_extension_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_extension_contents_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_event_trig_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_event_trig_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__refresh_mat_view_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__replica_identity_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_system_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_policy_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_policy_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_transform_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_am_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_publication_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_publication_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_subscription_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_subscription_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__drop_subscription_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_stats_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_collation_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__call_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_stats_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__a__expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__column_ref__descriptor; extern const ProtobufCMessageDescriptor pg_query__param_ref__descriptor; extern const ProtobufCMessageDescriptor pg_query__func_call__descriptor; extern const ProtobufCMessageDescriptor pg_query__a__star__descriptor; extern const ProtobufCMessageDescriptor pg_query__a__indices__descriptor; extern const ProtobufCMessageDescriptor pg_query__a__indirection__descriptor; extern const ProtobufCMessageDescriptor pg_query__a__array_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__res_target__descriptor; extern const ProtobufCMessageDescriptor pg_query__multi_assign_ref__descriptor; extern const ProtobufCMessageDescriptor pg_query__type_cast__descriptor; extern const ProtobufCMessageDescriptor pg_query__collate_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__sort_by__descriptor; extern const ProtobufCMessageDescriptor pg_query__window_def__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_subselect__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_function__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_table_sample__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_table_func__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_table_func_col__descriptor; extern const ProtobufCMessageDescriptor pg_query__type_name__descriptor; extern const ProtobufCMessageDescriptor pg_query__column_def__descriptor; extern const ProtobufCMessageDescriptor pg_query__index_elem__descriptor; extern const ProtobufCMessageDescriptor pg_query__stats_elem__descriptor; extern const ProtobufCMessageDescriptor pg_query__constraint__descriptor; extern const ProtobufCMessageDescriptor pg_query__def_elem__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_tbl_entry__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_tbl_function__descriptor; extern const ProtobufCMessageDescriptor pg_query__table_sample_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__with_check_option__descriptor; extern const ProtobufCMessageDescriptor pg_query__sort_group_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__grouping_set__descriptor; extern const ProtobufCMessageDescriptor pg_query__window_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__object_with_args__descriptor; extern const ProtobufCMessageDescriptor pg_query__access_priv__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_op_class_item__descriptor; extern const ProtobufCMessageDescriptor pg_query__table_like_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__function_parameter__descriptor; extern const ProtobufCMessageDescriptor pg_query__locking_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__row_mark_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__xml_serialize__descriptor; extern const ProtobufCMessageDescriptor pg_query__with_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__infer_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__on_conflict_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__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__role_spec__descriptor; extern const ProtobufCMessageDescriptor pg_query__trigger_transition__descriptor; extern const ProtobufCMessageDescriptor pg_query__partition_elem__descriptor; extern const ProtobufCMessageDescriptor pg_query__partition_spec__descriptor; extern const ProtobufCMessageDescriptor pg_query__partition_bound_spec__descriptor; extern const ProtobufCMessageDescriptor pg_query__partition_range_datum__descriptor; extern const ProtobufCMessageDescriptor pg_query__partition_cmd__descriptor; extern const ProtobufCMessageDescriptor pg_query__vacuum_relation__descriptor; extern const ProtobufCMessageDescriptor pg_query__publication_obj_spec__descriptor; extern const ProtobufCMessageDescriptor pg_query__publication_table__descriptor; extern const ProtobufCMessageDescriptor pg_query__inline_code_block__descriptor; extern const ProtobufCMessageDescriptor pg_query__call_context__descriptor; extern const ProtobufCMessageDescriptor pg_query__scan_token__descriptor; PROTOBUF_C__END_DECLS #endif /* PROTOBUF_C_protobuf_2fpg_5fquery_2eproto__INCLUDED */ pg_query-4.2.3/ext/pg_query/include/protobuf/pg_query.pb.h0000644000004100000410002264150314510636647023756 0ustar www-datawww-data// Generated by the protocol buffer compiler. DO NOT EDIT! // source: protobuf/pg_query.proto #ifndef GOOGLE_PROTOBUF_INCLUDED_protobuf_2fpg_5fquery_2eproto #define GOOGLE_PROTOBUF_INCLUDED_protobuf_2fpg_5fquery_2eproto #include #include #include #if PROTOBUF_VERSION < 3021000 #error This file was generated by a newer version of protoc which is #error incompatible with your Protocol Buffer headers. Please update #error your headers. #endif #if 3021009 < PROTOBUF_MIN_PROTOC_VERSION #error This file was generated by an older version of protoc which is #error incompatible with your Protocol Buffer headers. Please #error regenerate this file with a newer version of protoc. #endif #include #include #include #include #include #include #include #include #include #include // IWYU pragma: export #include // IWYU pragma: export #include #include // @@protoc_insertion_point(includes) #include #define PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto PROTOBUF_NAMESPACE_OPEN namespace internal { class AnyMetadata; } // namespace internal PROTOBUF_NAMESPACE_CLOSE // Internal implementation detail -- do not use these members. struct TableStruct_protobuf_2fpg_5fquery_2eproto { static const uint32_t offsets[]; }; extern const ::PROTOBUF_NAMESPACE_ID::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 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 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 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 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 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 PROTOBUF_NAMESPACE_OPEN template<> ::pg_query::A_ArrayExpr* Arena::CreateMaybeMessage<::pg_query::A_ArrayExpr>(Arena*); template<> ::pg_query::A_Const* Arena::CreateMaybeMessage<::pg_query::A_Const>(Arena*); template<> ::pg_query::A_Expr* Arena::CreateMaybeMessage<::pg_query::A_Expr>(Arena*); template<> ::pg_query::A_Indices* Arena::CreateMaybeMessage<::pg_query::A_Indices>(Arena*); template<> ::pg_query::A_Indirection* Arena::CreateMaybeMessage<::pg_query::A_Indirection>(Arena*); template<> ::pg_query::A_Star* Arena::CreateMaybeMessage<::pg_query::A_Star>(Arena*); template<> ::pg_query::AccessPriv* Arena::CreateMaybeMessage<::pg_query::AccessPriv>(Arena*); template<> ::pg_query::Aggref* Arena::CreateMaybeMessage<::pg_query::Aggref>(Arena*); template<> ::pg_query::Alias* Arena::CreateMaybeMessage<::pg_query::Alias>(Arena*); template<> ::pg_query::AlterCollationStmt* Arena::CreateMaybeMessage<::pg_query::AlterCollationStmt>(Arena*); template<> ::pg_query::AlterDatabaseRefreshCollStmt* Arena::CreateMaybeMessage<::pg_query::AlterDatabaseRefreshCollStmt>(Arena*); template<> ::pg_query::AlterDatabaseSetStmt* Arena::CreateMaybeMessage<::pg_query::AlterDatabaseSetStmt>(Arena*); template<> ::pg_query::AlterDatabaseStmt* Arena::CreateMaybeMessage<::pg_query::AlterDatabaseStmt>(Arena*); template<> ::pg_query::AlterDefaultPrivilegesStmt* Arena::CreateMaybeMessage<::pg_query::AlterDefaultPrivilegesStmt>(Arena*); template<> ::pg_query::AlterDomainStmt* Arena::CreateMaybeMessage<::pg_query::AlterDomainStmt>(Arena*); template<> ::pg_query::AlterEnumStmt* Arena::CreateMaybeMessage<::pg_query::AlterEnumStmt>(Arena*); template<> ::pg_query::AlterEventTrigStmt* Arena::CreateMaybeMessage<::pg_query::AlterEventTrigStmt>(Arena*); template<> ::pg_query::AlterExtensionContentsStmt* Arena::CreateMaybeMessage<::pg_query::AlterExtensionContentsStmt>(Arena*); template<> ::pg_query::AlterExtensionStmt* Arena::CreateMaybeMessage<::pg_query::AlterExtensionStmt>(Arena*); template<> ::pg_query::AlterFdwStmt* Arena::CreateMaybeMessage<::pg_query::AlterFdwStmt>(Arena*); template<> ::pg_query::AlterForeignServerStmt* Arena::CreateMaybeMessage<::pg_query::AlterForeignServerStmt>(Arena*); template<> ::pg_query::AlterFunctionStmt* Arena::CreateMaybeMessage<::pg_query::AlterFunctionStmt>(Arena*); template<> ::pg_query::AlterObjectDependsStmt* Arena::CreateMaybeMessage<::pg_query::AlterObjectDependsStmt>(Arena*); template<> ::pg_query::AlterObjectSchemaStmt* Arena::CreateMaybeMessage<::pg_query::AlterObjectSchemaStmt>(Arena*); template<> ::pg_query::AlterOpFamilyStmt* Arena::CreateMaybeMessage<::pg_query::AlterOpFamilyStmt>(Arena*); template<> ::pg_query::AlterOperatorStmt* Arena::CreateMaybeMessage<::pg_query::AlterOperatorStmt>(Arena*); template<> ::pg_query::AlterOwnerStmt* Arena::CreateMaybeMessage<::pg_query::AlterOwnerStmt>(Arena*); template<> ::pg_query::AlterPolicyStmt* Arena::CreateMaybeMessage<::pg_query::AlterPolicyStmt>(Arena*); template<> ::pg_query::AlterPublicationStmt* Arena::CreateMaybeMessage<::pg_query::AlterPublicationStmt>(Arena*); template<> ::pg_query::AlterRoleSetStmt* Arena::CreateMaybeMessage<::pg_query::AlterRoleSetStmt>(Arena*); template<> ::pg_query::AlterRoleStmt* Arena::CreateMaybeMessage<::pg_query::AlterRoleStmt>(Arena*); template<> ::pg_query::AlterSeqStmt* Arena::CreateMaybeMessage<::pg_query::AlterSeqStmt>(Arena*); template<> ::pg_query::AlterStatsStmt* Arena::CreateMaybeMessage<::pg_query::AlterStatsStmt>(Arena*); template<> ::pg_query::AlterSubscriptionStmt* Arena::CreateMaybeMessage<::pg_query::AlterSubscriptionStmt>(Arena*); template<> ::pg_query::AlterSystemStmt* Arena::CreateMaybeMessage<::pg_query::AlterSystemStmt>(Arena*); template<> ::pg_query::AlterTSConfigurationStmt* Arena::CreateMaybeMessage<::pg_query::AlterTSConfigurationStmt>(Arena*); template<> ::pg_query::AlterTSDictionaryStmt* Arena::CreateMaybeMessage<::pg_query::AlterTSDictionaryStmt>(Arena*); template<> ::pg_query::AlterTableCmd* Arena::CreateMaybeMessage<::pg_query::AlterTableCmd>(Arena*); template<> ::pg_query::AlterTableMoveAllStmt* Arena::CreateMaybeMessage<::pg_query::AlterTableMoveAllStmt>(Arena*); template<> ::pg_query::AlterTableSpaceOptionsStmt* Arena::CreateMaybeMessage<::pg_query::AlterTableSpaceOptionsStmt>(Arena*); template<> ::pg_query::AlterTableStmt* Arena::CreateMaybeMessage<::pg_query::AlterTableStmt>(Arena*); template<> ::pg_query::AlterTypeStmt* Arena::CreateMaybeMessage<::pg_query::AlterTypeStmt>(Arena*); template<> ::pg_query::AlterUserMappingStmt* Arena::CreateMaybeMessage<::pg_query::AlterUserMappingStmt>(Arena*); template<> ::pg_query::AlternativeSubPlan* Arena::CreateMaybeMessage<::pg_query::AlternativeSubPlan>(Arena*); template<> ::pg_query::ArrayCoerceExpr* Arena::CreateMaybeMessage<::pg_query::ArrayCoerceExpr>(Arena*); template<> ::pg_query::ArrayExpr* Arena::CreateMaybeMessage<::pg_query::ArrayExpr>(Arena*); template<> ::pg_query::BitString* Arena::CreateMaybeMessage<::pg_query::BitString>(Arena*); template<> ::pg_query::BoolExpr* Arena::CreateMaybeMessage<::pg_query::BoolExpr>(Arena*); template<> ::pg_query::Boolean* Arena::CreateMaybeMessage<::pg_query::Boolean>(Arena*); template<> ::pg_query::BooleanTest* Arena::CreateMaybeMessage<::pg_query::BooleanTest>(Arena*); template<> ::pg_query::CTECycleClause* Arena::CreateMaybeMessage<::pg_query::CTECycleClause>(Arena*); template<> ::pg_query::CTESearchClause* Arena::CreateMaybeMessage<::pg_query::CTESearchClause>(Arena*); template<> ::pg_query::CallContext* Arena::CreateMaybeMessage<::pg_query::CallContext>(Arena*); template<> ::pg_query::CallStmt* Arena::CreateMaybeMessage<::pg_query::CallStmt>(Arena*); template<> ::pg_query::CaseExpr* Arena::CreateMaybeMessage<::pg_query::CaseExpr>(Arena*); template<> ::pg_query::CaseTestExpr* Arena::CreateMaybeMessage<::pg_query::CaseTestExpr>(Arena*); template<> ::pg_query::CaseWhen* Arena::CreateMaybeMessage<::pg_query::CaseWhen>(Arena*); template<> ::pg_query::CheckPointStmt* Arena::CreateMaybeMessage<::pg_query::CheckPointStmt>(Arena*); template<> ::pg_query::ClosePortalStmt* Arena::CreateMaybeMessage<::pg_query::ClosePortalStmt>(Arena*); template<> ::pg_query::ClusterStmt* Arena::CreateMaybeMessage<::pg_query::ClusterStmt>(Arena*); template<> ::pg_query::CoalesceExpr* Arena::CreateMaybeMessage<::pg_query::CoalesceExpr>(Arena*); template<> ::pg_query::CoerceToDomain* Arena::CreateMaybeMessage<::pg_query::CoerceToDomain>(Arena*); template<> ::pg_query::CoerceToDomainValue* Arena::CreateMaybeMessage<::pg_query::CoerceToDomainValue>(Arena*); template<> ::pg_query::CoerceViaIO* Arena::CreateMaybeMessage<::pg_query::CoerceViaIO>(Arena*); template<> ::pg_query::CollateClause* Arena::CreateMaybeMessage<::pg_query::CollateClause>(Arena*); template<> ::pg_query::CollateExpr* Arena::CreateMaybeMessage<::pg_query::CollateExpr>(Arena*); template<> ::pg_query::ColumnDef* Arena::CreateMaybeMessage<::pg_query::ColumnDef>(Arena*); template<> ::pg_query::ColumnRef* Arena::CreateMaybeMessage<::pg_query::ColumnRef>(Arena*); template<> ::pg_query::CommentStmt* Arena::CreateMaybeMessage<::pg_query::CommentStmt>(Arena*); template<> ::pg_query::CommonTableExpr* Arena::CreateMaybeMessage<::pg_query::CommonTableExpr>(Arena*); template<> ::pg_query::CompositeTypeStmt* Arena::CreateMaybeMessage<::pg_query::CompositeTypeStmt>(Arena*); template<> ::pg_query::Constraint* Arena::CreateMaybeMessage<::pg_query::Constraint>(Arena*); template<> ::pg_query::ConstraintsSetStmt* Arena::CreateMaybeMessage<::pg_query::ConstraintsSetStmt>(Arena*); template<> ::pg_query::ConvertRowtypeExpr* Arena::CreateMaybeMessage<::pg_query::ConvertRowtypeExpr>(Arena*); template<> ::pg_query::CopyStmt* Arena::CreateMaybeMessage<::pg_query::CopyStmt>(Arena*); template<> ::pg_query::CreateAmStmt* Arena::CreateMaybeMessage<::pg_query::CreateAmStmt>(Arena*); template<> ::pg_query::CreateCastStmt* Arena::CreateMaybeMessage<::pg_query::CreateCastStmt>(Arena*); template<> ::pg_query::CreateConversionStmt* Arena::CreateMaybeMessage<::pg_query::CreateConversionStmt>(Arena*); template<> ::pg_query::CreateDomainStmt* Arena::CreateMaybeMessage<::pg_query::CreateDomainStmt>(Arena*); template<> ::pg_query::CreateEnumStmt* Arena::CreateMaybeMessage<::pg_query::CreateEnumStmt>(Arena*); template<> ::pg_query::CreateEventTrigStmt* Arena::CreateMaybeMessage<::pg_query::CreateEventTrigStmt>(Arena*); template<> ::pg_query::CreateExtensionStmt* Arena::CreateMaybeMessage<::pg_query::CreateExtensionStmt>(Arena*); template<> ::pg_query::CreateFdwStmt* Arena::CreateMaybeMessage<::pg_query::CreateFdwStmt>(Arena*); template<> ::pg_query::CreateForeignServerStmt* Arena::CreateMaybeMessage<::pg_query::CreateForeignServerStmt>(Arena*); template<> ::pg_query::CreateForeignTableStmt* Arena::CreateMaybeMessage<::pg_query::CreateForeignTableStmt>(Arena*); template<> ::pg_query::CreateFunctionStmt* Arena::CreateMaybeMessage<::pg_query::CreateFunctionStmt>(Arena*); template<> ::pg_query::CreateOpClassItem* Arena::CreateMaybeMessage<::pg_query::CreateOpClassItem>(Arena*); template<> ::pg_query::CreateOpClassStmt* Arena::CreateMaybeMessage<::pg_query::CreateOpClassStmt>(Arena*); template<> ::pg_query::CreateOpFamilyStmt* Arena::CreateMaybeMessage<::pg_query::CreateOpFamilyStmt>(Arena*); template<> ::pg_query::CreatePLangStmt* Arena::CreateMaybeMessage<::pg_query::CreatePLangStmt>(Arena*); template<> ::pg_query::CreatePolicyStmt* Arena::CreateMaybeMessage<::pg_query::CreatePolicyStmt>(Arena*); template<> ::pg_query::CreatePublicationStmt* Arena::CreateMaybeMessage<::pg_query::CreatePublicationStmt>(Arena*); template<> ::pg_query::CreateRangeStmt* Arena::CreateMaybeMessage<::pg_query::CreateRangeStmt>(Arena*); template<> ::pg_query::CreateRoleStmt* Arena::CreateMaybeMessage<::pg_query::CreateRoleStmt>(Arena*); template<> ::pg_query::CreateSchemaStmt* Arena::CreateMaybeMessage<::pg_query::CreateSchemaStmt>(Arena*); template<> ::pg_query::CreateSeqStmt* Arena::CreateMaybeMessage<::pg_query::CreateSeqStmt>(Arena*); template<> ::pg_query::CreateStatsStmt* Arena::CreateMaybeMessage<::pg_query::CreateStatsStmt>(Arena*); template<> ::pg_query::CreateStmt* Arena::CreateMaybeMessage<::pg_query::CreateStmt>(Arena*); template<> ::pg_query::CreateSubscriptionStmt* Arena::CreateMaybeMessage<::pg_query::CreateSubscriptionStmt>(Arena*); template<> ::pg_query::CreateTableAsStmt* Arena::CreateMaybeMessage<::pg_query::CreateTableAsStmt>(Arena*); template<> ::pg_query::CreateTableSpaceStmt* Arena::CreateMaybeMessage<::pg_query::CreateTableSpaceStmt>(Arena*); template<> ::pg_query::CreateTransformStmt* Arena::CreateMaybeMessage<::pg_query::CreateTransformStmt>(Arena*); template<> ::pg_query::CreateTrigStmt* Arena::CreateMaybeMessage<::pg_query::CreateTrigStmt>(Arena*); template<> ::pg_query::CreateUserMappingStmt* Arena::CreateMaybeMessage<::pg_query::CreateUserMappingStmt>(Arena*); template<> ::pg_query::CreatedbStmt* Arena::CreateMaybeMessage<::pg_query::CreatedbStmt>(Arena*); template<> ::pg_query::CurrentOfExpr* Arena::CreateMaybeMessage<::pg_query::CurrentOfExpr>(Arena*); template<> ::pg_query::DeallocateStmt* Arena::CreateMaybeMessage<::pg_query::DeallocateStmt>(Arena*); template<> ::pg_query::DeclareCursorStmt* Arena::CreateMaybeMessage<::pg_query::DeclareCursorStmt>(Arena*); template<> ::pg_query::DefElem* Arena::CreateMaybeMessage<::pg_query::DefElem>(Arena*); template<> ::pg_query::DefineStmt* Arena::CreateMaybeMessage<::pg_query::DefineStmt>(Arena*); template<> ::pg_query::DeleteStmt* Arena::CreateMaybeMessage<::pg_query::DeleteStmt>(Arena*); template<> ::pg_query::DiscardStmt* Arena::CreateMaybeMessage<::pg_query::DiscardStmt>(Arena*); template<> ::pg_query::DistinctExpr* Arena::CreateMaybeMessage<::pg_query::DistinctExpr>(Arena*); template<> ::pg_query::DoStmt* Arena::CreateMaybeMessage<::pg_query::DoStmt>(Arena*); template<> ::pg_query::DropOwnedStmt* Arena::CreateMaybeMessage<::pg_query::DropOwnedStmt>(Arena*); template<> ::pg_query::DropRoleStmt* Arena::CreateMaybeMessage<::pg_query::DropRoleStmt>(Arena*); template<> ::pg_query::DropStmt* Arena::CreateMaybeMessage<::pg_query::DropStmt>(Arena*); template<> ::pg_query::DropSubscriptionStmt* Arena::CreateMaybeMessage<::pg_query::DropSubscriptionStmt>(Arena*); template<> ::pg_query::DropTableSpaceStmt* Arena::CreateMaybeMessage<::pg_query::DropTableSpaceStmt>(Arena*); template<> ::pg_query::DropUserMappingStmt* Arena::CreateMaybeMessage<::pg_query::DropUserMappingStmt>(Arena*); template<> ::pg_query::DropdbStmt* Arena::CreateMaybeMessage<::pg_query::DropdbStmt>(Arena*); template<> ::pg_query::ExecuteStmt* Arena::CreateMaybeMessage<::pg_query::ExecuteStmt>(Arena*); template<> ::pg_query::ExplainStmt* Arena::CreateMaybeMessage<::pg_query::ExplainStmt>(Arena*); template<> ::pg_query::FetchStmt* Arena::CreateMaybeMessage<::pg_query::FetchStmt>(Arena*); template<> ::pg_query::FieldSelect* Arena::CreateMaybeMessage<::pg_query::FieldSelect>(Arena*); template<> ::pg_query::FieldStore* Arena::CreateMaybeMessage<::pg_query::FieldStore>(Arena*); template<> ::pg_query::Float* Arena::CreateMaybeMessage<::pg_query::Float>(Arena*); template<> ::pg_query::FromExpr* Arena::CreateMaybeMessage<::pg_query::FromExpr>(Arena*); template<> ::pg_query::FuncCall* Arena::CreateMaybeMessage<::pg_query::FuncCall>(Arena*); template<> ::pg_query::FuncExpr* Arena::CreateMaybeMessage<::pg_query::FuncExpr>(Arena*); template<> ::pg_query::FunctionParameter* Arena::CreateMaybeMessage<::pg_query::FunctionParameter>(Arena*); template<> ::pg_query::GrantRoleStmt* Arena::CreateMaybeMessage<::pg_query::GrantRoleStmt>(Arena*); template<> ::pg_query::GrantStmt* Arena::CreateMaybeMessage<::pg_query::GrantStmt>(Arena*); template<> ::pg_query::GroupingFunc* Arena::CreateMaybeMessage<::pg_query::GroupingFunc>(Arena*); template<> ::pg_query::GroupingSet* Arena::CreateMaybeMessage<::pg_query::GroupingSet>(Arena*); template<> ::pg_query::ImportForeignSchemaStmt* Arena::CreateMaybeMessage<::pg_query::ImportForeignSchemaStmt>(Arena*); template<> ::pg_query::IndexElem* Arena::CreateMaybeMessage<::pg_query::IndexElem>(Arena*); template<> ::pg_query::IndexStmt* Arena::CreateMaybeMessage<::pg_query::IndexStmt>(Arena*); template<> ::pg_query::InferClause* Arena::CreateMaybeMessage<::pg_query::InferClause>(Arena*); template<> ::pg_query::InferenceElem* Arena::CreateMaybeMessage<::pg_query::InferenceElem>(Arena*); template<> ::pg_query::InlineCodeBlock* Arena::CreateMaybeMessage<::pg_query::InlineCodeBlock>(Arena*); template<> ::pg_query::InsertStmt* Arena::CreateMaybeMessage<::pg_query::InsertStmt>(Arena*); template<> ::pg_query::IntList* Arena::CreateMaybeMessage<::pg_query::IntList>(Arena*); template<> ::pg_query::Integer* Arena::CreateMaybeMessage<::pg_query::Integer>(Arena*); template<> ::pg_query::IntoClause* Arena::CreateMaybeMessage<::pg_query::IntoClause>(Arena*); template<> ::pg_query::JoinExpr* Arena::CreateMaybeMessage<::pg_query::JoinExpr>(Arena*); template<> ::pg_query::List* Arena::CreateMaybeMessage<::pg_query::List>(Arena*); template<> ::pg_query::ListenStmt* Arena::CreateMaybeMessage<::pg_query::ListenStmt>(Arena*); template<> ::pg_query::LoadStmt* Arena::CreateMaybeMessage<::pg_query::LoadStmt>(Arena*); template<> ::pg_query::LockStmt* Arena::CreateMaybeMessage<::pg_query::LockStmt>(Arena*); template<> ::pg_query::LockingClause* Arena::CreateMaybeMessage<::pg_query::LockingClause>(Arena*); template<> ::pg_query::MergeAction* Arena::CreateMaybeMessage<::pg_query::MergeAction>(Arena*); template<> ::pg_query::MergeStmt* Arena::CreateMaybeMessage<::pg_query::MergeStmt>(Arena*); template<> ::pg_query::MergeWhenClause* Arena::CreateMaybeMessage<::pg_query::MergeWhenClause>(Arena*); template<> ::pg_query::MinMaxExpr* Arena::CreateMaybeMessage<::pg_query::MinMaxExpr>(Arena*); template<> ::pg_query::MultiAssignRef* Arena::CreateMaybeMessage<::pg_query::MultiAssignRef>(Arena*); template<> ::pg_query::NamedArgExpr* Arena::CreateMaybeMessage<::pg_query::NamedArgExpr>(Arena*); template<> ::pg_query::NextValueExpr* Arena::CreateMaybeMessage<::pg_query::NextValueExpr>(Arena*); template<> ::pg_query::Node* Arena::CreateMaybeMessage<::pg_query::Node>(Arena*); template<> ::pg_query::NotifyStmt* Arena::CreateMaybeMessage<::pg_query::NotifyStmt>(Arena*); template<> ::pg_query::NullIfExpr* Arena::CreateMaybeMessage<::pg_query::NullIfExpr>(Arena*); template<> ::pg_query::NullTest* Arena::CreateMaybeMessage<::pg_query::NullTest>(Arena*); template<> ::pg_query::ObjectWithArgs* Arena::CreateMaybeMessage<::pg_query::ObjectWithArgs>(Arena*); template<> ::pg_query::OidList* Arena::CreateMaybeMessage<::pg_query::OidList>(Arena*); template<> ::pg_query::OnConflictClause* Arena::CreateMaybeMessage<::pg_query::OnConflictClause>(Arena*); template<> ::pg_query::OnConflictExpr* Arena::CreateMaybeMessage<::pg_query::OnConflictExpr>(Arena*); template<> ::pg_query::OpExpr* Arena::CreateMaybeMessage<::pg_query::OpExpr>(Arena*); template<> ::pg_query::PLAssignStmt* Arena::CreateMaybeMessage<::pg_query::PLAssignStmt>(Arena*); template<> ::pg_query::Param* Arena::CreateMaybeMessage<::pg_query::Param>(Arena*); template<> ::pg_query::ParamRef* Arena::CreateMaybeMessage<::pg_query::ParamRef>(Arena*); template<> ::pg_query::ParseResult* Arena::CreateMaybeMessage<::pg_query::ParseResult>(Arena*); template<> ::pg_query::PartitionBoundSpec* Arena::CreateMaybeMessage<::pg_query::PartitionBoundSpec>(Arena*); template<> ::pg_query::PartitionCmd* Arena::CreateMaybeMessage<::pg_query::PartitionCmd>(Arena*); template<> ::pg_query::PartitionElem* Arena::CreateMaybeMessage<::pg_query::PartitionElem>(Arena*); template<> ::pg_query::PartitionRangeDatum* Arena::CreateMaybeMessage<::pg_query::PartitionRangeDatum>(Arena*); template<> ::pg_query::PartitionSpec* Arena::CreateMaybeMessage<::pg_query::PartitionSpec>(Arena*); template<> ::pg_query::PrepareStmt* Arena::CreateMaybeMessage<::pg_query::PrepareStmt>(Arena*); template<> ::pg_query::PublicationObjSpec* Arena::CreateMaybeMessage<::pg_query::PublicationObjSpec>(Arena*); template<> ::pg_query::PublicationTable* Arena::CreateMaybeMessage<::pg_query::PublicationTable>(Arena*); template<> ::pg_query::Query* Arena::CreateMaybeMessage<::pg_query::Query>(Arena*); template<> ::pg_query::RangeFunction* Arena::CreateMaybeMessage<::pg_query::RangeFunction>(Arena*); template<> ::pg_query::RangeSubselect* Arena::CreateMaybeMessage<::pg_query::RangeSubselect>(Arena*); template<> ::pg_query::RangeTableFunc* Arena::CreateMaybeMessage<::pg_query::RangeTableFunc>(Arena*); template<> ::pg_query::RangeTableFuncCol* Arena::CreateMaybeMessage<::pg_query::RangeTableFuncCol>(Arena*); template<> ::pg_query::RangeTableSample* Arena::CreateMaybeMessage<::pg_query::RangeTableSample>(Arena*); template<> ::pg_query::RangeTblEntry* Arena::CreateMaybeMessage<::pg_query::RangeTblEntry>(Arena*); template<> ::pg_query::RangeTblFunction* Arena::CreateMaybeMessage<::pg_query::RangeTblFunction>(Arena*); template<> ::pg_query::RangeTblRef* Arena::CreateMaybeMessage<::pg_query::RangeTblRef>(Arena*); template<> ::pg_query::RangeVar* Arena::CreateMaybeMessage<::pg_query::RangeVar>(Arena*); template<> ::pg_query::RawStmt* Arena::CreateMaybeMessage<::pg_query::RawStmt>(Arena*); template<> ::pg_query::ReassignOwnedStmt* Arena::CreateMaybeMessage<::pg_query::ReassignOwnedStmt>(Arena*); template<> ::pg_query::RefreshMatViewStmt* Arena::CreateMaybeMessage<::pg_query::RefreshMatViewStmt>(Arena*); template<> ::pg_query::ReindexStmt* Arena::CreateMaybeMessage<::pg_query::ReindexStmt>(Arena*); template<> ::pg_query::RelabelType* Arena::CreateMaybeMessage<::pg_query::RelabelType>(Arena*); template<> ::pg_query::RenameStmt* Arena::CreateMaybeMessage<::pg_query::RenameStmt>(Arena*); template<> ::pg_query::ReplicaIdentityStmt* Arena::CreateMaybeMessage<::pg_query::ReplicaIdentityStmt>(Arena*); template<> ::pg_query::ResTarget* Arena::CreateMaybeMessage<::pg_query::ResTarget>(Arena*); template<> ::pg_query::ReturnStmt* Arena::CreateMaybeMessage<::pg_query::ReturnStmt>(Arena*); template<> ::pg_query::RoleSpec* Arena::CreateMaybeMessage<::pg_query::RoleSpec>(Arena*); template<> ::pg_query::RowCompareExpr* Arena::CreateMaybeMessage<::pg_query::RowCompareExpr>(Arena*); template<> ::pg_query::RowExpr* Arena::CreateMaybeMessage<::pg_query::RowExpr>(Arena*); template<> ::pg_query::RowMarkClause* Arena::CreateMaybeMessage<::pg_query::RowMarkClause>(Arena*); template<> ::pg_query::RuleStmt* Arena::CreateMaybeMessage<::pg_query::RuleStmt>(Arena*); template<> ::pg_query::SQLValueFunction* Arena::CreateMaybeMessage<::pg_query::SQLValueFunction>(Arena*); template<> ::pg_query::ScalarArrayOpExpr* Arena::CreateMaybeMessage<::pg_query::ScalarArrayOpExpr>(Arena*); template<> ::pg_query::ScanResult* Arena::CreateMaybeMessage<::pg_query::ScanResult>(Arena*); template<> ::pg_query::ScanToken* Arena::CreateMaybeMessage<::pg_query::ScanToken>(Arena*); template<> ::pg_query::SecLabelStmt* Arena::CreateMaybeMessage<::pg_query::SecLabelStmt>(Arena*); template<> ::pg_query::SelectStmt* Arena::CreateMaybeMessage<::pg_query::SelectStmt>(Arena*); template<> ::pg_query::SetOperationStmt* Arena::CreateMaybeMessage<::pg_query::SetOperationStmt>(Arena*); template<> ::pg_query::SetToDefault* Arena::CreateMaybeMessage<::pg_query::SetToDefault>(Arena*); template<> ::pg_query::SortBy* Arena::CreateMaybeMessage<::pg_query::SortBy>(Arena*); template<> ::pg_query::SortGroupClause* Arena::CreateMaybeMessage<::pg_query::SortGroupClause>(Arena*); template<> ::pg_query::StatsElem* Arena::CreateMaybeMessage<::pg_query::StatsElem>(Arena*); template<> ::pg_query::String* Arena::CreateMaybeMessage<::pg_query::String>(Arena*); template<> ::pg_query::SubLink* Arena::CreateMaybeMessage<::pg_query::SubLink>(Arena*); template<> ::pg_query::SubPlan* Arena::CreateMaybeMessage<::pg_query::SubPlan>(Arena*); template<> ::pg_query::SubscriptingRef* Arena::CreateMaybeMessage<::pg_query::SubscriptingRef>(Arena*); template<> ::pg_query::TableFunc* Arena::CreateMaybeMessage<::pg_query::TableFunc>(Arena*); template<> ::pg_query::TableLikeClause* Arena::CreateMaybeMessage<::pg_query::TableLikeClause>(Arena*); template<> ::pg_query::TableSampleClause* Arena::CreateMaybeMessage<::pg_query::TableSampleClause>(Arena*); template<> ::pg_query::TargetEntry* Arena::CreateMaybeMessage<::pg_query::TargetEntry>(Arena*); template<> ::pg_query::TransactionStmt* Arena::CreateMaybeMessage<::pg_query::TransactionStmt>(Arena*); template<> ::pg_query::TriggerTransition* Arena::CreateMaybeMessage<::pg_query::TriggerTransition>(Arena*); template<> ::pg_query::TruncateStmt* Arena::CreateMaybeMessage<::pg_query::TruncateStmt>(Arena*); template<> ::pg_query::TypeCast* Arena::CreateMaybeMessage<::pg_query::TypeCast>(Arena*); template<> ::pg_query::TypeName* Arena::CreateMaybeMessage<::pg_query::TypeName>(Arena*); template<> ::pg_query::UnlistenStmt* Arena::CreateMaybeMessage<::pg_query::UnlistenStmt>(Arena*); template<> ::pg_query::UpdateStmt* Arena::CreateMaybeMessage<::pg_query::UpdateStmt>(Arena*); template<> ::pg_query::VacuumRelation* Arena::CreateMaybeMessage<::pg_query::VacuumRelation>(Arena*); template<> ::pg_query::VacuumStmt* Arena::CreateMaybeMessage<::pg_query::VacuumStmt>(Arena*); template<> ::pg_query::Var* Arena::CreateMaybeMessage<::pg_query::Var>(Arena*); template<> ::pg_query::VariableSetStmt* Arena::CreateMaybeMessage<::pg_query::VariableSetStmt>(Arena*); template<> ::pg_query::VariableShowStmt* Arena::CreateMaybeMessage<::pg_query::VariableShowStmt>(Arena*); template<> ::pg_query::ViewStmt* Arena::CreateMaybeMessage<::pg_query::ViewStmt>(Arena*); template<> ::pg_query::WindowClause* Arena::CreateMaybeMessage<::pg_query::WindowClause>(Arena*); template<> ::pg_query::WindowDef* Arena::CreateMaybeMessage<::pg_query::WindowDef>(Arena*); template<> ::pg_query::WindowFunc* Arena::CreateMaybeMessage<::pg_query::WindowFunc>(Arena*); template<> ::pg_query::WithCheckOption* Arena::CreateMaybeMessage<::pg_query::WithCheckOption>(Arena*); template<> ::pg_query::WithClause* Arena::CreateMaybeMessage<::pg_query::WithClause>(Arena*); template<> ::pg_query::XmlExpr* Arena::CreateMaybeMessage<::pg_query::XmlExpr>(Arena*); template<> ::pg_query::XmlSerialize* Arena::CreateMaybeMessage<::pg_query::XmlSerialize>(Arena*); PROTOBUF_NAMESPACE_CLOSE namespace pg_query { enum OverridingKind : int { OVERRIDING_KIND_UNDEFINED = 0, OVERRIDING_NOT_SET = 1, OVERRIDING_USER_VALUE = 2, OVERRIDING_SYSTEM_VALUE = 3, OverridingKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), OverridingKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool OverridingKind_IsValid(int value); constexpr OverridingKind OverridingKind_MIN = OVERRIDING_KIND_UNDEFINED; constexpr OverridingKind OverridingKind_MAX = OVERRIDING_SYSTEM_VALUE; constexpr int OverridingKind_ARRAYSIZE = OverridingKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* OverridingKind_descriptor(); template inline const std::string& OverridingKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function OverridingKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( OverridingKind_descriptor(), enum_t_value); } inline bool OverridingKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, OverridingKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( OverridingKind_descriptor(), name, value); } enum QuerySource : int { QUERY_SOURCE_UNDEFINED = 0, QSRC_ORIGINAL = 1, QSRC_PARSER = 2, QSRC_INSTEAD_RULE = 3, QSRC_QUAL_INSTEAD_RULE = 4, QSRC_NON_INSTEAD_RULE = 5, QuerySource_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), QuerySource_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool QuerySource_IsValid(int value); constexpr QuerySource QuerySource_MIN = QUERY_SOURCE_UNDEFINED; constexpr QuerySource QuerySource_MAX = QSRC_NON_INSTEAD_RULE; constexpr int QuerySource_ARRAYSIZE = QuerySource_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* QuerySource_descriptor(); template inline const std::string& QuerySource_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function QuerySource_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( QuerySource_descriptor(), enum_t_value); } inline bool QuerySource_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, QuerySource* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( QuerySource_descriptor(), name, value); } enum SortByDir : int { SORT_BY_DIR_UNDEFINED = 0, SORTBY_DEFAULT = 1, SORTBY_ASC = 2, SORTBY_DESC = 3, SORTBY_USING = 4, SortByDir_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), SortByDir_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool SortByDir_IsValid(int value); constexpr SortByDir SortByDir_MIN = SORT_BY_DIR_UNDEFINED; constexpr SortByDir SortByDir_MAX = SORTBY_USING; constexpr int SortByDir_ARRAYSIZE = SortByDir_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SortByDir_descriptor(); template inline const std::string& SortByDir_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function SortByDir_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( SortByDir_descriptor(), enum_t_value); } inline bool SortByDir_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SortByDir* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( SortByDir_descriptor(), name, value); } enum SortByNulls : int { SORT_BY_NULLS_UNDEFINED = 0, SORTBY_NULLS_DEFAULT = 1, SORTBY_NULLS_FIRST = 2, SORTBY_NULLS_LAST = 3, SortByNulls_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), SortByNulls_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool SortByNulls_IsValid(int value); constexpr SortByNulls SortByNulls_MIN = SORT_BY_NULLS_UNDEFINED; constexpr SortByNulls SortByNulls_MAX = SORTBY_NULLS_LAST; constexpr int SortByNulls_ARRAYSIZE = SortByNulls_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SortByNulls_descriptor(); template inline const std::string& SortByNulls_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function SortByNulls_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( SortByNulls_descriptor(), enum_t_value); } inline bool SortByNulls_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SortByNulls* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( SortByNulls_descriptor(), name, value); } enum 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::min(), SetQuantifier_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool SetQuantifier_IsValid(int value); constexpr SetQuantifier SetQuantifier_MIN = SET_QUANTIFIER_UNDEFINED; constexpr SetQuantifier SetQuantifier_MAX = SET_QUANTIFIER_DISTINCT; constexpr int SetQuantifier_ARRAYSIZE = SetQuantifier_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SetQuantifier_descriptor(); template inline const std::string& SetQuantifier_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function SetQuantifier_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( SetQuantifier_descriptor(), enum_t_value); } inline bool SetQuantifier_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SetQuantifier* value) { return ::PROTOBUF_NAMESPACE_ID::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::min(), A_Expr_Kind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool A_Expr_Kind_IsValid(int value); constexpr A_Expr_Kind A_Expr_Kind_MIN = A_EXPR_KIND_UNDEFINED; constexpr A_Expr_Kind A_Expr_Kind_MAX = AEXPR_NOT_BETWEEN_SYM; constexpr int A_Expr_Kind_ARRAYSIZE = A_Expr_Kind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* A_Expr_Kind_descriptor(); template inline const std::string& A_Expr_Kind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function A_Expr_Kind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( A_Expr_Kind_descriptor(), enum_t_value); } inline bool A_Expr_Kind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, A_Expr_Kind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( A_Expr_Kind_descriptor(), name, value); } enum RoleSpecType : int { ROLE_SPEC_TYPE_UNDEFINED = 0, ROLESPEC_CSTRING = 1, ROLESPEC_CURRENT_ROLE = 2, ROLESPEC_CURRENT_USER = 3, ROLESPEC_SESSION_USER = 4, ROLESPEC_PUBLIC = 5, RoleSpecType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), RoleSpecType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool RoleSpecType_IsValid(int value); constexpr RoleSpecType RoleSpecType_MIN = ROLE_SPEC_TYPE_UNDEFINED; constexpr RoleSpecType RoleSpecType_MAX = ROLESPEC_PUBLIC; constexpr int RoleSpecType_ARRAYSIZE = RoleSpecType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RoleSpecType_descriptor(); template inline const std::string& RoleSpecType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function RoleSpecType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( RoleSpecType_descriptor(), enum_t_value); } inline bool RoleSpecType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, RoleSpecType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( RoleSpecType_descriptor(), name, value); } enum TableLikeOption : int { TABLE_LIKE_OPTION_UNDEFINED = 0, CREATE_TABLE_LIKE_COMMENTS = 1, CREATE_TABLE_LIKE_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::min(), TableLikeOption_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool TableLikeOption_IsValid(int value); constexpr TableLikeOption TableLikeOption_MIN = TABLE_LIKE_OPTION_UNDEFINED; constexpr TableLikeOption TableLikeOption_MAX = CREATE_TABLE_LIKE_ALL; constexpr int TableLikeOption_ARRAYSIZE = TableLikeOption_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* TableLikeOption_descriptor(); template inline const std::string& TableLikeOption_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function TableLikeOption_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( TableLikeOption_descriptor(), enum_t_value); } inline bool TableLikeOption_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, TableLikeOption* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( TableLikeOption_descriptor(), name, value); } enum DefElemAction : int { DEF_ELEM_ACTION_UNDEFINED = 0, DEFELEM_UNSPEC = 1, DEFELEM_SET = 2, DEFELEM_ADD = 3, DEFELEM_DROP = 4, DefElemAction_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), DefElemAction_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool DefElemAction_IsValid(int value); constexpr DefElemAction DefElemAction_MIN = DEF_ELEM_ACTION_UNDEFINED; constexpr DefElemAction DefElemAction_MAX = DEFELEM_DROP; constexpr int DefElemAction_ARRAYSIZE = DefElemAction_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* DefElemAction_descriptor(); template inline const std::string& DefElemAction_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function DefElemAction_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( DefElemAction_descriptor(), enum_t_value); } inline bool DefElemAction_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, DefElemAction* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( DefElemAction_descriptor(), name, value); } enum PartitionRangeDatumKind : int { PARTITION_RANGE_DATUM_KIND_UNDEFINED = 0, PARTITION_RANGE_DATUM_MINVALUE = 1, PARTITION_RANGE_DATUM_VALUE = 2, PARTITION_RANGE_DATUM_MAXVALUE = 3, PartitionRangeDatumKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), PartitionRangeDatumKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool PartitionRangeDatumKind_IsValid(int value); constexpr PartitionRangeDatumKind PartitionRangeDatumKind_MIN = PARTITION_RANGE_DATUM_KIND_UNDEFINED; constexpr PartitionRangeDatumKind PartitionRangeDatumKind_MAX = PARTITION_RANGE_DATUM_MAXVALUE; constexpr int PartitionRangeDatumKind_ARRAYSIZE = PartitionRangeDatumKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* PartitionRangeDatumKind_descriptor(); template inline const std::string& PartitionRangeDatumKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function PartitionRangeDatumKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( PartitionRangeDatumKind_descriptor(), enum_t_value); } inline bool PartitionRangeDatumKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, PartitionRangeDatumKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( PartitionRangeDatumKind_descriptor(), name, value); } enum RTEKind : int { RTEKIND_UNDEFINED = 0, RTE_RELATION = 1, RTE_SUBQUERY = 2, RTE_JOIN = 3, RTE_FUNCTION = 4, RTE_TABLEFUNC = 5, RTE_VALUES = 6, RTE_CTE = 7, RTE_NAMEDTUPLESTORE = 8, RTE_RESULT = 9, RTEKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), RTEKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool RTEKind_IsValid(int value); constexpr RTEKind RTEKind_MIN = RTEKIND_UNDEFINED; constexpr RTEKind RTEKind_MAX = RTE_RESULT; constexpr int RTEKind_ARRAYSIZE = RTEKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RTEKind_descriptor(); template inline const std::string& RTEKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function RTEKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( RTEKind_descriptor(), enum_t_value); } inline bool RTEKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, RTEKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( RTEKind_descriptor(), name, value); } enum WCOKind : int { WCOKIND_UNDEFINED = 0, WCO_VIEW_CHECK = 1, WCO_RLS_INSERT_CHECK = 2, WCO_RLS_UPDATE_CHECK = 3, WCO_RLS_CONFLICT_CHECK = 4, WCO_RLS_MERGE_UPDATE_CHECK = 5, WCO_RLS_MERGE_DELETE_CHECK = 6, WCOKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), WCOKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool WCOKind_IsValid(int value); constexpr WCOKind WCOKind_MIN = WCOKIND_UNDEFINED; constexpr WCOKind WCOKind_MAX = WCO_RLS_MERGE_DELETE_CHECK; constexpr int WCOKind_ARRAYSIZE = WCOKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* WCOKind_descriptor(); template inline const std::string& WCOKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function WCOKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( WCOKind_descriptor(), enum_t_value); } inline bool WCOKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, WCOKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( WCOKind_descriptor(), name, value); } enum GroupingSetKind : int { GROUPING_SET_KIND_UNDEFINED = 0, GROUPING_SET_EMPTY = 1, GROUPING_SET_SIMPLE = 2, GROUPING_SET_ROLLUP = 3, GROUPING_SET_CUBE = 4, GROUPING_SET_SETS = 5, GroupingSetKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), GroupingSetKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool GroupingSetKind_IsValid(int value); constexpr GroupingSetKind GroupingSetKind_MIN = GROUPING_SET_KIND_UNDEFINED; constexpr GroupingSetKind GroupingSetKind_MAX = GROUPING_SET_SETS; constexpr int GroupingSetKind_ARRAYSIZE = GroupingSetKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* GroupingSetKind_descriptor(); template inline const std::string& GroupingSetKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function GroupingSetKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( GroupingSetKind_descriptor(), enum_t_value); } inline bool GroupingSetKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, GroupingSetKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( GroupingSetKind_descriptor(), name, value); } enum CTEMaterialize : int { CTEMATERIALIZE_UNDEFINED = 0, CTEMaterializeDefault = 1, CTEMaterializeAlways = 2, CTEMaterializeNever = 3, CTEMaterialize_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), CTEMaterialize_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool CTEMaterialize_IsValid(int value); constexpr CTEMaterialize CTEMaterialize_MIN = CTEMATERIALIZE_UNDEFINED; constexpr CTEMaterialize CTEMaterialize_MAX = CTEMaterializeNever; constexpr int CTEMaterialize_ARRAYSIZE = CTEMaterialize_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CTEMaterialize_descriptor(); template inline const std::string& CTEMaterialize_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function CTEMaterialize_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( CTEMaterialize_descriptor(), enum_t_value); } inline bool CTEMaterialize_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, CTEMaterialize* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( CTEMaterialize_descriptor(), name, value); } enum SetOperation : int { SET_OPERATION_UNDEFINED = 0, SETOP_NONE = 1, SETOP_UNION = 2, SETOP_INTERSECT = 3, SETOP_EXCEPT = 4, SetOperation_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), SetOperation_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool SetOperation_IsValid(int value); constexpr SetOperation SetOperation_MIN = SET_OPERATION_UNDEFINED; constexpr SetOperation SetOperation_MAX = SETOP_EXCEPT; constexpr int SetOperation_ARRAYSIZE = SetOperation_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SetOperation_descriptor(); template inline const std::string& SetOperation_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function SetOperation_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( SetOperation_descriptor(), enum_t_value); } inline bool SetOperation_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SetOperation* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( SetOperation_descriptor(), name, value); } enum ObjectType : int { OBJECT_TYPE_UNDEFINED = 0, OBJECT_ACCESS_METHOD = 1, OBJECT_AGGREGATE = 2, OBJECT_AMOP = 3, OBJECT_AMPROC = 4, OBJECT_ATTRIBUTE = 5, OBJECT_CAST = 6, OBJECT_COLUMN = 7, OBJECT_COLLATION = 8, OBJECT_CONVERSION = 9, OBJECT_DATABASE = 10, OBJECT_DEFAULT = 11, OBJECT_DEFACL = 12, OBJECT_DOMAIN = 13, OBJECT_DOMCONSTRAINT = 14, OBJECT_EVENT_TRIGGER = 15, OBJECT_EXTENSION = 16, OBJECT_FDW = 17, OBJECT_FOREIGN_SERVER = 18, OBJECT_FOREIGN_TABLE = 19, OBJECT_FUNCTION = 20, OBJECT_INDEX = 21, OBJECT_LANGUAGE = 22, OBJECT_LARGEOBJECT = 23, OBJECT_MATVIEW = 24, OBJECT_OPCLASS = 25, OBJECT_OPERATOR = 26, OBJECT_OPFAMILY = 27, OBJECT_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::min(), ObjectType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool ObjectType_IsValid(int value); constexpr ObjectType ObjectType_MIN = OBJECT_TYPE_UNDEFINED; constexpr ObjectType ObjectType_MAX = OBJECT_VIEW; constexpr int ObjectType_ARRAYSIZE = ObjectType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ObjectType_descriptor(); template inline const std::string& ObjectType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function ObjectType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( ObjectType_descriptor(), enum_t_value); } inline bool ObjectType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ObjectType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( ObjectType_descriptor(), name, value); } enum DropBehavior : int { DROP_BEHAVIOR_UNDEFINED = 0, DROP_RESTRICT = 1, DROP_CASCADE = 2, DropBehavior_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), DropBehavior_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool DropBehavior_IsValid(int value); constexpr DropBehavior DropBehavior_MIN = DROP_BEHAVIOR_UNDEFINED; constexpr DropBehavior DropBehavior_MAX = DROP_CASCADE; constexpr int DropBehavior_ARRAYSIZE = DropBehavior_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* DropBehavior_descriptor(); template inline const std::string& DropBehavior_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function DropBehavior_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( DropBehavior_descriptor(), enum_t_value); } inline bool DropBehavior_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, DropBehavior* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( DropBehavior_descriptor(), name, value); } enum AlterTableType : int { ALTER_TABLE_TYPE_UNDEFINED = 0, AT_AddColumn = 1, AT_AddColumnRecurse = 2, AT_AddColumnToView = 3, AT_ColumnDefault = 4, AT_CookedColumnDefault = 5, AT_DropNotNull = 6, AT_SetNotNull = 7, AT_DropExpression = 8, AT_CheckNotNull = 9, AT_SetStatistics = 10, AT_SetOptions = 11, AT_ResetOptions = 12, AT_SetStorage = 13, AT_SetCompression = 14, AT_DropColumn = 15, AT_DropColumnRecurse = 16, AT_AddIndex = 17, AT_ReAddIndex = 18, AT_AddConstraint = 19, AT_AddConstraintRecurse = 20, AT_ReAddConstraint = 21, AT_ReAddDomainConstraint = 22, AT_AlterConstraint = 23, AT_ValidateConstraint = 24, AT_ValidateConstraintRecurse = 25, AT_AddIndexConstraint = 26, AT_DropConstraint = 27, AT_DropConstraintRecurse = 28, AT_ReAddComment = 29, AT_AlterColumnType = 30, AT_AlterColumnGenericOptions = 31, AT_ChangeOwner = 32, AT_ClusterOn = 33, AT_DropCluster = 34, AT_SetLogged = 35, AT_SetUnLogged = 36, AT_DropOids = 37, AT_SetAccessMethod = 38, AT_SetTableSpace = 39, AT_SetRelOptions = 40, AT_ResetRelOptions = 41, AT_ReplaceRelOptions = 42, AT_EnableTrig = 43, AT_EnableAlwaysTrig = 44, AT_EnableReplicaTrig = 45, AT_DisableTrig = 46, AT_EnableTrigAll = 47, AT_DisableTrigAll = 48, AT_EnableTrigUser = 49, AT_DisableTrigUser = 50, AT_EnableRule = 51, AT_EnableAlwaysRule = 52, AT_EnableReplicaRule = 53, AT_DisableRule = 54, AT_AddInherit = 55, AT_DropInherit = 56, AT_AddOf = 57, AT_DropOf = 58, AT_ReplicaIdentity = 59, AT_EnableRowSecurity = 60, AT_DisableRowSecurity = 61, AT_ForceRowSecurity = 62, AT_NoForceRowSecurity = 63, AT_GenericOptions = 64, AT_AttachPartition = 65, AT_DetachPartition = 66, AT_DetachPartitionFinalize = 67, AT_AddIdentity = 68, AT_SetIdentity = 69, AT_DropIdentity = 70, AT_ReAddStatistics = 71, AlterTableType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), AlterTableType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool AlterTableType_IsValid(int value); constexpr AlterTableType AlterTableType_MIN = ALTER_TABLE_TYPE_UNDEFINED; constexpr AlterTableType AlterTableType_MAX = AT_ReAddStatistics; constexpr int AlterTableType_ARRAYSIZE = AlterTableType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AlterTableType_descriptor(); template inline const std::string& AlterTableType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function AlterTableType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( AlterTableType_descriptor(), enum_t_value); } inline bool AlterTableType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, AlterTableType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( AlterTableType_descriptor(), name, value); } enum GrantTargetType : int { GRANT_TARGET_TYPE_UNDEFINED = 0, ACL_TARGET_OBJECT = 1, ACL_TARGET_ALL_IN_SCHEMA = 2, ACL_TARGET_DEFAULTS = 3, GrantTargetType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), GrantTargetType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool GrantTargetType_IsValid(int value); constexpr GrantTargetType GrantTargetType_MIN = GRANT_TARGET_TYPE_UNDEFINED; constexpr GrantTargetType GrantTargetType_MAX = ACL_TARGET_DEFAULTS; constexpr int GrantTargetType_ARRAYSIZE = GrantTargetType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* GrantTargetType_descriptor(); template inline const std::string& GrantTargetType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function GrantTargetType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( GrantTargetType_descriptor(), enum_t_value); } inline bool GrantTargetType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, GrantTargetType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( GrantTargetType_descriptor(), name, value); } enum VariableSetKind : int { VARIABLE_SET_KIND_UNDEFINED = 0, VAR_SET_VALUE = 1, VAR_SET_DEFAULT = 2, VAR_SET_CURRENT = 3, VAR_SET_MULTI = 4, VAR_RESET = 5, VAR_RESET_ALL = 6, VariableSetKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), VariableSetKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool VariableSetKind_IsValid(int value); constexpr VariableSetKind VariableSetKind_MIN = VARIABLE_SET_KIND_UNDEFINED; constexpr VariableSetKind VariableSetKind_MAX = VAR_RESET_ALL; constexpr int VariableSetKind_ARRAYSIZE = VariableSetKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* VariableSetKind_descriptor(); template inline const std::string& VariableSetKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function VariableSetKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( VariableSetKind_descriptor(), enum_t_value); } inline bool VariableSetKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, VariableSetKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( VariableSetKind_descriptor(), name, value); } enum ConstrType : int { CONSTR_TYPE_UNDEFINED = 0, CONSTR_NULL = 1, CONSTR_NOTNULL = 2, CONSTR_DEFAULT = 3, CONSTR_IDENTITY = 4, CONSTR_GENERATED = 5, CONSTR_CHECK = 6, CONSTR_PRIMARY = 7, CONSTR_UNIQUE = 8, CONSTR_EXCLUSION = 9, CONSTR_FOREIGN = 10, CONSTR_ATTR_DEFERRABLE = 11, CONSTR_ATTR_NOT_DEFERRABLE = 12, CONSTR_ATTR_DEFERRED = 13, CONSTR_ATTR_IMMEDIATE = 14, ConstrType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), ConstrType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool ConstrType_IsValid(int value); constexpr ConstrType ConstrType_MIN = CONSTR_TYPE_UNDEFINED; constexpr ConstrType ConstrType_MAX = CONSTR_ATTR_IMMEDIATE; constexpr int ConstrType_ARRAYSIZE = ConstrType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ConstrType_descriptor(); template inline const std::string& ConstrType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function ConstrType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( ConstrType_descriptor(), enum_t_value); } inline bool ConstrType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ConstrType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( ConstrType_descriptor(), name, value); } enum ImportForeignSchemaType : int { IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED = 0, FDW_IMPORT_SCHEMA_ALL = 1, FDW_IMPORT_SCHEMA_LIMIT_TO = 2, FDW_IMPORT_SCHEMA_EXCEPT = 3, ImportForeignSchemaType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), ImportForeignSchemaType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool ImportForeignSchemaType_IsValid(int value); constexpr ImportForeignSchemaType ImportForeignSchemaType_MIN = IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED; constexpr ImportForeignSchemaType ImportForeignSchemaType_MAX = FDW_IMPORT_SCHEMA_EXCEPT; constexpr int ImportForeignSchemaType_ARRAYSIZE = ImportForeignSchemaType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ImportForeignSchemaType_descriptor(); template inline const std::string& ImportForeignSchemaType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function ImportForeignSchemaType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( ImportForeignSchemaType_descriptor(), enum_t_value); } inline bool ImportForeignSchemaType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ImportForeignSchemaType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( ImportForeignSchemaType_descriptor(), name, value); } enum RoleStmtType : int { ROLE_STMT_TYPE_UNDEFINED = 0, ROLESTMT_ROLE = 1, ROLESTMT_USER = 2, ROLESTMT_GROUP = 3, RoleStmtType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), RoleStmtType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool RoleStmtType_IsValid(int value); constexpr RoleStmtType RoleStmtType_MIN = ROLE_STMT_TYPE_UNDEFINED; constexpr RoleStmtType RoleStmtType_MAX = ROLESTMT_GROUP; constexpr int RoleStmtType_ARRAYSIZE = RoleStmtType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RoleStmtType_descriptor(); template inline const std::string& RoleStmtType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function RoleStmtType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( RoleStmtType_descriptor(), enum_t_value); } inline bool RoleStmtType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, RoleStmtType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( RoleStmtType_descriptor(), name, value); } enum FetchDirection : int { FETCH_DIRECTION_UNDEFINED = 0, FETCH_FORWARD = 1, FETCH_BACKWARD = 2, FETCH_ABSOLUTE = 3, FETCH_RELATIVE = 4, FetchDirection_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), FetchDirection_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool FetchDirection_IsValid(int value); constexpr FetchDirection FetchDirection_MIN = FETCH_DIRECTION_UNDEFINED; constexpr FetchDirection FetchDirection_MAX = FETCH_RELATIVE; constexpr int FetchDirection_ARRAYSIZE = FetchDirection_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* FetchDirection_descriptor(); template inline const std::string& FetchDirection_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function FetchDirection_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( FetchDirection_descriptor(), enum_t_value); } inline bool FetchDirection_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, FetchDirection* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( FetchDirection_descriptor(), name, value); } enum FunctionParameterMode : int { FUNCTION_PARAMETER_MODE_UNDEFINED = 0, FUNC_PARAM_IN = 1, FUNC_PARAM_OUT = 2, FUNC_PARAM_INOUT = 3, FUNC_PARAM_VARIADIC = 4, FUNC_PARAM_TABLE = 5, FUNC_PARAM_DEFAULT = 6, FunctionParameterMode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), FunctionParameterMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool FunctionParameterMode_IsValid(int value); constexpr FunctionParameterMode FunctionParameterMode_MIN = FUNCTION_PARAMETER_MODE_UNDEFINED; constexpr FunctionParameterMode FunctionParameterMode_MAX = FUNC_PARAM_DEFAULT; constexpr int FunctionParameterMode_ARRAYSIZE = FunctionParameterMode_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* FunctionParameterMode_descriptor(); template inline const std::string& FunctionParameterMode_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function FunctionParameterMode_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( FunctionParameterMode_descriptor(), enum_t_value); } inline bool FunctionParameterMode_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, FunctionParameterMode* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( FunctionParameterMode_descriptor(), name, value); } enum TransactionStmtKind : int { TRANSACTION_STMT_KIND_UNDEFINED = 0, TRANS_STMT_BEGIN = 1, TRANS_STMT_START = 2, TRANS_STMT_COMMIT = 3, TRANS_STMT_ROLLBACK = 4, TRANS_STMT_SAVEPOINT = 5, TRANS_STMT_RELEASE = 6, TRANS_STMT_ROLLBACK_TO = 7, TRANS_STMT_PREPARE = 8, TRANS_STMT_COMMIT_PREPARED = 9, TRANS_STMT_ROLLBACK_PREPARED = 10, TransactionStmtKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), TransactionStmtKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool TransactionStmtKind_IsValid(int value); constexpr TransactionStmtKind TransactionStmtKind_MIN = TRANSACTION_STMT_KIND_UNDEFINED; constexpr TransactionStmtKind TransactionStmtKind_MAX = TRANS_STMT_ROLLBACK_PREPARED; constexpr int TransactionStmtKind_ARRAYSIZE = TransactionStmtKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* TransactionStmtKind_descriptor(); template inline const std::string& TransactionStmtKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function TransactionStmtKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( TransactionStmtKind_descriptor(), enum_t_value); } inline bool TransactionStmtKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, TransactionStmtKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( TransactionStmtKind_descriptor(), name, value); } enum ViewCheckOption : int { VIEW_CHECK_OPTION_UNDEFINED = 0, NO_CHECK_OPTION = 1, LOCAL_CHECK_OPTION = 2, CASCADED_CHECK_OPTION = 3, ViewCheckOption_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), ViewCheckOption_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool ViewCheckOption_IsValid(int value); constexpr ViewCheckOption ViewCheckOption_MIN = VIEW_CHECK_OPTION_UNDEFINED; constexpr ViewCheckOption ViewCheckOption_MAX = CASCADED_CHECK_OPTION; constexpr int ViewCheckOption_ARRAYSIZE = ViewCheckOption_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ViewCheckOption_descriptor(); template inline const std::string& ViewCheckOption_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function ViewCheckOption_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( ViewCheckOption_descriptor(), enum_t_value); } inline bool ViewCheckOption_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ViewCheckOption* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( ViewCheckOption_descriptor(), name, value); } enum 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::min(), DiscardMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool DiscardMode_IsValid(int value); constexpr DiscardMode DiscardMode_MIN = DISCARD_MODE_UNDEFINED; constexpr DiscardMode DiscardMode_MAX = DISCARD_TEMP; constexpr int DiscardMode_ARRAYSIZE = DiscardMode_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* DiscardMode_descriptor(); template inline const std::string& DiscardMode_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function DiscardMode_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( DiscardMode_descriptor(), enum_t_value); } inline bool DiscardMode_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, DiscardMode* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( DiscardMode_descriptor(), name, value); } enum ReindexObjectType : int { REINDEX_OBJECT_TYPE_UNDEFINED = 0, REINDEX_OBJECT_INDEX = 1, REINDEX_OBJECT_TABLE = 2, REINDEX_OBJECT_SCHEMA = 3, REINDEX_OBJECT_SYSTEM = 4, REINDEX_OBJECT_DATABASE = 5, ReindexObjectType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), ReindexObjectType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool ReindexObjectType_IsValid(int value); constexpr ReindexObjectType ReindexObjectType_MIN = REINDEX_OBJECT_TYPE_UNDEFINED; constexpr ReindexObjectType ReindexObjectType_MAX = REINDEX_OBJECT_DATABASE; constexpr int ReindexObjectType_ARRAYSIZE = ReindexObjectType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ReindexObjectType_descriptor(); template inline const std::string& ReindexObjectType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function ReindexObjectType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( ReindexObjectType_descriptor(), enum_t_value); } inline bool ReindexObjectType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ReindexObjectType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( ReindexObjectType_descriptor(), name, value); } enum AlterTSConfigType : int { ALTER_TSCONFIG_TYPE_UNDEFINED = 0, ALTER_TSCONFIG_ADD_MAPPING = 1, ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN = 2, ALTER_TSCONFIG_REPLACE_DICT = 3, ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN = 4, ALTER_TSCONFIG_DROP_MAPPING = 5, AlterTSConfigType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), AlterTSConfigType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool AlterTSConfigType_IsValid(int value); constexpr AlterTSConfigType AlterTSConfigType_MIN = ALTER_TSCONFIG_TYPE_UNDEFINED; constexpr AlterTSConfigType AlterTSConfigType_MAX = ALTER_TSCONFIG_DROP_MAPPING; constexpr int AlterTSConfigType_ARRAYSIZE = AlterTSConfigType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AlterTSConfigType_descriptor(); template inline const std::string& AlterTSConfigType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function AlterTSConfigType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( AlterTSConfigType_descriptor(), enum_t_value); } inline bool AlterTSConfigType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, AlterTSConfigType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( AlterTSConfigType_descriptor(), name, value); } enum 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::min(), PublicationObjSpecType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool PublicationObjSpecType_IsValid(int value); constexpr PublicationObjSpecType PublicationObjSpecType_MIN = PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED; constexpr PublicationObjSpecType PublicationObjSpecType_MAX = PUBLICATIONOBJ_CONTINUATION; constexpr int PublicationObjSpecType_ARRAYSIZE = PublicationObjSpecType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* PublicationObjSpecType_descriptor(); template inline const std::string& PublicationObjSpecType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function PublicationObjSpecType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( PublicationObjSpecType_descriptor(), enum_t_value); } inline bool PublicationObjSpecType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, PublicationObjSpecType* value) { return ::PROTOBUF_NAMESPACE_ID::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::min(), AlterPublicationAction_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool AlterPublicationAction_IsValid(int value); constexpr AlterPublicationAction AlterPublicationAction_MIN = ALTER_PUBLICATION_ACTION_UNDEFINED; constexpr AlterPublicationAction AlterPublicationAction_MAX = AP_SetObjects; constexpr int AlterPublicationAction_ARRAYSIZE = AlterPublicationAction_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AlterPublicationAction_descriptor(); template inline const std::string& AlterPublicationAction_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function AlterPublicationAction_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( AlterPublicationAction_descriptor(), enum_t_value); } inline bool AlterPublicationAction_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, AlterPublicationAction* value) { return ::PROTOBUF_NAMESPACE_ID::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::min(), AlterSubscriptionType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool AlterSubscriptionType_IsValid(int value); constexpr AlterSubscriptionType AlterSubscriptionType_MIN = ALTER_SUBSCRIPTION_TYPE_UNDEFINED; constexpr AlterSubscriptionType AlterSubscriptionType_MAX = ALTER_SUBSCRIPTION_SKIP; constexpr int AlterSubscriptionType_ARRAYSIZE = AlterSubscriptionType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AlterSubscriptionType_descriptor(); template inline const std::string& AlterSubscriptionType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function AlterSubscriptionType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( AlterSubscriptionType_descriptor(), enum_t_value); } inline bool AlterSubscriptionType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, AlterSubscriptionType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( AlterSubscriptionType_descriptor(), name, value); } enum OnCommitAction : int { ON_COMMIT_ACTION_UNDEFINED = 0, ONCOMMIT_NOOP = 1, ONCOMMIT_PRESERVE_ROWS = 2, ONCOMMIT_DELETE_ROWS = 3, ONCOMMIT_DROP = 4, OnCommitAction_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), OnCommitAction_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool OnCommitAction_IsValid(int value); constexpr OnCommitAction OnCommitAction_MIN = ON_COMMIT_ACTION_UNDEFINED; constexpr OnCommitAction OnCommitAction_MAX = ONCOMMIT_DROP; constexpr int OnCommitAction_ARRAYSIZE = OnCommitAction_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* OnCommitAction_descriptor(); template inline const std::string& OnCommitAction_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function OnCommitAction_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( OnCommitAction_descriptor(), enum_t_value); } inline bool OnCommitAction_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, OnCommitAction* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( OnCommitAction_descriptor(), name, value); } enum ParamKind : int { PARAM_KIND_UNDEFINED = 0, PARAM_EXTERN = 1, PARAM_EXEC = 2, PARAM_SUBLINK = 3, PARAM_MULTIEXPR = 4, ParamKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), ParamKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool ParamKind_IsValid(int value); constexpr ParamKind ParamKind_MIN = PARAM_KIND_UNDEFINED; constexpr ParamKind ParamKind_MAX = PARAM_MULTIEXPR; constexpr int ParamKind_ARRAYSIZE = ParamKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ParamKind_descriptor(); template inline const std::string& ParamKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function ParamKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( ParamKind_descriptor(), enum_t_value); } inline bool ParamKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ParamKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( ParamKind_descriptor(), name, value); } enum CoercionContext : int { COERCION_CONTEXT_UNDEFINED = 0, COERCION_IMPLICIT = 1, COERCION_ASSIGNMENT = 2, COERCION_PLPGSQL = 3, COERCION_EXPLICIT = 4, CoercionContext_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), CoercionContext_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool CoercionContext_IsValid(int value); constexpr CoercionContext CoercionContext_MIN = COERCION_CONTEXT_UNDEFINED; constexpr CoercionContext CoercionContext_MAX = COERCION_EXPLICIT; constexpr int CoercionContext_ARRAYSIZE = CoercionContext_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CoercionContext_descriptor(); template inline const std::string& CoercionContext_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function CoercionContext_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( CoercionContext_descriptor(), enum_t_value); } inline bool CoercionContext_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, CoercionContext* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( CoercionContext_descriptor(), name, value); } enum CoercionForm : int { COERCION_FORM_UNDEFINED = 0, COERCE_EXPLICIT_CALL = 1, COERCE_EXPLICIT_CAST = 2, COERCE_IMPLICIT_CAST = 3, COERCE_SQL_SYNTAX = 4, CoercionForm_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), CoercionForm_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool CoercionForm_IsValid(int value); constexpr CoercionForm CoercionForm_MIN = COERCION_FORM_UNDEFINED; constexpr CoercionForm CoercionForm_MAX = COERCE_SQL_SYNTAX; constexpr int CoercionForm_ARRAYSIZE = CoercionForm_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CoercionForm_descriptor(); template inline const std::string& CoercionForm_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function CoercionForm_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( CoercionForm_descriptor(), enum_t_value); } inline bool CoercionForm_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, CoercionForm* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( CoercionForm_descriptor(), name, value); } enum BoolExprType : int { BOOL_EXPR_TYPE_UNDEFINED = 0, AND_EXPR = 1, OR_EXPR = 2, NOT_EXPR = 3, BoolExprType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), BoolExprType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool BoolExprType_IsValid(int value); constexpr BoolExprType BoolExprType_MIN = BOOL_EXPR_TYPE_UNDEFINED; constexpr BoolExprType BoolExprType_MAX = NOT_EXPR; constexpr int BoolExprType_ARRAYSIZE = BoolExprType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* BoolExprType_descriptor(); template inline const std::string& BoolExprType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function BoolExprType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( BoolExprType_descriptor(), enum_t_value); } inline bool BoolExprType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, BoolExprType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( BoolExprType_descriptor(), name, value); } enum SubLinkType : int { SUB_LINK_TYPE_UNDEFINED = 0, EXISTS_SUBLINK = 1, ALL_SUBLINK = 2, ANY_SUBLINK = 3, ROWCOMPARE_SUBLINK = 4, EXPR_SUBLINK = 5, MULTIEXPR_SUBLINK = 6, ARRAY_SUBLINK = 7, CTE_SUBLINK = 8, SubLinkType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), SubLinkType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool SubLinkType_IsValid(int value); constexpr SubLinkType SubLinkType_MIN = SUB_LINK_TYPE_UNDEFINED; constexpr SubLinkType SubLinkType_MAX = CTE_SUBLINK; constexpr int SubLinkType_ARRAYSIZE = SubLinkType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SubLinkType_descriptor(); template inline const std::string& SubLinkType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function SubLinkType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( SubLinkType_descriptor(), enum_t_value); } inline bool SubLinkType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SubLinkType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( SubLinkType_descriptor(), name, value); } enum RowCompareType : int { ROW_COMPARE_TYPE_UNDEFINED = 0, ROWCOMPARE_LT = 1, ROWCOMPARE_LE = 2, ROWCOMPARE_EQ = 3, ROWCOMPARE_GE = 4, ROWCOMPARE_GT = 5, ROWCOMPARE_NE = 6, RowCompareType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), RowCompareType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool RowCompareType_IsValid(int value); constexpr RowCompareType RowCompareType_MIN = ROW_COMPARE_TYPE_UNDEFINED; constexpr RowCompareType RowCompareType_MAX = ROWCOMPARE_NE; constexpr int RowCompareType_ARRAYSIZE = RowCompareType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RowCompareType_descriptor(); template inline const std::string& RowCompareType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function RowCompareType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( RowCompareType_descriptor(), enum_t_value); } inline bool RowCompareType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, RowCompareType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( RowCompareType_descriptor(), name, value); } enum MinMaxOp : int { MIN_MAX_OP_UNDEFINED = 0, IS_GREATEST = 1, IS_LEAST = 2, MinMaxOp_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), MinMaxOp_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool MinMaxOp_IsValid(int value); constexpr MinMaxOp MinMaxOp_MIN = MIN_MAX_OP_UNDEFINED; constexpr MinMaxOp MinMaxOp_MAX = IS_LEAST; constexpr int MinMaxOp_ARRAYSIZE = MinMaxOp_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* MinMaxOp_descriptor(); template inline const std::string& MinMaxOp_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function MinMaxOp_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( MinMaxOp_descriptor(), enum_t_value); } inline bool MinMaxOp_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, MinMaxOp* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( MinMaxOp_descriptor(), name, value); } enum SQLValueFunctionOp : int { SQLVALUE_FUNCTION_OP_UNDEFINED = 0, SVFOP_CURRENT_DATE = 1, SVFOP_CURRENT_TIME = 2, SVFOP_CURRENT_TIME_N = 3, SVFOP_CURRENT_TIMESTAMP = 4, SVFOP_CURRENT_TIMESTAMP_N = 5, SVFOP_LOCALTIME = 6, SVFOP_LOCALTIME_N = 7, SVFOP_LOCALTIMESTAMP = 8, SVFOP_LOCALTIMESTAMP_N = 9, SVFOP_CURRENT_ROLE = 10, SVFOP_CURRENT_USER = 11, SVFOP_USER = 12, SVFOP_SESSION_USER = 13, SVFOP_CURRENT_CATALOG = 14, SVFOP_CURRENT_SCHEMA = 15, SQLValueFunctionOp_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), SQLValueFunctionOp_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool SQLValueFunctionOp_IsValid(int value); constexpr SQLValueFunctionOp SQLValueFunctionOp_MIN = SQLVALUE_FUNCTION_OP_UNDEFINED; constexpr SQLValueFunctionOp SQLValueFunctionOp_MAX = SVFOP_CURRENT_SCHEMA; constexpr int SQLValueFunctionOp_ARRAYSIZE = SQLValueFunctionOp_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SQLValueFunctionOp_descriptor(); template inline const std::string& SQLValueFunctionOp_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function SQLValueFunctionOp_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( SQLValueFunctionOp_descriptor(), enum_t_value); } inline bool SQLValueFunctionOp_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SQLValueFunctionOp* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( SQLValueFunctionOp_descriptor(), name, value); } enum XmlExprOp : int { XML_EXPR_OP_UNDEFINED = 0, IS_XMLCONCAT = 1, IS_XMLELEMENT = 2, IS_XMLFOREST = 3, IS_XMLPARSE = 4, IS_XMLPI = 5, IS_XMLROOT = 6, IS_XMLSERIALIZE = 7, IS_DOCUMENT = 8, XmlExprOp_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), XmlExprOp_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool XmlExprOp_IsValid(int value); constexpr XmlExprOp XmlExprOp_MIN = XML_EXPR_OP_UNDEFINED; constexpr XmlExprOp XmlExprOp_MAX = IS_DOCUMENT; constexpr int XmlExprOp_ARRAYSIZE = XmlExprOp_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* XmlExprOp_descriptor(); template inline const std::string& XmlExprOp_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function XmlExprOp_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( XmlExprOp_descriptor(), enum_t_value); } inline bool XmlExprOp_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, XmlExprOp* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( XmlExprOp_descriptor(), name, value); } enum XmlOptionType : int { XML_OPTION_TYPE_UNDEFINED = 0, XMLOPTION_DOCUMENT = 1, XMLOPTION_CONTENT = 2, XmlOptionType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), XmlOptionType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool XmlOptionType_IsValid(int value); constexpr XmlOptionType XmlOptionType_MIN = XML_OPTION_TYPE_UNDEFINED; constexpr XmlOptionType XmlOptionType_MAX = XMLOPTION_CONTENT; constexpr int XmlOptionType_ARRAYSIZE = XmlOptionType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* XmlOptionType_descriptor(); template inline const std::string& XmlOptionType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function XmlOptionType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( XmlOptionType_descriptor(), enum_t_value); } inline bool XmlOptionType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, XmlOptionType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( XmlOptionType_descriptor(), name, value); } enum NullTestType : int { NULL_TEST_TYPE_UNDEFINED = 0, IS_NULL = 1, IS_NOT_NULL = 2, NullTestType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), NullTestType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool NullTestType_IsValid(int value); constexpr NullTestType NullTestType_MIN = NULL_TEST_TYPE_UNDEFINED; constexpr NullTestType NullTestType_MAX = IS_NOT_NULL; constexpr int NullTestType_ARRAYSIZE = NullTestType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* NullTestType_descriptor(); template inline const std::string& NullTestType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function NullTestType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( NullTestType_descriptor(), enum_t_value); } inline bool NullTestType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, NullTestType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( NullTestType_descriptor(), name, value); } enum BoolTestType : int { BOOL_TEST_TYPE_UNDEFINED = 0, IS_TRUE = 1, IS_NOT_TRUE = 2, IS_FALSE = 3, IS_NOT_FALSE = 4, IS_UNKNOWN = 5, IS_NOT_UNKNOWN = 6, BoolTestType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), BoolTestType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool BoolTestType_IsValid(int value); constexpr BoolTestType BoolTestType_MIN = BOOL_TEST_TYPE_UNDEFINED; constexpr BoolTestType BoolTestType_MAX = IS_NOT_UNKNOWN; constexpr int BoolTestType_ARRAYSIZE = BoolTestType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* BoolTestType_descriptor(); template inline const std::string& BoolTestType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function BoolTestType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( BoolTestType_descriptor(), enum_t_value); } inline bool BoolTestType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, BoolTestType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( BoolTestType_descriptor(), name, value); } enum CmdType : int { CMD_TYPE_UNDEFINED = 0, CMD_UNKNOWN = 1, CMD_SELECT = 2, CMD_UPDATE = 3, CMD_INSERT = 4, CMD_DELETE = 5, CMD_MERGE = 6, CMD_UTILITY = 7, CMD_NOTHING = 8, CmdType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), CmdType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool CmdType_IsValid(int value); constexpr CmdType CmdType_MIN = CMD_TYPE_UNDEFINED; constexpr CmdType CmdType_MAX = CMD_NOTHING; constexpr int CmdType_ARRAYSIZE = CmdType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CmdType_descriptor(); template inline const std::string& CmdType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function CmdType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( CmdType_descriptor(), enum_t_value); } inline bool CmdType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, CmdType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( CmdType_descriptor(), name, value); } enum JoinType : int { JOIN_TYPE_UNDEFINED = 0, JOIN_INNER = 1, JOIN_LEFT = 2, JOIN_FULL = 3, JOIN_RIGHT = 4, JOIN_SEMI = 5, JOIN_ANTI = 6, JOIN_UNIQUE_OUTER = 7, JOIN_UNIQUE_INNER = 8, JoinType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), JoinType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool JoinType_IsValid(int value); constexpr JoinType JoinType_MIN = JOIN_TYPE_UNDEFINED; constexpr JoinType JoinType_MAX = JOIN_UNIQUE_INNER; constexpr int JoinType_ARRAYSIZE = JoinType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* JoinType_descriptor(); template inline const std::string& JoinType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function JoinType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( JoinType_descriptor(), enum_t_value); } inline bool JoinType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, JoinType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( JoinType_descriptor(), name, value); } enum AggStrategy : int { AGG_STRATEGY_UNDEFINED = 0, AGG_PLAIN = 1, AGG_SORTED = 2, AGG_HASHED = 3, AGG_MIXED = 4, AggStrategy_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), AggStrategy_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool AggStrategy_IsValid(int value); constexpr AggStrategy AggStrategy_MIN = AGG_STRATEGY_UNDEFINED; constexpr AggStrategy AggStrategy_MAX = AGG_MIXED; constexpr int AggStrategy_ARRAYSIZE = AggStrategy_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AggStrategy_descriptor(); template inline const std::string& AggStrategy_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function AggStrategy_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( AggStrategy_descriptor(), enum_t_value); } inline bool AggStrategy_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, AggStrategy* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( AggStrategy_descriptor(), name, value); } enum AggSplit : int { AGG_SPLIT_UNDEFINED = 0, AGGSPLIT_SIMPLE = 1, AGGSPLIT_INITIAL_SERIAL = 2, AGGSPLIT_FINAL_DESERIAL = 3, AggSplit_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), AggSplit_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool AggSplit_IsValid(int value); constexpr AggSplit AggSplit_MIN = AGG_SPLIT_UNDEFINED; constexpr AggSplit AggSplit_MAX = AGGSPLIT_FINAL_DESERIAL; constexpr int AggSplit_ARRAYSIZE = AggSplit_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AggSplit_descriptor(); template inline const std::string& AggSplit_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function AggSplit_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( AggSplit_descriptor(), enum_t_value); } inline bool AggSplit_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, AggSplit* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( AggSplit_descriptor(), name, value); } enum SetOpCmd : int { SET_OP_CMD_UNDEFINED = 0, SETOPCMD_INTERSECT = 1, SETOPCMD_INTERSECT_ALL = 2, SETOPCMD_EXCEPT = 3, SETOPCMD_EXCEPT_ALL = 4, SetOpCmd_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), SetOpCmd_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool SetOpCmd_IsValid(int value); constexpr SetOpCmd SetOpCmd_MIN = SET_OP_CMD_UNDEFINED; constexpr SetOpCmd SetOpCmd_MAX = SETOPCMD_EXCEPT_ALL; constexpr int SetOpCmd_ARRAYSIZE = SetOpCmd_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SetOpCmd_descriptor(); template inline const std::string& SetOpCmd_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function SetOpCmd_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( SetOpCmd_descriptor(), enum_t_value); } inline bool SetOpCmd_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SetOpCmd* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( SetOpCmd_descriptor(), name, value); } enum SetOpStrategy : int { SET_OP_STRATEGY_UNDEFINED = 0, SETOP_SORTED = 1, SETOP_HASHED = 2, SetOpStrategy_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), SetOpStrategy_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool SetOpStrategy_IsValid(int value); constexpr SetOpStrategy SetOpStrategy_MIN = SET_OP_STRATEGY_UNDEFINED; constexpr SetOpStrategy SetOpStrategy_MAX = SETOP_HASHED; constexpr int SetOpStrategy_ARRAYSIZE = SetOpStrategy_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SetOpStrategy_descriptor(); template inline const std::string& SetOpStrategy_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function SetOpStrategy_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( SetOpStrategy_descriptor(), enum_t_value); } inline bool SetOpStrategy_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SetOpStrategy* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( SetOpStrategy_descriptor(), name, value); } enum OnConflictAction : int { ON_CONFLICT_ACTION_UNDEFINED = 0, ONCONFLICT_NONE = 1, ONCONFLICT_NOTHING = 2, ONCONFLICT_UPDATE = 3, OnConflictAction_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), OnConflictAction_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool OnConflictAction_IsValid(int value); constexpr OnConflictAction OnConflictAction_MIN = ON_CONFLICT_ACTION_UNDEFINED; constexpr OnConflictAction OnConflictAction_MAX = ONCONFLICT_UPDATE; constexpr int OnConflictAction_ARRAYSIZE = OnConflictAction_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* OnConflictAction_descriptor(); template inline const std::string& OnConflictAction_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function OnConflictAction_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( OnConflictAction_descriptor(), enum_t_value); } inline bool OnConflictAction_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, OnConflictAction* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( OnConflictAction_descriptor(), name, value); } enum LimitOption : int { LIMIT_OPTION_UNDEFINED = 0, LIMIT_OPTION_DEFAULT = 1, LIMIT_OPTION_COUNT = 2, LIMIT_OPTION_WITH_TIES = 3, LimitOption_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), LimitOption_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool LimitOption_IsValid(int value); constexpr LimitOption LimitOption_MIN = LIMIT_OPTION_UNDEFINED; constexpr LimitOption LimitOption_MAX = LIMIT_OPTION_WITH_TIES; constexpr int LimitOption_ARRAYSIZE = LimitOption_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* LimitOption_descriptor(); template inline const std::string& LimitOption_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function LimitOption_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( LimitOption_descriptor(), enum_t_value); } inline bool LimitOption_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, LimitOption* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( LimitOption_descriptor(), name, value); } enum LockClauseStrength : int { LOCK_CLAUSE_STRENGTH_UNDEFINED = 0, LCS_NONE = 1, LCS_FORKEYSHARE = 2, LCS_FORSHARE = 3, LCS_FORNOKEYUPDATE = 4, LCS_FORUPDATE = 5, LockClauseStrength_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), LockClauseStrength_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool LockClauseStrength_IsValid(int value); constexpr LockClauseStrength LockClauseStrength_MIN = LOCK_CLAUSE_STRENGTH_UNDEFINED; constexpr LockClauseStrength LockClauseStrength_MAX = LCS_FORUPDATE; constexpr int LockClauseStrength_ARRAYSIZE = LockClauseStrength_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* LockClauseStrength_descriptor(); template inline const std::string& LockClauseStrength_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function LockClauseStrength_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( LockClauseStrength_descriptor(), enum_t_value); } inline bool LockClauseStrength_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, LockClauseStrength* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( LockClauseStrength_descriptor(), name, value); } enum LockWaitPolicy : int { LOCK_WAIT_POLICY_UNDEFINED = 0, LockWaitBlock = 1, LockWaitSkip = 2, LockWaitError = 3, LockWaitPolicy_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), LockWaitPolicy_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool LockWaitPolicy_IsValid(int value); constexpr LockWaitPolicy LockWaitPolicy_MIN = LOCK_WAIT_POLICY_UNDEFINED; constexpr LockWaitPolicy LockWaitPolicy_MAX = LockWaitError; constexpr int LockWaitPolicy_ARRAYSIZE = LockWaitPolicy_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* LockWaitPolicy_descriptor(); template inline const std::string& LockWaitPolicy_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function LockWaitPolicy_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( LockWaitPolicy_descriptor(), enum_t_value); } inline bool LockWaitPolicy_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, LockWaitPolicy* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( LockWaitPolicy_descriptor(), name, value); } enum LockTupleMode : int { LOCK_TUPLE_MODE_UNDEFINED = 0, LockTupleKeyShare = 1, LockTupleShare = 2, LockTupleNoKeyExclusive = 3, LockTupleExclusive = 4, LockTupleMode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), LockTupleMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool LockTupleMode_IsValid(int value); constexpr LockTupleMode LockTupleMode_MIN = LOCK_TUPLE_MODE_UNDEFINED; constexpr LockTupleMode LockTupleMode_MAX = LockTupleExclusive; constexpr int LockTupleMode_ARRAYSIZE = LockTupleMode_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* LockTupleMode_descriptor(); template inline const std::string& LockTupleMode_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function LockTupleMode_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( LockTupleMode_descriptor(), enum_t_value); } inline bool LockTupleMode_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, LockTupleMode* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( LockTupleMode_descriptor(), name, value); } enum KeywordKind : int { NO_KEYWORD = 0, UNRESERVED_KEYWORD = 1, COL_NAME_KEYWORD = 2, TYPE_FUNC_NAME_KEYWORD = 3, RESERVED_KEYWORD = 4, KeywordKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), KeywordKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool KeywordKind_IsValid(int value); constexpr KeywordKind KeywordKind_MIN = NO_KEYWORD; constexpr KeywordKind KeywordKind_MAX = RESERVED_KEYWORD; constexpr int KeywordKind_ARRAYSIZE = KeywordKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* KeywordKind_descriptor(); template inline const std::string& KeywordKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function KeywordKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( KeywordKind_descriptor(), enum_t_value); } inline bool KeywordKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, KeywordKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( KeywordKind_descriptor(), name, value); } enum Token : int { NUL = 0, ASCII_37 = 37, ASCII_40 = 40, ASCII_41 = 41, ASCII_42 = 42, ASCII_43 = 43, ASCII_44 = 44, ASCII_45 = 45, ASCII_46 = 46, ASCII_47 = 47, ASCII_58 = 58, ASCII_59 = 59, ASCII_60 = 60, ASCII_61 = 61, ASCII_62 = 62, ASCII_63 = 63, ASCII_91 = 91, ASCII_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, ABSOLUTE_P = 278, ACCESS = 279, ACTION = 280, ADD_P = 281, ADMIN = 282, AFTER = 283, AGGREGATE = 284, ALL = 285, ALSO = 286, ALTER = 287, ALWAYS = 288, ANALYSE = 289, ANALYZE = 290, AND = 291, ANY = 292, ARRAY = 293, AS = 294, ASC = 295, ASENSITIVE = 296, ASSERTION = 297, ASSIGNMENT = 298, ASYMMETRIC = 299, ATOMIC = 300, AT = 301, ATTACH = 302, ATTRIBUTE = 303, AUTHORIZATION = 304, BACKWARD = 305, BEFORE = 306, BEGIN_P = 307, BETWEEN = 308, BIGINT = 309, BINARY = 310, BIT = 311, BOOLEAN_P = 312, BOTH = 313, BREADTH = 314, BY = 315, CACHE = 316, CALL = 317, CALLED = 318, CASCADE = 319, CASCADED = 320, CASE = 321, CAST = 322, CATALOG_P = 323, CHAIN = 324, CHAR_P = 325, CHARACTER = 326, CHARACTERISTICS = 327, CHECK = 328, CHECKPOINT = 329, CLASS = 330, CLOSE = 331, CLUSTER = 332, COALESCE = 333, COLLATE = 334, COLLATION = 335, COLUMN = 336, COLUMNS = 337, COMMENT = 338, COMMENTS = 339, COMMIT = 340, COMMITTED = 341, COMPRESSION = 342, CONCURRENTLY = 343, CONFIGURATION = 344, CONFLICT = 345, CONNECTION = 346, CONSTRAINT = 347, CONSTRAINTS = 348, CONTENT_P = 349, CONTINUE_P = 350, CONVERSION_P = 351, COPY = 352, COST = 353, CREATE = 354, CROSS = 355, CSV = 356, CUBE = 357, CURRENT_P = 358, CURRENT_CATALOG = 359, CURRENT_DATE = 360, CURRENT_ROLE = 361, CURRENT_SCHEMA = 362, CURRENT_TIME = 363, CURRENT_TIMESTAMP = 364, CURRENT_USER = 365, CURSOR = 366, CYCLE = 367, DATA_P = 368, DATABASE = 369, DAY_P = 370, DEALLOCATE = 371, DEC = 372, DECIMAL_P = 373, DECLARE = 374, DEFAULT = 375, DEFAULTS = 376, DEFERRABLE = 377, DEFERRED = 378, DEFINER = 379, DELETE_P = 380, DELIMITER = 381, DELIMITERS = 382, DEPENDS = 383, DEPTH = 384, DESC = 385, DETACH = 386, DICTIONARY = 387, DISABLE_P = 388, DISCARD = 389, DISTINCT = 390, DO = 391, DOCUMENT_P = 392, DOMAIN_P = 393, DOUBLE_P = 394, DROP = 395, EACH = 396, ELSE = 397, ENABLE_P = 398, ENCODING = 399, ENCRYPTED = 400, END_P = 401, ENUM_P = 402, ESCAPE = 403, EVENT = 404, EXCEPT = 405, EXCLUDE = 406, EXCLUDING = 407, EXCLUSIVE = 408, EXECUTE = 409, EXISTS = 410, EXPLAIN = 411, EXPRESSION = 412, EXTENSION = 413, EXTERNAL = 414, EXTRACT = 415, FALSE_P = 416, FAMILY = 417, FETCH = 418, FILTER = 419, FINALIZE = 420, FIRST_P = 421, FLOAT_P = 422, FOLLOWING = 423, FOR = 424, FORCE = 425, FOREIGN = 426, FORWARD = 427, FREEZE = 428, FROM = 429, FULL = 430, FUNCTION = 431, FUNCTIONS = 432, GENERATED = 433, GLOBAL = 434, GRANT = 435, GRANTED = 436, GREATEST = 437, GROUP_P = 438, GROUPING = 439, GROUPS = 440, HANDLER = 441, HAVING = 442, HEADER_P = 443, HOLD = 444, HOUR_P = 445, IDENTITY_P = 446, IF_P = 447, ILIKE = 448, IMMEDIATE = 449, IMMUTABLE = 450, IMPLICIT_P = 451, IMPORT_P = 452, IN_P = 453, INCLUDE = 454, INCLUDING = 455, INCREMENT = 456, INDEX = 457, INDEXES = 458, INHERIT = 459, INHERITS = 460, INITIALLY = 461, INLINE_P = 462, INNER_P = 463, INOUT = 464, INPUT_P = 465, INSENSITIVE = 466, INSERT = 467, INSTEAD = 468, INT_P = 469, INTEGER = 470, INTERSECT = 471, INTERVAL = 472, INTO = 473, INVOKER = 474, IS = 475, ISNULL = 476, ISOLATION = 477, JOIN = 478, KEY = 479, LABEL = 480, LANGUAGE = 481, LARGE_P = 482, LAST_P = 483, LATERAL_P = 484, LEADING = 485, LEAKPROOF = 486, LEAST = 487, LEFT = 488, LEVEL = 489, LIKE = 490, LIMIT = 491, LISTEN = 492, LOAD = 493, LOCAL = 494, LOCALTIME = 495, LOCALTIMESTAMP = 496, LOCATION = 497, LOCK_P = 498, LOCKED = 499, LOGGED = 500, MAPPING = 501, MATCH = 502, MATCHED = 503, MATERIALIZED = 504, MAXVALUE = 505, MERGE = 506, METHOD = 507, MINUTE_P = 508, MINVALUE = 509, MODE = 510, MONTH_P = 511, MOVE = 512, NAME_P = 513, NAMES = 514, NATIONAL = 515, NATURAL = 516, NCHAR = 517, NEW = 518, NEXT = 519, NFC = 520, NFD = 521, NFKC = 522, NFKD = 523, NO = 524, NONE = 525, NORMALIZE = 526, NORMALIZED = 527, NOT = 528, NOTHING = 529, NOTIFY = 530, NOTNULL = 531, NOWAIT = 532, NULL_P = 533, NULLIF = 534, NULLS_P = 535, NUMERIC = 536, OBJECT_P = 537, OF = 538, OFF = 539, OFFSET = 540, OIDS = 541, OLD = 542, ON = 543, ONLY = 544, OPERATOR = 545, OPTION = 546, OPTIONS = 547, OR = 548, ORDER = 549, ORDINALITY = 550, OTHERS = 551, OUT_P = 552, OUTER_P = 553, OVER = 554, OVERLAPS = 555, OVERLAY = 556, OVERRIDING = 557, OWNED = 558, OWNER = 559, PARALLEL = 560, PARAMETER = 561, PARSER = 562, PARTIAL = 563, PARTITION = 564, PASSING = 565, PASSWORD = 566, PLACING = 567, PLANS = 568, POLICY = 569, POSITION = 570, PRECEDING = 571, PRECISION = 572, PRESERVE = 573, PREPARE = 574, PREPARED = 575, PRIMARY = 576, PRIOR = 577, PRIVILEGES = 578, PROCEDURAL = 579, PROCEDURE = 580, PROCEDURES = 581, PROGRAM = 582, PUBLICATION = 583, QUOTE = 584, RANGE = 585, READ = 586, REAL = 587, REASSIGN = 588, RECHECK = 589, RECURSIVE = 590, REF_P = 591, REFERENCES = 592, REFERENCING = 593, REFRESH = 594, REINDEX = 595, RELATIVE_P = 596, RELEASE = 597, RENAME = 598, REPEATABLE = 599, REPLACE = 600, REPLICA = 601, RESET = 602, RESTART = 603, RESTRICT = 604, RETURN = 605, RETURNING = 606, RETURNS = 607, REVOKE = 608, RIGHT = 609, ROLE = 610, ROLLBACK = 611, ROLLUP = 612, ROUTINE = 613, ROUTINES = 614, ROW = 615, ROWS = 616, RULE = 617, SAVEPOINT = 618, SCHEMA = 619, SCHEMAS = 620, SCROLL = 621, SEARCH = 622, SECOND_P = 623, SECURITY = 624, SELECT = 625, SEQUENCE = 626, SEQUENCES = 627, SERIALIZABLE = 628, SERVER = 629, SESSION = 630, SESSION_USER = 631, SET = 632, SETS = 633, SETOF = 634, SHARE = 635, SHOW = 636, SIMILAR = 637, SIMPLE = 638, SKIP = 639, SMALLINT = 640, SNAPSHOT = 641, SOME = 642, SQL_P = 643, STABLE = 644, STANDALONE_P = 645, START = 646, STATEMENT = 647, STATISTICS = 648, STDIN = 649, STDOUT = 650, STORAGE = 651, STORED = 652, STRICT_P = 653, STRIP_P = 654, SUBSCRIPTION = 655, SUBSTRING = 656, SUPPORT = 657, SYMMETRIC = 658, SYSID = 659, SYSTEM_P = 660, TABLE = 661, TABLES = 662, TABLESAMPLE = 663, TABLESPACE = 664, TEMP = 665, TEMPLATE = 666, TEMPORARY = 667, TEXT_P = 668, THEN = 669, TIES = 670, TIME = 671, TIMESTAMP = 672, TO = 673, TRAILING = 674, TRANSACTION = 675, TRANSFORM = 676, TREAT = 677, TRIGGER = 678, TRIM = 679, TRUE_P = 680, TRUNCATE = 681, TRUSTED = 682, TYPE_P = 683, TYPES_P = 684, UESCAPE = 685, UNBOUNDED = 686, UNCOMMITTED = 687, UNENCRYPTED = 688, UNION = 689, UNIQUE = 690, UNKNOWN = 691, UNLISTEN = 692, UNLOGGED = 693, UNTIL = 694, UPDATE = 695, USER = 696, USING = 697, VACUUM = 698, VALID = 699, VALIDATE = 700, VALIDATOR = 701, VALUE_P = 702, VALUES = 703, VARCHAR = 704, VARIADIC = 705, VARYING = 706, VERBOSE = 707, VERSION_P = 708, VIEW = 709, VIEWS = 710, VOLATILE = 711, WHEN = 712, WHERE = 713, WHITESPACE_P = 714, WINDOW = 715, WITH = 716, WITHIN = 717, WITHOUT = 718, WORK = 719, WRAPPER = 720, WRITE = 721, XML_P = 722, XMLATTRIBUTES = 723, XMLCONCAT = 724, XMLELEMENT = 725, XMLEXISTS = 726, XMLFOREST = 727, XMLNAMESPACES = 728, XMLPARSE = 729, XMLPI = 730, XMLROOT = 731, XMLSERIALIZE = 732, XMLTABLE = 733, YEAR_P = 734, YES_P = 735, ZONE = 736, NOT_LA = 737, NULLS_LA = 738, WITH_LA = 739, MODE_TYPE_NAME = 740, MODE_PLPGSQL_EXPR = 741, MODE_PLPGSQL_ASSIGN1 = 742, MODE_PLPGSQL_ASSIGN2 = 743, MODE_PLPGSQL_ASSIGN3 = 744, UMINUS = 745, Token_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits::min(), Token_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits::max() }; bool Token_IsValid(int value); constexpr Token Token_MIN = NUL; constexpr Token Token_MAX = UMINUS; constexpr int Token_ARRAYSIZE = Token_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* Token_descriptor(); template inline const std::string& Token_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function Token_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( Token_descriptor(), enum_t_value); } inline bool Token_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, Token* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( Token_descriptor(), name, value); } // =================================================================== class ParseResult final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ParseResult) */ { public: inline ParseResult() : ParseResult(nullptr) {} ~ParseResult() override; explicit PROTOBUF_CONSTEXPR ParseResult(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ParseResult(const ParseResult& from); ParseResult(ParseResult&& from) noexcept : ParseResult() { *this = ::std::move(from); } inline ParseResult& operator=(const ParseResult& from) { CopyFrom(from); return *this; } inline ParseResult& operator=(ParseResult&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ParseResult* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ParseResult* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ParseResult& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ParseResult& from) { ParseResult::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ParseResult* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ParseResult"; } protected: explicit ParseResult(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::RawStmt >* mutable_stmts(); private: const ::pg_query::RawStmt& _internal_stmts(int index) const; ::pg_query::RawStmt* _internal_add_stmts(); public: const ::pg_query::RawStmt& stmts(int index) const; ::pg_query::RawStmt* add_stmts(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::RawStmt >& stmts() const; // int32 version = 1; void clear_version(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::RawStmt > stmts_; int32_t version_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ScanResult final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ScanResult) */ { public: inline ScanResult() : ScanResult(nullptr) {} ~ScanResult() override; explicit PROTOBUF_CONSTEXPR ScanResult(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ScanResult(const ScanResult& from); ScanResult(ScanResult&& from) noexcept : ScanResult() { *this = ::std::move(from); } inline ScanResult& operator=(const ScanResult& from) { CopyFrom(from); return *this; } inline ScanResult& operator=(ScanResult&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ScanResult* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ScanResult* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ScanResult& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ScanResult& from) { ScanResult::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ScanResult* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ScanResult"; } protected: explicit ScanResult(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::ScanToken >* mutable_tokens(); private: const ::pg_query::ScanToken& _internal_tokens(int index) const; ::pg_query::ScanToken* _internal_add_tokens(); public: const ::pg_query::ScanToken& tokens(int index) const; ::pg_query::ScanToken* add_tokens(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::ScanToken >& tokens() const; // int32 version = 1; void clear_version(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::ScanToken > tokens_; int32_t version_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Node final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Node) */ { public: inline Node() : Node(nullptr) {} ~Node() override; explicit PROTOBUF_CONSTEXPR Node(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); Node(const Node& from); Node(Node&& from) noexcept : Node() { *this = ::std::move(from); } inline Node& operator=(const Node& from) { CopyFrom(from); return *this; } inline Node& operator=(Node&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const Node& default_instance() { return *internal_default_instance(); } enum NodeCase { kAlias = 1, kRangeVar = 2, kTableFunc = 3, kVar = 4, kParam = 5, kAggref = 6, kGroupingFunc = 7, kWindowFunc = 8, kSubscriptingRef = 9, kFuncExpr = 10, kNamedArgExpr = 11, kOpExpr = 12, kDistinctExpr = 13, kNullIfExpr = 14, kScalarArrayOpExpr = 15, kBoolExpr = 16, kSubLink = 17, kSubPlan = 18, kAlternativeSubPlan = 19, kFieldSelect = 20, kFieldStore = 21, kRelabelType = 22, kCoerceViaIo = 23, kArrayCoerceExpr = 24, kConvertRowtypeExpr = 25, kCollateExpr = 26, kCaseExpr = 27, kCaseWhen = 28, kCaseTestExpr = 29, kArrayExpr = 30, kRowExpr = 31, kRowCompareExpr = 32, kCoalesceExpr = 33, kMinMaxExpr = 34, kSqlvalueFunction = 35, kXmlExpr = 36, kNullTest = 37, kBooleanTest = 38, kCoerceToDomain = 39, kCoerceToDomainValue = 40, kSetToDefault = 41, kCurrentOfExpr = 42, kNextValueExpr = 43, kInferenceElem = 44, kTargetEntry = 45, kRangeTblRef = 46, kJoinExpr = 47, kFromExpr = 48, kOnConflictExpr = 49, kIntoClause = 50, kMergeAction = 51, kRawStmt = 52, kQuery = 53, kInsertStmt = 54, kDeleteStmt = 55, kUpdateStmt = 56, kMergeStmt = 57, kSelectStmt = 58, kReturnStmt = 59, kPlassignStmt = 60, kAlterTableStmt = 61, kAlterTableCmd = 62, kAlterDomainStmt = 63, kSetOperationStmt = 64, kGrantStmt = 65, kGrantRoleStmt = 66, kAlterDefaultPrivilegesStmt = 67, kClosePortalStmt = 68, kClusterStmt = 69, kCopyStmt = 70, kCreateStmt = 71, kDefineStmt = 72, kDropStmt = 73, kTruncateStmt = 74, kCommentStmt = 75, kFetchStmt = 76, kIndexStmt = 77, kCreateFunctionStmt = 78, kAlterFunctionStmt = 79, kDoStmt = 80, kRenameStmt = 81, kRuleStmt = 82, kNotifyStmt = 83, kListenStmt = 84, kUnlistenStmt = 85, kTransactionStmt = 86, kViewStmt = 87, kLoadStmt = 88, kCreateDomainStmt = 89, kCreatedbStmt = 90, kDropdbStmt = 91, kVacuumStmt = 92, kExplainStmt = 93, kCreateTableAsStmt = 94, kCreateSeqStmt = 95, kAlterSeqStmt = 96, kVariableSetStmt = 97, kVariableShowStmt = 98, kDiscardStmt = 99, kCreateTrigStmt = 100, kCreatePlangStmt = 101, kCreateRoleStmt = 102, kAlterRoleStmt = 103, kDropRoleStmt = 104, kLockStmt = 105, kConstraintsSetStmt = 106, kReindexStmt = 107, kCheckPointStmt = 108, kCreateSchemaStmt = 109, kAlterDatabaseStmt = 110, kAlterDatabaseRefreshCollStmt = 111, kAlterDatabaseSetStmt = 112, kAlterRoleSetStmt = 113, kCreateConversionStmt = 114, kCreateCastStmt = 115, kCreateOpClassStmt = 116, kCreateOpFamilyStmt = 117, kAlterOpFamilyStmt = 118, kPrepareStmt = 119, kExecuteStmt = 120, kDeallocateStmt = 121, kDeclareCursorStmt = 122, kCreateTableSpaceStmt = 123, kDropTableSpaceStmt = 124, kAlterObjectDependsStmt = 125, kAlterObjectSchemaStmt = 126, kAlterOwnerStmt = 127, kAlterOperatorStmt = 128, kAlterTypeStmt = 129, kDropOwnedStmt = 130, kReassignOwnedStmt = 131, kCompositeTypeStmt = 132, kCreateEnumStmt = 133, kCreateRangeStmt = 134, kAlterEnumStmt = 135, kAlterTsdictionaryStmt = 136, kAlterTsconfigurationStmt = 137, kCreateFdwStmt = 138, kAlterFdwStmt = 139, kCreateForeignServerStmt = 140, kAlterForeignServerStmt = 141, kCreateUserMappingStmt = 142, kAlterUserMappingStmt = 143, kDropUserMappingStmt = 144, kAlterTableSpaceOptionsStmt = 145, kAlterTableMoveAllStmt = 146, kSecLabelStmt = 147, kCreateForeignTableStmt = 148, kImportForeignSchemaStmt = 149, kCreateExtensionStmt = 150, kAlterExtensionStmt = 151, kAlterExtensionContentsStmt = 152, kCreateEventTrigStmt = 153, kAlterEventTrigStmt = 154, kRefreshMatViewStmt = 155, kReplicaIdentityStmt = 156, kAlterSystemStmt = 157, kCreatePolicyStmt = 158, kAlterPolicyStmt = 159, kCreateTransformStmt = 160, kCreateAmStmt = 161, kCreatePublicationStmt = 162, kAlterPublicationStmt = 163, kCreateSubscriptionStmt = 164, kAlterSubscriptionStmt = 165, kDropSubscriptionStmt = 166, kCreateStatsStmt = 167, kAlterCollationStmt = 168, kCallStmt = 169, kAlterStatsStmt = 170, kAExpr = 171, kColumnRef = 172, kParamRef = 173, kFuncCall = 174, kAStar = 175, kAIndices = 176, kAIndirection = 177, kAArrayExpr = 178, kResTarget = 179, kMultiAssignRef = 180, kTypeCast = 181, kCollateClause = 182, kSortBy = 183, kWindowDef = 184, kRangeSubselect = 185, kRangeFunction = 186, kRangeTableSample = 187, kRangeTableFunc = 188, kRangeTableFuncCol = 189, kTypeName = 190, kColumnDef = 191, kIndexElem = 192, kStatsElem = 193, kConstraint = 194, kDefElem = 195, kRangeTblEntry = 196, kRangeTblFunction = 197, kTableSampleClause = 198, kWithCheckOption = 199, kSortGroupClause = 200, kGroupingSet = 201, kWindowClause = 202, kObjectWithArgs = 203, kAccessPriv = 204, kCreateOpClassItem = 205, kTableLikeClause = 206, kFunctionParameter = 207, kLockingClause = 208, kRowMarkClause = 209, kXmlSerialize = 210, kWithClause = 211, kInferClause = 212, kOnConflictClause = 213, kCtesearchClause = 214, kCtecycleClause = 215, kCommonTableExpr = 216, kMergeWhenClause = 217, kRoleSpec = 218, kTriggerTransition = 219, kPartitionElem = 220, kPartitionSpec = 221, kPartitionBoundSpec = 222, kPartitionRangeDatum = 223, kPartitionCmd = 224, kVacuumRelation = 225, kPublicationObjSpec = 226, kPublicationTable = 227, kInlineCodeBlock = 228, kCallContext = 229, kInteger = 230, kFloat = 231, kBoolean = 232, kString = 233, kBitString = 234, kList = 235, kIntList = 236, kOidList = 237, kAConst = 238, 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Node* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Node* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const Node& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const Node& from) { Node::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Node* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Node"; } protected: explicit Node(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kAliasFieldNumber = 1, kRangeVarFieldNumber = 2, kTableFuncFieldNumber = 3, kVarFieldNumber = 4, kParamFieldNumber = 5, kAggrefFieldNumber = 6, kGroupingFuncFieldNumber = 7, kWindowFuncFieldNumber = 8, kSubscriptingRefFieldNumber = 9, kFuncExprFieldNumber = 10, kNamedArgExprFieldNumber = 11, kOpExprFieldNumber = 12, kDistinctExprFieldNumber = 13, kNullIfExprFieldNumber = 14, kScalarArrayOpExprFieldNumber = 15, kBoolExprFieldNumber = 16, kSubLinkFieldNumber = 17, kSubPlanFieldNumber = 18, kAlternativeSubPlanFieldNumber = 19, kFieldSelectFieldNumber = 20, kFieldStoreFieldNumber = 21, kRelabelTypeFieldNumber = 22, kCoerceViaIoFieldNumber = 23, kArrayCoerceExprFieldNumber = 24, kConvertRowtypeExprFieldNumber = 25, kCollateExprFieldNumber = 26, kCaseExprFieldNumber = 27, kCaseWhenFieldNumber = 28, kCaseTestExprFieldNumber = 29, kArrayExprFieldNumber = 30, kRowExprFieldNumber = 31, kRowCompareExprFieldNumber = 32, kCoalesceExprFieldNumber = 33, kMinMaxExprFieldNumber = 34, kSqlvalueFunctionFieldNumber = 35, kXmlExprFieldNumber = 36, kNullTestFieldNumber = 37, kBooleanTestFieldNumber = 38, kCoerceToDomainFieldNumber = 39, kCoerceToDomainValueFieldNumber = 40, kSetToDefaultFieldNumber = 41, kCurrentOfExprFieldNumber = 42, kNextValueExprFieldNumber = 43, kInferenceElemFieldNumber = 44, kTargetEntryFieldNumber = 45, kRangeTblRefFieldNumber = 46, kJoinExprFieldNumber = 47, kFromExprFieldNumber = 48, kOnConflictExprFieldNumber = 49, kIntoClauseFieldNumber = 50, kMergeActionFieldNumber = 51, kRawStmtFieldNumber = 52, kQueryFieldNumber = 53, kInsertStmtFieldNumber = 54, kDeleteStmtFieldNumber = 55, kUpdateStmtFieldNumber = 56, kMergeStmtFieldNumber = 57, kSelectStmtFieldNumber = 58, kReturnStmtFieldNumber = 59, kPlassignStmtFieldNumber = 60, kAlterTableStmtFieldNumber = 61, kAlterTableCmdFieldNumber = 62, kAlterDomainStmtFieldNumber = 63, kSetOperationStmtFieldNumber = 64, kGrantStmtFieldNumber = 65, kGrantRoleStmtFieldNumber = 66, kAlterDefaultPrivilegesStmtFieldNumber = 67, kClosePortalStmtFieldNumber = 68, kClusterStmtFieldNumber = 69, kCopyStmtFieldNumber = 70, kCreateStmtFieldNumber = 71, kDefineStmtFieldNumber = 72, kDropStmtFieldNumber = 73, kTruncateStmtFieldNumber = 74, kCommentStmtFieldNumber = 75, kFetchStmtFieldNumber = 76, kIndexStmtFieldNumber = 77, kCreateFunctionStmtFieldNumber = 78, kAlterFunctionStmtFieldNumber = 79, kDoStmtFieldNumber = 80, kRenameStmtFieldNumber = 81, kRuleStmtFieldNumber = 82, kNotifyStmtFieldNumber = 83, kListenStmtFieldNumber = 84, kUnlistenStmtFieldNumber = 85, kTransactionStmtFieldNumber = 86, kViewStmtFieldNumber = 87, kLoadStmtFieldNumber = 88, kCreateDomainStmtFieldNumber = 89, kCreatedbStmtFieldNumber = 90, kDropdbStmtFieldNumber = 91, kVacuumStmtFieldNumber = 92, kExplainStmtFieldNumber = 93, kCreateTableAsStmtFieldNumber = 94, kCreateSeqStmtFieldNumber = 95, kAlterSeqStmtFieldNumber = 96, kVariableSetStmtFieldNumber = 97, kVariableShowStmtFieldNumber = 98, kDiscardStmtFieldNumber = 99, kCreateTrigStmtFieldNumber = 100, kCreatePlangStmtFieldNumber = 101, kCreateRoleStmtFieldNumber = 102, kAlterRoleStmtFieldNumber = 103, kDropRoleStmtFieldNumber = 104, kLockStmtFieldNumber = 105, kConstraintsSetStmtFieldNumber = 106, kReindexStmtFieldNumber = 107, kCheckPointStmtFieldNumber = 108, kCreateSchemaStmtFieldNumber = 109, kAlterDatabaseStmtFieldNumber = 110, kAlterDatabaseRefreshCollStmtFieldNumber = 111, kAlterDatabaseSetStmtFieldNumber = 112, kAlterRoleSetStmtFieldNumber = 113, kCreateConversionStmtFieldNumber = 114, kCreateCastStmtFieldNumber = 115, kCreateOpClassStmtFieldNumber = 116, kCreateOpFamilyStmtFieldNumber = 117, kAlterOpFamilyStmtFieldNumber = 118, kPrepareStmtFieldNumber = 119, kExecuteStmtFieldNumber = 120, kDeallocateStmtFieldNumber = 121, kDeclareCursorStmtFieldNumber = 122, kCreateTableSpaceStmtFieldNumber = 123, kDropTableSpaceStmtFieldNumber = 124, kAlterObjectDependsStmtFieldNumber = 125, kAlterObjectSchemaStmtFieldNumber = 126, kAlterOwnerStmtFieldNumber = 127, kAlterOperatorStmtFieldNumber = 128, kAlterTypeStmtFieldNumber = 129, kDropOwnedStmtFieldNumber = 130, kReassignOwnedStmtFieldNumber = 131, kCompositeTypeStmtFieldNumber = 132, kCreateEnumStmtFieldNumber = 133, kCreateRangeStmtFieldNumber = 134, kAlterEnumStmtFieldNumber = 135, kAlterTsdictionaryStmtFieldNumber = 136, kAlterTsconfigurationStmtFieldNumber = 137, kCreateFdwStmtFieldNumber = 138, kAlterFdwStmtFieldNumber = 139, kCreateForeignServerStmtFieldNumber = 140, kAlterForeignServerStmtFieldNumber = 141, kCreateUserMappingStmtFieldNumber = 142, kAlterUserMappingStmtFieldNumber = 143, kDropUserMappingStmtFieldNumber = 144, kAlterTableSpaceOptionsStmtFieldNumber = 145, kAlterTableMoveAllStmtFieldNumber = 146, kSecLabelStmtFieldNumber = 147, kCreateForeignTableStmtFieldNumber = 148, kImportForeignSchemaStmtFieldNumber = 149, kCreateExtensionStmtFieldNumber = 150, kAlterExtensionStmtFieldNumber = 151, kAlterExtensionContentsStmtFieldNumber = 152, kCreateEventTrigStmtFieldNumber = 153, kAlterEventTrigStmtFieldNumber = 154, kRefreshMatViewStmtFieldNumber = 155, kReplicaIdentityStmtFieldNumber = 156, kAlterSystemStmtFieldNumber = 157, kCreatePolicyStmtFieldNumber = 158, kAlterPolicyStmtFieldNumber = 159, kCreateTransformStmtFieldNumber = 160, kCreateAmStmtFieldNumber = 161, kCreatePublicationStmtFieldNumber = 162, kAlterPublicationStmtFieldNumber = 163, kCreateSubscriptionStmtFieldNumber = 164, kAlterSubscriptionStmtFieldNumber = 165, kDropSubscriptionStmtFieldNumber = 166, kCreateStatsStmtFieldNumber = 167, kAlterCollationStmtFieldNumber = 168, kCallStmtFieldNumber = 169, kAlterStatsStmtFieldNumber = 170, kAExprFieldNumber = 171, kColumnRefFieldNumber = 172, kParamRefFieldNumber = 173, kFuncCallFieldNumber = 174, kAStarFieldNumber = 175, kAIndicesFieldNumber = 176, kAIndirectionFieldNumber = 177, kAArrayExprFieldNumber = 178, kResTargetFieldNumber = 179, kMultiAssignRefFieldNumber = 180, kTypeCastFieldNumber = 181, kCollateClauseFieldNumber = 182, kSortByFieldNumber = 183, kWindowDefFieldNumber = 184, kRangeSubselectFieldNumber = 185, kRangeFunctionFieldNumber = 186, kRangeTableSampleFieldNumber = 187, kRangeTableFuncFieldNumber = 188, kRangeTableFuncColFieldNumber = 189, kTypeNameFieldNumber = 190, kColumnDefFieldNumber = 191, kIndexElemFieldNumber = 192, kStatsElemFieldNumber = 193, kConstraintFieldNumber = 194, kDefElemFieldNumber = 195, kRangeTblEntryFieldNumber = 196, kRangeTblFunctionFieldNumber = 197, kTableSampleClauseFieldNumber = 198, kWithCheckOptionFieldNumber = 199, kSortGroupClauseFieldNumber = 200, kGroupingSetFieldNumber = 201, kWindowClauseFieldNumber = 202, kObjectWithArgsFieldNumber = 203, kAccessPrivFieldNumber = 204, kCreateOpClassItemFieldNumber = 205, kTableLikeClauseFieldNumber = 206, kFunctionParameterFieldNumber = 207, kLockingClauseFieldNumber = 208, kRowMarkClauseFieldNumber = 209, kXmlSerializeFieldNumber = 210, kWithClauseFieldNumber = 211, kInferClauseFieldNumber = 212, kOnConflictClauseFieldNumber = 213, kCtesearchClauseFieldNumber = 214, kCtecycleClauseFieldNumber = 215, kCommonTableExprFieldNumber = 216, kMergeWhenClauseFieldNumber = 217, kRoleSpecFieldNumber = 218, kTriggerTransitionFieldNumber = 219, kPartitionElemFieldNumber = 220, kPartitionSpecFieldNumber = 221, kPartitionBoundSpecFieldNumber = 222, kPartitionRangeDatumFieldNumber = 223, kPartitionCmdFieldNumber = 224, kVacuumRelationFieldNumber = 225, kPublicationObjSpecFieldNumber = 226, kPublicationTableFieldNumber = 227, kInlineCodeBlockFieldNumber = 228, kCallContextFieldNumber = 229, kIntegerFieldNumber = 230, kFloatFieldNumber = 231, kBooleanFieldNumber = 232, kStringFieldNumber = 233, kBitStringFieldNumber = 234, kListFieldNumber = 235, kIntListFieldNumber = 236, kOidListFieldNumber = 237, kAConstFieldNumber = 238, }; // .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* alias); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: void unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias); ::pg_query::Alias* unsafe_arena_release_alias(); // .pg_query.RangeVar range_var = 2 [json_name = "RangeVar"]; bool has_range_var() const; private: bool _internal_has_range_var() const; public: void clear_range_var(); const ::pg_query::RangeVar& range_var() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_range_var(); ::pg_query::RangeVar* mutable_range_var(); void set_allocated_range_var(::pg_query::RangeVar* range_var); private: const ::pg_query::RangeVar& _internal_range_var() const; ::pg_query::RangeVar* _internal_mutable_range_var(); public: void unsafe_arena_set_allocated_range_var( ::pg_query::RangeVar* range_var); ::pg_query::RangeVar* unsafe_arena_release_range_var(); // .pg_query.TableFunc table_func = 3 [json_name = "TableFunc"]; bool has_table_func() const; private: bool _internal_has_table_func() const; public: void clear_table_func(); const ::pg_query::TableFunc& table_func() const; PROTOBUF_NODISCARD ::pg_query::TableFunc* release_table_func(); ::pg_query::TableFunc* mutable_table_func(); void set_allocated_table_func(::pg_query::TableFunc* table_func); private: const ::pg_query::TableFunc& _internal_table_func() const; ::pg_query::TableFunc* _internal_mutable_table_func(); public: void unsafe_arena_set_allocated_table_func( ::pg_query::TableFunc* table_func); ::pg_query::TableFunc* unsafe_arena_release_table_func(); // .pg_query.Var var = 4 [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* var); private: const ::pg_query::Var& _internal_var() const; ::pg_query::Var* _internal_mutable_var(); public: void unsafe_arena_set_allocated_var( ::pg_query::Var* var); ::pg_query::Var* unsafe_arena_release_var(); // .pg_query.Param param = 5 [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* param); private: const ::pg_query::Param& _internal_param() const; ::pg_query::Param* _internal_mutable_param(); public: void unsafe_arena_set_allocated_param( ::pg_query::Param* param); ::pg_query::Param* unsafe_arena_release_param(); // .pg_query.Aggref aggref = 6 [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* aggref); private: const ::pg_query::Aggref& _internal_aggref() const; ::pg_query::Aggref* _internal_mutable_aggref(); public: void unsafe_arena_set_allocated_aggref( ::pg_query::Aggref* aggref); ::pg_query::Aggref* unsafe_arena_release_aggref(); // .pg_query.GroupingFunc grouping_func = 7 [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* grouping_func); private: const ::pg_query::GroupingFunc& _internal_grouping_func() const; ::pg_query::GroupingFunc* _internal_mutable_grouping_func(); public: void unsafe_arena_set_allocated_grouping_func( ::pg_query::GroupingFunc* grouping_func); ::pg_query::GroupingFunc* unsafe_arena_release_grouping_func(); // .pg_query.WindowFunc window_func = 8 [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* window_func); private: const ::pg_query::WindowFunc& _internal_window_func() const; ::pg_query::WindowFunc* _internal_mutable_window_func(); public: void unsafe_arena_set_allocated_window_func( ::pg_query::WindowFunc* window_func); ::pg_query::WindowFunc* unsafe_arena_release_window_func(); // .pg_query.SubscriptingRef subscripting_ref = 9 [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* subscripting_ref); private: const ::pg_query::SubscriptingRef& _internal_subscripting_ref() const; ::pg_query::SubscriptingRef* _internal_mutable_subscripting_ref(); public: void unsafe_arena_set_allocated_subscripting_ref( ::pg_query::SubscriptingRef* subscripting_ref); ::pg_query::SubscriptingRef* unsafe_arena_release_subscripting_ref(); // .pg_query.FuncExpr func_expr = 10 [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* func_expr); private: const ::pg_query::FuncExpr& _internal_func_expr() const; ::pg_query::FuncExpr* _internal_mutable_func_expr(); public: void unsafe_arena_set_allocated_func_expr( ::pg_query::FuncExpr* func_expr); ::pg_query::FuncExpr* unsafe_arena_release_func_expr(); // .pg_query.NamedArgExpr named_arg_expr = 11 [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* named_arg_expr); private: const ::pg_query::NamedArgExpr& _internal_named_arg_expr() const; ::pg_query::NamedArgExpr* _internal_mutable_named_arg_expr(); public: void unsafe_arena_set_allocated_named_arg_expr( ::pg_query::NamedArgExpr* named_arg_expr); ::pg_query::NamedArgExpr* unsafe_arena_release_named_arg_expr(); // .pg_query.OpExpr op_expr = 12 [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* op_expr); private: const ::pg_query::OpExpr& _internal_op_expr() const; ::pg_query::OpExpr* _internal_mutable_op_expr(); public: void unsafe_arena_set_allocated_op_expr( ::pg_query::OpExpr* op_expr); ::pg_query::OpExpr* unsafe_arena_release_op_expr(); // .pg_query.DistinctExpr distinct_expr = 13 [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* distinct_expr); private: const ::pg_query::DistinctExpr& _internal_distinct_expr() const; ::pg_query::DistinctExpr* _internal_mutable_distinct_expr(); public: void unsafe_arena_set_allocated_distinct_expr( ::pg_query::DistinctExpr* distinct_expr); ::pg_query::DistinctExpr* unsafe_arena_release_distinct_expr(); // .pg_query.NullIfExpr null_if_expr = 14 [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* null_if_expr); private: const ::pg_query::NullIfExpr& _internal_null_if_expr() const; ::pg_query::NullIfExpr* _internal_mutable_null_if_expr(); public: void unsafe_arena_set_allocated_null_if_expr( ::pg_query::NullIfExpr* null_if_expr); ::pg_query::NullIfExpr* unsafe_arena_release_null_if_expr(); // .pg_query.ScalarArrayOpExpr scalar_array_op_expr = 15 [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* scalar_array_op_expr); private: const ::pg_query::ScalarArrayOpExpr& _internal_scalar_array_op_expr() const; ::pg_query::ScalarArrayOpExpr* _internal_mutable_scalar_array_op_expr(); public: void unsafe_arena_set_allocated_scalar_array_op_expr( ::pg_query::ScalarArrayOpExpr* scalar_array_op_expr); ::pg_query::ScalarArrayOpExpr* unsafe_arena_release_scalar_array_op_expr(); // .pg_query.BoolExpr bool_expr = 16 [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* bool_expr); private: const ::pg_query::BoolExpr& _internal_bool_expr() const; ::pg_query::BoolExpr* _internal_mutable_bool_expr(); public: void unsafe_arena_set_allocated_bool_expr( ::pg_query::BoolExpr* bool_expr); ::pg_query::BoolExpr* unsafe_arena_release_bool_expr(); // .pg_query.SubLink sub_link = 17 [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* sub_link); private: const ::pg_query::SubLink& _internal_sub_link() const; ::pg_query::SubLink* _internal_mutable_sub_link(); public: void unsafe_arena_set_allocated_sub_link( ::pg_query::SubLink* sub_link); ::pg_query::SubLink* unsafe_arena_release_sub_link(); // .pg_query.SubPlan sub_plan = 18 [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* sub_plan); private: const ::pg_query::SubPlan& _internal_sub_plan() const; ::pg_query::SubPlan* _internal_mutable_sub_plan(); public: void unsafe_arena_set_allocated_sub_plan( ::pg_query::SubPlan* sub_plan); ::pg_query::SubPlan* unsafe_arena_release_sub_plan(); // .pg_query.AlternativeSubPlan alternative_sub_plan = 19 [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* alternative_sub_plan); private: const ::pg_query::AlternativeSubPlan& _internal_alternative_sub_plan() const; ::pg_query::AlternativeSubPlan* _internal_mutable_alternative_sub_plan(); public: void unsafe_arena_set_allocated_alternative_sub_plan( ::pg_query::AlternativeSubPlan* alternative_sub_plan); ::pg_query::AlternativeSubPlan* unsafe_arena_release_alternative_sub_plan(); // .pg_query.FieldSelect field_select = 20 [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* field_select); private: const ::pg_query::FieldSelect& _internal_field_select() const; ::pg_query::FieldSelect* _internal_mutable_field_select(); public: void unsafe_arena_set_allocated_field_select( ::pg_query::FieldSelect* field_select); ::pg_query::FieldSelect* unsafe_arena_release_field_select(); // .pg_query.FieldStore field_store = 21 [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* field_store); private: const ::pg_query::FieldStore& _internal_field_store() const; ::pg_query::FieldStore* _internal_mutable_field_store(); public: void unsafe_arena_set_allocated_field_store( ::pg_query::FieldStore* field_store); ::pg_query::FieldStore* unsafe_arena_release_field_store(); // .pg_query.RelabelType relabel_type = 22 [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* relabel_type); private: const ::pg_query::RelabelType& _internal_relabel_type() const; ::pg_query::RelabelType* _internal_mutable_relabel_type(); public: void unsafe_arena_set_allocated_relabel_type( ::pg_query::RelabelType* relabel_type); ::pg_query::RelabelType* unsafe_arena_release_relabel_type(); // .pg_query.CoerceViaIO coerce_via_io = 23 [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* coerce_via_io); private: const ::pg_query::CoerceViaIO& _internal_coerce_via_io() const; ::pg_query::CoerceViaIO* _internal_mutable_coerce_via_io(); public: void unsafe_arena_set_allocated_coerce_via_io( ::pg_query::CoerceViaIO* coerce_via_io); ::pg_query::CoerceViaIO* unsafe_arena_release_coerce_via_io(); // .pg_query.ArrayCoerceExpr array_coerce_expr = 24 [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* array_coerce_expr); private: const ::pg_query::ArrayCoerceExpr& _internal_array_coerce_expr() const; ::pg_query::ArrayCoerceExpr* _internal_mutable_array_coerce_expr(); public: void unsafe_arena_set_allocated_array_coerce_expr( ::pg_query::ArrayCoerceExpr* array_coerce_expr); ::pg_query::ArrayCoerceExpr* unsafe_arena_release_array_coerce_expr(); // .pg_query.ConvertRowtypeExpr convert_rowtype_expr = 25 [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* convert_rowtype_expr); private: const ::pg_query::ConvertRowtypeExpr& _internal_convert_rowtype_expr() const; ::pg_query::ConvertRowtypeExpr* _internal_mutable_convert_rowtype_expr(); public: void unsafe_arena_set_allocated_convert_rowtype_expr( ::pg_query::ConvertRowtypeExpr* convert_rowtype_expr); ::pg_query::ConvertRowtypeExpr* unsafe_arena_release_convert_rowtype_expr(); // .pg_query.CollateExpr collate_expr = 26 [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* collate_expr); private: const ::pg_query::CollateExpr& _internal_collate_expr() const; ::pg_query::CollateExpr* _internal_mutable_collate_expr(); public: void unsafe_arena_set_allocated_collate_expr( ::pg_query::CollateExpr* collate_expr); ::pg_query::CollateExpr* unsafe_arena_release_collate_expr(); // .pg_query.CaseExpr case_expr = 27 [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* case_expr); private: const ::pg_query::CaseExpr& _internal_case_expr() const; ::pg_query::CaseExpr* _internal_mutable_case_expr(); public: void unsafe_arena_set_allocated_case_expr( ::pg_query::CaseExpr* case_expr); ::pg_query::CaseExpr* unsafe_arena_release_case_expr(); // .pg_query.CaseWhen case_when = 28 [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* case_when); private: const ::pg_query::CaseWhen& _internal_case_when() const; ::pg_query::CaseWhen* _internal_mutable_case_when(); public: void unsafe_arena_set_allocated_case_when( ::pg_query::CaseWhen* case_when); ::pg_query::CaseWhen* unsafe_arena_release_case_when(); // .pg_query.CaseTestExpr case_test_expr = 29 [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* case_test_expr); private: const ::pg_query::CaseTestExpr& _internal_case_test_expr() const; ::pg_query::CaseTestExpr* _internal_mutable_case_test_expr(); public: void unsafe_arena_set_allocated_case_test_expr( ::pg_query::CaseTestExpr* case_test_expr); ::pg_query::CaseTestExpr* unsafe_arena_release_case_test_expr(); // .pg_query.ArrayExpr array_expr = 30 [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* array_expr); private: const ::pg_query::ArrayExpr& _internal_array_expr() const; ::pg_query::ArrayExpr* _internal_mutable_array_expr(); public: void unsafe_arena_set_allocated_array_expr( ::pg_query::ArrayExpr* array_expr); ::pg_query::ArrayExpr* unsafe_arena_release_array_expr(); // .pg_query.RowExpr row_expr = 31 [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* row_expr); private: const ::pg_query::RowExpr& _internal_row_expr() const; ::pg_query::RowExpr* _internal_mutable_row_expr(); public: void unsafe_arena_set_allocated_row_expr( ::pg_query::RowExpr* row_expr); ::pg_query::RowExpr* unsafe_arena_release_row_expr(); // .pg_query.RowCompareExpr row_compare_expr = 32 [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* row_compare_expr); private: const ::pg_query::RowCompareExpr& _internal_row_compare_expr() const; ::pg_query::RowCompareExpr* _internal_mutable_row_compare_expr(); public: void unsafe_arena_set_allocated_row_compare_expr( ::pg_query::RowCompareExpr* row_compare_expr); ::pg_query::RowCompareExpr* unsafe_arena_release_row_compare_expr(); // .pg_query.CoalesceExpr coalesce_expr = 33 [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* coalesce_expr); private: const ::pg_query::CoalesceExpr& _internal_coalesce_expr() const; ::pg_query::CoalesceExpr* _internal_mutable_coalesce_expr(); public: void unsafe_arena_set_allocated_coalesce_expr( ::pg_query::CoalesceExpr* coalesce_expr); ::pg_query::CoalesceExpr* unsafe_arena_release_coalesce_expr(); // .pg_query.MinMaxExpr min_max_expr = 34 [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* min_max_expr); private: const ::pg_query::MinMaxExpr& _internal_min_max_expr() const; ::pg_query::MinMaxExpr* _internal_mutable_min_max_expr(); public: void unsafe_arena_set_allocated_min_max_expr( ::pg_query::MinMaxExpr* min_max_expr); ::pg_query::MinMaxExpr* unsafe_arena_release_min_max_expr(); // .pg_query.SQLValueFunction sqlvalue_function = 35 [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* sqlvalue_function); private: const ::pg_query::SQLValueFunction& _internal_sqlvalue_function() const; ::pg_query::SQLValueFunction* _internal_mutable_sqlvalue_function(); public: void unsafe_arena_set_allocated_sqlvalue_function( ::pg_query::SQLValueFunction* sqlvalue_function); ::pg_query::SQLValueFunction* unsafe_arena_release_sqlvalue_function(); // .pg_query.XmlExpr xml_expr = 36 [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* xml_expr); private: const ::pg_query::XmlExpr& _internal_xml_expr() const; ::pg_query::XmlExpr* _internal_mutable_xml_expr(); public: void unsafe_arena_set_allocated_xml_expr( ::pg_query::XmlExpr* xml_expr); ::pg_query::XmlExpr* unsafe_arena_release_xml_expr(); // .pg_query.NullTest null_test = 37 [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* null_test); private: const ::pg_query::NullTest& _internal_null_test() const; ::pg_query::NullTest* _internal_mutable_null_test(); public: void unsafe_arena_set_allocated_null_test( ::pg_query::NullTest* null_test); ::pg_query::NullTest* unsafe_arena_release_null_test(); // .pg_query.BooleanTest boolean_test = 38 [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* boolean_test); private: const ::pg_query::BooleanTest& _internal_boolean_test() const; ::pg_query::BooleanTest* _internal_mutable_boolean_test(); public: void unsafe_arena_set_allocated_boolean_test( ::pg_query::BooleanTest* boolean_test); ::pg_query::BooleanTest* unsafe_arena_release_boolean_test(); // .pg_query.CoerceToDomain coerce_to_domain = 39 [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* coerce_to_domain); private: const ::pg_query::CoerceToDomain& _internal_coerce_to_domain() const; ::pg_query::CoerceToDomain* _internal_mutable_coerce_to_domain(); public: void unsafe_arena_set_allocated_coerce_to_domain( ::pg_query::CoerceToDomain* coerce_to_domain); ::pg_query::CoerceToDomain* unsafe_arena_release_coerce_to_domain(); // .pg_query.CoerceToDomainValue coerce_to_domain_value = 40 [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* coerce_to_domain_value); private: const ::pg_query::CoerceToDomainValue& _internal_coerce_to_domain_value() const; ::pg_query::CoerceToDomainValue* _internal_mutable_coerce_to_domain_value(); public: void unsafe_arena_set_allocated_coerce_to_domain_value( ::pg_query::CoerceToDomainValue* coerce_to_domain_value); ::pg_query::CoerceToDomainValue* unsafe_arena_release_coerce_to_domain_value(); // .pg_query.SetToDefault set_to_default = 41 [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* set_to_default); private: const ::pg_query::SetToDefault& _internal_set_to_default() const; ::pg_query::SetToDefault* _internal_mutable_set_to_default(); public: void unsafe_arena_set_allocated_set_to_default( ::pg_query::SetToDefault* set_to_default); ::pg_query::SetToDefault* unsafe_arena_release_set_to_default(); // .pg_query.CurrentOfExpr current_of_expr = 42 [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* current_of_expr); private: const ::pg_query::CurrentOfExpr& _internal_current_of_expr() const; ::pg_query::CurrentOfExpr* _internal_mutable_current_of_expr(); public: void unsafe_arena_set_allocated_current_of_expr( ::pg_query::CurrentOfExpr* current_of_expr); ::pg_query::CurrentOfExpr* unsafe_arena_release_current_of_expr(); // .pg_query.NextValueExpr next_value_expr = 43 [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* next_value_expr); private: const ::pg_query::NextValueExpr& _internal_next_value_expr() const; ::pg_query::NextValueExpr* _internal_mutable_next_value_expr(); public: void unsafe_arena_set_allocated_next_value_expr( ::pg_query::NextValueExpr* next_value_expr); ::pg_query::NextValueExpr* unsafe_arena_release_next_value_expr(); // .pg_query.InferenceElem inference_elem = 44 [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* inference_elem); private: const ::pg_query::InferenceElem& _internal_inference_elem() const; ::pg_query::InferenceElem* _internal_mutable_inference_elem(); public: void unsafe_arena_set_allocated_inference_elem( ::pg_query::InferenceElem* inference_elem); ::pg_query::InferenceElem* unsafe_arena_release_inference_elem(); // .pg_query.TargetEntry target_entry = 45 [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* target_entry); private: const ::pg_query::TargetEntry& _internal_target_entry() const; ::pg_query::TargetEntry* _internal_mutable_target_entry(); public: void unsafe_arena_set_allocated_target_entry( ::pg_query::TargetEntry* target_entry); ::pg_query::TargetEntry* unsafe_arena_release_target_entry(); // .pg_query.RangeTblRef range_tbl_ref = 46 [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* range_tbl_ref); private: const ::pg_query::RangeTblRef& _internal_range_tbl_ref() const; ::pg_query::RangeTblRef* _internal_mutable_range_tbl_ref(); public: void unsafe_arena_set_allocated_range_tbl_ref( ::pg_query::RangeTblRef* range_tbl_ref); ::pg_query::RangeTblRef* unsafe_arena_release_range_tbl_ref(); // .pg_query.JoinExpr join_expr = 47 [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* join_expr); private: const ::pg_query::JoinExpr& _internal_join_expr() const; ::pg_query::JoinExpr* _internal_mutable_join_expr(); public: void unsafe_arena_set_allocated_join_expr( ::pg_query::JoinExpr* join_expr); ::pg_query::JoinExpr* unsafe_arena_release_join_expr(); // .pg_query.FromExpr from_expr = 48 [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* from_expr); private: const ::pg_query::FromExpr& _internal_from_expr() const; ::pg_query::FromExpr* _internal_mutable_from_expr(); public: void unsafe_arena_set_allocated_from_expr( ::pg_query::FromExpr* from_expr); ::pg_query::FromExpr* unsafe_arena_release_from_expr(); // .pg_query.OnConflictExpr on_conflict_expr = 49 [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* on_conflict_expr); private: const ::pg_query::OnConflictExpr& _internal_on_conflict_expr() const; ::pg_query::OnConflictExpr* _internal_mutable_on_conflict_expr(); public: void unsafe_arena_set_allocated_on_conflict_expr( ::pg_query::OnConflictExpr* on_conflict_expr); ::pg_query::OnConflictExpr* unsafe_arena_release_on_conflict_expr(); // .pg_query.IntoClause into_clause = 50 [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* into_clause); private: const ::pg_query::IntoClause& _internal_into_clause() const; ::pg_query::IntoClause* _internal_mutable_into_clause(); public: void unsafe_arena_set_allocated_into_clause( ::pg_query::IntoClause* into_clause); ::pg_query::IntoClause* unsafe_arena_release_into_clause(); // .pg_query.MergeAction merge_action = 51 [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* merge_action); private: const ::pg_query::MergeAction& _internal_merge_action() const; ::pg_query::MergeAction* _internal_mutable_merge_action(); public: void unsafe_arena_set_allocated_merge_action( ::pg_query::MergeAction* merge_action); ::pg_query::MergeAction* unsafe_arena_release_merge_action(); // .pg_query.RawStmt raw_stmt = 52 [json_name = "RawStmt"]; bool has_raw_stmt() const; private: bool _internal_has_raw_stmt() const; public: void clear_raw_stmt(); const ::pg_query::RawStmt& raw_stmt() const; PROTOBUF_NODISCARD ::pg_query::RawStmt* release_raw_stmt(); ::pg_query::RawStmt* mutable_raw_stmt(); void set_allocated_raw_stmt(::pg_query::RawStmt* raw_stmt); private: const ::pg_query::RawStmt& _internal_raw_stmt() const; ::pg_query::RawStmt* _internal_mutable_raw_stmt(); public: void unsafe_arena_set_allocated_raw_stmt( ::pg_query::RawStmt* raw_stmt); ::pg_query::RawStmt* unsafe_arena_release_raw_stmt(); // .pg_query.Query query = 53 [json_name = "Query"]; bool has_query() const; private: bool _internal_has_query() const; public: void clear_query(); const ::pg_query::Query& query() const; PROTOBUF_NODISCARD ::pg_query::Query* release_query(); ::pg_query::Query* mutable_query(); void set_allocated_query(::pg_query::Query* query); private: const ::pg_query::Query& _internal_query() const; ::pg_query::Query* _internal_mutable_query(); public: void unsafe_arena_set_allocated_query( ::pg_query::Query* query); ::pg_query::Query* unsafe_arena_release_query(); // .pg_query.InsertStmt insert_stmt = 54 [json_name = "InsertStmt"]; bool has_insert_stmt() const; private: bool _internal_has_insert_stmt() const; public: void clear_insert_stmt(); const ::pg_query::InsertStmt& insert_stmt() const; PROTOBUF_NODISCARD ::pg_query::InsertStmt* release_insert_stmt(); ::pg_query::InsertStmt* mutable_insert_stmt(); void set_allocated_insert_stmt(::pg_query::InsertStmt* insert_stmt); private: const ::pg_query::InsertStmt& _internal_insert_stmt() const; ::pg_query::InsertStmt* _internal_mutable_insert_stmt(); public: void unsafe_arena_set_allocated_insert_stmt( ::pg_query::InsertStmt* insert_stmt); ::pg_query::InsertStmt* unsafe_arena_release_insert_stmt(); // .pg_query.DeleteStmt delete_stmt = 55 [json_name = "DeleteStmt"]; bool has_delete_stmt() const; private: bool _internal_has_delete_stmt() const; public: void clear_delete_stmt(); const ::pg_query::DeleteStmt& delete_stmt() const; PROTOBUF_NODISCARD ::pg_query::DeleteStmt* release_delete_stmt(); ::pg_query::DeleteStmt* mutable_delete_stmt(); void set_allocated_delete_stmt(::pg_query::DeleteStmt* delete_stmt); private: const ::pg_query::DeleteStmt& _internal_delete_stmt() const; ::pg_query::DeleteStmt* _internal_mutable_delete_stmt(); public: void unsafe_arena_set_allocated_delete_stmt( ::pg_query::DeleteStmt* delete_stmt); ::pg_query::DeleteStmt* unsafe_arena_release_delete_stmt(); // .pg_query.UpdateStmt update_stmt = 56 [json_name = "UpdateStmt"]; bool has_update_stmt() const; private: bool _internal_has_update_stmt() const; public: void clear_update_stmt(); const ::pg_query::UpdateStmt& update_stmt() const; PROTOBUF_NODISCARD ::pg_query::UpdateStmt* release_update_stmt(); ::pg_query::UpdateStmt* mutable_update_stmt(); void set_allocated_update_stmt(::pg_query::UpdateStmt* update_stmt); private: const ::pg_query::UpdateStmt& _internal_update_stmt() const; ::pg_query::UpdateStmt* _internal_mutable_update_stmt(); public: void unsafe_arena_set_allocated_update_stmt( ::pg_query::UpdateStmt* update_stmt); ::pg_query::UpdateStmt* unsafe_arena_release_update_stmt(); // .pg_query.MergeStmt merge_stmt = 57 [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* merge_stmt); private: const ::pg_query::MergeStmt& _internal_merge_stmt() const; ::pg_query::MergeStmt* _internal_mutable_merge_stmt(); public: void unsafe_arena_set_allocated_merge_stmt( ::pg_query::MergeStmt* merge_stmt); ::pg_query::MergeStmt* unsafe_arena_release_merge_stmt(); // .pg_query.SelectStmt select_stmt = 58 [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* select_stmt); private: const ::pg_query::SelectStmt& _internal_select_stmt() const; ::pg_query::SelectStmt* _internal_mutable_select_stmt(); public: void unsafe_arena_set_allocated_select_stmt( ::pg_query::SelectStmt* select_stmt); ::pg_query::SelectStmt* unsafe_arena_release_select_stmt(); // .pg_query.ReturnStmt return_stmt = 59 [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* return_stmt); private: const ::pg_query::ReturnStmt& _internal_return_stmt() const; ::pg_query::ReturnStmt* _internal_mutable_return_stmt(); public: void unsafe_arena_set_allocated_return_stmt( ::pg_query::ReturnStmt* return_stmt); ::pg_query::ReturnStmt* unsafe_arena_release_return_stmt(); // .pg_query.PLAssignStmt plassign_stmt = 60 [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* plassign_stmt); private: const ::pg_query::PLAssignStmt& _internal_plassign_stmt() const; ::pg_query::PLAssignStmt* _internal_mutable_plassign_stmt(); public: void unsafe_arena_set_allocated_plassign_stmt( ::pg_query::PLAssignStmt* plassign_stmt); ::pg_query::PLAssignStmt* unsafe_arena_release_plassign_stmt(); // .pg_query.AlterTableStmt alter_table_stmt = 61 [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* alter_table_stmt); private: const ::pg_query::AlterTableStmt& _internal_alter_table_stmt() const; ::pg_query::AlterTableStmt* _internal_mutable_alter_table_stmt(); public: void unsafe_arena_set_allocated_alter_table_stmt( ::pg_query::AlterTableStmt* alter_table_stmt); ::pg_query::AlterTableStmt* unsafe_arena_release_alter_table_stmt(); // .pg_query.AlterTableCmd alter_table_cmd = 62 [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* alter_table_cmd); private: const ::pg_query::AlterTableCmd& _internal_alter_table_cmd() const; ::pg_query::AlterTableCmd* _internal_mutable_alter_table_cmd(); public: void unsafe_arena_set_allocated_alter_table_cmd( ::pg_query::AlterTableCmd* alter_table_cmd); ::pg_query::AlterTableCmd* unsafe_arena_release_alter_table_cmd(); // .pg_query.AlterDomainStmt alter_domain_stmt = 63 [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* alter_domain_stmt); private: const ::pg_query::AlterDomainStmt& _internal_alter_domain_stmt() const; ::pg_query::AlterDomainStmt* _internal_mutable_alter_domain_stmt(); public: void unsafe_arena_set_allocated_alter_domain_stmt( ::pg_query::AlterDomainStmt* alter_domain_stmt); ::pg_query::AlterDomainStmt* unsafe_arena_release_alter_domain_stmt(); // .pg_query.SetOperationStmt set_operation_stmt = 64 [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* set_operation_stmt); private: const ::pg_query::SetOperationStmt& _internal_set_operation_stmt() const; ::pg_query::SetOperationStmt* _internal_mutable_set_operation_stmt(); public: void unsafe_arena_set_allocated_set_operation_stmt( ::pg_query::SetOperationStmt* set_operation_stmt); ::pg_query::SetOperationStmt* unsafe_arena_release_set_operation_stmt(); // .pg_query.GrantStmt grant_stmt = 65 [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* grant_stmt); private: const ::pg_query::GrantStmt& _internal_grant_stmt() const; ::pg_query::GrantStmt* _internal_mutable_grant_stmt(); public: void unsafe_arena_set_allocated_grant_stmt( ::pg_query::GrantStmt* grant_stmt); ::pg_query::GrantStmt* unsafe_arena_release_grant_stmt(); // .pg_query.GrantRoleStmt grant_role_stmt = 66 [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* grant_role_stmt); private: const ::pg_query::GrantRoleStmt& _internal_grant_role_stmt() const; ::pg_query::GrantRoleStmt* _internal_mutable_grant_role_stmt(); public: void unsafe_arena_set_allocated_grant_role_stmt( ::pg_query::GrantRoleStmt* grant_role_stmt); ::pg_query::GrantRoleStmt* unsafe_arena_release_grant_role_stmt(); // .pg_query.AlterDefaultPrivilegesStmt alter_default_privileges_stmt = 67 [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* alter_default_privileges_stmt); private: const ::pg_query::AlterDefaultPrivilegesStmt& _internal_alter_default_privileges_stmt() const; ::pg_query::AlterDefaultPrivilegesStmt* _internal_mutable_alter_default_privileges_stmt(); public: void unsafe_arena_set_allocated_alter_default_privileges_stmt( ::pg_query::AlterDefaultPrivilegesStmt* alter_default_privileges_stmt); ::pg_query::AlterDefaultPrivilegesStmt* unsafe_arena_release_alter_default_privileges_stmt(); // .pg_query.ClosePortalStmt close_portal_stmt = 68 [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* close_portal_stmt); private: const ::pg_query::ClosePortalStmt& _internal_close_portal_stmt() const; ::pg_query::ClosePortalStmt* _internal_mutable_close_portal_stmt(); public: void unsafe_arena_set_allocated_close_portal_stmt( ::pg_query::ClosePortalStmt* close_portal_stmt); ::pg_query::ClosePortalStmt* unsafe_arena_release_close_portal_stmt(); // .pg_query.ClusterStmt cluster_stmt = 69 [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* cluster_stmt); private: const ::pg_query::ClusterStmt& _internal_cluster_stmt() const; ::pg_query::ClusterStmt* _internal_mutable_cluster_stmt(); public: void unsafe_arena_set_allocated_cluster_stmt( ::pg_query::ClusterStmt* cluster_stmt); ::pg_query::ClusterStmt* unsafe_arena_release_cluster_stmt(); // .pg_query.CopyStmt copy_stmt = 70 [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* copy_stmt); private: const ::pg_query::CopyStmt& _internal_copy_stmt() const; ::pg_query::CopyStmt* _internal_mutable_copy_stmt(); public: void unsafe_arena_set_allocated_copy_stmt( ::pg_query::CopyStmt* copy_stmt); ::pg_query::CopyStmt* unsafe_arena_release_copy_stmt(); // .pg_query.CreateStmt create_stmt = 71 [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* create_stmt); private: const ::pg_query::CreateStmt& _internal_create_stmt() const; ::pg_query::CreateStmt* _internal_mutable_create_stmt(); public: void unsafe_arena_set_allocated_create_stmt( ::pg_query::CreateStmt* create_stmt); ::pg_query::CreateStmt* unsafe_arena_release_create_stmt(); // .pg_query.DefineStmt define_stmt = 72 [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* define_stmt); private: const ::pg_query::DefineStmt& _internal_define_stmt() const; ::pg_query::DefineStmt* _internal_mutable_define_stmt(); public: void unsafe_arena_set_allocated_define_stmt( ::pg_query::DefineStmt* define_stmt); ::pg_query::DefineStmt* unsafe_arena_release_define_stmt(); // .pg_query.DropStmt drop_stmt = 73 [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* drop_stmt); private: const ::pg_query::DropStmt& _internal_drop_stmt() const; ::pg_query::DropStmt* _internal_mutable_drop_stmt(); public: void unsafe_arena_set_allocated_drop_stmt( ::pg_query::DropStmt* drop_stmt); ::pg_query::DropStmt* unsafe_arena_release_drop_stmt(); // .pg_query.TruncateStmt truncate_stmt = 74 [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* truncate_stmt); private: const ::pg_query::TruncateStmt& _internal_truncate_stmt() const; ::pg_query::TruncateStmt* _internal_mutable_truncate_stmt(); public: void unsafe_arena_set_allocated_truncate_stmt( ::pg_query::TruncateStmt* truncate_stmt); ::pg_query::TruncateStmt* unsafe_arena_release_truncate_stmt(); // .pg_query.CommentStmt comment_stmt = 75 [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* comment_stmt); private: const ::pg_query::CommentStmt& _internal_comment_stmt() const; ::pg_query::CommentStmt* _internal_mutable_comment_stmt(); public: void unsafe_arena_set_allocated_comment_stmt( ::pg_query::CommentStmt* comment_stmt); ::pg_query::CommentStmt* unsafe_arena_release_comment_stmt(); // .pg_query.FetchStmt fetch_stmt = 76 [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* fetch_stmt); private: const ::pg_query::FetchStmt& _internal_fetch_stmt() const; ::pg_query::FetchStmt* _internal_mutable_fetch_stmt(); public: void unsafe_arena_set_allocated_fetch_stmt( ::pg_query::FetchStmt* fetch_stmt); ::pg_query::FetchStmt* unsafe_arena_release_fetch_stmt(); // .pg_query.IndexStmt index_stmt = 77 [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* index_stmt); private: const ::pg_query::IndexStmt& _internal_index_stmt() const; ::pg_query::IndexStmt* _internal_mutable_index_stmt(); public: void unsafe_arena_set_allocated_index_stmt( ::pg_query::IndexStmt* index_stmt); ::pg_query::IndexStmt* unsafe_arena_release_index_stmt(); // .pg_query.CreateFunctionStmt create_function_stmt = 78 [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* create_function_stmt); private: const ::pg_query::CreateFunctionStmt& _internal_create_function_stmt() const; ::pg_query::CreateFunctionStmt* _internal_mutable_create_function_stmt(); public: void unsafe_arena_set_allocated_create_function_stmt( ::pg_query::CreateFunctionStmt* create_function_stmt); ::pg_query::CreateFunctionStmt* unsafe_arena_release_create_function_stmt(); // .pg_query.AlterFunctionStmt alter_function_stmt = 79 [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* alter_function_stmt); private: const ::pg_query::AlterFunctionStmt& _internal_alter_function_stmt() const; ::pg_query::AlterFunctionStmt* _internal_mutable_alter_function_stmt(); public: void unsafe_arena_set_allocated_alter_function_stmt( ::pg_query::AlterFunctionStmt* alter_function_stmt); ::pg_query::AlterFunctionStmt* unsafe_arena_release_alter_function_stmt(); // .pg_query.DoStmt do_stmt = 80 [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* do_stmt); private: const ::pg_query::DoStmt& _internal_do_stmt() const; ::pg_query::DoStmt* _internal_mutable_do_stmt(); public: void unsafe_arena_set_allocated_do_stmt( ::pg_query::DoStmt* do_stmt); ::pg_query::DoStmt* unsafe_arena_release_do_stmt(); // .pg_query.RenameStmt rename_stmt = 81 [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* rename_stmt); private: const ::pg_query::RenameStmt& _internal_rename_stmt() const; ::pg_query::RenameStmt* _internal_mutable_rename_stmt(); public: void unsafe_arena_set_allocated_rename_stmt( ::pg_query::RenameStmt* rename_stmt); ::pg_query::RenameStmt* unsafe_arena_release_rename_stmt(); // .pg_query.RuleStmt rule_stmt = 82 [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* rule_stmt); private: const ::pg_query::RuleStmt& _internal_rule_stmt() const; ::pg_query::RuleStmt* _internal_mutable_rule_stmt(); public: void unsafe_arena_set_allocated_rule_stmt( ::pg_query::RuleStmt* rule_stmt); ::pg_query::RuleStmt* unsafe_arena_release_rule_stmt(); // .pg_query.NotifyStmt notify_stmt = 83 [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* notify_stmt); private: const ::pg_query::NotifyStmt& _internal_notify_stmt() const; ::pg_query::NotifyStmt* _internal_mutable_notify_stmt(); public: void unsafe_arena_set_allocated_notify_stmt( ::pg_query::NotifyStmt* notify_stmt); ::pg_query::NotifyStmt* unsafe_arena_release_notify_stmt(); // .pg_query.ListenStmt listen_stmt = 84 [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* listen_stmt); private: const ::pg_query::ListenStmt& _internal_listen_stmt() const; ::pg_query::ListenStmt* _internal_mutable_listen_stmt(); public: void unsafe_arena_set_allocated_listen_stmt( ::pg_query::ListenStmt* listen_stmt); ::pg_query::ListenStmt* unsafe_arena_release_listen_stmt(); // .pg_query.UnlistenStmt unlisten_stmt = 85 [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* unlisten_stmt); private: const ::pg_query::UnlistenStmt& _internal_unlisten_stmt() const; ::pg_query::UnlistenStmt* _internal_mutable_unlisten_stmt(); public: void unsafe_arena_set_allocated_unlisten_stmt( ::pg_query::UnlistenStmt* unlisten_stmt); ::pg_query::UnlistenStmt* unsafe_arena_release_unlisten_stmt(); // .pg_query.TransactionStmt transaction_stmt = 86 [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* transaction_stmt); private: const ::pg_query::TransactionStmt& _internal_transaction_stmt() const; ::pg_query::TransactionStmt* _internal_mutable_transaction_stmt(); public: void unsafe_arena_set_allocated_transaction_stmt( ::pg_query::TransactionStmt* transaction_stmt); ::pg_query::TransactionStmt* unsafe_arena_release_transaction_stmt(); // .pg_query.ViewStmt view_stmt = 87 [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* view_stmt); private: const ::pg_query::ViewStmt& _internal_view_stmt() const; ::pg_query::ViewStmt* _internal_mutable_view_stmt(); public: void unsafe_arena_set_allocated_view_stmt( ::pg_query::ViewStmt* view_stmt); ::pg_query::ViewStmt* unsafe_arena_release_view_stmt(); // .pg_query.LoadStmt load_stmt = 88 [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* load_stmt); private: const ::pg_query::LoadStmt& _internal_load_stmt() const; ::pg_query::LoadStmt* _internal_mutable_load_stmt(); public: void unsafe_arena_set_allocated_load_stmt( ::pg_query::LoadStmt* load_stmt); ::pg_query::LoadStmt* unsafe_arena_release_load_stmt(); // .pg_query.CreateDomainStmt create_domain_stmt = 89 [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* create_domain_stmt); private: const ::pg_query::CreateDomainStmt& _internal_create_domain_stmt() const; ::pg_query::CreateDomainStmt* _internal_mutable_create_domain_stmt(); public: void unsafe_arena_set_allocated_create_domain_stmt( ::pg_query::CreateDomainStmt* create_domain_stmt); ::pg_query::CreateDomainStmt* unsafe_arena_release_create_domain_stmt(); // .pg_query.CreatedbStmt createdb_stmt = 90 [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* createdb_stmt); private: const ::pg_query::CreatedbStmt& _internal_createdb_stmt() const; ::pg_query::CreatedbStmt* _internal_mutable_createdb_stmt(); public: void unsafe_arena_set_allocated_createdb_stmt( ::pg_query::CreatedbStmt* createdb_stmt); ::pg_query::CreatedbStmt* unsafe_arena_release_createdb_stmt(); // .pg_query.DropdbStmt dropdb_stmt = 91 [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* dropdb_stmt); private: const ::pg_query::DropdbStmt& _internal_dropdb_stmt() const; ::pg_query::DropdbStmt* _internal_mutable_dropdb_stmt(); public: void unsafe_arena_set_allocated_dropdb_stmt( ::pg_query::DropdbStmt* dropdb_stmt); ::pg_query::DropdbStmt* unsafe_arena_release_dropdb_stmt(); // .pg_query.VacuumStmt vacuum_stmt = 92 [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* vacuum_stmt); private: const ::pg_query::VacuumStmt& _internal_vacuum_stmt() const; ::pg_query::VacuumStmt* _internal_mutable_vacuum_stmt(); public: void unsafe_arena_set_allocated_vacuum_stmt( ::pg_query::VacuumStmt* vacuum_stmt); ::pg_query::VacuumStmt* unsafe_arena_release_vacuum_stmt(); // .pg_query.ExplainStmt explain_stmt = 93 [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* explain_stmt); private: const ::pg_query::ExplainStmt& _internal_explain_stmt() const; ::pg_query::ExplainStmt* _internal_mutable_explain_stmt(); public: void unsafe_arena_set_allocated_explain_stmt( ::pg_query::ExplainStmt* explain_stmt); ::pg_query::ExplainStmt* unsafe_arena_release_explain_stmt(); // .pg_query.CreateTableAsStmt create_table_as_stmt = 94 [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* create_table_as_stmt); private: const ::pg_query::CreateTableAsStmt& _internal_create_table_as_stmt() const; ::pg_query::CreateTableAsStmt* _internal_mutable_create_table_as_stmt(); public: void unsafe_arena_set_allocated_create_table_as_stmt( ::pg_query::CreateTableAsStmt* create_table_as_stmt); ::pg_query::CreateTableAsStmt* unsafe_arena_release_create_table_as_stmt(); // .pg_query.CreateSeqStmt create_seq_stmt = 95 [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* create_seq_stmt); private: const ::pg_query::CreateSeqStmt& _internal_create_seq_stmt() const; ::pg_query::CreateSeqStmt* _internal_mutable_create_seq_stmt(); public: void unsafe_arena_set_allocated_create_seq_stmt( ::pg_query::CreateSeqStmt* create_seq_stmt); ::pg_query::CreateSeqStmt* unsafe_arena_release_create_seq_stmt(); // .pg_query.AlterSeqStmt alter_seq_stmt = 96 [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* alter_seq_stmt); private: const ::pg_query::AlterSeqStmt& _internal_alter_seq_stmt() const; ::pg_query::AlterSeqStmt* _internal_mutable_alter_seq_stmt(); public: void unsafe_arena_set_allocated_alter_seq_stmt( ::pg_query::AlterSeqStmt* alter_seq_stmt); ::pg_query::AlterSeqStmt* unsafe_arena_release_alter_seq_stmt(); // .pg_query.VariableSetStmt variable_set_stmt = 97 [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* variable_set_stmt); private: const ::pg_query::VariableSetStmt& _internal_variable_set_stmt() const; ::pg_query::VariableSetStmt* _internal_mutable_variable_set_stmt(); public: void unsafe_arena_set_allocated_variable_set_stmt( ::pg_query::VariableSetStmt* variable_set_stmt); ::pg_query::VariableSetStmt* unsafe_arena_release_variable_set_stmt(); // .pg_query.VariableShowStmt variable_show_stmt = 98 [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* variable_show_stmt); private: const ::pg_query::VariableShowStmt& _internal_variable_show_stmt() const; ::pg_query::VariableShowStmt* _internal_mutable_variable_show_stmt(); public: void unsafe_arena_set_allocated_variable_show_stmt( ::pg_query::VariableShowStmt* variable_show_stmt); ::pg_query::VariableShowStmt* unsafe_arena_release_variable_show_stmt(); // .pg_query.DiscardStmt discard_stmt = 99 [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* discard_stmt); private: const ::pg_query::DiscardStmt& _internal_discard_stmt() const; ::pg_query::DiscardStmt* _internal_mutable_discard_stmt(); public: void unsafe_arena_set_allocated_discard_stmt( ::pg_query::DiscardStmt* discard_stmt); ::pg_query::DiscardStmt* unsafe_arena_release_discard_stmt(); // .pg_query.CreateTrigStmt create_trig_stmt = 100 [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* create_trig_stmt); private: const ::pg_query::CreateTrigStmt& _internal_create_trig_stmt() const; ::pg_query::CreateTrigStmt* _internal_mutable_create_trig_stmt(); public: void unsafe_arena_set_allocated_create_trig_stmt( ::pg_query::CreateTrigStmt* create_trig_stmt); ::pg_query::CreateTrigStmt* unsafe_arena_release_create_trig_stmt(); // .pg_query.CreatePLangStmt create_plang_stmt = 101 [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* create_plang_stmt); private: const ::pg_query::CreatePLangStmt& _internal_create_plang_stmt() const; ::pg_query::CreatePLangStmt* _internal_mutable_create_plang_stmt(); public: void unsafe_arena_set_allocated_create_plang_stmt( ::pg_query::CreatePLangStmt* create_plang_stmt); ::pg_query::CreatePLangStmt* unsafe_arena_release_create_plang_stmt(); // .pg_query.CreateRoleStmt create_role_stmt = 102 [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* create_role_stmt); private: const ::pg_query::CreateRoleStmt& _internal_create_role_stmt() const; ::pg_query::CreateRoleStmt* _internal_mutable_create_role_stmt(); public: void unsafe_arena_set_allocated_create_role_stmt( ::pg_query::CreateRoleStmt* create_role_stmt); ::pg_query::CreateRoleStmt* unsafe_arena_release_create_role_stmt(); // .pg_query.AlterRoleStmt alter_role_stmt = 103 [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* alter_role_stmt); private: const ::pg_query::AlterRoleStmt& _internal_alter_role_stmt() const; ::pg_query::AlterRoleStmt* _internal_mutable_alter_role_stmt(); public: void unsafe_arena_set_allocated_alter_role_stmt( ::pg_query::AlterRoleStmt* alter_role_stmt); ::pg_query::AlterRoleStmt* unsafe_arena_release_alter_role_stmt(); // .pg_query.DropRoleStmt drop_role_stmt = 104 [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* drop_role_stmt); private: const ::pg_query::DropRoleStmt& _internal_drop_role_stmt() const; ::pg_query::DropRoleStmt* _internal_mutable_drop_role_stmt(); public: void unsafe_arena_set_allocated_drop_role_stmt( ::pg_query::DropRoleStmt* drop_role_stmt); ::pg_query::DropRoleStmt* unsafe_arena_release_drop_role_stmt(); // .pg_query.LockStmt lock_stmt = 105 [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* lock_stmt); private: const ::pg_query::LockStmt& _internal_lock_stmt() const; ::pg_query::LockStmt* _internal_mutable_lock_stmt(); public: void unsafe_arena_set_allocated_lock_stmt( ::pg_query::LockStmt* lock_stmt); ::pg_query::LockStmt* unsafe_arena_release_lock_stmt(); // .pg_query.ConstraintsSetStmt constraints_set_stmt = 106 [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* constraints_set_stmt); private: const ::pg_query::ConstraintsSetStmt& _internal_constraints_set_stmt() const; ::pg_query::ConstraintsSetStmt* _internal_mutable_constraints_set_stmt(); public: void unsafe_arena_set_allocated_constraints_set_stmt( ::pg_query::ConstraintsSetStmt* constraints_set_stmt); ::pg_query::ConstraintsSetStmt* unsafe_arena_release_constraints_set_stmt(); // .pg_query.ReindexStmt reindex_stmt = 107 [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* reindex_stmt); private: const ::pg_query::ReindexStmt& _internal_reindex_stmt() const; ::pg_query::ReindexStmt* _internal_mutable_reindex_stmt(); public: void unsafe_arena_set_allocated_reindex_stmt( ::pg_query::ReindexStmt* reindex_stmt); ::pg_query::ReindexStmt* unsafe_arena_release_reindex_stmt(); // .pg_query.CheckPointStmt check_point_stmt = 108 [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* check_point_stmt); private: const ::pg_query::CheckPointStmt& _internal_check_point_stmt() const; ::pg_query::CheckPointStmt* _internal_mutable_check_point_stmt(); public: void unsafe_arena_set_allocated_check_point_stmt( ::pg_query::CheckPointStmt* check_point_stmt); ::pg_query::CheckPointStmt* unsafe_arena_release_check_point_stmt(); // .pg_query.CreateSchemaStmt create_schema_stmt = 109 [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* create_schema_stmt); private: const ::pg_query::CreateSchemaStmt& _internal_create_schema_stmt() const; ::pg_query::CreateSchemaStmt* _internal_mutable_create_schema_stmt(); public: void unsafe_arena_set_allocated_create_schema_stmt( ::pg_query::CreateSchemaStmt* create_schema_stmt); ::pg_query::CreateSchemaStmt* unsafe_arena_release_create_schema_stmt(); // .pg_query.AlterDatabaseStmt alter_database_stmt = 110 [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* alter_database_stmt); private: const ::pg_query::AlterDatabaseStmt& _internal_alter_database_stmt() const; ::pg_query::AlterDatabaseStmt* _internal_mutable_alter_database_stmt(); public: void unsafe_arena_set_allocated_alter_database_stmt( ::pg_query::AlterDatabaseStmt* alter_database_stmt); ::pg_query::AlterDatabaseStmt* unsafe_arena_release_alter_database_stmt(); // .pg_query.AlterDatabaseRefreshCollStmt alter_database_refresh_coll_stmt = 111 [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* 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: void unsafe_arena_set_allocated_alter_database_refresh_coll_stmt( ::pg_query::AlterDatabaseRefreshCollStmt* alter_database_refresh_coll_stmt); ::pg_query::AlterDatabaseRefreshCollStmt* unsafe_arena_release_alter_database_refresh_coll_stmt(); // .pg_query.AlterDatabaseSetStmt alter_database_set_stmt = 112 [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* alter_database_set_stmt); private: const ::pg_query::AlterDatabaseSetStmt& _internal_alter_database_set_stmt() const; ::pg_query::AlterDatabaseSetStmt* _internal_mutable_alter_database_set_stmt(); public: void unsafe_arena_set_allocated_alter_database_set_stmt( ::pg_query::AlterDatabaseSetStmt* alter_database_set_stmt); ::pg_query::AlterDatabaseSetStmt* unsafe_arena_release_alter_database_set_stmt(); // .pg_query.AlterRoleSetStmt alter_role_set_stmt = 113 [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* alter_role_set_stmt); private: const ::pg_query::AlterRoleSetStmt& _internal_alter_role_set_stmt() const; ::pg_query::AlterRoleSetStmt* _internal_mutable_alter_role_set_stmt(); public: void unsafe_arena_set_allocated_alter_role_set_stmt( ::pg_query::AlterRoleSetStmt* alter_role_set_stmt); ::pg_query::AlterRoleSetStmt* unsafe_arena_release_alter_role_set_stmt(); // .pg_query.CreateConversionStmt create_conversion_stmt = 114 [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* create_conversion_stmt); private: const ::pg_query::CreateConversionStmt& _internal_create_conversion_stmt() const; ::pg_query::CreateConversionStmt* _internal_mutable_create_conversion_stmt(); public: void unsafe_arena_set_allocated_create_conversion_stmt( ::pg_query::CreateConversionStmt* create_conversion_stmt); ::pg_query::CreateConversionStmt* unsafe_arena_release_create_conversion_stmt(); // .pg_query.CreateCastStmt create_cast_stmt = 115 [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* create_cast_stmt); private: const ::pg_query::CreateCastStmt& _internal_create_cast_stmt() const; ::pg_query::CreateCastStmt* _internal_mutable_create_cast_stmt(); public: void unsafe_arena_set_allocated_create_cast_stmt( ::pg_query::CreateCastStmt* create_cast_stmt); ::pg_query::CreateCastStmt* unsafe_arena_release_create_cast_stmt(); // .pg_query.CreateOpClassStmt create_op_class_stmt = 116 [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* create_op_class_stmt); private: const ::pg_query::CreateOpClassStmt& _internal_create_op_class_stmt() const; ::pg_query::CreateOpClassStmt* _internal_mutable_create_op_class_stmt(); public: void unsafe_arena_set_allocated_create_op_class_stmt( ::pg_query::CreateOpClassStmt* create_op_class_stmt); ::pg_query::CreateOpClassStmt* unsafe_arena_release_create_op_class_stmt(); // .pg_query.CreateOpFamilyStmt create_op_family_stmt = 117 [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* create_op_family_stmt); private: const ::pg_query::CreateOpFamilyStmt& _internal_create_op_family_stmt() const; ::pg_query::CreateOpFamilyStmt* _internal_mutable_create_op_family_stmt(); public: void unsafe_arena_set_allocated_create_op_family_stmt( ::pg_query::CreateOpFamilyStmt* create_op_family_stmt); ::pg_query::CreateOpFamilyStmt* unsafe_arena_release_create_op_family_stmt(); // .pg_query.AlterOpFamilyStmt alter_op_family_stmt = 118 [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* alter_op_family_stmt); private: const ::pg_query::AlterOpFamilyStmt& _internal_alter_op_family_stmt() const; ::pg_query::AlterOpFamilyStmt* _internal_mutable_alter_op_family_stmt(); public: void unsafe_arena_set_allocated_alter_op_family_stmt( ::pg_query::AlterOpFamilyStmt* alter_op_family_stmt); ::pg_query::AlterOpFamilyStmt* unsafe_arena_release_alter_op_family_stmt(); // .pg_query.PrepareStmt prepare_stmt = 119 [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* prepare_stmt); private: const ::pg_query::PrepareStmt& _internal_prepare_stmt() const; ::pg_query::PrepareStmt* _internal_mutable_prepare_stmt(); public: void unsafe_arena_set_allocated_prepare_stmt( ::pg_query::PrepareStmt* prepare_stmt); ::pg_query::PrepareStmt* unsafe_arena_release_prepare_stmt(); // .pg_query.ExecuteStmt execute_stmt = 120 [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* execute_stmt); private: const ::pg_query::ExecuteStmt& _internal_execute_stmt() const; ::pg_query::ExecuteStmt* _internal_mutable_execute_stmt(); public: void unsafe_arena_set_allocated_execute_stmt( ::pg_query::ExecuteStmt* execute_stmt); ::pg_query::ExecuteStmt* unsafe_arena_release_execute_stmt(); // .pg_query.DeallocateStmt deallocate_stmt = 121 [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* deallocate_stmt); private: const ::pg_query::DeallocateStmt& _internal_deallocate_stmt() const; ::pg_query::DeallocateStmt* _internal_mutable_deallocate_stmt(); public: void unsafe_arena_set_allocated_deallocate_stmt( ::pg_query::DeallocateStmt* deallocate_stmt); ::pg_query::DeallocateStmt* unsafe_arena_release_deallocate_stmt(); // .pg_query.DeclareCursorStmt declare_cursor_stmt = 122 [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* declare_cursor_stmt); private: const ::pg_query::DeclareCursorStmt& _internal_declare_cursor_stmt() const; ::pg_query::DeclareCursorStmt* _internal_mutable_declare_cursor_stmt(); public: void unsafe_arena_set_allocated_declare_cursor_stmt( ::pg_query::DeclareCursorStmt* declare_cursor_stmt); ::pg_query::DeclareCursorStmt* unsafe_arena_release_declare_cursor_stmt(); // .pg_query.CreateTableSpaceStmt create_table_space_stmt = 123 [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* create_table_space_stmt); private: const ::pg_query::CreateTableSpaceStmt& _internal_create_table_space_stmt() const; ::pg_query::CreateTableSpaceStmt* _internal_mutable_create_table_space_stmt(); public: void unsafe_arena_set_allocated_create_table_space_stmt( ::pg_query::CreateTableSpaceStmt* create_table_space_stmt); ::pg_query::CreateTableSpaceStmt* unsafe_arena_release_create_table_space_stmt(); // .pg_query.DropTableSpaceStmt drop_table_space_stmt = 124 [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* drop_table_space_stmt); private: const ::pg_query::DropTableSpaceStmt& _internal_drop_table_space_stmt() const; ::pg_query::DropTableSpaceStmt* _internal_mutable_drop_table_space_stmt(); public: void unsafe_arena_set_allocated_drop_table_space_stmt( ::pg_query::DropTableSpaceStmt* drop_table_space_stmt); ::pg_query::DropTableSpaceStmt* unsafe_arena_release_drop_table_space_stmt(); // .pg_query.AlterObjectDependsStmt alter_object_depends_stmt = 125 [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* alter_object_depends_stmt); private: const ::pg_query::AlterObjectDependsStmt& _internal_alter_object_depends_stmt() const; ::pg_query::AlterObjectDependsStmt* _internal_mutable_alter_object_depends_stmt(); public: void unsafe_arena_set_allocated_alter_object_depends_stmt( ::pg_query::AlterObjectDependsStmt* alter_object_depends_stmt); ::pg_query::AlterObjectDependsStmt* unsafe_arena_release_alter_object_depends_stmt(); // .pg_query.AlterObjectSchemaStmt alter_object_schema_stmt = 126 [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* alter_object_schema_stmt); private: const ::pg_query::AlterObjectSchemaStmt& _internal_alter_object_schema_stmt() const; ::pg_query::AlterObjectSchemaStmt* _internal_mutable_alter_object_schema_stmt(); public: void unsafe_arena_set_allocated_alter_object_schema_stmt( ::pg_query::AlterObjectSchemaStmt* alter_object_schema_stmt); ::pg_query::AlterObjectSchemaStmt* unsafe_arena_release_alter_object_schema_stmt(); // .pg_query.AlterOwnerStmt alter_owner_stmt = 127 [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* alter_owner_stmt); private: const ::pg_query::AlterOwnerStmt& _internal_alter_owner_stmt() const; ::pg_query::AlterOwnerStmt* _internal_mutable_alter_owner_stmt(); public: void unsafe_arena_set_allocated_alter_owner_stmt( ::pg_query::AlterOwnerStmt* alter_owner_stmt); ::pg_query::AlterOwnerStmt* unsafe_arena_release_alter_owner_stmt(); // .pg_query.AlterOperatorStmt alter_operator_stmt = 128 [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* alter_operator_stmt); private: const ::pg_query::AlterOperatorStmt& _internal_alter_operator_stmt() const; ::pg_query::AlterOperatorStmt* _internal_mutable_alter_operator_stmt(); public: void unsafe_arena_set_allocated_alter_operator_stmt( ::pg_query::AlterOperatorStmt* alter_operator_stmt); ::pg_query::AlterOperatorStmt* unsafe_arena_release_alter_operator_stmt(); // .pg_query.AlterTypeStmt alter_type_stmt = 129 [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* alter_type_stmt); private: const ::pg_query::AlterTypeStmt& _internal_alter_type_stmt() const; ::pg_query::AlterTypeStmt* _internal_mutable_alter_type_stmt(); public: void unsafe_arena_set_allocated_alter_type_stmt( ::pg_query::AlterTypeStmt* alter_type_stmt); ::pg_query::AlterTypeStmt* unsafe_arena_release_alter_type_stmt(); // .pg_query.DropOwnedStmt drop_owned_stmt = 130 [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* drop_owned_stmt); private: const ::pg_query::DropOwnedStmt& _internal_drop_owned_stmt() const; ::pg_query::DropOwnedStmt* _internal_mutable_drop_owned_stmt(); public: void unsafe_arena_set_allocated_drop_owned_stmt( ::pg_query::DropOwnedStmt* drop_owned_stmt); ::pg_query::DropOwnedStmt* unsafe_arena_release_drop_owned_stmt(); // .pg_query.ReassignOwnedStmt reassign_owned_stmt = 131 [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* reassign_owned_stmt); private: const ::pg_query::ReassignOwnedStmt& _internal_reassign_owned_stmt() const; ::pg_query::ReassignOwnedStmt* _internal_mutable_reassign_owned_stmt(); public: void unsafe_arena_set_allocated_reassign_owned_stmt( ::pg_query::ReassignOwnedStmt* reassign_owned_stmt); ::pg_query::ReassignOwnedStmt* unsafe_arena_release_reassign_owned_stmt(); // .pg_query.CompositeTypeStmt composite_type_stmt = 132 [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* composite_type_stmt); private: const ::pg_query::CompositeTypeStmt& _internal_composite_type_stmt() const; ::pg_query::CompositeTypeStmt* _internal_mutable_composite_type_stmt(); public: void unsafe_arena_set_allocated_composite_type_stmt( ::pg_query::CompositeTypeStmt* composite_type_stmt); ::pg_query::CompositeTypeStmt* unsafe_arena_release_composite_type_stmt(); // .pg_query.CreateEnumStmt create_enum_stmt = 133 [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* create_enum_stmt); private: const ::pg_query::CreateEnumStmt& _internal_create_enum_stmt() const; ::pg_query::CreateEnumStmt* _internal_mutable_create_enum_stmt(); public: void unsafe_arena_set_allocated_create_enum_stmt( ::pg_query::CreateEnumStmt* create_enum_stmt); ::pg_query::CreateEnumStmt* unsafe_arena_release_create_enum_stmt(); // .pg_query.CreateRangeStmt create_range_stmt = 134 [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* create_range_stmt); private: const ::pg_query::CreateRangeStmt& _internal_create_range_stmt() const; ::pg_query::CreateRangeStmt* _internal_mutable_create_range_stmt(); public: void unsafe_arena_set_allocated_create_range_stmt( ::pg_query::CreateRangeStmt* create_range_stmt); ::pg_query::CreateRangeStmt* unsafe_arena_release_create_range_stmt(); // .pg_query.AlterEnumStmt alter_enum_stmt = 135 [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* alter_enum_stmt); private: const ::pg_query::AlterEnumStmt& _internal_alter_enum_stmt() const; ::pg_query::AlterEnumStmt* _internal_mutable_alter_enum_stmt(); public: void unsafe_arena_set_allocated_alter_enum_stmt( ::pg_query::AlterEnumStmt* alter_enum_stmt); ::pg_query::AlterEnumStmt* unsafe_arena_release_alter_enum_stmt(); // .pg_query.AlterTSDictionaryStmt alter_tsdictionary_stmt = 136 [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* alter_tsdictionary_stmt); private: const ::pg_query::AlterTSDictionaryStmt& _internal_alter_tsdictionary_stmt() const; ::pg_query::AlterTSDictionaryStmt* _internal_mutable_alter_tsdictionary_stmt(); public: void unsafe_arena_set_allocated_alter_tsdictionary_stmt( ::pg_query::AlterTSDictionaryStmt* alter_tsdictionary_stmt); ::pg_query::AlterTSDictionaryStmt* unsafe_arena_release_alter_tsdictionary_stmt(); // .pg_query.AlterTSConfigurationStmt alter_tsconfiguration_stmt = 137 [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* alter_tsconfiguration_stmt); private: const ::pg_query::AlterTSConfigurationStmt& _internal_alter_tsconfiguration_stmt() const; ::pg_query::AlterTSConfigurationStmt* _internal_mutable_alter_tsconfiguration_stmt(); public: void unsafe_arena_set_allocated_alter_tsconfiguration_stmt( ::pg_query::AlterTSConfigurationStmt* alter_tsconfiguration_stmt); ::pg_query::AlterTSConfigurationStmt* unsafe_arena_release_alter_tsconfiguration_stmt(); // .pg_query.CreateFdwStmt create_fdw_stmt = 138 [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* create_fdw_stmt); private: const ::pg_query::CreateFdwStmt& _internal_create_fdw_stmt() const; ::pg_query::CreateFdwStmt* _internal_mutable_create_fdw_stmt(); public: void unsafe_arena_set_allocated_create_fdw_stmt( ::pg_query::CreateFdwStmt* create_fdw_stmt); ::pg_query::CreateFdwStmt* unsafe_arena_release_create_fdw_stmt(); // .pg_query.AlterFdwStmt alter_fdw_stmt = 139 [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* alter_fdw_stmt); private: const ::pg_query::AlterFdwStmt& _internal_alter_fdw_stmt() const; ::pg_query::AlterFdwStmt* _internal_mutable_alter_fdw_stmt(); public: void unsafe_arena_set_allocated_alter_fdw_stmt( ::pg_query::AlterFdwStmt* alter_fdw_stmt); ::pg_query::AlterFdwStmt* unsafe_arena_release_alter_fdw_stmt(); // .pg_query.CreateForeignServerStmt create_foreign_server_stmt = 140 [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* create_foreign_server_stmt); private: const ::pg_query::CreateForeignServerStmt& _internal_create_foreign_server_stmt() const; ::pg_query::CreateForeignServerStmt* _internal_mutable_create_foreign_server_stmt(); public: void unsafe_arena_set_allocated_create_foreign_server_stmt( ::pg_query::CreateForeignServerStmt* create_foreign_server_stmt); ::pg_query::CreateForeignServerStmt* unsafe_arena_release_create_foreign_server_stmt(); // .pg_query.AlterForeignServerStmt alter_foreign_server_stmt = 141 [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* alter_foreign_server_stmt); private: const ::pg_query::AlterForeignServerStmt& _internal_alter_foreign_server_stmt() const; ::pg_query::AlterForeignServerStmt* _internal_mutable_alter_foreign_server_stmt(); public: void unsafe_arena_set_allocated_alter_foreign_server_stmt( ::pg_query::AlterForeignServerStmt* alter_foreign_server_stmt); ::pg_query::AlterForeignServerStmt* unsafe_arena_release_alter_foreign_server_stmt(); // .pg_query.CreateUserMappingStmt create_user_mapping_stmt = 142 [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* create_user_mapping_stmt); private: const ::pg_query::CreateUserMappingStmt& _internal_create_user_mapping_stmt() const; ::pg_query::CreateUserMappingStmt* _internal_mutable_create_user_mapping_stmt(); public: void unsafe_arena_set_allocated_create_user_mapping_stmt( ::pg_query::CreateUserMappingStmt* create_user_mapping_stmt); ::pg_query::CreateUserMappingStmt* unsafe_arena_release_create_user_mapping_stmt(); // .pg_query.AlterUserMappingStmt alter_user_mapping_stmt = 143 [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* alter_user_mapping_stmt); private: const ::pg_query::AlterUserMappingStmt& _internal_alter_user_mapping_stmt() const; ::pg_query::AlterUserMappingStmt* _internal_mutable_alter_user_mapping_stmt(); public: void unsafe_arena_set_allocated_alter_user_mapping_stmt( ::pg_query::AlterUserMappingStmt* alter_user_mapping_stmt); ::pg_query::AlterUserMappingStmt* unsafe_arena_release_alter_user_mapping_stmt(); // .pg_query.DropUserMappingStmt drop_user_mapping_stmt = 144 [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* drop_user_mapping_stmt); private: const ::pg_query::DropUserMappingStmt& _internal_drop_user_mapping_stmt() const; ::pg_query::DropUserMappingStmt* _internal_mutable_drop_user_mapping_stmt(); public: void unsafe_arena_set_allocated_drop_user_mapping_stmt( ::pg_query::DropUserMappingStmt* drop_user_mapping_stmt); ::pg_query::DropUserMappingStmt* unsafe_arena_release_drop_user_mapping_stmt(); // .pg_query.AlterTableSpaceOptionsStmt alter_table_space_options_stmt = 145 [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* alter_table_space_options_stmt); private: const ::pg_query::AlterTableSpaceOptionsStmt& _internal_alter_table_space_options_stmt() const; ::pg_query::AlterTableSpaceOptionsStmt* _internal_mutable_alter_table_space_options_stmt(); public: void unsafe_arena_set_allocated_alter_table_space_options_stmt( ::pg_query::AlterTableSpaceOptionsStmt* alter_table_space_options_stmt); ::pg_query::AlterTableSpaceOptionsStmt* unsafe_arena_release_alter_table_space_options_stmt(); // .pg_query.AlterTableMoveAllStmt alter_table_move_all_stmt = 146 [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* alter_table_move_all_stmt); private: const ::pg_query::AlterTableMoveAllStmt& _internal_alter_table_move_all_stmt() const; ::pg_query::AlterTableMoveAllStmt* _internal_mutable_alter_table_move_all_stmt(); public: void unsafe_arena_set_allocated_alter_table_move_all_stmt( ::pg_query::AlterTableMoveAllStmt* alter_table_move_all_stmt); ::pg_query::AlterTableMoveAllStmt* unsafe_arena_release_alter_table_move_all_stmt(); // .pg_query.SecLabelStmt sec_label_stmt = 147 [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* sec_label_stmt); private: const ::pg_query::SecLabelStmt& _internal_sec_label_stmt() const; ::pg_query::SecLabelStmt* _internal_mutable_sec_label_stmt(); public: void unsafe_arena_set_allocated_sec_label_stmt( ::pg_query::SecLabelStmt* sec_label_stmt); ::pg_query::SecLabelStmt* unsafe_arena_release_sec_label_stmt(); // .pg_query.CreateForeignTableStmt create_foreign_table_stmt = 148 [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* create_foreign_table_stmt); private: const ::pg_query::CreateForeignTableStmt& _internal_create_foreign_table_stmt() const; ::pg_query::CreateForeignTableStmt* _internal_mutable_create_foreign_table_stmt(); public: void unsafe_arena_set_allocated_create_foreign_table_stmt( ::pg_query::CreateForeignTableStmt* create_foreign_table_stmt); ::pg_query::CreateForeignTableStmt* unsafe_arena_release_create_foreign_table_stmt(); // .pg_query.ImportForeignSchemaStmt import_foreign_schema_stmt = 149 [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* import_foreign_schema_stmt); private: const ::pg_query::ImportForeignSchemaStmt& _internal_import_foreign_schema_stmt() const; ::pg_query::ImportForeignSchemaStmt* _internal_mutable_import_foreign_schema_stmt(); public: void unsafe_arena_set_allocated_import_foreign_schema_stmt( ::pg_query::ImportForeignSchemaStmt* import_foreign_schema_stmt); ::pg_query::ImportForeignSchemaStmt* unsafe_arena_release_import_foreign_schema_stmt(); // .pg_query.CreateExtensionStmt create_extension_stmt = 150 [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* create_extension_stmt); private: const ::pg_query::CreateExtensionStmt& _internal_create_extension_stmt() const; ::pg_query::CreateExtensionStmt* _internal_mutable_create_extension_stmt(); public: void unsafe_arena_set_allocated_create_extension_stmt( ::pg_query::CreateExtensionStmt* create_extension_stmt); ::pg_query::CreateExtensionStmt* unsafe_arena_release_create_extension_stmt(); // .pg_query.AlterExtensionStmt alter_extension_stmt = 151 [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* alter_extension_stmt); private: const ::pg_query::AlterExtensionStmt& _internal_alter_extension_stmt() const; ::pg_query::AlterExtensionStmt* _internal_mutable_alter_extension_stmt(); public: void unsafe_arena_set_allocated_alter_extension_stmt( ::pg_query::AlterExtensionStmt* alter_extension_stmt); ::pg_query::AlterExtensionStmt* unsafe_arena_release_alter_extension_stmt(); // .pg_query.AlterExtensionContentsStmt alter_extension_contents_stmt = 152 [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* alter_extension_contents_stmt); private: const ::pg_query::AlterExtensionContentsStmt& _internal_alter_extension_contents_stmt() const; ::pg_query::AlterExtensionContentsStmt* _internal_mutable_alter_extension_contents_stmt(); public: void unsafe_arena_set_allocated_alter_extension_contents_stmt( ::pg_query::AlterExtensionContentsStmt* alter_extension_contents_stmt); ::pg_query::AlterExtensionContentsStmt* unsafe_arena_release_alter_extension_contents_stmt(); // .pg_query.CreateEventTrigStmt create_event_trig_stmt = 153 [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* create_event_trig_stmt); private: const ::pg_query::CreateEventTrigStmt& _internal_create_event_trig_stmt() const; ::pg_query::CreateEventTrigStmt* _internal_mutable_create_event_trig_stmt(); public: void unsafe_arena_set_allocated_create_event_trig_stmt( ::pg_query::CreateEventTrigStmt* create_event_trig_stmt); ::pg_query::CreateEventTrigStmt* unsafe_arena_release_create_event_trig_stmt(); // .pg_query.AlterEventTrigStmt alter_event_trig_stmt = 154 [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* alter_event_trig_stmt); private: const ::pg_query::AlterEventTrigStmt& _internal_alter_event_trig_stmt() const; ::pg_query::AlterEventTrigStmt* _internal_mutable_alter_event_trig_stmt(); public: void unsafe_arena_set_allocated_alter_event_trig_stmt( ::pg_query::AlterEventTrigStmt* alter_event_trig_stmt); ::pg_query::AlterEventTrigStmt* unsafe_arena_release_alter_event_trig_stmt(); // .pg_query.RefreshMatViewStmt refresh_mat_view_stmt = 155 [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* refresh_mat_view_stmt); private: const ::pg_query::RefreshMatViewStmt& _internal_refresh_mat_view_stmt() const; ::pg_query::RefreshMatViewStmt* _internal_mutable_refresh_mat_view_stmt(); public: void unsafe_arena_set_allocated_refresh_mat_view_stmt( ::pg_query::RefreshMatViewStmt* refresh_mat_view_stmt); ::pg_query::RefreshMatViewStmt* unsafe_arena_release_refresh_mat_view_stmt(); // .pg_query.ReplicaIdentityStmt replica_identity_stmt = 156 [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* replica_identity_stmt); private: const ::pg_query::ReplicaIdentityStmt& _internal_replica_identity_stmt() const; ::pg_query::ReplicaIdentityStmt* _internal_mutable_replica_identity_stmt(); public: void unsafe_arena_set_allocated_replica_identity_stmt( ::pg_query::ReplicaIdentityStmt* replica_identity_stmt); ::pg_query::ReplicaIdentityStmt* unsafe_arena_release_replica_identity_stmt(); // .pg_query.AlterSystemStmt alter_system_stmt = 157 [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* alter_system_stmt); private: const ::pg_query::AlterSystemStmt& _internal_alter_system_stmt() const; ::pg_query::AlterSystemStmt* _internal_mutable_alter_system_stmt(); public: void unsafe_arena_set_allocated_alter_system_stmt( ::pg_query::AlterSystemStmt* alter_system_stmt); ::pg_query::AlterSystemStmt* unsafe_arena_release_alter_system_stmt(); // .pg_query.CreatePolicyStmt create_policy_stmt = 158 [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* create_policy_stmt); private: const ::pg_query::CreatePolicyStmt& _internal_create_policy_stmt() const; ::pg_query::CreatePolicyStmt* _internal_mutable_create_policy_stmt(); public: void unsafe_arena_set_allocated_create_policy_stmt( ::pg_query::CreatePolicyStmt* create_policy_stmt); ::pg_query::CreatePolicyStmt* unsafe_arena_release_create_policy_stmt(); // .pg_query.AlterPolicyStmt alter_policy_stmt = 159 [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* alter_policy_stmt); private: const ::pg_query::AlterPolicyStmt& _internal_alter_policy_stmt() const; ::pg_query::AlterPolicyStmt* _internal_mutable_alter_policy_stmt(); public: void unsafe_arena_set_allocated_alter_policy_stmt( ::pg_query::AlterPolicyStmt* alter_policy_stmt); ::pg_query::AlterPolicyStmt* unsafe_arena_release_alter_policy_stmt(); // .pg_query.CreateTransformStmt create_transform_stmt = 160 [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* create_transform_stmt); private: const ::pg_query::CreateTransformStmt& _internal_create_transform_stmt() const; ::pg_query::CreateTransformStmt* _internal_mutable_create_transform_stmt(); public: void unsafe_arena_set_allocated_create_transform_stmt( ::pg_query::CreateTransformStmt* create_transform_stmt); ::pg_query::CreateTransformStmt* unsafe_arena_release_create_transform_stmt(); // .pg_query.CreateAmStmt create_am_stmt = 161 [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* create_am_stmt); private: const ::pg_query::CreateAmStmt& _internal_create_am_stmt() const; ::pg_query::CreateAmStmt* _internal_mutable_create_am_stmt(); public: void unsafe_arena_set_allocated_create_am_stmt( ::pg_query::CreateAmStmt* create_am_stmt); ::pg_query::CreateAmStmt* unsafe_arena_release_create_am_stmt(); // .pg_query.CreatePublicationStmt create_publication_stmt = 162 [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* create_publication_stmt); private: const ::pg_query::CreatePublicationStmt& _internal_create_publication_stmt() const; ::pg_query::CreatePublicationStmt* _internal_mutable_create_publication_stmt(); public: void unsafe_arena_set_allocated_create_publication_stmt( ::pg_query::CreatePublicationStmt* create_publication_stmt); ::pg_query::CreatePublicationStmt* unsafe_arena_release_create_publication_stmt(); // .pg_query.AlterPublicationStmt alter_publication_stmt = 163 [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* alter_publication_stmt); private: const ::pg_query::AlterPublicationStmt& _internal_alter_publication_stmt() const; ::pg_query::AlterPublicationStmt* _internal_mutable_alter_publication_stmt(); public: void unsafe_arena_set_allocated_alter_publication_stmt( ::pg_query::AlterPublicationStmt* alter_publication_stmt); ::pg_query::AlterPublicationStmt* unsafe_arena_release_alter_publication_stmt(); // .pg_query.CreateSubscriptionStmt create_subscription_stmt = 164 [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* create_subscription_stmt); private: const ::pg_query::CreateSubscriptionStmt& _internal_create_subscription_stmt() const; ::pg_query::CreateSubscriptionStmt* _internal_mutable_create_subscription_stmt(); public: void unsafe_arena_set_allocated_create_subscription_stmt( ::pg_query::CreateSubscriptionStmt* create_subscription_stmt); ::pg_query::CreateSubscriptionStmt* unsafe_arena_release_create_subscription_stmt(); // .pg_query.AlterSubscriptionStmt alter_subscription_stmt = 165 [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* alter_subscription_stmt); private: const ::pg_query::AlterSubscriptionStmt& _internal_alter_subscription_stmt() const; ::pg_query::AlterSubscriptionStmt* _internal_mutable_alter_subscription_stmt(); public: void unsafe_arena_set_allocated_alter_subscription_stmt( ::pg_query::AlterSubscriptionStmt* alter_subscription_stmt); ::pg_query::AlterSubscriptionStmt* unsafe_arena_release_alter_subscription_stmt(); // .pg_query.DropSubscriptionStmt drop_subscription_stmt = 166 [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* drop_subscription_stmt); private: const ::pg_query::DropSubscriptionStmt& _internal_drop_subscription_stmt() const; ::pg_query::DropSubscriptionStmt* _internal_mutable_drop_subscription_stmt(); public: void unsafe_arena_set_allocated_drop_subscription_stmt( ::pg_query::DropSubscriptionStmt* drop_subscription_stmt); ::pg_query::DropSubscriptionStmt* unsafe_arena_release_drop_subscription_stmt(); // .pg_query.CreateStatsStmt create_stats_stmt = 167 [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* create_stats_stmt); private: const ::pg_query::CreateStatsStmt& _internal_create_stats_stmt() const; ::pg_query::CreateStatsStmt* _internal_mutable_create_stats_stmt(); public: void unsafe_arena_set_allocated_create_stats_stmt( ::pg_query::CreateStatsStmt* create_stats_stmt); ::pg_query::CreateStatsStmt* unsafe_arena_release_create_stats_stmt(); // .pg_query.AlterCollationStmt alter_collation_stmt = 168 [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* alter_collation_stmt); private: const ::pg_query::AlterCollationStmt& _internal_alter_collation_stmt() const; ::pg_query::AlterCollationStmt* _internal_mutable_alter_collation_stmt(); public: void unsafe_arena_set_allocated_alter_collation_stmt( ::pg_query::AlterCollationStmt* alter_collation_stmt); ::pg_query::AlterCollationStmt* unsafe_arena_release_alter_collation_stmt(); // .pg_query.CallStmt call_stmt = 169 [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* call_stmt); private: const ::pg_query::CallStmt& _internal_call_stmt() const; ::pg_query::CallStmt* _internal_mutable_call_stmt(); public: void unsafe_arena_set_allocated_call_stmt( ::pg_query::CallStmt* call_stmt); ::pg_query::CallStmt* unsafe_arena_release_call_stmt(); // .pg_query.AlterStatsStmt alter_stats_stmt = 170 [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* alter_stats_stmt); private: const ::pg_query::AlterStatsStmt& _internal_alter_stats_stmt() const; ::pg_query::AlterStatsStmt* _internal_mutable_alter_stats_stmt(); public: void unsafe_arena_set_allocated_alter_stats_stmt( ::pg_query::AlterStatsStmt* alter_stats_stmt); ::pg_query::AlterStatsStmt* unsafe_arena_release_alter_stats_stmt(); // .pg_query.A_Expr a_expr = 171 [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* a_expr); private: const ::pg_query::A_Expr& _internal_a_expr() const; ::pg_query::A_Expr* _internal_mutable_a_expr(); public: void unsafe_arena_set_allocated_a_expr( ::pg_query::A_Expr* a_expr); ::pg_query::A_Expr* unsafe_arena_release_a_expr(); // .pg_query.ColumnRef column_ref = 172 [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* column_ref); private: const ::pg_query::ColumnRef& _internal_column_ref() const; ::pg_query::ColumnRef* _internal_mutable_column_ref(); public: void unsafe_arena_set_allocated_column_ref( ::pg_query::ColumnRef* column_ref); ::pg_query::ColumnRef* unsafe_arena_release_column_ref(); // .pg_query.ParamRef param_ref = 173 [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* param_ref); private: const ::pg_query::ParamRef& _internal_param_ref() const; ::pg_query::ParamRef* _internal_mutable_param_ref(); public: void unsafe_arena_set_allocated_param_ref( ::pg_query::ParamRef* param_ref); ::pg_query::ParamRef* unsafe_arena_release_param_ref(); // .pg_query.FuncCall func_call = 174 [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* func_call); private: const ::pg_query::FuncCall& _internal_func_call() const; ::pg_query::FuncCall* _internal_mutable_func_call(); public: void unsafe_arena_set_allocated_func_call( ::pg_query::FuncCall* func_call); ::pg_query::FuncCall* unsafe_arena_release_func_call(); // .pg_query.A_Star a_star = 175 [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* a_star); private: const ::pg_query::A_Star& _internal_a_star() const; ::pg_query::A_Star* _internal_mutable_a_star(); public: void unsafe_arena_set_allocated_a_star( ::pg_query::A_Star* a_star); ::pg_query::A_Star* unsafe_arena_release_a_star(); // .pg_query.A_Indices a_indices = 176 [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* a_indices); private: const ::pg_query::A_Indices& _internal_a_indices() const; ::pg_query::A_Indices* _internal_mutable_a_indices(); public: void unsafe_arena_set_allocated_a_indices( ::pg_query::A_Indices* a_indices); ::pg_query::A_Indices* unsafe_arena_release_a_indices(); // .pg_query.A_Indirection a_indirection = 177 [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* a_indirection); private: const ::pg_query::A_Indirection& _internal_a_indirection() const; ::pg_query::A_Indirection* _internal_mutable_a_indirection(); public: void unsafe_arena_set_allocated_a_indirection( ::pg_query::A_Indirection* a_indirection); ::pg_query::A_Indirection* unsafe_arena_release_a_indirection(); // .pg_query.A_ArrayExpr a_array_expr = 178 [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* a_array_expr); private: const ::pg_query::A_ArrayExpr& _internal_a_array_expr() const; ::pg_query::A_ArrayExpr* _internal_mutable_a_array_expr(); public: void unsafe_arena_set_allocated_a_array_expr( ::pg_query::A_ArrayExpr* a_array_expr); ::pg_query::A_ArrayExpr* unsafe_arena_release_a_array_expr(); // .pg_query.ResTarget res_target = 179 [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* res_target); private: const ::pg_query::ResTarget& _internal_res_target() const; ::pg_query::ResTarget* _internal_mutable_res_target(); public: void unsafe_arena_set_allocated_res_target( ::pg_query::ResTarget* res_target); ::pg_query::ResTarget* unsafe_arena_release_res_target(); // .pg_query.MultiAssignRef multi_assign_ref = 180 [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* multi_assign_ref); private: const ::pg_query::MultiAssignRef& _internal_multi_assign_ref() const; ::pg_query::MultiAssignRef* _internal_mutable_multi_assign_ref(); public: void unsafe_arena_set_allocated_multi_assign_ref( ::pg_query::MultiAssignRef* multi_assign_ref); ::pg_query::MultiAssignRef* unsafe_arena_release_multi_assign_ref(); // .pg_query.TypeCast type_cast = 181 [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* type_cast); private: const ::pg_query::TypeCast& _internal_type_cast() const; ::pg_query::TypeCast* _internal_mutable_type_cast(); public: void unsafe_arena_set_allocated_type_cast( ::pg_query::TypeCast* type_cast); ::pg_query::TypeCast* unsafe_arena_release_type_cast(); // .pg_query.CollateClause collate_clause = 182 [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* collate_clause); private: const ::pg_query::CollateClause& _internal_collate_clause() const; ::pg_query::CollateClause* _internal_mutable_collate_clause(); public: void unsafe_arena_set_allocated_collate_clause( ::pg_query::CollateClause* collate_clause); ::pg_query::CollateClause* unsafe_arena_release_collate_clause(); // .pg_query.SortBy sort_by = 183 [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* sort_by); private: const ::pg_query::SortBy& _internal_sort_by() const; ::pg_query::SortBy* _internal_mutable_sort_by(); public: void unsafe_arena_set_allocated_sort_by( ::pg_query::SortBy* sort_by); ::pg_query::SortBy* unsafe_arena_release_sort_by(); // .pg_query.WindowDef window_def = 184 [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* window_def); private: const ::pg_query::WindowDef& _internal_window_def() const; ::pg_query::WindowDef* _internal_mutable_window_def(); public: void unsafe_arena_set_allocated_window_def( ::pg_query::WindowDef* window_def); ::pg_query::WindowDef* unsafe_arena_release_window_def(); // .pg_query.RangeSubselect range_subselect = 185 [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* range_subselect); private: const ::pg_query::RangeSubselect& _internal_range_subselect() const; ::pg_query::RangeSubselect* _internal_mutable_range_subselect(); public: void unsafe_arena_set_allocated_range_subselect( ::pg_query::RangeSubselect* range_subselect); ::pg_query::RangeSubselect* unsafe_arena_release_range_subselect(); // .pg_query.RangeFunction range_function = 186 [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* range_function); private: const ::pg_query::RangeFunction& _internal_range_function() const; ::pg_query::RangeFunction* _internal_mutable_range_function(); public: void unsafe_arena_set_allocated_range_function( ::pg_query::RangeFunction* range_function); ::pg_query::RangeFunction* unsafe_arena_release_range_function(); // .pg_query.RangeTableSample range_table_sample = 187 [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* range_table_sample); private: const ::pg_query::RangeTableSample& _internal_range_table_sample() const; ::pg_query::RangeTableSample* _internal_mutable_range_table_sample(); public: void unsafe_arena_set_allocated_range_table_sample( ::pg_query::RangeTableSample* range_table_sample); ::pg_query::RangeTableSample* unsafe_arena_release_range_table_sample(); // .pg_query.RangeTableFunc range_table_func = 188 [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* range_table_func); private: const ::pg_query::RangeTableFunc& _internal_range_table_func() const; ::pg_query::RangeTableFunc* _internal_mutable_range_table_func(); public: void unsafe_arena_set_allocated_range_table_func( ::pg_query::RangeTableFunc* range_table_func); ::pg_query::RangeTableFunc* unsafe_arena_release_range_table_func(); // .pg_query.RangeTableFuncCol range_table_func_col = 189 [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* range_table_func_col); private: const ::pg_query::RangeTableFuncCol& _internal_range_table_func_col() const; ::pg_query::RangeTableFuncCol* _internal_mutable_range_table_func_col(); public: void unsafe_arena_set_allocated_range_table_func_col( ::pg_query::RangeTableFuncCol* range_table_func_col); ::pg_query::RangeTableFuncCol* unsafe_arena_release_range_table_func_col(); // .pg_query.TypeName type_name = 190 [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* type_name); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: void unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name); ::pg_query::TypeName* unsafe_arena_release_type_name(); // .pg_query.ColumnDef column_def = 191 [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* column_def); private: const ::pg_query::ColumnDef& _internal_column_def() const; ::pg_query::ColumnDef* _internal_mutable_column_def(); public: void unsafe_arena_set_allocated_column_def( ::pg_query::ColumnDef* column_def); ::pg_query::ColumnDef* unsafe_arena_release_column_def(); // .pg_query.IndexElem index_elem = 192 [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* index_elem); private: const ::pg_query::IndexElem& _internal_index_elem() const; ::pg_query::IndexElem* _internal_mutable_index_elem(); public: void unsafe_arena_set_allocated_index_elem( ::pg_query::IndexElem* index_elem); ::pg_query::IndexElem* unsafe_arena_release_index_elem(); // .pg_query.StatsElem stats_elem = 193 [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* stats_elem); private: const ::pg_query::StatsElem& _internal_stats_elem() const; ::pg_query::StatsElem* _internal_mutable_stats_elem(); public: void unsafe_arena_set_allocated_stats_elem( ::pg_query::StatsElem* stats_elem); ::pg_query::StatsElem* unsafe_arena_release_stats_elem(); // .pg_query.Constraint constraint = 194 [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* constraint); private: const ::pg_query::Constraint& _internal_constraint() const; ::pg_query::Constraint* _internal_mutable_constraint(); public: void unsafe_arena_set_allocated_constraint( ::pg_query::Constraint* constraint); ::pg_query::Constraint* unsafe_arena_release_constraint(); // .pg_query.DefElem def_elem = 195 [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* def_elem); private: const ::pg_query::DefElem& _internal_def_elem() const; ::pg_query::DefElem* _internal_mutable_def_elem(); public: void unsafe_arena_set_allocated_def_elem( ::pg_query::DefElem* def_elem); ::pg_query::DefElem* unsafe_arena_release_def_elem(); // .pg_query.RangeTblEntry range_tbl_entry = 196 [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* range_tbl_entry); private: const ::pg_query::RangeTblEntry& _internal_range_tbl_entry() const; ::pg_query::RangeTblEntry* _internal_mutable_range_tbl_entry(); public: void unsafe_arena_set_allocated_range_tbl_entry( ::pg_query::RangeTblEntry* range_tbl_entry); ::pg_query::RangeTblEntry* unsafe_arena_release_range_tbl_entry(); // .pg_query.RangeTblFunction range_tbl_function = 197 [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* range_tbl_function); private: const ::pg_query::RangeTblFunction& _internal_range_tbl_function() const; ::pg_query::RangeTblFunction* _internal_mutable_range_tbl_function(); public: void unsafe_arena_set_allocated_range_tbl_function( ::pg_query::RangeTblFunction* range_tbl_function); ::pg_query::RangeTblFunction* unsafe_arena_release_range_tbl_function(); // .pg_query.TableSampleClause table_sample_clause = 198 [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* table_sample_clause); private: const ::pg_query::TableSampleClause& _internal_table_sample_clause() const; ::pg_query::TableSampleClause* _internal_mutable_table_sample_clause(); public: void unsafe_arena_set_allocated_table_sample_clause( ::pg_query::TableSampleClause* table_sample_clause); ::pg_query::TableSampleClause* unsafe_arena_release_table_sample_clause(); // .pg_query.WithCheckOption with_check_option = 199 [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* with_check_option); private: const ::pg_query::WithCheckOption& _internal_with_check_option() const; ::pg_query::WithCheckOption* _internal_mutable_with_check_option(); public: void unsafe_arena_set_allocated_with_check_option( ::pg_query::WithCheckOption* with_check_option); ::pg_query::WithCheckOption* unsafe_arena_release_with_check_option(); // .pg_query.SortGroupClause sort_group_clause = 200 [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* sort_group_clause); private: const ::pg_query::SortGroupClause& _internal_sort_group_clause() const; ::pg_query::SortGroupClause* _internal_mutable_sort_group_clause(); public: void unsafe_arena_set_allocated_sort_group_clause( ::pg_query::SortGroupClause* sort_group_clause); ::pg_query::SortGroupClause* unsafe_arena_release_sort_group_clause(); // .pg_query.GroupingSet grouping_set = 201 [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* grouping_set); private: const ::pg_query::GroupingSet& _internal_grouping_set() const; ::pg_query::GroupingSet* _internal_mutable_grouping_set(); public: void unsafe_arena_set_allocated_grouping_set( ::pg_query::GroupingSet* grouping_set); ::pg_query::GroupingSet* unsafe_arena_release_grouping_set(); // .pg_query.WindowClause window_clause = 202 [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* window_clause); private: const ::pg_query::WindowClause& _internal_window_clause() const; ::pg_query::WindowClause* _internal_mutable_window_clause(); public: void unsafe_arena_set_allocated_window_clause( ::pg_query::WindowClause* window_clause); ::pg_query::WindowClause* unsafe_arena_release_window_clause(); // .pg_query.ObjectWithArgs object_with_args = 203 [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* object_with_args); private: const ::pg_query::ObjectWithArgs& _internal_object_with_args() const; ::pg_query::ObjectWithArgs* _internal_mutable_object_with_args(); public: void unsafe_arena_set_allocated_object_with_args( ::pg_query::ObjectWithArgs* object_with_args); ::pg_query::ObjectWithArgs* unsafe_arena_release_object_with_args(); // .pg_query.AccessPriv access_priv = 204 [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* access_priv); private: const ::pg_query::AccessPriv& _internal_access_priv() const; ::pg_query::AccessPriv* _internal_mutable_access_priv(); public: void unsafe_arena_set_allocated_access_priv( ::pg_query::AccessPriv* access_priv); ::pg_query::AccessPriv* unsafe_arena_release_access_priv(); // .pg_query.CreateOpClassItem create_op_class_item = 205 [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* create_op_class_item); private: const ::pg_query::CreateOpClassItem& _internal_create_op_class_item() const; ::pg_query::CreateOpClassItem* _internal_mutable_create_op_class_item(); public: void unsafe_arena_set_allocated_create_op_class_item( ::pg_query::CreateOpClassItem* create_op_class_item); ::pg_query::CreateOpClassItem* unsafe_arena_release_create_op_class_item(); // .pg_query.TableLikeClause table_like_clause = 206 [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* table_like_clause); private: const ::pg_query::TableLikeClause& _internal_table_like_clause() const; ::pg_query::TableLikeClause* _internal_mutable_table_like_clause(); public: void unsafe_arena_set_allocated_table_like_clause( ::pg_query::TableLikeClause* table_like_clause); ::pg_query::TableLikeClause* unsafe_arena_release_table_like_clause(); // .pg_query.FunctionParameter function_parameter = 207 [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* function_parameter); private: const ::pg_query::FunctionParameter& _internal_function_parameter() const; ::pg_query::FunctionParameter* _internal_mutable_function_parameter(); public: void unsafe_arena_set_allocated_function_parameter( ::pg_query::FunctionParameter* function_parameter); ::pg_query::FunctionParameter* unsafe_arena_release_function_parameter(); // .pg_query.LockingClause locking_clause = 208 [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* locking_clause); private: const ::pg_query::LockingClause& _internal_locking_clause() const; ::pg_query::LockingClause* _internal_mutable_locking_clause(); public: void unsafe_arena_set_allocated_locking_clause( ::pg_query::LockingClause* locking_clause); ::pg_query::LockingClause* unsafe_arena_release_locking_clause(); // .pg_query.RowMarkClause row_mark_clause = 209 [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* row_mark_clause); private: const ::pg_query::RowMarkClause& _internal_row_mark_clause() const; ::pg_query::RowMarkClause* _internal_mutable_row_mark_clause(); public: void unsafe_arena_set_allocated_row_mark_clause( ::pg_query::RowMarkClause* row_mark_clause); ::pg_query::RowMarkClause* unsafe_arena_release_row_mark_clause(); // .pg_query.XmlSerialize xml_serialize = 210 [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* xml_serialize); private: const ::pg_query::XmlSerialize& _internal_xml_serialize() const; ::pg_query::XmlSerialize* _internal_mutable_xml_serialize(); public: void unsafe_arena_set_allocated_xml_serialize( ::pg_query::XmlSerialize* xml_serialize); ::pg_query::XmlSerialize* unsafe_arena_release_xml_serialize(); // .pg_query.WithClause with_clause = 211 [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* with_clause); private: const ::pg_query::WithClause& _internal_with_clause() const; ::pg_query::WithClause* _internal_mutable_with_clause(); public: void unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause); ::pg_query::WithClause* unsafe_arena_release_with_clause(); // .pg_query.InferClause infer_clause = 212 [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* infer_clause); private: const ::pg_query::InferClause& _internal_infer_clause() const; ::pg_query::InferClause* _internal_mutable_infer_clause(); public: void unsafe_arena_set_allocated_infer_clause( ::pg_query::InferClause* infer_clause); ::pg_query::InferClause* unsafe_arena_release_infer_clause(); // .pg_query.OnConflictClause on_conflict_clause = 213 [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* on_conflict_clause); private: const ::pg_query::OnConflictClause& _internal_on_conflict_clause() const; ::pg_query::OnConflictClause* _internal_mutable_on_conflict_clause(); public: void unsafe_arena_set_allocated_on_conflict_clause( ::pg_query::OnConflictClause* on_conflict_clause); ::pg_query::OnConflictClause* unsafe_arena_release_on_conflict_clause(); // .pg_query.CTESearchClause ctesearch_clause = 214 [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* ctesearch_clause); private: const ::pg_query::CTESearchClause& _internal_ctesearch_clause() const; ::pg_query::CTESearchClause* _internal_mutable_ctesearch_clause(); public: void unsafe_arena_set_allocated_ctesearch_clause( ::pg_query::CTESearchClause* ctesearch_clause); ::pg_query::CTESearchClause* unsafe_arena_release_ctesearch_clause(); // .pg_query.CTECycleClause ctecycle_clause = 215 [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* ctecycle_clause); private: const ::pg_query::CTECycleClause& _internal_ctecycle_clause() const; ::pg_query::CTECycleClause* _internal_mutable_ctecycle_clause(); public: void unsafe_arena_set_allocated_ctecycle_clause( ::pg_query::CTECycleClause* ctecycle_clause); ::pg_query::CTECycleClause* unsafe_arena_release_ctecycle_clause(); // .pg_query.CommonTableExpr common_table_expr = 216 [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* common_table_expr); private: const ::pg_query::CommonTableExpr& _internal_common_table_expr() const; ::pg_query::CommonTableExpr* _internal_mutable_common_table_expr(); public: void unsafe_arena_set_allocated_common_table_expr( ::pg_query::CommonTableExpr* common_table_expr); ::pg_query::CommonTableExpr* unsafe_arena_release_common_table_expr(); // .pg_query.MergeWhenClause merge_when_clause = 217 [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* merge_when_clause); private: const ::pg_query::MergeWhenClause& _internal_merge_when_clause() const; ::pg_query::MergeWhenClause* _internal_mutable_merge_when_clause(); public: void unsafe_arena_set_allocated_merge_when_clause( ::pg_query::MergeWhenClause* merge_when_clause); ::pg_query::MergeWhenClause* unsafe_arena_release_merge_when_clause(); // .pg_query.RoleSpec role_spec = 218 [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* role_spec); private: const ::pg_query::RoleSpec& _internal_role_spec() const; ::pg_query::RoleSpec* _internal_mutable_role_spec(); public: void unsafe_arena_set_allocated_role_spec( ::pg_query::RoleSpec* role_spec); ::pg_query::RoleSpec* unsafe_arena_release_role_spec(); // .pg_query.TriggerTransition trigger_transition = 219 [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* trigger_transition); private: const ::pg_query::TriggerTransition& _internal_trigger_transition() const; ::pg_query::TriggerTransition* _internal_mutable_trigger_transition(); public: void unsafe_arena_set_allocated_trigger_transition( ::pg_query::TriggerTransition* trigger_transition); ::pg_query::TriggerTransition* unsafe_arena_release_trigger_transition(); // .pg_query.PartitionElem partition_elem = 220 [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* partition_elem); private: const ::pg_query::PartitionElem& _internal_partition_elem() const; ::pg_query::PartitionElem* _internal_mutable_partition_elem(); public: void unsafe_arena_set_allocated_partition_elem( ::pg_query::PartitionElem* partition_elem); ::pg_query::PartitionElem* unsafe_arena_release_partition_elem(); // .pg_query.PartitionSpec partition_spec = 221 [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* partition_spec); private: const ::pg_query::PartitionSpec& _internal_partition_spec() const; ::pg_query::PartitionSpec* _internal_mutable_partition_spec(); public: void unsafe_arena_set_allocated_partition_spec( ::pg_query::PartitionSpec* partition_spec); ::pg_query::PartitionSpec* unsafe_arena_release_partition_spec(); // .pg_query.PartitionBoundSpec partition_bound_spec = 222 [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* partition_bound_spec); private: const ::pg_query::PartitionBoundSpec& _internal_partition_bound_spec() const; ::pg_query::PartitionBoundSpec* _internal_mutable_partition_bound_spec(); public: void unsafe_arena_set_allocated_partition_bound_spec( ::pg_query::PartitionBoundSpec* partition_bound_spec); ::pg_query::PartitionBoundSpec* unsafe_arena_release_partition_bound_spec(); // .pg_query.PartitionRangeDatum partition_range_datum = 223 [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* partition_range_datum); private: const ::pg_query::PartitionRangeDatum& _internal_partition_range_datum() const; ::pg_query::PartitionRangeDatum* _internal_mutable_partition_range_datum(); public: void unsafe_arena_set_allocated_partition_range_datum( ::pg_query::PartitionRangeDatum* partition_range_datum); ::pg_query::PartitionRangeDatum* unsafe_arena_release_partition_range_datum(); // .pg_query.PartitionCmd partition_cmd = 224 [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* partition_cmd); private: const ::pg_query::PartitionCmd& _internal_partition_cmd() const; ::pg_query::PartitionCmd* _internal_mutable_partition_cmd(); public: void unsafe_arena_set_allocated_partition_cmd( ::pg_query::PartitionCmd* partition_cmd); ::pg_query::PartitionCmd* unsafe_arena_release_partition_cmd(); // .pg_query.VacuumRelation vacuum_relation = 225 [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* vacuum_relation); private: const ::pg_query::VacuumRelation& _internal_vacuum_relation() const; ::pg_query::VacuumRelation* _internal_mutable_vacuum_relation(); public: void unsafe_arena_set_allocated_vacuum_relation( ::pg_query::VacuumRelation* vacuum_relation); ::pg_query::VacuumRelation* unsafe_arena_release_vacuum_relation(); // .pg_query.PublicationObjSpec publication_obj_spec = 226 [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* publication_obj_spec); private: const ::pg_query::PublicationObjSpec& _internal_publication_obj_spec() const; ::pg_query::PublicationObjSpec* _internal_mutable_publication_obj_spec(); public: void unsafe_arena_set_allocated_publication_obj_spec( ::pg_query::PublicationObjSpec* publication_obj_spec); ::pg_query::PublicationObjSpec* unsafe_arena_release_publication_obj_spec(); // .pg_query.PublicationTable publication_table = 227 [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* publication_table); private: const ::pg_query::PublicationTable& _internal_publication_table() const; ::pg_query::PublicationTable* _internal_mutable_publication_table(); public: void unsafe_arena_set_allocated_publication_table( ::pg_query::PublicationTable* publication_table); ::pg_query::PublicationTable* unsafe_arena_release_publication_table(); // .pg_query.InlineCodeBlock inline_code_block = 228 [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* inline_code_block); private: const ::pg_query::InlineCodeBlock& _internal_inline_code_block() const; ::pg_query::InlineCodeBlock* _internal_mutable_inline_code_block(); public: void unsafe_arena_set_allocated_inline_code_block( ::pg_query::InlineCodeBlock* inline_code_block); ::pg_query::InlineCodeBlock* unsafe_arena_release_inline_code_block(); // .pg_query.CallContext call_context = 229 [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* call_context); private: const ::pg_query::CallContext& _internal_call_context() const; ::pg_query::CallContext* _internal_mutable_call_context(); public: void unsafe_arena_set_allocated_call_context( ::pg_query::CallContext* call_context); ::pg_query::CallContext* unsafe_arena_release_call_context(); // .pg_query.Integer integer = 230 [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* integer); private: const ::pg_query::Integer& _internal_integer() const; ::pg_query::Integer* _internal_mutable_integer(); public: void unsafe_arena_set_allocated_integer( ::pg_query::Integer* integer); ::pg_query::Integer* unsafe_arena_release_integer(); // .pg_query.Float float = 231 [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* float_); private: const ::pg_query::Float& _internal_float_() const; ::pg_query::Float* _internal_mutable_float_(); public: void unsafe_arena_set_allocated_float_( ::pg_query::Float* float_); ::pg_query::Float* unsafe_arena_release_float_(); // .pg_query.Boolean boolean = 232 [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* boolean); private: const ::pg_query::Boolean& _internal_boolean() const; ::pg_query::Boolean* _internal_mutable_boolean(); public: void unsafe_arena_set_allocated_boolean( ::pg_query::Boolean* boolean); ::pg_query::Boolean* unsafe_arena_release_boolean(); // .pg_query.String string = 233 [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* string); private: const ::pg_query::String& _internal_string() const; ::pg_query::String* _internal_mutable_string(); public: void unsafe_arena_set_allocated_string( ::pg_query::String* string); ::pg_query::String* unsafe_arena_release_string(); // .pg_query.BitString bit_string = 234 [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* bit_string); private: const ::pg_query::BitString& _internal_bit_string() const; ::pg_query::BitString* _internal_mutable_bit_string(); public: void unsafe_arena_set_allocated_bit_string( ::pg_query::BitString* bit_string); ::pg_query::BitString* unsafe_arena_release_bit_string(); // .pg_query.List list = 235 [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* list); private: const ::pg_query::List& _internal_list() const; ::pg_query::List* _internal_mutable_list(); public: void unsafe_arena_set_allocated_list( ::pg_query::List* list); ::pg_query::List* unsafe_arena_release_list(); // .pg_query.IntList int_list = 236 [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* int_list); private: const ::pg_query::IntList& _internal_int_list() const; ::pg_query::IntList* _internal_mutable_int_list(); public: void unsafe_arena_set_allocated_int_list( ::pg_query::IntList* int_list); ::pg_query::IntList* unsafe_arena_release_int_list(); // .pg_query.OidList oid_list = 237 [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* oid_list); private: const ::pg_query::OidList& _internal_oid_list() const; ::pg_query::OidList* _internal_mutable_oid_list(); public: void unsafe_arena_set_allocated_oid_list( ::pg_query::OidList* oid_list); ::pg_query::OidList* unsafe_arena_release_oid_list(); // .pg_query.A_Const a_const = 238 [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* a_const); private: const ::pg_query::A_Const& _internal_a_const() const; ::pg_query::A_Const* _internal_mutable_a_const(); public: void unsafe_arena_set_allocated_a_const( ::pg_query::A_Const* a_const); ::pg_query::A_Const* unsafe_arena_release_a_const(); 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_var(); void set_has_param(); void set_has_aggref(); void set_has_grouping_func(); void set_has_window_func(); void set_has_subscripting_ref(); void set_has_func_expr(); void set_has_named_arg_expr(); void set_has_op_expr(); void set_has_distinct_expr(); void set_has_null_if_expr(); void set_has_scalar_array_op_expr(); void set_has_bool_expr(); void set_has_sub_link(); void set_has_sub_plan(); void set_has_alternative_sub_plan(); void set_has_field_select(); void set_has_field_store(); void set_has_relabel_type(); void set_has_coerce_via_io(); void set_has_array_coerce_expr(); void set_has_convert_rowtype_expr(); void set_has_collate_expr(); void set_has_case_expr(); void set_has_case_when(); void set_has_case_test_expr(); void set_has_array_expr(); void set_has_row_expr(); void set_has_row_compare_expr(); void set_has_coalesce_expr(); void set_has_min_max_expr(); void set_has_sqlvalue_function(); void set_has_xml_expr(); void set_has_null_test(); void set_has_boolean_test(); void set_has_coerce_to_domain(); void set_has_coerce_to_domain_value(); void set_has_set_to_default(); void set_has_current_of_expr(); void set_has_next_value_expr(); void set_has_inference_elem(); void set_has_target_entry(); void set_has_range_tbl_ref(); void set_has_join_expr(); void set_has_from_expr(); void set_has_on_conflict_expr(); void set_has_into_clause(); void set_has_merge_action(); void set_has_raw_stmt(); void set_has_query(); void set_has_insert_stmt(); void set_has_delete_stmt(); void set_has_update_stmt(); void set_has_merge_stmt(); void set_has_select_stmt(); void set_has_return_stmt(); void set_has_plassign_stmt(); void set_has_alter_table_stmt(); void set_has_alter_table_cmd(); void set_has_alter_domain_stmt(); void set_has_set_operation_stmt(); void set_has_grant_stmt(); void set_has_grant_role_stmt(); void set_has_alter_default_privileges_stmt(); void set_has_close_portal_stmt(); void set_has_cluster_stmt(); void set_has_copy_stmt(); void set_has_create_stmt(); void set_has_define_stmt(); void set_has_drop_stmt(); void set_has_truncate_stmt(); void set_has_comment_stmt(); void set_has_fetch_stmt(); void set_has_index_stmt(); void set_has_create_function_stmt(); void set_has_alter_function_stmt(); void set_has_do_stmt(); void set_has_rename_stmt(); void set_has_rule_stmt(); void set_has_notify_stmt(); void set_has_listen_stmt(); void set_has_unlisten_stmt(); void set_has_transaction_stmt(); void set_has_view_stmt(); void set_has_load_stmt(); void set_has_create_domain_stmt(); void set_has_createdb_stmt(); void set_has_dropdb_stmt(); void set_has_vacuum_stmt(); void set_has_explain_stmt(); void set_has_create_table_as_stmt(); void set_has_create_seq_stmt(); void set_has_alter_seq_stmt(); void set_has_variable_set_stmt(); void set_has_variable_show_stmt(); void set_has_discard_stmt(); void set_has_create_trig_stmt(); void set_has_create_plang_stmt(); void set_has_create_role_stmt(); void set_has_alter_role_stmt(); void set_has_drop_role_stmt(); void set_has_lock_stmt(); void set_has_constraints_set_stmt(); void set_has_reindex_stmt(); void set_has_check_point_stmt(); void set_has_create_schema_stmt(); void set_has_alter_database_stmt(); void set_has_alter_database_refresh_coll_stmt(); void set_has_alter_database_set_stmt(); void set_has_alter_role_set_stmt(); void set_has_create_conversion_stmt(); void set_has_create_cast_stmt(); void set_has_create_op_class_stmt(); void set_has_create_op_family_stmt(); void set_has_alter_op_family_stmt(); void set_has_prepare_stmt(); void set_has_execute_stmt(); void set_has_deallocate_stmt(); void set_has_declare_cursor_stmt(); void set_has_create_table_space_stmt(); void set_has_drop_table_space_stmt(); void set_has_alter_object_depends_stmt(); void set_has_alter_object_schema_stmt(); void set_has_alter_owner_stmt(); void set_has_alter_operator_stmt(); void set_has_alter_type_stmt(); void set_has_drop_owned_stmt(); void set_has_reassign_owned_stmt(); void set_has_composite_type_stmt(); void set_has_create_enum_stmt(); void set_has_create_range_stmt(); void set_has_alter_enum_stmt(); void set_has_alter_tsdictionary_stmt(); void set_has_alter_tsconfiguration_stmt(); void set_has_create_fdw_stmt(); void set_has_alter_fdw_stmt(); void set_has_create_foreign_server_stmt(); void set_has_alter_foreign_server_stmt(); void set_has_create_user_mapping_stmt(); void set_has_alter_user_mapping_stmt(); void set_has_drop_user_mapping_stmt(); void set_has_alter_table_space_options_stmt(); void set_has_alter_table_move_all_stmt(); void set_has_sec_label_stmt(); void set_has_create_foreign_table_stmt(); void set_has_import_foreign_schema_stmt(); void set_has_create_extension_stmt(); void set_has_alter_extension_stmt(); void set_has_alter_extension_contents_stmt(); void set_has_create_event_trig_stmt(); void set_has_alter_event_trig_stmt(); void set_has_refresh_mat_view_stmt(); void set_has_replica_identity_stmt(); void set_has_alter_system_stmt(); void set_has_create_policy_stmt(); void set_has_alter_policy_stmt(); void set_has_create_transform_stmt(); void set_has_create_am_stmt(); void set_has_create_publication_stmt(); void set_has_alter_publication_stmt(); void set_has_create_subscription_stmt(); void set_has_alter_subscription_stmt(); void set_has_drop_subscription_stmt(); void set_has_create_stats_stmt(); void set_has_alter_collation_stmt(); void set_has_call_stmt(); void set_has_alter_stats_stmt(); void set_has_a_expr(); void set_has_column_ref(); void set_has_param_ref(); void set_has_func_call(); void set_has_a_star(); void set_has_a_indices(); void set_has_a_indirection(); void set_has_a_array_expr(); void set_has_res_target(); void set_has_multi_assign_ref(); void set_has_type_cast(); void set_has_collate_clause(); void set_has_sort_by(); void set_has_window_def(); void set_has_range_subselect(); void set_has_range_function(); void set_has_range_table_sample(); void set_has_range_table_func(); void set_has_range_table_func_col(); void set_has_type_name(); void set_has_column_def(); void set_has_index_elem(); void set_has_stats_elem(); void set_has_constraint(); void set_has_def_elem(); void set_has_range_tbl_entry(); void set_has_range_tbl_function(); void set_has_table_sample_clause(); void set_has_with_check_option(); void set_has_sort_group_clause(); void set_has_grouping_set(); void set_has_window_clause(); void set_has_object_with_args(); void set_has_access_priv(); void set_has_create_op_class_item(); void set_has_table_like_clause(); void set_has_function_parameter(); void set_has_locking_clause(); void set_has_row_mark_clause(); void set_has_xml_serialize(); void set_has_with_clause(); void set_has_infer_clause(); void set_has_on_conflict_clause(); void set_has_ctesearch_clause(); void set_has_ctecycle_clause(); void set_has_common_table_expr(); void set_has_merge_when_clause(); void set_has_role_spec(); void set_has_trigger_transition(); void set_has_partition_elem(); void set_has_partition_spec(); void set_has_partition_bound_spec(); void set_has_partition_range_datum(); void set_has_partition_cmd(); void set_has_vacuum_relation(); void set_has_publication_obj_spec(); void set_has_publication_table(); void set_has_inline_code_block(); void set_has_call_context(); 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(); template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { union NodeUnion { constexpr NodeUnion() : _constinit_{} {} ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_; ::pg_query::Alias* alias_; ::pg_query::RangeVar* range_var_; ::pg_query::TableFunc* table_func_; ::pg_query::Var* var_; ::pg_query::Param* param_; ::pg_query::Aggref* aggref_; ::pg_query::GroupingFunc* grouping_func_; ::pg_query::WindowFunc* window_func_; ::pg_query::SubscriptingRef* subscripting_ref_; ::pg_query::FuncExpr* func_expr_; ::pg_query::NamedArgExpr* named_arg_expr_; ::pg_query::OpExpr* op_expr_; ::pg_query::DistinctExpr* distinct_expr_; ::pg_query::NullIfExpr* null_if_expr_; ::pg_query::ScalarArrayOpExpr* scalar_array_op_expr_; ::pg_query::BoolExpr* bool_expr_; ::pg_query::SubLink* sub_link_; ::pg_query::SubPlan* sub_plan_; ::pg_query::AlternativeSubPlan* alternative_sub_plan_; ::pg_query::FieldSelect* field_select_; ::pg_query::FieldStore* field_store_; ::pg_query::RelabelType* relabel_type_; ::pg_query::CoerceViaIO* coerce_via_io_; ::pg_query::ArrayCoerceExpr* array_coerce_expr_; ::pg_query::ConvertRowtypeExpr* convert_rowtype_expr_; ::pg_query::CollateExpr* collate_expr_; ::pg_query::CaseExpr* case_expr_; ::pg_query::CaseWhen* case_when_; ::pg_query::CaseTestExpr* case_test_expr_; ::pg_query::ArrayExpr* array_expr_; ::pg_query::RowExpr* row_expr_; ::pg_query::RowCompareExpr* row_compare_expr_; ::pg_query::CoalesceExpr* coalesce_expr_; ::pg_query::MinMaxExpr* min_max_expr_; ::pg_query::SQLValueFunction* sqlvalue_function_; ::pg_query::XmlExpr* xml_expr_; ::pg_query::NullTest* null_test_; ::pg_query::BooleanTest* boolean_test_; ::pg_query::CoerceToDomain* coerce_to_domain_; ::pg_query::CoerceToDomainValue* coerce_to_domain_value_; ::pg_query::SetToDefault* set_to_default_; ::pg_query::CurrentOfExpr* current_of_expr_; ::pg_query::NextValueExpr* next_value_expr_; ::pg_query::InferenceElem* inference_elem_; ::pg_query::TargetEntry* target_entry_; ::pg_query::RangeTblRef* range_tbl_ref_; ::pg_query::JoinExpr* join_expr_; ::pg_query::FromExpr* from_expr_; ::pg_query::OnConflictExpr* on_conflict_expr_; ::pg_query::IntoClause* into_clause_; ::pg_query::MergeAction* merge_action_; ::pg_query::RawStmt* raw_stmt_; ::pg_query::Query* query_; ::pg_query::InsertStmt* insert_stmt_; ::pg_query::DeleteStmt* delete_stmt_; ::pg_query::UpdateStmt* update_stmt_; ::pg_query::MergeStmt* merge_stmt_; ::pg_query::SelectStmt* select_stmt_; ::pg_query::ReturnStmt* return_stmt_; ::pg_query::PLAssignStmt* plassign_stmt_; ::pg_query::AlterTableStmt* alter_table_stmt_; ::pg_query::AlterTableCmd* alter_table_cmd_; ::pg_query::AlterDomainStmt* alter_domain_stmt_; ::pg_query::SetOperationStmt* set_operation_stmt_; ::pg_query::GrantStmt* grant_stmt_; ::pg_query::GrantRoleStmt* grant_role_stmt_; ::pg_query::AlterDefaultPrivilegesStmt* alter_default_privileges_stmt_; ::pg_query::ClosePortalStmt* close_portal_stmt_; ::pg_query::ClusterStmt* cluster_stmt_; ::pg_query::CopyStmt* copy_stmt_; ::pg_query::CreateStmt* create_stmt_; ::pg_query::DefineStmt* define_stmt_; ::pg_query::DropStmt* drop_stmt_; ::pg_query::TruncateStmt* truncate_stmt_; ::pg_query::CommentStmt* comment_stmt_; ::pg_query::FetchStmt* fetch_stmt_; ::pg_query::IndexStmt* index_stmt_; ::pg_query::CreateFunctionStmt* create_function_stmt_; ::pg_query::AlterFunctionStmt* alter_function_stmt_; ::pg_query::DoStmt* do_stmt_; ::pg_query::RenameStmt* rename_stmt_; ::pg_query::RuleStmt* rule_stmt_; ::pg_query::NotifyStmt* notify_stmt_; ::pg_query::ListenStmt* listen_stmt_; ::pg_query::UnlistenStmt* unlisten_stmt_; ::pg_query::TransactionStmt* transaction_stmt_; ::pg_query::ViewStmt* view_stmt_; ::pg_query::LoadStmt* load_stmt_; ::pg_query::CreateDomainStmt* create_domain_stmt_; ::pg_query::CreatedbStmt* createdb_stmt_; ::pg_query::DropdbStmt* dropdb_stmt_; ::pg_query::VacuumStmt* vacuum_stmt_; ::pg_query::ExplainStmt* explain_stmt_; ::pg_query::CreateTableAsStmt* create_table_as_stmt_; ::pg_query::CreateSeqStmt* create_seq_stmt_; ::pg_query::AlterSeqStmt* alter_seq_stmt_; ::pg_query::VariableSetStmt* variable_set_stmt_; ::pg_query::VariableShowStmt* variable_show_stmt_; ::pg_query::DiscardStmt* discard_stmt_; ::pg_query::CreateTrigStmt* create_trig_stmt_; ::pg_query::CreatePLangStmt* create_plang_stmt_; ::pg_query::CreateRoleStmt* create_role_stmt_; ::pg_query::AlterRoleStmt* alter_role_stmt_; ::pg_query::DropRoleStmt* drop_role_stmt_; ::pg_query::LockStmt* lock_stmt_; ::pg_query::ConstraintsSetStmt* constraints_set_stmt_; ::pg_query::ReindexStmt* reindex_stmt_; ::pg_query::CheckPointStmt* check_point_stmt_; ::pg_query::CreateSchemaStmt* create_schema_stmt_; ::pg_query::AlterDatabaseStmt* alter_database_stmt_; ::pg_query::AlterDatabaseRefreshCollStmt* alter_database_refresh_coll_stmt_; ::pg_query::AlterDatabaseSetStmt* alter_database_set_stmt_; ::pg_query::AlterRoleSetStmt* alter_role_set_stmt_; ::pg_query::CreateConversionStmt* create_conversion_stmt_; ::pg_query::CreateCastStmt* create_cast_stmt_; ::pg_query::CreateOpClassStmt* create_op_class_stmt_; ::pg_query::CreateOpFamilyStmt* create_op_family_stmt_; ::pg_query::AlterOpFamilyStmt* alter_op_family_stmt_; ::pg_query::PrepareStmt* prepare_stmt_; ::pg_query::ExecuteStmt* execute_stmt_; ::pg_query::DeallocateStmt* deallocate_stmt_; ::pg_query::DeclareCursorStmt* declare_cursor_stmt_; ::pg_query::CreateTableSpaceStmt* create_table_space_stmt_; ::pg_query::DropTableSpaceStmt* drop_table_space_stmt_; ::pg_query::AlterObjectDependsStmt* alter_object_depends_stmt_; ::pg_query::AlterObjectSchemaStmt* alter_object_schema_stmt_; ::pg_query::AlterOwnerStmt* alter_owner_stmt_; ::pg_query::AlterOperatorStmt* alter_operator_stmt_; ::pg_query::AlterTypeStmt* alter_type_stmt_; ::pg_query::DropOwnedStmt* drop_owned_stmt_; ::pg_query::ReassignOwnedStmt* reassign_owned_stmt_; ::pg_query::CompositeTypeStmt* composite_type_stmt_; ::pg_query::CreateEnumStmt* create_enum_stmt_; ::pg_query::CreateRangeStmt* create_range_stmt_; ::pg_query::AlterEnumStmt* alter_enum_stmt_; ::pg_query::AlterTSDictionaryStmt* alter_tsdictionary_stmt_; ::pg_query::AlterTSConfigurationStmt* alter_tsconfiguration_stmt_; ::pg_query::CreateFdwStmt* create_fdw_stmt_; ::pg_query::AlterFdwStmt* alter_fdw_stmt_; ::pg_query::CreateForeignServerStmt* create_foreign_server_stmt_; ::pg_query::AlterForeignServerStmt* alter_foreign_server_stmt_; ::pg_query::CreateUserMappingStmt* create_user_mapping_stmt_; ::pg_query::AlterUserMappingStmt* alter_user_mapping_stmt_; ::pg_query::DropUserMappingStmt* drop_user_mapping_stmt_; ::pg_query::AlterTableSpaceOptionsStmt* alter_table_space_options_stmt_; ::pg_query::AlterTableMoveAllStmt* alter_table_move_all_stmt_; ::pg_query::SecLabelStmt* sec_label_stmt_; ::pg_query::CreateForeignTableStmt* create_foreign_table_stmt_; ::pg_query::ImportForeignSchemaStmt* import_foreign_schema_stmt_; ::pg_query::CreateExtensionStmt* create_extension_stmt_; ::pg_query::AlterExtensionStmt* alter_extension_stmt_; ::pg_query::AlterExtensionContentsStmt* alter_extension_contents_stmt_; ::pg_query::CreateEventTrigStmt* create_event_trig_stmt_; ::pg_query::AlterEventTrigStmt* alter_event_trig_stmt_; ::pg_query::RefreshMatViewStmt* refresh_mat_view_stmt_; ::pg_query::ReplicaIdentityStmt* replica_identity_stmt_; ::pg_query::AlterSystemStmt* alter_system_stmt_; ::pg_query::CreatePolicyStmt* create_policy_stmt_; ::pg_query::AlterPolicyStmt* alter_policy_stmt_; ::pg_query::CreateTransformStmt* create_transform_stmt_; ::pg_query::CreateAmStmt* create_am_stmt_; ::pg_query::CreatePublicationStmt* create_publication_stmt_; ::pg_query::AlterPublicationStmt* alter_publication_stmt_; ::pg_query::CreateSubscriptionStmt* create_subscription_stmt_; ::pg_query::AlterSubscriptionStmt* alter_subscription_stmt_; ::pg_query::DropSubscriptionStmt* drop_subscription_stmt_; ::pg_query::CreateStatsStmt* create_stats_stmt_; ::pg_query::AlterCollationStmt* alter_collation_stmt_; ::pg_query::CallStmt* call_stmt_; ::pg_query::AlterStatsStmt* alter_stats_stmt_; ::pg_query::A_Expr* a_expr_; ::pg_query::ColumnRef* column_ref_; ::pg_query::ParamRef* param_ref_; ::pg_query::FuncCall* func_call_; ::pg_query::A_Star* a_star_; ::pg_query::A_Indices* a_indices_; ::pg_query::A_Indirection* a_indirection_; ::pg_query::A_ArrayExpr* a_array_expr_; ::pg_query::ResTarget* res_target_; ::pg_query::MultiAssignRef* multi_assign_ref_; ::pg_query::TypeCast* type_cast_; ::pg_query::CollateClause* collate_clause_; ::pg_query::SortBy* sort_by_; ::pg_query::WindowDef* window_def_; ::pg_query::RangeSubselect* range_subselect_; ::pg_query::RangeFunction* range_function_; ::pg_query::RangeTableSample* range_table_sample_; ::pg_query::RangeTableFunc* range_table_func_; ::pg_query::RangeTableFuncCol* range_table_func_col_; ::pg_query::TypeName* type_name_; ::pg_query::ColumnDef* column_def_; ::pg_query::IndexElem* index_elem_; ::pg_query::StatsElem* stats_elem_; ::pg_query::Constraint* constraint_; ::pg_query::DefElem* def_elem_; ::pg_query::RangeTblEntry* range_tbl_entry_; ::pg_query::RangeTblFunction* range_tbl_function_; ::pg_query::TableSampleClause* table_sample_clause_; ::pg_query::WithCheckOption* with_check_option_; ::pg_query::SortGroupClause* sort_group_clause_; ::pg_query::GroupingSet* grouping_set_; ::pg_query::WindowClause* window_clause_; ::pg_query::ObjectWithArgs* object_with_args_; ::pg_query::AccessPriv* access_priv_; ::pg_query::CreateOpClassItem* create_op_class_item_; ::pg_query::TableLikeClause* table_like_clause_; ::pg_query::FunctionParameter* function_parameter_; ::pg_query::LockingClause* locking_clause_; ::pg_query::RowMarkClause* row_mark_clause_; ::pg_query::XmlSerialize* xml_serialize_; ::pg_query::WithClause* with_clause_; ::pg_query::InferClause* infer_clause_; ::pg_query::OnConflictClause* on_conflict_clause_; ::pg_query::CTESearchClause* ctesearch_clause_; ::pg_query::CTECycleClause* ctecycle_clause_; ::pg_query::CommonTableExpr* common_table_expr_; ::pg_query::MergeWhenClause* merge_when_clause_; ::pg_query::RoleSpec* role_spec_; ::pg_query::TriggerTransition* trigger_transition_; ::pg_query::PartitionElem* partition_elem_; ::pg_query::PartitionSpec* partition_spec_; ::pg_query::PartitionBoundSpec* partition_bound_spec_; ::pg_query::PartitionRangeDatum* partition_range_datum_; ::pg_query::PartitionCmd* partition_cmd_; ::pg_query::VacuumRelation* vacuum_relation_; ::pg_query::PublicationObjSpec* publication_obj_spec_; ::pg_query::PublicationTable* publication_table_; ::pg_query::InlineCodeBlock* inline_code_block_; ::pg_query::CallContext* call_context_; ::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 ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; uint32_t _oneof_case_[1]; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Integer final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Integer) */ { public: inline Integer() : Integer(nullptr) {} ~Integer() override; explicit PROTOBUF_CONSTEXPR Integer(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); Integer(const Integer& from); Integer(Integer&& from) noexcept : Integer() { *this = ::std::move(from); } inline Integer& operator=(const Integer& from) { CopyFrom(from); return *this; } inline Integer& operator=(Integer&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Integer* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Integer* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const Integer& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const Integer& from) { Integer::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Integer* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Integer"; } protected: explicit Integer(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { int32_t ival_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Float final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Float) */ { public: inline Float() : Float(nullptr) {} ~Float() override; explicit PROTOBUF_CONSTEXPR Float(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); Float(const Float& from); Float(Float&& from) noexcept : Float() { *this = ::std::move(from); } inline Float& operator=(const Float& from) { CopyFrom(from); return *this; } inline Float& operator=(Float&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Float* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Float* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const Float& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const Float& from) { Float::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Float* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Float"; } protected: explicit Float(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_fval(); PROTOBUF_NODISCARD std::string* release_fval(); void set_allocated_fval(std::string* fval); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fval_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Boolean final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Boolean) */ { public: inline Boolean() : Boolean(nullptr) {} ~Boolean() override; explicit PROTOBUF_CONSTEXPR Boolean(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); Boolean(const Boolean& 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 (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Boolean* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Boolean* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const Boolean& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const Boolean& from) { Boolean::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Boolean* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Boolean"; } protected: explicit Boolean(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { bool boolval_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class String final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.String) */ { public: inline String() : String(nullptr) {} ~String() override; explicit PROTOBUF_CONSTEXPR String(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); String(const String& from); String(String&& from) noexcept : String() { *this = ::std::move(from); } inline String& operator=(const String& from) { CopyFrom(from); return *this; } inline String& operator=(String&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(String* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- String* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const String& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const String& from) { String::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(String* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.String"; } protected: explicit String(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_sval(); PROTOBUF_NODISCARD std::string* release_sval(); void set_allocated_sval(std::string* sval); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr sval_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class BitString final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.BitString) */ { public: inline BitString() : BitString(nullptr) {} ~BitString() override; explicit PROTOBUF_CONSTEXPR BitString(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); BitString(const BitString& from); BitString(BitString&& from) noexcept : BitString() { *this = ::std::move(from); } inline BitString& operator=(const BitString& from) { CopyFrom(from); return *this; } inline BitString& operator=(BitString&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(BitString* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- BitString* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const BitString& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const BitString& from) { BitString::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(BitString* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.BitString"; } protected: explicit BitString(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_bsval(); PROTOBUF_NODISCARD std::string* release_bsval(); void set_allocated_bsval(std::string* bsval); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr bsval_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class List final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.List) */ { public: inline List() : List(nullptr) {} ~List() override; explicit PROTOBUF_CONSTEXPR List(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); List(const List& from); List(List&& from) noexcept : List() { *this = ::std::move(from); } inline List& operator=(const List& from) { CopyFrom(from); return *this; } inline List& operator=(List&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(List* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- List* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const List& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const List& from) { List::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(List* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.List"; } protected: explicit List(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_items(); private: const ::pg_query::Node& _internal_items(int index) const; ::pg_query::Node* _internal_add_items(); public: const ::pg_query::Node& items(int index) const; ::pg_query::Node* add_items(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& items() const; // @@protoc_insertion_point(class_scope:pg_query.List) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > items_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class OidList final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.OidList) */ { public: inline OidList() : OidList(nullptr) {} ~OidList() override; explicit PROTOBUF_CONSTEXPR OidList(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); OidList(const OidList& from); OidList(OidList&& from) noexcept : OidList() { *this = ::std::move(from); } inline OidList& operator=(const OidList& from) { CopyFrom(from); return *this; } inline OidList& operator=(OidList&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(OidList* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- OidList* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const OidList& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const OidList& from) { OidList::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(OidList* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.OidList"; } protected: explicit OidList(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_items(); private: const ::pg_query::Node& _internal_items(int index) const; ::pg_query::Node* _internal_add_items(); public: const ::pg_query::Node& items(int index) const; ::pg_query::Node* add_items(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& items() const; // @@protoc_insertion_point(class_scope:pg_query.OidList) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > items_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class IntList final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.IntList) */ { public: inline IntList() : IntList(nullptr) {} ~IntList() override; explicit PROTOBUF_CONSTEXPR IntList(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); IntList(const IntList& from); IntList(IntList&& from) noexcept : IntList() { *this = ::std::move(from); } inline IntList& operator=(const IntList& from) { CopyFrom(from); return *this; } inline IntList& operator=(IntList&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(IntList* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- IntList* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const IntList& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const IntList& from) { IntList::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(IntList* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.IntList"; } protected: explicit IntList(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_items(); private: const ::pg_query::Node& _internal_items(int index) const; ::pg_query::Node* _internal_add_items(); public: const ::pg_query::Node& items(int index) const; ::pg_query::Node* add_items(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& items() const; // @@protoc_insertion_point(class_scope:pg_query.IntList) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > items_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class A_Const final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Const) */ { public: inline A_Const() : A_Const(nullptr) {} ~A_Const() override; explicit PROTOBUF_CONSTEXPR A_Const(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); A_Const(const A_Const& from); A_Const(A_Const&& from) noexcept : A_Const() { *this = ::std::move(from); } inline A_Const& operator=(const A_Const& from) { CopyFrom(from); return *this; } inline A_Const& operator=(A_Const&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_Const* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- A_Const* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const A_Const& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const A_Const& from) { A_Const::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(A_Const* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.A_Const"; } protected: explicit A_Const(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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* ival); private: const ::pg_query::Integer& _internal_ival() const; ::pg_query::Integer* _internal_mutable_ival(); public: void unsafe_arena_set_allocated_ival( ::pg_query::Integer* ival); ::pg_query::Integer* unsafe_arena_release_ival(); // .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* fval); private: const ::pg_query::Float& _internal_fval() const; ::pg_query::Float* _internal_mutable_fval(); public: void unsafe_arena_set_allocated_fval( ::pg_query::Float* fval); ::pg_query::Float* unsafe_arena_release_fval(); // .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* boolval); private: const ::pg_query::Boolean& _internal_boolval() const; ::pg_query::Boolean* _internal_mutable_boolval(); public: void unsafe_arena_set_allocated_boolval( ::pg_query::Boolean* boolval); ::pg_query::Boolean* unsafe_arena_release_boolval(); // .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* sval); private: const ::pg_query::String& _internal_sval() const; ::pg_query::String* _internal_mutable_sval(); public: void unsafe_arena_set_allocated_sval( ::pg_query::String* sval); ::pg_query::String* unsafe_arena_release_sval(); // .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* bsval); private: const ::pg_query::BitString& _internal_bsval() const; ::pg_query::BitString* _internal_mutable_bsval(); public: void unsafe_arena_set_allocated_bsval( ::pg_query::BitString* bsval); ::pg_query::BitString* unsafe_arena_release_bsval(); 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(); template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { bool isnull_; int32_t location_; union ValUnion { constexpr ValUnion() : _constinit_{} {} ::PROTOBUF_NAMESPACE_ID::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 ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; uint32_t _oneof_case_[1]; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Alias final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Alias) */ { public: inline Alias() : Alias(nullptr) {} ~Alias() override; explicit PROTOBUF_CONSTEXPR Alias(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); Alias(const Alias& from); Alias(Alias&& from) noexcept : Alias() { *this = ::std::move(from); } inline Alias& operator=(const Alias& from) { CopyFrom(from); return *this; } inline Alias& operator=(Alias&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Alias* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Alias* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const Alias& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const Alias& from) { Alias::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Alias* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Alias"; } protected: explicit Alias(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_colnames(); private: const ::pg_query::Node& _internal_colnames(int index) const; ::pg_query::Node* _internal_add_colnames(); public: const ::pg_query::Node& colnames(int index) const; ::pg_query::Node* add_colnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& colnames() const; // string aliasname = 1 [json_name = "aliasname"]; void clear_aliasname(); const std::string& aliasname() const; template void set_aliasname(ArgT0&& arg0, ArgT... args); std::string* mutable_aliasname(); PROTOBUF_NODISCARD std::string* release_aliasname(); void set_allocated_aliasname(std::string* aliasname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colnames_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr aliasname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeVar final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeVar) */ { public: inline RangeVar() : RangeVar(nullptr) {} ~RangeVar() override; explicit PROTOBUF_CONSTEXPR RangeVar(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RangeVar(const RangeVar& from); RangeVar(RangeVar&& from) noexcept : RangeVar() { *this = ::std::move(from); } inline RangeVar& operator=(const RangeVar& from) { CopyFrom(from); return *this; } inline RangeVar& operator=(RangeVar&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeVar* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeVar* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RangeVar& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RangeVar& from) { RangeVar::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeVar* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeVar"; } protected: explicit RangeVar(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_catalogname(); PROTOBUF_NODISCARD std::string* release_catalogname(); void set_allocated_catalogname(std::string* catalogname); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_schemaname(); PROTOBUF_NODISCARD std::string* release_schemaname(); void set_allocated_schemaname(std::string* schemaname); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_relname(); PROTOBUF_NODISCARD std::string* release_relname(); void set_allocated_relname(std::string* relname); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_relpersistence(); PROTOBUF_NODISCARD std::string* release_relpersistence(); void set_allocated_relpersistence(std::string* relpersistence); 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; 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* alias); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: void unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias); ::pg_query::Alias* unsafe_arena_release_alias(); // bool inh = 4 [json_name = "inh"]; void clear_inh(); bool inh() const; void set_inh(bool value); private: bool _internal_inh() const; void _internal_set_inh(bool value); public: // int32 location = 7 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr catalogname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr schemaname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr relname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr relpersistence_; ::pg_query::Alias* alias_; bool inh_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TableFunc final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TableFunc) */ { public: inline TableFunc() : TableFunc(nullptr) {} ~TableFunc() override; explicit PROTOBUF_CONSTEXPR TableFunc(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); TableFunc(const TableFunc& from); TableFunc(TableFunc&& from) noexcept : TableFunc() { *this = ::std::move(from); } inline TableFunc& operator=(const TableFunc& from) { CopyFrom(from); return *this; } inline TableFunc& operator=(TableFunc&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TableFunc* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TableFunc* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const TableFunc& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const TableFunc& from) { TableFunc::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TableFunc* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TableFunc"; } protected: explicit TableFunc(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNsUrisFieldNumber = 1, kNsNamesFieldNumber = 2, kColnamesFieldNumber = 5, kColtypesFieldNumber = 6, kColtypmodsFieldNumber = 7, kColcollationsFieldNumber = 8, kColexprsFieldNumber = 9, kColdefexprsFieldNumber = 10, kNotnullsFieldNumber = 11, kDocexprFieldNumber = 3, kRowexprFieldNumber = 4, kOrdinalitycolFieldNumber = 12, kLocationFieldNumber = 13, }; // repeated .pg_query.Node ns_uris = 1 [json_name = "ns_uris"]; int ns_uris_size() const; private: int _internal_ns_uris_size() const; public: void clear_ns_uris(); ::pg_query::Node* mutable_ns_uris(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_ns_uris(); private: const ::pg_query::Node& _internal_ns_uris(int index) const; ::pg_query::Node* _internal_add_ns_uris(); public: const ::pg_query::Node& ns_uris(int index) const; ::pg_query::Node* add_ns_uris(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ns_uris() const; // repeated .pg_query.Node ns_names = 2 [json_name = "ns_names"]; int ns_names_size() const; private: int _internal_ns_names_size() const; public: void clear_ns_names(); ::pg_query::Node* mutable_ns_names(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_ns_names(); private: const ::pg_query::Node& _internal_ns_names(int index) const; ::pg_query::Node* _internal_add_ns_names(); public: const ::pg_query::Node& ns_names(int index) const; ::pg_query::Node* add_ns_names(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ns_names() const; // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; int colnames_size() const; private: int _internal_colnames_size() const; public: void clear_colnames(); ::pg_query::Node* mutable_colnames(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_colnames(); private: const ::pg_query::Node& _internal_colnames(int index) const; ::pg_query::Node* _internal_add_colnames(); public: const ::pg_query::Node& colnames(int index) const; ::pg_query::Node* add_colnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& colnames() const; // repeated .pg_query.Node coltypes = 6 [json_name = "coltypes"]; int coltypes_size() const; private: int _internal_coltypes_size() const; public: void clear_coltypes(); ::pg_query::Node* mutable_coltypes(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_coltypes(); private: const ::pg_query::Node& _internal_coltypes(int index) const; ::pg_query::Node* _internal_add_coltypes(); public: const ::pg_query::Node& coltypes(int index) const; ::pg_query::Node* add_coltypes(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& coltypes() const; // repeated .pg_query.Node coltypmods = 7 [json_name = "coltypmods"]; int coltypmods_size() const; private: int _internal_coltypmods_size() const; public: void clear_coltypmods(); ::pg_query::Node* mutable_coltypmods(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_coltypmods(); private: const ::pg_query::Node& _internal_coltypmods(int index) const; ::pg_query::Node* _internal_add_coltypmods(); public: const ::pg_query::Node& coltypmods(int index) const; ::pg_query::Node* add_coltypmods(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& coltypmods() const; // repeated .pg_query.Node colcollations = 8 [json_name = "colcollations"]; int colcollations_size() const; private: int _internal_colcollations_size() const; public: void clear_colcollations(); ::pg_query::Node* mutable_colcollations(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_colcollations(); private: const ::pg_query::Node& _internal_colcollations(int index) const; ::pg_query::Node* _internal_add_colcollations(); public: const ::pg_query::Node& colcollations(int index) const; ::pg_query::Node* add_colcollations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& colcollations() const; // repeated .pg_query.Node colexprs = 9 [json_name = "colexprs"]; int colexprs_size() const; private: int _internal_colexprs_size() const; public: void clear_colexprs(); ::pg_query::Node* mutable_colexprs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_colexprs(); private: const ::pg_query::Node& _internal_colexprs(int index) const; ::pg_query::Node* _internal_add_colexprs(); public: const ::pg_query::Node& colexprs(int index) const; ::pg_query::Node* add_colexprs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& colexprs() const; // repeated .pg_query.Node coldefexprs = 10 [json_name = "coldefexprs"]; int coldefexprs_size() const; private: int _internal_coldefexprs_size() const; public: void clear_coldefexprs(); ::pg_query::Node* mutable_coldefexprs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_coldefexprs(); private: const ::pg_query::Node& _internal_coldefexprs(int index) const; ::pg_query::Node* _internal_add_coldefexprs(); public: const ::pg_query::Node& coldefexprs(int index) const; ::pg_query::Node* add_coldefexprs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& coldefexprs() const; // repeated uint64 notnulls = 11 [json_name = "notnulls"]; int notnulls_size() const; private: int _internal_notnulls_size() const; public: void clear_notnulls(); private: uint64_t _internal_notnulls(int index) const; const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& _internal_notnulls() const; void _internal_add_notnulls(uint64_t value); ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* _internal_mutable_notnulls(); public: uint64_t notnulls(int index) const; void set_notnulls(int index, uint64_t value); void add_notnulls(uint64_t value); const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& notnulls() const; ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* mutable_notnulls(); // .pg_query.Node docexpr = 3 [json_name = "docexpr"]; bool has_docexpr() const; private: bool _internal_has_docexpr() const; public: void clear_docexpr(); const ::pg_query::Node& docexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_docexpr(); ::pg_query::Node* mutable_docexpr(); void set_allocated_docexpr(::pg_query::Node* docexpr); private: const ::pg_query::Node& _internal_docexpr() const; ::pg_query::Node* _internal_mutable_docexpr(); public: void unsafe_arena_set_allocated_docexpr( ::pg_query::Node* docexpr); ::pg_query::Node* unsafe_arena_release_docexpr(); // .pg_query.Node rowexpr = 4 [json_name = "rowexpr"]; bool has_rowexpr() const; private: bool _internal_has_rowexpr() const; public: void clear_rowexpr(); const ::pg_query::Node& rowexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_rowexpr(); ::pg_query::Node* mutable_rowexpr(); void set_allocated_rowexpr(::pg_query::Node* rowexpr); private: const ::pg_query::Node& _internal_rowexpr() const; ::pg_query::Node* _internal_mutable_rowexpr(); public: void unsafe_arena_set_allocated_rowexpr( ::pg_query::Node* rowexpr); ::pg_query::Node* unsafe_arena_release_rowexpr(); // int32 ordinalitycol = 12 [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 = 13 [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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ns_uris_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ns_names_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colnames_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coltypes_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coltypmods_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colcollations_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colexprs_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coldefexprs_; ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t > notnulls_; mutable std::atomic _notnulls_cached_byte_size_; ::pg_query::Node* docexpr_; ::pg_query::Node* rowexpr_; int32_t ordinalitycol_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Var final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Var) */ { public: inline Var() : Var(nullptr) {} ~Var() override; explicit PROTOBUF_CONSTEXPR Var(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); Var(const Var& from); Var(Var&& from) noexcept : Var() { *this = ::std::move(from); } inline Var& operator=(const Var& from) { CopyFrom(from); return *this; } inline Var& operator=(Var&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 15; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Var* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Var* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const Var& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const Var& from) { Var::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Var* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Var"; } protected: explicit Var(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kVarnoFieldNumber = 2, kVarattnoFieldNumber = 3, kVartypeFieldNumber = 4, kVartypmodFieldNumber = 5, kVarcollidFieldNumber = 6, kVarlevelsupFieldNumber = 7, kVarnosynFieldNumber = 8, kVarattnosynFieldNumber = 9, kLocationFieldNumber = 10, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // 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 = 7 [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: // uint32 varnosyn = 8 [json_name = "varnosyn"]; void clear_varnosyn(); uint32_t varnosyn() const; void set_varnosyn(uint32_t value); private: uint32_t _internal_varnosyn() const; void _internal_set_varnosyn(uint32_t value); public: // int32 varattnosyn = 9 [json_name = "varattnosyn"]; void clear_varattnosyn(); int32_t varattnosyn() const; void set_varattnosyn(int32_t value); private: int32_t _internal_varattnosyn() const; void _internal_set_varattnosyn(int32_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.Var) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* xpr_; int32_t varno_; int32_t varattno_; uint32_t vartype_; int32_t vartypmod_; uint32_t varcollid_; uint32_t varlevelsup_; uint32_t varnosyn_; int32_t varattnosyn_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Param final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Param) */ { public: inline Param() : Param(nullptr) {} ~Param() override; explicit PROTOBUF_CONSTEXPR Param(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); Param(const Param& from); Param(Param&& from) noexcept : Param() { *this = ::std::move(from); } inline Param& operator=(const Param& from) { CopyFrom(from); return *this; } inline Param& operator=(Param&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 16; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Param* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Param* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const Param& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const Param& from) { Param::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Param* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Param"; } protected: explicit Param(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.ParamKind paramkind = 2 [json_name = "paramkind"]; void clear_paramkind(); ::pg_query::ParamKind paramkind() const; void set_paramkind(::pg_query::ParamKind value); private: ::pg_query::ParamKind _internal_paramkind() const; void _internal_set_paramkind(::pg_query::ParamKind value); public: // int32 paramid = 3 [json_name = "paramid"]; void clear_paramid(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* xpr_; int paramkind_; int32_t paramid_; uint32_t paramtype_; int32_t paramtypmod_; uint32_t paramcollid_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Aggref final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Aggref) */ { public: inline Aggref() : Aggref(nullptr) {} ~Aggref() override; explicit PROTOBUF_CONSTEXPR Aggref(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); Aggref(const Aggref& from); Aggref(Aggref&& from) noexcept : Aggref() { *this = ::std::move(from); } inline Aggref& operator=(const Aggref& from) { CopyFrom(from); return *this; } inline Aggref& operator=(Aggref&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 17; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Aggref* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Aggref* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const Aggref& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const Aggref& from) { Aggref::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Aggref* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Aggref"; } protected: explicit Aggref(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kAggargtypesFieldNumber = 7, kAggdirectargsFieldNumber = 8, kArgsFieldNumber = 9, kAggorderFieldNumber = 10, kAggdistinctFieldNumber = 11, kAggkindFieldNumber = 15, kXprFieldNumber = 1, kAggfilterFieldNumber = 12, kAggfnoidFieldNumber = 2, kAggtypeFieldNumber = 3, kAggcollidFieldNumber = 4, kInputcollidFieldNumber = 5, kAggtranstypeFieldNumber = 6, kAggstarFieldNumber = 13, kAggvariadicFieldNumber = 14, kAgglevelsupFieldNumber = 16, kAggsplitFieldNumber = 17, kAggnoFieldNumber = 18, kAggtransnoFieldNumber = 19, kLocationFieldNumber = 20, }; // repeated .pg_query.Node aggargtypes = 7 [json_name = "aggargtypes"]; int aggargtypes_size() const; private: int _internal_aggargtypes_size() const; public: void clear_aggargtypes(); ::pg_query::Node* mutable_aggargtypes(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_aggargtypes(); private: const ::pg_query::Node& _internal_aggargtypes(int index) const; ::pg_query::Node* _internal_add_aggargtypes(); public: const ::pg_query::Node& aggargtypes(int index) const; ::pg_query::Node* add_aggargtypes(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& aggargtypes() const; // repeated .pg_query.Node aggdirectargs = 8 [json_name = "aggdirectargs"]; int aggdirectargs_size() const; private: int _internal_aggdirectargs_size() const; public: void clear_aggdirectargs(); ::pg_query::Node* mutable_aggdirectargs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_aggdirectargs(); private: const ::pg_query::Node& _internal_aggdirectargs(int index) const; ::pg_query::Node* _internal_add_aggdirectargs(); public: const ::pg_query::Node& aggdirectargs(int index) const; ::pg_query::Node* add_aggdirectargs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& aggdirectargs() const; // repeated .pg_query.Node args = 9 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // repeated .pg_query.Node aggorder = 10 [json_name = "aggorder"]; int aggorder_size() const; private: int _internal_aggorder_size() const; public: void clear_aggorder(); ::pg_query::Node* mutable_aggorder(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_aggorder(); private: const ::pg_query::Node& _internal_aggorder(int index) const; ::pg_query::Node* _internal_add_aggorder(); public: const ::pg_query::Node& aggorder(int index) const; ::pg_query::Node* add_aggorder(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& aggorder() const; // repeated .pg_query.Node aggdistinct = 11 [json_name = "aggdistinct"]; int aggdistinct_size() const; private: int _internal_aggdistinct_size() const; public: void clear_aggdistinct(); ::pg_query::Node* mutable_aggdistinct(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_aggdistinct(); private: const ::pg_query::Node& _internal_aggdistinct(int index) const; ::pg_query::Node* _internal_add_aggdistinct(); public: const ::pg_query::Node& aggdistinct(int index) const; ::pg_query::Node* add_aggdistinct(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& aggdistinct() const; // string aggkind = 15 [json_name = "aggkind"]; void clear_aggkind(); const std::string& aggkind() const; template void set_aggkind(ArgT0&& arg0, ArgT... args); std::string* mutable_aggkind(); PROTOBUF_NODISCARD std::string* release_aggkind(); void set_allocated_aggkind(std::string* aggkind); 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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node aggfilter = 12 [json_name = "aggfilter"]; bool has_aggfilter() const; private: bool _internal_has_aggfilter() const; public: void clear_aggfilter(); const ::pg_query::Node& aggfilter() const; PROTOBUF_NODISCARD ::pg_query::Node* release_aggfilter(); ::pg_query::Node* mutable_aggfilter(); void set_allocated_aggfilter(::pg_query::Node* aggfilter); private: const ::pg_query::Node& _internal_aggfilter() const; ::pg_query::Node* _internal_mutable_aggfilter(); public: void unsafe_arena_set_allocated_aggfilter( ::pg_query::Node* aggfilter); ::pg_query::Node* unsafe_arena_release_aggfilter(); // uint32 aggfnoid = 2 [json_name = "aggfnoid"]; void clear_aggfnoid(); 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: // uint32 aggtranstype = 6 [json_name = "aggtranstype"]; void clear_aggtranstype(); uint32_t aggtranstype() const; void set_aggtranstype(uint32_t value); private: uint32_t _internal_aggtranstype() const; void _internal_set_aggtranstype(uint32_t value); public: // bool aggstar = 13 [json_name = "aggstar"]; void clear_aggstar(); bool aggstar() const; void set_aggstar(bool value); private: bool _internal_aggstar() const; void _internal_set_aggstar(bool value); public: // bool aggvariadic = 14 [json_name = "aggvariadic"]; void clear_aggvariadic(); bool aggvariadic() const; void set_aggvariadic(bool value); private: bool _internal_aggvariadic() const; void _internal_set_aggvariadic(bool value); public: // uint32 agglevelsup = 16 [json_name = "agglevelsup"]; void clear_agglevelsup(); 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 = 17 [json_name = "aggsplit"]; void clear_aggsplit(); ::pg_query::AggSplit aggsplit() const; void set_aggsplit(::pg_query::AggSplit value); private: ::pg_query::AggSplit _internal_aggsplit() const; void _internal_set_aggsplit(::pg_query::AggSplit value); public: // int32 aggno = 18 [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 = 19 [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 = 20 [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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aggargtypes_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aggdirectargs_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aggorder_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aggdistinct_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr aggkind_; ::pg_query::Node* xpr_; ::pg_query::Node* aggfilter_; uint32_t aggfnoid_; uint32_t aggtype_; uint32_t aggcollid_; uint32_t inputcollid_; uint32_t aggtranstype_; bool aggstar_; bool aggvariadic_; uint32_t agglevelsup_; int aggsplit_; int32_t aggno_; int32_t aggtransno_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class GroupingFunc final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.GroupingFunc) */ { public: inline GroupingFunc() : GroupingFunc(nullptr) {} ~GroupingFunc() override; explicit PROTOBUF_CONSTEXPR GroupingFunc(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); GroupingFunc(const GroupingFunc& from); GroupingFunc(GroupingFunc&& from) noexcept : GroupingFunc() { *this = ::std::move(from); } inline GroupingFunc& operator=(const GroupingFunc& from) { CopyFrom(from); return *this; } inline GroupingFunc& operator=(GroupingFunc&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 18; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(GroupingFunc* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- GroupingFunc* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const GroupingFunc& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const GroupingFunc& from) { GroupingFunc::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(GroupingFunc* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.GroupingFunc"; } protected: explicit GroupingFunc(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 2, kRefsFieldNumber = 3, kColsFieldNumber = 4, kXprFieldNumber = 1, kAgglevelsupFieldNumber = 5, kLocationFieldNumber = 6, }; // repeated .pg_query.Node args = 2 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // repeated .pg_query.Node refs = 3 [json_name = "refs"]; int refs_size() const; private: int _internal_refs_size() const; public: void clear_refs(); ::pg_query::Node* mutable_refs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_refs(); private: const ::pg_query::Node& _internal_refs(int index) const; ::pg_query::Node* _internal_add_refs(); public: const ::pg_query::Node& refs(int index) const; ::pg_query::Node* add_refs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& refs() const; // repeated .pg_query.Node cols = 4 [json_name = "cols"]; int cols_size() const; private: int _internal_cols_size() const; public: void clear_cols(); ::pg_query::Node* mutable_cols(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_cols(); private: const ::pg_query::Node& _internal_cols(int index) const; ::pg_query::Node* _internal_add_cols(); public: const ::pg_query::Node& cols(int index) const; ::pg_query::Node* add_cols(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& cols() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 agglevelsup = 5 [json_name = "agglevelsup"]; void clear_agglevelsup(); 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 = 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.GroupingFunc) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > refs_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cols_; ::pg_query::Node* xpr_; uint32_t agglevelsup_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class WindowFunc final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.WindowFunc) */ { public: inline WindowFunc() : WindowFunc(nullptr) {} ~WindowFunc() override; explicit PROTOBUF_CONSTEXPR WindowFunc(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); WindowFunc(const WindowFunc& from); WindowFunc(WindowFunc&& from) noexcept : WindowFunc() { *this = ::std::move(from); } inline WindowFunc& operator=(const WindowFunc& from) { CopyFrom(from); return *this; } inline WindowFunc& operator=(WindowFunc&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 19; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(WindowFunc* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- WindowFunc* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const WindowFunc& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const WindowFunc& from) { WindowFunc::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(WindowFunc* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.WindowFunc"; } protected: explicit WindowFunc(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 6, kXprFieldNumber = 1, kAggfilterFieldNumber = 7, kWinfnoidFieldNumber = 2, kWintypeFieldNumber = 3, kWincollidFieldNumber = 4, kInputcollidFieldNumber = 5, kWinrefFieldNumber = 8, kWinstarFieldNumber = 9, kWinaggFieldNumber = 10, kLocationFieldNumber = 11, }; // repeated .pg_query.Node args = 6 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node aggfilter = 7 [json_name = "aggfilter"]; bool has_aggfilter() const; private: bool _internal_has_aggfilter() const; public: void clear_aggfilter(); const ::pg_query::Node& aggfilter() const; PROTOBUF_NODISCARD ::pg_query::Node* release_aggfilter(); ::pg_query::Node* mutable_aggfilter(); void set_allocated_aggfilter(::pg_query::Node* aggfilter); private: const ::pg_query::Node& _internal_aggfilter() const; ::pg_query::Node* _internal_mutable_aggfilter(); public: void unsafe_arena_set_allocated_aggfilter( ::pg_query::Node* aggfilter); ::pg_query::Node* unsafe_arena_release_aggfilter(); // uint32 winfnoid = 2 [json_name = "winfnoid"]; void clear_winfnoid(); 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 = 8 [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 = 9 [json_name = "winstar"]; void clear_winstar(); bool winstar() const; void set_winstar(bool value); private: bool _internal_winstar() const; void _internal_set_winstar(bool value); public: // bool winagg = 10 [json_name = "winagg"]; void clear_winagg(); bool winagg() const; void set_winagg(bool value); private: bool _internal_winagg() const; void _internal_set_winagg(bool value); public: // int32 location = 11 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::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_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SubscriptingRef final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SubscriptingRef) */ { public: inline SubscriptingRef() : SubscriptingRef(nullptr) {} ~SubscriptingRef() override; explicit PROTOBUF_CONSTEXPR SubscriptingRef(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); SubscriptingRef(const SubscriptingRef& from); SubscriptingRef(SubscriptingRef&& from) noexcept : SubscriptingRef() { *this = ::std::move(from); } inline SubscriptingRef& operator=(const SubscriptingRef& from) { CopyFrom(from); return *this; } inline SubscriptingRef& operator=(SubscriptingRef&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 20; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SubscriptingRef* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SubscriptingRef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const SubscriptingRef& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const SubscriptingRef& from) { SubscriptingRef::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SubscriptingRef* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SubscriptingRef"; } protected: explicit SubscriptingRef(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_refupperindexpr(); private: const ::pg_query::Node& _internal_refupperindexpr(int index) const; ::pg_query::Node* _internal_add_refupperindexpr(); public: const ::pg_query::Node& refupperindexpr(int index) const; ::pg_query::Node* add_refupperindexpr(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& refupperindexpr() const; // repeated .pg_query.Node reflowerindexpr = 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_reflowerindexpr(); private: const ::pg_query::Node& _internal_reflowerindexpr(int index) const; ::pg_query::Node* _internal_add_reflowerindexpr(); public: const ::pg_query::Node& reflowerindexpr(int index) const; ::pg_query::Node* add_reflowerindexpr(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& reflowerindexpr() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node refexpr = 9 [json_name = "refexpr"]; bool has_refexpr() const; private: bool _internal_has_refexpr() const; public: 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* refexpr); private: const ::pg_query::Node& _internal_refexpr() const; ::pg_query::Node* _internal_mutable_refexpr(); public: void unsafe_arena_set_allocated_refexpr( ::pg_query::Node* refexpr); ::pg_query::Node* unsafe_arena_release_refexpr(); // .pg_query.Node refassgnexpr = 10 [json_name = "refassgnexpr"]; bool has_refassgnexpr() const; private: bool _internal_has_refassgnexpr() const; public: 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* refassgnexpr); private: const ::pg_query::Node& _internal_refassgnexpr() const; ::pg_query::Node* _internal_mutable_refassgnexpr(); public: void unsafe_arena_set_allocated_refassgnexpr( ::pg_query::Node* refassgnexpr); ::pg_query::Node* unsafe_arena_release_refassgnexpr(); // uint32 refcontainertype = 2 [json_name = "refcontainertype"]; void clear_refcontainertype(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > refupperindexpr_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > reflowerindexpr_; ::pg_query::Node* xpr_; ::pg_query::Node* refexpr_; ::pg_query::Node* refassgnexpr_; uint32_t refcontainertype_; uint32_t refelemtype_; uint32_t refrestype_; int32_t reftypmod_; uint32_t refcollid_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class FuncExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FuncExpr) */ { public: inline FuncExpr() : FuncExpr(nullptr) {} ~FuncExpr() override; explicit PROTOBUF_CONSTEXPR FuncExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); FuncExpr(const FuncExpr& from); FuncExpr(FuncExpr&& from) noexcept : FuncExpr() { *this = ::std::move(from); } inline FuncExpr& operator=(const FuncExpr& from) { CopyFrom(from); return *this; } inline FuncExpr& operator=(FuncExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 21; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FuncExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- FuncExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const FuncExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const FuncExpr& from) { FuncExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(FuncExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.FuncExpr"; } protected: explicit FuncExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 funcid = 2 [json_name = "funcid"]; void clear_funcid(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::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_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class NamedArgExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.NamedArgExpr) */ { public: inline NamedArgExpr() : NamedArgExpr(nullptr) {} ~NamedArgExpr() override; explicit PROTOBUF_CONSTEXPR NamedArgExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); NamedArgExpr(const NamedArgExpr& from); NamedArgExpr(NamedArgExpr&& from) noexcept : NamedArgExpr() { *this = ::std::move(from); } inline NamedArgExpr& operator=(const NamedArgExpr& from) { CopyFrom(from); return *this; } inline NamedArgExpr& operator=(NamedArgExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 22; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(NamedArgExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- NamedArgExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const NamedArgExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const NamedArgExpr& from) { NamedArgExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(NamedArgExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.NamedArgExpr"; } protected: explicit NamedArgExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // int32 argnumber = 4 [json_name = "argnumber"]; void clear_argnumber(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; int32_t argnumber_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class OpExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.OpExpr) */ { public: inline OpExpr() : OpExpr(nullptr) {} ~OpExpr() override; explicit PROTOBUF_CONSTEXPR OpExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); OpExpr(const OpExpr& from); OpExpr(OpExpr&& from) noexcept : OpExpr() { *this = ::std::move(from); } inline OpExpr& operator=(const OpExpr& from) { CopyFrom(from); return *this; } inline OpExpr& operator=(OpExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 23; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(OpExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- OpExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const OpExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const OpExpr& from) { OpExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(OpExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.OpExpr"; } protected: explicit OpExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 8, kXprFieldNumber = 1, kOpnoFieldNumber = 2, kOpfuncidFieldNumber = 3, kOpresulttypeFieldNumber = 4, kOpretsetFieldNumber = 5, kOpcollidFieldNumber = 6, kInputcollidFieldNumber = 7, kLocationFieldNumber = 9, }; // repeated .pg_query.Node args = 8 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 opno = 2 [json_name = "opno"]; void clear_opno(); 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 opfuncid = 3 [json_name = "opfuncid"]; void clear_opfuncid(); uint32_t opfuncid() const; void set_opfuncid(uint32_t value); private: uint32_t _internal_opfuncid() const; void _internal_set_opfuncid(uint32_t value); public: // uint32 opresulttype = 4 [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 = 5 [json_name = "opretset"]; void clear_opretset(); bool opretset() const; void set_opretset(bool value); private: bool _internal_opretset() const; void _internal_set_opretset(bool value); public: // uint32 opcollid = 6 [json_name = "opcollid"]; void clear_opcollid(); 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 = 7 [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 = 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.OpExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; uint32_t opno_; uint32_t opfuncid_; uint32_t opresulttype_; bool opretset_; uint32_t opcollid_; uint32_t inputcollid_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DistinctExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DistinctExpr) */ { public: inline DistinctExpr() : DistinctExpr(nullptr) {} ~DistinctExpr() override; explicit PROTOBUF_CONSTEXPR DistinctExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); DistinctExpr(const DistinctExpr& from); DistinctExpr(DistinctExpr&& from) noexcept : DistinctExpr() { *this = ::std::move(from); } inline DistinctExpr& operator=(const DistinctExpr& from) { CopyFrom(from); return *this; } inline DistinctExpr& operator=(DistinctExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 24; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DistinctExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DistinctExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const DistinctExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const DistinctExpr& from) { DistinctExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DistinctExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DistinctExpr"; } protected: explicit DistinctExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 8, kXprFieldNumber = 1, kOpnoFieldNumber = 2, kOpfuncidFieldNumber = 3, kOpresulttypeFieldNumber = 4, kOpretsetFieldNumber = 5, kOpcollidFieldNumber = 6, kInputcollidFieldNumber = 7, kLocationFieldNumber = 9, }; // repeated .pg_query.Node args = 8 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 opno = 2 [json_name = "opno"]; void clear_opno(); 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 opfuncid = 3 [json_name = "opfuncid"]; void clear_opfuncid(); uint32_t opfuncid() const; void set_opfuncid(uint32_t value); private: uint32_t _internal_opfuncid() const; void _internal_set_opfuncid(uint32_t value); public: // uint32 opresulttype = 4 [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 = 5 [json_name = "opretset"]; void clear_opretset(); bool opretset() const; void set_opretset(bool value); private: bool _internal_opretset() const; void _internal_set_opretset(bool value); public: // uint32 opcollid = 6 [json_name = "opcollid"]; void clear_opcollid(); 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 = 7 [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 = 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.DistinctExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; uint32_t opno_; uint32_t opfuncid_; uint32_t opresulttype_; bool opretset_; uint32_t opcollid_; uint32_t inputcollid_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class NullIfExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.NullIfExpr) */ { public: inline NullIfExpr() : NullIfExpr(nullptr) {} ~NullIfExpr() override; explicit PROTOBUF_CONSTEXPR NullIfExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); NullIfExpr(const NullIfExpr& from); NullIfExpr(NullIfExpr&& from) noexcept : NullIfExpr() { *this = ::std::move(from); } inline NullIfExpr& operator=(const NullIfExpr& from) { CopyFrom(from); return *this; } inline NullIfExpr& operator=(NullIfExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 25; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(NullIfExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- NullIfExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const NullIfExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const NullIfExpr& from) { NullIfExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(NullIfExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.NullIfExpr"; } protected: explicit NullIfExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 8, kXprFieldNumber = 1, kOpnoFieldNumber = 2, kOpfuncidFieldNumber = 3, kOpresulttypeFieldNumber = 4, kOpretsetFieldNumber = 5, kOpcollidFieldNumber = 6, kInputcollidFieldNumber = 7, kLocationFieldNumber = 9, }; // repeated .pg_query.Node args = 8 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 opno = 2 [json_name = "opno"]; void clear_opno(); 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 opfuncid = 3 [json_name = "opfuncid"]; void clear_opfuncid(); uint32_t opfuncid() const; void set_opfuncid(uint32_t value); private: uint32_t _internal_opfuncid() const; void _internal_set_opfuncid(uint32_t value); public: // uint32 opresulttype = 4 [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 = 5 [json_name = "opretset"]; void clear_opretset(); bool opretset() const; void set_opretset(bool value); private: bool _internal_opretset() const; void _internal_set_opretset(bool value); public: // uint32 opcollid = 6 [json_name = "opcollid"]; void clear_opcollid(); 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 = 7 [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 = 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.NullIfExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; uint32_t opno_; uint32_t opfuncid_; uint32_t opresulttype_; bool opretset_; uint32_t opcollid_; uint32_t inputcollid_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ScalarArrayOpExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ScalarArrayOpExpr) */ { public: inline ScalarArrayOpExpr() : ScalarArrayOpExpr(nullptr) {} ~ScalarArrayOpExpr() override; explicit PROTOBUF_CONSTEXPR ScalarArrayOpExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ScalarArrayOpExpr(const ScalarArrayOpExpr& from); ScalarArrayOpExpr(ScalarArrayOpExpr&& from) noexcept : ScalarArrayOpExpr() { *this = ::std::move(from); } inline ScalarArrayOpExpr& operator=(const ScalarArrayOpExpr& from) { CopyFrom(from); return *this; } inline ScalarArrayOpExpr& operator=(ScalarArrayOpExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 26; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ScalarArrayOpExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ScalarArrayOpExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ScalarArrayOpExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ScalarArrayOpExpr& from) { ScalarArrayOpExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ScalarArrayOpExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ScalarArrayOpExpr"; } protected: explicit ScalarArrayOpExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 8, kXprFieldNumber = 1, kOpnoFieldNumber = 2, kOpfuncidFieldNumber = 3, kHashfuncidFieldNumber = 4, kNegfuncidFieldNumber = 5, kUseOrFieldNumber = 6, kInputcollidFieldNumber = 7, kLocationFieldNumber = 9, }; // repeated .pg_query.Node args = 8 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 opno = 2 [json_name = "opno"]; void clear_opno(); 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 opfuncid = 3 [json_name = "opfuncid"]; void clear_opfuncid(); uint32_t opfuncid() const; void set_opfuncid(uint32_t value); private: uint32_t _internal_opfuncid() const; void _internal_set_opfuncid(uint32_t value); public: // uint32 hashfuncid = 4 [json_name = "hashfuncid"]; void clear_hashfuncid(); uint32_t hashfuncid() const; void set_hashfuncid(uint32_t value); private: uint32_t _internal_hashfuncid() const; void _internal_set_hashfuncid(uint32_t value); public: // uint32 negfuncid = 5 [json_name = "negfuncid"]; void clear_negfuncid(); uint32_t negfuncid() const; void set_negfuncid(uint32_t value); private: uint32_t _internal_negfuncid() const; void _internal_set_negfuncid(uint32_t value); public: // bool use_or = 6 [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 = 7 [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 = 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.ScalarArrayOpExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; uint32_t opno_; uint32_t opfuncid_; uint32_t hashfuncid_; uint32_t negfuncid_; bool use_or_; uint32_t inputcollid_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class BoolExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.BoolExpr) */ { public: inline BoolExpr() : BoolExpr(nullptr) {} ~BoolExpr() override; explicit PROTOBUF_CONSTEXPR BoolExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); BoolExpr(const BoolExpr& from); BoolExpr(BoolExpr&& from) noexcept : BoolExpr() { *this = ::std::move(from); } inline BoolExpr& operator=(const BoolExpr& from) { CopyFrom(from); return *this; } inline BoolExpr& operator=(BoolExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 27; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(BoolExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- BoolExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const BoolExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const BoolExpr& from) { BoolExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(BoolExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.BoolExpr"; } protected: explicit BoolExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.BoolExprType boolop = 2 [json_name = "boolop"]; void clear_boolop(); ::pg_query::BoolExprType boolop() const; void set_boolop(::pg_query::BoolExprType value); private: ::pg_query::BoolExprType _internal_boolop() const; void _internal_set_boolop(::pg_query::BoolExprType value); public: // int32 location = 4 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; int boolop_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SubLink final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SubLink) */ { public: inline SubLink() : SubLink(nullptr) {} ~SubLink() override; explicit PROTOBUF_CONSTEXPR SubLink(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); SubLink(const SubLink& from); SubLink(SubLink&& from) noexcept : SubLink() { *this = ::std::move(from); } inline SubLink& operator=(const SubLink& from) { CopyFrom(from); return *this; } inline SubLink& operator=(SubLink&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 28; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SubLink* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SubLink* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const SubLink& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const SubLink& from) { SubLink::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SubLink* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SubLink"; } protected: explicit SubLink(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_oper_name(); private: const ::pg_query::Node& _internal_oper_name(int index) const; ::pg_query::Node* _internal_add_oper_name(); public: const ::pg_query::Node& oper_name(int index) const; ::pg_query::Node* add_oper_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& oper_name() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node testexpr = 4 [json_name = "testexpr"]; bool has_testexpr() const; private: bool _internal_has_testexpr() const; public: void clear_testexpr(); const ::pg_query::Node& testexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_testexpr(); ::pg_query::Node* mutable_testexpr(); void set_allocated_testexpr(::pg_query::Node* testexpr); private: const ::pg_query::Node& _internal_testexpr() const; ::pg_query::Node* _internal_mutable_testexpr(); public: void unsafe_arena_set_allocated_testexpr( ::pg_query::Node* testexpr); ::pg_query::Node* unsafe_arena_release_testexpr(); // .pg_query.Node subselect = 6 [json_name = "subselect"]; bool has_subselect() const; private: bool _internal_has_subselect() const; public: void clear_subselect(); const ::pg_query::Node& subselect() const; PROTOBUF_NODISCARD ::pg_query::Node* release_subselect(); ::pg_query::Node* mutable_subselect(); void set_allocated_subselect(::pg_query::Node* subselect); private: const ::pg_query::Node& _internal_subselect() const; ::pg_query::Node* _internal_mutable_subselect(); public: void unsafe_arena_set_allocated_subselect( ::pg_query::Node* subselect); ::pg_query::Node* unsafe_arena_release_subselect(); // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; void clear_sub_link_type(); ::pg_query::SubLinkType sub_link_type() const; void set_sub_link_type(::pg_query::SubLinkType value); private: ::pg_query::SubLinkType _internal_sub_link_type() const; void _internal_set_sub_link_type(::pg_query::SubLinkType value); public: // int32 sub_link_id = 3 [json_name = "subLinkId"]; void clear_sub_link_id(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > oper_name_; ::pg_query::Node* xpr_; ::pg_query::Node* testexpr_; ::pg_query::Node* subselect_; int sub_link_type_; int32_t sub_link_id_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SubPlan final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SubPlan) */ { public: inline SubPlan() : SubPlan(nullptr) {} ~SubPlan() override; explicit PROTOBUF_CONSTEXPR SubPlan(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); SubPlan(const SubPlan& from); SubPlan(SubPlan&& from) noexcept : SubPlan() { *this = ::std::move(from); } inline SubPlan& operator=(const SubPlan& from) { CopyFrom(from); return *this; } inline SubPlan& operator=(SubPlan&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 29; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SubPlan* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SubPlan* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const SubPlan& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const SubPlan& from) { SubPlan::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SubPlan* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SubPlan"; } protected: explicit SubPlan(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_param_ids(); private: const ::pg_query::Node& _internal_param_ids(int index) const; ::pg_query::Node* _internal_add_param_ids(); public: const ::pg_query::Node& param_ids(int index) const; ::pg_query::Node* add_param_ids(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& param_ids() const; // repeated .pg_query.Node set_param = 13 [json_name = "setParam"]; int set_param_size() const; private: int _internal_set_param_size() const; public: void clear_set_param(); ::pg_query::Node* mutable_set_param(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_set_param(); private: const ::pg_query::Node& _internal_set_param(int index) const; ::pg_query::Node* _internal_add_set_param(); public: const ::pg_query::Node& set_param(int index) const; ::pg_query::Node* add_set_param(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& set_param() const; // repeated .pg_query.Node par_param = 14 [json_name = "parParam"]; int par_param_size() const; private: int _internal_par_param_size() const; public: void clear_par_param(); ::pg_query::Node* mutable_par_param(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_par_param(); private: const ::pg_query::Node& _internal_par_param(int index) const; ::pg_query::Node* _internal_add_par_param(); public: const ::pg_query::Node& par_param(int index) const; ::pg_query::Node* add_par_param(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& par_param() const; // repeated .pg_query.Node args = 15 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // string plan_name = 6 [json_name = "plan_name"]; void clear_plan_name(); const std::string& plan_name() const; template void set_plan_name(ArgT0&& arg0, ArgT... args); std::string* mutable_plan_name(); PROTOBUF_NODISCARD std::string* release_plan_name(); void set_allocated_plan_name(std::string* plan_name); 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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node testexpr = 3 [json_name = "testexpr"]; bool has_testexpr() const; private: bool _internal_has_testexpr() const; public: void clear_testexpr(); const ::pg_query::Node& testexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_testexpr(); ::pg_query::Node* mutable_testexpr(); void set_allocated_testexpr(::pg_query::Node* testexpr); private: const ::pg_query::Node& _internal_testexpr() const; ::pg_query::Node* _internal_mutable_testexpr(); public: void unsafe_arena_set_allocated_testexpr( ::pg_query::Node* testexpr); ::pg_query::Node* unsafe_arena_release_testexpr(); // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; void clear_sub_link_type(); ::pg_query::SubLinkType sub_link_type() const; void set_sub_link_type(::pg_query::SubLinkType value); private: ::pg_query::SubLinkType _internal_sub_link_type() const; void _internal_set_sub_link_type(::pg_query::SubLinkType value); public: // int32 plan_id = 5 [json_name = "plan_id"]; void clear_plan_id(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > param_ids_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > set_param_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > par_param_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr plan_name_; ::pg_query::Node* xpr_; ::pg_query::Node* testexpr_; int sub_link_type_; 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_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlternativeSubPlan final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlternativeSubPlan) */ { public: inline AlternativeSubPlan() : AlternativeSubPlan(nullptr) {} ~AlternativeSubPlan() override; explicit PROTOBUF_CONSTEXPR AlternativeSubPlan(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlternativeSubPlan(const AlternativeSubPlan& from); AlternativeSubPlan(AlternativeSubPlan&& from) noexcept : AlternativeSubPlan() { *this = ::std::move(from); } inline AlternativeSubPlan& operator=(const AlternativeSubPlan& from) { CopyFrom(from); return *this; } inline AlternativeSubPlan& operator=(AlternativeSubPlan&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 30; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlternativeSubPlan* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlternativeSubPlan* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlternativeSubPlan& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlternativeSubPlan& from) { AlternativeSubPlan::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlternativeSubPlan* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlternativeSubPlan"; } protected: explicit AlternativeSubPlan(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_subplans(); private: const ::pg_query::Node& _internal_subplans(int index) const; ::pg_query::Node* _internal_add_subplans(); public: const ::pg_query::Node& subplans(int index) const; ::pg_query::Node* add_subplans(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& subplans() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // @@protoc_insertion_point(class_scope:pg_query.AlternativeSubPlan) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > subplans_; ::pg_query::Node* xpr_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class FieldSelect final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FieldSelect) */ { public: inline FieldSelect() : FieldSelect(nullptr) {} ~FieldSelect() override; explicit PROTOBUF_CONSTEXPR FieldSelect(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); FieldSelect(const FieldSelect& from); FieldSelect(FieldSelect&& from) noexcept : FieldSelect() { *this = ::std::move(from); } inline FieldSelect& operator=(const FieldSelect& from) { CopyFrom(from); return *this; } inline FieldSelect& operator=(FieldSelect&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 31; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FieldSelect* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- FieldSelect* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const FieldSelect& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const FieldSelect& from) { FieldSelect::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(FieldSelect* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.FieldSelect"; } protected: explicit FieldSelect(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // int32 fieldnum = 3 [json_name = "fieldnum"]; void clear_fieldnum(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* xpr_; ::pg_query::Node* arg_; int32_t fieldnum_; uint32_t resulttype_; int32_t resulttypmod_; uint32_t resultcollid_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class FieldStore final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FieldStore) */ { public: inline FieldStore() : FieldStore(nullptr) {} ~FieldStore() override; explicit PROTOBUF_CONSTEXPR FieldStore(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); FieldStore(const FieldStore& from); FieldStore(FieldStore&& from) noexcept : FieldStore() { *this = ::std::move(from); } inline FieldStore& operator=(const FieldStore& from) { CopyFrom(from); return *this; } inline FieldStore& operator=(FieldStore&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 32; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FieldStore* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- FieldStore* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const FieldStore& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const FieldStore& from) { FieldStore::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(FieldStore* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.FieldStore"; } protected: explicit FieldStore(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_newvals(); private: const ::pg_query::Node& _internal_newvals(int index) const; ::pg_query::Node* _internal_add_newvals(); public: const ::pg_query::Node& newvals(int index) const; ::pg_query::Node* add_newvals(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& newvals() const; // repeated .pg_query.Node fieldnums = 4 [json_name = "fieldnums"]; int fieldnums_size() const; private: int _internal_fieldnums_size() const; public: void clear_fieldnums(); ::pg_query::Node* mutable_fieldnums(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_fieldnums(); private: const ::pg_query::Node& _internal_fieldnums(int index) const; ::pg_query::Node* _internal_add_fieldnums(); public: const ::pg_query::Node& fieldnums(int index) const; ::pg_query::Node* add_fieldnums(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& fieldnums() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // uint32 resulttype = 5 [json_name = "resulttype"]; void clear_resulttype(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > newvals_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > fieldnums_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; uint32_t resulttype_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RelabelType final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RelabelType) */ { public: inline RelabelType() : RelabelType(nullptr) {} ~RelabelType() override; explicit PROTOBUF_CONSTEXPR RelabelType(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RelabelType(const RelabelType& from); RelabelType(RelabelType&& from) noexcept : RelabelType() { *this = ::std::move(from); } inline RelabelType& operator=(const RelabelType& from) { CopyFrom(from); return *this; } inline RelabelType& operator=(RelabelType&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 33; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RelabelType* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RelabelType* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RelabelType& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RelabelType& from) { RelabelType::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RelabelType* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RelabelType"; } protected: explicit RelabelType(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // uint32 resulttype = 3 [json_name = "resulttype"]; void clear_resulttype(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* xpr_; ::pg_query::Node* arg_; uint32_t resulttype_; int32_t resulttypmod_; uint32_t resultcollid_; int relabelformat_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CoerceViaIO final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CoerceViaIO) */ { public: inline CoerceViaIO() : CoerceViaIO(nullptr) {} ~CoerceViaIO() override; explicit PROTOBUF_CONSTEXPR CoerceViaIO(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CoerceViaIO(const CoerceViaIO& from); CoerceViaIO(CoerceViaIO&& from) noexcept : CoerceViaIO() { *this = ::std::move(from); } inline CoerceViaIO& operator=(const CoerceViaIO& from) { CopyFrom(from); return *this; } inline CoerceViaIO& operator=(CoerceViaIO&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 34; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CoerceViaIO* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CoerceViaIO* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CoerceViaIO& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CoerceViaIO& from) { CoerceViaIO::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CoerceViaIO* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CoerceViaIO"; } protected: explicit CoerceViaIO(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // uint32 resulttype = 3 [json_name = "resulttype"]; void clear_resulttype(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* xpr_; ::pg_query::Node* arg_; uint32_t resulttype_; uint32_t resultcollid_; int coerceformat_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ArrayCoerceExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ArrayCoerceExpr) */ { public: inline ArrayCoerceExpr() : ArrayCoerceExpr(nullptr) {} ~ArrayCoerceExpr() override; explicit PROTOBUF_CONSTEXPR ArrayCoerceExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ArrayCoerceExpr(const ArrayCoerceExpr& from); ArrayCoerceExpr(ArrayCoerceExpr&& from) noexcept : ArrayCoerceExpr() { *this = ::std::move(from); } inline ArrayCoerceExpr& operator=(const ArrayCoerceExpr& from) { CopyFrom(from); return *this; } inline ArrayCoerceExpr& operator=(ArrayCoerceExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 35; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ArrayCoerceExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ArrayCoerceExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ArrayCoerceExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ArrayCoerceExpr& from) { ArrayCoerceExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ArrayCoerceExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ArrayCoerceExpr"; } protected: explicit ArrayCoerceExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // .pg_query.Node elemexpr = 3 [json_name = "elemexpr"]; bool has_elemexpr() const; private: bool _internal_has_elemexpr() const; public: void clear_elemexpr(); const ::pg_query::Node& elemexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_elemexpr(); ::pg_query::Node* mutable_elemexpr(); void set_allocated_elemexpr(::pg_query::Node* elemexpr); private: const ::pg_query::Node& _internal_elemexpr() const; ::pg_query::Node* _internal_mutable_elemexpr(); public: void unsafe_arena_set_allocated_elemexpr( ::pg_query::Node* elemexpr); ::pg_query::Node* unsafe_arena_release_elemexpr(); // uint32 resulttype = 4 [json_name = "resulttype"]; void clear_resulttype(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::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_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ConvertRowtypeExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ConvertRowtypeExpr) */ { public: inline ConvertRowtypeExpr() : ConvertRowtypeExpr(nullptr) {} ~ConvertRowtypeExpr() override; explicit PROTOBUF_CONSTEXPR ConvertRowtypeExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ConvertRowtypeExpr(const ConvertRowtypeExpr& from); ConvertRowtypeExpr(ConvertRowtypeExpr&& from) noexcept : ConvertRowtypeExpr() { *this = ::std::move(from); } inline ConvertRowtypeExpr& operator=(const ConvertRowtypeExpr& from) { CopyFrom(from); return *this; } inline ConvertRowtypeExpr& operator=(ConvertRowtypeExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 36; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ConvertRowtypeExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ConvertRowtypeExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ConvertRowtypeExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ConvertRowtypeExpr& from) { ConvertRowtypeExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ConvertRowtypeExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ConvertRowtypeExpr"; } protected: explicit ConvertRowtypeExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // uint32 resulttype = 3 [json_name = "resulttype"]; void clear_resulttype(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* xpr_; ::pg_query::Node* arg_; uint32_t resulttype_; int convertformat_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CollateExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CollateExpr) */ { public: inline CollateExpr() : CollateExpr(nullptr) {} ~CollateExpr() override; explicit PROTOBUF_CONSTEXPR CollateExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CollateExpr(const CollateExpr& from); CollateExpr(CollateExpr&& from) noexcept : CollateExpr() { *this = ::std::move(from); } inline CollateExpr& operator=(const CollateExpr& from) { CopyFrom(from); return *this; } inline CollateExpr& operator=(CollateExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 37; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CollateExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CollateExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CollateExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CollateExpr& from) { CollateExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CollateExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CollateExpr"; } protected: explicit CollateExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // uint32 coll_oid = 3 [json_name = "collOid"]; void clear_coll_oid(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* xpr_; ::pg_query::Node* arg_; uint32_t coll_oid_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CaseExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CaseExpr) */ { public: inline CaseExpr() : CaseExpr(nullptr) {} ~CaseExpr() override; explicit PROTOBUF_CONSTEXPR CaseExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CaseExpr(const CaseExpr& from); CaseExpr(CaseExpr&& from) noexcept : CaseExpr() { *this = ::std::move(from); } inline CaseExpr& operator=(const CaseExpr& from) { CopyFrom(from); return *this; } inline CaseExpr& operator=(CaseExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 38; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CaseExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CaseExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CaseExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CaseExpr& from) { CaseExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CaseExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CaseExpr"; } protected: explicit CaseExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 4 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // .pg_query.Node defresult = 6 [json_name = "defresult"]; bool has_defresult() const; private: bool _internal_has_defresult() const; public: void clear_defresult(); const ::pg_query::Node& defresult() const; PROTOBUF_NODISCARD ::pg_query::Node* release_defresult(); ::pg_query::Node* mutable_defresult(); void set_allocated_defresult(::pg_query::Node* defresult); private: const ::pg_query::Node& _internal_defresult() const; ::pg_query::Node* _internal_mutable_defresult(); public: void unsafe_arena_set_allocated_defresult( ::pg_query::Node* defresult); ::pg_query::Node* unsafe_arena_release_defresult(); // uint32 casetype = 2 [json_name = "casetype"]; void clear_casetype(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::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_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CaseWhen final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CaseWhen) */ { public: inline CaseWhen() : CaseWhen(nullptr) {} ~CaseWhen() override; explicit PROTOBUF_CONSTEXPR CaseWhen(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CaseWhen(const CaseWhen& from); CaseWhen(CaseWhen&& from) noexcept : CaseWhen() { *this = ::std::move(from); } inline CaseWhen& operator=(const CaseWhen& from) { CopyFrom(from); return *this; } inline CaseWhen& operator=(CaseWhen&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 39; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CaseWhen* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CaseWhen* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CaseWhen& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CaseWhen& from) { CaseWhen::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CaseWhen* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CaseWhen"; } protected: explicit CaseWhen(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node expr = 2 [json_name = "expr"]; bool has_expr() const; private: bool _internal_has_expr() const; public: void clear_expr(); const ::pg_query::Node& expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* expr); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: void unsafe_arena_set_allocated_expr( ::pg_query::Node* expr); ::pg_query::Node* unsafe_arena_release_expr(); // .pg_query.Node result = 3 [json_name = "result"]; bool has_result() const; private: bool _internal_has_result() const; public: void clear_result(); const ::pg_query::Node& result() const; PROTOBUF_NODISCARD ::pg_query::Node* release_result(); ::pg_query::Node* mutable_result(); void set_allocated_result(::pg_query::Node* result); private: const ::pg_query::Node& _internal_result() const; ::pg_query::Node* _internal_mutable_result(); public: void unsafe_arena_set_allocated_result( ::pg_query::Node* result); ::pg_query::Node* unsafe_arena_release_result(); // int32 location = 4 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* xpr_; ::pg_query::Node* expr_; ::pg_query::Node* result_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CaseTestExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CaseTestExpr) */ { public: inline CaseTestExpr() : CaseTestExpr(nullptr) {} ~CaseTestExpr() override; explicit PROTOBUF_CONSTEXPR CaseTestExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CaseTestExpr(const CaseTestExpr& from); CaseTestExpr(CaseTestExpr&& from) noexcept : CaseTestExpr() { *this = ::std::move(from); } inline CaseTestExpr& operator=(const CaseTestExpr& from) { CopyFrom(from); return *this; } inline CaseTestExpr& operator=(CaseTestExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 40; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CaseTestExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CaseTestExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CaseTestExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CaseTestExpr& from) { CaseTestExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CaseTestExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CaseTestExpr"; } protected: explicit CaseTestExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 type_id = 2 [json_name = "typeId"]; void clear_type_id(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* xpr_; uint32_t type_id_; int32_t type_mod_; uint32_t collation_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ArrayExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ArrayExpr) */ { public: inline ArrayExpr() : ArrayExpr(nullptr) {} ~ArrayExpr() override; explicit PROTOBUF_CONSTEXPR ArrayExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ArrayExpr(const ArrayExpr& from); ArrayExpr(ArrayExpr&& from) noexcept : ArrayExpr() { *this = ::std::move(from); } inline ArrayExpr& operator=(const ArrayExpr& from) { CopyFrom(from); return *this; } inline ArrayExpr& operator=(ArrayExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 41; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ArrayExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ArrayExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ArrayExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ArrayExpr& from) { ArrayExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ArrayExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ArrayExpr"; } protected: explicit ArrayExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_elements(); private: const ::pg_query::Node& _internal_elements(int index) const; ::pg_query::Node* _internal_add_elements(); public: const ::pg_query::Node& elements(int index) const; ::pg_query::Node* add_elements(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& elements() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 array_typeid = 2 [json_name = "array_typeid"]; void clear_array_typeid(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::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_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RowExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RowExpr) */ { public: inline RowExpr() : RowExpr(nullptr) {} ~RowExpr() override; explicit PROTOBUF_CONSTEXPR RowExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RowExpr(const RowExpr& from); RowExpr(RowExpr&& from) noexcept : RowExpr() { *this = ::std::move(from); } inline RowExpr& operator=(const RowExpr& from) { CopyFrom(from); return *this; } inline RowExpr& operator=(RowExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 42; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RowExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RowExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RowExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RowExpr& from) { RowExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RowExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RowExpr"; } protected: explicit RowExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; int colnames_size() const; private: int _internal_colnames_size() const; public: void clear_colnames(); ::pg_query::Node* mutable_colnames(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_colnames(); private: const ::pg_query::Node& _internal_colnames(int index) const; ::pg_query::Node* _internal_add_colnames(); public: const ::pg_query::Node& colnames(int index) const; ::pg_query::Node* add_colnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& colnames() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 row_typeid = 3 [json_name = "row_typeid"]; void clear_row_typeid(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colnames_; ::pg_query::Node* xpr_; uint32_t row_typeid_; int row_format_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RowCompareExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RowCompareExpr) */ { public: inline RowCompareExpr() : RowCompareExpr(nullptr) {} ~RowCompareExpr() override; explicit PROTOBUF_CONSTEXPR RowCompareExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RowCompareExpr(const RowCompareExpr& from); RowCompareExpr(RowCompareExpr&& from) noexcept : RowCompareExpr() { *this = ::std::move(from); } inline RowCompareExpr& operator=(const RowCompareExpr& from) { CopyFrom(from); return *this; } inline RowCompareExpr& operator=(RowCompareExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 43; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RowCompareExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RowCompareExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RowCompareExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RowCompareExpr& from) { RowCompareExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RowCompareExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RowCompareExpr"; } protected: explicit RowCompareExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opnos(); private: const ::pg_query::Node& _internal_opnos(int index) const; ::pg_query::Node* _internal_add_opnos(); public: const ::pg_query::Node& opnos(int index) const; ::pg_query::Node* add_opnos(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opnos() const; // repeated .pg_query.Node opfamilies = 4 [json_name = "opfamilies"]; int opfamilies_size() const; private: int _internal_opfamilies_size() const; public: void clear_opfamilies(); ::pg_query::Node* mutable_opfamilies(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opfamilies(); private: const ::pg_query::Node& _internal_opfamilies(int index) const; ::pg_query::Node* _internal_add_opfamilies(); public: const ::pg_query::Node& opfamilies(int index) const; ::pg_query::Node* add_opfamilies(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opfamilies() const; // repeated .pg_query.Node inputcollids = 5 [json_name = "inputcollids"]; int inputcollids_size() const; private: int _internal_inputcollids_size() const; public: void clear_inputcollids(); ::pg_query::Node* mutable_inputcollids(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_inputcollids(); private: const ::pg_query::Node& _internal_inputcollids(int index) const; ::pg_query::Node* _internal_add_inputcollids(); public: const ::pg_query::Node& inputcollids(int index) const; ::pg_query::Node* add_inputcollids(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& inputcollids() const; // repeated .pg_query.Node largs = 6 [json_name = "largs"]; int largs_size() const; private: int _internal_largs_size() const; public: void clear_largs(); ::pg_query::Node* mutable_largs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_largs(); private: const ::pg_query::Node& _internal_largs(int index) const; ::pg_query::Node* _internal_add_largs(); public: const ::pg_query::Node& largs(int index) const; ::pg_query::Node* add_largs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& largs() const; // repeated .pg_query.Node rargs = 7 [json_name = "rargs"]; int rargs_size() const; private: int _internal_rargs_size() const; public: void clear_rargs(); ::pg_query::Node* mutable_rargs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_rargs(); private: const ::pg_query::Node& _internal_rargs(int index) const; ::pg_query::Node* _internal_add_rargs(); public: const ::pg_query::Node& rargs(int index) const; ::pg_query::Node* add_rargs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& rargs() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.RowCompareType rctype = 2 [json_name = "rctype"]; void clear_rctype(); ::pg_query::RowCompareType rctype() const; void set_rctype(::pg_query::RowCompareType value); private: ::pg_query::RowCompareType _internal_rctype() const; void _internal_set_rctype(::pg_query::RowCompareType value); public: // @@protoc_insertion_point(class_scope:pg_query.RowCompareExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opnos_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opfamilies_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > inputcollids_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > largs_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > rargs_; ::pg_query::Node* xpr_; int rctype_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CoalesceExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CoalesceExpr) */ { public: inline CoalesceExpr() : CoalesceExpr(nullptr) {} ~CoalesceExpr() override; explicit PROTOBUF_CONSTEXPR CoalesceExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CoalesceExpr(const CoalesceExpr& from); CoalesceExpr(CoalesceExpr&& from) noexcept : CoalesceExpr() { *this = ::std::move(from); } inline CoalesceExpr& operator=(const CoalesceExpr& from) { CopyFrom(from); return *this; } inline CoalesceExpr& operator=(CoalesceExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 44; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CoalesceExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CoalesceExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CoalesceExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CoalesceExpr& from) { CoalesceExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CoalesceExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CoalesceExpr"; } protected: explicit CoalesceExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 coalescetype = 2 [json_name = "coalescetype"]; void clear_coalescetype(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; uint32_t coalescetype_; uint32_t coalescecollid_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class MinMaxExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.MinMaxExpr) */ { public: inline MinMaxExpr() : MinMaxExpr(nullptr) {} ~MinMaxExpr() override; explicit PROTOBUF_CONSTEXPR MinMaxExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); MinMaxExpr(const MinMaxExpr& from); MinMaxExpr(MinMaxExpr&& from) noexcept : MinMaxExpr() { *this = ::std::move(from); } inline MinMaxExpr& operator=(const MinMaxExpr& from) { CopyFrom(from); return *this; } inline MinMaxExpr& operator=(MinMaxExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 45; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(MinMaxExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- MinMaxExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const MinMaxExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const MinMaxExpr& from) { MinMaxExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(MinMaxExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.MinMaxExpr"; } protected: explicit MinMaxExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 minmaxtype = 2 [json_name = "minmaxtype"]; void clear_minmaxtype(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; uint32_t minmaxtype_; uint32_t minmaxcollid_; uint32_t inputcollid_; int op_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SQLValueFunction final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SQLValueFunction) */ { public: inline SQLValueFunction() : SQLValueFunction(nullptr) {} ~SQLValueFunction() override; explicit PROTOBUF_CONSTEXPR SQLValueFunction(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); SQLValueFunction(const SQLValueFunction& from); SQLValueFunction(SQLValueFunction&& from) noexcept : SQLValueFunction() { *this = ::std::move(from); } inline SQLValueFunction& operator=(const SQLValueFunction& from) { CopyFrom(from); return *this; } inline SQLValueFunction& operator=(SQLValueFunction&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 46; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SQLValueFunction* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SQLValueFunction* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const SQLValueFunction& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const SQLValueFunction& from) { SQLValueFunction::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SQLValueFunction* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SQLValueFunction"; } protected: explicit SQLValueFunction(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.SQLValueFunctionOp op = 2 [json_name = "op"]; void clear_op(); ::pg_query::SQLValueFunctionOp op() const; void set_op(::pg_query::SQLValueFunctionOp value); private: ::pg_query::SQLValueFunctionOp _internal_op() const; void _internal_set_op(::pg_query::SQLValueFunctionOp value); public: // uint32 type = 3 [json_name = "type"]; void clear_type(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* xpr_; int op_; uint32_t type_; int32_t typmod_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class XmlExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.XmlExpr) */ { public: inline XmlExpr() : XmlExpr(nullptr) {} ~XmlExpr() override; explicit PROTOBUF_CONSTEXPR XmlExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); XmlExpr(const XmlExpr& from); XmlExpr(XmlExpr&& from) noexcept : XmlExpr() { *this = ::std::move(from); } inline XmlExpr& operator=(const XmlExpr& from) { CopyFrom(from); return *this; } inline XmlExpr& operator=(XmlExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 47; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(XmlExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- XmlExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const XmlExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const XmlExpr& from) { XmlExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(XmlExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.XmlExpr"; } protected: explicit XmlExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNamedArgsFieldNumber = 4, kArgNamesFieldNumber = 5, kArgsFieldNumber = 6, kNameFieldNumber = 3, kXprFieldNumber = 1, kOpFieldNumber = 2, kXmloptionFieldNumber = 7, kTypeFieldNumber = 8, kTypmodFieldNumber = 9, kLocationFieldNumber = 10, }; // repeated .pg_query.Node named_args = 4 [json_name = "named_args"]; int named_args_size() const; private: int _internal_named_args_size() const; public: void clear_named_args(); ::pg_query::Node* mutable_named_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_named_args(); private: const ::pg_query::Node& _internal_named_args(int index) const; ::pg_query::Node* _internal_add_named_args(); public: const ::pg_query::Node& named_args(int index) const; ::pg_query::Node* add_named_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& named_args() const; // repeated .pg_query.Node arg_names = 5 [json_name = "arg_names"]; int arg_names_size() const; private: int _internal_arg_names_size() const; public: void clear_arg_names(); ::pg_query::Node* mutable_arg_names(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_arg_names(); private: const ::pg_query::Node& _internal_arg_names(int index) const; ::pg_query::Node* _internal_add_arg_names(); public: const ::pg_query::Node& arg_names(int index) const; ::pg_query::Node* add_arg_names(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& arg_names() const; // repeated .pg_query.Node args = 6 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // string name = 3 [json_name = "name"]; void clear_name(); const std::string& name() const; template void set_name(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.XmlExprOp op = 2 [json_name = "op"]; void clear_op(); ::pg_query::XmlExprOp op() const; void set_op(::pg_query::XmlExprOp value); private: ::pg_query::XmlExprOp _internal_op() const; void _internal_set_op(::pg_query::XmlExprOp value); public: // .pg_query.XmlOptionType xmloption = 7 [json_name = "xmloption"]; void clear_xmloption(); ::pg_query::XmlOptionType xmloption() const; void set_xmloption(::pg_query::XmlOptionType value); private: ::pg_query::XmlOptionType _internal_xmloption() const; void _internal_set_xmloption(::pg_query::XmlOptionType value); public: // uint32 type = 8 [json_name = "type"]; void clear_type(); 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 = 9 [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 = 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.XmlExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > named_args_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > arg_names_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::Node* xpr_; int op_; int xmloption_; uint32_t type_; int32_t typmod_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class NullTest final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.NullTest) */ { public: inline NullTest() : NullTest(nullptr) {} ~NullTest() override; explicit PROTOBUF_CONSTEXPR NullTest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); NullTest(const NullTest& from); NullTest(NullTest&& from) noexcept : NullTest() { *this = ::std::move(from); } inline NullTest& operator=(const NullTest& from) { CopyFrom(from); return *this; } inline NullTest& operator=(NullTest&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 48; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(NullTest* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- NullTest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const NullTest& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const NullTest& from) { NullTest::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(NullTest* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.NullTest"; } protected: explicit NullTest(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // .pg_query.NullTestType nulltesttype = 3 [json_name = "nulltesttype"]; void clear_nulltesttype(); ::pg_query::NullTestType nulltesttype() const; void set_nulltesttype(::pg_query::NullTestType value); private: ::pg_query::NullTestType _internal_nulltesttype() const; void _internal_set_nulltesttype(::pg_query::NullTestType value); public: // bool argisrow = 4 [json_name = "argisrow"]; void clear_argisrow(); bool argisrow() const; void set_argisrow(bool value); private: bool _internal_argisrow() const; void _internal_set_argisrow(bool value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* xpr_; ::pg_query::Node* arg_; int nulltesttype_; bool argisrow_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class BooleanTest final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.BooleanTest) */ { public: inline BooleanTest() : BooleanTest(nullptr) {} ~BooleanTest() override; explicit PROTOBUF_CONSTEXPR BooleanTest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); BooleanTest(const BooleanTest& from); BooleanTest(BooleanTest&& from) noexcept : BooleanTest() { *this = ::std::move(from); } inline BooleanTest& operator=(const BooleanTest& from) { CopyFrom(from); return *this; } inline BooleanTest& operator=(BooleanTest&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 49; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(BooleanTest* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- BooleanTest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const BooleanTest& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const BooleanTest& from) { BooleanTest::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(BooleanTest* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.BooleanTest"; } protected: explicit BooleanTest(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // .pg_query.BoolTestType booltesttype = 3 [json_name = "booltesttype"]; void clear_booltesttype(); ::pg_query::BoolTestType booltesttype() const; void set_booltesttype(::pg_query::BoolTestType value); private: ::pg_query::BoolTestType _internal_booltesttype() const; void _internal_set_booltesttype(::pg_query::BoolTestType value); public: // int32 location = 4 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* xpr_; ::pg_query::Node* arg_; int booltesttype_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CoerceToDomain final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CoerceToDomain) */ { public: inline CoerceToDomain() : CoerceToDomain(nullptr) {} ~CoerceToDomain() override; explicit PROTOBUF_CONSTEXPR CoerceToDomain(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CoerceToDomain(const CoerceToDomain& from); CoerceToDomain(CoerceToDomain&& from) noexcept : CoerceToDomain() { *this = ::std::move(from); } inline CoerceToDomain& operator=(const CoerceToDomain& from) { CopyFrom(from); return *this; } inline CoerceToDomain& operator=(CoerceToDomain&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 50; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CoerceToDomain* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CoerceToDomain* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CoerceToDomain& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CoerceToDomain& from) { CoerceToDomain::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CoerceToDomain* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CoerceToDomain"; } protected: explicit CoerceToDomain(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // uint32 resulttype = 3 [json_name = "resulttype"]; void clear_resulttype(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* xpr_; ::pg_query::Node* arg_; uint32_t resulttype_; int32_t resulttypmod_; uint32_t resultcollid_; int coercionformat_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CoerceToDomainValue final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CoerceToDomainValue) */ { public: inline CoerceToDomainValue() : CoerceToDomainValue(nullptr) {} ~CoerceToDomainValue() override; explicit PROTOBUF_CONSTEXPR CoerceToDomainValue(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CoerceToDomainValue(const CoerceToDomainValue& from); CoerceToDomainValue(CoerceToDomainValue&& from) noexcept : CoerceToDomainValue() { *this = ::std::move(from); } inline CoerceToDomainValue& operator=(const CoerceToDomainValue& from) { CopyFrom(from); return *this; } inline CoerceToDomainValue& operator=(CoerceToDomainValue&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 51; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CoerceToDomainValue* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CoerceToDomainValue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CoerceToDomainValue& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CoerceToDomainValue& from) { CoerceToDomainValue::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CoerceToDomainValue* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CoerceToDomainValue"; } protected: explicit CoerceToDomainValue(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 type_id = 2 [json_name = "typeId"]; void clear_type_id(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* xpr_; uint32_t type_id_; int32_t type_mod_; uint32_t collation_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SetToDefault final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SetToDefault) */ { public: inline SetToDefault() : SetToDefault(nullptr) {} ~SetToDefault() override; explicit PROTOBUF_CONSTEXPR SetToDefault(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); SetToDefault(const SetToDefault& from); SetToDefault(SetToDefault&& from) noexcept : SetToDefault() { *this = ::std::move(from); } inline SetToDefault& operator=(const SetToDefault& from) { CopyFrom(from); return *this; } inline SetToDefault& operator=(SetToDefault&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 52; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SetToDefault* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SetToDefault* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const SetToDefault& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const SetToDefault& from) { SetToDefault::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SetToDefault* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SetToDefault"; } protected: explicit SetToDefault(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 type_id = 2 [json_name = "typeId"]; void clear_type_id(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* xpr_; uint32_t type_id_; int32_t type_mod_; uint32_t collation_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CurrentOfExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CurrentOfExpr) */ { public: inline CurrentOfExpr() : CurrentOfExpr(nullptr) {} ~CurrentOfExpr() override; explicit PROTOBUF_CONSTEXPR CurrentOfExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CurrentOfExpr(const CurrentOfExpr& from); CurrentOfExpr(CurrentOfExpr&& from) noexcept : CurrentOfExpr() { *this = ::std::move(from); } inline CurrentOfExpr& operator=(const CurrentOfExpr& from) { CopyFrom(from); return *this; } inline CurrentOfExpr& operator=(CurrentOfExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 53; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CurrentOfExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CurrentOfExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CurrentOfExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CurrentOfExpr& from) { CurrentOfExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CurrentOfExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CurrentOfExpr"; } protected: explicit CurrentOfExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_cursor_name(); PROTOBUF_NODISCARD std::string* release_cursor_name(); void set_allocated_cursor_name(std::string* cursor_name); 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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 cvarno = 2 [json_name = "cvarno"]; void clear_cvarno(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr cursor_name_; ::pg_query::Node* xpr_; uint32_t cvarno_; int32_t cursor_param_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class NextValueExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.NextValueExpr) */ { public: inline NextValueExpr() : NextValueExpr(nullptr) {} ~NextValueExpr() override; explicit PROTOBUF_CONSTEXPR NextValueExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); NextValueExpr(const NextValueExpr& from); NextValueExpr(NextValueExpr&& from) noexcept : NextValueExpr() { *this = ::std::move(from); } inline NextValueExpr& operator=(const NextValueExpr& from) { CopyFrom(from); return *this; } inline NextValueExpr& operator=(NextValueExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 54; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(NextValueExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- NextValueExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const NextValueExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const NextValueExpr& from) { NextValueExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(NextValueExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.NextValueExpr"; } protected: explicit NextValueExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 seqid = 2 [json_name = "seqid"]; void clear_seqid(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* xpr_; uint32_t seqid_; uint32_t type_id_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class InferenceElem final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.InferenceElem) */ { public: inline InferenceElem() : InferenceElem(nullptr) {} ~InferenceElem() override; explicit PROTOBUF_CONSTEXPR InferenceElem(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); InferenceElem(const InferenceElem& from); InferenceElem(InferenceElem&& from) noexcept : InferenceElem() { *this = ::std::move(from); } inline InferenceElem& operator=(const InferenceElem& from) { CopyFrom(from); return *this; } inline InferenceElem& operator=(InferenceElem&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 55; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(InferenceElem* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- InferenceElem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const InferenceElem& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const InferenceElem& from) { InferenceElem::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(InferenceElem* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.InferenceElem"; } protected: explicit InferenceElem(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node expr = 2 [json_name = "expr"]; bool has_expr() const; private: bool _internal_has_expr() const; public: void clear_expr(); const ::pg_query::Node& expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* expr); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: void unsafe_arena_set_allocated_expr( ::pg_query::Node* expr); ::pg_query::Node* unsafe_arena_release_expr(); // uint32 infercollid = 3 [json_name = "infercollid"]; void clear_infercollid(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* xpr_; ::pg_query::Node* expr_; uint32_t infercollid_; uint32_t inferopclass_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TargetEntry final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TargetEntry) */ { public: inline TargetEntry() : TargetEntry(nullptr) {} ~TargetEntry() override; explicit PROTOBUF_CONSTEXPR TargetEntry(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); TargetEntry(const TargetEntry& from); TargetEntry(TargetEntry&& from) noexcept : TargetEntry() { *this = ::std::move(from); } inline TargetEntry& operator=(const TargetEntry& from) { CopyFrom(from); return *this; } inline TargetEntry& operator=(TargetEntry&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 56; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TargetEntry* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TargetEntry* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const TargetEntry& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const TargetEntry& from) { TargetEntry::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TargetEntry* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TargetEntry"; } protected: explicit TargetEntry(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_resname(); PROTOBUF_NODISCARD std::string* release_resname(); void set_allocated_resname(std::string* resname); 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; private: bool _internal_has_xpr() const; public: 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* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node expr = 2 [json_name = "expr"]; bool has_expr() const; private: bool _internal_has_expr() const; public: void clear_expr(); const ::pg_query::Node& expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* expr); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: void unsafe_arena_set_allocated_expr( ::pg_query::Node* expr); ::pg_query::Node* unsafe_arena_release_expr(); // int32 resno = 3 [json_name = "resno"]; void clear_resno(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::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_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeTblRef final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTblRef) */ { public: inline RangeTblRef() : RangeTblRef(nullptr) {} ~RangeTblRef() override; explicit PROTOBUF_CONSTEXPR RangeTblRef(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RangeTblRef(const RangeTblRef& from); RangeTblRef(RangeTblRef&& from) noexcept : RangeTblRef() { *this = ::std::move(from); } inline RangeTblRef& operator=(const RangeTblRef& from) { CopyFrom(from); return *this; } inline RangeTblRef& operator=(RangeTblRef&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 57; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTblRef* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeTblRef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RangeTblRef& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RangeTblRef& from) { RangeTblRef::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeTblRef* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeTblRef"; } protected: explicit RangeTblRef(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { int32_t rtindex_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class JoinExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.JoinExpr) */ { public: inline JoinExpr() : JoinExpr(nullptr) {} ~JoinExpr() override; explicit PROTOBUF_CONSTEXPR JoinExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); JoinExpr(const JoinExpr& from); JoinExpr(JoinExpr&& from) noexcept : JoinExpr() { *this = ::std::move(from); } inline JoinExpr& operator=(const JoinExpr& from) { CopyFrom(from); return *this; } inline JoinExpr& operator=(JoinExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 58; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JoinExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JoinExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const JoinExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const JoinExpr& from) { JoinExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(JoinExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.JoinExpr"; } protected: explicit JoinExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_using_clause(); private: const ::pg_query::Node& _internal_using_clause(int index) const; ::pg_query::Node* _internal_add_using_clause(); public: const ::pg_query::Node& using_clause(int index) const; ::pg_query::Node* add_using_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& using_clause() const; // .pg_query.Node larg = 3 [json_name = "larg"]; bool has_larg() const; private: bool _internal_has_larg() const; public: void clear_larg(); const ::pg_query::Node& larg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_larg(); ::pg_query::Node* mutable_larg(); void set_allocated_larg(::pg_query::Node* larg); private: const ::pg_query::Node& _internal_larg() const; ::pg_query::Node* _internal_mutable_larg(); public: void unsafe_arena_set_allocated_larg( ::pg_query::Node* larg); ::pg_query::Node* unsafe_arena_release_larg(); // .pg_query.Node rarg = 4 [json_name = "rarg"]; bool has_rarg() const; private: bool _internal_has_rarg() const; public: void clear_rarg(); const ::pg_query::Node& rarg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_rarg(); ::pg_query::Node* mutable_rarg(); void set_allocated_rarg(::pg_query::Node* rarg); private: const ::pg_query::Node& _internal_rarg() const; ::pg_query::Node* _internal_mutable_rarg(); public: void unsafe_arena_set_allocated_rarg( ::pg_query::Node* rarg); ::pg_query::Node* unsafe_arena_release_rarg(); // .pg_query.Alias join_using_alias = 6 [json_name = "join_using_alias"]; bool has_join_using_alias() const; private: bool _internal_has_join_using_alias() const; public: 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* join_using_alias); private: const ::pg_query::Alias& _internal_join_using_alias() const; ::pg_query::Alias* _internal_mutable_join_using_alias(); public: void unsafe_arena_set_allocated_join_using_alias( ::pg_query::Alias* join_using_alias); ::pg_query::Alias* unsafe_arena_release_join_using_alias(); // .pg_query.Node quals = 7 [json_name = "quals"]; bool has_quals() const; private: bool _internal_has_quals() const; public: 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* quals); private: const ::pg_query::Node& _internal_quals() const; ::pg_query::Node* _internal_mutable_quals(); public: void unsafe_arena_set_allocated_quals( ::pg_query::Node* quals); ::pg_query::Node* unsafe_arena_release_quals(); // .pg_query.Alias alias = 8 [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* alias); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: void unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias); ::pg_query::Alias* unsafe_arena_release_alias(); // .pg_query.JoinType jointype = 1 [json_name = "jointype"]; void clear_jointype(); ::pg_query::JoinType jointype() const; void set_jointype(::pg_query::JoinType value); private: ::pg_query::JoinType _internal_jointype() const; void _internal_set_jointype(::pg_query::JoinType value); public: // bool is_natural = 2 [json_name = "isNatural"]; void clear_is_natural(); bool is_natural() const; void set_is_natural(bool value); private: bool _internal_is_natural() const; void _internal_set_is_natural(bool value); public: // int32 rtindex = 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::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_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class FromExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FromExpr) */ { public: inline FromExpr() : FromExpr(nullptr) {} ~FromExpr() override; explicit PROTOBUF_CONSTEXPR FromExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); FromExpr(const FromExpr& from); FromExpr(FromExpr&& from) noexcept : FromExpr() { *this = ::std::move(from); } inline FromExpr& operator=(const FromExpr& from) { CopyFrom(from); return *this; } inline FromExpr& operator=(FromExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 59; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FromExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- FromExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const FromExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const FromExpr& from) { FromExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(FromExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.FromExpr"; } protected: explicit FromExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_fromlist(); private: const ::pg_query::Node& _internal_fromlist(int index) const; ::pg_query::Node* _internal_add_fromlist(); public: const ::pg_query::Node& fromlist(int index) const; ::pg_query::Node* add_fromlist(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& fromlist() const; // .pg_query.Node quals = 2 [json_name = "quals"]; bool has_quals() const; private: bool _internal_has_quals() const; public: void clear_quals(); const ::pg_query::Node& quals() const; PROTOBUF_NODISCARD ::pg_query::Node* release_quals(); ::pg_query::Node* mutable_quals(); void set_allocated_quals(::pg_query::Node* quals); private: const ::pg_query::Node& _internal_quals() const; ::pg_query::Node* _internal_mutable_quals(); public: void unsafe_arena_set_allocated_quals( ::pg_query::Node* quals); ::pg_query::Node* unsafe_arena_release_quals(); // @@protoc_insertion_point(class_scope:pg_query.FromExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > fromlist_; ::pg_query::Node* quals_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class OnConflictExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.OnConflictExpr) */ { public: inline OnConflictExpr() : OnConflictExpr(nullptr) {} ~OnConflictExpr() override; explicit PROTOBUF_CONSTEXPR OnConflictExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); OnConflictExpr(const OnConflictExpr& from); OnConflictExpr(OnConflictExpr&& from) noexcept : OnConflictExpr() { *this = ::std::move(from); } inline OnConflictExpr& operator=(const OnConflictExpr& from) { CopyFrom(from); return *this; } inline OnConflictExpr& operator=(OnConflictExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 60; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(OnConflictExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- OnConflictExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const OnConflictExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const OnConflictExpr& from) { OnConflictExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(OnConflictExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.OnConflictExpr"; } protected: explicit OnConflictExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_arbiter_elems(); private: const ::pg_query::Node& _internal_arbiter_elems(int index) const; ::pg_query::Node* _internal_add_arbiter_elems(); public: const ::pg_query::Node& arbiter_elems(int index) const; ::pg_query::Node* add_arbiter_elems(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& arbiter_elems() const; // repeated .pg_query.Node on_conflict_set = 5 [json_name = "onConflictSet"]; int on_conflict_set_size() const; private: int _internal_on_conflict_set_size() const; public: void clear_on_conflict_set(); ::pg_query::Node* mutable_on_conflict_set(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_on_conflict_set(); private: const ::pg_query::Node& _internal_on_conflict_set(int index) const; ::pg_query::Node* _internal_add_on_conflict_set(); public: const ::pg_query::Node& on_conflict_set(int index) const; ::pg_query::Node* add_on_conflict_set(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& on_conflict_set() const; // repeated .pg_query.Node excl_rel_tlist = 8 [json_name = "exclRelTlist"]; int excl_rel_tlist_size() const; private: int _internal_excl_rel_tlist_size() const; public: void clear_excl_rel_tlist(); ::pg_query::Node* mutable_excl_rel_tlist(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_excl_rel_tlist(); private: const ::pg_query::Node& _internal_excl_rel_tlist(int index) const; ::pg_query::Node* _internal_add_excl_rel_tlist(); public: const ::pg_query::Node& excl_rel_tlist(int index) const; ::pg_query::Node* add_excl_rel_tlist(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& excl_rel_tlist() const; // .pg_query.Node arbiter_where = 3 [json_name = "arbiterWhere"]; bool has_arbiter_where() const; private: bool _internal_has_arbiter_where() const; public: void clear_arbiter_where(); const ::pg_query::Node& arbiter_where() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arbiter_where(); ::pg_query::Node* mutable_arbiter_where(); void set_allocated_arbiter_where(::pg_query::Node* arbiter_where); private: const ::pg_query::Node& _internal_arbiter_where() const; ::pg_query::Node* _internal_mutable_arbiter_where(); public: void unsafe_arena_set_allocated_arbiter_where( ::pg_query::Node* arbiter_where); ::pg_query::Node* unsafe_arena_release_arbiter_where(); // .pg_query.Node on_conflict_where = 6 [json_name = "onConflictWhere"]; bool has_on_conflict_where() const; private: bool _internal_has_on_conflict_where() const; public: void clear_on_conflict_where(); const ::pg_query::Node& on_conflict_where() const; 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* on_conflict_where); private: const ::pg_query::Node& _internal_on_conflict_where() const; ::pg_query::Node* _internal_mutable_on_conflict_where(); public: void unsafe_arena_set_allocated_on_conflict_where( ::pg_query::Node* on_conflict_where); ::pg_query::Node* unsafe_arena_release_on_conflict_where(); // .pg_query.OnConflictAction action = 1 [json_name = "action"]; void clear_action(); ::pg_query::OnConflictAction action() const; void set_action(::pg_query::OnConflictAction value); private: ::pg_query::OnConflictAction _internal_action() const; void _internal_set_action(::pg_query::OnConflictAction value); public: // uint32 constraint = 4 [json_name = "constraint"]; void clear_constraint(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > arbiter_elems_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > on_conflict_set_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > excl_rel_tlist_; ::pg_query::Node* arbiter_where_; ::pg_query::Node* on_conflict_where_; int action_; uint32_t constraint_; int32_t excl_rel_index_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class IntoClause final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.IntoClause) */ { public: inline IntoClause() : IntoClause(nullptr) {} ~IntoClause() override; explicit PROTOBUF_CONSTEXPR IntoClause(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); IntoClause(const IntoClause& from); IntoClause(IntoClause&& from) noexcept : IntoClause() { *this = ::std::move(from); } inline IntoClause& operator=(const IntoClause& from) { CopyFrom(from); return *this; } inline IntoClause& operator=(IntoClause&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 61; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(IntoClause* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- IntoClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const IntoClause& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const IntoClause& from) { IntoClause::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(IntoClause* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.IntoClause"; } protected: explicit IntoClause(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_col_names(); private: const ::pg_query::Node& _internal_col_names(int index) const; ::pg_query::Node* _internal_add_col_names(); public: const ::pg_query::Node& col_names(int index) const; ::pg_query::Node* add_col_names(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& col_names() const; // repeated .pg_query.Node options = 4 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string access_method = 3 [json_name = "accessMethod"]; void clear_access_method(); const std::string& access_method() const; template void set_access_method(ArgT0&& arg0, ArgT... args); std::string* mutable_access_method(); PROTOBUF_NODISCARD std::string* release_access_method(); void set_allocated_access_method(std::string* access_method); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_table_space_name(); PROTOBUF_NODISCARD std::string* release_table_space_name(); void set_allocated_table_space_name(std::string* table_space_name); private: const std::string& _internal_table_space_name() const; 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; private: bool _internal_has_rel() const; public: 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* rel); private: const ::pg_query::RangeVar& _internal_rel() const; ::pg_query::RangeVar* _internal_mutable_rel(); public: void unsafe_arena_set_allocated_rel( ::pg_query::RangeVar* rel); ::pg_query::RangeVar* unsafe_arena_release_rel(); // .pg_query.Node view_query = 7 [json_name = "viewQuery"]; bool has_view_query() const; private: bool _internal_has_view_query() const; public: void clear_view_query(); const ::pg_query::Node& view_query() const; PROTOBUF_NODISCARD ::pg_query::Node* release_view_query(); ::pg_query::Node* mutable_view_query(); void set_allocated_view_query(::pg_query::Node* view_query); private: const ::pg_query::Node& _internal_view_query() const; ::pg_query::Node* _internal_mutable_view_query(); public: void unsafe_arena_set_allocated_view_query( ::pg_query::Node* view_query); ::pg_query::Node* unsafe_arena_release_view_query(); // .pg_query.OnCommitAction on_commit = 5 [json_name = "onCommit"]; void clear_on_commit(); ::pg_query::OnCommitAction on_commit() const; void set_on_commit(::pg_query::OnCommitAction value); private: ::pg_query::OnCommitAction _internal_on_commit() const; void _internal_set_on_commit(::pg_query::OnCommitAction value); public: // bool skip_data = 8 [json_name = "skipData"]; void clear_skip_data(); bool skip_data() const; void set_skip_data(bool value); private: bool _internal_skip_data() const; void _internal_set_skip_data(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.IntoClause) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > col_names_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr access_method_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr table_space_name_; ::pg_query::RangeVar* rel_; ::pg_query::Node* view_query_; int on_commit_; bool skip_data_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class MergeAction final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.MergeAction) */ { public: inline MergeAction() : MergeAction(nullptr) {} ~MergeAction() override; explicit PROTOBUF_CONSTEXPR MergeAction(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); MergeAction(const MergeAction& 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 (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 62; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(MergeAction* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- MergeAction* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const MergeAction& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const MergeAction& from) { MergeAction::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(MergeAction* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.MergeAction"; } protected: explicit MergeAction(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTargetListFieldNumber = 5, kUpdateColnosFieldNumber = 6, kQualFieldNumber = 4, kMatchedFieldNumber = 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_target_list(); private: const ::pg_query::Node& _internal_target_list(int index) const; ::pg_query::Node* _internal_add_target_list(); public: const ::pg_query::Node& target_list(int index) const; ::pg_query::Node* add_target_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& target_list() const; // repeated .pg_query.Node 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_update_colnos(); private: const ::pg_query::Node& _internal_update_colnos(int index) const; ::pg_query::Node* _internal_add_update_colnos(); public: const ::pg_query::Node& update_colnos(int index) const; ::pg_query::Node* add_update_colnos(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& update_colnos() const; // .pg_query.Node qual = 4 [json_name = "qual"]; bool has_qual() const; private: bool _internal_has_qual() const; public: void clear_qual(); const ::pg_query::Node& qual() const; PROTOBUF_NODISCARD ::pg_query::Node* release_qual(); ::pg_query::Node* mutable_qual(); void set_allocated_qual(::pg_query::Node* qual); private: const ::pg_query::Node& _internal_qual() const; ::pg_query::Node* _internal_mutable_qual(); public: void unsafe_arena_set_allocated_qual( ::pg_query::Node* qual); ::pg_query::Node* unsafe_arena_release_qual(); // bool matched = 1 [json_name = "matched"]; void clear_matched(); bool matched() const; void set_matched(bool value); private: bool _internal_matched() const; void _internal_set_matched(bool 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > target_list_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > update_colnos_; ::pg_query::Node* qual_; bool matched_; int command_type_; int override_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RawStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RawStmt) */ { public: inline RawStmt() : RawStmt(nullptr) {} ~RawStmt() override; explicit PROTOBUF_CONSTEXPR RawStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RawStmt(const RawStmt& from); RawStmt(RawStmt&& from) noexcept : RawStmt() { *this = ::std::move(from); } inline RawStmt& operator=(const RawStmt& from) { CopyFrom(from); return *this; } inline RawStmt& operator=(RawStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 63; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RawStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RawStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RawStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RawStmt& from) { RawStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RawStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RawStmt"; } protected: explicit RawStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_stmt() const; public: 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* stmt); private: const ::pg_query::Node& _internal_stmt() const; ::pg_query::Node* _internal_mutable_stmt(); public: void unsafe_arena_set_allocated_stmt( ::pg_query::Node* stmt); ::pg_query::Node* unsafe_arena_release_stmt(); // int32 stmt_location = 2 [json_name = "stmt_location"]; void clear_stmt_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* stmt_; int32_t stmt_location_; int32_t stmt_len_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Query final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Query) */ { public: inline Query() : Query(nullptr) {} ~Query() override; explicit PROTOBUF_CONSTEXPR Query(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); Query(const Query& from); Query(Query&& from) noexcept : Query() { *this = ::std::move(from); } inline Query& operator=(const Query& from) { CopyFrom(from); return *this; } inline Query& operator=(Query&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 64; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Query* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Query* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const Query& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const Query& from) { Query::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Query* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Query"; } protected: explicit Query(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kCteListFieldNumber = 16, kRtableFieldNumber = 17, kMergeActionListFieldNumber = 19, kTargetListFieldNumber = 21, kReturningListFieldNumber = 24, kGroupClauseFieldNumber = 25, kGroupingSetsFieldNumber = 27, kWindowClauseFieldNumber = 29, kDistinctClauseFieldNumber = 30, kSortClauseFieldNumber = 31, kRowMarksFieldNumber = 35, kConstraintDepsFieldNumber = 37, kWithCheckOptionsFieldNumber = 38, kUtilityStmtFieldNumber = 4, kJointreeFieldNumber = 18, kOnConflictFieldNumber = 23, kHavingQualFieldNumber = 28, kLimitOffsetFieldNumber = 32, kLimitCountFieldNumber = 33, kSetOperationsFieldNumber = 36, 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, kMergeUseOuterJoinFieldNumber = 20, kOverrideFieldNumber = 22, kGroupDistinctFieldNumber = 26, kLimitOptionFieldNumber = 34, kStmtLocationFieldNumber = 39, kStmtLenFieldNumber = 40, }; // 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_cte_list(); private: const ::pg_query::Node& _internal_cte_list(int index) const; ::pg_query::Node* _internal_add_cte_list(); public: const ::pg_query::Node& cte_list(int index) const; ::pg_query::Node* add_cte_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& cte_list() const; // repeated .pg_query.Node rtable = 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_rtable(); private: const ::pg_query::Node& _internal_rtable(int index) const; ::pg_query::Node* _internal_add_rtable(); public: const ::pg_query::Node& rtable(int index) const; ::pg_query::Node* add_rtable(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& rtable() const; // repeated .pg_query.Node merge_action_list = 19 [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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_merge_action_list(); private: const ::pg_query::Node& _internal_merge_action_list(int index) const; ::pg_query::Node* _internal_add_merge_action_list(); public: const ::pg_query::Node& merge_action_list(int index) const; ::pg_query::Node* add_merge_action_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& merge_action_list() const; // repeated .pg_query.Node target_list = 21 [json_name = "targetList"]; int target_list_size() const; private: int _internal_target_list_size() const; public: void clear_target_list(); ::pg_query::Node* mutable_target_list(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_target_list(); private: const ::pg_query::Node& _internal_target_list(int index) const; ::pg_query::Node* _internal_add_target_list(); public: const ::pg_query::Node& target_list(int index) const; ::pg_query::Node* add_target_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& target_list() const; // repeated .pg_query.Node returning_list = 24 [json_name = "returningList"]; int returning_list_size() const; private: int _internal_returning_list_size() const; public: void clear_returning_list(); ::pg_query::Node* mutable_returning_list(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_returning_list(); private: const ::pg_query::Node& _internal_returning_list(int index) const; ::pg_query::Node* _internal_add_returning_list(); public: const ::pg_query::Node& returning_list(int index) const; ::pg_query::Node* add_returning_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& returning_list() const; // repeated .pg_query.Node group_clause = 25 [json_name = "groupClause"]; int group_clause_size() const; private: int _internal_group_clause_size() const; public: void clear_group_clause(); ::pg_query::Node* mutable_group_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_group_clause(); private: const ::pg_query::Node& _internal_group_clause(int index) const; ::pg_query::Node* _internal_add_group_clause(); public: const ::pg_query::Node& group_clause(int index) const; ::pg_query::Node* add_group_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& group_clause() const; // repeated .pg_query.Node grouping_sets = 27 [json_name = "groupingSets"]; int grouping_sets_size() const; private: int _internal_grouping_sets_size() const; public: void clear_grouping_sets(); ::pg_query::Node* mutable_grouping_sets(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_grouping_sets(); private: const ::pg_query::Node& _internal_grouping_sets(int index) const; ::pg_query::Node* _internal_add_grouping_sets(); public: const ::pg_query::Node& grouping_sets(int index) const; ::pg_query::Node* add_grouping_sets(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& grouping_sets() const; // repeated .pg_query.Node window_clause = 29 [json_name = "windowClause"]; int window_clause_size() const; private: int _internal_window_clause_size() const; public: void clear_window_clause(); ::pg_query::Node* mutable_window_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_window_clause(); private: const ::pg_query::Node& _internal_window_clause(int index) const; ::pg_query::Node* _internal_add_window_clause(); public: const ::pg_query::Node& window_clause(int index) const; ::pg_query::Node* add_window_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& window_clause() const; // repeated .pg_query.Node distinct_clause = 30 [json_name = "distinctClause"]; int distinct_clause_size() const; private: int _internal_distinct_clause_size() const; public: void clear_distinct_clause(); ::pg_query::Node* mutable_distinct_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_distinct_clause(); private: const ::pg_query::Node& _internal_distinct_clause(int index) const; ::pg_query::Node* _internal_add_distinct_clause(); public: const ::pg_query::Node& distinct_clause(int index) const; ::pg_query::Node* add_distinct_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& distinct_clause() const; // repeated .pg_query.Node sort_clause = 31 [json_name = "sortClause"]; int sort_clause_size() const; private: int _internal_sort_clause_size() const; public: void clear_sort_clause(); ::pg_query::Node* mutable_sort_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_sort_clause(); private: const ::pg_query::Node& _internal_sort_clause(int index) const; ::pg_query::Node* _internal_add_sort_clause(); public: const ::pg_query::Node& sort_clause(int index) const; ::pg_query::Node* add_sort_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& sort_clause() const; // repeated .pg_query.Node row_marks = 35 [json_name = "rowMarks"]; int row_marks_size() const; private: int _internal_row_marks_size() const; public: void clear_row_marks(); ::pg_query::Node* mutable_row_marks(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_row_marks(); private: const ::pg_query::Node& _internal_row_marks(int index) const; ::pg_query::Node* _internal_add_row_marks(); public: const ::pg_query::Node& row_marks(int index) const; ::pg_query::Node* add_row_marks(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& row_marks() const; // repeated .pg_query.Node constraint_deps = 37 [json_name = "constraintDeps"]; int constraint_deps_size() const; private: int _internal_constraint_deps_size() const; public: void clear_constraint_deps(); ::pg_query::Node* mutable_constraint_deps(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_constraint_deps(); private: const ::pg_query::Node& _internal_constraint_deps(int index) const; ::pg_query::Node* _internal_add_constraint_deps(); public: const ::pg_query::Node& constraint_deps(int index) const; ::pg_query::Node* add_constraint_deps(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& constraint_deps() const; // repeated .pg_query.Node with_check_options = 38 [json_name = "withCheckOptions"]; int with_check_options_size() const; private: int _internal_with_check_options_size() const; public: void clear_with_check_options(); ::pg_query::Node* mutable_with_check_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_with_check_options(); private: const ::pg_query::Node& _internal_with_check_options(int index) const; ::pg_query::Node* _internal_add_with_check_options(); public: const ::pg_query::Node& with_check_options(int index) const; ::pg_query::Node* add_with_check_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& with_check_options() const; // .pg_query.Node utility_stmt = 4 [json_name = "utilityStmt"]; bool has_utility_stmt() const; private: bool _internal_has_utility_stmt() const; public: void clear_utility_stmt(); const ::pg_query::Node& utility_stmt() const; PROTOBUF_NODISCARD ::pg_query::Node* release_utility_stmt(); ::pg_query::Node* mutable_utility_stmt(); void set_allocated_utility_stmt(::pg_query::Node* utility_stmt); private: const ::pg_query::Node& _internal_utility_stmt() const; ::pg_query::Node* _internal_mutable_utility_stmt(); public: void unsafe_arena_set_allocated_utility_stmt( ::pg_query::Node* utility_stmt); ::pg_query::Node* unsafe_arena_release_utility_stmt(); // .pg_query.FromExpr jointree = 18 [json_name = "jointree"]; bool has_jointree() const; private: bool _internal_has_jointree() const; public: 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* jointree); private: const ::pg_query::FromExpr& _internal_jointree() const; ::pg_query::FromExpr* _internal_mutable_jointree(); public: void unsafe_arena_set_allocated_jointree( ::pg_query::FromExpr* jointree); ::pg_query::FromExpr* unsafe_arena_release_jointree(); // .pg_query.OnConflictExpr on_conflict = 23 [json_name = "onConflict"]; bool has_on_conflict() const; private: bool _internal_has_on_conflict() const; public: void clear_on_conflict(); const ::pg_query::OnConflictExpr& on_conflict() const; PROTOBUF_NODISCARD ::pg_query::OnConflictExpr* release_on_conflict(); ::pg_query::OnConflictExpr* mutable_on_conflict(); void set_allocated_on_conflict(::pg_query::OnConflictExpr* on_conflict); private: const ::pg_query::OnConflictExpr& _internal_on_conflict() const; ::pg_query::OnConflictExpr* _internal_mutable_on_conflict(); public: void unsafe_arena_set_allocated_on_conflict( ::pg_query::OnConflictExpr* on_conflict); ::pg_query::OnConflictExpr* unsafe_arena_release_on_conflict(); // .pg_query.Node having_qual = 28 [json_name = "havingQual"]; bool has_having_qual() const; private: bool _internal_has_having_qual() const; public: void clear_having_qual(); const ::pg_query::Node& having_qual() const; PROTOBUF_NODISCARD ::pg_query::Node* release_having_qual(); ::pg_query::Node* mutable_having_qual(); void set_allocated_having_qual(::pg_query::Node* having_qual); private: const ::pg_query::Node& _internal_having_qual() const; ::pg_query::Node* _internal_mutable_having_qual(); public: void unsafe_arena_set_allocated_having_qual( ::pg_query::Node* having_qual); ::pg_query::Node* unsafe_arena_release_having_qual(); // .pg_query.Node limit_offset = 32 [json_name = "limitOffset"]; bool has_limit_offset() const; private: bool _internal_has_limit_offset() const; public: void clear_limit_offset(); const ::pg_query::Node& limit_offset() const; PROTOBUF_NODISCARD ::pg_query::Node* release_limit_offset(); ::pg_query::Node* mutable_limit_offset(); void set_allocated_limit_offset(::pg_query::Node* limit_offset); private: const ::pg_query::Node& _internal_limit_offset() const; ::pg_query::Node* _internal_mutable_limit_offset(); public: void unsafe_arena_set_allocated_limit_offset( ::pg_query::Node* limit_offset); ::pg_query::Node* unsafe_arena_release_limit_offset(); // .pg_query.Node limit_count = 33 [json_name = "limitCount"]; bool has_limit_count() const; private: bool _internal_has_limit_count() const; public: void clear_limit_count(); const ::pg_query::Node& limit_count() const; PROTOBUF_NODISCARD ::pg_query::Node* release_limit_count(); ::pg_query::Node* mutable_limit_count(); void set_allocated_limit_count(::pg_query::Node* limit_count); private: const ::pg_query::Node& _internal_limit_count() const; ::pg_query::Node* _internal_mutable_limit_count(); public: void unsafe_arena_set_allocated_limit_count( ::pg_query::Node* limit_count); ::pg_query::Node* unsafe_arena_release_limit_count(); // .pg_query.Node set_operations = 36 [json_name = "setOperations"]; bool has_set_operations() const; private: bool _internal_has_set_operations() const; public: void clear_set_operations(); const ::pg_query::Node& set_operations() const; PROTOBUF_NODISCARD ::pg_query::Node* release_set_operations(); ::pg_query::Node* mutable_set_operations(); void set_allocated_set_operations(::pg_query::Node* set_operations); private: const ::pg_query::Node& _internal_set_operations() const; ::pg_query::Node* _internal_mutable_set_operations(); public: void unsafe_arena_set_allocated_set_operations( ::pg_query::Node* set_operations); ::pg_query::Node* unsafe_arena_release_set_operations(); // .pg_query.CmdType command_type = 1 [json_name = "commandType"]; void clear_command_type(); ::pg_query::CmdType command_type() const; void set_command_type(::pg_query::CmdType value); private: ::pg_query::CmdType _internal_command_type() const; void _internal_set_command_type(::pg_query::CmdType value); public: // .pg_query.QuerySource query_source = 2 [json_name = "querySource"]; void clear_query_source(); ::pg_query::QuerySource query_source() const; void set_query_source(::pg_query::QuerySource value); private: ::pg_query::QuerySource _internal_query_source() const; void _internal_set_query_source(::pg_query::QuerySource value); public: // int32 result_relation = 5 [json_name = "resultRelation"]; void clear_result_relation(); 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 merge_use_outer_join = 20 [json_name = "mergeUseOuterJoin"]; void clear_merge_use_outer_join(); bool merge_use_outer_join() const; void set_merge_use_outer_join(bool value); private: bool _internal_merge_use_outer_join() const; void _internal_set_merge_use_outer_join(bool value); public: // .pg_query.OverridingKind override = 22 [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: // bool group_distinct = 26 [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: // .pg_query.LimitOption limit_option = 34 [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 = 39 [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 = 40 [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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cte_list_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > rtable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > merge_action_list_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > target_list_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > returning_list_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > group_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > grouping_sets_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > window_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > distinct_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > sort_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > row_marks_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > constraint_deps_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > with_check_options_; ::pg_query::Node* utility_stmt_; ::pg_query::FromExpr* jointree_; ::pg_query::OnConflictExpr* on_conflict_; ::pg_query::Node* having_qual_; ::pg_query::Node* limit_offset_; ::pg_query::Node* limit_count_; ::pg_query::Node* set_operations_; int command_type_; int query_source_; 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 merge_use_outer_join_; int override_; bool group_distinct_; int limit_option_; int32_t stmt_location_; int32_t stmt_len_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class InsertStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.InsertStmt) */ { public: inline InsertStmt() : InsertStmt(nullptr) {} ~InsertStmt() override; explicit PROTOBUF_CONSTEXPR InsertStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); InsertStmt(const InsertStmt& from); InsertStmt(InsertStmt&& from) noexcept : InsertStmt() { *this = ::std::move(from); } inline InsertStmt& operator=(const InsertStmt& from) { CopyFrom(from); return *this; } inline InsertStmt& operator=(InsertStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 65; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(InsertStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- InsertStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const InsertStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const InsertStmt& from) { InsertStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(InsertStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.InsertStmt"; } protected: explicit InsertStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_cols(); private: const ::pg_query::Node& _internal_cols(int index) const; ::pg_query::Node* _internal_add_cols(); public: const ::pg_query::Node& cols(int index) const; ::pg_query::Node* add_cols(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& cols() const; // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; int returning_list_size() const; private: int _internal_returning_list_size() const; public: void clear_returning_list(); ::pg_query::Node* mutable_returning_list(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_returning_list(); private: const ::pg_query::Node& _internal_returning_list(int index) const; ::pg_query::Node* _internal_add_returning_list(); public: const ::pg_query::Node& returning_list(int index) const; ::pg_query::Node* add_returning_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& returning_list() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node select_stmt = 3 [json_name = "selectStmt"]; bool has_select_stmt() const; private: bool _internal_has_select_stmt() const; public: void clear_select_stmt(); const ::pg_query::Node& select_stmt() const; PROTOBUF_NODISCARD ::pg_query::Node* release_select_stmt(); ::pg_query::Node* mutable_select_stmt(); void set_allocated_select_stmt(::pg_query::Node* select_stmt); private: const ::pg_query::Node& _internal_select_stmt() const; ::pg_query::Node* _internal_mutable_select_stmt(); public: void unsafe_arena_set_allocated_select_stmt( ::pg_query::Node* select_stmt); ::pg_query::Node* unsafe_arena_release_select_stmt(); // .pg_query.OnConflictClause on_conflict_clause = 4 [json_name = "onConflictClause"]; bool has_on_conflict_clause() const; private: bool _internal_has_on_conflict_clause() const; public: void clear_on_conflict_clause(); const ::pg_query::OnConflictClause& on_conflict_clause() const; 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* on_conflict_clause); private: const ::pg_query::OnConflictClause& _internal_on_conflict_clause() const; ::pg_query::OnConflictClause* _internal_mutable_on_conflict_clause(); public: void unsafe_arena_set_allocated_on_conflict_clause( ::pg_query::OnConflictClause* on_conflict_clause); ::pg_query::OnConflictClause* unsafe_arena_release_on_conflict_clause(); // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; bool has_with_clause() const; private: bool _internal_has_with_clause() const; public: void clear_with_clause(); const ::pg_query::WithClause& with_clause() const; PROTOBUF_NODISCARD ::pg_query::WithClause* release_with_clause(); ::pg_query::WithClause* mutable_with_clause(); void set_allocated_with_clause(::pg_query::WithClause* with_clause); private: const ::pg_query::WithClause& _internal_with_clause() const; ::pg_query::WithClause* _internal_mutable_with_clause(); public: void unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause); ::pg_query::WithClause* unsafe_arena_release_with_clause(); // .pg_query.OverridingKind override = 7 [json_name = "override"]; void clear_override(); ::pg_query::OverridingKind override() const; void set_override(::pg_query::OverridingKind value); private: ::pg_query::OverridingKind _internal_override() const; void _internal_set_override(::pg_query::OverridingKind value); public: // @@protoc_insertion_point(class_scope:pg_query.InsertStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cols_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > returning_list_; ::pg_query::RangeVar* relation_; ::pg_query::Node* select_stmt_; ::pg_query::OnConflictClause* on_conflict_clause_; ::pg_query::WithClause* with_clause_; int override_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DeleteStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DeleteStmt) */ { public: inline DeleteStmt() : DeleteStmt(nullptr) {} ~DeleteStmt() override; explicit PROTOBUF_CONSTEXPR DeleteStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); DeleteStmt(const DeleteStmt& from); DeleteStmt(DeleteStmt&& from) noexcept : DeleteStmt() { *this = ::std::move(from); } inline DeleteStmt& operator=(const DeleteStmt& from) { CopyFrom(from); return *this; } inline DeleteStmt& operator=(DeleteStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 66; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DeleteStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DeleteStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const DeleteStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const DeleteStmt& from) { DeleteStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DeleteStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DeleteStmt"; } protected: explicit DeleteStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_using_clause(); private: const ::pg_query::Node& _internal_using_clause(int index) const; ::pg_query::Node* _internal_add_using_clause(); public: const ::pg_query::Node& using_clause(int index) const; ::pg_query::Node* add_using_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& using_clause() const; // repeated .pg_query.Node returning_list = 4 [json_name = "returningList"]; int returning_list_size() const; private: int _internal_returning_list_size() const; public: void clear_returning_list(); ::pg_query::Node* mutable_returning_list(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_returning_list(); private: const ::pg_query::Node& _internal_returning_list(int index) const; ::pg_query::Node* _internal_add_returning_list(); public: const ::pg_query::Node& returning_list(int index) const; ::pg_query::Node* add_returning_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& returning_list() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // .pg_query.WithClause with_clause = 5 [json_name = "withClause"]; bool has_with_clause() const; private: bool _internal_has_with_clause() const; public: void clear_with_clause(); const ::pg_query::WithClause& with_clause() const; PROTOBUF_NODISCARD ::pg_query::WithClause* release_with_clause(); ::pg_query::WithClause* mutable_with_clause(); void set_allocated_with_clause(::pg_query::WithClause* with_clause); private: const ::pg_query::WithClause& _internal_with_clause() const; ::pg_query::WithClause* _internal_mutable_with_clause(); public: void unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause); ::pg_query::WithClause* unsafe_arena_release_with_clause(); // @@protoc_insertion_point(class_scope:pg_query.DeleteStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > using_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > returning_list_; ::pg_query::RangeVar* relation_; ::pg_query::Node* where_clause_; ::pg_query::WithClause* with_clause_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class UpdateStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.UpdateStmt) */ { public: inline UpdateStmt() : UpdateStmt(nullptr) {} ~UpdateStmt() override; explicit PROTOBUF_CONSTEXPR UpdateStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); UpdateStmt(const UpdateStmt& from); UpdateStmt(UpdateStmt&& from) noexcept : UpdateStmt() { *this = ::std::move(from); } inline UpdateStmt& operator=(const UpdateStmt& from) { CopyFrom(from); return *this; } inline UpdateStmt& operator=(UpdateStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 67; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(UpdateStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- UpdateStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const UpdateStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const UpdateStmt& from) { UpdateStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(UpdateStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.UpdateStmt"; } protected: explicit UpdateStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_target_list(); private: const ::pg_query::Node& _internal_target_list(int index) const; ::pg_query::Node* _internal_add_target_list(); public: const ::pg_query::Node& target_list(int index) const; ::pg_query::Node* add_target_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& target_list() const; // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; int from_clause_size() const; private: int _internal_from_clause_size() const; public: void clear_from_clause(); ::pg_query::Node* mutable_from_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_from_clause(); private: const ::pg_query::Node& _internal_from_clause(int index) const; ::pg_query::Node* _internal_add_from_clause(); public: const ::pg_query::Node& from_clause(int index) const; ::pg_query::Node* add_from_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& from_clause() const; // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; int returning_list_size() const; private: int _internal_returning_list_size() const; public: void clear_returning_list(); ::pg_query::Node* mutable_returning_list(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_returning_list(); private: const ::pg_query::Node& _internal_returning_list(int index) const; ::pg_query::Node* _internal_add_returning_list(); public: const ::pg_query::Node& returning_list(int index) const; ::pg_query::Node* add_returning_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& returning_list() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; bool has_with_clause() const; private: bool _internal_has_with_clause() const; public: void clear_with_clause(); const ::pg_query::WithClause& with_clause() const; PROTOBUF_NODISCARD ::pg_query::WithClause* release_with_clause(); ::pg_query::WithClause* mutable_with_clause(); void set_allocated_with_clause(::pg_query::WithClause* with_clause); private: const ::pg_query::WithClause& _internal_with_clause() const; ::pg_query::WithClause* _internal_mutable_with_clause(); public: void unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause); ::pg_query::WithClause* unsafe_arena_release_with_clause(); // @@protoc_insertion_point(class_scope:pg_query.UpdateStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > target_list_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > from_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > returning_list_; ::pg_query::RangeVar* relation_; ::pg_query::Node* where_clause_; ::pg_query::WithClause* with_clause_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class MergeStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.MergeStmt) */ { public: inline MergeStmt() : MergeStmt(nullptr) {} ~MergeStmt() override; explicit PROTOBUF_CONSTEXPR MergeStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); MergeStmt(const MergeStmt& 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 (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 68; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(MergeStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- MergeStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const MergeStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const MergeStmt& from) { MergeStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(MergeStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.MergeStmt"; } protected: explicit MergeStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kMergeWhenClausesFieldNumber = 4, kRelationFieldNumber = 1, kSourceRelationFieldNumber = 2, kJoinConditionFieldNumber = 3, kWithClauseFieldNumber = 5, }; // 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_merge_when_clauses(); private: const ::pg_query::Node& _internal_merge_when_clauses(int index) const; ::pg_query::Node* _internal_add_merge_when_clauses(); public: const ::pg_query::Node& merge_when_clauses(int index) const; ::pg_query::Node* add_merge_when_clauses(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& merge_when_clauses() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node source_relation = 2 [json_name = "sourceRelation"]; bool has_source_relation() const; private: bool _internal_has_source_relation() const; public: 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* source_relation); private: const ::pg_query::Node& _internal_source_relation() const; ::pg_query::Node* _internal_mutable_source_relation(); public: void unsafe_arena_set_allocated_source_relation( ::pg_query::Node* source_relation); ::pg_query::Node* unsafe_arena_release_source_relation(); // .pg_query.Node join_condition = 3 [json_name = "joinCondition"]; bool has_join_condition() const; private: bool _internal_has_join_condition() const; public: 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* join_condition); private: const ::pg_query::Node& _internal_join_condition() const; ::pg_query::Node* _internal_mutable_join_condition(); public: void unsafe_arena_set_allocated_join_condition( ::pg_query::Node* join_condition); ::pg_query::Node* unsafe_arena_release_join_condition(); // .pg_query.WithClause with_clause = 5 [json_name = "withClause"]; bool has_with_clause() const; private: bool _internal_has_with_clause() const; public: void clear_with_clause(); const ::pg_query::WithClause& with_clause() const; PROTOBUF_NODISCARD ::pg_query::WithClause* release_with_clause(); ::pg_query::WithClause* mutable_with_clause(); void set_allocated_with_clause(::pg_query::WithClause* with_clause); private: const ::pg_query::WithClause& _internal_with_clause() const; ::pg_query::WithClause* _internal_mutable_with_clause(); public: void unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause); ::pg_query::WithClause* unsafe_arena_release_with_clause(); // @@protoc_insertion_point(class_scope:pg_query.MergeStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > merge_when_clauses_; ::pg_query::RangeVar* relation_; ::pg_query::Node* source_relation_; ::pg_query::Node* join_condition_; ::pg_query::WithClause* with_clause_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SelectStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SelectStmt) */ { public: inline SelectStmt() : SelectStmt(nullptr) {} ~SelectStmt() override; explicit PROTOBUF_CONSTEXPR SelectStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); SelectStmt(const SelectStmt& from); SelectStmt(SelectStmt&& from) noexcept : SelectStmt() { *this = ::std::move(from); } inline SelectStmt& operator=(const SelectStmt& from) { CopyFrom(from); return *this; } inline SelectStmt& operator=(SelectStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 69; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SelectStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SelectStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const SelectStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const SelectStmt& from) { SelectStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SelectStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SelectStmt"; } protected: explicit SelectStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_distinct_clause(); private: const ::pg_query::Node& _internal_distinct_clause(int index) const; ::pg_query::Node* _internal_add_distinct_clause(); public: const ::pg_query::Node& distinct_clause(int index) const; ::pg_query::Node* add_distinct_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& distinct_clause() const; // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; int target_list_size() const; private: int _internal_target_list_size() const; public: void clear_target_list(); ::pg_query::Node* mutable_target_list(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_target_list(); private: const ::pg_query::Node& _internal_target_list(int index) const; ::pg_query::Node* _internal_add_target_list(); public: const ::pg_query::Node& target_list(int index) const; ::pg_query::Node* add_target_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& target_list() const; // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; int from_clause_size() const; private: int _internal_from_clause_size() const; public: void clear_from_clause(); ::pg_query::Node* mutable_from_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_from_clause(); private: const ::pg_query::Node& _internal_from_clause(int index) const; ::pg_query::Node* _internal_add_from_clause(); public: const ::pg_query::Node& from_clause(int index) const; ::pg_query::Node* add_from_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& from_clause() const; // repeated .pg_query.Node group_clause = 6 [json_name = "groupClause"]; int group_clause_size() const; private: int _internal_group_clause_size() const; public: void clear_group_clause(); ::pg_query::Node* mutable_group_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_group_clause(); private: const ::pg_query::Node& _internal_group_clause(int index) const; ::pg_query::Node* _internal_add_group_clause(); public: const ::pg_query::Node& group_clause(int index) const; ::pg_query::Node* add_group_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& group_clause() const; // repeated .pg_query.Node window_clause = 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_window_clause(); private: const ::pg_query::Node& _internal_window_clause(int index) const; ::pg_query::Node* _internal_add_window_clause(); public: const ::pg_query::Node& window_clause(int index) const; ::pg_query::Node* add_window_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& window_clause() const; // repeated .pg_query.Node values_lists = 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_values_lists(); private: const ::pg_query::Node& _internal_values_lists(int index) const; ::pg_query::Node* _internal_add_values_lists(); public: const ::pg_query::Node& values_lists(int index) const; ::pg_query::Node* add_values_lists(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& values_lists() const; // repeated .pg_query.Node sort_clause = 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_sort_clause(); private: const ::pg_query::Node& _internal_sort_clause(int index) const; ::pg_query::Node* _internal_add_sort_clause(); public: const ::pg_query::Node& sort_clause(int index) const; ::pg_query::Node* add_sort_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& sort_clause() const; // repeated .pg_query.Node locking_clause = 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_locking_clause(); private: const ::pg_query::Node& _internal_locking_clause(int index) const; ::pg_query::Node* _internal_add_locking_clause(); public: const ::pg_query::Node& locking_clause(int index) const; ::pg_query::Node* add_locking_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& locking_clause() const; // .pg_query.IntoClause into_clause = 2 [json_name = "intoClause"]; bool has_into_clause() const; private: bool _internal_has_into_clause() const; public: void clear_into_clause(); const ::pg_query::IntoClause& into_clause() const; PROTOBUF_NODISCARD ::pg_query::IntoClause* release_into_clause(); ::pg_query::IntoClause* mutable_into_clause(); void set_allocated_into_clause(::pg_query::IntoClause* into_clause); private: const ::pg_query::IntoClause& _internal_into_clause() const; ::pg_query::IntoClause* _internal_mutable_into_clause(); public: void unsafe_arena_set_allocated_into_clause( ::pg_query::IntoClause* into_clause); ::pg_query::IntoClause* unsafe_arena_release_into_clause(); // .pg_query.Node where_clause = 5 [json_name = "whereClause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // .pg_query.Node having_clause = 8 [json_name = "havingClause"]; bool has_having_clause() const; private: bool _internal_has_having_clause() const; public: void clear_having_clause(); const ::pg_query::Node& having_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_having_clause(); ::pg_query::Node* mutable_having_clause(); void set_allocated_having_clause(::pg_query::Node* having_clause); private: const ::pg_query::Node& _internal_having_clause() const; ::pg_query::Node* _internal_mutable_having_clause(); public: void unsafe_arena_set_allocated_having_clause( ::pg_query::Node* having_clause); ::pg_query::Node* unsafe_arena_release_having_clause(); // .pg_query.Node limit_offset = 12 [json_name = "limitOffset"]; bool has_limit_offset() const; private: bool _internal_has_limit_offset() const; public: void clear_limit_offset(); const ::pg_query::Node& limit_offset() const; PROTOBUF_NODISCARD ::pg_query::Node* release_limit_offset(); ::pg_query::Node* mutable_limit_offset(); void set_allocated_limit_offset(::pg_query::Node* limit_offset); private: const ::pg_query::Node& _internal_limit_offset() const; ::pg_query::Node* _internal_mutable_limit_offset(); public: void unsafe_arena_set_allocated_limit_offset( ::pg_query::Node* limit_offset); ::pg_query::Node* unsafe_arena_release_limit_offset(); // .pg_query.Node limit_count = 13 [json_name = "limitCount"]; bool has_limit_count() const; private: bool _internal_has_limit_count() const; public: void clear_limit_count(); const ::pg_query::Node& limit_count() const; PROTOBUF_NODISCARD ::pg_query::Node* release_limit_count(); ::pg_query::Node* mutable_limit_count(); void set_allocated_limit_count(::pg_query::Node* limit_count); private: const ::pg_query::Node& _internal_limit_count() const; ::pg_query::Node* _internal_mutable_limit_count(); public: void unsafe_arena_set_allocated_limit_count( ::pg_query::Node* limit_count); ::pg_query::Node* unsafe_arena_release_limit_count(); // .pg_query.WithClause with_clause = 16 [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* with_clause); private: const ::pg_query::WithClause& _internal_with_clause() const; ::pg_query::WithClause* _internal_mutable_with_clause(); public: void unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause); ::pg_query::WithClause* unsafe_arena_release_with_clause(); // .pg_query.SelectStmt larg = 19 [json_name = "larg"]; bool has_larg() const; private: bool _internal_has_larg() const; public: 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* larg); private: const ::pg_query::SelectStmt& _internal_larg() const; ::pg_query::SelectStmt* _internal_mutable_larg(); public: void unsafe_arena_set_allocated_larg( ::pg_query::SelectStmt* larg); ::pg_query::SelectStmt* unsafe_arena_release_larg(); // .pg_query.SelectStmt rarg = 20 [json_name = "rarg"]; bool has_rarg() const; private: bool _internal_has_rarg() const; public: 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* rarg); private: const ::pg_query::SelectStmt& _internal_rarg() const; ::pg_query::SelectStmt* _internal_mutable_rarg(); public: void unsafe_arena_set_allocated_rarg( ::pg_query::SelectStmt* rarg); ::pg_query::SelectStmt* unsafe_arena_release_rarg(); // 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > distinct_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > target_list_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > from_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > group_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > window_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > values_lists_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > sort_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > locking_clause_; ::pg_query::IntoClause* into_clause_; ::pg_query::Node* where_clause_; ::pg_query::Node* having_clause_; ::pg_query::Node* limit_offset_; ::pg_query::Node* limit_count_; ::pg_query::WithClause* with_clause_; ::pg_query::SelectStmt* larg_; ::pg_query::SelectStmt* rarg_; bool group_distinct_; bool all_; int limit_option_; int op_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ReturnStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ReturnStmt) */ { public: inline ReturnStmt() : ReturnStmt(nullptr) {} ~ReturnStmt() override; explicit PROTOBUF_CONSTEXPR ReturnStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ReturnStmt(const ReturnStmt& 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 (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 70; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ReturnStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ReturnStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ReturnStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ReturnStmt& from) { ReturnStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ReturnStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ReturnStmt"; } protected: explicit ReturnStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kReturnvalFieldNumber = 1, }; // .pg_query.Node returnval = 1 [json_name = "returnval"]; bool has_returnval() const; private: bool _internal_has_returnval() const; public: 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* returnval); private: const ::pg_query::Node& _internal_returnval() const; ::pg_query::Node* _internal_mutable_returnval(); public: void unsafe_arena_set_allocated_returnval( ::pg_query::Node* returnval); ::pg_query::Node* unsafe_arena_release_returnval(); // @@protoc_insertion_point(class_scope:pg_query.ReturnStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* returnval_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class PLAssignStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PLAssignStmt) */ { public: inline PLAssignStmt() : PLAssignStmt(nullptr) {} ~PLAssignStmt() override; explicit PROTOBUF_CONSTEXPR PLAssignStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); PLAssignStmt(const PLAssignStmt& 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 (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 71; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PLAssignStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PLAssignStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const PLAssignStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const PLAssignStmt& from) { PLAssignStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(PLAssignStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.PLAssignStmt"; } protected: explicit PLAssignStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_indirection(); private: const ::pg_query::Node& _internal_indirection(int index) const; ::pg_query::Node* _internal_add_indirection(); public: const ::pg_query::Node& indirection(int index) const; ::pg_query::Node* add_indirection(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& indirection() const; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; template void set_name(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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; private: bool _internal_has_val() const; public: 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* val); private: const ::pg_query::SelectStmt& _internal_val() const; ::pg_query::SelectStmt* _internal_mutable_val(); public: void unsafe_arena_set_allocated_val( ::pg_query::SelectStmt* val); ::pg_query::SelectStmt* unsafe_arena_release_val(); // 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > indirection_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::SelectStmt* val_; int32_t nnames_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterTableStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTableStmt) */ { public: inline AlterTableStmt() : AlterTableStmt(nullptr) {} ~AlterTableStmt() override; explicit PROTOBUF_CONSTEXPR AlterTableStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterTableStmt(const AlterTableStmt& from); AlterTableStmt(AlterTableStmt&& from) noexcept : AlterTableStmt() { *this = ::std::move(from); } inline AlterTableStmt& operator=(const AlterTableStmt& from) { CopyFrom(from); return *this; } inline AlterTableStmt& operator=(AlterTableStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 72; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTableStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterTableStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterTableStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterTableStmt& from) { AlterTableStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterTableStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterTableStmt"; } protected: explicit AlterTableStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_cmds(); private: const ::pg_query::Node& _internal_cmds(int index) const; ::pg_query::Node* _internal_add_cmds(); public: const ::pg_query::Node& cmds(int index) const; ::pg_query::Node* add_cmds(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& cmds() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.ObjectType 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cmds_; ::pg_query::RangeVar* relation_; int objtype_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterTableCmd final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTableCmd) */ { public: inline AlterTableCmd() : AlterTableCmd(nullptr) {} ~AlterTableCmd() override; explicit PROTOBUF_CONSTEXPR AlterTableCmd(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterTableCmd(const AlterTableCmd& from); AlterTableCmd(AlterTableCmd&& from) noexcept : AlterTableCmd() { *this = ::std::move(from); } inline AlterTableCmd& operator=(const AlterTableCmd& from) { CopyFrom(from); return *this; } inline AlterTableCmd& operator=(AlterTableCmd&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 73; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTableCmd* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterTableCmd* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterTableCmd& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterTableCmd& from) { AlterTableCmd::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterTableCmd* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterTableCmd"; } protected: explicit AlterTableCmd(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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; private: bool _internal_has_newowner() const; public: 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* newowner); private: const ::pg_query::RoleSpec& _internal_newowner() const; ::pg_query::RoleSpec* _internal_mutable_newowner(); public: void unsafe_arena_set_allocated_newowner( ::pg_query::RoleSpec* newowner); ::pg_query::RoleSpec* unsafe_arena_release_newowner(); // .pg_query.Node def = 5 [json_name = "def"]; bool has_def() const; private: bool _internal_has_def() const; public: void clear_def(); const ::pg_query::Node& def() const; PROTOBUF_NODISCARD ::pg_query::Node* release_def(); ::pg_query::Node* mutable_def(); void set_allocated_def(::pg_query::Node* def); private: const ::pg_query::Node& _internal_def() const; ::pg_query::Node* _internal_mutable_def(); public: void unsafe_arena_set_allocated_def( ::pg_query::Node* def); ::pg_query::Node* unsafe_arena_release_def(); // .pg_query.AlterTableType subtype = 1 [json_name = "subtype"]; void clear_subtype(); ::pg_query::AlterTableType subtype() const; void set_subtype(::pg_query::AlterTableType value); private: ::pg_query::AlterTableType _internal_subtype() const; void _internal_set_subtype(::pg_query::AlterTableType value); public: // int32 num = 3 [json_name = "num"]; void clear_num(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::RoleSpec* newowner_; ::pg_query::Node* def_; int subtype_; int32_t num_; int behavior_; bool missing_ok_; bool recurse_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterDomainStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDomainStmt) */ { public: inline AlterDomainStmt() : AlterDomainStmt(nullptr) {} ~AlterDomainStmt() override; explicit PROTOBUF_CONSTEXPR AlterDomainStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterDomainStmt(const AlterDomainStmt& from); AlterDomainStmt(AlterDomainStmt&& from) noexcept : AlterDomainStmt() { *this = ::std::move(from); } inline AlterDomainStmt& operator=(const AlterDomainStmt& from) { CopyFrom(from); return *this; } inline AlterDomainStmt& operator=(AlterDomainStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 74; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterDomainStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterDomainStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterDomainStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterDomainStmt& from) { AlterDomainStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterDomainStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterDomainStmt"; } protected: explicit AlterDomainStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_type_name(); private: const ::pg_query::Node& _internal_type_name(int index) const; ::pg_query::Node* _internal_add_type_name(); public: const ::pg_query::Node& type_name(int index) const; ::pg_query::Node* add_type_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& type_name() const; // string subtype = 1 [json_name = "subtype"]; void clear_subtype(); const std::string& subtype() const; template void set_subtype(ArgT0&& arg0, ArgT... args); std::string* mutable_subtype(); PROTOBUF_NODISCARD std::string* release_subtype(); void set_allocated_subtype(std::string* subtype); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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; private: bool _internal_has_def() const; public: 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* def); private: const ::pg_query::Node& _internal_def() const; ::pg_query::Node* _internal_mutable_def(); public: void unsafe_arena_set_allocated_def( ::pg_query::Node* def); ::pg_query::Node* unsafe_arena_release_def(); // .pg_query.DropBehavior behavior = 5 [json_name = "behavior"]; void clear_behavior(); ::pg_query::DropBehavior behavior() const; void set_behavior(::pg_query::DropBehavior value); private: ::pg_query::DropBehavior _internal_behavior() const; void _internal_set_behavior(::pg_query::DropBehavior value); public: // bool missing_ok = 6 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterDomainStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > type_name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr subtype_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::Node* def_; int behavior_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SetOperationStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SetOperationStmt) */ { public: inline SetOperationStmt() : SetOperationStmt(nullptr) {} ~SetOperationStmt() override; explicit PROTOBUF_CONSTEXPR SetOperationStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); SetOperationStmt(const SetOperationStmt& from); SetOperationStmt(SetOperationStmt&& from) noexcept : SetOperationStmt() { *this = ::std::move(from); } inline SetOperationStmt& operator=(const SetOperationStmt& from) { CopyFrom(from); return *this; } inline SetOperationStmt& operator=(SetOperationStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 75; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SetOperationStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SetOperationStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const SetOperationStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const SetOperationStmt& from) { SetOperationStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SetOperationStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SetOperationStmt"; } protected: explicit SetOperationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_col_types(); private: const ::pg_query::Node& _internal_col_types(int index) const; ::pg_query::Node* _internal_add_col_types(); public: const ::pg_query::Node& col_types(int index) const; ::pg_query::Node* add_col_types(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& col_types() const; // repeated .pg_query.Node col_typmods = 6 [json_name = "colTypmods"]; int col_typmods_size() const; private: int _internal_col_typmods_size() const; public: void clear_col_typmods(); ::pg_query::Node* mutable_col_typmods(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_col_typmods(); private: const ::pg_query::Node& _internal_col_typmods(int index) const; ::pg_query::Node* _internal_add_col_typmods(); public: const ::pg_query::Node& col_typmods(int index) const; ::pg_query::Node* add_col_typmods(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& col_typmods() const; // repeated .pg_query.Node col_collations = 7 [json_name = "colCollations"]; int col_collations_size() const; private: int _internal_col_collations_size() const; public: void clear_col_collations(); ::pg_query::Node* mutable_col_collations(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_col_collations(); private: const ::pg_query::Node& _internal_col_collations(int index) const; ::pg_query::Node* _internal_add_col_collations(); public: const ::pg_query::Node& col_collations(int index) const; ::pg_query::Node* add_col_collations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& col_collations() const; // repeated .pg_query.Node group_clauses = 8 [json_name = "groupClauses"]; int group_clauses_size() const; private: int _internal_group_clauses_size() const; public: void clear_group_clauses(); ::pg_query::Node* mutable_group_clauses(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_group_clauses(); private: const ::pg_query::Node& _internal_group_clauses(int index) const; ::pg_query::Node* _internal_add_group_clauses(); public: const ::pg_query::Node& group_clauses(int index) const; ::pg_query::Node* add_group_clauses(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& group_clauses() const; // .pg_query.Node larg = 3 [json_name = "larg"]; bool has_larg() const; private: bool _internal_has_larg() const; public: void clear_larg(); const ::pg_query::Node& larg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_larg(); ::pg_query::Node* mutable_larg(); void set_allocated_larg(::pg_query::Node* larg); private: const ::pg_query::Node& _internal_larg() const; ::pg_query::Node* _internal_mutable_larg(); public: void unsafe_arena_set_allocated_larg( ::pg_query::Node* larg); ::pg_query::Node* unsafe_arena_release_larg(); // .pg_query.Node rarg = 4 [json_name = "rarg"]; bool has_rarg() const; private: bool _internal_has_rarg() const; public: void clear_rarg(); const ::pg_query::Node& rarg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_rarg(); ::pg_query::Node* mutable_rarg(); void set_allocated_rarg(::pg_query::Node* rarg); private: const ::pg_query::Node& _internal_rarg() const; ::pg_query::Node* _internal_mutable_rarg(); public: void unsafe_arena_set_allocated_rarg( ::pg_query::Node* rarg); ::pg_query::Node* unsafe_arena_release_rarg(); // .pg_query.SetOperation op = 1 [json_name = "op"]; void clear_op(); ::pg_query::SetOperation op() const; void set_op(::pg_query::SetOperation value); private: ::pg_query::SetOperation _internal_op() const; void _internal_set_op(::pg_query::SetOperation value); public: // bool all = 2 [json_name = "all"]; void clear_all(); bool all() const; void set_all(bool value); private: bool _internal_all() const; void _internal_set_all(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.SetOperationStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > col_types_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > col_typmods_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > col_collations_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > group_clauses_; ::pg_query::Node* larg_; ::pg_query::Node* rarg_; int op_; bool all_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class GrantStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.GrantStmt) */ { public: inline GrantStmt() : GrantStmt(nullptr) {} ~GrantStmt() override; explicit PROTOBUF_CONSTEXPR GrantStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); GrantStmt(const GrantStmt& from); GrantStmt(GrantStmt&& from) noexcept : GrantStmt() { *this = ::std::move(from); } inline GrantStmt& operator=(const GrantStmt& from) { CopyFrom(from); return *this; } inline GrantStmt& operator=(GrantStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 76; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(GrantStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- GrantStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const GrantStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const GrantStmt& from) { GrantStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(GrantStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.GrantStmt"; } protected: explicit GrantStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_objects(); private: const ::pg_query::Node& _internal_objects(int index) const; ::pg_query::Node* _internal_add_objects(); public: const ::pg_query::Node& objects(int index) const; ::pg_query::Node* add_objects(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& objects() const; // repeated .pg_query.Node privileges = 5 [json_name = "privileges"]; int privileges_size() const; private: int _internal_privileges_size() const; public: void clear_privileges(); ::pg_query::Node* mutable_privileges(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_privileges(); private: const ::pg_query::Node& _internal_privileges(int index) const; ::pg_query::Node* _internal_add_privileges(); public: const ::pg_query::Node& privileges(int index) const; ::pg_query::Node* add_privileges(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& privileges() const; // repeated .pg_query.Node grantees = 6 [json_name = "grantees"]; int grantees_size() const; private: int _internal_grantees_size() const; public: void clear_grantees(); ::pg_query::Node* mutable_grantees(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_grantees(); private: const ::pg_query::Node& _internal_grantees(int index) const; ::pg_query::Node* _internal_add_grantees(); public: const ::pg_query::Node& grantees(int index) const; ::pg_query::Node* add_grantees(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& grantees() const; // .pg_query.RoleSpec grantor = 8 [json_name = "grantor"]; bool has_grantor() const; private: bool _internal_has_grantor() const; public: 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* grantor); private: const ::pg_query::RoleSpec& _internal_grantor() const; ::pg_query::RoleSpec* _internal_mutable_grantor(); public: void unsafe_arena_set_allocated_grantor( ::pg_query::RoleSpec* grantor); ::pg_query::RoleSpec* unsafe_arena_release_grantor(); // .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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > objects_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > privileges_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > grantees_; ::pg_query::RoleSpec* grantor_; int targtype_; int objtype_; bool is_grant_; bool grant_option_; int behavior_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class GrantRoleStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.GrantRoleStmt) */ { public: inline GrantRoleStmt() : GrantRoleStmt(nullptr) {} ~GrantRoleStmt() override; explicit PROTOBUF_CONSTEXPR GrantRoleStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); GrantRoleStmt(const GrantRoleStmt& from); GrantRoleStmt(GrantRoleStmt&& from) noexcept : GrantRoleStmt() { *this = ::std::move(from); } inline GrantRoleStmt& operator=(const GrantRoleStmt& from) { CopyFrom(from); return *this; } inline GrantRoleStmt& operator=(GrantRoleStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 77; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(GrantRoleStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- GrantRoleStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const GrantRoleStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const GrantRoleStmt& from) { GrantRoleStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(GrantRoleStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.GrantRoleStmt"; } protected: explicit GrantRoleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kGrantedRolesFieldNumber = 1, kGranteeRolesFieldNumber = 2, kGrantorFieldNumber = 5, kIsGrantFieldNumber = 3, kAdminOptFieldNumber = 4, kBehaviorFieldNumber = 6, }; // repeated .pg_query.Node granted_roles = 1 [json_name = "granted_roles"]; int granted_roles_size() const; private: int _internal_granted_roles_size() const; public: void clear_granted_roles(); ::pg_query::Node* mutable_granted_roles(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_granted_roles(); private: const ::pg_query::Node& _internal_granted_roles(int index) const; ::pg_query::Node* _internal_add_granted_roles(); public: const ::pg_query::Node& granted_roles(int index) const; ::pg_query::Node* add_granted_roles(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& granted_roles() const; // repeated .pg_query.Node grantee_roles = 2 [json_name = "grantee_roles"]; int grantee_roles_size() const; private: int _internal_grantee_roles_size() const; public: void clear_grantee_roles(); ::pg_query::Node* mutable_grantee_roles(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_grantee_roles(); private: const ::pg_query::Node& _internal_grantee_roles(int index) const; ::pg_query::Node* _internal_add_grantee_roles(); public: const ::pg_query::Node& grantee_roles(int index) const; ::pg_query::Node* add_grantee_roles(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& grantee_roles() const; // .pg_query.RoleSpec grantor = 5 [json_name = "grantor"]; bool has_grantor() const; private: bool _internal_has_grantor() const; public: void clear_grantor(); const ::pg_query::RoleSpec& grantor() const; PROTOBUF_NODISCARD ::pg_query::RoleSpec* release_grantor(); ::pg_query::RoleSpec* mutable_grantor(); void set_allocated_grantor(::pg_query::RoleSpec* grantor); private: const ::pg_query::RoleSpec& _internal_grantor() const; ::pg_query::RoleSpec* _internal_mutable_grantor(); public: void unsafe_arena_set_allocated_grantor( ::pg_query::RoleSpec* grantor); ::pg_query::RoleSpec* unsafe_arena_release_grantor(); // bool is_grant = 3 [json_name = "is_grant"]; void clear_is_grant(); bool is_grant() const; void set_is_grant(bool value); private: bool _internal_is_grant() const; void _internal_set_is_grant(bool value); public: // bool admin_opt = 4 [json_name = "admin_opt"]; void clear_admin_opt(); bool admin_opt() const; void set_admin_opt(bool value); private: bool _internal_admin_opt() const; void _internal_set_admin_opt(bool value); public: // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; void clear_behavior(); ::pg_query::DropBehavior behavior() const; void set_behavior(::pg_query::DropBehavior value); private: ::pg_query::DropBehavior _internal_behavior() const; void _internal_set_behavior(::pg_query::DropBehavior value); public: // @@protoc_insertion_point(class_scope:pg_query.GrantRoleStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > granted_roles_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > grantee_roles_; ::pg_query::RoleSpec* grantor_; bool is_grant_; bool admin_opt_; int behavior_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterDefaultPrivilegesStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDefaultPrivilegesStmt) */ { public: inline AlterDefaultPrivilegesStmt() : AlterDefaultPrivilegesStmt(nullptr) {} ~AlterDefaultPrivilegesStmt() override; explicit PROTOBUF_CONSTEXPR AlterDefaultPrivilegesStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterDefaultPrivilegesStmt(const AlterDefaultPrivilegesStmt& from); AlterDefaultPrivilegesStmt(AlterDefaultPrivilegesStmt&& from) noexcept : AlterDefaultPrivilegesStmt() { *this = ::std::move(from); } inline AlterDefaultPrivilegesStmt& operator=(const AlterDefaultPrivilegesStmt& from) { CopyFrom(from); return *this; } inline AlterDefaultPrivilegesStmt& operator=(AlterDefaultPrivilegesStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 78; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterDefaultPrivilegesStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterDefaultPrivilegesStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterDefaultPrivilegesStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterDefaultPrivilegesStmt& from) { AlterDefaultPrivilegesStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterDefaultPrivilegesStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterDefaultPrivilegesStmt"; } protected: explicit AlterDefaultPrivilegesStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.GrantStmt action = 2 [json_name = "action"]; bool has_action() const; private: bool _internal_has_action() const; public: void clear_action(); const ::pg_query::GrantStmt& action() const; PROTOBUF_NODISCARD ::pg_query::GrantStmt* release_action(); ::pg_query::GrantStmt* mutable_action(); void set_allocated_action(::pg_query::GrantStmt* action); private: const ::pg_query::GrantStmt& _internal_action() const; ::pg_query::GrantStmt* _internal_mutable_action(); public: void unsafe_arena_set_allocated_action( ::pg_query::GrantStmt* action); ::pg_query::GrantStmt* unsafe_arena_release_action(); // @@protoc_insertion_point(class_scope:pg_query.AlterDefaultPrivilegesStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::GrantStmt* action_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ClosePortalStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ClosePortalStmt) */ { public: inline ClosePortalStmt() : ClosePortalStmt(nullptr) {} ~ClosePortalStmt() override; explicit PROTOBUF_CONSTEXPR ClosePortalStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ClosePortalStmt(const ClosePortalStmt& from); ClosePortalStmt(ClosePortalStmt&& from) noexcept : ClosePortalStmt() { *this = ::std::move(from); } inline ClosePortalStmt& operator=(const ClosePortalStmt& from) { CopyFrom(from); return *this; } inline ClosePortalStmt& operator=(ClosePortalStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 79; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ClosePortalStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ClosePortalStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ClosePortalStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ClosePortalStmt& from) { ClosePortalStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ClosePortalStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ClosePortalStmt"; } protected: explicit ClosePortalStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_portalname(); PROTOBUF_NODISCARD std::string* release_portalname(); void set_allocated_portalname(std::string* portalname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr portalname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ClusterStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ClusterStmt) */ { public: inline ClusterStmt() : ClusterStmt(nullptr) {} ~ClusterStmt() override; explicit PROTOBUF_CONSTEXPR ClusterStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ClusterStmt(const ClusterStmt& from); ClusterStmt(ClusterStmt&& from) noexcept : ClusterStmt() { *this = ::std::move(from); } inline ClusterStmt& operator=(const ClusterStmt& from) { CopyFrom(from); return *this; } inline ClusterStmt& operator=(ClusterStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 80; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ClusterStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ClusterStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ClusterStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ClusterStmt& from) { ClusterStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ClusterStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ClusterStmt"; } protected: explicit ClusterStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_params(); private: const ::pg_query::Node& _internal_params(int index) const; ::pg_query::Node* _internal_add_params(); public: const ::pg_query::Node& params(int index) const; ::pg_query::Node* add_params(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& params() const; // string indexname = 2 [json_name = "indexname"]; void clear_indexname(); const std::string& indexname() const; template void set_indexname(ArgT0&& arg0, ArgT... args); std::string* mutable_indexname(); PROTOBUF_NODISCARD std::string* release_indexname(); void set_allocated_indexname(std::string* indexname); 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; private: bool _internal_has_relation() const; public: 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* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // @@protoc_insertion_point(class_scope:pg_query.ClusterStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > params_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr indexname_; ::pg_query::RangeVar* relation_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CopyStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CopyStmt) */ { public: inline CopyStmt() : CopyStmt(nullptr) {} ~CopyStmt() override; explicit PROTOBUF_CONSTEXPR CopyStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CopyStmt(const CopyStmt& from); CopyStmt(CopyStmt&& from) noexcept : CopyStmt() { *this = ::std::move(from); } inline CopyStmt& operator=(const CopyStmt& from) { CopyFrom(from); return *this; } inline CopyStmt& operator=(CopyStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 81; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CopyStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CopyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CopyStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CopyStmt& from) { CopyStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CopyStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CopyStmt"; } protected: explicit CopyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_attlist(); private: const ::pg_query::Node& _internal_attlist(int index) const; ::pg_query::Node* _internal_add_attlist(); public: const ::pg_query::Node& attlist(int index) const; ::pg_query::Node* add_attlist(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& attlist() const; // repeated .pg_query.Node options = 7 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string filename = 6 [json_name = "filename"]; void clear_filename(); const std::string& filename() const; template void set_filename(ArgT0&& arg0, ArgT... args); std::string* mutable_filename(); PROTOBUF_NODISCARD std::string* release_filename(); void set_allocated_filename(std::string* filename); 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; private: bool _internal_has_relation() const; public: 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* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node query = 2 [json_name = "query"]; bool has_query() const; private: bool _internal_has_query() const; public: void clear_query(); const ::pg_query::Node& query() const; PROTOBUF_NODISCARD ::pg_query::Node* release_query(); ::pg_query::Node* mutable_query(); void set_allocated_query(::pg_query::Node* query); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: void unsafe_arena_set_allocated_query( ::pg_query::Node* query); ::pg_query::Node* unsafe_arena_release_query(); // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // bool is_from = 4 [json_name = "is_from"]; void clear_is_from(); bool is_from() const; void set_is_from(bool value); private: bool _internal_is_from() const; void _internal_set_is_from(bool value); public: // bool is_program = 5 [json_name = "is_program"]; void clear_is_program(); bool is_program() const; void set_is_program(bool value); private: bool _internal_is_program() const; void _internal_set_is_program(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CopyStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > attlist_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr filename_; ::pg_query::RangeVar* relation_; ::pg_query::Node* query_; ::pg_query::Node* where_clause_; bool is_from_; bool is_program_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateStmt) */ { public: inline CreateStmt() : CreateStmt(nullptr) {} ~CreateStmt() override; explicit PROTOBUF_CONSTEXPR CreateStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateStmt(const CreateStmt& from); CreateStmt(CreateStmt&& from) noexcept : CreateStmt() { *this = ::std::move(from); } inline CreateStmt& operator=(const CreateStmt& from) { CopyFrom(from); return *this; } inline CreateStmt& operator=(CreateStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 82; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateStmt& from) { CreateStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateStmt"; } protected: explicit CreateStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_table_elts(); private: const ::pg_query::Node& _internal_table_elts(int index) const; ::pg_query::Node* _internal_add_table_elts(); public: const ::pg_query::Node& table_elts(int index) const; ::pg_query::Node* add_table_elts(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& table_elts() const; // repeated .pg_query.Node inh_relations = 3 [json_name = "inhRelations"]; int inh_relations_size() const; private: int _internal_inh_relations_size() const; public: void clear_inh_relations(); ::pg_query::Node* mutable_inh_relations(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_inh_relations(); private: const ::pg_query::Node& _internal_inh_relations(int index) const; ::pg_query::Node* _internal_add_inh_relations(); public: const ::pg_query::Node& inh_relations(int index) const; ::pg_query::Node* add_inh_relations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& inh_relations() const; // repeated .pg_query.Node constraints = 7 [json_name = "constraints"]; int constraints_size() const; private: int _internal_constraints_size() const; public: void clear_constraints(); ::pg_query::Node* mutable_constraints(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_constraints(); private: const ::pg_query::Node& _internal_constraints(int index) const; ::pg_query::Node* _internal_add_constraints(); public: const ::pg_query::Node& constraints(int index) const; ::pg_query::Node* add_constraints(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& constraints() const; // repeated .pg_query.Node options = 8 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string tablespacename = 10 [json_name = "tablespacename"]; void clear_tablespacename(); const std::string& tablespacename() const; template void set_tablespacename(ArgT0&& arg0, ArgT... args); std::string* mutable_tablespacename(); PROTOBUF_NODISCARD std::string* release_tablespacename(); void set_allocated_tablespacename(std::string* tablespacename); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_access_method(); PROTOBUF_NODISCARD std::string* release_access_method(); void set_allocated_access_method(std::string* access_method); 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; private: bool _internal_has_relation() const; public: 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* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.PartitionBoundSpec partbound = 4 [json_name = "partbound"]; bool has_partbound() const; private: bool _internal_has_partbound() const; public: void clear_partbound(); const ::pg_query::PartitionBoundSpec& partbound() const; PROTOBUF_NODISCARD ::pg_query::PartitionBoundSpec* release_partbound(); ::pg_query::PartitionBoundSpec* mutable_partbound(); void set_allocated_partbound(::pg_query::PartitionBoundSpec* partbound); private: const ::pg_query::PartitionBoundSpec& _internal_partbound() const; ::pg_query::PartitionBoundSpec* _internal_mutable_partbound(); public: void unsafe_arena_set_allocated_partbound( ::pg_query::PartitionBoundSpec* partbound); ::pg_query::PartitionBoundSpec* unsafe_arena_release_partbound(); // .pg_query.PartitionSpec partspec = 5 [json_name = "partspec"]; bool has_partspec() const; private: bool _internal_has_partspec() const; public: void clear_partspec(); const ::pg_query::PartitionSpec& partspec() const; PROTOBUF_NODISCARD ::pg_query::PartitionSpec* release_partspec(); ::pg_query::PartitionSpec* mutable_partspec(); void set_allocated_partspec(::pg_query::PartitionSpec* partspec); private: const ::pg_query::PartitionSpec& _internal_partspec() const; ::pg_query::PartitionSpec* _internal_mutable_partspec(); public: void unsafe_arena_set_allocated_partspec( ::pg_query::PartitionSpec* partspec); ::pg_query::PartitionSpec* unsafe_arena_release_partspec(); // .pg_query.TypeName of_typename = 6 [json_name = "ofTypename"]; bool has_of_typename() const; private: bool _internal_has_of_typename() const; public: void clear_of_typename(); const ::pg_query::TypeName& of_typename() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_of_typename(); ::pg_query::TypeName* mutable_of_typename(); void set_allocated_of_typename(::pg_query::TypeName* of_typename); private: const ::pg_query::TypeName& _internal_of_typename() const; ::pg_query::TypeName* _internal_mutable_of_typename(); public: void unsafe_arena_set_allocated_of_typename( ::pg_query::TypeName* of_typename); ::pg_query::TypeName* unsafe_arena_release_of_typename(); // .pg_query.OnCommitAction oncommit = 9 [json_name = "oncommit"]; void clear_oncommit(); ::pg_query::OnCommitAction oncommit() const; void set_oncommit(::pg_query::OnCommitAction value); private: ::pg_query::OnCommitAction _internal_oncommit() const; void _internal_set_oncommit(::pg_query::OnCommitAction value); public: // bool if_not_exists = 12 [json_name = "if_not_exists"]; void clear_if_not_exists(); bool if_not_exists() const; void set_if_not_exists(bool value); private: bool _internal_if_not_exists() const; void _internal_set_if_not_exists(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > table_elts_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > inh_relations_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > constraints_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tablespacename_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr access_method_; ::pg_query::RangeVar* relation_; ::pg_query::PartitionBoundSpec* partbound_; ::pg_query::PartitionSpec* partspec_; ::pg_query::TypeName* of_typename_; int oncommit_; bool if_not_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DefineStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DefineStmt) */ { public: inline DefineStmt() : DefineStmt(nullptr) {} ~DefineStmt() override; explicit PROTOBUF_CONSTEXPR DefineStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); DefineStmt(const DefineStmt& from); DefineStmt(DefineStmt&& from) noexcept : DefineStmt() { *this = ::std::move(from); } inline DefineStmt& operator=(const DefineStmt& from) { CopyFrom(from); return *this; } inline DefineStmt& operator=(DefineStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 83; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DefineStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DefineStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const DefineStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const DefineStmt& from) { DefineStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DefineStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DefineStmt"; } protected: explicit DefineStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_defnames(); private: const ::pg_query::Node& _internal_defnames(int index) const; ::pg_query::Node* _internal_add_defnames(); public: const ::pg_query::Node& defnames(int index) const; ::pg_query::Node* add_defnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& defnames() const; // repeated .pg_query.Node args = 4 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // repeated .pg_query.Node definition = 5 [json_name = "definition"]; int definition_size() const; private: int _internal_definition_size() const; public: void clear_definition(); ::pg_query::Node* mutable_definition(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_definition(); private: const ::pg_query::Node& _internal_definition(int index) const; ::pg_query::Node* _internal_add_definition(); public: const ::pg_query::Node& definition(int index) const; ::pg_query::Node* add_definition(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& definition() const; // .pg_query.ObjectType kind = 1 [json_name = "kind"]; void clear_kind(); ::pg_query::ObjectType kind() const; void set_kind(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_kind() const; void _internal_set_kind(::pg_query::ObjectType value); public: // bool oldstyle = 2 [json_name = "oldstyle"]; void clear_oldstyle(); bool oldstyle() const; void set_oldstyle(bool value); private: bool _internal_oldstyle() const; void _internal_set_oldstyle(bool value); public: // bool if_not_exists = 6 [json_name = "if_not_exists"]; void clear_if_not_exists(); bool if_not_exists() const; void set_if_not_exists(bool value); private: bool _internal_if_not_exists() const; void _internal_set_if_not_exists(bool value); public: // bool replace = 7 [json_name = "replace"]; void clear_replace(); bool replace() const; void set_replace(bool value); private: bool _internal_replace() const; void _internal_set_replace(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.DefineStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > defnames_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > definition_; int kind_; bool oldstyle_; bool if_not_exists_; bool replace_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DropStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropStmt) */ { public: inline DropStmt() : DropStmt(nullptr) {} ~DropStmt() override; explicit PROTOBUF_CONSTEXPR DropStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); DropStmt(const DropStmt& from); DropStmt(DropStmt&& from) noexcept : DropStmt() { *this = ::std::move(from); } inline DropStmt& operator=(const DropStmt& from) { CopyFrom(from); return *this; } inline DropStmt& operator=(DropStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 84; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DropStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const DropStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const DropStmt& from) { DropStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DropStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DropStmt"; } protected: explicit DropStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_objects(); private: const ::pg_query::Node& _internal_objects(int index) const; ::pg_query::Node* _internal_add_objects(); public: const ::pg_query::Node& objects(int index) const; ::pg_query::Node* add_objects(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& objects() const; // .pg_query.ObjectType remove_type = 2 [json_name = "removeType"]; void clear_remove_type(); ::pg_query::ObjectType remove_type() const; void set_remove_type(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_remove_type() const; void _internal_set_remove_type(::pg_query::ObjectType value); public: // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; void clear_behavior(); ::pg_query::DropBehavior behavior() const; void set_behavior(::pg_query::DropBehavior value); private: ::pg_query::DropBehavior _internal_behavior() const; void _internal_set_behavior(::pg_query::DropBehavior value); public: // bool missing_ok = 4 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // bool concurrent = 5 [json_name = "concurrent"]; void clear_concurrent(); bool concurrent() const; void set_concurrent(bool value); private: bool _internal_concurrent() const; void _internal_set_concurrent(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.DropStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > objects_; int remove_type_; int behavior_; bool missing_ok_; bool concurrent_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TruncateStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TruncateStmt) */ { public: inline TruncateStmt() : TruncateStmt(nullptr) {} ~TruncateStmt() override; explicit PROTOBUF_CONSTEXPR TruncateStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); TruncateStmt(const TruncateStmt& from); TruncateStmt(TruncateStmt&& from) noexcept : TruncateStmt() { *this = ::std::move(from); } inline TruncateStmt& operator=(const TruncateStmt& from) { CopyFrom(from); return *this; } inline TruncateStmt& operator=(TruncateStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 85; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TruncateStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TruncateStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const TruncateStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const TruncateStmt& from) { TruncateStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TruncateStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TruncateStmt"; } protected: explicit TruncateStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_relations(); private: const ::pg_query::Node& _internal_relations(int index) const; ::pg_query::Node* _internal_add_relations(); public: const ::pg_query::Node& relations(int index) const; ::pg_query::Node* add_relations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& relations() const; // bool restart_seqs = 2 [json_name = "restart_seqs"]; void clear_restart_seqs(); bool restart_seqs() const; void set_restart_seqs(bool value); private: bool _internal_restart_seqs() const; void _internal_set_restart_seqs(bool value); public: // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; void clear_behavior(); ::pg_query::DropBehavior behavior() const; void set_behavior(::pg_query::DropBehavior value); private: ::pg_query::DropBehavior _internal_behavior() const; void _internal_set_behavior(::pg_query::DropBehavior value); public: // @@protoc_insertion_point(class_scope:pg_query.TruncateStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > relations_; bool restart_seqs_; int behavior_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CommentStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CommentStmt) */ { public: inline CommentStmt() : CommentStmt(nullptr) {} ~CommentStmt() override; explicit PROTOBUF_CONSTEXPR CommentStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CommentStmt(const CommentStmt& from); CommentStmt(CommentStmt&& from) noexcept : CommentStmt() { *this = ::std::move(from); } inline CommentStmt& operator=(const CommentStmt& from) { CopyFrom(from); return *this; } inline CommentStmt& operator=(CommentStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 86; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CommentStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CommentStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CommentStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CommentStmt& from) { CommentStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CommentStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CommentStmt"; } protected: explicit CommentStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_comment(); PROTOBUF_NODISCARD std::string* release_comment(); void set_allocated_comment(std::string* comment); 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; private: bool _internal_has_object() const; public: 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* object); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: void unsafe_arena_set_allocated_object( ::pg_query::Node* object); ::pg_query::Node* unsafe_arena_release_object(); // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; void clear_objtype(); ::pg_query::ObjectType objtype() const; void set_objtype(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_objtype() const; void _internal_set_objtype(::pg_query::ObjectType value); public: // @@protoc_insertion_point(class_scope:pg_query.CommentStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr comment_; ::pg_query::Node* object_; int objtype_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class FetchStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FetchStmt) */ { public: inline FetchStmt() : FetchStmt(nullptr) {} ~FetchStmt() override; explicit PROTOBUF_CONSTEXPR FetchStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); FetchStmt(const FetchStmt& from); FetchStmt(FetchStmt&& from) noexcept : FetchStmt() { *this = ::std::move(from); } inline FetchStmt& operator=(const FetchStmt& from) { CopyFrom(from); return *this; } inline FetchStmt& operator=(FetchStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 87; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FetchStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- FetchStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const FetchStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const FetchStmt& from) { FetchStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(FetchStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.FetchStmt"; } protected: explicit FetchStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_portalname(); PROTOBUF_NODISCARD std::string* release_portalname(); void set_allocated_portalname(std::string* portalname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr portalname_; int64_t how_many_; int direction_; bool ismove_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class IndexStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.IndexStmt) */ { public: inline IndexStmt() : IndexStmt(nullptr) {} ~IndexStmt() override; explicit PROTOBUF_CONSTEXPR IndexStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); IndexStmt(const IndexStmt& from); IndexStmt(IndexStmt&& from) noexcept : IndexStmt() { *this = ::std::move(from); } inline IndexStmt& operator=(const IndexStmt& from) { CopyFrom(from); return *this; } inline IndexStmt& operator=(IndexStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 88; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(IndexStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- IndexStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const IndexStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const IndexStmt& from) { IndexStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(IndexStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.IndexStmt"; } protected: explicit IndexStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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, kOldNodeFieldNumber = 12, kOldCreateSubidFieldNumber = 13, kOldFirstRelfilenodeSubidFieldNumber = 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_index_params(); private: const ::pg_query::Node& _internal_index_params(int index) const; ::pg_query::Node* _internal_add_index_params(); public: const ::pg_query::Node& index_params(int index) const; ::pg_query::Node* add_index_params(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& index_params() const; // repeated .pg_query.Node index_including_params = 6 [json_name = "indexIncludingParams"]; int index_including_params_size() const; private: int _internal_index_including_params_size() const; public: void clear_index_including_params(); ::pg_query::Node* mutable_index_including_params(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_index_including_params(); private: const ::pg_query::Node& _internal_index_including_params(int index) const; ::pg_query::Node* _internal_add_index_including_params(); public: const ::pg_query::Node& index_including_params(int index) const; ::pg_query::Node* add_index_including_params(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& index_including_params() const; // repeated .pg_query.Node options = 7 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // repeated .pg_query.Node exclude_op_names = 9 [json_name = "excludeOpNames"]; int exclude_op_names_size() const; private: int _internal_exclude_op_names_size() const; public: void clear_exclude_op_names(); ::pg_query::Node* mutable_exclude_op_names(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_exclude_op_names(); private: const ::pg_query::Node& _internal_exclude_op_names(int index) const; ::pg_query::Node* _internal_add_exclude_op_names(); public: const ::pg_query::Node& exclude_op_names(int index) const; ::pg_query::Node* add_exclude_op_names(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& exclude_op_names() const; // string idxname = 1 [json_name = "idxname"]; void clear_idxname(); const std::string& idxname() const; template void set_idxname(ArgT0&& arg0, ArgT... args); std::string* mutable_idxname(); PROTOBUF_NODISCARD std::string* release_idxname(); void set_allocated_idxname(std::string* idxname); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_access_method(); PROTOBUF_NODISCARD std::string* release_access_method(); void set_allocated_access_method(std::string* access_method); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_table_space(); PROTOBUF_NODISCARD std::string* release_table_space(); void set_allocated_table_space(std::string* table_space); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_idxcomment(); PROTOBUF_NODISCARD std::string* release_idxcomment(); void set_allocated_idxcomment(std::string* idxcomment); 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; private: bool _internal_has_relation() const; public: 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* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // uint32 index_oid = 11 [json_name = "indexOid"]; void clear_index_oid(); 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_node = 12 [json_name = "oldNode"]; void clear_old_node(); uint32_t old_node() const; void set_old_node(uint32_t value); private: uint32_t _internal_old_node() const; void _internal_set_old_node(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_relfilenode_subid = 14 [json_name = "oldFirstRelfilenodeSubid"]; void clear_old_first_relfilenode_subid(); uint32_t old_first_relfilenode_subid() const; void set_old_first_relfilenode_subid(uint32_t value); private: uint32_t _internal_old_first_relfilenode_subid() const; void _internal_set_old_first_relfilenode_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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > index_params_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > index_including_params_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > exclude_op_names_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr idxname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr access_method_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr table_space_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr idxcomment_; ::pg_query::RangeVar* relation_; ::pg_query::Node* where_clause_; uint32_t index_oid_; uint32_t old_node_; uint32_t old_create_subid_; uint32_t old_first_relfilenode_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_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateFunctionStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateFunctionStmt) */ { public: inline CreateFunctionStmt() : CreateFunctionStmt(nullptr) {} ~CreateFunctionStmt() override; explicit PROTOBUF_CONSTEXPR CreateFunctionStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateFunctionStmt(const CreateFunctionStmt& from); CreateFunctionStmt(CreateFunctionStmt&& from) noexcept : CreateFunctionStmt() { *this = ::std::move(from); } inline CreateFunctionStmt& operator=(const CreateFunctionStmt& from) { CopyFrom(from); return *this; } inline CreateFunctionStmt& operator=(CreateFunctionStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 89; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateFunctionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateFunctionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateFunctionStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateFunctionStmt& from) { CreateFunctionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateFunctionStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateFunctionStmt"; } protected: explicit CreateFunctionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_funcname(); private: const ::pg_query::Node& _internal_funcname(int index) const; ::pg_query::Node* _internal_add_funcname(); public: const ::pg_query::Node& funcname(int index) const; ::pg_query::Node* add_funcname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& funcname() const; // repeated .pg_query.Node parameters = 4 [json_name = "parameters"]; int parameters_size() const; private: int _internal_parameters_size() const; public: void clear_parameters(); ::pg_query::Node* mutable_parameters(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_parameters(); private: const ::pg_query::Node& _internal_parameters(int index) const; ::pg_query::Node* _internal_add_parameters(); public: const ::pg_query::Node& parameters(int index) const; ::pg_query::Node* add_parameters(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& parameters() const; // repeated .pg_query.Node options = 6 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.TypeName return_type = 5 [json_name = "returnType"]; bool has_return_type() const; private: bool _internal_has_return_type() const; public: void clear_return_type(); const ::pg_query::TypeName& return_type() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_return_type(); ::pg_query::TypeName* mutable_return_type(); void set_allocated_return_type(::pg_query::TypeName* return_type); private: const ::pg_query::TypeName& _internal_return_type() const; ::pg_query::TypeName* _internal_mutable_return_type(); public: void unsafe_arena_set_allocated_return_type( ::pg_query::TypeName* return_type); ::pg_query::TypeName* unsafe_arena_release_return_type(); // .pg_query.Node sql_body = 7 [json_name = "sql_body"]; bool has_sql_body() const; private: bool _internal_has_sql_body() const; public: 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* sql_body); private: const ::pg_query::Node& _internal_sql_body() const; ::pg_query::Node* _internal_mutable_sql_body(); public: void unsafe_arena_set_allocated_sql_body( ::pg_query::Node* sql_body); ::pg_query::Node* unsafe_arena_release_sql_body(); // bool is_procedure = 1 [json_name = "is_procedure"]; void clear_is_procedure(); bool is_procedure() const; void set_is_procedure(bool value); private: bool _internal_is_procedure() const; void _internal_set_is_procedure(bool value); public: // bool replace = 2 [json_name = "replace"]; void clear_replace(); bool replace() const; void set_replace(bool value); private: bool _internal_replace() const; void _internal_set_replace(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateFunctionStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funcname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > parameters_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::TypeName* return_type_; ::pg_query::Node* sql_body_; bool is_procedure_; bool replace_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterFunctionStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterFunctionStmt) */ { public: inline AlterFunctionStmt() : AlterFunctionStmt(nullptr) {} ~AlterFunctionStmt() override; explicit PROTOBUF_CONSTEXPR AlterFunctionStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterFunctionStmt(const AlterFunctionStmt& from); AlterFunctionStmt(AlterFunctionStmt&& from) noexcept : AlterFunctionStmt() { *this = ::std::move(from); } inline AlterFunctionStmt& operator=(const AlterFunctionStmt& from) { CopyFrom(from); return *this; } inline AlterFunctionStmt& operator=(AlterFunctionStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 90; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterFunctionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterFunctionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterFunctionStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterFunctionStmt& from) { AlterFunctionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterFunctionStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterFunctionStmt"; } protected: explicit AlterFunctionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_actions(); private: const ::pg_query::Node& _internal_actions(int index) const; ::pg_query::Node* _internal_add_actions(); public: const ::pg_query::Node& actions(int index) const; ::pg_query::Node* add_actions(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& actions() const; // .pg_query.ObjectWithArgs func = 2 [json_name = "func"]; bool has_func() const; private: bool _internal_has_func() const; public: void clear_func(); const ::pg_query::ObjectWithArgs& func() const; PROTOBUF_NODISCARD ::pg_query::ObjectWithArgs* release_func(); ::pg_query::ObjectWithArgs* mutable_func(); void set_allocated_func(::pg_query::ObjectWithArgs* func); private: const ::pg_query::ObjectWithArgs& _internal_func() const; ::pg_query::ObjectWithArgs* _internal_mutable_func(); public: void unsafe_arena_set_allocated_func( ::pg_query::ObjectWithArgs* func); ::pg_query::ObjectWithArgs* unsafe_arena_release_func(); // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; void clear_objtype(); ::pg_query::ObjectType objtype() const; void set_objtype(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_objtype() const; void _internal_set_objtype(::pg_query::ObjectType value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterFunctionStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > actions_; ::pg_query::ObjectWithArgs* func_; int objtype_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DoStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DoStmt) */ { public: inline DoStmt() : DoStmt(nullptr) {} ~DoStmt() override; explicit PROTOBUF_CONSTEXPR DoStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); DoStmt(const DoStmt& from); DoStmt(DoStmt&& from) noexcept : DoStmt() { *this = ::std::move(from); } inline DoStmt& operator=(const DoStmt& from) { CopyFrom(from); return *this; } inline DoStmt& operator=(DoStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 91; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DoStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DoStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const DoStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const DoStmt& from) { DoStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DoStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DoStmt"; } protected: explicit DoStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // @@protoc_insertion_point(class_scope:pg_query.DoStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RenameStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RenameStmt) */ { public: inline RenameStmt() : RenameStmt(nullptr) {} ~RenameStmt() override; explicit PROTOBUF_CONSTEXPR RenameStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RenameStmt(const RenameStmt& from); RenameStmt(RenameStmt&& from) noexcept : RenameStmt() { *this = ::std::move(from); } inline RenameStmt& operator=(const RenameStmt& from) { CopyFrom(from); return *this; } inline RenameStmt& operator=(RenameStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 92; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RenameStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RenameStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RenameStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RenameStmt& from) { RenameStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RenameStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RenameStmt"; } protected: explicit RenameStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_subname(); PROTOBUF_NODISCARD std::string* release_subname(); void set_allocated_subname(std::string* subname); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_newname(); PROTOBUF_NODISCARD std::string* release_newname(); void set_allocated_newname(std::string* newname); 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; private: bool _internal_has_relation() const; public: 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* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node object = 4 [json_name = "object"]; bool has_object() const; private: bool _internal_has_object() const; public: void clear_object(); const ::pg_query::Node& object() const; PROTOBUF_NODISCARD ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* object); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: void unsafe_arena_set_allocated_object( ::pg_query::Node* object); ::pg_query::Node* unsafe_arena_release_object(); // .pg_query.ObjectType rename_type = 1 [json_name = "renameType"]; void clear_rename_type(); ::pg_query::ObjectType rename_type() const; void set_rename_type(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_rename_type() const; void _internal_set_rename_type(::pg_query::ObjectType value); public: // .pg_query.ObjectType relation_type = 2 [json_name = "relationType"]; void clear_relation_type(); ::pg_query::ObjectType relation_type() const; void set_relation_type(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_relation_type() const; void _internal_set_relation_type(::pg_query::ObjectType value); public: // .pg_query.DropBehavior behavior = 7 [json_name = "behavior"]; void clear_behavior(); ::pg_query::DropBehavior behavior() const; void set_behavior(::pg_query::DropBehavior value); private: ::pg_query::DropBehavior _internal_behavior() const; void _internal_set_behavior(::pg_query::DropBehavior value); public: // bool missing_ok = 8 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.RenameStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr subname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr newname_; ::pg_query::RangeVar* relation_; ::pg_query::Node* object_; int rename_type_; int relation_type_; int behavior_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RuleStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RuleStmt) */ { public: inline RuleStmt() : RuleStmt(nullptr) {} ~RuleStmt() override; explicit PROTOBUF_CONSTEXPR RuleStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RuleStmt(const RuleStmt& from); RuleStmt(RuleStmt&& from) noexcept : RuleStmt() { *this = ::std::move(from); } inline RuleStmt& operator=(const RuleStmt& from) { CopyFrom(from); return *this; } inline RuleStmt& operator=(RuleStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 93; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RuleStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RuleStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RuleStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RuleStmt& from) { RuleStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RuleStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RuleStmt"; } protected: explicit RuleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_actions(); private: const ::pg_query::Node& _internal_actions(int index) const; ::pg_query::Node* _internal_add_actions(); public: const ::pg_query::Node& actions(int index) const; ::pg_query::Node* add_actions(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& actions() const; // string rulename = 2 [json_name = "rulename"]; void clear_rulename(); const std::string& rulename() const; template void set_rulename(ArgT0&& arg0, ArgT... args); std::string* mutable_rulename(); PROTOBUF_NODISCARD std::string* release_rulename(); void set_allocated_rulename(std::string* rulename); 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; private: bool _internal_has_relation() const; public: 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* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // .pg_query.CmdType event = 4 [json_name = "event"]; void clear_event(); ::pg_query::CmdType event() const; void set_event(::pg_query::CmdType value); private: ::pg_query::CmdType _internal_event() const; void _internal_set_event(::pg_query::CmdType value); public: // bool instead = 5 [json_name = "instead"]; void clear_instead(); bool instead() const; void set_instead(bool value); private: bool _internal_instead() const; void _internal_set_instead(bool value); public: // bool replace = 7 [json_name = "replace"]; void clear_replace(); bool replace() const; void set_replace(bool value); private: bool _internal_replace() const; void _internal_set_replace(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.RuleStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > actions_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr rulename_; ::pg_query::RangeVar* relation_; ::pg_query::Node* where_clause_; int event_; bool instead_; bool replace_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class NotifyStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.NotifyStmt) */ { public: inline NotifyStmt() : NotifyStmt(nullptr) {} ~NotifyStmt() override; explicit PROTOBUF_CONSTEXPR NotifyStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); NotifyStmt(const NotifyStmt& from); NotifyStmt(NotifyStmt&& from) noexcept : NotifyStmt() { *this = ::std::move(from); } inline NotifyStmt& operator=(const NotifyStmt& from) { CopyFrom(from); return *this; } inline NotifyStmt& operator=(NotifyStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 94; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(NotifyStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- NotifyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const NotifyStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const NotifyStmt& from) { NotifyStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(NotifyStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.NotifyStmt"; } protected: explicit NotifyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_conditionname(); PROTOBUF_NODISCARD std::string* release_conditionname(); void set_allocated_conditionname(std::string* conditionname); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_payload(); PROTOBUF_NODISCARD std::string* release_payload(); void set_allocated_payload(std::string* payload); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conditionname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr payload_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ListenStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ListenStmt) */ { public: inline ListenStmt() : ListenStmt(nullptr) {} ~ListenStmt() override; explicit PROTOBUF_CONSTEXPR ListenStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ListenStmt(const ListenStmt& from); ListenStmt(ListenStmt&& from) noexcept : ListenStmt() { *this = ::std::move(from); } inline ListenStmt& operator=(const ListenStmt& from) { CopyFrom(from); return *this; } inline ListenStmt& operator=(ListenStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 95; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ListenStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ListenStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ListenStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ListenStmt& from) { ListenStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ListenStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ListenStmt"; } protected: explicit ListenStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_conditionname(); PROTOBUF_NODISCARD std::string* release_conditionname(); void set_allocated_conditionname(std::string* conditionname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conditionname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class UnlistenStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.UnlistenStmt) */ { public: inline UnlistenStmt() : UnlistenStmt(nullptr) {} ~UnlistenStmt() override; explicit PROTOBUF_CONSTEXPR UnlistenStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); UnlistenStmt(const UnlistenStmt& from); UnlistenStmt(UnlistenStmt&& from) noexcept : UnlistenStmt() { *this = ::std::move(from); } inline UnlistenStmt& operator=(const UnlistenStmt& from) { CopyFrom(from); return *this; } inline UnlistenStmt& operator=(UnlistenStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 96; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(UnlistenStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- UnlistenStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const UnlistenStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const UnlistenStmt& from) { UnlistenStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(UnlistenStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.UnlistenStmt"; } protected: explicit UnlistenStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_conditionname(); PROTOBUF_NODISCARD std::string* release_conditionname(); void set_allocated_conditionname(std::string* conditionname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conditionname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TransactionStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TransactionStmt) */ { public: inline TransactionStmt() : TransactionStmt(nullptr) {} ~TransactionStmt() override; explicit PROTOBUF_CONSTEXPR TransactionStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); TransactionStmt(const TransactionStmt& from); TransactionStmt(TransactionStmt&& from) noexcept : TransactionStmt() { *this = ::std::move(from); } inline TransactionStmt& operator=(const TransactionStmt& from) { CopyFrom(from); return *this; } inline TransactionStmt& operator=(TransactionStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 97; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TransactionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TransactionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const TransactionStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const TransactionStmt& from) { TransactionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TransactionStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TransactionStmt"; } protected: explicit TransactionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 2, kSavepointNameFieldNumber = 3, kGidFieldNumber = 4, kKindFieldNumber = 1, kChainFieldNumber = 5, }; // repeated .pg_query.Node options = 2 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string savepoint_name = 3 [json_name = "savepoint_name"]; void clear_savepoint_name(); const std::string& savepoint_name() const; template void set_savepoint_name(ArgT0&& arg0, ArgT... args); std::string* mutable_savepoint_name(); PROTOBUF_NODISCARD std::string* release_savepoint_name(); void set_allocated_savepoint_name(std::string* savepoint_name); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_gid(); PROTOBUF_NODISCARD std::string* release_gid(); void set_allocated_gid(std::string* gid); 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: // @@protoc_insertion_point(class_scope:pg_query.TransactionStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr savepoint_name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr gid_; int kind_; bool chain_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ViewStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ViewStmt) */ { public: inline ViewStmt() : ViewStmt(nullptr) {} ~ViewStmt() override; explicit PROTOBUF_CONSTEXPR ViewStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ViewStmt(const ViewStmt& from); ViewStmt(ViewStmt&& from) noexcept : ViewStmt() { *this = ::std::move(from); } inline ViewStmt& operator=(const ViewStmt& from) { CopyFrom(from); return *this; } inline ViewStmt& operator=(ViewStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 98; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ViewStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ViewStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ViewStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ViewStmt& from) { ViewStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ViewStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ViewStmt"; } protected: explicit ViewStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_aliases(); private: const ::pg_query::Node& _internal_aliases(int index) const; ::pg_query::Node* _internal_add_aliases(); public: const ::pg_query::Node& aliases(int index) const; ::pg_query::Node* add_aliases(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& aliases() const; // repeated .pg_query.Node options = 5 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.RangeVar view = 1 [json_name = "view"]; bool has_view() const; private: bool _internal_has_view() const; public: void clear_view(); const ::pg_query::RangeVar& view() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_view(); ::pg_query::RangeVar* mutable_view(); void set_allocated_view(::pg_query::RangeVar* view); private: const ::pg_query::RangeVar& _internal_view() const; ::pg_query::RangeVar* _internal_mutable_view(); public: void unsafe_arena_set_allocated_view( ::pg_query::RangeVar* view); ::pg_query::RangeVar* unsafe_arena_release_view(); // .pg_query.Node query = 3 [json_name = "query"]; bool has_query() const; private: bool _internal_has_query() const; public: void clear_query(); const ::pg_query::Node& query() const; PROTOBUF_NODISCARD ::pg_query::Node* release_query(); ::pg_query::Node* mutable_query(); void set_allocated_query(::pg_query::Node* query); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: void unsafe_arena_set_allocated_query( ::pg_query::Node* query); ::pg_query::Node* unsafe_arena_release_query(); // bool replace = 4 [json_name = "replace"]; void clear_replace(); bool replace() const; void set_replace(bool value); private: bool _internal_replace() const; void _internal_set_replace(bool value); public: // .pg_query.ViewCheckOption with_check_option = 6 [json_name = "withCheckOption"]; void clear_with_check_option(); ::pg_query::ViewCheckOption with_check_option() const; void set_with_check_option(::pg_query::ViewCheckOption value); private: ::pg_query::ViewCheckOption _internal_with_check_option() const; void _internal_set_with_check_option(::pg_query::ViewCheckOption value); public: // @@protoc_insertion_point(class_scope:pg_query.ViewStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aliases_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::RangeVar* view_; ::pg_query::Node* query_; bool replace_; int with_check_option_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class LoadStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.LoadStmt) */ { public: inline LoadStmt() : LoadStmt(nullptr) {} ~LoadStmt() override; explicit PROTOBUF_CONSTEXPR LoadStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); LoadStmt(const LoadStmt& from); LoadStmt(LoadStmt&& from) noexcept : LoadStmt() { *this = ::std::move(from); } inline LoadStmt& operator=(const LoadStmt& from) { CopyFrom(from); return *this; } inline LoadStmt& operator=(LoadStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 99; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(LoadStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- LoadStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const LoadStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const LoadStmt& from) { LoadStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(LoadStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.LoadStmt"; } protected: explicit LoadStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_filename(); PROTOBUF_NODISCARD std::string* release_filename(); void set_allocated_filename(std::string* filename); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr filename_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateDomainStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateDomainStmt) */ { public: inline CreateDomainStmt() : CreateDomainStmt(nullptr) {} ~CreateDomainStmt() override; explicit PROTOBUF_CONSTEXPR CreateDomainStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateDomainStmt(const CreateDomainStmt& from); CreateDomainStmt(CreateDomainStmt&& from) noexcept : CreateDomainStmt() { *this = ::std::move(from); } inline CreateDomainStmt& operator=(const CreateDomainStmt& from) { CopyFrom(from); return *this; } inline CreateDomainStmt& operator=(CreateDomainStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 100; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateDomainStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateDomainStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateDomainStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateDomainStmt& from) { CreateDomainStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateDomainStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateDomainStmt"; } protected: explicit CreateDomainStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_domainname(); private: const ::pg_query::Node& _internal_domainname(int index) const; ::pg_query::Node* _internal_add_domainname(); public: const ::pg_query::Node& domainname(int index) const; ::pg_query::Node* add_domainname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& domainname() const; // repeated .pg_query.Node constraints = 4 [json_name = "constraints"]; int constraints_size() const; private: int _internal_constraints_size() const; public: void clear_constraints(); ::pg_query::Node* mutable_constraints(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_constraints(); private: const ::pg_query::Node& _internal_constraints(int index) const; ::pg_query::Node* _internal_add_constraints(); public: const ::pg_query::Node& constraints(int index) const; ::pg_query::Node* add_constraints(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& constraints() const; // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; bool has_type_name() const; private: bool _internal_has_type_name() const; public: void clear_type_name(); const ::pg_query::TypeName& type_name() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* type_name); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: void unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name); ::pg_query::TypeName* unsafe_arena_release_type_name(); // .pg_query.CollateClause coll_clause = 3 [json_name = "collClause"]; bool has_coll_clause() const; private: bool _internal_has_coll_clause() const; public: void clear_coll_clause(); const ::pg_query::CollateClause& coll_clause() const; PROTOBUF_NODISCARD ::pg_query::CollateClause* release_coll_clause(); ::pg_query::CollateClause* mutable_coll_clause(); void set_allocated_coll_clause(::pg_query::CollateClause* coll_clause); private: const ::pg_query::CollateClause& _internal_coll_clause() const; ::pg_query::CollateClause* _internal_mutable_coll_clause(); public: void unsafe_arena_set_allocated_coll_clause( ::pg_query::CollateClause* coll_clause); ::pg_query::CollateClause* unsafe_arena_release_coll_clause(); // @@protoc_insertion_point(class_scope:pg_query.CreateDomainStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > domainname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > constraints_; ::pg_query::TypeName* type_name_; ::pg_query::CollateClause* coll_clause_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreatedbStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreatedbStmt) */ { public: inline CreatedbStmt() : CreatedbStmt(nullptr) {} ~CreatedbStmt() override; explicit PROTOBUF_CONSTEXPR CreatedbStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreatedbStmt(const CreatedbStmt& from); CreatedbStmt(CreatedbStmt&& from) noexcept : CreatedbStmt() { *this = ::std::move(from); } inline CreatedbStmt& operator=(const CreatedbStmt& from) { CopyFrom(from); return *this; } inline CreatedbStmt& operator=(CreatedbStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 101; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreatedbStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreatedbStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreatedbStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreatedbStmt& from) { CreatedbStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreatedbStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreatedbStmt"; } protected: explicit CreatedbStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string dbname = 1 [json_name = "dbname"]; void clear_dbname(); const std::string& dbname() const; template void set_dbname(ArgT0&& arg0, ArgT... args); std::string* mutable_dbname(); PROTOBUF_NODISCARD std::string* release_dbname(); void set_allocated_dbname(std::string* dbname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr dbname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DropdbStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropdbStmt) */ { public: inline DropdbStmt() : DropdbStmt(nullptr) {} ~DropdbStmt() override; explicit PROTOBUF_CONSTEXPR DropdbStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); DropdbStmt(const DropdbStmt& from); DropdbStmt(DropdbStmt&& from) noexcept : DropdbStmt() { *this = ::std::move(from); } inline DropdbStmt& operator=(const DropdbStmt& from) { CopyFrom(from); return *this; } inline DropdbStmt& operator=(DropdbStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 102; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropdbStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DropdbStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const DropdbStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const DropdbStmt& from) { DropdbStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DropdbStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DropdbStmt"; } protected: explicit DropdbStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string dbname = 1 [json_name = "dbname"]; void clear_dbname(); const std::string& dbname() const; template void set_dbname(ArgT0&& arg0, ArgT... args); std::string* mutable_dbname(); PROTOBUF_NODISCARD std::string* release_dbname(); void set_allocated_dbname(std::string* dbname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr dbname_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class VacuumStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.VacuumStmt) */ { public: inline VacuumStmt() : VacuumStmt(nullptr) {} ~VacuumStmt() override; explicit PROTOBUF_CONSTEXPR VacuumStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); VacuumStmt(const VacuumStmt& from); VacuumStmt(VacuumStmt&& from) noexcept : VacuumStmt() { *this = ::std::move(from); } inline VacuumStmt& operator=(const VacuumStmt& from) { CopyFrom(from); return *this; } inline VacuumStmt& operator=(VacuumStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 103; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(VacuumStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- VacuumStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const VacuumStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const VacuumStmt& from) { VacuumStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(VacuumStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.VacuumStmt"; } protected: explicit VacuumStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // repeated .pg_query.Node rels = 2 [json_name = "rels"]; int rels_size() const; private: int _internal_rels_size() const; public: void clear_rels(); ::pg_query::Node* mutable_rels(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_rels(); private: const ::pg_query::Node& _internal_rels(int index) const; ::pg_query::Node* _internal_add_rels(); public: const ::pg_query::Node& rels(int index) const; ::pg_query::Node* add_rels(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& rels() const; // bool is_vacuumcmd = 3 [json_name = "is_vacuumcmd"]; void clear_is_vacuumcmd(); bool is_vacuumcmd() const; void set_is_vacuumcmd(bool value); private: bool _internal_is_vacuumcmd() const; void _internal_set_is_vacuumcmd(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.VacuumStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > rels_; bool is_vacuumcmd_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ExplainStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ExplainStmt) */ { public: inline ExplainStmt() : ExplainStmt(nullptr) {} ~ExplainStmt() override; explicit PROTOBUF_CONSTEXPR ExplainStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ExplainStmt(const ExplainStmt& from); ExplainStmt(ExplainStmt&& from) noexcept : ExplainStmt() { *this = ::std::move(from); } inline ExplainStmt& operator=(const ExplainStmt& from) { CopyFrom(from); return *this; } inline ExplainStmt& operator=(ExplainStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 104; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ExplainStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ExplainStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ExplainStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ExplainStmt& from) { ExplainStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ExplainStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ExplainStmt"; } protected: explicit ExplainStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.Node query = 1 [json_name = "query"]; bool has_query() const; private: bool _internal_has_query() const; public: void clear_query(); const ::pg_query::Node& query() const; PROTOBUF_NODISCARD ::pg_query::Node* release_query(); ::pg_query::Node* mutable_query(); void set_allocated_query(::pg_query::Node* query); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: void unsafe_arena_set_allocated_query( ::pg_query::Node* query); ::pg_query::Node* unsafe_arena_release_query(); // @@protoc_insertion_point(class_scope:pg_query.ExplainStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::Node* query_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateTableAsStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateTableAsStmt) */ { public: inline CreateTableAsStmt() : CreateTableAsStmt(nullptr) {} ~CreateTableAsStmt() override; explicit PROTOBUF_CONSTEXPR CreateTableAsStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateTableAsStmt(const CreateTableAsStmt& from); CreateTableAsStmt(CreateTableAsStmt&& from) noexcept : CreateTableAsStmt() { *this = ::std::move(from); } inline CreateTableAsStmt& operator=(const CreateTableAsStmt& from) { CopyFrom(from); return *this; } inline CreateTableAsStmt& operator=(CreateTableAsStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 105; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateTableAsStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateTableAsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateTableAsStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateTableAsStmt& from) { CreateTableAsStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateTableAsStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateTableAsStmt"; } protected: explicit CreateTableAsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_query() const; public: 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* query); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: void unsafe_arena_set_allocated_query( ::pg_query::Node* query); ::pg_query::Node* unsafe_arena_release_query(); // .pg_query.IntoClause into = 2 [json_name = "into"]; bool has_into() const; private: bool _internal_has_into() const; public: void clear_into(); const ::pg_query::IntoClause& into() const; PROTOBUF_NODISCARD ::pg_query::IntoClause* release_into(); ::pg_query::IntoClause* mutable_into(); void set_allocated_into(::pg_query::IntoClause* into); private: const ::pg_query::IntoClause& _internal_into() const; ::pg_query::IntoClause* _internal_mutable_into(); public: void unsafe_arena_set_allocated_into( ::pg_query::IntoClause* into); ::pg_query::IntoClause* unsafe_arena_release_into(); // .pg_query.ObjectType 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* query_; ::pg_query::IntoClause* into_; int objtype_; bool is_select_into_; bool if_not_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateSeqStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateSeqStmt) */ { public: inline CreateSeqStmt() : CreateSeqStmt(nullptr) {} ~CreateSeqStmt() override; explicit PROTOBUF_CONSTEXPR CreateSeqStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateSeqStmt(const CreateSeqStmt& from); CreateSeqStmt(CreateSeqStmt&& from) noexcept : CreateSeqStmt() { *this = ::std::move(from); } inline CreateSeqStmt& operator=(const CreateSeqStmt& from) { CopyFrom(from); return *this; } inline CreateSeqStmt& operator=(CreateSeqStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 106; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateSeqStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateSeqStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateSeqStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateSeqStmt& from) { CreateSeqStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateSeqStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateSeqStmt"; } protected: explicit CreateSeqStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; bool has_sequence() const; private: bool _internal_has_sequence() const; public: void clear_sequence(); const ::pg_query::RangeVar& sequence() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_sequence(); ::pg_query::RangeVar* mutable_sequence(); void set_allocated_sequence(::pg_query::RangeVar* sequence); private: const ::pg_query::RangeVar& _internal_sequence() const; ::pg_query::RangeVar* _internal_mutable_sequence(); public: void unsafe_arena_set_allocated_sequence( ::pg_query::RangeVar* sequence); ::pg_query::RangeVar* unsafe_arena_release_sequence(); // uint32 owner_id = 3 [json_name = "ownerId"]; void clear_owner_id(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::RangeVar* sequence_; uint32_t owner_id_; bool for_identity_; bool if_not_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterSeqStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterSeqStmt) */ { public: inline AlterSeqStmt() : AlterSeqStmt(nullptr) {} ~AlterSeqStmt() override; explicit PROTOBUF_CONSTEXPR AlterSeqStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterSeqStmt(const AlterSeqStmt& from); AlterSeqStmt(AlterSeqStmt&& from) noexcept : AlterSeqStmt() { *this = ::std::move(from); } inline AlterSeqStmt& operator=(const AlterSeqStmt& from) { CopyFrom(from); return *this; } inline AlterSeqStmt& operator=(AlterSeqStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 107; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterSeqStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterSeqStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterSeqStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterSeqStmt& from) { AlterSeqStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterSeqStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterSeqStmt"; } protected: explicit AlterSeqStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; bool has_sequence() const; private: bool _internal_has_sequence() const; public: void clear_sequence(); const ::pg_query::RangeVar& sequence() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_sequence(); ::pg_query::RangeVar* mutable_sequence(); void set_allocated_sequence(::pg_query::RangeVar* sequence); private: const ::pg_query::RangeVar& _internal_sequence() const; ::pg_query::RangeVar* _internal_mutable_sequence(); public: void unsafe_arena_set_allocated_sequence( ::pg_query::RangeVar* sequence); ::pg_query::RangeVar* unsafe_arena_release_sequence(); // bool for_identity = 3 [json_name = "for_identity"]; void clear_for_identity(); bool for_identity() const; void set_for_identity(bool value); private: bool _internal_for_identity() const; void _internal_set_for_identity(bool value); public: // bool missing_ok = 4 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterSeqStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::RangeVar* sequence_; bool for_identity_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class VariableSetStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.VariableSetStmt) */ { public: inline VariableSetStmt() : VariableSetStmt(nullptr) {} ~VariableSetStmt() override; explicit PROTOBUF_CONSTEXPR VariableSetStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); VariableSetStmt(const VariableSetStmt& from); VariableSetStmt(VariableSetStmt&& from) noexcept : VariableSetStmt() { *this = ::std::move(from); } inline VariableSetStmt& operator=(const VariableSetStmt& from) { CopyFrom(from); return *this; } inline VariableSetStmt& operator=(VariableSetStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 108; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(VariableSetStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- VariableSetStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const VariableSetStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const VariableSetStmt& from) { VariableSetStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(VariableSetStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.VariableSetStmt"; } protected: explicit VariableSetStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // string name = 2 [json_name = "name"]; void clear_name(); const std::string& name() const; template void set_name(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; int kind_; bool is_local_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class VariableShowStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.VariableShowStmt) */ { public: inline VariableShowStmt() : VariableShowStmt(nullptr) {} ~VariableShowStmt() override; explicit PROTOBUF_CONSTEXPR VariableShowStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); VariableShowStmt(const VariableShowStmt& from); VariableShowStmt(VariableShowStmt&& from) noexcept : VariableShowStmt() { *this = ::std::move(from); } inline VariableShowStmt& operator=(const VariableShowStmt& from) { CopyFrom(from); return *this; } inline VariableShowStmt& operator=(VariableShowStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 109; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(VariableShowStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- VariableShowStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const VariableShowStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const VariableShowStmt& from) { VariableShowStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(VariableShowStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.VariableShowStmt"; } protected: explicit VariableShowStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DiscardStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DiscardStmt) */ { public: inline DiscardStmt() : DiscardStmt(nullptr) {} ~DiscardStmt() override; explicit PROTOBUF_CONSTEXPR DiscardStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); DiscardStmt(const DiscardStmt& from); DiscardStmt(DiscardStmt&& from) noexcept : DiscardStmt() { *this = ::std::move(from); } inline DiscardStmt& operator=(const DiscardStmt& from) { CopyFrom(from); return *this; } inline DiscardStmt& operator=(DiscardStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 110; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DiscardStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DiscardStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const DiscardStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const DiscardStmt& from) { DiscardStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DiscardStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DiscardStmt"; } protected: explicit DiscardStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { int target_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateTrigStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateTrigStmt) */ { public: inline CreateTrigStmt() : CreateTrigStmt(nullptr) {} ~CreateTrigStmt() override; explicit PROTOBUF_CONSTEXPR CreateTrigStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateTrigStmt(const CreateTrigStmt& from); CreateTrigStmt(CreateTrigStmt&& from) noexcept : CreateTrigStmt() { *this = ::std::move(from); } inline CreateTrigStmt& operator=(const CreateTrigStmt& from) { CopyFrom(from); return *this; } inline CreateTrigStmt& operator=(CreateTrigStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 111; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateTrigStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateTrigStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateTrigStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateTrigStmt& from) { CreateTrigStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateTrigStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateTrigStmt"; } protected: explicit CreateTrigStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_funcname(); private: const ::pg_query::Node& _internal_funcname(int index) const; ::pg_query::Node* _internal_add_funcname(); public: const ::pg_query::Node& funcname(int index) const; ::pg_query::Node* add_funcname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& funcname() const; // repeated .pg_query.Node args = 6 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_columns(); private: const ::pg_query::Node& _internal_columns(int index) const; ::pg_query::Node* _internal_add_columns(); public: const ::pg_query::Node& columns(int index) const; ::pg_query::Node* add_columns(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& columns() const; // repeated .pg_query.Node transition_rels = 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_transition_rels(); private: const ::pg_query::Node& _internal_transition_rels(int index) const; ::pg_query::Node* _internal_add_transition_rels(); public: const ::pg_query::Node& transition_rels(int index) const; ::pg_query::Node* add_transition_rels(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& transition_rels() const; // string trigname = 3 [json_name = "trigname"]; void clear_trigname(); const std::string& trigname() const; template void set_trigname(ArgT0&& arg0, ArgT... args); std::string* mutable_trigname(); PROTOBUF_NODISCARD std::string* release_trigname(); void set_allocated_trigname(std::string* trigname); 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; private: bool _internal_has_relation() const; public: 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* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node when_clause = 11 [json_name = "whenClause"]; bool has_when_clause() const; private: bool _internal_has_when_clause() const; public: void clear_when_clause(); const ::pg_query::Node& when_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_when_clause(); ::pg_query::Node* mutable_when_clause(); void set_allocated_when_clause(::pg_query::Node* when_clause); private: const ::pg_query::Node& _internal_when_clause() const; ::pg_query::Node* _internal_mutable_when_clause(); public: void unsafe_arena_set_allocated_when_clause( ::pg_query::Node* when_clause); ::pg_query::Node* unsafe_arena_release_when_clause(); // .pg_query.RangeVar constrrel = 15 [json_name = "constrrel"]; bool has_constrrel() const; private: bool _internal_has_constrrel() const; public: 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* constrrel); private: const ::pg_query::RangeVar& _internal_constrrel() const; ::pg_query::RangeVar* _internal_mutable_constrrel(); public: void unsafe_arena_set_allocated_constrrel( ::pg_query::RangeVar* constrrel); ::pg_query::RangeVar* unsafe_arena_release_constrrel(); // 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funcname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > columns_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > transition_rels_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr trigname_; ::pg_query::RangeVar* relation_; ::pg_query::Node* when_clause_; ::pg_query::RangeVar* constrrel_; bool replace_; bool isconstraint_; bool row_; bool deferrable_; int32_t timing_; int32_t events_; bool initdeferred_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreatePLangStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreatePLangStmt) */ { public: inline CreatePLangStmt() : CreatePLangStmt(nullptr) {} ~CreatePLangStmt() override; explicit PROTOBUF_CONSTEXPR CreatePLangStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreatePLangStmt(const CreatePLangStmt& from); CreatePLangStmt(CreatePLangStmt&& from) noexcept : CreatePLangStmt() { *this = ::std::move(from); } inline CreatePLangStmt& operator=(const CreatePLangStmt& from) { CopyFrom(from); return *this; } inline CreatePLangStmt& operator=(CreatePLangStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 112; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreatePLangStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreatePLangStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreatePLangStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreatePLangStmt& from) { CreatePLangStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreatePLangStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreatePLangStmt"; } protected: explicit CreatePLangStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_plhandler(); private: const ::pg_query::Node& _internal_plhandler(int index) const; ::pg_query::Node* _internal_add_plhandler(); public: const ::pg_query::Node& plhandler(int index) const; ::pg_query::Node* add_plhandler(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& plhandler() const; // repeated .pg_query.Node plinline = 4 [json_name = "plinline"]; int plinline_size() const; private: int _internal_plinline_size() const; public: void clear_plinline(); ::pg_query::Node* mutable_plinline(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_plinline(); private: const ::pg_query::Node& _internal_plinline(int index) const; ::pg_query::Node* _internal_add_plinline(); public: const ::pg_query::Node& plinline(int index) const; ::pg_query::Node* add_plinline(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& plinline() const; // repeated .pg_query.Node plvalidator = 5 [json_name = "plvalidator"]; int plvalidator_size() const; private: int _internal_plvalidator_size() const; public: void clear_plvalidator(); ::pg_query::Node* mutable_plvalidator(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_plvalidator(); private: const ::pg_query::Node& _internal_plvalidator(int index) const; ::pg_query::Node* _internal_add_plvalidator(); public: const ::pg_query::Node& plvalidator(int index) const; ::pg_query::Node* add_plvalidator(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& plvalidator() const; // string plname = 2 [json_name = "plname"]; void clear_plname(); const std::string& plname() const; template void set_plname(ArgT0&& arg0, ArgT... args); std::string* mutable_plname(); PROTOBUF_NODISCARD std::string* release_plname(); void set_allocated_plname(std::string* plname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > plhandler_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > plinline_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > plvalidator_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr plname_; bool replace_; bool pltrusted_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateRoleStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateRoleStmt) */ { public: inline CreateRoleStmt() : CreateRoleStmt(nullptr) {} ~CreateRoleStmt() override; explicit PROTOBUF_CONSTEXPR CreateRoleStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateRoleStmt(const CreateRoleStmt& from); CreateRoleStmt(CreateRoleStmt&& from) noexcept : CreateRoleStmt() { *this = ::std::move(from); } inline CreateRoleStmt& operator=(const CreateRoleStmt& from) { CopyFrom(from); return *this; } inline CreateRoleStmt& operator=(CreateRoleStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 113; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateRoleStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateRoleStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateRoleStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateRoleStmt& from) { CreateRoleStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateRoleStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateRoleStmt"; } protected: explicit CreateRoleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string role = 2 [json_name = "role"]; void clear_role(); const std::string& role() const; template void set_role(ArgT0&& arg0, ArgT... args); std::string* mutable_role(); PROTOBUF_NODISCARD std::string* release_role(); void set_allocated_role(std::string* role); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr role_; int stmt_type_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterRoleStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterRoleStmt) */ { public: inline AlterRoleStmt() : AlterRoleStmt(nullptr) {} ~AlterRoleStmt() override; explicit PROTOBUF_CONSTEXPR AlterRoleStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterRoleStmt(const AlterRoleStmt& from); AlterRoleStmt(AlterRoleStmt&& from) noexcept : AlterRoleStmt() { *this = ::std::move(from); } inline AlterRoleStmt& operator=(const AlterRoleStmt& from) { CopyFrom(from); return *this; } inline AlterRoleStmt& operator=(AlterRoleStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 114; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterRoleStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterRoleStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterRoleStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterRoleStmt& from) { AlterRoleStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterRoleStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterRoleStmt"; } protected: explicit AlterRoleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.RoleSpec role = 1 [json_name = "role"]; bool has_role() const; private: bool _internal_has_role() const; public: void clear_role(); const ::pg_query::RoleSpec& role() const; PROTOBUF_NODISCARD ::pg_query::RoleSpec* release_role(); ::pg_query::RoleSpec* mutable_role(); void set_allocated_role(::pg_query::RoleSpec* role); private: const ::pg_query::RoleSpec& _internal_role() const; ::pg_query::RoleSpec* _internal_mutable_role(); public: void unsafe_arena_set_allocated_role( ::pg_query::RoleSpec* role); ::pg_query::RoleSpec* unsafe_arena_release_role(); // int32 action = 3 [json_name = "action"]; void clear_action(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::RoleSpec* role_; int32_t action_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DropRoleStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropRoleStmt) */ { public: inline DropRoleStmt() : DropRoleStmt(nullptr) {} ~DropRoleStmt() override; explicit PROTOBUF_CONSTEXPR DropRoleStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); DropRoleStmt(const DropRoleStmt& from); DropRoleStmt(DropRoleStmt&& from) noexcept : DropRoleStmt() { *this = ::std::move(from); } inline DropRoleStmt& operator=(const DropRoleStmt& from) { CopyFrom(from); return *this; } inline DropRoleStmt& operator=(DropRoleStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 115; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropRoleStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DropRoleStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const DropRoleStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const DropRoleStmt& from) { DropRoleStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DropRoleStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DropRoleStmt"; } protected: explicit DropRoleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::pg_query::Node& _internal_roles(int index) const; ::pg_query::Node* _internal_add_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& roles() const; // bool missing_ok = 2 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.DropRoleStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class LockStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.LockStmt) */ { public: inline LockStmt() : LockStmt(nullptr) {} ~LockStmt() override; explicit PROTOBUF_CONSTEXPR LockStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); LockStmt(const LockStmt& from); LockStmt(LockStmt&& from) noexcept : LockStmt() { *this = ::std::move(from); } inline LockStmt& operator=(const LockStmt& from) { CopyFrom(from); return *this; } inline LockStmt& operator=(LockStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 116; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(LockStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- LockStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const LockStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const LockStmt& from) { LockStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(LockStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.LockStmt"; } protected: explicit LockStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_relations(); private: const ::pg_query::Node& _internal_relations(int index) const; ::pg_query::Node* _internal_add_relations(); public: const ::pg_query::Node& relations(int index) const; ::pg_query::Node* add_relations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& relations() const; // int32 mode = 2 [json_name = "mode"]; void clear_mode(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > relations_; int32_t mode_; bool nowait_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ConstraintsSetStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ConstraintsSetStmt) */ { public: inline ConstraintsSetStmt() : ConstraintsSetStmt(nullptr) {} ~ConstraintsSetStmt() override; explicit PROTOBUF_CONSTEXPR ConstraintsSetStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ConstraintsSetStmt(const ConstraintsSetStmt& from); ConstraintsSetStmt(ConstraintsSetStmt&& from) noexcept : ConstraintsSetStmt() { *this = ::std::move(from); } inline ConstraintsSetStmt& operator=(const ConstraintsSetStmt& from) { CopyFrom(from); return *this; } inline ConstraintsSetStmt& operator=(ConstraintsSetStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 117; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ConstraintsSetStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ConstraintsSetStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ConstraintsSetStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ConstraintsSetStmt& from) { ConstraintsSetStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ConstraintsSetStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ConstraintsSetStmt"; } protected: explicit ConstraintsSetStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_constraints(); private: const ::pg_query::Node& _internal_constraints(int index) const; ::pg_query::Node* _internal_add_constraints(); public: const ::pg_query::Node& constraints(int index) const; ::pg_query::Node* add_constraints(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& constraints() const; // bool deferred = 2 [json_name = "deferred"]; void clear_deferred(); bool deferred() const; void set_deferred(bool value); private: bool _internal_deferred() const; void _internal_set_deferred(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.ConstraintsSetStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > constraints_; bool deferred_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ReindexStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ReindexStmt) */ { public: inline ReindexStmt() : ReindexStmt(nullptr) {} ~ReindexStmt() override; explicit PROTOBUF_CONSTEXPR ReindexStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ReindexStmt(const ReindexStmt& from); ReindexStmt(ReindexStmt&& from) noexcept : ReindexStmt() { *this = ::std::move(from); } inline ReindexStmt& operator=(const ReindexStmt& from) { CopyFrom(from); return *this; } inline ReindexStmt& operator=(ReindexStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 118; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ReindexStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ReindexStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ReindexStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ReindexStmt& from) { ReindexStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ReindexStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ReindexStmt"; } protected: explicit ReindexStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_params(); private: const ::pg_query::Node& _internal_params(int index) const; ::pg_query::Node* _internal_add_params(); public: const ::pg_query::Node& params(int index) const; ::pg_query::Node* add_params(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& params() const; // string name = 3 [json_name = "name"]; void clear_name(); const std::string& name() const; template void set_name(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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; private: bool _internal_has_relation() const; public: 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* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.ReindexObjectType kind = 1 [json_name = "kind"]; void clear_kind(); ::pg_query::ReindexObjectType kind() const; void set_kind(::pg_query::ReindexObjectType value); private: ::pg_query::ReindexObjectType _internal_kind() const; void _internal_set_kind(::pg_query::ReindexObjectType value); public: // @@protoc_insertion_point(class_scope:pg_query.ReindexStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > params_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::RangeVar* relation_; int kind_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CheckPointStmt final : public ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase /* @@protoc_insertion_point(class_definition:pg_query.CheckPointStmt) */ { public: inline CheckPointStmt() : CheckPointStmt(nullptr) {} explicit PROTOBUF_CONSTEXPR CheckPointStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CheckPointStmt(const CheckPointStmt& from); CheckPointStmt(CheckPointStmt&& from) noexcept : CheckPointStmt() { *this = ::std::move(from); } inline CheckPointStmt& operator=(const CheckPointStmt& from) { CopyFrom(from); return *this; } inline CheckPointStmt& operator=(CheckPointStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 119; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CheckPointStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CheckPointStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyFrom; inline void CopyFrom(const CheckPointStmt& from) { ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyImpl(*this, from); } using ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeFrom; void MergeFrom(const CheckPointStmt& from) { ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeImpl(*this, from); } public: private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CheckPointStmt"; } protected: explicit CheckPointStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // @@protoc_insertion_point(class_scope:pg_query.CheckPointStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateSchemaStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateSchemaStmt) */ { public: inline CreateSchemaStmt() : CreateSchemaStmt(nullptr) {} ~CreateSchemaStmt() override; explicit PROTOBUF_CONSTEXPR CreateSchemaStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateSchemaStmt(const CreateSchemaStmt& from); CreateSchemaStmt(CreateSchemaStmt&& from) noexcept : CreateSchemaStmt() { *this = ::std::move(from); } inline CreateSchemaStmt& operator=(const CreateSchemaStmt& from) { CopyFrom(from); return *this; } inline CreateSchemaStmt& operator=(CreateSchemaStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 120; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateSchemaStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateSchemaStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateSchemaStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateSchemaStmt& from) { CreateSchemaStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateSchemaStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateSchemaStmt"; } protected: explicit CreateSchemaStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_schema_elts(); private: const ::pg_query::Node& _internal_schema_elts(int index) const; ::pg_query::Node* _internal_add_schema_elts(); public: const ::pg_query::Node& schema_elts(int index) const; ::pg_query::Node* add_schema_elts(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& schema_elts() const; // string schemaname = 1 [json_name = "schemaname"]; void clear_schemaname(); const std::string& schemaname() const; template void set_schemaname(ArgT0&& arg0, ArgT... args); std::string* mutable_schemaname(); PROTOBUF_NODISCARD std::string* release_schemaname(); void set_allocated_schemaname(std::string* schemaname); 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; private: bool _internal_has_authrole() const; public: 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* authrole); private: const ::pg_query::RoleSpec& _internal_authrole() const; ::pg_query::RoleSpec* _internal_mutable_authrole(); public: void unsafe_arena_set_allocated_authrole( ::pg_query::RoleSpec* authrole); ::pg_query::RoleSpec* unsafe_arena_release_authrole(); // bool if_not_exists = 4 [json_name = "if_not_exists"]; void clear_if_not_exists(); bool if_not_exists() const; void set_if_not_exists(bool value); private: bool _internal_if_not_exists() const; void _internal_set_if_not_exists(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateSchemaStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > schema_elts_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr schemaname_; ::pg_query::RoleSpec* authrole_; bool if_not_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterDatabaseStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDatabaseStmt) */ { public: inline AlterDatabaseStmt() : AlterDatabaseStmt(nullptr) {} ~AlterDatabaseStmt() override; explicit PROTOBUF_CONSTEXPR AlterDatabaseStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterDatabaseStmt(const AlterDatabaseStmt& from); AlterDatabaseStmt(AlterDatabaseStmt&& from) noexcept : AlterDatabaseStmt() { *this = ::std::move(from); } inline AlterDatabaseStmt& operator=(const AlterDatabaseStmt& from) { CopyFrom(from); return *this; } inline AlterDatabaseStmt& operator=(AlterDatabaseStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 121; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterDatabaseStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterDatabaseStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterDatabaseStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterDatabaseStmt& from) { AlterDatabaseStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterDatabaseStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterDatabaseStmt"; } protected: explicit AlterDatabaseStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string dbname = 1 [json_name = "dbname"]; void clear_dbname(); const std::string& dbname() const; template void set_dbname(ArgT0&& arg0, ArgT... args); std::string* mutable_dbname(); PROTOBUF_NODISCARD std::string* release_dbname(); void set_allocated_dbname(std::string* dbname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr dbname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterDatabaseRefreshCollStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDatabaseRefreshCollStmt) */ { public: inline AlterDatabaseRefreshCollStmt() : AlterDatabaseRefreshCollStmt(nullptr) {} ~AlterDatabaseRefreshCollStmt() override; explicit PROTOBUF_CONSTEXPR AlterDatabaseRefreshCollStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterDatabaseRefreshCollStmt(const AlterDatabaseRefreshCollStmt& 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 (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 122; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterDatabaseRefreshCollStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterDatabaseRefreshCollStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterDatabaseRefreshCollStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterDatabaseRefreshCollStmt& from) { AlterDatabaseRefreshCollStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterDatabaseRefreshCollStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterDatabaseRefreshCollStmt"; } protected: explicit AlterDatabaseRefreshCollStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_dbname(); PROTOBUF_NODISCARD std::string* release_dbname(); void set_allocated_dbname(std::string* dbname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr dbname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterDatabaseSetStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDatabaseSetStmt) */ { public: inline AlterDatabaseSetStmt() : AlterDatabaseSetStmt(nullptr) {} ~AlterDatabaseSetStmt() override; explicit PROTOBUF_CONSTEXPR AlterDatabaseSetStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterDatabaseSetStmt(const AlterDatabaseSetStmt& from); AlterDatabaseSetStmt(AlterDatabaseSetStmt&& from) noexcept : AlterDatabaseSetStmt() { *this = ::std::move(from); } inline AlterDatabaseSetStmt& operator=(const AlterDatabaseSetStmt& from) { CopyFrom(from); return *this; } inline AlterDatabaseSetStmt& operator=(AlterDatabaseSetStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 123; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterDatabaseSetStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterDatabaseSetStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterDatabaseSetStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterDatabaseSetStmt& from) { AlterDatabaseSetStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterDatabaseSetStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterDatabaseSetStmt"; } protected: explicit AlterDatabaseSetStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_dbname(); PROTOBUF_NODISCARD std::string* release_dbname(); void set_allocated_dbname(std::string* dbname); 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; private: bool _internal_has_setstmt() const; public: 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* setstmt); private: const ::pg_query::VariableSetStmt& _internal_setstmt() const; ::pg_query::VariableSetStmt* _internal_mutable_setstmt(); public: void unsafe_arena_set_allocated_setstmt( ::pg_query::VariableSetStmt* setstmt); ::pg_query::VariableSetStmt* unsafe_arena_release_setstmt(); // @@protoc_insertion_point(class_scope:pg_query.AlterDatabaseSetStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr dbname_; ::pg_query::VariableSetStmt* setstmt_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterRoleSetStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterRoleSetStmt) */ { public: inline AlterRoleSetStmt() : AlterRoleSetStmt(nullptr) {} ~AlterRoleSetStmt() override; explicit PROTOBUF_CONSTEXPR AlterRoleSetStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterRoleSetStmt(const AlterRoleSetStmt& from); AlterRoleSetStmt(AlterRoleSetStmt&& from) noexcept : AlterRoleSetStmt() { *this = ::std::move(from); } inline AlterRoleSetStmt& operator=(const AlterRoleSetStmt& from) { CopyFrom(from); return *this; } inline AlterRoleSetStmt& operator=(AlterRoleSetStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 124; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterRoleSetStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterRoleSetStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterRoleSetStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterRoleSetStmt& from) { AlterRoleSetStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterRoleSetStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterRoleSetStmt"; } protected: explicit AlterRoleSetStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_database(); PROTOBUF_NODISCARD std::string* release_database(); void set_allocated_database(std::string* database); 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; private: bool _internal_has_role() const; public: 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* role); private: const ::pg_query::RoleSpec& _internal_role() const; ::pg_query::RoleSpec* _internal_mutable_role(); public: void unsafe_arena_set_allocated_role( ::pg_query::RoleSpec* role); ::pg_query::RoleSpec* unsafe_arena_release_role(); // .pg_query.VariableSetStmt setstmt = 3 [json_name = "setstmt"]; bool has_setstmt() const; private: bool _internal_has_setstmt() const; public: void clear_setstmt(); const ::pg_query::VariableSetStmt& setstmt() const; PROTOBUF_NODISCARD ::pg_query::VariableSetStmt* release_setstmt(); ::pg_query::VariableSetStmt* mutable_setstmt(); void set_allocated_setstmt(::pg_query::VariableSetStmt* setstmt); private: const ::pg_query::VariableSetStmt& _internal_setstmt() const; ::pg_query::VariableSetStmt* _internal_mutable_setstmt(); public: void unsafe_arena_set_allocated_setstmt( ::pg_query::VariableSetStmt* setstmt); ::pg_query::VariableSetStmt* unsafe_arena_release_setstmt(); // @@protoc_insertion_point(class_scope:pg_query.AlterRoleSetStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr database_; ::pg_query::RoleSpec* role_; ::pg_query::VariableSetStmt* setstmt_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateConversionStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateConversionStmt) */ { public: inline CreateConversionStmt() : CreateConversionStmt(nullptr) {} ~CreateConversionStmt() override; explicit PROTOBUF_CONSTEXPR CreateConversionStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateConversionStmt(const CreateConversionStmt& from); CreateConversionStmt(CreateConversionStmt&& from) noexcept : CreateConversionStmt() { *this = ::std::move(from); } inline CreateConversionStmt& operator=(const CreateConversionStmt& from) { CopyFrom(from); return *this; } inline CreateConversionStmt& operator=(CreateConversionStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 125; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateConversionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateConversionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateConversionStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateConversionStmt& from) { CreateConversionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateConversionStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateConversionStmt"; } protected: explicit CreateConversionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_conversion_name(); private: const ::pg_query::Node& _internal_conversion_name(int index) const; ::pg_query::Node* _internal_add_conversion_name(); public: const ::pg_query::Node& conversion_name(int index) const; ::pg_query::Node* add_conversion_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& conversion_name() const; // repeated .pg_query.Node func_name = 4 [json_name = "func_name"]; int func_name_size() const; private: int _internal_func_name_size() const; public: void clear_func_name(); ::pg_query::Node* mutable_func_name(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_func_name(); private: const ::pg_query::Node& _internal_func_name(int index) const; ::pg_query::Node* _internal_add_func_name(); public: const ::pg_query::Node& func_name(int index) const; ::pg_query::Node* add_func_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& func_name() const; // string for_encoding_name = 2 [json_name = "for_encoding_name"]; void clear_for_encoding_name(); const std::string& for_encoding_name() const; template void set_for_encoding_name(ArgT0&& arg0, ArgT... args); std::string* mutable_for_encoding_name(); PROTOBUF_NODISCARD std::string* release_for_encoding_name(); void set_allocated_for_encoding_name(std::string* for_encoding_name); private: const std::string& _internal_for_encoding_name() const; 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(ArgT0&& arg0, ArgT... args); std::string* mutable_to_encoding_name(); PROTOBUF_NODISCARD std::string* release_to_encoding_name(); void set_allocated_to_encoding_name(std::string* to_encoding_name); private: const std::string& _internal_to_encoding_name() const; 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > conversion_name_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > func_name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr for_encoding_name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr to_encoding_name_; bool def_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateCastStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateCastStmt) */ { public: inline CreateCastStmt() : CreateCastStmt(nullptr) {} ~CreateCastStmt() override; explicit PROTOBUF_CONSTEXPR CreateCastStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateCastStmt(const CreateCastStmt& from); CreateCastStmt(CreateCastStmt&& from) noexcept : CreateCastStmt() { *this = ::std::move(from); } inline CreateCastStmt& operator=(const CreateCastStmt& from) { CopyFrom(from); return *this; } inline CreateCastStmt& operator=(CreateCastStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 126; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateCastStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateCastStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateCastStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateCastStmt& from) { CreateCastStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateCastStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateCastStmt"; } protected: explicit CreateCastStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_sourcetype() const; public: 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* sourcetype); private: const ::pg_query::TypeName& _internal_sourcetype() const; ::pg_query::TypeName* _internal_mutable_sourcetype(); public: void unsafe_arena_set_allocated_sourcetype( ::pg_query::TypeName* sourcetype); ::pg_query::TypeName* unsafe_arena_release_sourcetype(); // .pg_query.TypeName targettype = 2 [json_name = "targettype"]; bool has_targettype() const; private: bool _internal_has_targettype() const; public: void clear_targettype(); const ::pg_query::TypeName& targettype() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_targettype(); ::pg_query::TypeName* mutable_targettype(); void set_allocated_targettype(::pg_query::TypeName* targettype); private: const ::pg_query::TypeName& _internal_targettype() const; ::pg_query::TypeName* _internal_mutable_targettype(); public: void unsafe_arena_set_allocated_targettype( ::pg_query::TypeName* targettype); ::pg_query::TypeName* unsafe_arena_release_targettype(); // .pg_query.ObjectWithArgs func = 3 [json_name = "func"]; bool has_func() const; private: bool _internal_has_func() const; public: void clear_func(); const ::pg_query::ObjectWithArgs& func() const; PROTOBUF_NODISCARD ::pg_query::ObjectWithArgs* release_func(); ::pg_query::ObjectWithArgs* mutable_func(); void set_allocated_func(::pg_query::ObjectWithArgs* func); private: const ::pg_query::ObjectWithArgs& _internal_func() const; ::pg_query::ObjectWithArgs* _internal_mutable_func(); public: void unsafe_arena_set_allocated_func( ::pg_query::ObjectWithArgs* func); ::pg_query::ObjectWithArgs* unsafe_arena_release_func(); // .pg_query.CoercionContext context = 4 [json_name = "context"]; void clear_context(); ::pg_query::CoercionContext context() const; void set_context(::pg_query::CoercionContext value); private: ::pg_query::CoercionContext _internal_context() const; void _internal_set_context(::pg_query::CoercionContext value); public: // bool inout = 5 [json_name = "inout"]; void clear_inout(); bool inout() const; void set_inout(bool value); private: bool _internal_inout() const; void _internal_set_inout(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateCastStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::TypeName* sourcetype_; ::pg_query::TypeName* targettype_; ::pg_query::ObjectWithArgs* func_; int context_; bool inout_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateOpClassStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateOpClassStmt) */ { public: inline CreateOpClassStmt() : CreateOpClassStmt(nullptr) {} ~CreateOpClassStmt() override; explicit PROTOBUF_CONSTEXPR CreateOpClassStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateOpClassStmt(const CreateOpClassStmt& from); CreateOpClassStmt(CreateOpClassStmt&& from) noexcept : CreateOpClassStmt() { *this = ::std::move(from); } inline CreateOpClassStmt& operator=(const CreateOpClassStmt& from) { CopyFrom(from); return *this; } inline CreateOpClassStmt& operator=(CreateOpClassStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 127; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateOpClassStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateOpClassStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateOpClassStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateOpClassStmt& from) { CreateOpClassStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateOpClassStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateOpClassStmt"; } protected: explicit CreateOpClassStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opclassname(); private: const ::pg_query::Node& _internal_opclassname(int index) const; ::pg_query::Node* _internal_add_opclassname(); public: const ::pg_query::Node& opclassname(int index) const; ::pg_query::Node* add_opclassname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opclassname() const; // repeated .pg_query.Node opfamilyname = 2 [json_name = "opfamilyname"]; int opfamilyname_size() const; private: int _internal_opfamilyname_size() const; public: void clear_opfamilyname(); ::pg_query::Node* mutable_opfamilyname(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opfamilyname(); private: const ::pg_query::Node& _internal_opfamilyname(int index) const; ::pg_query::Node* _internal_add_opfamilyname(); public: const ::pg_query::Node& opfamilyname(int index) const; ::pg_query::Node* add_opfamilyname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opfamilyname() const; // repeated .pg_query.Node items = 5 [json_name = "items"]; int items_size() const; private: int _internal_items_size() const; public: void clear_items(); ::pg_query::Node* mutable_items(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_items(); private: const ::pg_query::Node& _internal_items(int index) const; ::pg_query::Node* _internal_add_items(); public: const ::pg_query::Node& items(int index) const; ::pg_query::Node* add_items(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& items() const; // string amname = 3 [json_name = "amname"]; void clear_amname(); const std::string& amname() const; template void set_amname(ArgT0&& arg0, ArgT... args); std::string* mutable_amname(); PROTOBUF_NODISCARD std::string* release_amname(); void set_allocated_amname(std::string* amname); 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; private: bool _internal_has_datatype() const; public: 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* datatype); private: const ::pg_query::TypeName& _internal_datatype() const; ::pg_query::TypeName* _internal_mutable_datatype(); public: void unsafe_arena_set_allocated_datatype( ::pg_query::TypeName* datatype); ::pg_query::TypeName* unsafe_arena_release_datatype(); // bool is_default = 6 [json_name = "isDefault"]; void clear_is_default(); bool is_default() const; void set_is_default(bool value); private: bool _internal_is_default() const; void _internal_set_is_default(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateOpClassStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opclassname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opfamilyname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > items_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr amname_; ::pg_query::TypeName* datatype_; bool is_default_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateOpFamilyStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateOpFamilyStmt) */ { public: inline CreateOpFamilyStmt() : CreateOpFamilyStmt(nullptr) {} ~CreateOpFamilyStmt() override; explicit PROTOBUF_CONSTEXPR CreateOpFamilyStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateOpFamilyStmt(const CreateOpFamilyStmt& from); CreateOpFamilyStmt(CreateOpFamilyStmt&& from) noexcept : CreateOpFamilyStmt() { *this = ::std::move(from); } inline CreateOpFamilyStmt& operator=(const CreateOpFamilyStmt& from) { CopyFrom(from); return *this; } inline CreateOpFamilyStmt& operator=(CreateOpFamilyStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 128; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateOpFamilyStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateOpFamilyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateOpFamilyStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateOpFamilyStmt& from) { CreateOpFamilyStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateOpFamilyStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateOpFamilyStmt"; } protected: explicit CreateOpFamilyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opfamilyname(); private: const ::pg_query::Node& _internal_opfamilyname(int index) const; ::pg_query::Node* _internal_add_opfamilyname(); public: const ::pg_query::Node& opfamilyname(int index) const; ::pg_query::Node* add_opfamilyname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opfamilyname() const; // string amname = 2 [json_name = "amname"]; void clear_amname(); const std::string& amname() const; template void set_amname(ArgT0&& arg0, ArgT... args); std::string* mutable_amname(); PROTOBUF_NODISCARD std::string* release_amname(); void set_allocated_amname(std::string* amname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opfamilyname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr amname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterOpFamilyStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterOpFamilyStmt) */ { public: inline AlterOpFamilyStmt() : AlterOpFamilyStmt(nullptr) {} ~AlterOpFamilyStmt() override; explicit PROTOBUF_CONSTEXPR AlterOpFamilyStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterOpFamilyStmt(const AlterOpFamilyStmt& from); AlterOpFamilyStmt(AlterOpFamilyStmt&& from) noexcept : AlterOpFamilyStmt() { *this = ::std::move(from); } inline AlterOpFamilyStmt& operator=(const AlterOpFamilyStmt& from) { CopyFrom(from); return *this; } inline AlterOpFamilyStmt& operator=(AlterOpFamilyStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 129; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterOpFamilyStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterOpFamilyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterOpFamilyStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterOpFamilyStmt& from) { AlterOpFamilyStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterOpFamilyStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterOpFamilyStmt"; } protected: explicit AlterOpFamilyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opfamilyname(); private: const ::pg_query::Node& _internal_opfamilyname(int index) const; ::pg_query::Node* _internal_add_opfamilyname(); public: const ::pg_query::Node& opfamilyname(int index) const; ::pg_query::Node* add_opfamilyname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opfamilyname() const; // repeated .pg_query.Node items = 4 [json_name = "items"]; int items_size() const; private: int _internal_items_size() const; public: void clear_items(); ::pg_query::Node* mutable_items(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_items(); private: const ::pg_query::Node& _internal_items(int index) const; ::pg_query::Node* _internal_add_items(); public: const ::pg_query::Node& items(int index) const; ::pg_query::Node* add_items(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& items() const; // string amname = 2 [json_name = "amname"]; void clear_amname(); const std::string& amname() const; template void set_amname(ArgT0&& arg0, ArgT... args); std::string* mutable_amname(); PROTOBUF_NODISCARD std::string* release_amname(); void set_allocated_amname(std::string* amname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opfamilyname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > items_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr amname_; bool is_drop_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class PrepareStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PrepareStmt) */ { public: inline PrepareStmt() : PrepareStmt(nullptr) {} ~PrepareStmt() override; explicit PROTOBUF_CONSTEXPR PrepareStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); PrepareStmt(const PrepareStmt& from); PrepareStmt(PrepareStmt&& from) noexcept : PrepareStmt() { *this = ::std::move(from); } inline PrepareStmt& operator=(const PrepareStmt& from) { CopyFrom(from); return *this; } inline PrepareStmt& operator=(PrepareStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 130; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PrepareStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PrepareStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const PrepareStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const PrepareStmt& from) { PrepareStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(PrepareStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.PrepareStmt"; } protected: explicit PrepareStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_argtypes(); private: const ::pg_query::Node& _internal_argtypes(int index) const; ::pg_query::Node* _internal_add_argtypes(); public: const ::pg_query::Node& argtypes(int index) const; ::pg_query::Node* add_argtypes(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& argtypes() const; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; template void set_name(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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; private: bool _internal_has_query() const; public: 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* query); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: void unsafe_arena_set_allocated_query( ::pg_query::Node* query); ::pg_query::Node* unsafe_arena_release_query(); // @@protoc_insertion_point(class_scope:pg_query.PrepareStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > argtypes_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::Node* query_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ExecuteStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ExecuteStmt) */ { public: inline ExecuteStmt() : ExecuteStmt(nullptr) {} ~ExecuteStmt() override; explicit PROTOBUF_CONSTEXPR ExecuteStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ExecuteStmt(const ExecuteStmt& from); ExecuteStmt(ExecuteStmt&& from) noexcept : ExecuteStmt() { *this = ::std::move(from); } inline ExecuteStmt& operator=(const ExecuteStmt& from) { CopyFrom(from); return *this; } inline ExecuteStmt& operator=(ExecuteStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 131; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ExecuteStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ExecuteStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ExecuteStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ExecuteStmt& from) { ExecuteStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ExecuteStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ExecuteStmt"; } protected: explicit ExecuteStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_params(); private: const ::pg_query::Node& _internal_params(int index) const; ::pg_query::Node* _internal_add_params(); public: const ::pg_query::Node& params(int index) const; ::pg_query::Node* add_params(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& params() const; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; template void set_name(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > params_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DeallocateStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DeallocateStmt) */ { public: inline DeallocateStmt() : DeallocateStmt(nullptr) {} ~DeallocateStmt() override; explicit PROTOBUF_CONSTEXPR DeallocateStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); DeallocateStmt(const DeallocateStmt& from); DeallocateStmt(DeallocateStmt&& from) noexcept : DeallocateStmt() { *this = ::std::move(from); } inline DeallocateStmt& operator=(const DeallocateStmt& from) { CopyFrom(from); return *this; } inline DeallocateStmt& operator=(DeallocateStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 132; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DeallocateStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DeallocateStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const DeallocateStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const DeallocateStmt& from) { DeallocateStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DeallocateStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DeallocateStmt"; } protected: explicit DeallocateStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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.DeallocateStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DeclareCursorStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DeclareCursorStmt) */ { public: inline DeclareCursorStmt() : DeclareCursorStmt(nullptr) {} ~DeclareCursorStmt() override; explicit PROTOBUF_CONSTEXPR DeclareCursorStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); DeclareCursorStmt(const DeclareCursorStmt& from); DeclareCursorStmt(DeclareCursorStmt&& from) noexcept : DeclareCursorStmt() { *this = ::std::move(from); } inline DeclareCursorStmt& operator=(const DeclareCursorStmt& from) { CopyFrom(from); return *this; } inline DeclareCursorStmt& operator=(DeclareCursorStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 133; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DeclareCursorStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DeclareCursorStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const DeclareCursorStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const DeclareCursorStmt& from) { DeclareCursorStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DeclareCursorStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DeclareCursorStmt"; } protected: explicit DeclareCursorStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_portalname(); PROTOBUF_NODISCARD std::string* release_portalname(); void set_allocated_portalname(std::string* portalname); 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; private: bool _internal_has_query() const; public: 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* query); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: void unsafe_arena_set_allocated_query( ::pg_query::Node* query); ::pg_query::Node* unsafe_arena_release_query(); // int32 options = 2 [json_name = "options"]; void clear_options(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr portalname_; ::pg_query::Node* query_; int32_t options_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateTableSpaceStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateTableSpaceStmt) */ { public: inline CreateTableSpaceStmt() : CreateTableSpaceStmt(nullptr) {} ~CreateTableSpaceStmt() override; explicit PROTOBUF_CONSTEXPR CreateTableSpaceStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateTableSpaceStmt(const CreateTableSpaceStmt& from); CreateTableSpaceStmt(CreateTableSpaceStmt&& from) noexcept : CreateTableSpaceStmt() { *this = ::std::move(from); } inline CreateTableSpaceStmt& operator=(const CreateTableSpaceStmt& from) { CopyFrom(from); return *this; } inline CreateTableSpaceStmt& operator=(CreateTableSpaceStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 134; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateTableSpaceStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateTableSpaceStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateTableSpaceStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateTableSpaceStmt& from) { CreateTableSpaceStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateTableSpaceStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateTableSpaceStmt"; } protected: explicit CreateTableSpaceStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string tablespacename = 1 [json_name = "tablespacename"]; void clear_tablespacename(); const std::string& tablespacename() const; template void set_tablespacename(ArgT0&& arg0, ArgT... args); std::string* mutable_tablespacename(); PROTOBUF_NODISCARD std::string* release_tablespacename(); void set_allocated_tablespacename(std::string* tablespacename); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_location(); PROTOBUF_NODISCARD std::string* release_location(); void set_allocated_location(std::string* location); 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; private: bool _internal_has_owner() const; public: 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* owner); private: const ::pg_query::RoleSpec& _internal_owner() const; ::pg_query::RoleSpec* _internal_mutable_owner(); public: void unsafe_arena_set_allocated_owner( ::pg_query::RoleSpec* owner); ::pg_query::RoleSpec* unsafe_arena_release_owner(); // @@protoc_insertion_point(class_scope:pg_query.CreateTableSpaceStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tablespacename_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr location_; ::pg_query::RoleSpec* owner_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DropTableSpaceStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropTableSpaceStmt) */ { public: inline DropTableSpaceStmt() : DropTableSpaceStmt(nullptr) {} ~DropTableSpaceStmt() override; explicit PROTOBUF_CONSTEXPR DropTableSpaceStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); DropTableSpaceStmt(const DropTableSpaceStmt& from); DropTableSpaceStmt(DropTableSpaceStmt&& from) noexcept : DropTableSpaceStmt() { *this = ::std::move(from); } inline DropTableSpaceStmt& operator=(const DropTableSpaceStmt& from) { CopyFrom(from); return *this; } inline DropTableSpaceStmt& operator=(DropTableSpaceStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 135; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropTableSpaceStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DropTableSpaceStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const DropTableSpaceStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const DropTableSpaceStmt& from) { DropTableSpaceStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DropTableSpaceStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DropTableSpaceStmt"; } protected: explicit DropTableSpaceStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_tablespacename(); PROTOBUF_NODISCARD std::string* release_tablespacename(); void set_allocated_tablespacename(std::string* tablespacename); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tablespacename_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterObjectDependsStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterObjectDependsStmt) */ { public: inline AlterObjectDependsStmt() : AlterObjectDependsStmt(nullptr) {} ~AlterObjectDependsStmt() override; explicit PROTOBUF_CONSTEXPR AlterObjectDependsStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterObjectDependsStmt(const AlterObjectDependsStmt& from); AlterObjectDependsStmt(AlterObjectDependsStmt&& from) noexcept : AlterObjectDependsStmt() { *this = ::std::move(from); } inline AlterObjectDependsStmt& operator=(const AlterObjectDependsStmt& from) { CopyFrom(from); return *this; } inline AlterObjectDependsStmt& operator=(AlterObjectDependsStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 136; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterObjectDependsStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterObjectDependsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterObjectDependsStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterObjectDependsStmt& from) { AlterObjectDependsStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterObjectDependsStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterObjectDependsStmt"; } protected: explicit AlterObjectDependsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_relation() const; public: 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* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node object = 3 [json_name = "object"]; bool has_object() const; private: bool _internal_has_object() const; public: void clear_object(); const ::pg_query::Node& object() const; PROTOBUF_NODISCARD ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* object); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: void unsafe_arena_set_allocated_object( ::pg_query::Node* object); ::pg_query::Node* unsafe_arena_release_object(); // .pg_query.String extname = 4 [json_name = "extname"]; bool has_extname() const; private: bool _internal_has_extname() const; public: 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* extname); private: const ::pg_query::String& _internal_extname() const; ::pg_query::String* _internal_mutable_extname(); public: void unsafe_arena_set_allocated_extname( ::pg_query::String* extname); ::pg_query::String* unsafe_arena_release_extname(); // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; void clear_object_type(); ::pg_query::ObjectType object_type() const; void set_object_type(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_object_type() const; void _internal_set_object_type(::pg_query::ObjectType value); public: // bool remove = 5 [json_name = "remove"]; void clear_remove(); bool remove() const; void set_remove(bool value); private: bool _internal_remove() const; void _internal_set_remove(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterObjectDependsStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::RangeVar* relation_; ::pg_query::Node* object_; ::pg_query::String* extname_; int object_type_; bool remove_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterObjectSchemaStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterObjectSchemaStmt) */ { public: inline AlterObjectSchemaStmt() : AlterObjectSchemaStmt(nullptr) {} ~AlterObjectSchemaStmt() override; explicit PROTOBUF_CONSTEXPR AlterObjectSchemaStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterObjectSchemaStmt(const AlterObjectSchemaStmt& from); AlterObjectSchemaStmt(AlterObjectSchemaStmt&& from) noexcept : AlterObjectSchemaStmt() { *this = ::std::move(from); } inline AlterObjectSchemaStmt& operator=(const AlterObjectSchemaStmt& from) { CopyFrom(from); return *this; } inline AlterObjectSchemaStmt& operator=(AlterObjectSchemaStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 137; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterObjectSchemaStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterObjectSchemaStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterObjectSchemaStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterObjectSchemaStmt& from) { AlterObjectSchemaStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterObjectSchemaStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterObjectSchemaStmt"; } protected: explicit AlterObjectSchemaStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_newschema(); PROTOBUF_NODISCARD std::string* release_newschema(); void set_allocated_newschema(std::string* newschema); 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; private: bool _internal_has_relation() const; public: 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* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node object = 3 [json_name = "object"]; bool has_object() const; private: bool _internal_has_object() const; public: void clear_object(); const ::pg_query::Node& object() const; PROTOBUF_NODISCARD ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* object); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: void unsafe_arena_set_allocated_object( ::pg_query::Node* object); ::pg_query::Node* unsafe_arena_release_object(); // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; void clear_object_type(); ::pg_query::ObjectType object_type() const; void set_object_type(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_object_type() const; void _internal_set_object_type(::pg_query::ObjectType value); public: // bool missing_ok = 5 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterObjectSchemaStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr newschema_; ::pg_query::RangeVar* relation_; ::pg_query::Node* object_; int object_type_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterOwnerStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterOwnerStmt) */ { public: inline AlterOwnerStmt() : AlterOwnerStmt(nullptr) {} ~AlterOwnerStmt() override; explicit PROTOBUF_CONSTEXPR AlterOwnerStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterOwnerStmt(const AlterOwnerStmt& from); AlterOwnerStmt(AlterOwnerStmt&& from) noexcept : AlterOwnerStmt() { *this = ::std::move(from); } inline AlterOwnerStmt& operator=(const AlterOwnerStmt& from) { CopyFrom(from); return *this; } inline AlterOwnerStmt& operator=(AlterOwnerStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 138; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterOwnerStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterOwnerStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterOwnerStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterOwnerStmt& from) { AlterOwnerStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterOwnerStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterOwnerStmt"; } protected: explicit AlterOwnerStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_relation() const; public: 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* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node object = 3 [json_name = "object"]; bool has_object() const; private: bool _internal_has_object() const; public: void clear_object(); const ::pg_query::Node& object() const; PROTOBUF_NODISCARD ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* object); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: void unsafe_arena_set_allocated_object( ::pg_query::Node* object); ::pg_query::Node* unsafe_arena_release_object(); // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; bool has_newowner() const; private: bool _internal_has_newowner() const; public: void clear_newowner(); const ::pg_query::RoleSpec& newowner() const; PROTOBUF_NODISCARD ::pg_query::RoleSpec* release_newowner(); ::pg_query::RoleSpec* mutable_newowner(); void set_allocated_newowner(::pg_query::RoleSpec* newowner); private: const ::pg_query::RoleSpec& _internal_newowner() const; ::pg_query::RoleSpec* _internal_mutable_newowner(); public: void unsafe_arena_set_allocated_newowner( ::pg_query::RoleSpec* newowner); ::pg_query::RoleSpec* unsafe_arena_release_newowner(); // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; void clear_object_type(); ::pg_query::ObjectType object_type() const; void set_object_type(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_object_type() const; void _internal_set_object_type(::pg_query::ObjectType value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterOwnerStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::RangeVar* relation_; ::pg_query::Node* object_; ::pg_query::RoleSpec* newowner_; int object_type_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterOperatorStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterOperatorStmt) */ { public: inline AlterOperatorStmt() : AlterOperatorStmt(nullptr) {} ~AlterOperatorStmt() override; explicit PROTOBUF_CONSTEXPR AlterOperatorStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterOperatorStmt(const AlterOperatorStmt& from); AlterOperatorStmt(AlterOperatorStmt&& from) noexcept : AlterOperatorStmt() { *this = ::std::move(from); } inline AlterOperatorStmt& operator=(const AlterOperatorStmt& from) { CopyFrom(from); return *this; } inline AlterOperatorStmt& operator=(AlterOperatorStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 139; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterOperatorStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterOperatorStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterOperatorStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterOperatorStmt& from) { AlterOperatorStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterOperatorStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterOperatorStmt"; } protected: explicit AlterOperatorStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.ObjectWithArgs opername = 1 [json_name = "opername"]; bool has_opername() const; private: bool _internal_has_opername() const; public: void clear_opername(); const ::pg_query::ObjectWithArgs& opername() const; PROTOBUF_NODISCARD ::pg_query::ObjectWithArgs* release_opername(); ::pg_query::ObjectWithArgs* mutable_opername(); void set_allocated_opername(::pg_query::ObjectWithArgs* opername); private: const ::pg_query::ObjectWithArgs& _internal_opername() const; ::pg_query::ObjectWithArgs* _internal_mutable_opername(); public: void unsafe_arena_set_allocated_opername( ::pg_query::ObjectWithArgs* opername); ::pg_query::ObjectWithArgs* unsafe_arena_release_opername(); // @@protoc_insertion_point(class_scope:pg_query.AlterOperatorStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::ObjectWithArgs* opername_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterTypeStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTypeStmt) */ { public: inline AlterTypeStmt() : AlterTypeStmt(nullptr) {} ~AlterTypeStmt() override; explicit PROTOBUF_CONSTEXPR AlterTypeStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterTypeStmt(const AlterTypeStmt& from); AlterTypeStmt(AlterTypeStmt&& from) noexcept : AlterTypeStmt() { *this = ::std::move(from); } inline AlterTypeStmt& operator=(const AlterTypeStmt& from) { CopyFrom(from); return *this; } inline AlterTypeStmt& operator=(AlterTypeStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 140; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTypeStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterTypeStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterTypeStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterTypeStmt& from) { AlterTypeStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterTypeStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterTypeStmt"; } protected: explicit AlterTypeStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_type_name(); private: const ::pg_query::Node& _internal_type_name(int index) const; ::pg_query::Node* _internal_add_type_name(); public: const ::pg_query::Node& type_name(int index) const; ::pg_query::Node* add_type_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& type_name() const; // repeated .pg_query.Node options = 2 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // @@protoc_insertion_point(class_scope:pg_query.AlterTypeStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > type_name_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DropOwnedStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropOwnedStmt) */ { public: inline DropOwnedStmt() : DropOwnedStmt(nullptr) {} ~DropOwnedStmt() override; explicit PROTOBUF_CONSTEXPR DropOwnedStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); DropOwnedStmt(const DropOwnedStmt& from); DropOwnedStmt(DropOwnedStmt&& from) noexcept : DropOwnedStmt() { *this = ::std::move(from); } inline DropOwnedStmt& operator=(const DropOwnedStmt& from) { CopyFrom(from); return *this; } inline DropOwnedStmt& operator=(DropOwnedStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 141; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropOwnedStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DropOwnedStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const DropOwnedStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const DropOwnedStmt& from) { DropOwnedStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DropOwnedStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DropOwnedStmt"; } protected: explicit DropOwnedStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::pg_query::Node& _internal_roles(int index) const; ::pg_query::Node* _internal_add_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& roles() const; // .pg_query.DropBehavior behavior = 2 [json_name = "behavior"]; void clear_behavior(); ::pg_query::DropBehavior behavior() const; void set_behavior(::pg_query::DropBehavior value); private: ::pg_query::DropBehavior _internal_behavior() const; void _internal_set_behavior(::pg_query::DropBehavior value); public: // @@protoc_insertion_point(class_scope:pg_query.DropOwnedStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; int behavior_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ReassignOwnedStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ReassignOwnedStmt) */ { public: inline ReassignOwnedStmt() : ReassignOwnedStmt(nullptr) {} ~ReassignOwnedStmt() override; explicit PROTOBUF_CONSTEXPR ReassignOwnedStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ReassignOwnedStmt(const ReassignOwnedStmt& from); ReassignOwnedStmt(ReassignOwnedStmt&& from) noexcept : ReassignOwnedStmt() { *this = ::std::move(from); } inline ReassignOwnedStmt& operator=(const ReassignOwnedStmt& from) { CopyFrom(from); return *this; } inline ReassignOwnedStmt& operator=(ReassignOwnedStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 142; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ReassignOwnedStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ReassignOwnedStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ReassignOwnedStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ReassignOwnedStmt& from) { ReassignOwnedStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ReassignOwnedStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ReassignOwnedStmt"; } protected: explicit ReassignOwnedStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::pg_query::Node& _internal_roles(int index) const; ::pg_query::Node* _internal_add_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& roles() const; // .pg_query.RoleSpec newrole = 2 [json_name = "newrole"]; bool has_newrole() const; private: bool _internal_has_newrole() const; public: void clear_newrole(); const ::pg_query::RoleSpec& newrole() const; PROTOBUF_NODISCARD ::pg_query::RoleSpec* release_newrole(); ::pg_query::RoleSpec* mutable_newrole(); void set_allocated_newrole(::pg_query::RoleSpec* newrole); private: const ::pg_query::RoleSpec& _internal_newrole() const; ::pg_query::RoleSpec* _internal_mutable_newrole(); public: void unsafe_arena_set_allocated_newrole( ::pg_query::RoleSpec* newrole); ::pg_query::RoleSpec* unsafe_arena_release_newrole(); // @@protoc_insertion_point(class_scope:pg_query.ReassignOwnedStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; ::pg_query::RoleSpec* newrole_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CompositeTypeStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CompositeTypeStmt) */ { public: inline CompositeTypeStmt() : CompositeTypeStmt(nullptr) {} ~CompositeTypeStmt() override; explicit PROTOBUF_CONSTEXPR CompositeTypeStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CompositeTypeStmt(const CompositeTypeStmt& from); CompositeTypeStmt(CompositeTypeStmt&& from) noexcept : CompositeTypeStmt() { *this = ::std::move(from); } inline CompositeTypeStmt& operator=(const CompositeTypeStmt& from) { CopyFrom(from); return *this; } inline CompositeTypeStmt& operator=(CompositeTypeStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 143; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CompositeTypeStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CompositeTypeStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CompositeTypeStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CompositeTypeStmt& from) { CompositeTypeStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CompositeTypeStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CompositeTypeStmt"; } protected: explicit CompositeTypeStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_coldeflist(); private: const ::pg_query::Node& _internal_coldeflist(int index) const; ::pg_query::Node* _internal_add_coldeflist(); public: const ::pg_query::Node& coldeflist(int index) const; ::pg_query::Node* add_coldeflist(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& coldeflist() const; // .pg_query.RangeVar typevar = 1 [json_name = "typevar"]; bool has_typevar() const; private: bool _internal_has_typevar() const; public: void clear_typevar(); const ::pg_query::RangeVar& typevar() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_typevar(); ::pg_query::RangeVar* mutable_typevar(); void set_allocated_typevar(::pg_query::RangeVar* typevar); private: const ::pg_query::RangeVar& _internal_typevar() const; ::pg_query::RangeVar* _internal_mutable_typevar(); public: void unsafe_arena_set_allocated_typevar( ::pg_query::RangeVar* typevar); ::pg_query::RangeVar* unsafe_arena_release_typevar(); // @@protoc_insertion_point(class_scope:pg_query.CompositeTypeStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coldeflist_; ::pg_query::RangeVar* typevar_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateEnumStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateEnumStmt) */ { public: inline CreateEnumStmt() : CreateEnumStmt(nullptr) {} ~CreateEnumStmt() override; explicit PROTOBUF_CONSTEXPR CreateEnumStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateEnumStmt(const CreateEnumStmt& from); CreateEnumStmt(CreateEnumStmt&& from) noexcept : CreateEnumStmt() { *this = ::std::move(from); } inline CreateEnumStmt& operator=(const CreateEnumStmt& from) { CopyFrom(from); return *this; } inline CreateEnumStmt& operator=(CreateEnumStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 144; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateEnumStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateEnumStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateEnumStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateEnumStmt& from) { CreateEnumStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateEnumStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateEnumStmt"; } protected: explicit CreateEnumStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_type_name(); private: const ::pg_query::Node& _internal_type_name(int index) const; ::pg_query::Node* _internal_add_type_name(); public: const ::pg_query::Node& type_name(int index) const; ::pg_query::Node* add_type_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& type_name() const; // repeated .pg_query.Node vals = 2 [json_name = "vals"]; int vals_size() const; private: int _internal_vals_size() const; public: void clear_vals(); ::pg_query::Node* mutable_vals(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_vals(); private: const ::pg_query::Node& _internal_vals(int index) const; ::pg_query::Node* _internal_add_vals(); public: const ::pg_query::Node& vals(int index) const; ::pg_query::Node* add_vals(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& vals() const; // @@protoc_insertion_point(class_scope:pg_query.CreateEnumStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > type_name_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > vals_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateRangeStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateRangeStmt) */ { public: inline CreateRangeStmt() : CreateRangeStmt(nullptr) {} ~CreateRangeStmt() override; explicit PROTOBUF_CONSTEXPR CreateRangeStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateRangeStmt(const CreateRangeStmt& from); CreateRangeStmt(CreateRangeStmt&& from) noexcept : CreateRangeStmt() { *this = ::std::move(from); } inline CreateRangeStmt& operator=(const CreateRangeStmt& from) { CopyFrom(from); return *this; } inline CreateRangeStmt& operator=(CreateRangeStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 145; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateRangeStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateRangeStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateRangeStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateRangeStmt& from) { CreateRangeStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateRangeStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateRangeStmt"; } protected: explicit CreateRangeStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_type_name(); private: const ::pg_query::Node& _internal_type_name(int index) const; ::pg_query::Node* _internal_add_type_name(); public: const ::pg_query::Node& type_name(int index) const; ::pg_query::Node* add_type_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& type_name() const; // repeated .pg_query.Node params = 2 [json_name = "params"]; int params_size() const; private: int _internal_params_size() const; public: void clear_params(); ::pg_query::Node* mutable_params(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_params(); private: const ::pg_query::Node& _internal_params(int index) const; ::pg_query::Node* _internal_add_params(); public: const ::pg_query::Node& params(int index) const; ::pg_query::Node* add_params(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& params() const; // @@protoc_insertion_point(class_scope:pg_query.CreateRangeStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > type_name_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > params_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterEnumStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterEnumStmt) */ { public: inline AlterEnumStmt() : AlterEnumStmt(nullptr) {} ~AlterEnumStmt() override; explicit PROTOBUF_CONSTEXPR AlterEnumStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterEnumStmt(const AlterEnumStmt& from); AlterEnumStmt(AlterEnumStmt&& from) noexcept : AlterEnumStmt() { *this = ::std::move(from); } inline AlterEnumStmt& operator=(const AlterEnumStmt& from) { CopyFrom(from); return *this; } inline AlterEnumStmt& operator=(AlterEnumStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 146; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterEnumStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterEnumStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterEnumStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterEnumStmt& from) { AlterEnumStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterEnumStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterEnumStmt"; } protected: explicit AlterEnumStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_type_name(); private: const ::pg_query::Node& _internal_type_name(int index) const; ::pg_query::Node* _internal_add_type_name(); public: const ::pg_query::Node& type_name(int index) const; ::pg_query::Node* add_type_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& type_name() const; // string old_val = 2 [json_name = "oldVal"]; void clear_old_val(); const std::string& old_val() const; template void set_old_val(ArgT0&& arg0, ArgT... args); std::string* mutable_old_val(); PROTOBUF_NODISCARD std::string* release_old_val(); void set_allocated_old_val(std::string* old_val); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_new_val(); PROTOBUF_NODISCARD std::string* release_new_val(); void set_allocated_new_val(std::string* new_val); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_new_val_neighbor(); PROTOBUF_NODISCARD std::string* release_new_val_neighbor(); void set_allocated_new_val_neighbor(std::string* new_val_neighbor); private: const std::string& _internal_new_val_neighbor() const; 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > type_name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr old_val_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr new_val_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr new_val_neighbor_; bool new_val_is_after_; bool skip_if_new_val_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterTSDictionaryStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTSDictionaryStmt) */ { public: inline AlterTSDictionaryStmt() : AlterTSDictionaryStmt(nullptr) {} ~AlterTSDictionaryStmt() override; explicit PROTOBUF_CONSTEXPR AlterTSDictionaryStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterTSDictionaryStmt(const AlterTSDictionaryStmt& from); AlterTSDictionaryStmt(AlterTSDictionaryStmt&& from) noexcept : AlterTSDictionaryStmt() { *this = ::std::move(from); } inline AlterTSDictionaryStmt& operator=(const AlterTSDictionaryStmt& from) { CopyFrom(from); return *this; } inline AlterTSDictionaryStmt& operator=(AlterTSDictionaryStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 147; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTSDictionaryStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterTSDictionaryStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterTSDictionaryStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterTSDictionaryStmt& from) { AlterTSDictionaryStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterTSDictionaryStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterTSDictionaryStmt"; } protected: explicit AlterTSDictionaryStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_dictname(); private: const ::pg_query::Node& _internal_dictname(int index) const; ::pg_query::Node* _internal_add_dictname(); public: const ::pg_query::Node& dictname(int index) const; ::pg_query::Node* add_dictname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& dictname() const; // repeated .pg_query.Node options = 2 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // @@protoc_insertion_point(class_scope:pg_query.AlterTSDictionaryStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > dictname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterTSConfigurationStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTSConfigurationStmt) */ { public: inline AlterTSConfigurationStmt() : AlterTSConfigurationStmt(nullptr) {} ~AlterTSConfigurationStmt() override; explicit PROTOBUF_CONSTEXPR AlterTSConfigurationStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterTSConfigurationStmt(const AlterTSConfigurationStmt& from); AlterTSConfigurationStmt(AlterTSConfigurationStmt&& from) noexcept : AlterTSConfigurationStmt() { *this = ::std::move(from); } inline AlterTSConfigurationStmt& operator=(const AlterTSConfigurationStmt& from) { CopyFrom(from); return *this; } inline AlterTSConfigurationStmt& operator=(AlterTSConfigurationStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 148; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTSConfigurationStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterTSConfigurationStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterTSConfigurationStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterTSConfigurationStmt& from) { AlterTSConfigurationStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterTSConfigurationStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterTSConfigurationStmt"; } protected: explicit AlterTSConfigurationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_cfgname(); private: const ::pg_query::Node& _internal_cfgname(int index) const; ::pg_query::Node* _internal_add_cfgname(); public: const ::pg_query::Node& cfgname(int index) const; ::pg_query::Node* add_cfgname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& cfgname() const; // repeated .pg_query.Node tokentype = 3 [json_name = "tokentype"]; int tokentype_size() const; private: int _internal_tokentype_size() const; public: void clear_tokentype(); ::pg_query::Node* mutable_tokentype(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_tokentype(); private: const ::pg_query::Node& _internal_tokentype(int index) const; ::pg_query::Node* _internal_add_tokentype(); public: const ::pg_query::Node& tokentype(int index) const; ::pg_query::Node* add_tokentype(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& tokentype() const; // repeated .pg_query.Node dicts = 4 [json_name = "dicts"]; int dicts_size() const; private: int _internal_dicts_size() const; public: void clear_dicts(); ::pg_query::Node* mutable_dicts(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_dicts(); private: const ::pg_query::Node& _internal_dicts(int index) const; ::pg_query::Node* _internal_add_dicts(); public: const ::pg_query::Node& dicts(int index) const; ::pg_query::Node* add_dicts(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& dicts() const; // .pg_query.AlterTSConfigType kind = 1 [json_name = "kind"]; void clear_kind(); ::pg_query::AlterTSConfigType kind() const; void set_kind(::pg_query::AlterTSConfigType value); private: ::pg_query::AlterTSConfigType _internal_kind() const; void _internal_set_kind(::pg_query::AlterTSConfigType value); public: // bool override = 5 [json_name = "override"]; void clear_override(); bool override() const; void set_override(bool value); private: bool _internal_override() const; void _internal_set_override(bool value); public: // bool replace = 6 [json_name = "replace"]; void clear_replace(); bool replace() const; void set_replace(bool value); private: bool _internal_replace() const; void _internal_set_replace(bool value); public: // bool missing_ok = 7 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterTSConfigurationStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cfgname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > tokentype_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > dicts_; int kind_; bool override_; bool replace_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateFdwStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateFdwStmt) */ { public: inline CreateFdwStmt() : CreateFdwStmt(nullptr) {} ~CreateFdwStmt() override; explicit PROTOBUF_CONSTEXPR CreateFdwStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateFdwStmt(const CreateFdwStmt& from); CreateFdwStmt(CreateFdwStmt&& from) noexcept : CreateFdwStmt() { *this = ::std::move(from); } inline CreateFdwStmt& operator=(const CreateFdwStmt& from) { CopyFrom(from); return *this; } inline CreateFdwStmt& operator=(CreateFdwStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 149; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateFdwStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateFdwStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateFdwStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateFdwStmt& from) { CreateFdwStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateFdwStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateFdwStmt"; } protected: explicit CreateFdwStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_func_options(); private: const ::pg_query::Node& _internal_func_options(int index) const; ::pg_query::Node* _internal_add_func_options(); public: const ::pg_query::Node& func_options(int index) const; ::pg_query::Node* add_func_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& func_options() const; // repeated .pg_query.Node options = 3 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string fdwname = 1 [json_name = "fdwname"]; void clear_fdwname(); const std::string& fdwname() const; template void set_fdwname(ArgT0&& arg0, ArgT... args); std::string* mutable_fdwname(); PROTOBUF_NODISCARD std::string* release_fdwname(); void set_allocated_fdwname(std::string* fdwname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > func_options_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fdwname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterFdwStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterFdwStmt) */ { public: inline AlterFdwStmt() : AlterFdwStmt(nullptr) {} ~AlterFdwStmt() override; explicit PROTOBUF_CONSTEXPR AlterFdwStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterFdwStmt(const AlterFdwStmt& from); AlterFdwStmt(AlterFdwStmt&& from) noexcept : AlterFdwStmt() { *this = ::std::move(from); } inline AlterFdwStmt& operator=(const AlterFdwStmt& from) { CopyFrom(from); return *this; } inline AlterFdwStmt& operator=(AlterFdwStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 150; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterFdwStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterFdwStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterFdwStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterFdwStmt& from) { AlterFdwStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterFdwStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterFdwStmt"; } protected: explicit AlterFdwStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_func_options(); private: const ::pg_query::Node& _internal_func_options(int index) const; ::pg_query::Node* _internal_add_func_options(); public: const ::pg_query::Node& func_options(int index) const; ::pg_query::Node* add_func_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& func_options() const; // repeated .pg_query.Node options = 3 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string fdwname = 1 [json_name = "fdwname"]; void clear_fdwname(); const std::string& fdwname() const; template void set_fdwname(ArgT0&& arg0, ArgT... args); std::string* mutable_fdwname(); PROTOBUF_NODISCARD std::string* release_fdwname(); void set_allocated_fdwname(std::string* fdwname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > func_options_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fdwname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateForeignServerStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateForeignServerStmt) */ { public: inline CreateForeignServerStmt() : CreateForeignServerStmt(nullptr) {} ~CreateForeignServerStmt() override; explicit PROTOBUF_CONSTEXPR CreateForeignServerStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateForeignServerStmt(const CreateForeignServerStmt& from); CreateForeignServerStmt(CreateForeignServerStmt&& from) noexcept : CreateForeignServerStmt() { *this = ::std::move(from); } inline CreateForeignServerStmt& operator=(const CreateForeignServerStmt& from) { CopyFrom(from); return *this; } inline CreateForeignServerStmt& operator=(CreateForeignServerStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 151; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateForeignServerStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateForeignServerStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateForeignServerStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateForeignServerStmt& from) { CreateForeignServerStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateForeignServerStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateForeignServerStmt"; } protected: explicit CreateForeignServerStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string servername = 1 [json_name = "servername"]; void clear_servername(); const std::string& servername() const; template void set_servername(ArgT0&& arg0, ArgT... args); std::string* mutable_servername(); PROTOBUF_NODISCARD std::string* release_servername(); void set_allocated_servername(std::string* servername); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_servertype(); PROTOBUF_NODISCARD std::string* release_servertype(); void set_allocated_servertype(std::string* servertype); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_version(); PROTOBUF_NODISCARD std::string* release_version(); void set_allocated_version(std::string* version); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_fdwname(); PROTOBUF_NODISCARD std::string* release_fdwname(); void set_allocated_fdwname(std::string* fdwname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servertype_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr version_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fdwname_; bool if_not_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterForeignServerStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterForeignServerStmt) */ { public: inline AlterForeignServerStmt() : AlterForeignServerStmt(nullptr) {} ~AlterForeignServerStmt() override; explicit PROTOBUF_CONSTEXPR AlterForeignServerStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterForeignServerStmt(const AlterForeignServerStmt& from); AlterForeignServerStmt(AlterForeignServerStmt&& from) noexcept : AlterForeignServerStmt() { *this = ::std::move(from); } inline AlterForeignServerStmt& operator=(const AlterForeignServerStmt& from) { CopyFrom(from); return *this; } inline AlterForeignServerStmt& operator=(AlterForeignServerStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 152; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterForeignServerStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterForeignServerStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterForeignServerStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterForeignServerStmt& from) { AlterForeignServerStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterForeignServerStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterForeignServerStmt"; } protected: explicit AlterForeignServerStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string servername = 1 [json_name = "servername"]; void clear_servername(); const std::string& servername() const; template void set_servername(ArgT0&& arg0, ArgT... args); std::string* mutable_servername(); PROTOBUF_NODISCARD std::string* release_servername(); void set_allocated_servername(std::string* servername); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_version(); PROTOBUF_NODISCARD std::string* release_version(); void set_allocated_version(std::string* version); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr version_; bool has_version_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateUserMappingStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateUserMappingStmt) */ { public: inline CreateUserMappingStmt() : CreateUserMappingStmt(nullptr) {} ~CreateUserMappingStmt() override; explicit PROTOBUF_CONSTEXPR CreateUserMappingStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateUserMappingStmt(const CreateUserMappingStmt& from); CreateUserMappingStmt(CreateUserMappingStmt&& from) noexcept : CreateUserMappingStmt() { *this = ::std::move(from); } inline CreateUserMappingStmt& operator=(const CreateUserMappingStmt& from) { CopyFrom(from); return *this; } inline CreateUserMappingStmt& operator=(CreateUserMappingStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 153; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateUserMappingStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateUserMappingStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateUserMappingStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateUserMappingStmt& from) { CreateUserMappingStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateUserMappingStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateUserMappingStmt"; } protected: explicit CreateUserMappingStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string servername = 2 [json_name = "servername"]; void clear_servername(); const std::string& servername() const; template void set_servername(ArgT0&& arg0, ArgT... args); std::string* mutable_servername(); PROTOBUF_NODISCARD std::string* release_servername(); void set_allocated_servername(std::string* servername); 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; private: bool _internal_has_user() const; public: 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* user); private: const ::pg_query::RoleSpec& _internal_user() const; ::pg_query::RoleSpec* _internal_mutable_user(); public: void unsafe_arena_set_allocated_user( ::pg_query::RoleSpec* user); ::pg_query::RoleSpec* unsafe_arena_release_user(); // bool if_not_exists = 3 [json_name = "if_not_exists"]; void clear_if_not_exists(); bool if_not_exists() const; void set_if_not_exists(bool value); private: bool _internal_if_not_exists() const; void _internal_set_if_not_exists(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateUserMappingStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; ::pg_query::RoleSpec* user_; bool if_not_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterUserMappingStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterUserMappingStmt) */ { public: inline AlterUserMappingStmt() : AlterUserMappingStmt(nullptr) {} ~AlterUserMappingStmt() override; explicit PROTOBUF_CONSTEXPR AlterUserMappingStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterUserMappingStmt(const AlterUserMappingStmt& from); AlterUserMappingStmt(AlterUserMappingStmt&& from) noexcept : AlterUserMappingStmt() { *this = ::std::move(from); } inline AlterUserMappingStmt& operator=(const AlterUserMappingStmt& from) { CopyFrom(from); return *this; } inline AlterUserMappingStmt& operator=(AlterUserMappingStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 154; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterUserMappingStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterUserMappingStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterUserMappingStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterUserMappingStmt& from) { AlterUserMappingStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterUserMappingStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterUserMappingStmt"; } protected: explicit AlterUserMappingStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string servername = 2 [json_name = "servername"]; void clear_servername(); const std::string& servername() const; template void set_servername(ArgT0&& arg0, ArgT... args); std::string* mutable_servername(); PROTOBUF_NODISCARD std::string* release_servername(); void set_allocated_servername(std::string* servername); 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; private: bool _internal_has_user() const; public: 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* user); private: const ::pg_query::RoleSpec& _internal_user() const; ::pg_query::RoleSpec* _internal_mutable_user(); public: void unsafe_arena_set_allocated_user( ::pg_query::RoleSpec* user); ::pg_query::RoleSpec* unsafe_arena_release_user(); // @@protoc_insertion_point(class_scope:pg_query.AlterUserMappingStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; ::pg_query::RoleSpec* user_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DropUserMappingStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropUserMappingStmt) */ { public: inline DropUserMappingStmt() : DropUserMappingStmt(nullptr) {} ~DropUserMappingStmt() override; explicit PROTOBUF_CONSTEXPR DropUserMappingStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); DropUserMappingStmt(const DropUserMappingStmt& from); DropUserMappingStmt(DropUserMappingStmt&& from) noexcept : DropUserMappingStmt() { *this = ::std::move(from); } inline DropUserMappingStmt& operator=(const DropUserMappingStmt& from) { CopyFrom(from); return *this; } inline DropUserMappingStmt& operator=(DropUserMappingStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 155; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropUserMappingStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DropUserMappingStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const DropUserMappingStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const DropUserMappingStmt& from) { DropUserMappingStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DropUserMappingStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DropUserMappingStmt"; } protected: explicit DropUserMappingStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_servername(); PROTOBUF_NODISCARD std::string* release_servername(); void set_allocated_servername(std::string* servername); 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; private: bool _internal_has_user() const; public: 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* user); private: const ::pg_query::RoleSpec& _internal_user() const; ::pg_query::RoleSpec* _internal_mutable_user(); public: void unsafe_arena_set_allocated_user( ::pg_query::RoleSpec* user); ::pg_query::RoleSpec* unsafe_arena_release_user(); // bool missing_ok = 3 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.DropUserMappingStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; ::pg_query::RoleSpec* user_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterTableSpaceOptionsStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTableSpaceOptionsStmt) */ { public: inline AlterTableSpaceOptionsStmt() : AlterTableSpaceOptionsStmt(nullptr) {} ~AlterTableSpaceOptionsStmt() override; explicit PROTOBUF_CONSTEXPR AlterTableSpaceOptionsStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterTableSpaceOptionsStmt(const AlterTableSpaceOptionsStmt& from); AlterTableSpaceOptionsStmt(AlterTableSpaceOptionsStmt&& from) noexcept : AlterTableSpaceOptionsStmt() { *this = ::std::move(from); } inline AlterTableSpaceOptionsStmt& operator=(const AlterTableSpaceOptionsStmt& from) { CopyFrom(from); return *this; } inline AlterTableSpaceOptionsStmt& operator=(AlterTableSpaceOptionsStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 156; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTableSpaceOptionsStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterTableSpaceOptionsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterTableSpaceOptionsStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterTableSpaceOptionsStmt& from) { AlterTableSpaceOptionsStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterTableSpaceOptionsStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterTableSpaceOptionsStmt"; } protected: explicit AlterTableSpaceOptionsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string tablespacename = 1 [json_name = "tablespacename"]; void clear_tablespacename(); const std::string& tablespacename() const; template void set_tablespacename(ArgT0&& arg0, ArgT... args); std::string* mutable_tablespacename(); PROTOBUF_NODISCARD std::string* release_tablespacename(); void set_allocated_tablespacename(std::string* tablespacename); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tablespacename_; bool is_reset_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterTableMoveAllStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTableMoveAllStmt) */ { public: inline AlterTableMoveAllStmt() : AlterTableMoveAllStmt(nullptr) {} ~AlterTableMoveAllStmt() override; explicit PROTOBUF_CONSTEXPR AlterTableMoveAllStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterTableMoveAllStmt(const AlterTableMoveAllStmt& from); AlterTableMoveAllStmt(AlterTableMoveAllStmt&& from) noexcept : AlterTableMoveAllStmt() { *this = ::std::move(from); } inline AlterTableMoveAllStmt& operator=(const AlterTableMoveAllStmt& from) { CopyFrom(from); return *this; } inline AlterTableMoveAllStmt& operator=(AlterTableMoveAllStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 157; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTableMoveAllStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterTableMoveAllStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterTableMoveAllStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterTableMoveAllStmt& from) { AlterTableMoveAllStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterTableMoveAllStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterTableMoveAllStmt"; } protected: explicit AlterTableMoveAllStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::pg_query::Node& _internal_roles(int index) const; ::pg_query::Node* _internal_add_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& roles() const; // string orig_tablespacename = 1 [json_name = "orig_tablespacename"]; void clear_orig_tablespacename(); const std::string& orig_tablespacename() const; template void set_orig_tablespacename(ArgT0&& arg0, ArgT... args); std::string* mutable_orig_tablespacename(); PROTOBUF_NODISCARD std::string* release_orig_tablespacename(); void set_allocated_orig_tablespacename(std::string* orig_tablespacename); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_new_tablespacename(); PROTOBUF_NODISCARD std::string* release_new_tablespacename(); void set_allocated_new_tablespacename(std::string* new_tablespacename); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr orig_tablespacename_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr new_tablespacename_; int objtype_; bool nowait_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SecLabelStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SecLabelStmt) */ { public: inline SecLabelStmt() : SecLabelStmt(nullptr) {} ~SecLabelStmt() override; explicit PROTOBUF_CONSTEXPR SecLabelStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); SecLabelStmt(const SecLabelStmt& from); SecLabelStmt(SecLabelStmt&& from) noexcept : SecLabelStmt() { *this = ::std::move(from); } inline SecLabelStmt& operator=(const SecLabelStmt& from) { CopyFrom(from); return *this; } inline SecLabelStmt& operator=(SecLabelStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 158; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SecLabelStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SecLabelStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const SecLabelStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const SecLabelStmt& from) { SecLabelStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SecLabelStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SecLabelStmt"; } protected: explicit SecLabelStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_provider(); PROTOBUF_NODISCARD std::string* release_provider(); void set_allocated_provider(std::string* provider); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_label(); PROTOBUF_NODISCARD std::string* release_label(); void set_allocated_label(std::string* label); 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; private: bool _internal_has_object() const; public: 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* object); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: void unsafe_arena_set_allocated_object( ::pg_query::Node* object); ::pg_query::Node* unsafe_arena_release_object(); // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; void clear_objtype(); ::pg_query::ObjectType objtype() const; void set_objtype(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_objtype() const; void _internal_set_objtype(::pg_query::ObjectType value); public: // @@protoc_insertion_point(class_scope:pg_query.SecLabelStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr provider_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr label_; ::pg_query::Node* object_; int objtype_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateForeignTableStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateForeignTableStmt) */ { public: inline CreateForeignTableStmt() : CreateForeignTableStmt(nullptr) {} ~CreateForeignTableStmt() override; explicit PROTOBUF_CONSTEXPR CreateForeignTableStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateForeignTableStmt(const CreateForeignTableStmt& from); CreateForeignTableStmt(CreateForeignTableStmt&& from) noexcept : CreateForeignTableStmt() { *this = ::std::move(from); } inline CreateForeignTableStmt& operator=(const CreateForeignTableStmt& from) { CopyFrom(from); return *this; } inline CreateForeignTableStmt& operator=(CreateForeignTableStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 159; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateForeignTableStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateForeignTableStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateForeignTableStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateForeignTableStmt& from) { CreateForeignTableStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateForeignTableStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateForeignTableStmt"; } protected: explicit CreateForeignTableStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string servername = 2 [json_name = "servername"]; void clear_servername(); const std::string& servername() const; template void set_servername(ArgT0&& arg0, ArgT... args); std::string* mutable_servername(); PROTOBUF_NODISCARD std::string* release_servername(); void set_allocated_servername(std::string* servername); 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; private: bool _internal_has_base_stmt() const; public: 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* base_stmt); private: const ::pg_query::CreateStmt& _internal_base_stmt() const; ::pg_query::CreateStmt* _internal_mutable_base_stmt(); public: void unsafe_arena_set_allocated_base_stmt( ::pg_query::CreateStmt* base_stmt); ::pg_query::CreateStmt* unsafe_arena_release_base_stmt(); // @@protoc_insertion_point(class_scope:pg_query.CreateForeignTableStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; ::pg_query::CreateStmt* base_stmt_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ImportForeignSchemaStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ImportForeignSchemaStmt) */ { public: inline ImportForeignSchemaStmt() : ImportForeignSchemaStmt(nullptr) {} ~ImportForeignSchemaStmt() override; explicit PROTOBUF_CONSTEXPR ImportForeignSchemaStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ImportForeignSchemaStmt(const ImportForeignSchemaStmt& from); ImportForeignSchemaStmt(ImportForeignSchemaStmt&& from) noexcept : ImportForeignSchemaStmt() { *this = ::std::move(from); } inline ImportForeignSchemaStmt& operator=(const ImportForeignSchemaStmt& from) { CopyFrom(from); return *this; } inline ImportForeignSchemaStmt& operator=(ImportForeignSchemaStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 160; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ImportForeignSchemaStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ImportForeignSchemaStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ImportForeignSchemaStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ImportForeignSchemaStmt& from) { ImportForeignSchemaStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ImportForeignSchemaStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ImportForeignSchemaStmt"; } protected: explicit ImportForeignSchemaStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_table_list(); private: const ::pg_query::Node& _internal_table_list(int index) const; ::pg_query::Node* _internal_add_table_list(); public: const ::pg_query::Node& table_list(int index) const; ::pg_query::Node* add_table_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& table_list() const; // repeated .pg_query.Node options = 6 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string server_name = 1 [json_name = "server_name"]; void clear_server_name(); const std::string& server_name() const; template void set_server_name(ArgT0&& arg0, ArgT... args); std::string* mutable_server_name(); PROTOBUF_NODISCARD std::string* release_server_name(); void set_allocated_server_name(std::string* server_name); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_remote_schema(); PROTOBUF_NODISCARD std::string* release_remote_schema(); void set_allocated_remote_schema(std::string* remote_schema); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_local_schema(); PROTOBUF_NODISCARD std::string* release_local_schema(); void set_allocated_local_schema(std::string* local_schema); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > table_list_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr server_name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr remote_schema_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr local_schema_; int list_type_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateExtensionStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateExtensionStmt) */ { public: inline CreateExtensionStmt() : CreateExtensionStmt(nullptr) {} ~CreateExtensionStmt() override; explicit PROTOBUF_CONSTEXPR CreateExtensionStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateExtensionStmt(const CreateExtensionStmt& from); CreateExtensionStmt(CreateExtensionStmt&& from) noexcept : CreateExtensionStmt() { *this = ::std::move(from); } inline CreateExtensionStmt& operator=(const CreateExtensionStmt& from) { CopyFrom(from); return *this; } inline CreateExtensionStmt& operator=(CreateExtensionStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 161; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateExtensionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateExtensionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateExtensionStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateExtensionStmt& from) { CreateExtensionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateExtensionStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateExtensionStmt"; } protected: explicit CreateExtensionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string extname = 1 [json_name = "extname"]; void clear_extname(); const std::string& extname() const; template void set_extname(ArgT0&& arg0, ArgT... args); std::string* mutable_extname(); PROTOBUF_NODISCARD std::string* release_extname(); void set_allocated_extname(std::string* extname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr extname_; bool if_not_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterExtensionStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterExtensionStmt) */ { public: inline AlterExtensionStmt() : AlterExtensionStmt(nullptr) {} ~AlterExtensionStmt() override; explicit PROTOBUF_CONSTEXPR AlterExtensionStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterExtensionStmt(const AlterExtensionStmt& from); AlterExtensionStmt(AlterExtensionStmt&& from) noexcept : AlterExtensionStmt() { *this = ::std::move(from); } inline AlterExtensionStmt& operator=(const AlterExtensionStmt& from) { CopyFrom(from); return *this; } inline AlterExtensionStmt& operator=(AlterExtensionStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 162; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterExtensionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterExtensionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterExtensionStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterExtensionStmt& from) { AlterExtensionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterExtensionStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterExtensionStmt"; } protected: explicit AlterExtensionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string extname = 1 [json_name = "extname"]; void clear_extname(); const std::string& extname() const; template void set_extname(ArgT0&& arg0, ArgT... args); std::string* mutable_extname(); PROTOBUF_NODISCARD std::string* release_extname(); void set_allocated_extname(std::string* extname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr extname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterExtensionContentsStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterExtensionContentsStmt) */ { public: inline AlterExtensionContentsStmt() : AlterExtensionContentsStmt(nullptr) {} ~AlterExtensionContentsStmt() override; explicit PROTOBUF_CONSTEXPR AlterExtensionContentsStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterExtensionContentsStmt(const AlterExtensionContentsStmt& from); AlterExtensionContentsStmt(AlterExtensionContentsStmt&& from) noexcept : AlterExtensionContentsStmt() { *this = ::std::move(from); } inline AlterExtensionContentsStmt& operator=(const AlterExtensionContentsStmt& from) { CopyFrom(from); return *this; } inline AlterExtensionContentsStmt& operator=(AlterExtensionContentsStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 163; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterExtensionContentsStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterExtensionContentsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterExtensionContentsStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterExtensionContentsStmt& from) { AlterExtensionContentsStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterExtensionContentsStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterExtensionContentsStmt"; } protected: explicit AlterExtensionContentsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_extname(); PROTOBUF_NODISCARD std::string* release_extname(); void set_allocated_extname(std::string* extname); 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; private: bool _internal_has_object() const; public: 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* object); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: void unsafe_arena_set_allocated_object( ::pg_query::Node* object); ::pg_query::Node* unsafe_arena_release_object(); // int32 action = 2 [json_name = "action"]; void clear_action(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr extname_; ::pg_query::Node* object_; int32_t action_; int objtype_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateEventTrigStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateEventTrigStmt) */ { public: inline CreateEventTrigStmt() : CreateEventTrigStmt(nullptr) {} ~CreateEventTrigStmt() override; explicit PROTOBUF_CONSTEXPR CreateEventTrigStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateEventTrigStmt(const CreateEventTrigStmt& from); CreateEventTrigStmt(CreateEventTrigStmt&& from) noexcept : CreateEventTrigStmt() { *this = ::std::move(from); } inline CreateEventTrigStmt& operator=(const CreateEventTrigStmt& from) { CopyFrom(from); return *this; } inline CreateEventTrigStmt& operator=(CreateEventTrigStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 164; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateEventTrigStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateEventTrigStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateEventTrigStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateEventTrigStmt& from) { CreateEventTrigStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateEventTrigStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateEventTrigStmt"; } protected: explicit CreateEventTrigStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_whenclause(); private: const ::pg_query::Node& _internal_whenclause(int index) const; ::pg_query::Node* _internal_add_whenclause(); public: const ::pg_query::Node& whenclause(int index) const; ::pg_query::Node* add_whenclause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& whenclause() const; // repeated .pg_query.Node funcname = 4 [json_name = "funcname"]; int funcname_size() const; private: int _internal_funcname_size() const; public: void clear_funcname(); ::pg_query::Node* mutable_funcname(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_funcname(); private: const ::pg_query::Node& _internal_funcname(int index) const; ::pg_query::Node* _internal_add_funcname(); public: const ::pg_query::Node& funcname(int index) const; ::pg_query::Node* add_funcname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& funcname() const; // string trigname = 1 [json_name = "trigname"]; void clear_trigname(); const std::string& trigname() const; template void set_trigname(ArgT0&& arg0, ArgT... args); std::string* mutable_trigname(); PROTOBUF_NODISCARD std::string* release_trigname(); void set_allocated_trigname(std::string* trigname); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_eventname(); PROTOBUF_NODISCARD std::string* release_eventname(); void set_allocated_eventname(std::string* eventname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > whenclause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funcname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr trigname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr eventname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterEventTrigStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterEventTrigStmt) */ { public: inline AlterEventTrigStmt() : AlterEventTrigStmt(nullptr) {} ~AlterEventTrigStmt() override; explicit PROTOBUF_CONSTEXPR AlterEventTrigStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterEventTrigStmt(const AlterEventTrigStmt& from); AlterEventTrigStmt(AlterEventTrigStmt&& from) noexcept : AlterEventTrigStmt() { *this = ::std::move(from); } inline AlterEventTrigStmt& operator=(const AlterEventTrigStmt& from) { CopyFrom(from); return *this; } inline AlterEventTrigStmt& operator=(AlterEventTrigStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 165; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterEventTrigStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterEventTrigStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterEventTrigStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterEventTrigStmt& from) { AlterEventTrigStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterEventTrigStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterEventTrigStmt"; } protected: explicit AlterEventTrigStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_trigname(); PROTOBUF_NODISCARD std::string* release_trigname(); void set_allocated_trigname(std::string* trigname); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_tgenabled(); PROTOBUF_NODISCARD std::string* release_tgenabled(); void set_allocated_tgenabled(std::string* tgenabled); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr trigname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tgenabled_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RefreshMatViewStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RefreshMatViewStmt) */ { public: inline RefreshMatViewStmt() : RefreshMatViewStmt(nullptr) {} ~RefreshMatViewStmt() override; explicit PROTOBUF_CONSTEXPR RefreshMatViewStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RefreshMatViewStmt(const RefreshMatViewStmt& from); RefreshMatViewStmt(RefreshMatViewStmt&& from) noexcept : RefreshMatViewStmt() { *this = ::std::move(from); } inline RefreshMatViewStmt& operator=(const RefreshMatViewStmt& from) { CopyFrom(from); return *this; } inline RefreshMatViewStmt& operator=(RefreshMatViewStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 166; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RefreshMatViewStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RefreshMatViewStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RefreshMatViewStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RefreshMatViewStmt& from) { RefreshMatViewStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RefreshMatViewStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RefreshMatViewStmt"; } protected: explicit RefreshMatViewStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_relation() const; public: 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* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // bool concurrent = 1 [json_name = "concurrent"]; void clear_concurrent(); bool concurrent() const; void set_concurrent(bool value); private: bool _internal_concurrent() const; void _internal_set_concurrent(bool value); public: // bool skip_data = 2 [json_name = "skipData"]; void clear_skip_data(); bool skip_data() const; void set_skip_data(bool value); private: bool _internal_skip_data() const; void _internal_set_skip_data(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.RefreshMatViewStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::RangeVar* relation_; bool concurrent_; bool skip_data_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ReplicaIdentityStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ReplicaIdentityStmt) */ { public: inline ReplicaIdentityStmt() : ReplicaIdentityStmt(nullptr) {} ~ReplicaIdentityStmt() override; explicit PROTOBUF_CONSTEXPR ReplicaIdentityStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ReplicaIdentityStmt(const ReplicaIdentityStmt& from); ReplicaIdentityStmt(ReplicaIdentityStmt&& from) noexcept : ReplicaIdentityStmt() { *this = ::std::move(from); } inline ReplicaIdentityStmt& operator=(const ReplicaIdentityStmt& from) { CopyFrom(from); return *this; } inline ReplicaIdentityStmt& operator=(ReplicaIdentityStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 167; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ReplicaIdentityStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ReplicaIdentityStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ReplicaIdentityStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ReplicaIdentityStmt& from) { ReplicaIdentityStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ReplicaIdentityStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ReplicaIdentityStmt"; } protected: explicit ReplicaIdentityStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_identity_type(); PROTOBUF_NODISCARD std::string* release_identity_type(); void set_allocated_identity_type(std::string* identity_type); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr identity_type_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterSystemStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterSystemStmt) */ { public: inline AlterSystemStmt() : AlterSystemStmt(nullptr) {} ~AlterSystemStmt() override; explicit PROTOBUF_CONSTEXPR AlterSystemStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterSystemStmt(const AlterSystemStmt& from); AlterSystemStmt(AlterSystemStmt&& from) noexcept : AlterSystemStmt() { *this = ::std::move(from); } inline AlterSystemStmt& operator=(const AlterSystemStmt& from) { CopyFrom(from); return *this; } inline AlterSystemStmt& operator=(AlterSystemStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 168; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterSystemStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterSystemStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterSystemStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterSystemStmt& from) { AlterSystemStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterSystemStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterSystemStmt"; } protected: explicit AlterSystemStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kSetstmtFieldNumber = 1, }; // .pg_query.VariableSetStmt setstmt = 1 [json_name = "setstmt"]; bool has_setstmt() const; private: bool _internal_has_setstmt() const; public: void clear_setstmt(); const ::pg_query::VariableSetStmt& setstmt() const; PROTOBUF_NODISCARD ::pg_query::VariableSetStmt* release_setstmt(); ::pg_query::VariableSetStmt* mutable_setstmt(); void set_allocated_setstmt(::pg_query::VariableSetStmt* setstmt); private: const ::pg_query::VariableSetStmt& _internal_setstmt() const; ::pg_query::VariableSetStmt* _internal_mutable_setstmt(); public: void unsafe_arena_set_allocated_setstmt( ::pg_query::VariableSetStmt* setstmt); ::pg_query::VariableSetStmt* unsafe_arena_release_setstmt(); // @@protoc_insertion_point(class_scope:pg_query.AlterSystemStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::VariableSetStmt* setstmt_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreatePolicyStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreatePolicyStmt) */ { public: inline CreatePolicyStmt() : CreatePolicyStmt(nullptr) {} ~CreatePolicyStmt() override; explicit PROTOBUF_CONSTEXPR CreatePolicyStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreatePolicyStmt(const CreatePolicyStmt& from); CreatePolicyStmt(CreatePolicyStmt&& from) noexcept : CreatePolicyStmt() { *this = ::std::move(from); } inline CreatePolicyStmt& operator=(const CreatePolicyStmt& from) { CopyFrom(from); return *this; } inline CreatePolicyStmt& operator=(CreatePolicyStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 169; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreatePolicyStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreatePolicyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreatePolicyStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreatePolicyStmt& from) { CreatePolicyStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreatePolicyStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreatePolicyStmt"; } protected: explicit CreatePolicyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::pg_query::Node& _internal_roles(int index) const; ::pg_query::Node* _internal_add_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& roles() const; // string policy_name = 1 [json_name = "policy_name"]; void clear_policy_name(); const std::string& policy_name() const; template void set_policy_name(ArgT0&& arg0, ArgT... args); std::string* mutable_policy_name(); PROTOBUF_NODISCARD std::string* release_policy_name(); void set_allocated_policy_name(std::string* policy_name); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_cmd_name(); PROTOBUF_NODISCARD std::string* release_cmd_name(); void set_allocated_cmd_name(std::string* cmd_name); 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; private: bool _internal_has_table() const; public: 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* table); private: const ::pg_query::RangeVar& _internal_table() const; ::pg_query::RangeVar* _internal_mutable_table(); public: void unsafe_arena_set_allocated_table( ::pg_query::RangeVar* table); ::pg_query::RangeVar* unsafe_arena_release_table(); // .pg_query.Node qual = 6 [json_name = "qual"]; bool has_qual() const; private: bool _internal_has_qual() const; public: void clear_qual(); const ::pg_query::Node& qual() const; PROTOBUF_NODISCARD ::pg_query::Node* release_qual(); ::pg_query::Node* mutable_qual(); void set_allocated_qual(::pg_query::Node* qual); private: const ::pg_query::Node& _internal_qual() const; ::pg_query::Node* _internal_mutable_qual(); public: void unsafe_arena_set_allocated_qual( ::pg_query::Node* qual); ::pg_query::Node* unsafe_arena_release_qual(); // .pg_query.Node with_check = 7 [json_name = "with_check"]; bool has_with_check() const; private: bool _internal_has_with_check() const; public: void clear_with_check(); const ::pg_query::Node& with_check() const; PROTOBUF_NODISCARD ::pg_query::Node* release_with_check(); ::pg_query::Node* mutable_with_check(); void set_allocated_with_check(::pg_query::Node* with_check); private: const ::pg_query::Node& _internal_with_check() const; ::pg_query::Node* _internal_mutable_with_check(); public: void unsafe_arena_set_allocated_with_check( ::pg_query::Node* with_check); ::pg_query::Node* unsafe_arena_release_with_check(); // bool permissive = 4 [json_name = "permissive"]; void clear_permissive(); bool permissive() const; void set_permissive(bool value); private: bool _internal_permissive() const; void _internal_set_permissive(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreatePolicyStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr policy_name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr cmd_name_; ::pg_query::RangeVar* table_; ::pg_query::Node* qual_; ::pg_query::Node* with_check_; bool permissive_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterPolicyStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterPolicyStmt) */ { public: inline AlterPolicyStmt() : AlterPolicyStmt(nullptr) {} ~AlterPolicyStmt() override; explicit PROTOBUF_CONSTEXPR AlterPolicyStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterPolicyStmt(const AlterPolicyStmt& from); AlterPolicyStmt(AlterPolicyStmt&& from) noexcept : AlterPolicyStmt() { *this = ::std::move(from); } inline AlterPolicyStmt& operator=(const AlterPolicyStmt& from) { CopyFrom(from); return *this; } inline AlterPolicyStmt& operator=(AlterPolicyStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 170; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterPolicyStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterPolicyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterPolicyStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterPolicyStmt& from) { AlterPolicyStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterPolicyStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterPolicyStmt"; } protected: explicit AlterPolicyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::pg_query::Node& _internal_roles(int index) const; ::pg_query::Node* _internal_add_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& roles() const; // string policy_name = 1 [json_name = "policy_name"]; void clear_policy_name(); const std::string& policy_name() const; template void set_policy_name(ArgT0&& arg0, ArgT... args); std::string* mutable_policy_name(); PROTOBUF_NODISCARD std::string* release_policy_name(); void set_allocated_policy_name(std::string* policy_name); 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; private: bool _internal_has_table() const; public: 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* table); private: const ::pg_query::RangeVar& _internal_table() const; ::pg_query::RangeVar* _internal_mutable_table(); public: void unsafe_arena_set_allocated_table( ::pg_query::RangeVar* table); ::pg_query::RangeVar* unsafe_arena_release_table(); // .pg_query.Node qual = 4 [json_name = "qual"]; bool has_qual() const; private: bool _internal_has_qual() const; public: void clear_qual(); const ::pg_query::Node& qual() const; PROTOBUF_NODISCARD ::pg_query::Node* release_qual(); ::pg_query::Node* mutable_qual(); void set_allocated_qual(::pg_query::Node* qual); private: const ::pg_query::Node& _internal_qual() const; ::pg_query::Node* _internal_mutable_qual(); public: void unsafe_arena_set_allocated_qual( ::pg_query::Node* qual); ::pg_query::Node* unsafe_arena_release_qual(); // .pg_query.Node with_check = 5 [json_name = "with_check"]; bool has_with_check() const; private: bool _internal_has_with_check() const; public: void clear_with_check(); const ::pg_query::Node& with_check() const; PROTOBUF_NODISCARD ::pg_query::Node* release_with_check(); ::pg_query::Node* mutable_with_check(); void set_allocated_with_check(::pg_query::Node* with_check); private: const ::pg_query::Node& _internal_with_check() const; ::pg_query::Node* _internal_mutable_with_check(); public: void unsafe_arena_set_allocated_with_check( ::pg_query::Node* with_check); ::pg_query::Node* unsafe_arena_release_with_check(); // @@protoc_insertion_point(class_scope:pg_query.AlterPolicyStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr policy_name_; ::pg_query::RangeVar* table_; ::pg_query::Node* qual_; ::pg_query::Node* with_check_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateTransformStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateTransformStmt) */ { public: inline CreateTransformStmt() : CreateTransformStmt(nullptr) {} ~CreateTransformStmt() override; explicit PROTOBUF_CONSTEXPR CreateTransformStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateTransformStmt(const CreateTransformStmt& from); CreateTransformStmt(CreateTransformStmt&& from) noexcept : CreateTransformStmt() { *this = ::std::move(from); } inline CreateTransformStmt& operator=(const CreateTransformStmt& from) { CopyFrom(from); return *this; } inline CreateTransformStmt& operator=(CreateTransformStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 171; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateTransformStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateTransformStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateTransformStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateTransformStmt& from) { CreateTransformStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateTransformStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateTransformStmt"; } protected: explicit CreateTransformStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_lang(); PROTOBUF_NODISCARD std::string* release_lang(); void set_allocated_lang(std::string* lang); 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; 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* type_name); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: void unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name); ::pg_query::TypeName* unsafe_arena_release_type_name(); // .pg_query.ObjectWithArgs fromsql = 4 [json_name = "fromsql"]; bool has_fromsql() const; private: bool _internal_has_fromsql() const; public: void clear_fromsql(); const ::pg_query::ObjectWithArgs& fromsql() const; PROTOBUF_NODISCARD ::pg_query::ObjectWithArgs* release_fromsql(); ::pg_query::ObjectWithArgs* mutable_fromsql(); void set_allocated_fromsql(::pg_query::ObjectWithArgs* fromsql); private: const ::pg_query::ObjectWithArgs& _internal_fromsql() const; ::pg_query::ObjectWithArgs* _internal_mutable_fromsql(); public: void unsafe_arena_set_allocated_fromsql( ::pg_query::ObjectWithArgs* fromsql); ::pg_query::ObjectWithArgs* unsafe_arena_release_fromsql(); // .pg_query.ObjectWithArgs tosql = 5 [json_name = "tosql"]; bool has_tosql() const; private: bool _internal_has_tosql() const; public: void clear_tosql(); const ::pg_query::ObjectWithArgs& tosql() const; PROTOBUF_NODISCARD ::pg_query::ObjectWithArgs* release_tosql(); ::pg_query::ObjectWithArgs* mutable_tosql(); void set_allocated_tosql(::pg_query::ObjectWithArgs* tosql); private: const ::pg_query::ObjectWithArgs& _internal_tosql() const; ::pg_query::ObjectWithArgs* _internal_mutable_tosql(); public: void unsafe_arena_set_allocated_tosql( ::pg_query::ObjectWithArgs* tosql); ::pg_query::ObjectWithArgs* unsafe_arena_release_tosql(); // bool replace = 1 [json_name = "replace"]; void clear_replace(); bool replace() const; void set_replace(bool value); private: bool _internal_replace() const; void _internal_set_replace(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateTransformStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr lang_; ::pg_query::TypeName* type_name_; ::pg_query::ObjectWithArgs* fromsql_; ::pg_query::ObjectWithArgs* tosql_; bool replace_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateAmStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateAmStmt) */ { public: inline CreateAmStmt() : CreateAmStmt(nullptr) {} ~CreateAmStmt() override; explicit PROTOBUF_CONSTEXPR CreateAmStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateAmStmt(const CreateAmStmt& from); CreateAmStmt(CreateAmStmt&& from) noexcept : CreateAmStmt() { *this = ::std::move(from); } inline CreateAmStmt& operator=(const CreateAmStmt& from) { CopyFrom(from); return *this; } inline CreateAmStmt& operator=(CreateAmStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 172; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateAmStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateAmStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateAmStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateAmStmt& from) { CreateAmStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateAmStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateAmStmt"; } protected: explicit CreateAmStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_handler_name(); private: const ::pg_query::Node& _internal_handler_name(int index) const; ::pg_query::Node* _internal_add_handler_name(); public: const ::pg_query::Node& handler_name(int index) const; ::pg_query::Node* add_handler_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& handler_name() const; // string amname = 1 [json_name = "amname"]; void clear_amname(); const std::string& amname() const; template void set_amname(ArgT0&& arg0, ArgT... args); std::string* mutable_amname(); PROTOBUF_NODISCARD std::string* release_amname(); void set_allocated_amname(std::string* amname); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_amtype(); PROTOBUF_NODISCARD std::string* release_amtype(); void set_allocated_amtype(std::string* amtype); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > handler_name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr amname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr amtype_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreatePublicationStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreatePublicationStmt) */ { public: inline CreatePublicationStmt() : CreatePublicationStmt(nullptr) {} ~CreatePublicationStmt() override; explicit PROTOBUF_CONSTEXPR CreatePublicationStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreatePublicationStmt(const CreatePublicationStmt& from); CreatePublicationStmt(CreatePublicationStmt&& from) noexcept : CreatePublicationStmt() { *this = ::std::move(from); } inline CreatePublicationStmt& operator=(const CreatePublicationStmt& from) { CopyFrom(from); return *this; } inline CreatePublicationStmt& operator=(CreatePublicationStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 173; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreatePublicationStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreatePublicationStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreatePublicationStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreatePublicationStmt& from) { CreatePublicationStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreatePublicationStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreatePublicationStmt"; } protected: explicit CreatePublicationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // repeated .pg_query.Node 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_pubobjects(); private: const ::pg_query::Node& _internal_pubobjects(int index) const; ::pg_query::Node* _internal_add_pubobjects(); public: const ::pg_query::Node& pubobjects(int index) const; ::pg_query::Node* add_pubobjects(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& pubobjects() const; // string pubname = 1 [json_name = "pubname"]; void clear_pubname(); const std::string& pubname() const; template void set_pubname(ArgT0&& arg0, ArgT... args); std::string* mutable_pubname(); PROTOBUF_NODISCARD std::string* release_pubname(); void set_allocated_pubname(std::string* pubname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > pubobjects_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr pubname_; bool for_all_tables_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterPublicationStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterPublicationStmt) */ { public: inline AlterPublicationStmt() : AlterPublicationStmt(nullptr) {} ~AlterPublicationStmt() override; explicit PROTOBUF_CONSTEXPR AlterPublicationStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterPublicationStmt(const AlterPublicationStmt& from); AlterPublicationStmt(AlterPublicationStmt&& from) noexcept : AlterPublicationStmt() { *this = ::std::move(from); } inline AlterPublicationStmt& operator=(const AlterPublicationStmt& from) { CopyFrom(from); return *this; } inline AlterPublicationStmt& operator=(AlterPublicationStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 174; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterPublicationStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterPublicationStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterPublicationStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterPublicationStmt& from) { AlterPublicationStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterPublicationStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterPublicationStmt"; } protected: explicit AlterPublicationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // repeated .pg_query.Node 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_pubobjects(); private: const ::pg_query::Node& _internal_pubobjects(int index) const; ::pg_query::Node* _internal_add_pubobjects(); public: const ::pg_query::Node& pubobjects(int index) const; ::pg_query::Node* add_pubobjects(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& pubobjects() const; // string pubname = 1 [json_name = "pubname"]; void clear_pubname(); const std::string& pubname() const; template void set_pubname(ArgT0&& arg0, ArgT... args); std::string* mutable_pubname(); PROTOBUF_NODISCARD std::string* release_pubname(); void set_allocated_pubname(std::string* pubname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > pubobjects_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr pubname_; bool for_all_tables_; int action_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateSubscriptionStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateSubscriptionStmt) */ { public: inline CreateSubscriptionStmt() : CreateSubscriptionStmt(nullptr) {} ~CreateSubscriptionStmt() override; explicit PROTOBUF_CONSTEXPR CreateSubscriptionStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateSubscriptionStmt(const CreateSubscriptionStmt& from); CreateSubscriptionStmt(CreateSubscriptionStmt&& from) noexcept : CreateSubscriptionStmt() { *this = ::std::move(from); } inline CreateSubscriptionStmt& operator=(const CreateSubscriptionStmt& from) { CopyFrom(from); return *this; } inline CreateSubscriptionStmt& operator=(CreateSubscriptionStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 175; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateSubscriptionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateSubscriptionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateSubscriptionStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateSubscriptionStmt& from) { CreateSubscriptionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateSubscriptionStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateSubscriptionStmt"; } protected: explicit CreateSubscriptionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_publication(); private: const ::pg_query::Node& _internal_publication(int index) const; ::pg_query::Node* _internal_add_publication(); public: const ::pg_query::Node& publication(int index) const; ::pg_query::Node* add_publication(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& publication() const; // repeated .pg_query.Node options = 4 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string subname = 1 [json_name = "subname"]; void clear_subname(); const std::string& subname() const; template void set_subname(ArgT0&& arg0, ArgT... args); std::string* mutable_subname(); PROTOBUF_NODISCARD std::string* release_subname(); void set_allocated_subname(std::string* subname); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_conninfo(); PROTOBUF_NODISCARD std::string* release_conninfo(); void set_allocated_conninfo(std::string* conninfo); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > publication_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr subname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conninfo_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterSubscriptionStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterSubscriptionStmt) */ { public: inline AlterSubscriptionStmt() : AlterSubscriptionStmt(nullptr) {} ~AlterSubscriptionStmt() override; explicit PROTOBUF_CONSTEXPR AlterSubscriptionStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterSubscriptionStmt(const AlterSubscriptionStmt& from); AlterSubscriptionStmt(AlterSubscriptionStmt&& from) noexcept : AlterSubscriptionStmt() { *this = ::std::move(from); } inline AlterSubscriptionStmt& operator=(const AlterSubscriptionStmt& from) { CopyFrom(from); return *this; } inline AlterSubscriptionStmt& operator=(AlterSubscriptionStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 176; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterSubscriptionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterSubscriptionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterSubscriptionStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterSubscriptionStmt& from) { AlterSubscriptionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterSubscriptionStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterSubscriptionStmt"; } protected: explicit AlterSubscriptionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_publication(); private: const ::pg_query::Node& _internal_publication(int index) const; ::pg_query::Node* _internal_add_publication(); public: const ::pg_query::Node& publication(int index) const; ::pg_query::Node* add_publication(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& publication() const; // repeated .pg_query.Node options = 5 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string subname = 2 [json_name = "subname"]; void clear_subname(); const std::string& subname() const; template void set_subname(ArgT0&& arg0, ArgT... args); std::string* mutable_subname(); PROTOBUF_NODISCARD std::string* release_subname(); void set_allocated_subname(std::string* subname); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_conninfo(); PROTOBUF_NODISCARD std::string* release_conninfo(); void set_allocated_conninfo(std::string* conninfo); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > publication_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr subname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conninfo_; int kind_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DropSubscriptionStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropSubscriptionStmt) */ { public: inline DropSubscriptionStmt() : DropSubscriptionStmt(nullptr) {} ~DropSubscriptionStmt() override; explicit PROTOBUF_CONSTEXPR DropSubscriptionStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); DropSubscriptionStmt(const DropSubscriptionStmt& from); DropSubscriptionStmt(DropSubscriptionStmt&& from) noexcept : DropSubscriptionStmt() { *this = ::std::move(from); } inline DropSubscriptionStmt& operator=(const DropSubscriptionStmt& from) { CopyFrom(from); return *this; } inline DropSubscriptionStmt& operator=(DropSubscriptionStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 177; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropSubscriptionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DropSubscriptionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const DropSubscriptionStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const DropSubscriptionStmt& from) { DropSubscriptionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DropSubscriptionStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DropSubscriptionStmt"; } protected: explicit DropSubscriptionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_subname(); PROTOBUF_NODISCARD std::string* release_subname(); void set_allocated_subname(std::string* subname); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr subname_; bool missing_ok_; int behavior_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateStatsStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateStatsStmt) */ { public: inline CreateStatsStmt() : CreateStatsStmt(nullptr) {} ~CreateStatsStmt() override; explicit PROTOBUF_CONSTEXPR CreateStatsStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateStatsStmt(const CreateStatsStmt& from); CreateStatsStmt(CreateStatsStmt&& from) noexcept : CreateStatsStmt() { *this = ::std::move(from); } inline CreateStatsStmt& operator=(const CreateStatsStmt& from) { CopyFrom(from); return *this; } inline CreateStatsStmt& operator=(CreateStatsStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 178; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateStatsStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateStatsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateStatsStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateStatsStmt& from) { CreateStatsStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateStatsStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateStatsStmt"; } protected: explicit CreateStatsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_defnames(); private: const ::pg_query::Node& _internal_defnames(int index) const; ::pg_query::Node* _internal_add_defnames(); public: const ::pg_query::Node& defnames(int index) const; ::pg_query::Node* add_defnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& defnames() const; // repeated .pg_query.Node stat_types = 2 [json_name = "stat_types"]; int stat_types_size() const; private: int _internal_stat_types_size() const; public: void clear_stat_types(); ::pg_query::Node* mutable_stat_types(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_stat_types(); private: const ::pg_query::Node& _internal_stat_types(int index) const; ::pg_query::Node* _internal_add_stat_types(); public: const ::pg_query::Node& stat_types(int index) const; ::pg_query::Node* add_stat_types(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& stat_types() const; // repeated .pg_query.Node exprs = 3 [json_name = "exprs"]; int exprs_size() const; private: int _internal_exprs_size() const; public: void clear_exprs(); ::pg_query::Node* mutable_exprs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_exprs(); private: const ::pg_query::Node& _internal_exprs(int index) const; ::pg_query::Node* _internal_add_exprs(); public: const ::pg_query::Node& exprs(int index) const; ::pg_query::Node* add_exprs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& exprs() const; // repeated .pg_query.Node relations = 4 [json_name = "relations"]; int relations_size() const; private: int _internal_relations_size() const; public: void clear_relations(); ::pg_query::Node* mutable_relations(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_relations(); private: const ::pg_query::Node& _internal_relations(int index) const; ::pg_query::Node* _internal_add_relations(); public: const ::pg_query::Node& relations(int index) const; ::pg_query::Node* add_relations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& relations() const; // string stxcomment = 5 [json_name = "stxcomment"]; void clear_stxcomment(); const std::string& stxcomment() const; template void set_stxcomment(ArgT0&& arg0, ArgT... args); std::string* mutable_stxcomment(); PROTOBUF_NODISCARD std::string* release_stxcomment(); void set_allocated_stxcomment(std::string* stxcomment); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > defnames_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > stat_types_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > exprs_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > relations_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr stxcomment_; bool transformed_; bool if_not_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterCollationStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterCollationStmt) */ { public: inline AlterCollationStmt() : AlterCollationStmt(nullptr) {} ~AlterCollationStmt() override; explicit PROTOBUF_CONSTEXPR AlterCollationStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterCollationStmt(const AlterCollationStmt& from); AlterCollationStmt(AlterCollationStmt&& from) noexcept : AlterCollationStmt() { *this = ::std::move(from); } inline AlterCollationStmt& operator=(const AlterCollationStmt& from) { CopyFrom(from); return *this; } inline AlterCollationStmt& operator=(AlterCollationStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 179; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterCollationStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterCollationStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterCollationStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterCollationStmt& from) { AlterCollationStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterCollationStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterCollationStmt"; } protected: explicit AlterCollationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_collname(); private: const ::pg_query::Node& _internal_collname(int index) const; ::pg_query::Node* _internal_add_collname(); public: const ::pg_query::Node& collname(int index) const; ::pg_query::Node* add_collname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& collname() const; // @@protoc_insertion_point(class_scope:pg_query.AlterCollationStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > collname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CallStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CallStmt) */ { public: inline CallStmt() : CallStmt(nullptr) {} ~CallStmt() override; explicit PROTOBUF_CONSTEXPR CallStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CallStmt(const CallStmt& from); CallStmt(CallStmt&& from) noexcept : CallStmt() { *this = ::std::move(from); } inline CallStmt& operator=(const CallStmt& from) { CopyFrom(from); return *this; } inline CallStmt& operator=(CallStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 180; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CallStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CallStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CallStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CallStmt& from) { CallStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CallStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CallStmt"; } protected: explicit CallStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_outargs(); private: const ::pg_query::Node& _internal_outargs(int index) const; ::pg_query::Node* _internal_add_outargs(); public: const ::pg_query::Node& outargs(int index) const; ::pg_query::Node* add_outargs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& outargs() const; // .pg_query.FuncCall funccall = 1 [json_name = "funccall"]; bool has_funccall() const; private: bool _internal_has_funccall() const; public: void clear_funccall(); const ::pg_query::FuncCall& funccall() const; PROTOBUF_NODISCARD ::pg_query::FuncCall* release_funccall(); ::pg_query::FuncCall* mutable_funccall(); void set_allocated_funccall(::pg_query::FuncCall* funccall); private: const ::pg_query::FuncCall& _internal_funccall() const; ::pg_query::FuncCall* _internal_mutable_funccall(); public: void unsafe_arena_set_allocated_funccall( ::pg_query::FuncCall* funccall); ::pg_query::FuncCall* unsafe_arena_release_funccall(); // .pg_query.FuncExpr funcexpr = 2 [json_name = "funcexpr"]; bool has_funcexpr() const; private: bool _internal_has_funcexpr() const; public: void clear_funcexpr(); const ::pg_query::FuncExpr& funcexpr() const; PROTOBUF_NODISCARD ::pg_query::FuncExpr* release_funcexpr(); ::pg_query::FuncExpr* mutable_funcexpr(); void set_allocated_funcexpr(::pg_query::FuncExpr* funcexpr); private: const ::pg_query::FuncExpr& _internal_funcexpr() const; ::pg_query::FuncExpr* _internal_mutable_funcexpr(); public: void unsafe_arena_set_allocated_funcexpr( ::pg_query::FuncExpr* funcexpr); ::pg_query::FuncExpr* unsafe_arena_release_funcexpr(); // @@protoc_insertion_point(class_scope:pg_query.CallStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > outargs_; ::pg_query::FuncCall* funccall_; ::pg_query::FuncExpr* funcexpr_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterStatsStmt final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterStatsStmt) */ { public: inline AlterStatsStmt() : AlterStatsStmt(nullptr) {} ~AlterStatsStmt() override; explicit PROTOBUF_CONSTEXPR AlterStatsStmt(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AlterStatsStmt(const AlterStatsStmt& from); AlterStatsStmt(AlterStatsStmt&& from) noexcept : AlterStatsStmt() { *this = ::std::move(from); } inline AlterStatsStmt& operator=(const AlterStatsStmt& from) { CopyFrom(from); return *this; } inline AlterStatsStmt& operator=(AlterStatsStmt&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 181; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterStatsStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterStatsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AlterStatsStmt& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AlterStatsStmt& from) { AlterStatsStmt::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterStatsStmt* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterStatsStmt"; } protected: explicit AlterStatsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_defnames(); private: const ::pg_query::Node& _internal_defnames(int index) const; ::pg_query::Node* _internal_add_defnames(); public: const ::pg_query::Node& defnames(int index) const; ::pg_query::Node* add_defnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& defnames() const; // int32 stxstattarget = 2 [json_name = "stxstattarget"]; void clear_stxstattarget(); int32_t stxstattarget() const; void set_stxstattarget(int32_t value); private: int32_t _internal_stxstattarget() const; void _internal_set_stxstattarget(int32_t value); public: // bool missing_ok = 3 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterStatsStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > defnames_; int32_t stxstattarget_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class A_Expr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Expr) */ { public: inline A_Expr() : A_Expr(nullptr) {} ~A_Expr() override; explicit PROTOBUF_CONSTEXPR A_Expr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); A_Expr(const A_Expr& from); A_Expr(A_Expr&& from) noexcept : A_Expr() { *this = ::std::move(from); } inline A_Expr& operator=(const A_Expr& from) { CopyFrom(from); return *this; } inline A_Expr& operator=(A_Expr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 182; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_Expr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- A_Expr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const A_Expr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const A_Expr& from) { A_Expr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(A_Expr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.A_Expr"; } protected: explicit A_Expr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_name(); private: const ::pg_query::Node& _internal_name(int index) const; ::pg_query::Node* _internal_add_name(); public: const ::pg_query::Node& name(int index) const; ::pg_query::Node* add_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& name() const; // .pg_query.Node lexpr = 3 [json_name = "lexpr"]; bool has_lexpr() const; private: bool _internal_has_lexpr() const; public: void clear_lexpr(); const ::pg_query::Node& lexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_lexpr(); ::pg_query::Node* mutable_lexpr(); void set_allocated_lexpr(::pg_query::Node* lexpr); private: const ::pg_query::Node& _internal_lexpr() const; ::pg_query::Node* _internal_mutable_lexpr(); public: void unsafe_arena_set_allocated_lexpr( ::pg_query::Node* lexpr); ::pg_query::Node* unsafe_arena_release_lexpr(); // .pg_query.Node rexpr = 4 [json_name = "rexpr"]; bool has_rexpr() const; private: bool _internal_has_rexpr() const; public: void clear_rexpr(); const ::pg_query::Node& rexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_rexpr(); ::pg_query::Node* mutable_rexpr(); void set_allocated_rexpr(::pg_query::Node* rexpr); private: const ::pg_query::Node& _internal_rexpr() const; ::pg_query::Node* _internal_mutable_rexpr(); public: void unsafe_arena_set_allocated_rexpr( ::pg_query::Node* rexpr); ::pg_query::Node* unsafe_arena_release_rexpr(); // .pg_query.A_Expr_Kind kind = 1 [json_name = "kind"]; void clear_kind(); ::pg_query::A_Expr_Kind kind() const; void set_kind(::pg_query::A_Expr_Kind value); private: ::pg_query::A_Expr_Kind _internal_kind() const; void _internal_set_kind(::pg_query::A_Expr_Kind value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > name_; ::pg_query::Node* lexpr_; ::pg_query::Node* rexpr_; int kind_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ColumnRef final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ColumnRef) */ { public: inline ColumnRef() : ColumnRef(nullptr) {} ~ColumnRef() override; explicit PROTOBUF_CONSTEXPR ColumnRef(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ColumnRef(const ColumnRef& from); ColumnRef(ColumnRef&& from) noexcept : ColumnRef() { *this = ::std::move(from); } inline ColumnRef& operator=(const ColumnRef& from) { CopyFrom(from); return *this; } inline ColumnRef& operator=(ColumnRef&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 183; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ColumnRef* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ColumnRef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ColumnRef& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ColumnRef& from) { ColumnRef::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ColumnRef* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ColumnRef"; } protected: explicit ColumnRef(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_fields(); private: const ::pg_query::Node& _internal_fields(int index) const; ::pg_query::Node* _internal_add_fields(); public: const ::pg_query::Node& fields(int index) const; ::pg_query::Node* add_fields(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& fields() const; // int32 location = 2 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > fields_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ParamRef final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ParamRef) */ { public: inline ParamRef() : ParamRef(nullptr) {} ~ParamRef() override; explicit PROTOBUF_CONSTEXPR ParamRef(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ParamRef(const ParamRef& from); ParamRef(ParamRef&& from) noexcept : ParamRef() { *this = ::std::move(from); } inline ParamRef& operator=(const ParamRef& from) { CopyFrom(from); return *this; } inline ParamRef& operator=(ParamRef&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 184; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ParamRef* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ParamRef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ParamRef& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ParamRef& from) { ParamRef::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ParamRef* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ParamRef"; } protected: explicit ParamRef(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { int32_t number_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class FuncCall final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FuncCall) */ { public: inline FuncCall() : FuncCall(nullptr) {} ~FuncCall() override; explicit PROTOBUF_CONSTEXPR FuncCall(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); FuncCall(const FuncCall& from); FuncCall(FuncCall&& from) noexcept : FuncCall() { *this = ::std::move(from); } inline FuncCall& operator=(const FuncCall& from) { CopyFrom(from); return *this; } inline FuncCall& operator=(FuncCall&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 185; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FuncCall* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- FuncCall* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const FuncCall& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const FuncCall& from) { FuncCall::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(FuncCall* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.FuncCall"; } protected: explicit FuncCall(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_funcname(); private: const ::pg_query::Node& _internal_funcname(int index) const; ::pg_query::Node* _internal_add_funcname(); public: const ::pg_query::Node& funcname(int index) const; ::pg_query::Node* add_funcname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& funcname() const; // repeated .pg_query.Node args = 2 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; int agg_order_size() const; private: int _internal_agg_order_size() const; public: void clear_agg_order(); ::pg_query::Node* mutable_agg_order(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_agg_order(); private: const ::pg_query::Node& _internal_agg_order(int index) const; ::pg_query::Node* _internal_add_agg_order(); public: const ::pg_query::Node& agg_order(int index) const; ::pg_query::Node* add_agg_order(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& agg_order() const; // .pg_query.Node agg_filter = 4 [json_name = "agg_filter"]; bool has_agg_filter() const; private: bool _internal_has_agg_filter() const; public: void clear_agg_filter(); const ::pg_query::Node& agg_filter() const; PROTOBUF_NODISCARD ::pg_query::Node* release_agg_filter(); ::pg_query::Node* mutable_agg_filter(); void set_allocated_agg_filter(::pg_query::Node* agg_filter); private: const ::pg_query::Node& _internal_agg_filter() const; ::pg_query::Node* _internal_mutable_agg_filter(); public: void unsafe_arena_set_allocated_agg_filter( ::pg_query::Node* agg_filter); ::pg_query::Node* unsafe_arena_release_agg_filter(); // .pg_query.WindowDef over = 5 [json_name = "over"]; bool has_over() const; private: bool _internal_has_over() const; public: 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* over); private: const ::pg_query::WindowDef& _internal_over() const; ::pg_query::WindowDef* _internal_mutable_over(); public: void unsafe_arena_set_allocated_over( ::pg_query::WindowDef* over); ::pg_query::WindowDef* unsafe_arena_release_over(); // bool agg_within_group = 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funcname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > agg_order_; ::pg_query::Node* agg_filter_; ::pg_query::WindowDef* over_; bool agg_within_group_; bool agg_star_; bool agg_distinct_; bool func_variadic_; int funcformat_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class A_Star final : public ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase /* @@protoc_insertion_point(class_definition:pg_query.A_Star) */ { public: inline A_Star() : A_Star(nullptr) {} explicit PROTOBUF_CONSTEXPR A_Star(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); A_Star(const A_Star& from); A_Star(A_Star&& from) noexcept : A_Star() { *this = ::std::move(from); } inline A_Star& operator=(const A_Star& from) { CopyFrom(from); return *this; } inline A_Star& operator=(A_Star&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 186; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_Star* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- A_Star* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyFrom; inline void CopyFrom(const A_Star& from) { ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyImpl(*this, from); } using ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeFrom; void MergeFrom(const A_Star& from) { ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeImpl(*this, from); } public: private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.A_Star"; } protected: explicit A_Star(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // @@protoc_insertion_point(class_scope:pg_query.A_Star) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class A_Indices final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Indices) */ { public: inline A_Indices() : A_Indices(nullptr) {} ~A_Indices() override; explicit PROTOBUF_CONSTEXPR A_Indices(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); A_Indices(const A_Indices& from); A_Indices(A_Indices&& from) noexcept : A_Indices() { *this = ::std::move(from); } inline A_Indices& operator=(const A_Indices& from) { CopyFrom(from); return *this; } inline A_Indices& operator=(A_Indices&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 187; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_Indices* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- A_Indices* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const A_Indices& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const A_Indices& from) { A_Indices::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(A_Indices* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.A_Indices"; } protected: explicit A_Indices(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_lidx() const; public: 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* lidx); private: const ::pg_query::Node& _internal_lidx() const; ::pg_query::Node* _internal_mutable_lidx(); public: void unsafe_arena_set_allocated_lidx( ::pg_query::Node* lidx); ::pg_query::Node* unsafe_arena_release_lidx(); // .pg_query.Node uidx = 3 [json_name = "uidx"]; bool has_uidx() const; private: bool _internal_has_uidx() const; public: void clear_uidx(); const ::pg_query::Node& uidx() const; PROTOBUF_NODISCARD ::pg_query::Node* release_uidx(); ::pg_query::Node* mutable_uidx(); void set_allocated_uidx(::pg_query::Node* uidx); private: const ::pg_query::Node& _internal_uidx() const; ::pg_query::Node* _internal_mutable_uidx(); public: void unsafe_arena_set_allocated_uidx( ::pg_query::Node* uidx); ::pg_query::Node* unsafe_arena_release_uidx(); // bool is_slice = 1 [json_name = "is_slice"]; void clear_is_slice(); bool is_slice() const; void set_is_slice(bool value); private: bool _internal_is_slice() const; void _internal_set_is_slice(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.A_Indices) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* lidx_; ::pg_query::Node* uidx_; bool is_slice_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class A_Indirection final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Indirection) */ { public: inline A_Indirection() : A_Indirection(nullptr) {} ~A_Indirection() override; explicit PROTOBUF_CONSTEXPR A_Indirection(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); A_Indirection(const A_Indirection& from); A_Indirection(A_Indirection&& from) noexcept : A_Indirection() { *this = ::std::move(from); } inline A_Indirection& operator=(const A_Indirection& from) { CopyFrom(from); return *this; } inline A_Indirection& operator=(A_Indirection&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 188; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_Indirection* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- A_Indirection* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const A_Indirection& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const A_Indirection& from) { A_Indirection::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(A_Indirection* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.A_Indirection"; } protected: explicit A_Indirection(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_indirection(); private: const ::pg_query::Node& _internal_indirection(int index) const; ::pg_query::Node* _internal_add_indirection(); public: const ::pg_query::Node& indirection(int index) const; ::pg_query::Node* add_indirection(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& indirection() const; // .pg_query.Node arg = 1 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // @@protoc_insertion_point(class_scope:pg_query.A_Indirection) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > indirection_; ::pg_query::Node* arg_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class A_ArrayExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.A_ArrayExpr) */ { public: inline A_ArrayExpr() : A_ArrayExpr(nullptr) {} ~A_ArrayExpr() override; explicit PROTOBUF_CONSTEXPR A_ArrayExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); A_ArrayExpr(const A_ArrayExpr& from); A_ArrayExpr(A_ArrayExpr&& from) noexcept : A_ArrayExpr() { *this = ::std::move(from); } inline A_ArrayExpr& operator=(const A_ArrayExpr& from) { CopyFrom(from); return *this; } inline A_ArrayExpr& operator=(A_ArrayExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 189; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_ArrayExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- A_ArrayExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const A_ArrayExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const A_ArrayExpr& from) { A_ArrayExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(A_ArrayExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.A_ArrayExpr"; } protected: explicit A_ArrayExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_elements(); private: const ::pg_query::Node& _internal_elements(int index) const; ::pg_query::Node* _internal_add_elements(); public: const ::pg_query::Node& elements(int index) const; ::pg_query::Node* add_elements(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& elements() const; // int32 location = 2 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > elements_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ResTarget final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ResTarget) */ { public: inline ResTarget() : ResTarget(nullptr) {} ~ResTarget() override; explicit PROTOBUF_CONSTEXPR ResTarget(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ResTarget(const ResTarget& from); ResTarget(ResTarget&& from) noexcept : ResTarget() { *this = ::std::move(from); } inline ResTarget& operator=(const ResTarget& from) { CopyFrom(from); return *this; } inline ResTarget& operator=(ResTarget&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 190; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ResTarget* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ResTarget* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ResTarget& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ResTarget& from) { ResTarget::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ResTarget* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ResTarget"; } protected: explicit ResTarget(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_indirection(); private: const ::pg_query::Node& _internal_indirection(int index) const; ::pg_query::Node* _internal_add_indirection(); public: const ::pg_query::Node& indirection(int index) const; ::pg_query::Node* add_indirection(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& indirection() const; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; template void set_name(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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; private: bool _internal_has_val() const; public: 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* val); private: const ::pg_query::Node& _internal_val() const; ::pg_query::Node* _internal_mutable_val(); public: void unsafe_arena_set_allocated_val( ::pg_query::Node* val); ::pg_query::Node* unsafe_arena_release_val(); // int32 location = 4 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > indirection_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::Node* val_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class MultiAssignRef final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.MultiAssignRef) */ { public: inline MultiAssignRef() : MultiAssignRef(nullptr) {} ~MultiAssignRef() override; explicit PROTOBUF_CONSTEXPR MultiAssignRef(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); MultiAssignRef(const MultiAssignRef& from); MultiAssignRef(MultiAssignRef&& from) noexcept : MultiAssignRef() { *this = ::std::move(from); } inline MultiAssignRef& operator=(const MultiAssignRef& from) { CopyFrom(from); return *this; } inline MultiAssignRef& operator=(MultiAssignRef&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 191; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(MultiAssignRef* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- MultiAssignRef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const MultiAssignRef& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const MultiAssignRef& from) { MultiAssignRef::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(MultiAssignRef* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.MultiAssignRef"; } protected: explicit MultiAssignRef(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_source() const; public: 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* source); private: const ::pg_query::Node& _internal_source() const; ::pg_query::Node* _internal_mutable_source(); public: void unsafe_arena_set_allocated_source( ::pg_query::Node* source); ::pg_query::Node* unsafe_arena_release_source(); // int32 colno = 2 [json_name = "colno"]; void clear_colno(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* source_; int32_t colno_; int32_t ncolumns_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TypeCast final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TypeCast) */ { public: inline TypeCast() : TypeCast(nullptr) {} ~TypeCast() override; explicit PROTOBUF_CONSTEXPR TypeCast(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); TypeCast(const TypeCast& from); TypeCast(TypeCast&& from) noexcept : TypeCast() { *this = ::std::move(from); } inline TypeCast& operator=(const TypeCast& from) { CopyFrom(from); return *this; } inline TypeCast& operator=(TypeCast&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 192; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TypeCast* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TypeCast* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const TypeCast& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const TypeCast& from) { TypeCast::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TypeCast* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TypeCast"; } protected: explicit TypeCast(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_arg() const; public: 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* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; bool has_type_name() const; private: bool _internal_has_type_name() const; public: void clear_type_name(); const ::pg_query::TypeName& type_name() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* type_name); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: void unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name); ::pg_query::TypeName* unsafe_arena_release_type_name(); // int32 location = 3 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* arg_; ::pg_query::TypeName* type_name_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CollateClause final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CollateClause) */ { public: inline CollateClause() : CollateClause(nullptr) {} ~CollateClause() override; explicit PROTOBUF_CONSTEXPR CollateClause(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CollateClause(const CollateClause& from); CollateClause(CollateClause&& from) noexcept : CollateClause() { *this = ::std::move(from); } inline CollateClause& operator=(const CollateClause& from) { CopyFrom(from); return *this; } inline CollateClause& operator=(CollateClause&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 193; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CollateClause* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CollateClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CollateClause& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CollateClause& from) { CollateClause::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CollateClause* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CollateClause"; } protected: explicit CollateClause(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_collname(); private: const ::pg_query::Node& _internal_collname(int index) const; ::pg_query::Node* _internal_add_collname(); public: const ::pg_query::Node& collname(int index) const; ::pg_query::Node* add_collname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& collname() const; // .pg_query.Node arg = 1 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // int32 location = 3 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > collname_; ::pg_query::Node* arg_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SortBy final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SortBy) */ { public: inline SortBy() : SortBy(nullptr) {} ~SortBy() override; explicit PROTOBUF_CONSTEXPR SortBy(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); SortBy(const SortBy& from); SortBy(SortBy&& from) noexcept : SortBy() { *this = ::std::move(from); } inline SortBy& operator=(const SortBy& from) { CopyFrom(from); return *this; } inline SortBy& operator=(SortBy&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 194; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SortBy* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SortBy* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const SortBy& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const SortBy& from) { SortBy::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SortBy* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SortBy"; } protected: explicit SortBy(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_use_op(); private: const ::pg_query::Node& _internal_use_op(int index) const; ::pg_query::Node* _internal_add_use_op(); public: const ::pg_query::Node& use_op(int index) const; ::pg_query::Node* add_use_op(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& use_op() const; // .pg_query.Node node = 1 [json_name = "node"]; bool has_node() const; private: bool _internal_has_node() const; public: void clear_node(); const ::pg_query::Node& node() const; PROTOBUF_NODISCARD ::pg_query::Node* release_node(); ::pg_query::Node* mutable_node(); void set_allocated_node(::pg_query::Node* node); private: const ::pg_query::Node& _internal_node() const; ::pg_query::Node* _internal_mutable_node(); public: void unsafe_arena_set_allocated_node( ::pg_query::Node* node); ::pg_query::Node* unsafe_arena_release_node(); // .pg_query.SortByDir sortby_dir = 2 [json_name = "sortby_dir"]; void clear_sortby_dir(); ::pg_query::SortByDir sortby_dir() const; void set_sortby_dir(::pg_query::SortByDir value); private: ::pg_query::SortByDir _internal_sortby_dir() const; void _internal_set_sortby_dir(::pg_query::SortByDir value); public: // .pg_query.SortByNulls sortby_nulls = 3 [json_name = "sortby_nulls"]; void clear_sortby_nulls(); ::pg_query::SortByNulls sortby_nulls() const; void set_sortby_nulls(::pg_query::SortByNulls value); private: ::pg_query::SortByNulls _internal_sortby_nulls() const; void _internal_set_sortby_nulls(::pg_query::SortByNulls value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > use_op_; ::pg_query::Node* node_; int sortby_dir_; int sortby_nulls_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class WindowDef final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.WindowDef) */ { public: inline WindowDef() : WindowDef(nullptr) {} ~WindowDef() override; explicit PROTOBUF_CONSTEXPR WindowDef(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); WindowDef(const WindowDef& from); WindowDef(WindowDef&& from) noexcept : WindowDef() { *this = ::std::move(from); } inline WindowDef& operator=(const WindowDef& from) { CopyFrom(from); return *this; } inline WindowDef& operator=(WindowDef&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 195; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(WindowDef* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- WindowDef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const WindowDef& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const WindowDef& from) { WindowDef::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(WindowDef* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.WindowDef"; } protected: explicit WindowDef(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_partition_clause(); private: const ::pg_query::Node& _internal_partition_clause(int index) const; ::pg_query::Node* _internal_add_partition_clause(); public: const ::pg_query::Node& partition_clause(int index) const; ::pg_query::Node* add_partition_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& partition_clause() const; // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; int order_clause_size() const; private: int _internal_order_clause_size() const; public: void clear_order_clause(); ::pg_query::Node* mutable_order_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_order_clause(); private: const ::pg_query::Node& _internal_order_clause(int index) const; ::pg_query::Node* _internal_add_order_clause(); public: const ::pg_query::Node& order_clause(int index) const; ::pg_query::Node* add_order_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& order_clause() const; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; template void set_name(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_refname(); PROTOBUF_NODISCARD std::string* release_refname(); void set_allocated_refname(std::string* refname); 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; private: bool _internal_has_start_offset() const; public: 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* start_offset); private: const ::pg_query::Node& _internal_start_offset() const; ::pg_query::Node* _internal_mutable_start_offset(); public: void unsafe_arena_set_allocated_start_offset( ::pg_query::Node* start_offset); ::pg_query::Node* unsafe_arena_release_start_offset(); // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; bool has_end_offset() const; private: bool _internal_has_end_offset() const; public: void clear_end_offset(); const ::pg_query::Node& end_offset() const; PROTOBUF_NODISCARD ::pg_query::Node* release_end_offset(); ::pg_query::Node* mutable_end_offset(); void set_allocated_end_offset(::pg_query::Node* end_offset); private: const ::pg_query::Node& _internal_end_offset() const; ::pg_query::Node* _internal_mutable_end_offset(); public: void unsafe_arena_set_allocated_end_offset( ::pg_query::Node* end_offset); ::pg_query::Node* unsafe_arena_release_end_offset(); // int32 frame_options = 5 [json_name = "frameOptions"]; void clear_frame_options(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > partition_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > order_clause_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr refname_; ::pg_query::Node* start_offset_; ::pg_query::Node* end_offset_; int32_t frame_options_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeSubselect final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeSubselect) */ { public: inline RangeSubselect() : RangeSubselect(nullptr) {} ~RangeSubselect() override; explicit PROTOBUF_CONSTEXPR RangeSubselect(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RangeSubselect(const RangeSubselect& from); RangeSubselect(RangeSubselect&& from) noexcept : RangeSubselect() { *this = ::std::move(from); } inline RangeSubselect& operator=(const RangeSubselect& from) { CopyFrom(from); return *this; } inline RangeSubselect& operator=(RangeSubselect&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 196; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeSubselect* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeSubselect* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RangeSubselect& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RangeSubselect& from) { RangeSubselect::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeSubselect* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeSubselect"; } protected: explicit RangeSubselect(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_subquery() const; public: 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* subquery); private: const ::pg_query::Node& _internal_subquery() const; ::pg_query::Node* _internal_mutable_subquery(); public: void unsafe_arena_set_allocated_subquery( ::pg_query::Node* subquery); ::pg_query::Node* unsafe_arena_release_subquery(); // .pg_query.Alias alias = 3 [json_name = "alias"]; bool has_alias() const; private: bool _internal_has_alias() const; public: void clear_alias(); const ::pg_query::Alias& alias() const; PROTOBUF_NODISCARD ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* alias); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: void unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias); ::pg_query::Alias* unsafe_arena_release_alias(); // bool lateral = 1 [json_name = "lateral"]; void clear_lateral(); bool lateral() const; void set_lateral(bool value); private: bool _internal_lateral() const; void _internal_set_lateral(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.RangeSubselect) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* subquery_; ::pg_query::Alias* alias_; bool lateral_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeFunction final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeFunction) */ { public: inline RangeFunction() : RangeFunction(nullptr) {} ~RangeFunction() override; explicit PROTOBUF_CONSTEXPR RangeFunction(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RangeFunction(const RangeFunction& from); RangeFunction(RangeFunction&& from) noexcept : RangeFunction() { *this = ::std::move(from); } inline RangeFunction& operator=(const RangeFunction& from) { CopyFrom(from); return *this; } inline RangeFunction& operator=(RangeFunction&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 197; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeFunction* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeFunction* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RangeFunction& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RangeFunction& from) { RangeFunction::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeFunction* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeFunction"; } protected: explicit RangeFunction(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_functions(); private: const ::pg_query::Node& _internal_functions(int index) const; ::pg_query::Node* _internal_add_functions(); public: const ::pg_query::Node& functions(int index) const; ::pg_query::Node* add_functions(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& functions() const; // repeated .pg_query.Node coldeflist = 6 [json_name = "coldeflist"]; int coldeflist_size() const; private: int _internal_coldeflist_size() const; public: void clear_coldeflist(); ::pg_query::Node* mutable_coldeflist(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_coldeflist(); private: const ::pg_query::Node& _internal_coldeflist(int index) const; ::pg_query::Node* _internal_add_coldeflist(); public: const ::pg_query::Node& coldeflist(int index) const; ::pg_query::Node* add_coldeflist(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& coldeflist() const; // .pg_query.Alias alias = 5 [json_name = "alias"]; bool has_alias() const; private: bool _internal_has_alias() const; public: void clear_alias(); const ::pg_query::Alias& alias() const; PROTOBUF_NODISCARD ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* alias); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: void unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias); ::pg_query::Alias* unsafe_arena_release_alias(); // bool lateral = 1 [json_name = "lateral"]; void clear_lateral(); bool lateral() const; void set_lateral(bool value); private: bool _internal_lateral() const; void _internal_set_lateral(bool value); public: // bool ordinality = 2 [json_name = "ordinality"]; void clear_ordinality(); bool ordinality() const; void set_ordinality(bool value); private: bool _internal_ordinality() const; void _internal_set_ordinality(bool value); public: // bool is_rowsfrom = 3 [json_name = "is_rowsfrom"]; void clear_is_rowsfrom(); bool is_rowsfrom() const; void set_is_rowsfrom(bool value); private: bool _internal_is_rowsfrom() const; void _internal_set_is_rowsfrom(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.RangeFunction) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > functions_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coldeflist_; ::pg_query::Alias* alias_; bool lateral_; bool ordinality_; bool is_rowsfrom_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeTableSample final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTableSample) */ { public: inline RangeTableSample() : RangeTableSample(nullptr) {} ~RangeTableSample() override; explicit PROTOBUF_CONSTEXPR RangeTableSample(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RangeTableSample(const RangeTableSample& from); RangeTableSample(RangeTableSample&& from) noexcept : RangeTableSample() { *this = ::std::move(from); } inline RangeTableSample& operator=(const RangeTableSample& from) { CopyFrom(from); return *this; } inline RangeTableSample& operator=(RangeTableSample&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 198; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTableSample* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeTableSample* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RangeTableSample& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RangeTableSample& from) { RangeTableSample::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeTableSample* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeTableSample"; } protected: explicit RangeTableSample(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_method(); private: const ::pg_query::Node& _internal_method(int index) const; ::pg_query::Node* _internal_add_method(); public: const ::pg_query::Node& method(int index) const; ::pg_query::Node* add_method(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& method() const; // repeated .pg_query.Node args = 3 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::Node& relation() const; PROTOBUF_NODISCARD ::pg_query::Node* release_relation(); ::pg_query::Node* mutable_relation(); void set_allocated_relation(::pg_query::Node* relation); private: const ::pg_query::Node& _internal_relation() const; ::pg_query::Node* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::Node* relation); ::pg_query::Node* unsafe_arena_release_relation(); // .pg_query.Node repeatable = 4 [json_name = "repeatable"]; bool has_repeatable() const; private: bool _internal_has_repeatable() const; public: void clear_repeatable(); const ::pg_query::Node& repeatable() const; PROTOBUF_NODISCARD ::pg_query::Node* release_repeatable(); ::pg_query::Node* mutable_repeatable(); void set_allocated_repeatable(::pg_query::Node* repeatable); private: const ::pg_query::Node& _internal_repeatable() const; ::pg_query::Node* _internal_mutable_repeatable(); public: void unsafe_arena_set_allocated_repeatable( ::pg_query::Node* repeatable); ::pg_query::Node* unsafe_arena_release_repeatable(); // int32 location = 5 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > method_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* relation_; ::pg_query::Node* repeatable_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeTableFunc final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTableFunc) */ { public: inline RangeTableFunc() : RangeTableFunc(nullptr) {} ~RangeTableFunc() override; explicit PROTOBUF_CONSTEXPR RangeTableFunc(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RangeTableFunc(const RangeTableFunc& from); RangeTableFunc(RangeTableFunc&& from) noexcept : RangeTableFunc() { *this = ::std::move(from); } inline RangeTableFunc& operator=(const RangeTableFunc& from) { CopyFrom(from); return *this; } inline RangeTableFunc& operator=(RangeTableFunc&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 199; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTableFunc* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeTableFunc* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RangeTableFunc& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RangeTableFunc& from) { RangeTableFunc::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeTableFunc* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeTableFunc"; } protected: explicit RangeTableFunc(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_namespaces(); private: const ::pg_query::Node& _internal_namespaces(int index) const; ::pg_query::Node* _internal_add_namespaces(); public: const ::pg_query::Node& namespaces(int index) const; ::pg_query::Node* add_namespaces(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& namespaces() const; // repeated .pg_query.Node columns = 5 [json_name = "columns"]; int columns_size() const; private: int _internal_columns_size() const; public: void clear_columns(); ::pg_query::Node* mutable_columns(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_columns(); private: const ::pg_query::Node& _internal_columns(int index) const; ::pg_query::Node* _internal_add_columns(); public: const ::pg_query::Node& columns(int index) const; ::pg_query::Node* add_columns(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& columns() const; // .pg_query.Node docexpr = 2 [json_name = "docexpr"]; bool has_docexpr() const; private: bool _internal_has_docexpr() const; public: void clear_docexpr(); const ::pg_query::Node& docexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_docexpr(); ::pg_query::Node* mutable_docexpr(); void set_allocated_docexpr(::pg_query::Node* docexpr); private: const ::pg_query::Node& _internal_docexpr() const; ::pg_query::Node* _internal_mutable_docexpr(); public: void unsafe_arena_set_allocated_docexpr( ::pg_query::Node* docexpr); ::pg_query::Node* unsafe_arena_release_docexpr(); // .pg_query.Node rowexpr = 3 [json_name = "rowexpr"]; bool has_rowexpr() const; private: bool _internal_has_rowexpr() const; public: void clear_rowexpr(); const ::pg_query::Node& rowexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_rowexpr(); ::pg_query::Node* mutable_rowexpr(); void set_allocated_rowexpr(::pg_query::Node* rowexpr); private: const ::pg_query::Node& _internal_rowexpr() const; ::pg_query::Node* _internal_mutable_rowexpr(); public: void unsafe_arena_set_allocated_rowexpr( ::pg_query::Node* rowexpr); ::pg_query::Node* unsafe_arena_release_rowexpr(); // .pg_query.Alias alias = 6 [json_name = "alias"]; bool has_alias() const; private: bool _internal_has_alias() const; public: void clear_alias(); const ::pg_query::Alias& alias() const; PROTOBUF_NODISCARD ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* alias); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: void unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias); ::pg_query::Alias* unsafe_arena_release_alias(); // bool lateral = 1 [json_name = "lateral"]; void clear_lateral(); bool lateral() const; void set_lateral(bool value); private: bool _internal_lateral() const; void _internal_set_lateral(bool value); public: // int32 location = 7 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > namespaces_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > columns_; ::pg_query::Node* docexpr_; ::pg_query::Node* rowexpr_; ::pg_query::Alias* alias_; bool lateral_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeTableFuncCol final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTableFuncCol) */ { public: inline RangeTableFuncCol() : RangeTableFuncCol(nullptr) {} ~RangeTableFuncCol() override; explicit PROTOBUF_CONSTEXPR RangeTableFuncCol(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RangeTableFuncCol(const RangeTableFuncCol& from); RangeTableFuncCol(RangeTableFuncCol&& from) noexcept : RangeTableFuncCol() { *this = ::std::move(from); } inline RangeTableFuncCol& operator=(const RangeTableFuncCol& from) { CopyFrom(from); return *this; } inline RangeTableFuncCol& operator=(RangeTableFuncCol&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 200; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTableFuncCol* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeTableFuncCol* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RangeTableFuncCol& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RangeTableFuncCol& from) { RangeTableFuncCol::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeTableFuncCol* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeTableFuncCol"; } protected: explicit RangeTableFuncCol(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_colname(); PROTOBUF_NODISCARD std::string* release_colname(); void set_allocated_colname(std::string* colname); 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; 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* type_name); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: void unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name); ::pg_query::TypeName* unsafe_arena_release_type_name(); // .pg_query.Node colexpr = 5 [json_name = "colexpr"]; bool has_colexpr() const; private: bool _internal_has_colexpr() const; public: void clear_colexpr(); const ::pg_query::Node& colexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_colexpr(); ::pg_query::Node* mutable_colexpr(); void set_allocated_colexpr(::pg_query::Node* colexpr); private: const ::pg_query::Node& _internal_colexpr() const; ::pg_query::Node* _internal_mutable_colexpr(); public: void unsafe_arena_set_allocated_colexpr( ::pg_query::Node* colexpr); ::pg_query::Node* unsafe_arena_release_colexpr(); // .pg_query.Node coldefexpr = 6 [json_name = "coldefexpr"]; bool has_coldefexpr() const; private: bool _internal_has_coldefexpr() const; public: void clear_coldefexpr(); const ::pg_query::Node& coldefexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_coldefexpr(); ::pg_query::Node* mutable_coldefexpr(); void set_allocated_coldefexpr(::pg_query::Node* coldefexpr); private: const ::pg_query::Node& _internal_coldefexpr() const; ::pg_query::Node* _internal_mutable_coldefexpr(); public: void unsafe_arena_set_allocated_coldefexpr( ::pg_query::Node* coldefexpr); ::pg_query::Node* unsafe_arena_release_coldefexpr(); // bool for_ordinality = 3 [json_name = "for_ordinality"]; void clear_for_ordinality(); bool for_ordinality() const; void set_for_ordinality(bool value); private: bool _internal_for_ordinality() const; void _internal_set_for_ordinality(bool value); public: // bool is_not_null = 4 [json_name = "is_not_null"]; void clear_is_not_null(); bool is_not_null() const; void set_is_not_null(bool value); private: bool _internal_is_not_null() const; void _internal_set_is_not_null(bool value); public: // int32 location = 7 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr colname_; ::pg_query::TypeName* type_name_; ::pg_query::Node* colexpr_; ::pg_query::Node* coldefexpr_; bool for_ordinality_; bool is_not_null_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TypeName final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TypeName) */ { public: inline TypeName() : TypeName(nullptr) {} ~TypeName() override; explicit PROTOBUF_CONSTEXPR TypeName(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); TypeName(const TypeName& from); TypeName(TypeName&& from) noexcept : TypeName() { *this = ::std::move(from); } inline TypeName& operator=(const TypeName& from) { CopyFrom(from); return *this; } inline TypeName& operator=(TypeName&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 201; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TypeName* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TypeName* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const TypeName& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const TypeName& from) { TypeName::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TypeName* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TypeName"; } protected: explicit TypeName(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_names(); private: const ::pg_query::Node& _internal_names(int index) const; ::pg_query::Node* _internal_add_names(); public: const ::pg_query::Node& names(int index) const; ::pg_query::Node* add_names(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& names() const; // repeated .pg_query.Node typmods = 5 [json_name = "typmods"]; int typmods_size() const; private: int _internal_typmods_size() const; public: void clear_typmods(); ::pg_query::Node* mutable_typmods(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_typmods(); private: const ::pg_query::Node& _internal_typmods(int index) const; ::pg_query::Node* _internal_add_typmods(); public: const ::pg_query::Node& typmods(int index) const; ::pg_query::Node* add_typmods(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& typmods() const; // repeated .pg_query.Node array_bounds = 7 [json_name = "arrayBounds"]; int array_bounds_size() const; private: int _internal_array_bounds_size() const; public: void clear_array_bounds(); ::pg_query::Node* mutable_array_bounds(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_array_bounds(); private: const ::pg_query::Node& _internal_array_bounds(int index) const; ::pg_query::Node* _internal_add_array_bounds(); public: const ::pg_query::Node& array_bounds(int index) const; ::pg_query::Node* add_array_bounds(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& array_bounds() const; // uint32 type_oid = 2 [json_name = "typeOid"]; void clear_type_oid(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > names_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > typmods_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > array_bounds_; uint32_t type_oid_; bool setof_; bool pct_type_; int32_t typemod_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ColumnDef final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ColumnDef) */ { public: inline ColumnDef() : ColumnDef(nullptr) {} ~ColumnDef() override; explicit PROTOBUF_CONSTEXPR ColumnDef(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ColumnDef(const ColumnDef& from); ColumnDef(ColumnDef&& from) noexcept : ColumnDef() { *this = ::std::move(from); } inline ColumnDef& operator=(const ColumnDef& from) { CopyFrom(from); return *this; } inline ColumnDef& operator=(ColumnDef&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 202; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ColumnDef* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ColumnDef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ColumnDef& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ColumnDef& from) { ColumnDef::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ColumnDef* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ColumnDef"; } protected: explicit ColumnDef(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kConstraintsFieldNumber = 16, kFdwoptionsFieldNumber = 17, kColnameFieldNumber = 1, kCompressionFieldNumber = 3, kStorageFieldNumber = 8, kIdentityFieldNumber = 11, kGeneratedFieldNumber = 13, kTypeNameFieldNumber = 2, kRawDefaultFieldNumber = 9, kCookedDefaultFieldNumber = 10, kIdentitySequenceFieldNumber = 12, kCollClauseFieldNumber = 14, kInhcountFieldNumber = 4, kIsLocalFieldNumber = 5, kIsNotNullFieldNumber = 6, kIsFromTypeFieldNumber = 7, kCollOidFieldNumber = 15, kLocationFieldNumber = 18, }; // repeated .pg_query.Node constraints = 16 [json_name = "constraints"]; int constraints_size() const; private: int _internal_constraints_size() const; public: void clear_constraints(); ::pg_query::Node* mutable_constraints(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_constraints(); private: const ::pg_query::Node& _internal_constraints(int index) const; ::pg_query::Node* _internal_add_constraints(); public: const ::pg_query::Node& constraints(int index) const; ::pg_query::Node* add_constraints(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& constraints() const; // repeated .pg_query.Node fdwoptions = 17 [json_name = "fdwoptions"]; int fdwoptions_size() const; private: int _internal_fdwoptions_size() const; public: void clear_fdwoptions(); ::pg_query::Node* mutable_fdwoptions(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_fdwoptions(); private: const ::pg_query::Node& _internal_fdwoptions(int index) const; ::pg_query::Node* _internal_add_fdwoptions(); public: const ::pg_query::Node& fdwoptions(int index) const; ::pg_query::Node* add_fdwoptions(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& fdwoptions() const; // string colname = 1 [json_name = "colname"]; void clear_colname(); const std::string& colname() const; template void set_colname(ArgT0&& arg0, ArgT... args); std::string* mutable_colname(); PROTOBUF_NODISCARD std::string* release_colname(); void set_allocated_colname(std::string* colname); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_compression(); PROTOBUF_NODISCARD std::string* release_compression(); void set_allocated_compression(std::string* compression); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_storage(); PROTOBUF_NODISCARD std::string* release_storage(); void set_allocated_storage(std::string* storage); 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 identity = 11 [json_name = "identity"]; void clear_identity(); const std::string& identity() const; template void set_identity(ArgT0&& arg0, ArgT... args); std::string* mutable_identity(); PROTOBUF_NODISCARD std::string* release_identity(); void set_allocated_identity(std::string* identity); 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 = 13 [json_name = "generated"]; void clear_generated(); const std::string& generated() const; template void set_generated(ArgT0&& arg0, ArgT... args); std::string* mutable_generated(); PROTOBUF_NODISCARD std::string* release_generated(); void set_allocated_generated(std::string* generated); 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; 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* type_name); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: void unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name); ::pg_query::TypeName* unsafe_arena_release_type_name(); // .pg_query.Node raw_default = 9 [json_name = "raw_default"]; bool has_raw_default() const; private: bool _internal_has_raw_default() const; public: void clear_raw_default(); const ::pg_query::Node& raw_default() const; PROTOBUF_NODISCARD ::pg_query::Node* release_raw_default(); ::pg_query::Node* mutable_raw_default(); void set_allocated_raw_default(::pg_query::Node* raw_default); private: const ::pg_query::Node& _internal_raw_default() const; ::pg_query::Node* _internal_mutable_raw_default(); public: void unsafe_arena_set_allocated_raw_default( ::pg_query::Node* raw_default); ::pg_query::Node* unsafe_arena_release_raw_default(); // .pg_query.Node cooked_default = 10 [json_name = "cooked_default"]; bool has_cooked_default() const; private: bool _internal_has_cooked_default() const; public: void clear_cooked_default(); const ::pg_query::Node& cooked_default() const; PROTOBUF_NODISCARD ::pg_query::Node* release_cooked_default(); ::pg_query::Node* mutable_cooked_default(); void set_allocated_cooked_default(::pg_query::Node* cooked_default); private: const ::pg_query::Node& _internal_cooked_default() const; ::pg_query::Node* _internal_mutable_cooked_default(); public: void unsafe_arena_set_allocated_cooked_default( ::pg_query::Node* cooked_default); ::pg_query::Node* unsafe_arena_release_cooked_default(); // .pg_query.RangeVar identity_sequence = 12 [json_name = "identitySequence"]; bool has_identity_sequence() const; private: bool _internal_has_identity_sequence() const; public: void clear_identity_sequence(); const ::pg_query::RangeVar& identity_sequence() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_identity_sequence(); ::pg_query::RangeVar* mutable_identity_sequence(); void set_allocated_identity_sequence(::pg_query::RangeVar* identity_sequence); private: const ::pg_query::RangeVar& _internal_identity_sequence() const; ::pg_query::RangeVar* _internal_mutable_identity_sequence(); public: void unsafe_arena_set_allocated_identity_sequence( ::pg_query::RangeVar* identity_sequence); ::pg_query::RangeVar* unsafe_arena_release_identity_sequence(); // .pg_query.CollateClause coll_clause = 14 [json_name = "collClause"]; bool has_coll_clause() const; private: bool _internal_has_coll_clause() const; public: void clear_coll_clause(); const ::pg_query::CollateClause& coll_clause() const; PROTOBUF_NODISCARD ::pg_query::CollateClause* release_coll_clause(); ::pg_query::CollateClause* mutable_coll_clause(); void set_allocated_coll_clause(::pg_query::CollateClause* coll_clause); private: const ::pg_query::CollateClause& _internal_coll_clause() const; ::pg_query::CollateClause* _internal_mutable_coll_clause(); public: void unsafe_arena_set_allocated_coll_clause( ::pg_query::CollateClause* coll_clause); ::pg_query::CollateClause* unsafe_arena_release_coll_clause(); // int32 inhcount = 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 = 15 [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 = 18 [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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > constraints_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > fdwoptions_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr colname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr compression_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr storage_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr identity_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr generated_; ::pg_query::TypeName* type_name_; ::pg_query::Node* raw_default_; ::pg_query::Node* cooked_default_; ::pg_query::RangeVar* identity_sequence_; ::pg_query::CollateClause* coll_clause_; int32_t inhcount_; bool is_local_; bool is_not_null_; bool is_from_type_; uint32_t coll_oid_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class IndexElem final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.IndexElem) */ { public: inline IndexElem() : IndexElem(nullptr) {} ~IndexElem() override; explicit PROTOBUF_CONSTEXPR IndexElem(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); IndexElem(const IndexElem& from); IndexElem(IndexElem&& from) noexcept : IndexElem() { *this = ::std::move(from); } inline IndexElem& operator=(const IndexElem& from) { CopyFrom(from); return *this; } inline IndexElem& operator=(IndexElem&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 203; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(IndexElem* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- IndexElem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const IndexElem& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const IndexElem& from) { IndexElem::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(IndexElem* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.IndexElem"; } protected: explicit IndexElem(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_collation(); private: const ::pg_query::Node& _internal_collation(int index) const; ::pg_query::Node* _internal_add_collation(); public: const ::pg_query::Node& collation(int index) const; ::pg_query::Node* add_collation(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& collation() const; // repeated .pg_query.Node opclass = 5 [json_name = "opclass"]; int opclass_size() const; private: int _internal_opclass_size() const; public: void clear_opclass(); ::pg_query::Node* mutable_opclass(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opclass(); private: const ::pg_query::Node& _internal_opclass(int index) const; ::pg_query::Node* _internal_add_opclass(); public: const ::pg_query::Node& opclass(int index) const; ::pg_query::Node* add_opclass(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opclass() const; // repeated .pg_query.Node opclassopts = 6 [json_name = "opclassopts"]; int opclassopts_size() const; private: int _internal_opclassopts_size() const; public: void clear_opclassopts(); ::pg_query::Node* mutable_opclassopts(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opclassopts(); private: const ::pg_query::Node& _internal_opclassopts(int index) const; ::pg_query::Node* _internal_add_opclassopts(); public: const ::pg_query::Node& opclassopts(int index) const; ::pg_query::Node* add_opclassopts(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opclassopts() const; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; template void set_name(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_indexcolname(); PROTOBUF_NODISCARD std::string* release_indexcolname(); void set_allocated_indexcolname(std::string* indexcolname); 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; private: bool _internal_has_expr() const; public: 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* expr); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: void unsafe_arena_set_allocated_expr( ::pg_query::Node* expr); ::pg_query::Node* unsafe_arena_release_expr(); // .pg_query.SortByDir ordering = 7 [json_name = "ordering"]; void clear_ordering(); ::pg_query::SortByDir ordering() const; void set_ordering(::pg_query::SortByDir value); private: ::pg_query::SortByDir _internal_ordering() const; void _internal_set_ordering(::pg_query::SortByDir value); public: // .pg_query.SortByNulls nulls_ordering = 8 [json_name = "nulls_ordering"]; void clear_nulls_ordering(); ::pg_query::SortByNulls nulls_ordering() const; void set_nulls_ordering(::pg_query::SortByNulls value); private: ::pg_query::SortByNulls _internal_nulls_ordering() const; void _internal_set_nulls_ordering(::pg_query::SortByNulls value); public: // @@protoc_insertion_point(class_scope:pg_query.IndexElem) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > collation_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opclass_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opclassopts_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr indexcolname_; ::pg_query::Node* expr_; int ordering_; int nulls_ordering_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class StatsElem final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.StatsElem) */ { public: inline StatsElem() : StatsElem(nullptr) {} ~StatsElem() override; explicit PROTOBUF_CONSTEXPR StatsElem(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); StatsElem(const StatsElem& 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 (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 204; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(StatsElem* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- StatsElem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const StatsElem& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const StatsElem& from) { StatsElem::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(StatsElem* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.StatsElem"; } protected: explicit StatsElem(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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; private: bool _internal_has_expr() const; public: 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* expr); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: void unsafe_arena_set_allocated_expr( ::pg_query::Node* expr); ::pg_query::Node* unsafe_arena_release_expr(); // @@protoc_insertion_point(class_scope:pg_query.StatsElem) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::Node* expr_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Constraint final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Constraint) */ { public: inline Constraint() : Constraint(nullptr) {} ~Constraint() override; explicit PROTOBUF_CONSTEXPR Constraint(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); Constraint(const Constraint& from); Constraint(Constraint&& from) noexcept : Constraint() { *this = ::std::move(from); } inline Constraint& operator=(const Constraint& from) { CopyFrom(from); return *this; } inline Constraint& operator=(Constraint&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 205; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Constraint* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Constraint* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const Constraint& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const Constraint& from) { Constraint::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Constraint* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Constraint"; } protected: explicit Constraint(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kKeysFieldNumber = 11, kIncludingFieldNumber = 12, kExclusionsFieldNumber = 13, kOptionsFieldNumber = 14, kFkAttrsFieldNumber = 21, kPkAttrsFieldNumber = 22, kFkDelSetColsFieldNumber = 26, kOldConpfeqopFieldNumber = 27, kConnameFieldNumber = 2, kCookedExprFieldNumber = 8, kGeneratedWhenFieldNumber = 9, kIndexnameFieldNumber = 15, kIndexspaceFieldNumber = 16, kAccessMethodFieldNumber = 18, kFkMatchtypeFieldNumber = 23, kFkUpdActionFieldNumber = 24, kFkDelActionFieldNumber = 25, kRawExprFieldNumber = 7, kWhereClauseFieldNumber = 19, kPktableFieldNumber = 20, kContypeFieldNumber = 1, kLocationFieldNumber = 5, kDeferrableFieldNumber = 3, kInitdeferredFieldNumber = 4, kIsNoInheritFieldNumber = 6, kNullsNotDistinctFieldNumber = 10, kResetDefaultTblspcFieldNumber = 17, kSkipValidationFieldNumber = 29, kInitiallyValidFieldNumber = 30, kOldPktableOidFieldNumber = 28, }; // repeated .pg_query.Node keys = 11 [json_name = "keys"]; int keys_size() const; private: int _internal_keys_size() const; public: void clear_keys(); ::pg_query::Node* mutable_keys(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_keys(); private: const ::pg_query::Node& _internal_keys(int index) const; ::pg_query::Node* _internal_add_keys(); public: const ::pg_query::Node& keys(int index) const; ::pg_query::Node* add_keys(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& keys() const; // repeated .pg_query.Node including = 12 [json_name = "including"]; int including_size() const; private: int _internal_including_size() const; public: void clear_including(); ::pg_query::Node* mutable_including(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_including(); private: const ::pg_query::Node& _internal_including(int index) const; ::pg_query::Node* _internal_add_including(); public: const ::pg_query::Node& including(int index) const; ::pg_query::Node* add_including(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& including() const; // repeated .pg_query.Node exclusions = 13 [json_name = "exclusions"]; int exclusions_size() const; private: int _internal_exclusions_size() const; public: void clear_exclusions(); ::pg_query::Node* mutable_exclusions(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_exclusions(); private: const ::pg_query::Node& _internal_exclusions(int index) const; ::pg_query::Node* _internal_add_exclusions(); public: const ::pg_query::Node& exclusions(int index) const; ::pg_query::Node* add_exclusions(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& exclusions() const; // repeated .pg_query.Node options = 14 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // repeated .pg_query.Node fk_attrs = 21 [json_name = "fk_attrs"]; int fk_attrs_size() const; private: int _internal_fk_attrs_size() const; public: void clear_fk_attrs(); ::pg_query::Node* mutable_fk_attrs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_fk_attrs(); private: const ::pg_query::Node& _internal_fk_attrs(int index) const; ::pg_query::Node* _internal_add_fk_attrs(); public: const ::pg_query::Node& fk_attrs(int index) const; ::pg_query::Node* add_fk_attrs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& fk_attrs() const; // repeated .pg_query.Node pk_attrs = 22 [json_name = "pk_attrs"]; int pk_attrs_size() const; private: int _internal_pk_attrs_size() const; public: void clear_pk_attrs(); ::pg_query::Node* mutable_pk_attrs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_pk_attrs(); private: const ::pg_query::Node& _internal_pk_attrs(int index) const; ::pg_query::Node* _internal_add_pk_attrs(); public: const ::pg_query::Node& pk_attrs(int index) const; ::pg_query::Node* add_pk_attrs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& pk_attrs() const; // repeated .pg_query.Node fk_del_set_cols = 26 [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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_fk_del_set_cols(); private: const ::pg_query::Node& _internal_fk_del_set_cols(int index) const; ::pg_query::Node* _internal_add_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 ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& fk_del_set_cols() const; // repeated .pg_query.Node old_conpfeqop = 27 [json_name = "old_conpfeqop"]; int old_conpfeqop_size() const; private: int _internal_old_conpfeqop_size() const; public: void clear_old_conpfeqop(); ::pg_query::Node* mutable_old_conpfeqop(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_old_conpfeqop(); private: const ::pg_query::Node& _internal_old_conpfeqop(int index) const; ::pg_query::Node* _internal_add_old_conpfeqop(); public: const ::pg_query::Node& old_conpfeqop(int index) const; ::pg_query::Node* add_old_conpfeqop(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& old_conpfeqop() const; // string conname = 2 [json_name = "conname"]; void clear_conname(); const std::string& conname() const; template void set_conname(ArgT0&& arg0, ArgT... args); std::string* mutable_conname(); PROTOBUF_NODISCARD std::string* release_conname(); void set_allocated_conname(std::string* conname); 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 = 8 [json_name = "cooked_expr"]; void clear_cooked_expr(); const std::string& cooked_expr() const; template void set_cooked_expr(ArgT0&& arg0, ArgT... args); std::string* mutable_cooked_expr(); PROTOBUF_NODISCARD std::string* release_cooked_expr(); void set_allocated_cooked_expr(std::string* cooked_expr); 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 = 9 [json_name = "generated_when"]; void clear_generated_when(); const std::string& generated_when() const; template void set_generated_when(ArgT0&& arg0, ArgT... args); std::string* mutable_generated_when(); PROTOBUF_NODISCARD std::string* release_generated_when(); void set_allocated_generated_when(std::string* generated_when); 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 = 15 [json_name = "indexname"]; void clear_indexname(); const std::string& indexname() const; template void set_indexname(ArgT0&& arg0, ArgT... args); std::string* mutable_indexname(); PROTOBUF_NODISCARD std::string* release_indexname(); void set_allocated_indexname(std::string* indexname); 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 = 16 [json_name = "indexspace"]; void clear_indexspace(); const std::string& indexspace() const; template void set_indexspace(ArgT0&& arg0, ArgT... args); std::string* mutable_indexspace(); PROTOBUF_NODISCARD std::string* release_indexspace(); void set_allocated_indexspace(std::string* indexspace); 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 = 18 [json_name = "access_method"]; void clear_access_method(); const std::string& access_method() const; template void set_access_method(ArgT0&& arg0, ArgT... args); std::string* mutable_access_method(); PROTOBUF_NODISCARD std::string* release_access_method(); void set_allocated_access_method(std::string* access_method); 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 = 23 [json_name = "fk_matchtype"]; void clear_fk_matchtype(); const std::string& fk_matchtype() const; template void set_fk_matchtype(ArgT0&& arg0, ArgT... args); std::string* mutable_fk_matchtype(); PROTOBUF_NODISCARD std::string* release_fk_matchtype(); void set_allocated_fk_matchtype(std::string* fk_matchtype); 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 = 24 [json_name = "fk_upd_action"]; void clear_fk_upd_action(); const std::string& fk_upd_action() const; template void set_fk_upd_action(ArgT0&& arg0, ArgT... args); std::string* mutable_fk_upd_action(); PROTOBUF_NODISCARD std::string* release_fk_upd_action(); void set_allocated_fk_upd_action(std::string* fk_upd_action); private: const std::string& _internal_fk_upd_action() const; 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 = 25 [json_name = "fk_del_action"]; void clear_fk_del_action(); const std::string& fk_del_action() const; template void set_fk_del_action(ArgT0&& arg0, ArgT... args); std::string* mutable_fk_del_action(); PROTOBUF_NODISCARD std::string* release_fk_del_action(); void set_allocated_fk_del_action(std::string* fk_del_action); private: const std::string& _internal_fk_del_action() const; 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 = 7 [json_name = "raw_expr"]; bool has_raw_expr() const; private: bool _internal_has_raw_expr() const; public: void clear_raw_expr(); const ::pg_query::Node& raw_expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_raw_expr(); ::pg_query::Node* mutable_raw_expr(); void set_allocated_raw_expr(::pg_query::Node* raw_expr); private: const ::pg_query::Node& _internal_raw_expr() const; ::pg_query::Node* _internal_mutable_raw_expr(); public: void unsafe_arena_set_allocated_raw_expr( ::pg_query::Node* raw_expr); ::pg_query::Node* unsafe_arena_release_raw_expr(); // .pg_query.Node where_clause = 19 [json_name = "where_clause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // .pg_query.RangeVar pktable = 20 [json_name = "pktable"]; bool has_pktable() const; private: bool _internal_has_pktable() const; public: 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* pktable); private: const ::pg_query::RangeVar& _internal_pktable() const; ::pg_query::RangeVar* _internal_mutable_pktable(); public: void unsafe_arena_set_allocated_pktable( ::pg_query::RangeVar* pktable); ::pg_query::RangeVar* unsafe_arena_release_pktable(); // .pg_query.ConstrType contype = 1 [json_name = "contype"]; void clear_contype(); ::pg_query::ConstrType contype() const; void set_contype(::pg_query::ConstrType value); private: ::pg_query::ConstrType _internal_contype() const; void _internal_set_contype(::pg_query::ConstrType value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); 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 deferrable = 3 [json_name = "deferrable"]; void clear_deferrable(); bool deferrable() const; void set_deferrable(bool value); private: bool _internal_deferrable() const; void _internal_set_deferrable(bool value); public: // bool initdeferred = 4 [json_name = "initdeferred"]; void clear_initdeferred(); bool initdeferred() const; void set_initdeferred(bool value); private: bool _internal_initdeferred() const; void _internal_set_initdeferred(bool value); public: // bool is_no_inherit = 6 [json_name = "is_no_inherit"]; void clear_is_no_inherit(); bool is_no_inherit() const; void set_is_no_inherit(bool value); private: bool _internal_is_no_inherit() const; void _internal_set_is_no_inherit(bool value); public: // bool nulls_not_distinct = 10 [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 = 17 [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: // bool skip_validation = 29 [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 = 30 [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: // uint32 old_pktable_oid = 28 [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: // @@protoc_insertion_point(class_scope:pg_query.Constraint) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > keys_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > including_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > exclusions_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > fk_attrs_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > pk_attrs_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > fk_del_set_cols_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > old_conpfeqop_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr cooked_expr_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr generated_when_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr indexname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr indexspace_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr access_method_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fk_matchtype_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fk_upd_action_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fk_del_action_; ::pg_query::Node* raw_expr_; ::pg_query::Node* where_clause_; ::pg_query::RangeVar* pktable_; int contype_; int32_t location_; bool deferrable_; bool initdeferred_; bool is_no_inherit_; bool nulls_not_distinct_; bool reset_default_tblspc_; bool skip_validation_; bool initially_valid_; uint32_t old_pktable_oid_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DefElem final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DefElem) */ { public: inline DefElem() : DefElem(nullptr) {} ~DefElem() override; explicit PROTOBUF_CONSTEXPR DefElem(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); DefElem(const DefElem& from); DefElem(DefElem&& from) noexcept : DefElem() { *this = ::std::move(from); } inline DefElem& operator=(const DefElem& from) { CopyFrom(from); return *this; } inline DefElem& operator=(DefElem&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 206; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DefElem* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DefElem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const DefElem& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const DefElem& from) { DefElem::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DefElem* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DefElem"; } protected: explicit DefElem(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_defnamespace(); PROTOBUF_NODISCARD std::string* release_defnamespace(); void set_allocated_defnamespace(std::string* defnamespace); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_defname(); PROTOBUF_NODISCARD std::string* release_defname(); void set_allocated_defname(std::string* defname); 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; private: bool _internal_has_arg() const; public: 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* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // .pg_query.DefElemAction defaction = 4 [json_name = "defaction"]; void clear_defaction(); ::pg_query::DefElemAction defaction() const; void set_defaction(::pg_query::DefElemAction value); private: ::pg_query::DefElemAction _internal_defaction() const; void _internal_set_defaction(::pg_query::DefElemAction value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr defnamespace_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr defname_; ::pg_query::Node* arg_; int defaction_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeTblEntry final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTblEntry) */ { public: inline RangeTblEntry() : RangeTblEntry(nullptr) {} ~RangeTblEntry() override; explicit PROTOBUF_CONSTEXPR RangeTblEntry(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RangeTblEntry(const RangeTblEntry& from); RangeTblEntry(RangeTblEntry&& from) noexcept : RangeTblEntry() { *this = ::std::move(from); } inline RangeTblEntry& operator=(const RangeTblEntry& from) { CopyFrom(from); return *this; } inline RangeTblEntry& operator=(RangeTblEntry&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 207; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTblEntry* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeTblEntry* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RangeTblEntry& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RangeTblEntry& from) { RangeTblEntry::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeTblEntry* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeTblEntry"; } protected: explicit RangeTblEntry(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kJoinaliasvarsFieldNumber = 10, kJoinleftcolsFieldNumber = 11, kJoinrightcolsFieldNumber = 12, kFunctionsFieldNumber = 14, kValuesListsFieldNumber = 17, kColtypesFieldNumber = 21, kColtypmodsFieldNumber = 22, kColcollationsFieldNumber = 23, kSelectedColsFieldNumber = 33, kInsertedColsFieldNumber = 34, kUpdatedColsFieldNumber = 35, kExtraUpdatedColsFieldNumber = 36, kSecurityQualsFieldNumber = 37, kRelkindFieldNumber = 3, kCtenameFieldNumber = 18, kEnrnameFieldNumber = 24, kTablesampleFieldNumber = 5, kSubqueryFieldNumber = 6, kJoinUsingAliasFieldNumber = 13, kTablefuncFieldNumber = 16, kAliasFieldNumber = 26, kErefFieldNumber = 27, kRtekindFieldNumber = 1, kRelidFieldNumber = 2, kRellockmodeFieldNumber = 4, kJointypeFieldNumber = 8, kJoinmergedcolsFieldNumber = 9, kSecurityBarrierFieldNumber = 7, kFuncordinalityFieldNumber = 15, kSelfReferenceFieldNumber = 20, kLateralFieldNumber = 28, kEnrtuplesFieldNumber = 25, kCtelevelsupFieldNumber = 19, kInhFieldNumber = 29, kInFromClFieldNumber = 30, kRequiredPermsFieldNumber = 31, kCheckAsUserFieldNumber = 32, }; // repeated .pg_query.Node joinaliasvars = 10 [json_name = "joinaliasvars"]; int joinaliasvars_size() const; private: int _internal_joinaliasvars_size() const; public: void clear_joinaliasvars(); ::pg_query::Node* mutable_joinaliasvars(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_joinaliasvars(); private: const ::pg_query::Node& _internal_joinaliasvars(int index) const; ::pg_query::Node* _internal_add_joinaliasvars(); public: const ::pg_query::Node& joinaliasvars(int index) const; ::pg_query::Node* add_joinaliasvars(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& joinaliasvars() const; // repeated .pg_query.Node joinleftcols = 11 [json_name = "joinleftcols"]; int joinleftcols_size() const; private: int _internal_joinleftcols_size() const; public: void clear_joinleftcols(); ::pg_query::Node* mutable_joinleftcols(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_joinleftcols(); private: const ::pg_query::Node& _internal_joinleftcols(int index) const; ::pg_query::Node* _internal_add_joinleftcols(); public: const ::pg_query::Node& joinleftcols(int index) const; ::pg_query::Node* add_joinleftcols(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& joinleftcols() const; // repeated .pg_query.Node joinrightcols = 12 [json_name = "joinrightcols"]; int joinrightcols_size() const; private: int _internal_joinrightcols_size() const; public: void clear_joinrightcols(); ::pg_query::Node* mutable_joinrightcols(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_joinrightcols(); private: const ::pg_query::Node& _internal_joinrightcols(int index) const; ::pg_query::Node* _internal_add_joinrightcols(); public: const ::pg_query::Node& joinrightcols(int index) const; ::pg_query::Node* add_joinrightcols(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& joinrightcols() const; // repeated .pg_query.Node functions = 14 [json_name = "functions"]; int functions_size() const; private: int _internal_functions_size() const; public: void clear_functions(); ::pg_query::Node* mutable_functions(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_functions(); private: const ::pg_query::Node& _internal_functions(int index) const; ::pg_query::Node* _internal_add_functions(); public: const ::pg_query::Node& functions(int index) const; ::pg_query::Node* add_functions(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& functions() const; // repeated .pg_query.Node values_lists = 17 [json_name = "values_lists"]; int values_lists_size() const; private: int _internal_values_lists_size() const; public: void clear_values_lists(); ::pg_query::Node* mutable_values_lists(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_values_lists(); private: const ::pg_query::Node& _internal_values_lists(int index) const; ::pg_query::Node* _internal_add_values_lists(); public: const ::pg_query::Node& values_lists(int index) const; ::pg_query::Node* add_values_lists(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& values_lists() const; // repeated .pg_query.Node coltypes = 21 [json_name = "coltypes"]; int coltypes_size() const; private: int _internal_coltypes_size() const; public: void clear_coltypes(); ::pg_query::Node* mutable_coltypes(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_coltypes(); private: const ::pg_query::Node& _internal_coltypes(int index) const; ::pg_query::Node* _internal_add_coltypes(); public: const ::pg_query::Node& coltypes(int index) const; ::pg_query::Node* add_coltypes(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& coltypes() const; // repeated .pg_query.Node coltypmods = 22 [json_name = "coltypmods"]; int coltypmods_size() const; private: int _internal_coltypmods_size() const; public: void clear_coltypmods(); ::pg_query::Node* mutable_coltypmods(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_coltypmods(); private: const ::pg_query::Node& _internal_coltypmods(int index) const; ::pg_query::Node* _internal_add_coltypmods(); public: const ::pg_query::Node& coltypmods(int index) const; ::pg_query::Node* add_coltypmods(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& coltypmods() const; // repeated .pg_query.Node colcollations = 23 [json_name = "colcollations"]; int colcollations_size() const; private: int _internal_colcollations_size() const; public: void clear_colcollations(); ::pg_query::Node* mutable_colcollations(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_colcollations(); private: const ::pg_query::Node& _internal_colcollations(int index) const; ::pg_query::Node* _internal_add_colcollations(); public: const ::pg_query::Node& colcollations(int index) const; ::pg_query::Node* add_colcollations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& colcollations() const; // repeated uint64 selected_cols = 33 [json_name = "selectedCols"]; int selected_cols_size() const; private: int _internal_selected_cols_size() const; public: void clear_selected_cols(); private: uint64_t _internal_selected_cols(int index) const; const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& _internal_selected_cols() const; void _internal_add_selected_cols(uint64_t value); ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* _internal_mutable_selected_cols(); public: uint64_t selected_cols(int index) const; void set_selected_cols(int index, uint64_t value); void add_selected_cols(uint64_t value); const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& selected_cols() const; ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* mutable_selected_cols(); // repeated uint64 inserted_cols = 34 [json_name = "insertedCols"]; int inserted_cols_size() const; private: int _internal_inserted_cols_size() const; public: void clear_inserted_cols(); private: uint64_t _internal_inserted_cols(int index) const; const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& _internal_inserted_cols() const; void _internal_add_inserted_cols(uint64_t value); ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* _internal_mutable_inserted_cols(); public: uint64_t inserted_cols(int index) const; void set_inserted_cols(int index, uint64_t value); void add_inserted_cols(uint64_t value); const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& inserted_cols() const; ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* mutable_inserted_cols(); // repeated uint64 updated_cols = 35 [json_name = "updatedCols"]; int updated_cols_size() const; private: int _internal_updated_cols_size() const; public: void clear_updated_cols(); private: uint64_t _internal_updated_cols(int index) const; const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& _internal_updated_cols() const; void _internal_add_updated_cols(uint64_t value); ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* _internal_mutable_updated_cols(); public: uint64_t updated_cols(int index) const; void set_updated_cols(int index, uint64_t value); void add_updated_cols(uint64_t value); const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& updated_cols() const; ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* mutable_updated_cols(); // repeated uint64 extra_updated_cols = 36 [json_name = "extraUpdatedCols"]; int extra_updated_cols_size() const; private: int _internal_extra_updated_cols_size() const; public: void clear_extra_updated_cols(); private: uint64_t _internal_extra_updated_cols(int index) const; const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& _internal_extra_updated_cols() const; void _internal_add_extra_updated_cols(uint64_t value); ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* _internal_mutable_extra_updated_cols(); public: uint64_t extra_updated_cols(int index) const; void set_extra_updated_cols(int index, uint64_t value); void add_extra_updated_cols(uint64_t value); const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& extra_updated_cols() const; ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* mutable_extra_updated_cols(); // repeated .pg_query.Node security_quals = 37 [json_name = "securityQuals"]; int security_quals_size() const; private: int _internal_security_quals_size() const; public: void clear_security_quals(); ::pg_query::Node* mutable_security_quals(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_security_quals(); private: const ::pg_query::Node& _internal_security_quals(int index) const; ::pg_query::Node* _internal_add_security_quals(); public: const ::pg_query::Node& security_quals(int index) const; ::pg_query::Node* add_security_quals(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& security_quals() const; // string relkind = 3 [json_name = "relkind"]; void clear_relkind(); const std::string& relkind() const; template void set_relkind(ArgT0&& arg0, ArgT... args); std::string* mutable_relkind(); PROTOBUF_NODISCARD std::string* release_relkind(); void set_allocated_relkind(std::string* relkind); 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 = 18 [json_name = "ctename"]; void clear_ctename(); const std::string& ctename() const; template void set_ctename(ArgT0&& arg0, ArgT... args); std::string* mutable_ctename(); PROTOBUF_NODISCARD std::string* release_ctename(); void set_allocated_ctename(std::string* ctename); 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 = 24 [json_name = "enrname"]; void clear_enrname(); const std::string& enrname() const; template void set_enrname(ArgT0&& arg0, ArgT... args); std::string* mutable_enrname(); PROTOBUF_NODISCARD std::string* release_enrname(); void set_allocated_enrname(std::string* enrname); 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.TableSampleClause tablesample = 5 [json_name = "tablesample"]; bool has_tablesample() const; private: bool _internal_has_tablesample() const; public: void clear_tablesample(); const ::pg_query::TableSampleClause& tablesample() const; PROTOBUF_NODISCARD ::pg_query::TableSampleClause* release_tablesample(); ::pg_query::TableSampleClause* mutable_tablesample(); void set_allocated_tablesample(::pg_query::TableSampleClause* tablesample); private: const ::pg_query::TableSampleClause& _internal_tablesample() const; ::pg_query::TableSampleClause* _internal_mutable_tablesample(); public: void unsafe_arena_set_allocated_tablesample( ::pg_query::TableSampleClause* tablesample); ::pg_query::TableSampleClause* unsafe_arena_release_tablesample(); // .pg_query.Query subquery = 6 [json_name = "subquery"]; bool has_subquery() const; private: bool _internal_has_subquery() const; public: void clear_subquery(); const ::pg_query::Query& subquery() const; PROTOBUF_NODISCARD ::pg_query::Query* release_subquery(); ::pg_query::Query* mutable_subquery(); void set_allocated_subquery(::pg_query::Query* subquery); private: const ::pg_query::Query& _internal_subquery() const; ::pg_query::Query* _internal_mutable_subquery(); public: void unsafe_arena_set_allocated_subquery( ::pg_query::Query* subquery); ::pg_query::Query* unsafe_arena_release_subquery(); // .pg_query.Alias join_using_alias = 13 [json_name = "join_using_alias"]; bool has_join_using_alias() const; private: bool _internal_has_join_using_alias() const; public: 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* join_using_alias); private: const ::pg_query::Alias& _internal_join_using_alias() const; ::pg_query::Alias* _internal_mutable_join_using_alias(); public: void unsafe_arena_set_allocated_join_using_alias( ::pg_query::Alias* join_using_alias); ::pg_query::Alias* unsafe_arena_release_join_using_alias(); // .pg_query.TableFunc tablefunc = 16 [json_name = "tablefunc"]; bool has_tablefunc() const; private: bool _internal_has_tablefunc() const; public: 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* tablefunc); private: const ::pg_query::TableFunc& _internal_tablefunc() const; ::pg_query::TableFunc* _internal_mutable_tablefunc(); public: void unsafe_arena_set_allocated_tablefunc( ::pg_query::TableFunc* tablefunc); ::pg_query::TableFunc* unsafe_arena_release_tablefunc(); // .pg_query.Alias alias = 26 [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* alias); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: void unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias); ::pg_query::Alias* unsafe_arena_release_alias(); // .pg_query.Alias eref = 27 [json_name = "eref"]; bool has_eref() const; private: bool _internal_has_eref() const; public: 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* eref); private: const ::pg_query::Alias& _internal_eref() const; ::pg_query::Alias* _internal_mutable_eref(); public: void unsafe_arena_set_allocated_eref( ::pg_query::Alias* eref); ::pg_query::Alias* unsafe_arena_release_eref(); // .pg_query.RTEKind rtekind = 1 [json_name = "rtekind"]; void clear_rtekind(); ::pg_query::RTEKind rtekind() const; void set_rtekind(::pg_query::RTEKind value); private: ::pg_query::RTEKind _internal_rtekind() const; void _internal_set_rtekind(::pg_query::RTEKind value); public: // uint32 relid = 2 [json_name = "relid"]; void clear_relid(); 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 = 4 [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: // .pg_query.JoinType jointype = 8 [json_name = "jointype"]; void clear_jointype(); ::pg_query::JoinType jointype() const; void set_jointype(::pg_query::JoinType value); private: ::pg_query::JoinType _internal_jointype() const; void _internal_set_jointype(::pg_query::JoinType value); public: // int32 joinmergedcols = 9 [json_name = "joinmergedcols"]; void clear_joinmergedcols(); 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 security_barrier = 7 [json_name = "security_barrier"]; void clear_security_barrier(); bool security_barrier() const; void set_security_barrier(bool value); private: bool _internal_security_barrier() const; void _internal_set_security_barrier(bool value); public: // bool funcordinality = 15 [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 = 20 [json_name = "self_reference"]; void clear_self_reference(); bool self_reference() const; void set_self_reference(bool value); private: bool _internal_self_reference() const; void _internal_set_self_reference(bool value); public: // bool lateral = 28 [json_name = "lateral"]; void clear_lateral(); bool lateral() const; void set_lateral(bool value); private: bool _internal_lateral() const; void _internal_set_lateral(bool value); public: // double enrtuples = 25 [json_name = "enrtuples"]; void clear_enrtuples(); double enrtuples() const; void set_enrtuples(double value); private: double _internal_enrtuples() const; void _internal_set_enrtuples(double value); public: // uint32 ctelevelsup = 19 [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: // bool inh = 29 [json_name = "inh"]; void clear_inh(); bool inh() const; void set_inh(bool value); private: bool _internal_inh() const; void _internal_set_inh(bool value); public: // bool in_from_cl = 30 [json_name = "inFromCl"]; void clear_in_from_cl(); bool in_from_cl() const; void set_in_from_cl(bool value); private: bool _internal_in_from_cl() const; void _internal_set_in_from_cl(bool value); public: // uint32 required_perms = 31 [json_name = "requiredPerms"]; void clear_required_perms(); uint32_t required_perms() const; void set_required_perms(uint32_t value); private: uint32_t _internal_required_perms() const; void _internal_set_required_perms(uint32_t value); public: // uint32 check_as_user = 32 [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.RangeTblEntry) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > joinaliasvars_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > joinleftcols_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > joinrightcols_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > functions_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > values_lists_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coltypes_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coltypmods_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colcollations_; ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t > selected_cols_; mutable std::atomic _selected_cols_cached_byte_size_; ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t > inserted_cols_; mutable std::atomic _inserted_cols_cached_byte_size_; ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t > updated_cols_; mutable std::atomic _updated_cols_cached_byte_size_; ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t > extra_updated_cols_; mutable std::atomic _extra_updated_cols_cached_byte_size_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > security_quals_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr relkind_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr ctename_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr enrname_; ::pg_query::TableSampleClause* tablesample_; ::pg_query::Query* subquery_; ::pg_query::Alias* join_using_alias_; ::pg_query::TableFunc* tablefunc_; ::pg_query::Alias* alias_; ::pg_query::Alias* eref_; int rtekind_; uint32_t relid_; int32_t rellockmode_; int jointype_; int32_t joinmergedcols_; bool security_barrier_; bool funcordinality_; bool self_reference_; bool lateral_; double enrtuples_; uint32_t ctelevelsup_; bool inh_; bool in_from_cl_; uint32_t required_perms_; uint32_t check_as_user_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeTblFunction final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTblFunction) */ { public: inline RangeTblFunction() : RangeTblFunction(nullptr) {} ~RangeTblFunction() override; explicit PROTOBUF_CONSTEXPR RangeTblFunction(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RangeTblFunction(const RangeTblFunction& from); RangeTblFunction(RangeTblFunction&& from) noexcept : RangeTblFunction() { *this = ::std::move(from); } inline RangeTblFunction& operator=(const RangeTblFunction& from) { CopyFrom(from); return *this; } inline RangeTblFunction& operator=(RangeTblFunction&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 208; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTblFunction* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeTblFunction* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RangeTblFunction& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RangeTblFunction& from) { RangeTblFunction::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeTblFunction* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeTblFunction"; } protected: explicit RangeTblFunction(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_funccolnames(); private: const ::pg_query::Node& _internal_funccolnames(int index) const; ::pg_query::Node* _internal_add_funccolnames(); public: const ::pg_query::Node& funccolnames(int index) const; ::pg_query::Node* add_funccolnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& funccolnames() const; // repeated .pg_query.Node funccoltypes = 4 [json_name = "funccoltypes"]; int funccoltypes_size() const; private: int _internal_funccoltypes_size() const; public: void clear_funccoltypes(); ::pg_query::Node* mutable_funccoltypes(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_funccoltypes(); private: const ::pg_query::Node& _internal_funccoltypes(int index) const; ::pg_query::Node* _internal_add_funccoltypes(); public: const ::pg_query::Node& funccoltypes(int index) const; ::pg_query::Node* add_funccoltypes(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& funccoltypes() const; // repeated .pg_query.Node funccoltypmods = 5 [json_name = "funccoltypmods"]; int funccoltypmods_size() const; private: int _internal_funccoltypmods_size() const; public: void clear_funccoltypmods(); ::pg_query::Node* mutable_funccoltypmods(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_funccoltypmods(); private: const ::pg_query::Node& _internal_funccoltypmods(int index) const; ::pg_query::Node* _internal_add_funccoltypmods(); public: const ::pg_query::Node& funccoltypmods(int index) const; ::pg_query::Node* add_funccoltypmods(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& funccoltypmods() const; // repeated .pg_query.Node funccolcollations = 6 [json_name = "funccolcollations"]; int funccolcollations_size() const; private: int _internal_funccolcollations_size() const; public: void clear_funccolcollations(); ::pg_query::Node* mutable_funccolcollations(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_funccolcollations(); private: const ::pg_query::Node& _internal_funccolcollations(int index) const; ::pg_query::Node* _internal_add_funccolcollations(); public: const ::pg_query::Node& funccolcollations(int index) const; ::pg_query::Node* add_funccolcollations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& funccolcollations() const; // repeated uint64 funcparams = 7 [json_name = "funcparams"]; int funcparams_size() const; private: int _internal_funcparams_size() const; public: void clear_funcparams(); private: uint64_t _internal_funcparams(int index) const; const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& _internal_funcparams() const; void _internal_add_funcparams(uint64_t value); ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* _internal_mutable_funcparams(); public: uint64_t funcparams(int index) const; void set_funcparams(int index, uint64_t value); void add_funcparams(uint64_t value); const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& funcparams() const; ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* mutable_funcparams(); // .pg_query.Node funcexpr = 1 [json_name = "funcexpr"]; bool has_funcexpr() const; private: bool _internal_has_funcexpr() const; public: void clear_funcexpr(); const ::pg_query::Node& funcexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_funcexpr(); ::pg_query::Node* mutable_funcexpr(); void set_allocated_funcexpr(::pg_query::Node* funcexpr); private: const ::pg_query::Node& _internal_funcexpr() const; ::pg_query::Node* _internal_mutable_funcexpr(); public: void unsafe_arena_set_allocated_funcexpr( ::pg_query::Node* funcexpr); ::pg_query::Node* unsafe_arena_release_funcexpr(); // int32 funccolcount = 2 [json_name = "funccolcount"]; void clear_funccolcount(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funccolnames_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funccoltypes_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funccoltypmods_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funccolcollations_; ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t > funcparams_; mutable std::atomic _funcparams_cached_byte_size_; ::pg_query::Node* funcexpr_; int32_t funccolcount_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TableSampleClause final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TableSampleClause) */ { public: inline TableSampleClause() : TableSampleClause(nullptr) {} ~TableSampleClause() override; explicit PROTOBUF_CONSTEXPR TableSampleClause(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); TableSampleClause(const TableSampleClause& from); TableSampleClause(TableSampleClause&& from) noexcept : TableSampleClause() { *this = ::std::move(from); } inline TableSampleClause& operator=(const TableSampleClause& from) { CopyFrom(from); return *this; } inline TableSampleClause& operator=(TableSampleClause&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 209; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TableSampleClause* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TableSampleClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const TableSampleClause& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const TableSampleClause& from) { TableSampleClause::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TableSampleClause* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TableSampleClause"; } protected: explicit TableSampleClause(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node repeatable = 3 [json_name = "repeatable"]; bool has_repeatable() const; private: bool _internal_has_repeatable() const; public: void clear_repeatable(); const ::pg_query::Node& repeatable() const; PROTOBUF_NODISCARD ::pg_query::Node* release_repeatable(); ::pg_query::Node* mutable_repeatable(); void set_allocated_repeatable(::pg_query::Node* repeatable); private: const ::pg_query::Node& _internal_repeatable() const; ::pg_query::Node* _internal_mutable_repeatable(); public: void unsafe_arena_set_allocated_repeatable( ::pg_query::Node* repeatable); ::pg_query::Node* unsafe_arena_release_repeatable(); // uint32 tsmhandler = 1 [json_name = "tsmhandler"]; void clear_tsmhandler(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* repeatable_; uint32_t tsmhandler_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class WithCheckOption final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.WithCheckOption) */ { public: inline WithCheckOption() : WithCheckOption(nullptr) {} ~WithCheckOption() override; explicit PROTOBUF_CONSTEXPR WithCheckOption(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); WithCheckOption(const WithCheckOption& from); WithCheckOption(WithCheckOption&& from) noexcept : WithCheckOption() { *this = ::std::move(from); } inline WithCheckOption& operator=(const WithCheckOption& from) { CopyFrom(from); return *this; } inline WithCheckOption& operator=(WithCheckOption&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 210; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(WithCheckOption* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- WithCheckOption* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const WithCheckOption& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const WithCheckOption& from) { WithCheckOption::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(WithCheckOption* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.WithCheckOption"; } protected: explicit WithCheckOption(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_relname(); PROTOBUF_NODISCARD std::string* release_relname(); void set_allocated_relname(std::string* relname); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_polname(); PROTOBUF_NODISCARD std::string* release_polname(); void set_allocated_polname(std::string* polname); 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; private: bool _internal_has_qual() const; public: 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* qual); private: const ::pg_query::Node& _internal_qual() const; ::pg_query::Node* _internal_mutable_qual(); public: void unsafe_arena_set_allocated_qual( ::pg_query::Node* qual); ::pg_query::Node* unsafe_arena_release_qual(); // .pg_query.WCOKind kind = 1 [json_name = "kind"]; void clear_kind(); ::pg_query::WCOKind kind() const; void set_kind(::pg_query::WCOKind value); private: ::pg_query::WCOKind _internal_kind() const; void _internal_set_kind(::pg_query::WCOKind value); public: // bool cascaded = 5 [json_name = "cascaded"]; void clear_cascaded(); bool cascaded() const; void set_cascaded(bool value); private: bool _internal_cascaded() const; void _internal_set_cascaded(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.WithCheckOption) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr relname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr polname_; ::pg_query::Node* qual_; int kind_; bool cascaded_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SortGroupClause final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SortGroupClause) */ { public: inline SortGroupClause() : SortGroupClause(nullptr) {} ~SortGroupClause() override; explicit PROTOBUF_CONSTEXPR SortGroupClause(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); SortGroupClause(const SortGroupClause& from); SortGroupClause(SortGroupClause&& from) noexcept : SortGroupClause() { *this = ::std::move(from); } inline SortGroupClause& operator=(const SortGroupClause& from) { CopyFrom(from); return *this; } inline SortGroupClause& operator=(SortGroupClause&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 211; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SortGroupClause* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SortGroupClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const SortGroupClause& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const SortGroupClause& from) { SortGroupClause::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SortGroupClause* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SortGroupClause"; } protected: explicit SortGroupClause(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { uint32_t tle_sort_group_ref_; uint32_t eqop_; uint32_t sortop_; bool nulls_first_; bool hashable_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class GroupingSet final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.GroupingSet) */ { public: inline GroupingSet() : GroupingSet(nullptr) {} ~GroupingSet() override; explicit PROTOBUF_CONSTEXPR GroupingSet(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); GroupingSet(const GroupingSet& from); GroupingSet(GroupingSet&& from) noexcept : GroupingSet() { *this = ::std::move(from); } inline GroupingSet& operator=(const GroupingSet& from) { CopyFrom(from); return *this; } inline GroupingSet& operator=(GroupingSet&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 212; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(GroupingSet* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- GroupingSet* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const GroupingSet& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const GroupingSet& from) { GroupingSet::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(GroupingSet* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.GroupingSet"; } protected: explicit GroupingSet(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_content(); private: const ::pg_query::Node& _internal_content(int index) const; ::pg_query::Node* _internal_add_content(); public: const ::pg_query::Node& content(int index) const; ::pg_query::Node* add_content(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& content() const; // .pg_query.GroupingSetKind kind = 1 [json_name = "kind"]; void clear_kind(); ::pg_query::GroupingSetKind kind() const; void set_kind(::pg_query::GroupingSetKind value); private: ::pg_query::GroupingSetKind _internal_kind() const; void _internal_set_kind(::pg_query::GroupingSetKind value); public: // int32 location = 3 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > content_; int kind_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class WindowClause final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.WindowClause) */ { public: inline WindowClause() : WindowClause(nullptr) {} ~WindowClause() override; explicit PROTOBUF_CONSTEXPR WindowClause(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); WindowClause(const WindowClause& from); WindowClause(WindowClause&& from) noexcept : WindowClause() { *this = ::std::move(from); } inline WindowClause& operator=(const WindowClause& from) { CopyFrom(from); return *this; } inline WindowClause& operator=(WindowClause&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 213; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(WindowClause* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- WindowClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const WindowClause& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const WindowClause& from) { WindowClause::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(WindowClause* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.WindowClause"; } protected: explicit WindowClause(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kPartitionClauseFieldNumber = 3, kOrderClauseFieldNumber = 4, kRunConditionFieldNumber = 8, kNameFieldNumber = 1, kRefnameFieldNumber = 2, kStartOffsetFieldNumber = 6, kEndOffsetFieldNumber = 7, kFrameOptionsFieldNumber = 5, kStartInRangeFuncFieldNumber = 9, kEndInRangeFuncFieldNumber = 10, kInRangeCollFieldNumber = 11, kInRangeAscFieldNumber = 12, kInRangeNullsFirstFieldNumber = 13, kCopiedOrderFieldNumber = 15, kWinrefFieldNumber = 14, }; // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; int partition_clause_size() const; private: int _internal_partition_clause_size() const; public: void clear_partition_clause(); ::pg_query::Node* mutable_partition_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_partition_clause(); private: const ::pg_query::Node& _internal_partition_clause(int index) const; ::pg_query::Node* _internal_add_partition_clause(); public: const ::pg_query::Node& partition_clause(int index) const; ::pg_query::Node* add_partition_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& partition_clause() const; // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; int order_clause_size() const; private: int _internal_order_clause_size() const; public: void clear_order_clause(); ::pg_query::Node* mutable_order_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_order_clause(); private: const ::pg_query::Node& _internal_order_clause(int index) const; ::pg_query::Node* _internal_add_order_clause(); public: const ::pg_query::Node& order_clause(int index) const; ::pg_query::Node* add_order_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& order_clause() const; // 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_run_condition(); private: const ::pg_query::Node& _internal_run_condition(int index) const; ::pg_query::Node* _internal_add_run_condition(); public: const ::pg_query::Node& run_condition(int index) const; ::pg_query::Node* add_run_condition(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& run_condition() const; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; template void set_name(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_refname(); PROTOBUF_NODISCARD std::string* release_refname(); void set_allocated_refname(std::string* refname); 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; private: bool _internal_has_start_offset() const; public: 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* start_offset); private: const ::pg_query::Node& _internal_start_offset() const; ::pg_query::Node* _internal_mutable_start_offset(); public: void unsafe_arena_set_allocated_start_offset( ::pg_query::Node* start_offset); ::pg_query::Node* unsafe_arena_release_start_offset(); // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; bool has_end_offset() const; private: bool _internal_has_end_offset() const; public: void clear_end_offset(); const ::pg_query::Node& end_offset() const; PROTOBUF_NODISCARD ::pg_query::Node* release_end_offset(); ::pg_query::Node* mutable_end_offset(); void set_allocated_end_offset(::pg_query::Node* end_offset); private: const ::pg_query::Node& _internal_end_offset() const; ::pg_query::Node* _internal_mutable_end_offset(); public: void unsafe_arena_set_allocated_end_offset( ::pg_query::Node* end_offset); ::pg_query::Node* unsafe_arena_release_end_offset(); // int32 frame_options = 5 [json_name = "frameOptions"]; void clear_frame_options(); 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 = 9 [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 = 10 [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 = 11 [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 = 12 [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 = 13 [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 = 15 [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 = 14 [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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > partition_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > order_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > run_condition_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::PROTOBUF_NAMESPACE_ID::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_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ObjectWithArgs final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ObjectWithArgs) */ { public: inline ObjectWithArgs() : ObjectWithArgs(nullptr) {} ~ObjectWithArgs() override; explicit PROTOBUF_CONSTEXPR ObjectWithArgs(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ObjectWithArgs(const ObjectWithArgs& from); ObjectWithArgs(ObjectWithArgs&& from) noexcept : ObjectWithArgs() { *this = ::std::move(from); } inline ObjectWithArgs& operator=(const ObjectWithArgs& from) { CopyFrom(from); return *this; } inline ObjectWithArgs& operator=(ObjectWithArgs&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 214; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ObjectWithArgs* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ObjectWithArgs* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ObjectWithArgs& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ObjectWithArgs& from) { ObjectWithArgs::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ObjectWithArgs* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ObjectWithArgs"; } protected: explicit ObjectWithArgs(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_objname(); private: const ::pg_query::Node& _internal_objname(int index) const; ::pg_query::Node* _internal_add_objname(); public: const ::pg_query::Node& objname(int index) const; ::pg_query::Node* add_objname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& objname() const; // repeated .pg_query.Node objargs = 2 [json_name = "objargs"]; int objargs_size() const; private: int _internal_objargs_size() const; public: void clear_objargs(); ::pg_query::Node* mutable_objargs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_objargs(); private: const ::pg_query::Node& _internal_objargs(int index) const; ::pg_query::Node* _internal_add_objargs(); public: const ::pg_query::Node& objargs(int index) const; ::pg_query::Node* add_objargs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& objargs() const; // 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_objfuncargs(); private: const ::pg_query::Node& _internal_objfuncargs(int index) const; ::pg_query::Node* _internal_add_objfuncargs(); public: const ::pg_query::Node& objfuncargs(int index) const; ::pg_query::Node* add_objfuncargs(); const ::PROTOBUF_NAMESPACE_ID::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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > objname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > objargs_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > objfuncargs_; bool args_unspecified_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AccessPriv final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AccessPriv) */ { public: inline AccessPriv() : AccessPriv(nullptr) {} ~AccessPriv() override; explicit PROTOBUF_CONSTEXPR AccessPriv(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); AccessPriv(const AccessPriv& from); AccessPriv(AccessPriv&& from) noexcept : AccessPriv() { *this = ::std::move(from); } inline AccessPriv& operator=(const AccessPriv& from) { CopyFrom(from); return *this; } inline AccessPriv& operator=(AccessPriv&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 215; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AccessPriv* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AccessPriv* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const AccessPriv& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const AccessPriv& from) { AccessPriv::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AccessPriv* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AccessPriv"; } protected: explicit AccessPriv(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_cols(); private: const ::pg_query::Node& _internal_cols(int index) const; ::pg_query::Node* _internal_add_cols(); public: const ::pg_query::Node& cols(int index) const; ::pg_query::Node* add_cols(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& cols() const; // string priv_name = 1 [json_name = "priv_name"]; void clear_priv_name(); const std::string& priv_name() const; template void set_priv_name(ArgT0&& arg0, ArgT... args); std::string* mutable_priv_name(); PROTOBUF_NODISCARD std::string* release_priv_name(); void set_allocated_priv_name(std::string* priv_name); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cols_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr priv_name_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateOpClassItem final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateOpClassItem) */ { public: inline CreateOpClassItem() : CreateOpClassItem(nullptr) {} ~CreateOpClassItem() override; explicit PROTOBUF_CONSTEXPR CreateOpClassItem(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CreateOpClassItem(const CreateOpClassItem& from); CreateOpClassItem(CreateOpClassItem&& from) noexcept : CreateOpClassItem() { *this = ::std::move(from); } inline CreateOpClassItem& operator=(const CreateOpClassItem& from) { CopyFrom(from); return *this; } inline CreateOpClassItem& operator=(CreateOpClassItem&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 216; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateOpClassItem* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateOpClassItem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CreateOpClassItem& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CreateOpClassItem& from) { CreateOpClassItem::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateOpClassItem* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateOpClassItem"; } protected: explicit CreateOpClassItem(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_order_family(); private: const ::pg_query::Node& _internal_order_family(int index) const; ::pg_query::Node* _internal_add_order_family(); public: const ::pg_query::Node& order_family(int index) const; ::pg_query::Node* add_order_family(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& order_family() const; // repeated .pg_query.Node class_args = 5 [json_name = "class_args"]; int class_args_size() const; private: int _internal_class_args_size() const; public: void clear_class_args(); ::pg_query::Node* mutable_class_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_class_args(); private: const ::pg_query::Node& _internal_class_args(int index) const; ::pg_query::Node* _internal_add_class_args(); public: const ::pg_query::Node& class_args(int index) const; ::pg_query::Node* add_class_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& class_args() const; // .pg_query.ObjectWithArgs name = 2 [json_name = "name"]; bool has_name() const; private: bool _internal_has_name() const; public: void clear_name(); const ::pg_query::ObjectWithArgs& name() const; PROTOBUF_NODISCARD ::pg_query::ObjectWithArgs* release_name(); ::pg_query::ObjectWithArgs* mutable_name(); void set_allocated_name(::pg_query::ObjectWithArgs* name); private: const ::pg_query::ObjectWithArgs& _internal_name() const; ::pg_query::ObjectWithArgs* _internal_mutable_name(); public: void unsafe_arena_set_allocated_name( ::pg_query::ObjectWithArgs* name); ::pg_query::ObjectWithArgs* unsafe_arena_release_name(); // .pg_query.TypeName storedtype = 6 [json_name = "storedtype"]; bool has_storedtype() const; private: bool _internal_has_storedtype() const; public: void clear_storedtype(); const ::pg_query::TypeName& storedtype() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_storedtype(); ::pg_query::TypeName* mutable_storedtype(); void set_allocated_storedtype(::pg_query::TypeName* storedtype); private: const ::pg_query::TypeName& _internal_storedtype() const; ::pg_query::TypeName* _internal_mutable_storedtype(); public: void unsafe_arena_set_allocated_storedtype( ::pg_query::TypeName* storedtype); ::pg_query::TypeName* unsafe_arena_release_storedtype(); // int32 itemtype = 1 [json_name = "itemtype"]; void clear_itemtype(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > order_family_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > class_args_; ::pg_query::ObjectWithArgs* name_; ::pg_query::TypeName* storedtype_; int32_t itemtype_; int32_t number_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TableLikeClause final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TableLikeClause) */ { public: inline TableLikeClause() : TableLikeClause(nullptr) {} ~TableLikeClause() override; explicit PROTOBUF_CONSTEXPR TableLikeClause(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); TableLikeClause(const TableLikeClause& from); TableLikeClause(TableLikeClause&& from) noexcept : TableLikeClause() { *this = ::std::move(from); } inline TableLikeClause& operator=(const TableLikeClause& from) { CopyFrom(from); return *this; } inline TableLikeClause& operator=(TableLikeClause&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 217; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TableLikeClause* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TableLikeClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const TableLikeClause& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const TableLikeClause& from) { TableLikeClause::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TableLikeClause* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TableLikeClause"; } protected: explicit TableLikeClause(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_relation() const; public: 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* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // uint32 options = 2 [json_name = "options"]; void clear_options(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::RangeVar* relation_; uint32_t options_; uint32_t relation_oid_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class FunctionParameter final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FunctionParameter) */ { public: inline FunctionParameter() : FunctionParameter(nullptr) {} ~FunctionParameter() override; explicit PROTOBUF_CONSTEXPR FunctionParameter(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); FunctionParameter(const FunctionParameter& from); FunctionParameter(FunctionParameter&& from) noexcept : FunctionParameter() { *this = ::std::move(from); } inline FunctionParameter& operator=(const FunctionParameter& from) { CopyFrom(from); return *this; } inline FunctionParameter& operator=(FunctionParameter&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 218; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FunctionParameter* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- FunctionParameter* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const FunctionParameter& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const FunctionParameter& from) { FunctionParameter::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(FunctionParameter* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.FunctionParameter"; } protected: explicit FunctionParameter(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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; private: bool _internal_has_arg_type() const; public: 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* arg_type); private: const ::pg_query::TypeName& _internal_arg_type() const; ::pg_query::TypeName* _internal_mutable_arg_type(); public: void unsafe_arena_set_allocated_arg_type( ::pg_query::TypeName* arg_type); ::pg_query::TypeName* unsafe_arena_release_arg_type(); // .pg_query.Node defexpr = 4 [json_name = "defexpr"]; bool has_defexpr() const; private: bool _internal_has_defexpr() const; public: void clear_defexpr(); const ::pg_query::Node& defexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_defexpr(); ::pg_query::Node* mutable_defexpr(); void set_allocated_defexpr(::pg_query::Node* defexpr); private: const ::pg_query::Node& _internal_defexpr() const; ::pg_query::Node* _internal_mutable_defexpr(); public: void unsafe_arena_set_allocated_defexpr( ::pg_query::Node* defexpr); ::pg_query::Node* unsafe_arena_release_defexpr(); // .pg_query.FunctionParameterMode mode = 3 [json_name = "mode"]; void clear_mode(); ::pg_query::FunctionParameterMode mode() const; void set_mode(::pg_query::FunctionParameterMode value); private: ::pg_query::FunctionParameterMode _internal_mode() const; void _internal_set_mode(::pg_query::FunctionParameterMode value); public: // @@protoc_insertion_point(class_scope:pg_query.FunctionParameter) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::TypeName* arg_type_; ::pg_query::Node* defexpr_; int mode_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class LockingClause final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.LockingClause) */ { public: inline LockingClause() : LockingClause(nullptr) {} ~LockingClause() override; explicit PROTOBUF_CONSTEXPR LockingClause(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); LockingClause(const LockingClause& from); LockingClause(LockingClause&& from) noexcept : LockingClause() { *this = ::std::move(from); } inline LockingClause& operator=(const LockingClause& from) { CopyFrom(from); return *this; } inline LockingClause& operator=(LockingClause&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 219; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(LockingClause* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- LockingClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const LockingClause& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const LockingClause& from) { LockingClause::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(LockingClause* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.LockingClause"; } protected: explicit LockingClause(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_locked_rels(); private: const ::pg_query::Node& _internal_locked_rels(int index) const; ::pg_query::Node* _internal_add_locked_rels(); public: const ::pg_query::Node& locked_rels(int index) const; ::pg_query::Node* add_locked_rels(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& locked_rels() const; // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; void clear_strength(); ::pg_query::LockClauseStrength strength() const; void set_strength(::pg_query::LockClauseStrength value); private: ::pg_query::LockClauseStrength _internal_strength() const; void _internal_set_strength(::pg_query::LockClauseStrength value); public: // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; void clear_wait_policy(); ::pg_query::LockWaitPolicy wait_policy() const; void set_wait_policy(::pg_query::LockWaitPolicy value); private: ::pg_query::LockWaitPolicy _internal_wait_policy() const; void _internal_set_wait_policy(::pg_query::LockWaitPolicy value); public: // @@protoc_insertion_point(class_scope:pg_query.LockingClause) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > locked_rels_; int strength_; int wait_policy_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RowMarkClause final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RowMarkClause) */ { public: inline RowMarkClause() : RowMarkClause(nullptr) {} ~RowMarkClause() override; explicit PROTOBUF_CONSTEXPR RowMarkClause(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RowMarkClause(const RowMarkClause& from); RowMarkClause(RowMarkClause&& from) noexcept : RowMarkClause() { *this = ::std::move(from); } inline RowMarkClause& operator=(const RowMarkClause& from) { CopyFrom(from); return *this; } inline RowMarkClause& operator=(RowMarkClause&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 220; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RowMarkClause* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RowMarkClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RowMarkClause& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RowMarkClause& from) { RowMarkClause::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RowMarkClause* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RowMarkClause"; } protected: explicit RowMarkClause(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { uint32_t rti_; int strength_; int wait_policy_; bool pushed_down_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class XmlSerialize final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.XmlSerialize) */ { public: inline XmlSerialize() : XmlSerialize(nullptr) {} ~XmlSerialize() override; explicit PROTOBUF_CONSTEXPR XmlSerialize(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); XmlSerialize(const XmlSerialize& from); XmlSerialize(XmlSerialize&& from) noexcept : XmlSerialize() { *this = ::std::move(from); } inline XmlSerialize& operator=(const XmlSerialize& from) { CopyFrom(from); return *this; } inline XmlSerialize& operator=(XmlSerialize&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 221; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(XmlSerialize* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- XmlSerialize* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const XmlSerialize& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const XmlSerialize& from) { XmlSerialize::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(XmlSerialize* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.XmlSerialize"; } protected: explicit XmlSerialize(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kExprFieldNumber = 2, kTypeNameFieldNumber = 3, kXmloptionFieldNumber = 1, kLocationFieldNumber = 4, }; // .pg_query.Node expr = 2 [json_name = "expr"]; bool has_expr() const; private: bool _internal_has_expr() const; public: void clear_expr(); const ::pg_query::Node& expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* expr); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: void unsafe_arena_set_allocated_expr( ::pg_query::Node* expr); ::pg_query::Node* unsafe_arena_release_expr(); // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; bool has_type_name() const; private: bool _internal_has_type_name() const; public: void clear_type_name(); const ::pg_query::TypeName& type_name() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* type_name); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: void unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name); ::pg_query::TypeName* unsafe_arena_release_type_name(); // .pg_query.XmlOptionType xmloption = 1 [json_name = "xmloption"]; void clear_xmloption(); ::pg_query::XmlOptionType xmloption() const; void set_xmloption(::pg_query::XmlOptionType value); private: ::pg_query::XmlOptionType _internal_xmloption() const; void _internal_set_xmloption(::pg_query::XmlOptionType value); public: // int32 location = 4 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* expr_; ::pg_query::TypeName* type_name_; int xmloption_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class WithClause final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.WithClause) */ { public: inline WithClause() : WithClause(nullptr) {} ~WithClause() override; explicit PROTOBUF_CONSTEXPR WithClause(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); WithClause(const WithClause& from); WithClause(WithClause&& from) noexcept : WithClause() { *this = ::std::move(from); } inline WithClause& operator=(const WithClause& from) { CopyFrom(from); return *this; } inline WithClause& operator=(WithClause&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 222; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(WithClause* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- WithClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const WithClause& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const WithClause& from) { WithClause::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(WithClause* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.WithClause"; } protected: explicit WithClause(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_ctes(); private: const ::pg_query::Node& _internal_ctes(int index) const; ::pg_query::Node* _internal_add_ctes(); public: const ::pg_query::Node& ctes(int index) const; ::pg_query::Node* add_ctes(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ctes() const; // bool recursive = 2 [json_name = "recursive"]; void clear_recursive(); bool recursive() const; void set_recursive(bool value); private: bool _internal_recursive() const; void _internal_set_recursive(bool value); public: // int32 location = 3 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ctes_; bool recursive_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class InferClause final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.InferClause) */ { public: inline InferClause() : InferClause(nullptr) {} ~InferClause() override; explicit PROTOBUF_CONSTEXPR InferClause(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); InferClause(const InferClause& from); InferClause(InferClause&& from) noexcept : InferClause() { *this = ::std::move(from); } inline InferClause& operator=(const InferClause& from) { CopyFrom(from); return *this; } inline InferClause& operator=(InferClause&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 223; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(InferClause* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- InferClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const InferClause& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const InferClause& from) { InferClause::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(InferClause* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.InferClause"; } protected: explicit InferClause(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_index_elems(); private: const ::pg_query::Node& _internal_index_elems(int index) const; ::pg_query::Node* _internal_add_index_elems(); public: const ::pg_query::Node& index_elems(int index) const; ::pg_query::Node* add_index_elems(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& index_elems() const; // string conname = 3 [json_name = "conname"]; void clear_conname(); const std::string& conname() const; template void set_conname(ArgT0&& arg0, ArgT... args); std::string* mutable_conname(); PROTOBUF_NODISCARD std::string* release_conname(); void set_allocated_conname(std::string* conname); 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; private: bool _internal_has_where_clause() const; public: 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* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // int32 location = 4 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > index_elems_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conname_; ::pg_query::Node* where_clause_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class OnConflictClause final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.OnConflictClause) */ { public: inline OnConflictClause() : OnConflictClause(nullptr) {} ~OnConflictClause() override; explicit PROTOBUF_CONSTEXPR OnConflictClause(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); OnConflictClause(const OnConflictClause& from); OnConflictClause(OnConflictClause&& from) noexcept : OnConflictClause() { *this = ::std::move(from); } inline OnConflictClause& operator=(const OnConflictClause& from) { CopyFrom(from); return *this; } inline OnConflictClause& operator=(OnConflictClause&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 224; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(OnConflictClause* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- OnConflictClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const OnConflictClause& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const OnConflictClause& from) { OnConflictClause::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(OnConflictClause* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.OnConflictClause"; } protected: explicit OnConflictClause(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_target_list(); private: const ::pg_query::Node& _internal_target_list(int index) const; ::pg_query::Node* _internal_add_target_list(); public: const ::pg_query::Node& target_list(int index) const; ::pg_query::Node* add_target_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& target_list() const; // .pg_query.InferClause infer = 2 [json_name = "infer"]; bool has_infer() const; private: bool _internal_has_infer() const; public: void clear_infer(); const ::pg_query::InferClause& infer() const; PROTOBUF_NODISCARD ::pg_query::InferClause* release_infer(); ::pg_query::InferClause* mutable_infer(); void set_allocated_infer(::pg_query::InferClause* infer); private: const ::pg_query::InferClause& _internal_infer() const; ::pg_query::InferClause* _internal_mutable_infer(); public: void unsafe_arena_set_allocated_infer( ::pg_query::InferClause* infer); ::pg_query::InferClause* unsafe_arena_release_infer(); // .pg_query.Node where_clause = 4 [json_name = "whereClause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // .pg_query.OnConflictAction action = 1 [json_name = "action"]; void clear_action(); ::pg_query::OnConflictAction action() const; void set_action(::pg_query::OnConflictAction value); private: ::pg_query::OnConflictAction _internal_action() const; void _internal_set_action(::pg_query::OnConflictAction value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > target_list_; ::pg_query::InferClause* infer_; ::pg_query::Node* where_clause_; int action_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CTESearchClause final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CTESearchClause) */ { public: inline CTESearchClause() : CTESearchClause(nullptr) {} ~CTESearchClause() override; explicit PROTOBUF_CONSTEXPR CTESearchClause(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CTESearchClause(const CTESearchClause& 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 (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 225; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CTESearchClause* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CTESearchClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CTESearchClause& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CTESearchClause& from) { CTESearchClause::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CTESearchClause* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CTESearchClause"; } protected: explicit CTESearchClause(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_search_col_list(); private: const ::pg_query::Node& _internal_search_col_list(int index) const; ::pg_query::Node* _internal_add_search_col_list(); public: const ::pg_query::Node& search_col_list(int index) const; ::pg_query::Node* add_search_col_list(); const ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_search_seq_column(); PROTOBUF_NODISCARD std::string* release_search_seq_column(); void set_allocated_search_seq_column(std::string* search_seq_column); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > search_col_list_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr search_seq_column_; bool search_breadth_first_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CTECycleClause final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CTECycleClause) */ { public: inline CTECycleClause() : CTECycleClause(nullptr) {} ~CTECycleClause() override; explicit PROTOBUF_CONSTEXPR CTECycleClause(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CTECycleClause(const CTECycleClause& 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 (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 226; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CTECycleClause* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CTECycleClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CTECycleClause& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CTECycleClause& from) { CTECycleClause::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CTECycleClause* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CTECycleClause"; } protected: explicit CTECycleClause(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_cycle_col_list(); private: const ::pg_query::Node& _internal_cycle_col_list(int index) const; ::pg_query::Node* _internal_add_cycle_col_list(); public: const ::pg_query::Node& cycle_col_list(int index) const; ::pg_query::Node* add_cycle_col_list(); const ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_cycle_mark_column(); PROTOBUF_NODISCARD std::string* release_cycle_mark_column(); void set_allocated_cycle_mark_column(std::string* cycle_mark_column); 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(ArgT0&& arg0, ArgT... args); std::string* mutable_cycle_path_column(); PROTOBUF_NODISCARD std::string* release_cycle_path_column(); void set_allocated_cycle_path_column(std::string* cycle_path_column); 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; private: bool _internal_has_cycle_mark_value() const; public: 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* cycle_mark_value); private: const ::pg_query::Node& _internal_cycle_mark_value() const; ::pg_query::Node* _internal_mutable_cycle_mark_value(); public: void unsafe_arena_set_allocated_cycle_mark_value( ::pg_query::Node* cycle_mark_value); ::pg_query::Node* unsafe_arena_release_cycle_mark_value(); // .pg_query.Node cycle_mark_default = 4 [json_name = "cycle_mark_default"]; bool has_cycle_mark_default() const; private: bool _internal_has_cycle_mark_default() const; public: 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* cycle_mark_default); private: const ::pg_query::Node& _internal_cycle_mark_default() const; ::pg_query::Node* _internal_mutable_cycle_mark_default(); public: void unsafe_arena_set_allocated_cycle_mark_default( ::pg_query::Node* cycle_mark_default); ::pg_query::Node* unsafe_arena_release_cycle_mark_default(); // 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cycle_col_list_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr cycle_mark_column_; ::PROTOBUF_NAMESPACE_ID::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_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CommonTableExpr final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CommonTableExpr) */ { public: inline CommonTableExpr() : CommonTableExpr(nullptr) {} ~CommonTableExpr() override; explicit PROTOBUF_CONSTEXPR CommonTableExpr(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CommonTableExpr(const CommonTableExpr& from); CommonTableExpr(CommonTableExpr&& from) noexcept : CommonTableExpr() { *this = ::std::move(from); } inline CommonTableExpr& operator=(const CommonTableExpr& from) { CopyFrom(from); return *this; } inline CommonTableExpr& operator=(CommonTableExpr&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 227; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CommonTableExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CommonTableExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CommonTableExpr& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CommonTableExpr& from) { CommonTableExpr::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CommonTableExpr* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CommonTableExpr"; } protected: explicit CommonTableExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_aliascolnames(); private: const ::pg_query::Node& _internal_aliascolnames(int index) const; ::pg_query::Node* _internal_add_aliascolnames(); public: const ::pg_query::Node& aliascolnames(int index) const; ::pg_query::Node* add_aliascolnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& aliascolnames() const; // repeated .pg_query.Node ctecolnames = 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_ctecolnames(); private: const ::pg_query::Node& _internal_ctecolnames(int index) const; ::pg_query::Node* _internal_add_ctecolnames(); public: const ::pg_query::Node& ctecolnames(int index) const; ::pg_query::Node* add_ctecolnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ctecolnames() const; // repeated .pg_query.Node ctecoltypes = 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_ctecoltypes(); private: const ::pg_query::Node& _internal_ctecoltypes(int index) const; ::pg_query::Node* _internal_add_ctecoltypes(); public: const ::pg_query::Node& ctecoltypes(int index) const; ::pg_query::Node* add_ctecoltypes(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ctecoltypes() const; // repeated .pg_query.Node ctecoltypmods = 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_ctecoltypmods(); private: const ::pg_query::Node& _internal_ctecoltypmods(int index) const; ::pg_query::Node* _internal_add_ctecoltypmods(); public: const ::pg_query::Node& ctecoltypmods(int index) const; ::pg_query::Node* add_ctecoltypmods(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ctecoltypmods() const; // repeated .pg_query.Node ctecolcollations = 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_ctecolcollations(); private: const ::pg_query::Node& _internal_ctecolcollations(int index) const; ::pg_query::Node* _internal_add_ctecolcollations(); public: const ::pg_query::Node& ctecolcollations(int index) const; ::pg_query::Node* add_ctecolcollations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ctecolcollations() const; // string ctename = 1 [json_name = "ctename"]; void clear_ctename(); const std::string& ctename() const; template void set_ctename(ArgT0&& arg0, ArgT... args); std::string* mutable_ctename(); PROTOBUF_NODISCARD std::string* release_ctename(); void set_allocated_ctename(std::string* ctename); 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; private: bool _internal_has_ctequery() const; public: 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* ctequery); private: const ::pg_query::Node& _internal_ctequery() const; ::pg_query::Node* _internal_mutable_ctequery(); public: void unsafe_arena_set_allocated_ctequery( ::pg_query::Node* ctequery); ::pg_query::Node* unsafe_arena_release_ctequery(); // .pg_query.CTESearchClause search_clause = 5 [json_name = "search_clause"]; bool has_search_clause() const; private: bool _internal_has_search_clause() const; public: 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* search_clause); private: const ::pg_query::CTESearchClause& _internal_search_clause() const; ::pg_query::CTESearchClause* _internal_mutable_search_clause(); public: void unsafe_arena_set_allocated_search_clause( ::pg_query::CTESearchClause* search_clause); ::pg_query::CTESearchClause* unsafe_arena_release_search_clause(); // .pg_query.CTECycleClause cycle_clause = 6 [json_name = "cycle_clause"]; bool has_cycle_clause() const; private: bool _internal_has_cycle_clause() const; public: 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* cycle_clause); private: const ::pg_query::CTECycleClause& _internal_cycle_clause() const; ::pg_query::CTECycleClause* _internal_mutable_cycle_clause(); public: void unsafe_arena_set_allocated_cycle_clause( ::pg_query::CTECycleClause* cycle_clause); ::pg_query::CTECycleClause* unsafe_arena_release_cycle_clause(); // .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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aliascolnames_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ctecolnames_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ctecoltypes_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ctecoltypmods_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ctecolcollations_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr ctename_; ::pg_query::Node* ctequery_; ::pg_query::CTESearchClause* search_clause_; ::pg_query::CTECycleClause* cycle_clause_; int ctematerialized_; int32_t location_; bool cterecursive_; int32_t cterefcount_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class MergeWhenClause final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.MergeWhenClause) */ { public: inline MergeWhenClause() : MergeWhenClause(nullptr) {} ~MergeWhenClause() override; explicit PROTOBUF_CONSTEXPR MergeWhenClause(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); MergeWhenClause(const MergeWhenClause& 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 (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 228; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(MergeWhenClause* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- MergeWhenClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const MergeWhenClause& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const MergeWhenClause& from) { MergeWhenClause::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(MergeWhenClause* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.MergeWhenClause"; } protected: explicit MergeWhenClause(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTargetListFieldNumber = 5, kValuesFieldNumber = 6, kConditionFieldNumber = 4, kMatchedFieldNumber = 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_target_list(); private: const ::pg_query::Node& _internal_target_list(int index) const; ::pg_query::Node* _internal_add_target_list(); public: const ::pg_query::Node& target_list(int index) const; ::pg_query::Node* add_target_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& target_list() const; // repeated .pg_query.Node 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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_values(); private: const ::pg_query::Node& _internal_values(int index) const; ::pg_query::Node* _internal_add_values(); public: const ::pg_query::Node& values(int index) const; ::pg_query::Node* add_values(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& values() const; // .pg_query.Node condition = 4 [json_name = "condition"]; bool has_condition() const; private: bool _internal_has_condition() const; public: 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* condition); private: const ::pg_query::Node& _internal_condition() const; ::pg_query::Node* _internal_mutable_condition(); public: void unsafe_arena_set_allocated_condition( ::pg_query::Node* condition); ::pg_query::Node* unsafe_arena_release_condition(); // bool matched = 1 [json_name = "matched"]; void clear_matched(); bool matched() const; void set_matched(bool value); private: bool _internal_matched() const; void _internal_set_matched(bool 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > target_list_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > values_; ::pg_query::Node* condition_; bool matched_; int command_type_; int override_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RoleSpec final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RoleSpec) */ { public: inline RoleSpec() : RoleSpec(nullptr) {} ~RoleSpec() override; explicit PROTOBUF_CONSTEXPR RoleSpec(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); RoleSpec(const RoleSpec& from); RoleSpec(RoleSpec&& from) noexcept : RoleSpec() { *this = ::std::move(from); } inline RoleSpec& operator=(const RoleSpec& from) { CopyFrom(from); return *this; } inline RoleSpec& operator=(RoleSpec&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 229; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RoleSpec* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RoleSpec* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const RoleSpec& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const RoleSpec& from) { RoleSpec::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RoleSpec* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RoleSpec"; } protected: explicit RoleSpec(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_rolename(); PROTOBUF_NODISCARD std::string* release_rolename(); void set_allocated_rolename(std::string* rolename); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr rolename_; int roletype_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TriggerTransition final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TriggerTransition) */ { public: inline TriggerTransition() : TriggerTransition(nullptr) {} ~TriggerTransition() override; explicit PROTOBUF_CONSTEXPR TriggerTransition(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); TriggerTransition(const TriggerTransition& from); TriggerTransition(TriggerTransition&& from) noexcept : TriggerTransition() { *this = ::std::move(from); } inline TriggerTransition& operator=(const TriggerTransition& from) { CopyFrom(from); return *this; } inline TriggerTransition& operator=(TriggerTransition&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 230; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TriggerTransition* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TriggerTransition* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const TriggerTransition& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const TriggerTransition& from) { TriggerTransition::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TriggerTransition* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TriggerTransition"; } protected: explicit TriggerTransition(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; bool is_new_; bool is_table_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class PartitionElem final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionElem) */ { public: inline PartitionElem() : PartitionElem(nullptr) {} ~PartitionElem() override; explicit PROTOBUF_CONSTEXPR PartitionElem(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); PartitionElem(const PartitionElem& from); PartitionElem(PartitionElem&& from) noexcept : PartitionElem() { *this = ::std::move(from); } inline PartitionElem& operator=(const PartitionElem& from) { CopyFrom(from); return *this; } inline PartitionElem& operator=(PartitionElem&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 231; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PartitionElem* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PartitionElem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const PartitionElem& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const PartitionElem& from) { PartitionElem::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(PartitionElem* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.PartitionElem"; } protected: explicit PartitionElem(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_collation(); private: const ::pg_query::Node& _internal_collation(int index) const; ::pg_query::Node* _internal_add_collation(); public: const ::pg_query::Node& collation(int index) const; ::pg_query::Node* add_collation(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& collation() const; // repeated .pg_query.Node opclass = 4 [json_name = "opclass"]; int opclass_size() const; private: int _internal_opclass_size() const; public: void clear_opclass(); ::pg_query::Node* mutable_opclass(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opclass(); private: const ::pg_query::Node& _internal_opclass(int index) const; ::pg_query::Node* _internal_add_opclass(); public: const ::pg_query::Node& opclass(int index) const; ::pg_query::Node* add_opclass(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opclass() const; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; template void set_name(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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; private: bool _internal_has_expr() const; public: 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* expr); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: void unsafe_arena_set_allocated_expr( ::pg_query::Node* expr); ::pg_query::Node* unsafe_arena_release_expr(); // int32 location = 5 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > collation_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opclass_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::Node* expr_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class PartitionSpec final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionSpec) */ { public: inline PartitionSpec() : PartitionSpec(nullptr) {} ~PartitionSpec() override; explicit PROTOBUF_CONSTEXPR PartitionSpec(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); PartitionSpec(const PartitionSpec& from); PartitionSpec(PartitionSpec&& from) noexcept : PartitionSpec() { *this = ::std::move(from); } inline PartitionSpec& operator=(const PartitionSpec& from) { CopyFrom(from); return *this; } inline PartitionSpec& operator=(PartitionSpec&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 232; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PartitionSpec* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PartitionSpec* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const PartitionSpec& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const PartitionSpec& from) { PartitionSpec::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(PartitionSpec* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.PartitionSpec"; } protected: explicit PartitionSpec(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_part_params(); private: const ::pg_query::Node& _internal_part_params(int index) const; ::pg_query::Node* _internal_add_part_params(); public: const ::pg_query::Node& part_params(int index) const; ::pg_query::Node* add_part_params(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& part_params() const; // string strategy = 1 [json_name = "strategy"]; void clear_strategy(); const std::string& strategy() const; template void set_strategy(ArgT0&& arg0, ArgT... args); std::string* mutable_strategy(); PROTOBUF_NODISCARD std::string* release_strategy(); void set_allocated_strategy(std::string* strategy); 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: // 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > part_params_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr strategy_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class PartitionBoundSpec final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionBoundSpec) */ { public: inline PartitionBoundSpec() : PartitionBoundSpec(nullptr) {} ~PartitionBoundSpec() override; explicit PROTOBUF_CONSTEXPR PartitionBoundSpec(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); PartitionBoundSpec(const PartitionBoundSpec& from); PartitionBoundSpec(PartitionBoundSpec&& from) noexcept : PartitionBoundSpec() { *this = ::std::move(from); } inline PartitionBoundSpec& operator=(const PartitionBoundSpec& from) { CopyFrom(from); return *this; } inline PartitionBoundSpec& operator=(PartitionBoundSpec&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 233; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PartitionBoundSpec* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PartitionBoundSpec* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const PartitionBoundSpec& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const PartitionBoundSpec& from) { PartitionBoundSpec::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(PartitionBoundSpec* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.PartitionBoundSpec"; } protected: explicit PartitionBoundSpec(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_listdatums(); private: const ::pg_query::Node& _internal_listdatums(int index) const; ::pg_query::Node* _internal_add_listdatums(); public: const ::pg_query::Node& listdatums(int index) const; ::pg_query::Node* add_listdatums(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& listdatums() const; // repeated .pg_query.Node lowerdatums = 6 [json_name = "lowerdatums"]; int lowerdatums_size() const; private: int _internal_lowerdatums_size() const; public: void clear_lowerdatums(); ::pg_query::Node* mutable_lowerdatums(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_lowerdatums(); private: const ::pg_query::Node& _internal_lowerdatums(int index) const; ::pg_query::Node* _internal_add_lowerdatums(); public: const ::pg_query::Node& lowerdatums(int index) const; ::pg_query::Node* add_lowerdatums(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& lowerdatums() const; // repeated .pg_query.Node upperdatums = 7 [json_name = "upperdatums"]; int upperdatums_size() const; private: int _internal_upperdatums_size() const; public: void clear_upperdatums(); ::pg_query::Node* mutable_upperdatums(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_upperdatums(); private: const ::pg_query::Node& _internal_upperdatums(int index) const; ::pg_query::Node* _internal_add_upperdatums(); public: const ::pg_query::Node& upperdatums(int index) const; ::pg_query::Node* add_upperdatums(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& upperdatums() const; // string strategy = 1 [json_name = "strategy"]; void clear_strategy(); const std::string& strategy() const; template void set_strategy(ArgT0&& arg0, ArgT... args); std::string* mutable_strategy(); PROTOBUF_NODISCARD std::string* release_strategy(); void set_allocated_strategy(std::string* strategy); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > listdatums_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > lowerdatums_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > upperdatums_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr strategy_; bool is_default_; int32_t modulus_; int32_t remainder_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class PartitionRangeDatum final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionRangeDatum) */ { public: inline PartitionRangeDatum() : PartitionRangeDatum(nullptr) {} ~PartitionRangeDatum() override; explicit PROTOBUF_CONSTEXPR PartitionRangeDatum(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); PartitionRangeDatum(const PartitionRangeDatum& from); PartitionRangeDatum(PartitionRangeDatum&& from) noexcept : PartitionRangeDatum() { *this = ::std::move(from); } inline PartitionRangeDatum& operator=(const PartitionRangeDatum& from) { CopyFrom(from); return *this; } inline PartitionRangeDatum& operator=(PartitionRangeDatum&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 234; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PartitionRangeDatum* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PartitionRangeDatum* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const PartitionRangeDatum& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const PartitionRangeDatum& from) { PartitionRangeDatum::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(PartitionRangeDatum* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.PartitionRangeDatum"; } protected: explicit PartitionRangeDatum(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_value() const; public: 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); private: const ::pg_query::Node& _internal_value() const; ::pg_query::Node* _internal_mutable_value(); public: void unsafe_arena_set_allocated_value( ::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_value(); // .pg_query.PartitionRangeDatumKind kind = 1 [json_name = "kind"]; void clear_kind(); ::pg_query::PartitionRangeDatumKind kind() const; void set_kind(::pg_query::PartitionRangeDatumKind value); private: ::pg_query::PartitionRangeDatumKind _internal_kind() const; void _internal_set_kind(::pg_query::PartitionRangeDatumKind value); public: // int32 location = 3 [json_name = "location"]; void clear_location(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::Node* value_; int kind_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class PartitionCmd final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionCmd) */ { public: inline PartitionCmd() : PartitionCmd(nullptr) {} ~PartitionCmd() override; explicit PROTOBUF_CONSTEXPR PartitionCmd(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); PartitionCmd(const PartitionCmd& from); PartitionCmd(PartitionCmd&& from) noexcept : PartitionCmd() { *this = ::std::move(from); } inline PartitionCmd& operator=(const PartitionCmd& from) { CopyFrom(from); return *this; } inline PartitionCmd& operator=(PartitionCmd&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 235; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PartitionCmd* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PartitionCmd* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const PartitionCmd& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const PartitionCmd& from) { PartitionCmd::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(PartitionCmd* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.PartitionCmd"; } protected: explicit PartitionCmd(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; private: bool _internal_has_name() const; public: 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* name); private: const ::pg_query::RangeVar& _internal_name() const; ::pg_query::RangeVar* _internal_mutable_name(); public: void unsafe_arena_set_allocated_name( ::pg_query::RangeVar* name); ::pg_query::RangeVar* unsafe_arena_release_name(); // .pg_query.PartitionBoundSpec bound = 2 [json_name = "bound"]; bool has_bound() const; private: bool _internal_has_bound() const; public: void clear_bound(); const ::pg_query::PartitionBoundSpec& bound() const; PROTOBUF_NODISCARD ::pg_query::PartitionBoundSpec* release_bound(); ::pg_query::PartitionBoundSpec* mutable_bound(); void set_allocated_bound(::pg_query::PartitionBoundSpec* bound); private: const ::pg_query::PartitionBoundSpec& _internal_bound() const; ::pg_query::PartitionBoundSpec* _internal_mutable_bound(); public: void unsafe_arena_set_allocated_bound( ::pg_query::PartitionBoundSpec* bound); ::pg_query::PartitionBoundSpec* unsafe_arena_release_bound(); // 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::pg_query::RangeVar* name_; ::pg_query::PartitionBoundSpec* bound_; bool concurrent_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class VacuumRelation final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.VacuumRelation) */ { public: inline VacuumRelation() : VacuumRelation(nullptr) {} ~VacuumRelation() override; explicit PROTOBUF_CONSTEXPR VacuumRelation(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); VacuumRelation(const VacuumRelation& from); VacuumRelation(VacuumRelation&& from) noexcept : VacuumRelation() { *this = ::std::move(from); } inline VacuumRelation& operator=(const VacuumRelation& from) { CopyFrom(from); return *this; } inline VacuumRelation& operator=(VacuumRelation&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 236; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(VacuumRelation* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- VacuumRelation* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const VacuumRelation& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const VacuumRelation& from) { VacuumRelation::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(VacuumRelation* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.VacuumRelation"; } protected: explicit VacuumRelation(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_va_cols(); private: const ::pg_query::Node& _internal_va_cols(int index) const; ::pg_query::Node* _internal_add_va_cols(); public: const ::pg_query::Node& va_cols(int index) const; ::pg_query::Node* add_va_cols(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& va_cols() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // uint32 oid = 2 [json_name = "oid"]; void clear_oid(); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > va_cols_; ::pg_query::RangeVar* relation_; uint32_t oid_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class PublicationObjSpec final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PublicationObjSpec) */ { public: inline PublicationObjSpec() : PublicationObjSpec(nullptr) {} ~PublicationObjSpec() override; explicit PROTOBUF_CONSTEXPR PublicationObjSpec(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); PublicationObjSpec(const PublicationObjSpec& 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 (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 237; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PublicationObjSpec* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PublicationObjSpec* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const PublicationObjSpec& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const PublicationObjSpec& from) { PublicationObjSpec::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(PublicationObjSpec* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.PublicationObjSpec"; } protected: explicit PublicationObjSpec(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* name); 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; private: bool _internal_has_pubtable() const; public: 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* pubtable); private: const ::pg_query::PublicationTable& _internal_pubtable() const; ::pg_query::PublicationTable* _internal_mutable_pubtable(); public: void unsafe_arena_set_allocated_pubtable( ::pg_query::PublicationTable* pubtable); ::pg_query::PublicationTable* unsafe_arena_release_pubtable(); // .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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::PublicationTable* pubtable_; int pubobjtype_; int32_t location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class PublicationTable final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PublicationTable) */ { public: inline PublicationTable() : PublicationTable(nullptr) {} ~PublicationTable() override; explicit PROTOBUF_CONSTEXPR PublicationTable(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); PublicationTable(const PublicationTable& 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 (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 238; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PublicationTable* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PublicationTable* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const PublicationTable& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const PublicationTable& from) { PublicationTable::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(PublicationTable* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.PublicationTable"; } protected: explicit PublicationTable(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_columns(); private: const ::pg_query::Node& _internal_columns(int index) const; ::pg_query::Node* _internal_add_columns(); public: const ::pg_query::Node& columns(int index) const; ::pg_query::Node* add_columns(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& columns() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // @@protoc_insertion_point(class_scope:pg_query.PublicationTable) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > columns_; ::pg_query::RangeVar* relation_; ::pg_query::Node* where_clause_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class InlineCodeBlock final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.InlineCodeBlock) */ { public: inline InlineCodeBlock() : InlineCodeBlock(nullptr) {} ~InlineCodeBlock() override; explicit PROTOBUF_CONSTEXPR InlineCodeBlock(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); InlineCodeBlock(const InlineCodeBlock& from); InlineCodeBlock(InlineCodeBlock&& from) noexcept : InlineCodeBlock() { *this = ::std::move(from); } inline InlineCodeBlock& operator=(const InlineCodeBlock& from) { CopyFrom(from); return *this; } inline InlineCodeBlock& operator=(InlineCodeBlock&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 239; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(InlineCodeBlock* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- InlineCodeBlock* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const InlineCodeBlock& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const InlineCodeBlock& from) { InlineCodeBlock::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(InlineCodeBlock* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.InlineCodeBlock"; } protected: explicit InlineCodeBlock(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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(ArgT0&& arg0, ArgT... args); std::string* mutable_source_text(); PROTOBUF_NODISCARD std::string* release_source_text(); void set_allocated_source_text(std::string* source_text); 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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr source_text_; uint32_t lang_oid_; bool lang_is_trusted_; bool atomic_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CallContext final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CallContext) */ { public: inline CallContext() : CallContext(nullptr) {} ~CallContext() override; explicit PROTOBUF_CONSTEXPR CallContext(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); CallContext(const CallContext& from); CallContext(CallContext&& from) noexcept : CallContext() { *this = ::std::move(from); } inline CallContext& operator=(const CallContext& from) { CopyFrom(from); return *this; } inline CallContext& operator=(CallContext&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 240; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CallContext* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CallContext* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const CallContext& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const CallContext& from) { CallContext::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CallContext* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CallContext"; } protected: explicit CallContext(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { bool atomic_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ScanToken final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ScanToken) */ { public: inline ScanToken() : ScanToken(nullptr) {} ~ScanToken() override; explicit PROTOBUF_CONSTEXPR ScanToken(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); ScanToken(const ScanToken& from); ScanToken(ScanToken&& from) noexcept : ScanToken() { *this = ::std::move(from); } inline ScanToken& operator=(const ScanToken& from) { CopyFrom(from); return *this; } inline ScanToken& operator=(ScanToken&& from) noexcept { if (this == &from) return *this; if (GetOwningArena() == from.GetOwningArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetOwningArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::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 = 241; 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 (GetOwningArena() != nullptr && GetOwningArena() == other->GetOwningArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetOwningArena() == other->GetOwningArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ScanToken* other) { if (other == this) return; GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ScanToken* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; void CopyFrom(const ScanToken& from); using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; void MergeFrom( const ScanToken& from) { ScanToken::MergeImpl(*this, from); } private: static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; uint8_t* _InternalSerialize( uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _impl_._cached_size_.Get(); } private: void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ScanToken* other); private: friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ScanToken"; } protected: explicit ScanToken(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned = false); public: static const ClassData _class_data_; const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; ::PROTOBUF_NAMESPACE_ID::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; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { int32_t start_; int32_t end_; int token_; int keyword_kind_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; }; 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() { _impl_.version_ = 0; } inline int32_t ParseResult::_internal_version() const { return _impl_.version_; } inline int32_t ParseResult::version() const { // @@protoc_insertion_point(field_get:pg_query.ParseResult.version) return _internal_version(); } inline void ParseResult::_internal_set_version(int32_t value) { _impl_.version_ = value; } inline void ParseResult::set_version(int32_t value) { _internal_set_version(value); // @@protoc_insertion_point(field_set:pg_query.ParseResult.version) } // repeated .pg_query.RawStmt stmts = 2; inline int ParseResult::_internal_stmts_size() const { return _impl_.stmts_.size(); } inline int ParseResult::stmts_size() const { return _internal_stmts_size(); } inline void ParseResult::clear_stmts() { _impl_.stmts_.Clear(); } inline ::pg_query::RawStmt* ParseResult::mutable_stmts(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ParseResult.stmts) return _impl_.stmts_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::RawStmt >* ParseResult::mutable_stmts() { // @@protoc_insertion_point(field_mutable_list:pg_query.ParseResult.stmts) return &_impl_.stmts_; } inline const ::pg_query::RawStmt& ParseResult::_internal_stmts(int index) const { return _impl_.stmts_.Get(index); } inline const ::pg_query::RawStmt& ParseResult::stmts(int index) const { // @@protoc_insertion_point(field_get:pg_query.ParseResult.stmts) return _internal_stmts(index); } inline ::pg_query::RawStmt* ParseResult::_internal_add_stmts() { return _impl_.stmts_.Add(); } inline ::pg_query::RawStmt* ParseResult::add_stmts() { ::pg_query::RawStmt* _add = _internal_add_stmts(); // @@protoc_insertion_point(field_add:pg_query.ParseResult.stmts) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::RawStmt >& ParseResult::stmts() const { // @@protoc_insertion_point(field_list:pg_query.ParseResult.stmts) return _impl_.stmts_; } // ------------------------------------------------------------------- // ScanResult // int32 version = 1; inline void ScanResult::clear_version() { _impl_.version_ = 0; } inline int32_t ScanResult::_internal_version() const { return _impl_.version_; } inline int32_t ScanResult::version() const { // @@protoc_insertion_point(field_get:pg_query.ScanResult.version) return _internal_version(); } inline void ScanResult::_internal_set_version(int32_t value) { _impl_.version_ = value; } inline void ScanResult::set_version(int32_t value) { _internal_set_version(value); // @@protoc_insertion_point(field_set:pg_query.ScanResult.version) } // repeated .pg_query.ScanToken tokens = 2; inline int ScanResult::_internal_tokens_size() const { return _impl_.tokens_.size(); } inline int ScanResult::tokens_size() const { return _internal_tokens_size(); } inline void ScanResult::clear_tokens() { _impl_.tokens_.Clear(); } inline ::pg_query::ScanToken* ScanResult::mutable_tokens(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ScanResult.tokens) return _impl_.tokens_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::ScanToken >* ScanResult::mutable_tokens() { // @@protoc_insertion_point(field_mutable_list:pg_query.ScanResult.tokens) return &_impl_.tokens_; } inline const ::pg_query::ScanToken& ScanResult::_internal_tokens(int index) const { return _impl_.tokens_.Get(index); } inline const ::pg_query::ScanToken& ScanResult::tokens(int index) const { // @@protoc_insertion_point(field_get:pg_query.ScanResult.tokens) return _internal_tokens(index); } inline ::pg_query::ScanToken* ScanResult::_internal_add_tokens() { return _impl_.tokens_.Add(); } inline ::pg_query::ScanToken* ScanResult::add_tokens() { ::pg_query::ScanToken* _add = _internal_add_tokens(); // @@protoc_insertion_point(field_add:pg_query.ScanResult.tokens) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::ScanToken >& ScanResult::tokens() const { // @@protoc_insertion_point(field_list:pg_query.ScanResult.tokens) return _impl_.tokens_; } // ------------------------------------------------------------------- // Node // .pg_query.Alias alias = 1 [json_name = "Alias"]; inline bool Node::_internal_has_alias() const { return node_case() == kAlias; } inline bool Node::has_alias() const { return _internal_has_alias(); } inline void Node::set_has_alias() { _impl_._oneof_case_[0] = kAlias; } inline void Node::clear_alias() { if (_internal_has_alias()) { if (GetArenaForAllocation() == 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 (_internal_has_alias()) { clear_has_node(); ::pg_query::Alias* temp = _impl_.node_.alias_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.alias_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Alias& Node::_internal_alias() const { return _internal_has_alias() ? *_impl_.node_.alias_ : reinterpret_cast< ::pg_query::Alias&>(::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& Node::alias() const { // @@protoc_insertion_point(field_get:pg_query.Node.alias) return _internal_alias(); } inline ::pg_query::Alias* Node::unsafe_arena_release_alias() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alias) if (_internal_has_alias()) { clear_has_node(); ::pg_query::Alias* temp = _impl_.node_.alias_; _impl_.node_.alias_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alias(::pg_query::Alias* alias) { clear_node(); if (alias) { set_has_alias(); _impl_.node_.alias_ = alias; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alias) } inline ::pg_query::Alias* Node::_internal_mutable_alias() { if (!_internal_has_alias()) { clear_node(); set_has_alias(); _impl_.node_.alias_ = CreateMaybeMessage< ::pg_query::Alias >(GetArenaForAllocation()); } return _impl_.node_.alias_; } inline ::pg_query::Alias* Node::mutable_alias() { ::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::_internal_has_range_var() const { return node_case() == kRangeVar; } inline bool Node::has_range_var() const { return _internal_has_range_var(); } inline void Node::set_has_range_var() { _impl_._oneof_case_[0] = kRangeVar; } inline void Node::clear_range_var() { if (_internal_has_range_var()) { if (GetArenaForAllocation() == 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 (_internal_has_range_var()) { clear_has_node(); ::pg_query::RangeVar* temp = _impl_.node_.range_var_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.range_var_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeVar& Node::_internal_range_var() const { return _internal_has_range_var() ? *_impl_.node_.range_var_ : reinterpret_cast< ::pg_query::RangeVar&>(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& Node::range_var() const { // @@protoc_insertion_point(field_get:pg_query.Node.range_var) return _internal_range_var(); } inline ::pg_query::RangeVar* Node::unsafe_arena_release_range_var() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_var) if (_internal_has_range_var()) { clear_has_node(); ::pg_query::RangeVar* temp = _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* range_var) { clear_node(); if (range_var) { set_has_range_var(); _impl_.node_.range_var_ = range_var; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_var) } inline ::pg_query::RangeVar* Node::_internal_mutable_range_var() { if (!_internal_has_range_var()) { clear_node(); set_has_range_var(); _impl_.node_.range_var_ = CreateMaybeMessage< ::pg_query::RangeVar >(GetArenaForAllocation()); } return _impl_.node_.range_var_; } inline ::pg_query::RangeVar* Node::mutable_range_var() { ::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::_internal_has_table_func() const { return node_case() == kTableFunc; } inline bool Node::has_table_func() const { return _internal_has_table_func(); } inline void Node::set_has_table_func() { _impl_._oneof_case_[0] = kTableFunc; } inline void Node::clear_table_func() { if (_internal_has_table_func()) { if (GetArenaForAllocation() == 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 (_internal_has_table_func()) { clear_has_node(); ::pg_query::TableFunc* temp = _impl_.node_.table_func_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.table_func_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TableFunc& Node::_internal_table_func() const { return _internal_has_table_func() ? *_impl_.node_.table_func_ : reinterpret_cast< ::pg_query::TableFunc&>(::pg_query::_TableFunc_default_instance_); } inline const ::pg_query::TableFunc& Node::table_func() const { // @@protoc_insertion_point(field_get:pg_query.Node.table_func) return _internal_table_func(); } inline ::pg_query::TableFunc* Node::unsafe_arena_release_table_func() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.table_func) if (_internal_has_table_func()) { clear_has_node(); ::pg_query::TableFunc* temp = _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* table_func) { clear_node(); if (table_func) { set_has_table_func(); _impl_.node_.table_func_ = table_func; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.table_func) } inline ::pg_query::TableFunc* Node::_internal_mutable_table_func() { if (!_internal_has_table_func()) { clear_node(); set_has_table_func(); _impl_.node_.table_func_ = CreateMaybeMessage< ::pg_query::TableFunc >(GetArenaForAllocation()); } return _impl_.node_.table_func_; } inline ::pg_query::TableFunc* Node::mutable_table_func() { ::pg_query::TableFunc* _msg = _internal_mutable_table_func(); // @@protoc_insertion_point(field_mutable:pg_query.Node.table_func) return _msg; } // .pg_query.Var var = 4 [json_name = "Var"]; inline bool Node::_internal_has_var() const { return node_case() == kVar; } inline bool Node::has_var() const { return _internal_has_var(); } inline void Node::set_has_var() { _impl_._oneof_case_[0] = kVar; } inline void Node::clear_var() { if (_internal_has_var()) { if (GetArenaForAllocation() == 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 (_internal_has_var()) { clear_has_node(); ::pg_query::Var* temp = _impl_.node_.var_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.var_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Var& Node::_internal_var() const { return _internal_has_var() ? *_impl_.node_.var_ : reinterpret_cast< ::pg_query::Var&>(::pg_query::_Var_default_instance_); } inline const ::pg_query::Var& Node::var() const { // @@protoc_insertion_point(field_get:pg_query.Node.var) return _internal_var(); } inline ::pg_query::Var* Node::unsafe_arena_release_var() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.var) if (_internal_has_var()) { clear_has_node(); ::pg_query::Var* temp = _impl_.node_.var_; _impl_.node_.var_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_var(::pg_query::Var* var) { clear_node(); if (var) { set_has_var(); _impl_.node_.var_ = var; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.var) } inline ::pg_query::Var* Node::_internal_mutable_var() { if (!_internal_has_var()) { clear_node(); set_has_var(); _impl_.node_.var_ = CreateMaybeMessage< ::pg_query::Var >(GetArenaForAllocation()); } return _impl_.node_.var_; } inline ::pg_query::Var* Node::mutable_var() { ::pg_query::Var* _msg = _internal_mutable_var(); // @@protoc_insertion_point(field_mutable:pg_query.Node.var) return _msg; } // .pg_query.Param param = 5 [json_name = "Param"]; inline bool Node::_internal_has_param() const { return node_case() == kParam; } inline bool Node::has_param() const { return _internal_has_param(); } inline void Node::set_has_param() { _impl_._oneof_case_[0] = kParam; } inline void Node::clear_param() { if (_internal_has_param()) { if (GetArenaForAllocation() == 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 (_internal_has_param()) { clear_has_node(); ::pg_query::Param* temp = _impl_.node_.param_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.param_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Param& Node::_internal_param() const { return _internal_has_param() ? *_impl_.node_.param_ : reinterpret_cast< ::pg_query::Param&>(::pg_query::_Param_default_instance_); } inline const ::pg_query::Param& Node::param() const { // @@protoc_insertion_point(field_get:pg_query.Node.param) return _internal_param(); } inline ::pg_query::Param* Node::unsafe_arena_release_param() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.param) if (_internal_has_param()) { clear_has_node(); ::pg_query::Param* temp = _impl_.node_.param_; _impl_.node_.param_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_param(::pg_query::Param* param) { clear_node(); if (param) { set_has_param(); _impl_.node_.param_ = param; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.param) } inline ::pg_query::Param* Node::_internal_mutable_param() { if (!_internal_has_param()) { clear_node(); set_has_param(); _impl_.node_.param_ = CreateMaybeMessage< ::pg_query::Param >(GetArenaForAllocation()); } return _impl_.node_.param_; } inline ::pg_query::Param* Node::mutable_param() { ::pg_query::Param* _msg = _internal_mutable_param(); // @@protoc_insertion_point(field_mutable:pg_query.Node.param) return _msg; } // .pg_query.Aggref aggref = 6 [json_name = "Aggref"]; inline bool Node::_internal_has_aggref() const { return node_case() == kAggref; } inline bool Node::has_aggref() const { return _internal_has_aggref(); } inline void Node::set_has_aggref() { _impl_._oneof_case_[0] = kAggref; } inline void Node::clear_aggref() { if (_internal_has_aggref()) { if (GetArenaForAllocation() == 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 (_internal_has_aggref()) { clear_has_node(); ::pg_query::Aggref* temp = _impl_.node_.aggref_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.aggref_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Aggref& Node::_internal_aggref() const { return _internal_has_aggref() ? *_impl_.node_.aggref_ : reinterpret_cast< ::pg_query::Aggref&>(::pg_query::_Aggref_default_instance_); } inline const ::pg_query::Aggref& Node::aggref() const { // @@protoc_insertion_point(field_get:pg_query.Node.aggref) return _internal_aggref(); } inline ::pg_query::Aggref* Node::unsafe_arena_release_aggref() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.aggref) if (_internal_has_aggref()) { clear_has_node(); ::pg_query::Aggref* temp = _impl_.node_.aggref_; _impl_.node_.aggref_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_aggref(::pg_query::Aggref* aggref) { clear_node(); if (aggref) { set_has_aggref(); _impl_.node_.aggref_ = aggref; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.aggref) } inline ::pg_query::Aggref* Node::_internal_mutable_aggref() { if (!_internal_has_aggref()) { clear_node(); set_has_aggref(); _impl_.node_.aggref_ = CreateMaybeMessage< ::pg_query::Aggref >(GetArenaForAllocation()); } return _impl_.node_.aggref_; } inline ::pg_query::Aggref* Node::mutable_aggref() { ::pg_query::Aggref* _msg = _internal_mutable_aggref(); // @@protoc_insertion_point(field_mutable:pg_query.Node.aggref) return _msg; } // .pg_query.GroupingFunc grouping_func = 7 [json_name = "GroupingFunc"]; inline bool Node::_internal_has_grouping_func() const { return node_case() == kGroupingFunc; } inline bool Node::has_grouping_func() const { return _internal_has_grouping_func(); } inline void Node::set_has_grouping_func() { _impl_._oneof_case_[0] = kGroupingFunc; } inline void Node::clear_grouping_func() { if (_internal_has_grouping_func()) { if (GetArenaForAllocation() == 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 (_internal_has_grouping_func()) { clear_has_node(); ::pg_query::GroupingFunc* temp = _impl_.node_.grouping_func_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.grouping_func_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::GroupingFunc& Node::_internal_grouping_func() const { return _internal_has_grouping_func() ? *_impl_.node_.grouping_func_ : reinterpret_cast< ::pg_query::GroupingFunc&>(::pg_query::_GroupingFunc_default_instance_); } inline const ::pg_query::GroupingFunc& Node::grouping_func() const { // @@protoc_insertion_point(field_get:pg_query.Node.grouping_func) return _internal_grouping_func(); } inline ::pg_query::GroupingFunc* Node::unsafe_arena_release_grouping_func() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.grouping_func) if (_internal_has_grouping_func()) { clear_has_node(); ::pg_query::GroupingFunc* temp = _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* grouping_func) { clear_node(); if (grouping_func) { set_has_grouping_func(); _impl_.node_.grouping_func_ = grouping_func; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.grouping_func) } inline ::pg_query::GroupingFunc* Node::_internal_mutable_grouping_func() { if (!_internal_has_grouping_func()) { clear_node(); set_has_grouping_func(); _impl_.node_.grouping_func_ = CreateMaybeMessage< ::pg_query::GroupingFunc >(GetArenaForAllocation()); } return _impl_.node_.grouping_func_; } inline ::pg_query::GroupingFunc* Node::mutable_grouping_func() { ::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 = 8 [json_name = "WindowFunc"]; inline bool Node::_internal_has_window_func() const { return node_case() == kWindowFunc; } inline bool Node::has_window_func() const { return _internal_has_window_func(); } inline void Node::set_has_window_func() { _impl_._oneof_case_[0] = kWindowFunc; } inline void Node::clear_window_func() { if (_internal_has_window_func()) { if (GetArenaForAllocation() == 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 (_internal_has_window_func()) { clear_has_node(); ::pg_query::WindowFunc* temp = _impl_.node_.window_func_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.window_func_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::WindowFunc& Node::_internal_window_func() const { return _internal_has_window_func() ? *_impl_.node_.window_func_ : reinterpret_cast< ::pg_query::WindowFunc&>(::pg_query::_WindowFunc_default_instance_); } inline const ::pg_query::WindowFunc& Node::window_func() const { // @@protoc_insertion_point(field_get:pg_query.Node.window_func) return _internal_window_func(); } inline ::pg_query::WindowFunc* Node::unsafe_arena_release_window_func() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.window_func) if (_internal_has_window_func()) { clear_has_node(); ::pg_query::WindowFunc* temp = _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* window_func) { clear_node(); if (window_func) { set_has_window_func(); _impl_.node_.window_func_ = window_func; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.window_func) } inline ::pg_query::WindowFunc* Node::_internal_mutable_window_func() { if (!_internal_has_window_func()) { clear_node(); set_has_window_func(); _impl_.node_.window_func_ = CreateMaybeMessage< ::pg_query::WindowFunc >(GetArenaForAllocation()); } return _impl_.node_.window_func_; } inline ::pg_query::WindowFunc* Node::mutable_window_func() { ::pg_query::WindowFunc* _msg = _internal_mutable_window_func(); // @@protoc_insertion_point(field_mutable:pg_query.Node.window_func) return _msg; } // .pg_query.SubscriptingRef subscripting_ref = 9 [json_name = "SubscriptingRef"]; inline bool Node::_internal_has_subscripting_ref() const { return node_case() == kSubscriptingRef; } inline bool Node::has_subscripting_ref() const { return _internal_has_subscripting_ref(); } inline void Node::set_has_subscripting_ref() { _impl_._oneof_case_[0] = kSubscriptingRef; } inline void Node::clear_subscripting_ref() { if (_internal_has_subscripting_ref()) { if (GetArenaForAllocation() == 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 (_internal_has_subscripting_ref()) { clear_has_node(); ::pg_query::SubscriptingRef* temp = _impl_.node_.subscripting_ref_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.subscripting_ref_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SubscriptingRef& Node::_internal_subscripting_ref() const { return _internal_has_subscripting_ref() ? *_impl_.node_.subscripting_ref_ : reinterpret_cast< ::pg_query::SubscriptingRef&>(::pg_query::_SubscriptingRef_default_instance_); } inline const ::pg_query::SubscriptingRef& Node::subscripting_ref() const { // @@protoc_insertion_point(field_get:pg_query.Node.subscripting_ref) return _internal_subscripting_ref(); } inline ::pg_query::SubscriptingRef* Node::unsafe_arena_release_subscripting_ref() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.subscripting_ref) if (_internal_has_subscripting_ref()) { clear_has_node(); ::pg_query::SubscriptingRef* temp = _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* subscripting_ref) { clear_node(); if (subscripting_ref) { set_has_subscripting_ref(); _impl_.node_.subscripting_ref_ = subscripting_ref; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.subscripting_ref) } inline ::pg_query::SubscriptingRef* Node::_internal_mutable_subscripting_ref() { if (!_internal_has_subscripting_ref()) { clear_node(); set_has_subscripting_ref(); _impl_.node_.subscripting_ref_ = CreateMaybeMessage< ::pg_query::SubscriptingRef >(GetArenaForAllocation()); } return _impl_.node_.subscripting_ref_; } inline ::pg_query::SubscriptingRef* Node::mutable_subscripting_ref() { ::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 = 10 [json_name = "FuncExpr"]; inline bool Node::_internal_has_func_expr() const { return node_case() == kFuncExpr; } inline bool Node::has_func_expr() const { return _internal_has_func_expr(); } inline void Node::set_has_func_expr() { _impl_._oneof_case_[0] = kFuncExpr; } inline void Node::clear_func_expr() { if (_internal_has_func_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_func_expr()) { clear_has_node(); ::pg_query::FuncExpr* temp = _impl_.node_.func_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.func_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FuncExpr& Node::_internal_func_expr() const { return _internal_has_func_expr() ? *_impl_.node_.func_expr_ : reinterpret_cast< ::pg_query::FuncExpr&>(::pg_query::_FuncExpr_default_instance_); } inline const ::pg_query::FuncExpr& Node::func_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.func_expr) return _internal_func_expr(); } inline ::pg_query::FuncExpr* Node::unsafe_arena_release_func_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.func_expr) if (_internal_has_func_expr()) { clear_has_node(); ::pg_query::FuncExpr* temp = _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* func_expr) { clear_node(); if (func_expr) { set_has_func_expr(); _impl_.node_.func_expr_ = func_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.func_expr) } inline ::pg_query::FuncExpr* Node::_internal_mutable_func_expr() { if (!_internal_has_func_expr()) { clear_node(); set_has_func_expr(); _impl_.node_.func_expr_ = CreateMaybeMessage< ::pg_query::FuncExpr >(GetArenaForAllocation()); } return _impl_.node_.func_expr_; } inline ::pg_query::FuncExpr* Node::mutable_func_expr() { ::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 = 11 [json_name = "NamedArgExpr"]; inline bool Node::_internal_has_named_arg_expr() const { return node_case() == kNamedArgExpr; } inline bool Node::has_named_arg_expr() const { return _internal_has_named_arg_expr(); } inline void Node::set_has_named_arg_expr() { _impl_._oneof_case_[0] = kNamedArgExpr; } inline void Node::clear_named_arg_expr() { if (_internal_has_named_arg_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_named_arg_expr()) { clear_has_node(); ::pg_query::NamedArgExpr* temp = _impl_.node_.named_arg_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_named_arg_expr() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.named_arg_expr) return _internal_named_arg_expr(); } inline ::pg_query::NamedArgExpr* Node::unsafe_arena_release_named_arg_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.named_arg_expr) if (_internal_has_named_arg_expr()) { clear_has_node(); ::pg_query::NamedArgExpr* temp = _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* named_arg_expr) { clear_node(); if (named_arg_expr) { set_has_named_arg_expr(); _impl_.node_.named_arg_expr_ = named_arg_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.named_arg_expr) } inline ::pg_query::NamedArgExpr* Node::_internal_mutable_named_arg_expr() { if (!_internal_has_named_arg_expr()) { clear_node(); set_has_named_arg_expr(); _impl_.node_.named_arg_expr_ = CreateMaybeMessage< ::pg_query::NamedArgExpr >(GetArenaForAllocation()); } return _impl_.node_.named_arg_expr_; } inline ::pg_query::NamedArgExpr* Node::mutable_named_arg_expr() { ::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 = 12 [json_name = "OpExpr"]; inline bool Node::_internal_has_op_expr() const { return node_case() == kOpExpr; } inline bool Node::has_op_expr() const { return _internal_has_op_expr(); } inline void Node::set_has_op_expr() { _impl_._oneof_case_[0] = kOpExpr; } inline void Node::clear_op_expr() { if (_internal_has_op_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_op_expr()) { clear_has_node(); ::pg_query::OpExpr* temp = _impl_.node_.op_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.op_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::OpExpr& Node::_internal_op_expr() const { return _internal_has_op_expr() ? *_impl_.node_.op_expr_ : reinterpret_cast< ::pg_query::OpExpr&>(::pg_query::_OpExpr_default_instance_); } inline const ::pg_query::OpExpr& Node::op_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.op_expr) return _internal_op_expr(); } inline ::pg_query::OpExpr* Node::unsafe_arena_release_op_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.op_expr) if (_internal_has_op_expr()) { clear_has_node(); ::pg_query::OpExpr* temp = _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* op_expr) { clear_node(); if (op_expr) { set_has_op_expr(); _impl_.node_.op_expr_ = op_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.op_expr) } inline ::pg_query::OpExpr* Node::_internal_mutable_op_expr() { if (!_internal_has_op_expr()) { clear_node(); set_has_op_expr(); _impl_.node_.op_expr_ = CreateMaybeMessage< ::pg_query::OpExpr >(GetArenaForAllocation()); } return _impl_.node_.op_expr_; } inline ::pg_query::OpExpr* Node::mutable_op_expr() { ::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 = 13 [json_name = "DistinctExpr"]; inline bool Node::_internal_has_distinct_expr() const { return node_case() == kDistinctExpr; } inline bool Node::has_distinct_expr() const { return _internal_has_distinct_expr(); } inline void Node::set_has_distinct_expr() { _impl_._oneof_case_[0] = kDistinctExpr; } inline void Node::clear_distinct_expr() { if (_internal_has_distinct_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_distinct_expr()) { clear_has_node(); ::pg_query::DistinctExpr* temp = _impl_.node_.distinct_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.distinct_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DistinctExpr& Node::_internal_distinct_expr() const { return _internal_has_distinct_expr() ? *_impl_.node_.distinct_expr_ : reinterpret_cast< ::pg_query::DistinctExpr&>(::pg_query::_DistinctExpr_default_instance_); } inline const ::pg_query::DistinctExpr& Node::distinct_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.distinct_expr) return _internal_distinct_expr(); } inline ::pg_query::DistinctExpr* Node::unsafe_arena_release_distinct_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.distinct_expr) if (_internal_has_distinct_expr()) { clear_has_node(); ::pg_query::DistinctExpr* temp = _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* distinct_expr) { clear_node(); if (distinct_expr) { set_has_distinct_expr(); _impl_.node_.distinct_expr_ = distinct_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.distinct_expr) } inline ::pg_query::DistinctExpr* Node::_internal_mutable_distinct_expr() { if (!_internal_has_distinct_expr()) { clear_node(); set_has_distinct_expr(); _impl_.node_.distinct_expr_ = CreateMaybeMessage< ::pg_query::DistinctExpr >(GetArenaForAllocation()); } return _impl_.node_.distinct_expr_; } inline ::pg_query::DistinctExpr* Node::mutable_distinct_expr() { ::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 = 14 [json_name = "NullIfExpr"]; inline bool Node::_internal_has_null_if_expr() const { return node_case() == kNullIfExpr; } inline bool Node::has_null_if_expr() const { return _internal_has_null_if_expr(); } inline void Node::set_has_null_if_expr() { _impl_._oneof_case_[0] = kNullIfExpr; } inline void Node::clear_null_if_expr() { if (_internal_has_null_if_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_null_if_expr()) { clear_has_node(); ::pg_query::NullIfExpr* temp = _impl_.node_.null_if_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_null_if_expr() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.null_if_expr) return _internal_null_if_expr(); } inline ::pg_query::NullIfExpr* Node::unsafe_arena_release_null_if_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.null_if_expr) if (_internal_has_null_if_expr()) { clear_has_node(); ::pg_query::NullIfExpr* temp = _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* null_if_expr) { clear_node(); if (null_if_expr) { set_has_null_if_expr(); _impl_.node_.null_if_expr_ = null_if_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.null_if_expr) } inline ::pg_query::NullIfExpr* Node::_internal_mutable_null_if_expr() { if (!_internal_has_null_if_expr()) { clear_node(); set_has_null_if_expr(); _impl_.node_.null_if_expr_ = CreateMaybeMessage< ::pg_query::NullIfExpr >(GetArenaForAllocation()); } return _impl_.node_.null_if_expr_; } inline ::pg_query::NullIfExpr* Node::mutable_null_if_expr() { ::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 = 15 [json_name = "ScalarArrayOpExpr"]; inline bool Node::_internal_has_scalar_array_op_expr() const { return node_case() == kScalarArrayOpExpr; } inline bool Node::has_scalar_array_op_expr() const { return _internal_has_scalar_array_op_expr(); } inline void Node::set_has_scalar_array_op_expr() { _impl_._oneof_case_[0] = kScalarArrayOpExpr; } inline void Node::clear_scalar_array_op_expr() { if (_internal_has_scalar_array_op_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_scalar_array_op_expr()) { clear_has_node(); ::pg_query::ScalarArrayOpExpr* temp = _impl_.node_.scalar_array_op_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_scalar_array_op_expr() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.scalar_array_op_expr) return _internal_scalar_array_op_expr(); } inline ::pg_query::ScalarArrayOpExpr* Node::unsafe_arena_release_scalar_array_op_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.scalar_array_op_expr) if (_internal_has_scalar_array_op_expr()) { clear_has_node(); ::pg_query::ScalarArrayOpExpr* temp = _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* scalar_array_op_expr) { clear_node(); if (scalar_array_op_expr) { set_has_scalar_array_op_expr(); _impl_.node_.scalar_array_op_expr_ = scalar_array_op_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.scalar_array_op_expr) } inline ::pg_query::ScalarArrayOpExpr* Node::_internal_mutable_scalar_array_op_expr() { if (!_internal_has_scalar_array_op_expr()) { clear_node(); set_has_scalar_array_op_expr(); _impl_.node_.scalar_array_op_expr_ = CreateMaybeMessage< ::pg_query::ScalarArrayOpExpr >(GetArenaForAllocation()); } return _impl_.node_.scalar_array_op_expr_; } inline ::pg_query::ScalarArrayOpExpr* Node::mutable_scalar_array_op_expr() { ::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 = 16 [json_name = "BoolExpr"]; inline bool Node::_internal_has_bool_expr() const { return node_case() == kBoolExpr; } inline bool Node::has_bool_expr() const { return _internal_has_bool_expr(); } inline void Node::set_has_bool_expr() { _impl_._oneof_case_[0] = kBoolExpr; } inline void Node::clear_bool_expr() { if (_internal_has_bool_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_bool_expr()) { clear_has_node(); ::pg_query::BoolExpr* temp = _impl_.node_.bool_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.bool_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::BoolExpr& Node::_internal_bool_expr() const { return _internal_has_bool_expr() ? *_impl_.node_.bool_expr_ : reinterpret_cast< ::pg_query::BoolExpr&>(::pg_query::_BoolExpr_default_instance_); } inline const ::pg_query::BoolExpr& Node::bool_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.bool_expr) return _internal_bool_expr(); } inline ::pg_query::BoolExpr* Node::unsafe_arena_release_bool_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.bool_expr) if (_internal_has_bool_expr()) { clear_has_node(); ::pg_query::BoolExpr* temp = _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* bool_expr) { clear_node(); if (bool_expr) { set_has_bool_expr(); _impl_.node_.bool_expr_ = bool_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.bool_expr) } inline ::pg_query::BoolExpr* Node::_internal_mutable_bool_expr() { if (!_internal_has_bool_expr()) { clear_node(); set_has_bool_expr(); _impl_.node_.bool_expr_ = CreateMaybeMessage< ::pg_query::BoolExpr >(GetArenaForAllocation()); } return _impl_.node_.bool_expr_; } inline ::pg_query::BoolExpr* Node::mutable_bool_expr() { ::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 = 17 [json_name = "SubLink"]; inline bool Node::_internal_has_sub_link() const { return node_case() == kSubLink; } inline bool Node::has_sub_link() const { return _internal_has_sub_link(); } inline void Node::set_has_sub_link() { _impl_._oneof_case_[0] = kSubLink; } inline void Node::clear_sub_link() { if (_internal_has_sub_link()) { if (GetArenaForAllocation() == 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 (_internal_has_sub_link()) { clear_has_node(); ::pg_query::SubLink* temp = _impl_.node_.sub_link_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.sub_link_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SubLink& Node::_internal_sub_link() const { return _internal_has_sub_link() ? *_impl_.node_.sub_link_ : reinterpret_cast< ::pg_query::SubLink&>(::pg_query::_SubLink_default_instance_); } inline const ::pg_query::SubLink& Node::sub_link() const { // @@protoc_insertion_point(field_get:pg_query.Node.sub_link) return _internal_sub_link(); } inline ::pg_query::SubLink* Node::unsafe_arena_release_sub_link() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sub_link) if (_internal_has_sub_link()) { clear_has_node(); ::pg_query::SubLink* temp = _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* sub_link) { clear_node(); if (sub_link) { set_has_sub_link(); _impl_.node_.sub_link_ = sub_link; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sub_link) } inline ::pg_query::SubLink* Node::_internal_mutable_sub_link() { if (!_internal_has_sub_link()) { clear_node(); set_has_sub_link(); _impl_.node_.sub_link_ = CreateMaybeMessage< ::pg_query::SubLink >(GetArenaForAllocation()); } return _impl_.node_.sub_link_; } inline ::pg_query::SubLink* Node::mutable_sub_link() { ::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 = 18 [json_name = "SubPlan"]; inline bool Node::_internal_has_sub_plan() const { return node_case() == kSubPlan; } inline bool Node::has_sub_plan() const { return _internal_has_sub_plan(); } inline void Node::set_has_sub_plan() { _impl_._oneof_case_[0] = kSubPlan; } inline void Node::clear_sub_plan() { if (_internal_has_sub_plan()) { if (GetArenaForAllocation() == 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 (_internal_has_sub_plan()) { clear_has_node(); ::pg_query::SubPlan* temp = _impl_.node_.sub_plan_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.sub_plan_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SubPlan& Node::_internal_sub_plan() const { return _internal_has_sub_plan() ? *_impl_.node_.sub_plan_ : reinterpret_cast< ::pg_query::SubPlan&>(::pg_query::_SubPlan_default_instance_); } inline const ::pg_query::SubPlan& Node::sub_plan() const { // @@protoc_insertion_point(field_get:pg_query.Node.sub_plan) return _internal_sub_plan(); } inline ::pg_query::SubPlan* Node::unsafe_arena_release_sub_plan() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sub_plan) if (_internal_has_sub_plan()) { clear_has_node(); ::pg_query::SubPlan* temp = _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* sub_plan) { clear_node(); if (sub_plan) { set_has_sub_plan(); _impl_.node_.sub_plan_ = sub_plan; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sub_plan) } inline ::pg_query::SubPlan* Node::_internal_mutable_sub_plan() { if (!_internal_has_sub_plan()) { clear_node(); set_has_sub_plan(); _impl_.node_.sub_plan_ = CreateMaybeMessage< ::pg_query::SubPlan >(GetArenaForAllocation()); } return _impl_.node_.sub_plan_; } inline ::pg_query::SubPlan* Node::mutable_sub_plan() { ::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 = 19 [json_name = "AlternativeSubPlan"]; inline bool Node::_internal_has_alternative_sub_plan() const { return node_case() == kAlternativeSubPlan; } inline bool Node::has_alternative_sub_plan() const { return _internal_has_alternative_sub_plan(); } inline void Node::set_has_alternative_sub_plan() { _impl_._oneof_case_[0] = kAlternativeSubPlan; } inline void Node::clear_alternative_sub_plan() { if (_internal_has_alternative_sub_plan()) { if (GetArenaForAllocation() == 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 (_internal_has_alternative_sub_plan()) { clear_has_node(); ::pg_query::AlternativeSubPlan* temp = _impl_.node_.alternative_sub_plan_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alternative_sub_plan() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alternative_sub_plan) return _internal_alternative_sub_plan(); } inline ::pg_query::AlternativeSubPlan* Node::unsafe_arena_release_alternative_sub_plan() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alternative_sub_plan) if (_internal_has_alternative_sub_plan()) { clear_has_node(); ::pg_query::AlternativeSubPlan* temp = _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* alternative_sub_plan) { clear_node(); if (alternative_sub_plan) { set_has_alternative_sub_plan(); _impl_.node_.alternative_sub_plan_ = alternative_sub_plan; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alternative_sub_plan) } inline ::pg_query::AlternativeSubPlan* Node::_internal_mutable_alternative_sub_plan() { if (!_internal_has_alternative_sub_plan()) { clear_node(); set_has_alternative_sub_plan(); _impl_.node_.alternative_sub_plan_ = CreateMaybeMessage< ::pg_query::AlternativeSubPlan >(GetArenaForAllocation()); } return _impl_.node_.alternative_sub_plan_; } inline ::pg_query::AlternativeSubPlan* Node::mutable_alternative_sub_plan() { ::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 = 20 [json_name = "FieldSelect"]; inline bool Node::_internal_has_field_select() const { return node_case() == kFieldSelect; } inline bool Node::has_field_select() const { return _internal_has_field_select(); } inline void Node::set_has_field_select() { _impl_._oneof_case_[0] = kFieldSelect; } inline void Node::clear_field_select() { if (_internal_has_field_select()) { if (GetArenaForAllocation() == 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 (_internal_has_field_select()) { clear_has_node(); ::pg_query::FieldSelect* temp = _impl_.node_.field_select_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.field_select_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FieldSelect& Node::_internal_field_select() const { return _internal_has_field_select() ? *_impl_.node_.field_select_ : reinterpret_cast< ::pg_query::FieldSelect&>(::pg_query::_FieldSelect_default_instance_); } inline const ::pg_query::FieldSelect& Node::field_select() const { // @@protoc_insertion_point(field_get:pg_query.Node.field_select) return _internal_field_select(); } inline ::pg_query::FieldSelect* Node::unsafe_arena_release_field_select() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.field_select) if (_internal_has_field_select()) { clear_has_node(); ::pg_query::FieldSelect* temp = _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* field_select) { clear_node(); if (field_select) { set_has_field_select(); _impl_.node_.field_select_ = field_select; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.field_select) } inline ::pg_query::FieldSelect* Node::_internal_mutable_field_select() { if (!_internal_has_field_select()) { clear_node(); set_has_field_select(); _impl_.node_.field_select_ = CreateMaybeMessage< ::pg_query::FieldSelect >(GetArenaForAllocation()); } return _impl_.node_.field_select_; } inline ::pg_query::FieldSelect* Node::mutable_field_select() { ::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 = 21 [json_name = "FieldStore"]; inline bool Node::_internal_has_field_store() const { return node_case() == kFieldStore; } inline bool Node::has_field_store() const { return _internal_has_field_store(); } inline void Node::set_has_field_store() { _impl_._oneof_case_[0] = kFieldStore; } inline void Node::clear_field_store() { if (_internal_has_field_store()) { if (GetArenaForAllocation() == 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 (_internal_has_field_store()) { clear_has_node(); ::pg_query::FieldStore* temp = _impl_.node_.field_store_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.field_store_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FieldStore& Node::_internal_field_store() const { return _internal_has_field_store() ? *_impl_.node_.field_store_ : reinterpret_cast< ::pg_query::FieldStore&>(::pg_query::_FieldStore_default_instance_); } inline const ::pg_query::FieldStore& Node::field_store() const { // @@protoc_insertion_point(field_get:pg_query.Node.field_store) return _internal_field_store(); } inline ::pg_query::FieldStore* Node::unsafe_arena_release_field_store() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.field_store) if (_internal_has_field_store()) { clear_has_node(); ::pg_query::FieldStore* temp = _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* field_store) { clear_node(); if (field_store) { set_has_field_store(); _impl_.node_.field_store_ = field_store; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.field_store) } inline ::pg_query::FieldStore* Node::_internal_mutable_field_store() { if (!_internal_has_field_store()) { clear_node(); set_has_field_store(); _impl_.node_.field_store_ = CreateMaybeMessage< ::pg_query::FieldStore >(GetArenaForAllocation()); } return _impl_.node_.field_store_; } inline ::pg_query::FieldStore* Node::mutable_field_store() { ::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 = 22 [json_name = "RelabelType"]; inline bool Node::_internal_has_relabel_type() const { return node_case() == kRelabelType; } inline bool Node::has_relabel_type() const { return _internal_has_relabel_type(); } inline void Node::set_has_relabel_type() { _impl_._oneof_case_[0] = kRelabelType; } inline void Node::clear_relabel_type() { if (_internal_has_relabel_type()) { if (GetArenaForAllocation() == 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 (_internal_has_relabel_type()) { clear_has_node(); ::pg_query::RelabelType* temp = _impl_.node_.relabel_type_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.relabel_type_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RelabelType& Node::_internal_relabel_type() const { return _internal_has_relabel_type() ? *_impl_.node_.relabel_type_ : reinterpret_cast< ::pg_query::RelabelType&>(::pg_query::_RelabelType_default_instance_); } inline const ::pg_query::RelabelType& Node::relabel_type() const { // @@protoc_insertion_point(field_get:pg_query.Node.relabel_type) return _internal_relabel_type(); } inline ::pg_query::RelabelType* Node::unsafe_arena_release_relabel_type() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.relabel_type) if (_internal_has_relabel_type()) { clear_has_node(); ::pg_query::RelabelType* temp = _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* relabel_type) { clear_node(); if (relabel_type) { set_has_relabel_type(); _impl_.node_.relabel_type_ = relabel_type; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.relabel_type) } inline ::pg_query::RelabelType* Node::_internal_mutable_relabel_type() { if (!_internal_has_relabel_type()) { clear_node(); set_has_relabel_type(); _impl_.node_.relabel_type_ = CreateMaybeMessage< ::pg_query::RelabelType >(GetArenaForAllocation()); } return _impl_.node_.relabel_type_; } inline ::pg_query::RelabelType* Node::mutable_relabel_type() { ::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 = 23 [json_name = "CoerceViaIO"]; inline bool Node::_internal_has_coerce_via_io() const { return node_case() == kCoerceViaIo; } inline bool Node::has_coerce_via_io() const { return _internal_has_coerce_via_io(); } inline void Node::set_has_coerce_via_io() { _impl_._oneof_case_[0] = kCoerceViaIo; } inline void Node::clear_coerce_via_io() { if (_internal_has_coerce_via_io()) { if (GetArenaForAllocation() == 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 (_internal_has_coerce_via_io()) { clear_has_node(); ::pg_query::CoerceViaIO* temp = _impl_.node_.coerce_via_io_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_coerce_via_io() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.coerce_via_io) return _internal_coerce_via_io(); } inline ::pg_query::CoerceViaIO* Node::unsafe_arena_release_coerce_via_io() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.coerce_via_io) if (_internal_has_coerce_via_io()) { clear_has_node(); ::pg_query::CoerceViaIO* temp = _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* coerce_via_io) { clear_node(); if (coerce_via_io) { set_has_coerce_via_io(); _impl_.node_.coerce_via_io_ = coerce_via_io; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.coerce_via_io) } inline ::pg_query::CoerceViaIO* Node::_internal_mutable_coerce_via_io() { if (!_internal_has_coerce_via_io()) { clear_node(); set_has_coerce_via_io(); _impl_.node_.coerce_via_io_ = CreateMaybeMessage< ::pg_query::CoerceViaIO >(GetArenaForAllocation()); } return _impl_.node_.coerce_via_io_; } inline ::pg_query::CoerceViaIO* Node::mutable_coerce_via_io() { ::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 = 24 [json_name = "ArrayCoerceExpr"]; inline bool Node::_internal_has_array_coerce_expr() const { return node_case() == kArrayCoerceExpr; } inline bool Node::has_array_coerce_expr() const { return _internal_has_array_coerce_expr(); } inline void Node::set_has_array_coerce_expr() { _impl_._oneof_case_[0] = kArrayCoerceExpr; } inline void Node::clear_array_coerce_expr() { if (_internal_has_array_coerce_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_array_coerce_expr()) { clear_has_node(); ::pg_query::ArrayCoerceExpr* temp = _impl_.node_.array_coerce_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_array_coerce_expr() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.array_coerce_expr) return _internal_array_coerce_expr(); } inline ::pg_query::ArrayCoerceExpr* Node::unsafe_arena_release_array_coerce_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.array_coerce_expr) if (_internal_has_array_coerce_expr()) { clear_has_node(); ::pg_query::ArrayCoerceExpr* temp = _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* array_coerce_expr) { clear_node(); if (array_coerce_expr) { set_has_array_coerce_expr(); _impl_.node_.array_coerce_expr_ = array_coerce_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.array_coerce_expr) } inline ::pg_query::ArrayCoerceExpr* Node::_internal_mutable_array_coerce_expr() { if (!_internal_has_array_coerce_expr()) { clear_node(); set_has_array_coerce_expr(); _impl_.node_.array_coerce_expr_ = CreateMaybeMessage< ::pg_query::ArrayCoerceExpr >(GetArenaForAllocation()); } return _impl_.node_.array_coerce_expr_; } inline ::pg_query::ArrayCoerceExpr* Node::mutable_array_coerce_expr() { ::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 = 25 [json_name = "ConvertRowtypeExpr"]; inline bool Node::_internal_has_convert_rowtype_expr() const { return node_case() == kConvertRowtypeExpr; } inline bool Node::has_convert_rowtype_expr() const { return _internal_has_convert_rowtype_expr(); } inline void Node::set_has_convert_rowtype_expr() { _impl_._oneof_case_[0] = kConvertRowtypeExpr; } inline void Node::clear_convert_rowtype_expr() { if (_internal_has_convert_rowtype_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_convert_rowtype_expr()) { clear_has_node(); ::pg_query::ConvertRowtypeExpr* temp = _impl_.node_.convert_rowtype_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_convert_rowtype_expr() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.convert_rowtype_expr) return _internal_convert_rowtype_expr(); } inline ::pg_query::ConvertRowtypeExpr* Node::unsafe_arena_release_convert_rowtype_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.convert_rowtype_expr) if (_internal_has_convert_rowtype_expr()) { clear_has_node(); ::pg_query::ConvertRowtypeExpr* temp = _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* convert_rowtype_expr) { clear_node(); if (convert_rowtype_expr) { set_has_convert_rowtype_expr(); _impl_.node_.convert_rowtype_expr_ = convert_rowtype_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.convert_rowtype_expr) } inline ::pg_query::ConvertRowtypeExpr* Node::_internal_mutable_convert_rowtype_expr() { if (!_internal_has_convert_rowtype_expr()) { clear_node(); set_has_convert_rowtype_expr(); _impl_.node_.convert_rowtype_expr_ = CreateMaybeMessage< ::pg_query::ConvertRowtypeExpr >(GetArenaForAllocation()); } return _impl_.node_.convert_rowtype_expr_; } inline ::pg_query::ConvertRowtypeExpr* Node::mutable_convert_rowtype_expr() { ::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 = 26 [json_name = "CollateExpr"]; inline bool Node::_internal_has_collate_expr() const { return node_case() == kCollateExpr; } inline bool Node::has_collate_expr() const { return _internal_has_collate_expr(); } inline void Node::set_has_collate_expr() { _impl_._oneof_case_[0] = kCollateExpr; } inline void Node::clear_collate_expr() { if (_internal_has_collate_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_collate_expr()) { clear_has_node(); ::pg_query::CollateExpr* temp = _impl_.node_.collate_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.collate_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CollateExpr& Node::_internal_collate_expr() const { return _internal_has_collate_expr() ? *_impl_.node_.collate_expr_ : reinterpret_cast< ::pg_query::CollateExpr&>(::pg_query::_CollateExpr_default_instance_); } inline const ::pg_query::CollateExpr& Node::collate_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.collate_expr) return _internal_collate_expr(); } inline ::pg_query::CollateExpr* Node::unsafe_arena_release_collate_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.collate_expr) if (_internal_has_collate_expr()) { clear_has_node(); ::pg_query::CollateExpr* temp = _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* collate_expr) { clear_node(); if (collate_expr) { set_has_collate_expr(); _impl_.node_.collate_expr_ = collate_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.collate_expr) } inline ::pg_query::CollateExpr* Node::_internal_mutable_collate_expr() { if (!_internal_has_collate_expr()) { clear_node(); set_has_collate_expr(); _impl_.node_.collate_expr_ = CreateMaybeMessage< ::pg_query::CollateExpr >(GetArenaForAllocation()); } return _impl_.node_.collate_expr_; } inline ::pg_query::CollateExpr* Node::mutable_collate_expr() { ::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 = 27 [json_name = "CaseExpr"]; inline bool Node::_internal_has_case_expr() const { return node_case() == kCaseExpr; } inline bool Node::has_case_expr() const { return _internal_has_case_expr(); } inline void Node::set_has_case_expr() { _impl_._oneof_case_[0] = kCaseExpr; } inline void Node::clear_case_expr() { if (_internal_has_case_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_case_expr()) { clear_has_node(); ::pg_query::CaseExpr* temp = _impl_.node_.case_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.case_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CaseExpr& Node::_internal_case_expr() const { return _internal_has_case_expr() ? *_impl_.node_.case_expr_ : reinterpret_cast< ::pg_query::CaseExpr&>(::pg_query::_CaseExpr_default_instance_); } inline const ::pg_query::CaseExpr& Node::case_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.case_expr) return _internal_case_expr(); } inline ::pg_query::CaseExpr* Node::unsafe_arena_release_case_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.case_expr) if (_internal_has_case_expr()) { clear_has_node(); ::pg_query::CaseExpr* temp = _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* case_expr) { clear_node(); if (case_expr) { set_has_case_expr(); _impl_.node_.case_expr_ = case_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.case_expr) } inline ::pg_query::CaseExpr* Node::_internal_mutable_case_expr() { if (!_internal_has_case_expr()) { clear_node(); set_has_case_expr(); _impl_.node_.case_expr_ = CreateMaybeMessage< ::pg_query::CaseExpr >(GetArenaForAllocation()); } return _impl_.node_.case_expr_; } inline ::pg_query::CaseExpr* Node::mutable_case_expr() { ::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 = 28 [json_name = "CaseWhen"]; inline bool Node::_internal_has_case_when() const { return node_case() == kCaseWhen; } inline bool Node::has_case_when() const { return _internal_has_case_when(); } inline void Node::set_has_case_when() { _impl_._oneof_case_[0] = kCaseWhen; } inline void Node::clear_case_when() { if (_internal_has_case_when()) { if (GetArenaForAllocation() == 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 (_internal_has_case_when()) { clear_has_node(); ::pg_query::CaseWhen* temp = _impl_.node_.case_when_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.case_when_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CaseWhen& Node::_internal_case_when() const { return _internal_has_case_when() ? *_impl_.node_.case_when_ : reinterpret_cast< ::pg_query::CaseWhen&>(::pg_query::_CaseWhen_default_instance_); } inline const ::pg_query::CaseWhen& Node::case_when() const { // @@protoc_insertion_point(field_get:pg_query.Node.case_when) return _internal_case_when(); } inline ::pg_query::CaseWhen* Node::unsafe_arena_release_case_when() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.case_when) if (_internal_has_case_when()) { clear_has_node(); ::pg_query::CaseWhen* temp = _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* case_when) { clear_node(); if (case_when) { set_has_case_when(); _impl_.node_.case_when_ = case_when; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.case_when) } inline ::pg_query::CaseWhen* Node::_internal_mutable_case_when() { if (!_internal_has_case_when()) { clear_node(); set_has_case_when(); _impl_.node_.case_when_ = CreateMaybeMessage< ::pg_query::CaseWhen >(GetArenaForAllocation()); } return _impl_.node_.case_when_; } inline ::pg_query::CaseWhen* Node::mutable_case_when() { ::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 = 29 [json_name = "CaseTestExpr"]; inline bool Node::_internal_has_case_test_expr() const { return node_case() == kCaseTestExpr; } inline bool Node::has_case_test_expr() const { return _internal_has_case_test_expr(); } inline void Node::set_has_case_test_expr() { _impl_._oneof_case_[0] = kCaseTestExpr; } inline void Node::clear_case_test_expr() { if (_internal_has_case_test_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_case_test_expr()) { clear_has_node(); ::pg_query::CaseTestExpr* temp = _impl_.node_.case_test_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_case_test_expr() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.case_test_expr) return _internal_case_test_expr(); } inline ::pg_query::CaseTestExpr* Node::unsafe_arena_release_case_test_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.case_test_expr) if (_internal_has_case_test_expr()) { clear_has_node(); ::pg_query::CaseTestExpr* temp = _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* case_test_expr) { clear_node(); if (case_test_expr) { set_has_case_test_expr(); _impl_.node_.case_test_expr_ = case_test_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.case_test_expr) } inline ::pg_query::CaseTestExpr* Node::_internal_mutable_case_test_expr() { if (!_internal_has_case_test_expr()) { clear_node(); set_has_case_test_expr(); _impl_.node_.case_test_expr_ = CreateMaybeMessage< ::pg_query::CaseTestExpr >(GetArenaForAllocation()); } return _impl_.node_.case_test_expr_; } inline ::pg_query::CaseTestExpr* Node::mutable_case_test_expr() { ::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 = 30 [json_name = "ArrayExpr"]; inline bool Node::_internal_has_array_expr() const { return node_case() == kArrayExpr; } inline bool Node::has_array_expr() const { return _internal_has_array_expr(); } inline void Node::set_has_array_expr() { _impl_._oneof_case_[0] = kArrayExpr; } inline void Node::clear_array_expr() { if (_internal_has_array_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_array_expr()) { clear_has_node(); ::pg_query::ArrayExpr* temp = _impl_.node_.array_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.array_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ArrayExpr& Node::_internal_array_expr() const { return _internal_has_array_expr() ? *_impl_.node_.array_expr_ : reinterpret_cast< ::pg_query::ArrayExpr&>(::pg_query::_ArrayExpr_default_instance_); } inline const ::pg_query::ArrayExpr& Node::array_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.array_expr) return _internal_array_expr(); } inline ::pg_query::ArrayExpr* Node::unsafe_arena_release_array_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.array_expr) if (_internal_has_array_expr()) { clear_has_node(); ::pg_query::ArrayExpr* temp = _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* array_expr) { clear_node(); if (array_expr) { set_has_array_expr(); _impl_.node_.array_expr_ = array_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.array_expr) } inline ::pg_query::ArrayExpr* Node::_internal_mutable_array_expr() { if (!_internal_has_array_expr()) { clear_node(); set_has_array_expr(); _impl_.node_.array_expr_ = CreateMaybeMessage< ::pg_query::ArrayExpr >(GetArenaForAllocation()); } return _impl_.node_.array_expr_; } inline ::pg_query::ArrayExpr* Node::mutable_array_expr() { ::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 = 31 [json_name = "RowExpr"]; inline bool Node::_internal_has_row_expr() const { return node_case() == kRowExpr; } inline bool Node::has_row_expr() const { return _internal_has_row_expr(); } inline void Node::set_has_row_expr() { _impl_._oneof_case_[0] = kRowExpr; } inline void Node::clear_row_expr() { if (_internal_has_row_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_row_expr()) { clear_has_node(); ::pg_query::RowExpr* temp = _impl_.node_.row_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.row_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RowExpr& Node::_internal_row_expr() const { return _internal_has_row_expr() ? *_impl_.node_.row_expr_ : reinterpret_cast< ::pg_query::RowExpr&>(::pg_query::_RowExpr_default_instance_); } inline const ::pg_query::RowExpr& Node::row_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.row_expr) return _internal_row_expr(); } inline ::pg_query::RowExpr* Node::unsafe_arena_release_row_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.row_expr) if (_internal_has_row_expr()) { clear_has_node(); ::pg_query::RowExpr* temp = _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* row_expr) { clear_node(); if (row_expr) { set_has_row_expr(); _impl_.node_.row_expr_ = row_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.row_expr) } inline ::pg_query::RowExpr* Node::_internal_mutable_row_expr() { if (!_internal_has_row_expr()) { clear_node(); set_has_row_expr(); _impl_.node_.row_expr_ = CreateMaybeMessage< ::pg_query::RowExpr >(GetArenaForAllocation()); } return _impl_.node_.row_expr_; } inline ::pg_query::RowExpr* Node::mutable_row_expr() { ::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 = 32 [json_name = "RowCompareExpr"]; inline bool Node::_internal_has_row_compare_expr() const { return node_case() == kRowCompareExpr; } inline bool Node::has_row_compare_expr() const { return _internal_has_row_compare_expr(); } inline void Node::set_has_row_compare_expr() { _impl_._oneof_case_[0] = kRowCompareExpr; } inline void Node::clear_row_compare_expr() { if (_internal_has_row_compare_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_row_compare_expr()) { clear_has_node(); ::pg_query::RowCompareExpr* temp = _impl_.node_.row_compare_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_row_compare_expr() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.row_compare_expr) return _internal_row_compare_expr(); } inline ::pg_query::RowCompareExpr* Node::unsafe_arena_release_row_compare_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.row_compare_expr) if (_internal_has_row_compare_expr()) { clear_has_node(); ::pg_query::RowCompareExpr* temp = _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* row_compare_expr) { clear_node(); if (row_compare_expr) { set_has_row_compare_expr(); _impl_.node_.row_compare_expr_ = row_compare_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.row_compare_expr) } inline ::pg_query::RowCompareExpr* Node::_internal_mutable_row_compare_expr() { if (!_internal_has_row_compare_expr()) { clear_node(); set_has_row_compare_expr(); _impl_.node_.row_compare_expr_ = CreateMaybeMessage< ::pg_query::RowCompareExpr >(GetArenaForAllocation()); } return _impl_.node_.row_compare_expr_; } inline ::pg_query::RowCompareExpr* Node::mutable_row_compare_expr() { ::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 = 33 [json_name = "CoalesceExpr"]; inline bool Node::_internal_has_coalesce_expr() const { return node_case() == kCoalesceExpr; } inline bool Node::has_coalesce_expr() const { return _internal_has_coalesce_expr(); } inline void Node::set_has_coalesce_expr() { _impl_._oneof_case_[0] = kCoalesceExpr; } inline void Node::clear_coalesce_expr() { if (_internal_has_coalesce_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_coalesce_expr()) { clear_has_node(); ::pg_query::CoalesceExpr* temp = _impl_.node_.coalesce_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.coalesce_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CoalesceExpr& Node::_internal_coalesce_expr() const { return _internal_has_coalesce_expr() ? *_impl_.node_.coalesce_expr_ : reinterpret_cast< ::pg_query::CoalesceExpr&>(::pg_query::_CoalesceExpr_default_instance_); } inline const ::pg_query::CoalesceExpr& Node::coalesce_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.coalesce_expr) return _internal_coalesce_expr(); } inline ::pg_query::CoalesceExpr* Node::unsafe_arena_release_coalesce_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.coalesce_expr) if (_internal_has_coalesce_expr()) { clear_has_node(); ::pg_query::CoalesceExpr* temp = _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* coalesce_expr) { clear_node(); if (coalesce_expr) { set_has_coalesce_expr(); _impl_.node_.coalesce_expr_ = coalesce_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.coalesce_expr) } inline ::pg_query::CoalesceExpr* Node::_internal_mutable_coalesce_expr() { if (!_internal_has_coalesce_expr()) { clear_node(); set_has_coalesce_expr(); _impl_.node_.coalesce_expr_ = CreateMaybeMessage< ::pg_query::CoalesceExpr >(GetArenaForAllocation()); } return _impl_.node_.coalesce_expr_; } inline ::pg_query::CoalesceExpr* Node::mutable_coalesce_expr() { ::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 = 34 [json_name = "MinMaxExpr"]; inline bool Node::_internal_has_min_max_expr() const { return node_case() == kMinMaxExpr; } inline bool Node::has_min_max_expr() const { return _internal_has_min_max_expr(); } inline void Node::set_has_min_max_expr() { _impl_._oneof_case_[0] = kMinMaxExpr; } inline void Node::clear_min_max_expr() { if (_internal_has_min_max_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_min_max_expr()) { clear_has_node(); ::pg_query::MinMaxExpr* temp = _impl_.node_.min_max_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_min_max_expr() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.min_max_expr) return _internal_min_max_expr(); } inline ::pg_query::MinMaxExpr* Node::unsafe_arena_release_min_max_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.min_max_expr) if (_internal_has_min_max_expr()) { clear_has_node(); ::pg_query::MinMaxExpr* temp = _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* min_max_expr) { clear_node(); if (min_max_expr) { set_has_min_max_expr(); _impl_.node_.min_max_expr_ = min_max_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.min_max_expr) } inline ::pg_query::MinMaxExpr* Node::_internal_mutable_min_max_expr() { if (!_internal_has_min_max_expr()) { clear_node(); set_has_min_max_expr(); _impl_.node_.min_max_expr_ = CreateMaybeMessage< ::pg_query::MinMaxExpr >(GetArenaForAllocation()); } return _impl_.node_.min_max_expr_; } inline ::pg_query::MinMaxExpr* Node::mutable_min_max_expr() { ::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 = 35 [json_name = "SQLValueFunction"]; inline bool Node::_internal_has_sqlvalue_function() const { return node_case() == kSqlvalueFunction; } inline bool Node::has_sqlvalue_function() const { return _internal_has_sqlvalue_function(); } inline void Node::set_has_sqlvalue_function() { _impl_._oneof_case_[0] = kSqlvalueFunction; } inline void Node::clear_sqlvalue_function() { if (_internal_has_sqlvalue_function()) { if (GetArenaForAllocation() == 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 (_internal_has_sqlvalue_function()) { clear_has_node(); ::pg_query::SQLValueFunction* temp = _impl_.node_.sqlvalue_function_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.sqlvalue_function_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SQLValueFunction& Node::_internal_sqlvalue_function() const { return _internal_has_sqlvalue_function() ? *_impl_.node_.sqlvalue_function_ : reinterpret_cast< ::pg_query::SQLValueFunction&>(::pg_query::_SQLValueFunction_default_instance_); } inline const ::pg_query::SQLValueFunction& Node::sqlvalue_function() const { // @@protoc_insertion_point(field_get:pg_query.Node.sqlvalue_function) return _internal_sqlvalue_function(); } inline ::pg_query::SQLValueFunction* Node::unsafe_arena_release_sqlvalue_function() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sqlvalue_function) if (_internal_has_sqlvalue_function()) { clear_has_node(); ::pg_query::SQLValueFunction* temp = _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* sqlvalue_function) { clear_node(); if (sqlvalue_function) { set_has_sqlvalue_function(); _impl_.node_.sqlvalue_function_ = sqlvalue_function; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sqlvalue_function) } inline ::pg_query::SQLValueFunction* Node::_internal_mutable_sqlvalue_function() { if (!_internal_has_sqlvalue_function()) { clear_node(); set_has_sqlvalue_function(); _impl_.node_.sqlvalue_function_ = CreateMaybeMessage< ::pg_query::SQLValueFunction >(GetArenaForAllocation()); } return _impl_.node_.sqlvalue_function_; } inline ::pg_query::SQLValueFunction* Node::mutable_sqlvalue_function() { ::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 = 36 [json_name = "XmlExpr"]; inline bool Node::_internal_has_xml_expr() const { return node_case() == kXmlExpr; } inline bool Node::has_xml_expr() const { return _internal_has_xml_expr(); } inline void Node::set_has_xml_expr() { _impl_._oneof_case_[0] = kXmlExpr; } inline void Node::clear_xml_expr() { if (_internal_has_xml_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_xml_expr()) { clear_has_node(); ::pg_query::XmlExpr* temp = _impl_.node_.xml_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.xml_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::XmlExpr& Node::_internal_xml_expr() const { return _internal_has_xml_expr() ? *_impl_.node_.xml_expr_ : reinterpret_cast< ::pg_query::XmlExpr&>(::pg_query::_XmlExpr_default_instance_); } inline const ::pg_query::XmlExpr& Node::xml_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.xml_expr) return _internal_xml_expr(); } inline ::pg_query::XmlExpr* Node::unsafe_arena_release_xml_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.xml_expr) if (_internal_has_xml_expr()) { clear_has_node(); ::pg_query::XmlExpr* temp = _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* xml_expr) { clear_node(); if (xml_expr) { set_has_xml_expr(); _impl_.node_.xml_expr_ = xml_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.xml_expr) } inline ::pg_query::XmlExpr* Node::_internal_mutable_xml_expr() { if (!_internal_has_xml_expr()) { clear_node(); set_has_xml_expr(); _impl_.node_.xml_expr_ = CreateMaybeMessage< ::pg_query::XmlExpr >(GetArenaForAllocation()); } return _impl_.node_.xml_expr_; } inline ::pg_query::XmlExpr* Node::mutable_xml_expr() { ::pg_query::XmlExpr* _msg = _internal_mutable_xml_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.xml_expr) return _msg; } // .pg_query.NullTest null_test = 37 [json_name = "NullTest"]; inline bool Node::_internal_has_null_test() const { return node_case() == kNullTest; } inline bool Node::has_null_test() const { return _internal_has_null_test(); } inline void Node::set_has_null_test() { _impl_._oneof_case_[0] = kNullTest; } inline void Node::clear_null_test() { if (_internal_has_null_test()) { if (GetArenaForAllocation() == 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 (_internal_has_null_test()) { clear_has_node(); ::pg_query::NullTest* temp = _impl_.node_.null_test_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.null_test_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::NullTest& Node::_internal_null_test() const { return _internal_has_null_test() ? *_impl_.node_.null_test_ : reinterpret_cast< ::pg_query::NullTest&>(::pg_query::_NullTest_default_instance_); } inline const ::pg_query::NullTest& Node::null_test() const { // @@protoc_insertion_point(field_get:pg_query.Node.null_test) return _internal_null_test(); } inline ::pg_query::NullTest* Node::unsafe_arena_release_null_test() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.null_test) if (_internal_has_null_test()) { clear_has_node(); ::pg_query::NullTest* temp = _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* null_test) { clear_node(); if (null_test) { set_has_null_test(); _impl_.node_.null_test_ = null_test; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.null_test) } inline ::pg_query::NullTest* Node::_internal_mutable_null_test() { if (!_internal_has_null_test()) { clear_node(); set_has_null_test(); _impl_.node_.null_test_ = CreateMaybeMessage< ::pg_query::NullTest >(GetArenaForAllocation()); } return _impl_.node_.null_test_; } inline ::pg_query::NullTest* Node::mutable_null_test() { ::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 = 38 [json_name = "BooleanTest"]; inline bool Node::_internal_has_boolean_test() const { return node_case() == kBooleanTest; } inline bool Node::has_boolean_test() const { return _internal_has_boolean_test(); } inline void Node::set_has_boolean_test() { _impl_._oneof_case_[0] = kBooleanTest; } inline void Node::clear_boolean_test() { if (_internal_has_boolean_test()) { if (GetArenaForAllocation() == 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 (_internal_has_boolean_test()) { clear_has_node(); ::pg_query::BooleanTest* temp = _impl_.node_.boolean_test_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.boolean_test_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::BooleanTest& Node::_internal_boolean_test() const { return _internal_has_boolean_test() ? *_impl_.node_.boolean_test_ : reinterpret_cast< ::pg_query::BooleanTest&>(::pg_query::_BooleanTest_default_instance_); } inline const ::pg_query::BooleanTest& Node::boolean_test() const { // @@protoc_insertion_point(field_get:pg_query.Node.boolean_test) return _internal_boolean_test(); } inline ::pg_query::BooleanTest* Node::unsafe_arena_release_boolean_test() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.boolean_test) if (_internal_has_boolean_test()) { clear_has_node(); ::pg_query::BooleanTest* temp = _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* boolean_test) { clear_node(); if (boolean_test) { set_has_boolean_test(); _impl_.node_.boolean_test_ = boolean_test; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.boolean_test) } inline ::pg_query::BooleanTest* Node::_internal_mutable_boolean_test() { if (!_internal_has_boolean_test()) { clear_node(); set_has_boolean_test(); _impl_.node_.boolean_test_ = CreateMaybeMessage< ::pg_query::BooleanTest >(GetArenaForAllocation()); } return _impl_.node_.boolean_test_; } inline ::pg_query::BooleanTest* Node::mutable_boolean_test() { ::pg_query::BooleanTest* _msg = _internal_mutable_boolean_test(); // @@protoc_insertion_point(field_mutable:pg_query.Node.boolean_test) return _msg; } // .pg_query.CoerceToDomain coerce_to_domain = 39 [json_name = "CoerceToDomain"]; inline bool Node::_internal_has_coerce_to_domain() const { return node_case() == kCoerceToDomain; } inline bool Node::has_coerce_to_domain() const { return _internal_has_coerce_to_domain(); } inline void Node::set_has_coerce_to_domain() { _impl_._oneof_case_[0] = kCoerceToDomain; } inline void Node::clear_coerce_to_domain() { if (_internal_has_coerce_to_domain()) { if (GetArenaForAllocation() == 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 (_internal_has_coerce_to_domain()) { clear_has_node(); ::pg_query::CoerceToDomain* temp = _impl_.node_.coerce_to_domain_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_coerce_to_domain() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.coerce_to_domain) return _internal_coerce_to_domain(); } inline ::pg_query::CoerceToDomain* Node::unsafe_arena_release_coerce_to_domain() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.coerce_to_domain) if (_internal_has_coerce_to_domain()) { clear_has_node(); ::pg_query::CoerceToDomain* temp = _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* coerce_to_domain) { clear_node(); if (coerce_to_domain) { set_has_coerce_to_domain(); _impl_.node_.coerce_to_domain_ = coerce_to_domain; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.coerce_to_domain) } inline ::pg_query::CoerceToDomain* Node::_internal_mutable_coerce_to_domain() { if (!_internal_has_coerce_to_domain()) { clear_node(); set_has_coerce_to_domain(); _impl_.node_.coerce_to_domain_ = CreateMaybeMessage< ::pg_query::CoerceToDomain >(GetArenaForAllocation()); } return _impl_.node_.coerce_to_domain_; } inline ::pg_query::CoerceToDomain* Node::mutable_coerce_to_domain() { ::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 = 40 [json_name = "CoerceToDomainValue"]; inline bool Node::_internal_has_coerce_to_domain_value() const { return node_case() == kCoerceToDomainValue; } inline bool Node::has_coerce_to_domain_value() const { return _internal_has_coerce_to_domain_value(); } inline void Node::set_has_coerce_to_domain_value() { _impl_._oneof_case_[0] = kCoerceToDomainValue; } inline void Node::clear_coerce_to_domain_value() { if (_internal_has_coerce_to_domain_value()) { if (GetArenaForAllocation() == 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 (_internal_has_coerce_to_domain_value()) { clear_has_node(); ::pg_query::CoerceToDomainValue* temp = _impl_.node_.coerce_to_domain_value_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_coerce_to_domain_value() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.coerce_to_domain_value) return _internal_coerce_to_domain_value(); } inline ::pg_query::CoerceToDomainValue* Node::unsafe_arena_release_coerce_to_domain_value() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.coerce_to_domain_value) if (_internal_has_coerce_to_domain_value()) { clear_has_node(); ::pg_query::CoerceToDomainValue* temp = _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* coerce_to_domain_value) { clear_node(); if (coerce_to_domain_value) { set_has_coerce_to_domain_value(); _impl_.node_.coerce_to_domain_value_ = coerce_to_domain_value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.coerce_to_domain_value) } inline ::pg_query::CoerceToDomainValue* Node::_internal_mutable_coerce_to_domain_value() { if (!_internal_has_coerce_to_domain_value()) { clear_node(); set_has_coerce_to_domain_value(); _impl_.node_.coerce_to_domain_value_ = CreateMaybeMessage< ::pg_query::CoerceToDomainValue >(GetArenaForAllocation()); } return _impl_.node_.coerce_to_domain_value_; } inline ::pg_query::CoerceToDomainValue* Node::mutable_coerce_to_domain_value() { ::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 = 41 [json_name = "SetToDefault"]; inline bool Node::_internal_has_set_to_default() const { return node_case() == kSetToDefault; } inline bool Node::has_set_to_default() const { return _internal_has_set_to_default(); } inline void Node::set_has_set_to_default() { _impl_._oneof_case_[0] = kSetToDefault; } inline void Node::clear_set_to_default() { if (_internal_has_set_to_default()) { if (GetArenaForAllocation() == 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 (_internal_has_set_to_default()) { clear_has_node(); ::pg_query::SetToDefault* temp = _impl_.node_.set_to_default_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_set_to_default() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.set_to_default) return _internal_set_to_default(); } inline ::pg_query::SetToDefault* Node::unsafe_arena_release_set_to_default() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.set_to_default) if (_internal_has_set_to_default()) { clear_has_node(); ::pg_query::SetToDefault* temp = _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* set_to_default) { clear_node(); if (set_to_default) { set_has_set_to_default(); _impl_.node_.set_to_default_ = set_to_default; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.set_to_default) } inline ::pg_query::SetToDefault* Node::_internal_mutable_set_to_default() { if (!_internal_has_set_to_default()) { clear_node(); set_has_set_to_default(); _impl_.node_.set_to_default_ = CreateMaybeMessage< ::pg_query::SetToDefault >(GetArenaForAllocation()); } return _impl_.node_.set_to_default_; } inline ::pg_query::SetToDefault* Node::mutable_set_to_default() { ::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 = 42 [json_name = "CurrentOfExpr"]; inline bool Node::_internal_has_current_of_expr() const { return node_case() == kCurrentOfExpr; } inline bool Node::has_current_of_expr() const { return _internal_has_current_of_expr(); } inline void Node::set_has_current_of_expr() { _impl_._oneof_case_[0] = kCurrentOfExpr; } inline void Node::clear_current_of_expr() { if (_internal_has_current_of_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_current_of_expr()) { clear_has_node(); ::pg_query::CurrentOfExpr* temp = _impl_.node_.current_of_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_current_of_expr() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.current_of_expr) return _internal_current_of_expr(); } inline ::pg_query::CurrentOfExpr* Node::unsafe_arena_release_current_of_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.current_of_expr) if (_internal_has_current_of_expr()) { clear_has_node(); ::pg_query::CurrentOfExpr* temp = _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* current_of_expr) { clear_node(); if (current_of_expr) { set_has_current_of_expr(); _impl_.node_.current_of_expr_ = current_of_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.current_of_expr) } inline ::pg_query::CurrentOfExpr* Node::_internal_mutable_current_of_expr() { if (!_internal_has_current_of_expr()) { clear_node(); set_has_current_of_expr(); _impl_.node_.current_of_expr_ = CreateMaybeMessage< ::pg_query::CurrentOfExpr >(GetArenaForAllocation()); } return _impl_.node_.current_of_expr_; } inline ::pg_query::CurrentOfExpr* Node::mutable_current_of_expr() { ::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 = 43 [json_name = "NextValueExpr"]; inline bool Node::_internal_has_next_value_expr() const { return node_case() == kNextValueExpr; } inline bool Node::has_next_value_expr() const { return _internal_has_next_value_expr(); } inline void Node::set_has_next_value_expr() { _impl_._oneof_case_[0] = kNextValueExpr; } inline void Node::clear_next_value_expr() { if (_internal_has_next_value_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_next_value_expr()) { clear_has_node(); ::pg_query::NextValueExpr* temp = _impl_.node_.next_value_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_next_value_expr() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.next_value_expr) return _internal_next_value_expr(); } inline ::pg_query::NextValueExpr* Node::unsafe_arena_release_next_value_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.next_value_expr) if (_internal_has_next_value_expr()) { clear_has_node(); ::pg_query::NextValueExpr* temp = _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* next_value_expr) { clear_node(); if (next_value_expr) { set_has_next_value_expr(); _impl_.node_.next_value_expr_ = next_value_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.next_value_expr) } inline ::pg_query::NextValueExpr* Node::_internal_mutable_next_value_expr() { if (!_internal_has_next_value_expr()) { clear_node(); set_has_next_value_expr(); _impl_.node_.next_value_expr_ = CreateMaybeMessage< ::pg_query::NextValueExpr >(GetArenaForAllocation()); } return _impl_.node_.next_value_expr_; } inline ::pg_query::NextValueExpr* Node::mutable_next_value_expr() { ::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 = 44 [json_name = "InferenceElem"]; inline bool Node::_internal_has_inference_elem() const { return node_case() == kInferenceElem; } inline bool Node::has_inference_elem() const { return _internal_has_inference_elem(); } inline void Node::set_has_inference_elem() { _impl_._oneof_case_[0] = kInferenceElem; } inline void Node::clear_inference_elem() { if (_internal_has_inference_elem()) { if (GetArenaForAllocation() == 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 (_internal_has_inference_elem()) { clear_has_node(); ::pg_query::InferenceElem* temp = _impl_.node_.inference_elem_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.inference_elem_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::InferenceElem& Node::_internal_inference_elem() const { return _internal_has_inference_elem() ? *_impl_.node_.inference_elem_ : reinterpret_cast< ::pg_query::InferenceElem&>(::pg_query::_InferenceElem_default_instance_); } inline const ::pg_query::InferenceElem& Node::inference_elem() const { // @@protoc_insertion_point(field_get:pg_query.Node.inference_elem) return _internal_inference_elem(); } inline ::pg_query::InferenceElem* Node::unsafe_arena_release_inference_elem() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.inference_elem) if (_internal_has_inference_elem()) { clear_has_node(); ::pg_query::InferenceElem* temp = _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* inference_elem) { clear_node(); if (inference_elem) { set_has_inference_elem(); _impl_.node_.inference_elem_ = inference_elem; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.inference_elem) } inline ::pg_query::InferenceElem* Node::_internal_mutable_inference_elem() { if (!_internal_has_inference_elem()) { clear_node(); set_has_inference_elem(); _impl_.node_.inference_elem_ = CreateMaybeMessage< ::pg_query::InferenceElem >(GetArenaForAllocation()); } return _impl_.node_.inference_elem_; } inline ::pg_query::InferenceElem* Node::mutable_inference_elem() { ::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 = 45 [json_name = "TargetEntry"]; inline bool Node::_internal_has_target_entry() const { return node_case() == kTargetEntry; } inline bool Node::has_target_entry() const { return _internal_has_target_entry(); } inline void Node::set_has_target_entry() { _impl_._oneof_case_[0] = kTargetEntry; } inline void Node::clear_target_entry() { if (_internal_has_target_entry()) { if (GetArenaForAllocation() == 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 (_internal_has_target_entry()) { clear_has_node(); ::pg_query::TargetEntry* temp = _impl_.node_.target_entry_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.target_entry_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TargetEntry& Node::_internal_target_entry() const { return _internal_has_target_entry() ? *_impl_.node_.target_entry_ : reinterpret_cast< ::pg_query::TargetEntry&>(::pg_query::_TargetEntry_default_instance_); } inline const ::pg_query::TargetEntry& Node::target_entry() const { // @@protoc_insertion_point(field_get:pg_query.Node.target_entry) return _internal_target_entry(); } inline ::pg_query::TargetEntry* Node::unsafe_arena_release_target_entry() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.target_entry) if (_internal_has_target_entry()) { clear_has_node(); ::pg_query::TargetEntry* temp = _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* target_entry) { clear_node(); if (target_entry) { set_has_target_entry(); _impl_.node_.target_entry_ = target_entry; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.target_entry) } inline ::pg_query::TargetEntry* Node::_internal_mutable_target_entry() { if (!_internal_has_target_entry()) { clear_node(); set_has_target_entry(); _impl_.node_.target_entry_ = CreateMaybeMessage< ::pg_query::TargetEntry >(GetArenaForAllocation()); } return _impl_.node_.target_entry_; } inline ::pg_query::TargetEntry* Node::mutable_target_entry() { ::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 = 46 [json_name = "RangeTblRef"]; inline bool Node::_internal_has_range_tbl_ref() const { return node_case() == kRangeTblRef; } inline bool Node::has_range_tbl_ref() const { return _internal_has_range_tbl_ref(); } inline void Node::set_has_range_tbl_ref() { _impl_._oneof_case_[0] = kRangeTblRef; } inline void Node::clear_range_tbl_ref() { if (_internal_has_range_tbl_ref()) { if (GetArenaForAllocation() == 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 (_internal_has_range_tbl_ref()) { clear_has_node(); ::pg_query::RangeTblRef* temp = _impl_.node_.range_tbl_ref_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_range_tbl_ref() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.range_tbl_ref) return _internal_range_tbl_ref(); } inline ::pg_query::RangeTblRef* Node::unsafe_arena_release_range_tbl_ref() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_tbl_ref) if (_internal_has_range_tbl_ref()) { clear_has_node(); ::pg_query::RangeTblRef* temp = _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* range_tbl_ref) { clear_node(); if (range_tbl_ref) { set_has_range_tbl_ref(); _impl_.node_.range_tbl_ref_ = range_tbl_ref; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_tbl_ref) } inline ::pg_query::RangeTblRef* Node::_internal_mutable_range_tbl_ref() { if (!_internal_has_range_tbl_ref()) { clear_node(); set_has_range_tbl_ref(); _impl_.node_.range_tbl_ref_ = CreateMaybeMessage< ::pg_query::RangeTblRef >(GetArenaForAllocation()); } return _impl_.node_.range_tbl_ref_; } inline ::pg_query::RangeTblRef* Node::mutable_range_tbl_ref() { ::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 = 47 [json_name = "JoinExpr"]; inline bool Node::_internal_has_join_expr() const { return node_case() == kJoinExpr; } inline bool Node::has_join_expr() const { return _internal_has_join_expr(); } inline void Node::set_has_join_expr() { _impl_._oneof_case_[0] = kJoinExpr; } inline void Node::clear_join_expr() { if (_internal_has_join_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_join_expr()) { clear_has_node(); ::pg_query::JoinExpr* temp = _impl_.node_.join_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.join_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JoinExpr& Node::_internal_join_expr() const { return _internal_has_join_expr() ? *_impl_.node_.join_expr_ : reinterpret_cast< ::pg_query::JoinExpr&>(::pg_query::_JoinExpr_default_instance_); } inline const ::pg_query::JoinExpr& Node::join_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.join_expr) return _internal_join_expr(); } inline ::pg_query::JoinExpr* Node::unsafe_arena_release_join_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.join_expr) if (_internal_has_join_expr()) { clear_has_node(); ::pg_query::JoinExpr* temp = _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* join_expr) { clear_node(); if (join_expr) { set_has_join_expr(); _impl_.node_.join_expr_ = join_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.join_expr) } inline ::pg_query::JoinExpr* Node::_internal_mutable_join_expr() { if (!_internal_has_join_expr()) { clear_node(); set_has_join_expr(); _impl_.node_.join_expr_ = CreateMaybeMessage< ::pg_query::JoinExpr >(GetArenaForAllocation()); } return _impl_.node_.join_expr_; } inline ::pg_query::JoinExpr* Node::mutable_join_expr() { ::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 = 48 [json_name = "FromExpr"]; inline bool Node::_internal_has_from_expr() const { return node_case() == kFromExpr; } inline bool Node::has_from_expr() const { return _internal_has_from_expr(); } inline void Node::set_has_from_expr() { _impl_._oneof_case_[0] = kFromExpr; } inline void Node::clear_from_expr() { if (_internal_has_from_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_from_expr()) { clear_has_node(); ::pg_query::FromExpr* temp = _impl_.node_.from_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.from_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FromExpr& Node::_internal_from_expr() const { return _internal_has_from_expr() ? *_impl_.node_.from_expr_ : reinterpret_cast< ::pg_query::FromExpr&>(::pg_query::_FromExpr_default_instance_); } inline const ::pg_query::FromExpr& Node::from_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.from_expr) return _internal_from_expr(); } inline ::pg_query::FromExpr* Node::unsafe_arena_release_from_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.from_expr) if (_internal_has_from_expr()) { clear_has_node(); ::pg_query::FromExpr* temp = _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* from_expr) { clear_node(); if (from_expr) { set_has_from_expr(); _impl_.node_.from_expr_ = from_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.from_expr) } inline ::pg_query::FromExpr* Node::_internal_mutable_from_expr() { if (!_internal_has_from_expr()) { clear_node(); set_has_from_expr(); _impl_.node_.from_expr_ = CreateMaybeMessage< ::pg_query::FromExpr >(GetArenaForAllocation()); } return _impl_.node_.from_expr_; } inline ::pg_query::FromExpr* Node::mutable_from_expr() { ::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 = 49 [json_name = "OnConflictExpr"]; inline bool Node::_internal_has_on_conflict_expr() const { return node_case() == kOnConflictExpr; } inline bool Node::has_on_conflict_expr() const { return _internal_has_on_conflict_expr(); } inline void Node::set_has_on_conflict_expr() { _impl_._oneof_case_[0] = kOnConflictExpr; } inline void Node::clear_on_conflict_expr() { if (_internal_has_on_conflict_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_on_conflict_expr()) { clear_has_node(); ::pg_query::OnConflictExpr* temp = _impl_.node_.on_conflict_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_on_conflict_expr() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.on_conflict_expr) return _internal_on_conflict_expr(); } inline ::pg_query::OnConflictExpr* Node::unsafe_arena_release_on_conflict_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.on_conflict_expr) if (_internal_has_on_conflict_expr()) { clear_has_node(); ::pg_query::OnConflictExpr* temp = _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* on_conflict_expr) { clear_node(); if (on_conflict_expr) { set_has_on_conflict_expr(); _impl_.node_.on_conflict_expr_ = on_conflict_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.on_conflict_expr) } inline ::pg_query::OnConflictExpr* Node::_internal_mutable_on_conflict_expr() { if (!_internal_has_on_conflict_expr()) { clear_node(); set_has_on_conflict_expr(); _impl_.node_.on_conflict_expr_ = CreateMaybeMessage< ::pg_query::OnConflictExpr >(GetArenaForAllocation()); } return _impl_.node_.on_conflict_expr_; } inline ::pg_query::OnConflictExpr* Node::mutable_on_conflict_expr() { ::pg_query::OnConflictExpr* _msg = _internal_mutable_on_conflict_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.on_conflict_expr) return _msg; } // .pg_query.IntoClause into_clause = 50 [json_name = "IntoClause"]; inline bool Node::_internal_has_into_clause() const { return node_case() == kIntoClause; } inline bool Node::has_into_clause() const { return _internal_has_into_clause(); } inline void Node::set_has_into_clause() { _impl_._oneof_case_[0] = kIntoClause; } inline void Node::clear_into_clause() { if (_internal_has_into_clause()) { if (GetArenaForAllocation() == 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 (_internal_has_into_clause()) { clear_has_node(); ::pg_query::IntoClause* temp = _impl_.node_.into_clause_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.into_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::IntoClause& Node::_internal_into_clause() const { return _internal_has_into_clause() ? *_impl_.node_.into_clause_ : reinterpret_cast< ::pg_query::IntoClause&>(::pg_query::_IntoClause_default_instance_); } inline const ::pg_query::IntoClause& Node::into_clause() const { // @@protoc_insertion_point(field_get:pg_query.Node.into_clause) return _internal_into_clause(); } inline ::pg_query::IntoClause* Node::unsafe_arena_release_into_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.into_clause) if (_internal_has_into_clause()) { clear_has_node(); ::pg_query::IntoClause* temp = _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* into_clause) { clear_node(); if (into_clause) { set_has_into_clause(); _impl_.node_.into_clause_ = into_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.into_clause) } inline ::pg_query::IntoClause* Node::_internal_mutable_into_clause() { if (!_internal_has_into_clause()) { clear_node(); set_has_into_clause(); _impl_.node_.into_clause_ = CreateMaybeMessage< ::pg_query::IntoClause >(GetArenaForAllocation()); } return _impl_.node_.into_clause_; } inline ::pg_query::IntoClause* Node::mutable_into_clause() { ::pg_query::IntoClause* _msg = _internal_mutable_into_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.into_clause) return _msg; } // .pg_query.MergeAction merge_action = 51 [json_name = "MergeAction"]; inline bool Node::_internal_has_merge_action() const { return node_case() == kMergeAction; } inline bool Node::has_merge_action() const { return _internal_has_merge_action(); } inline void Node::set_has_merge_action() { _impl_._oneof_case_[0] = kMergeAction; } inline void Node::clear_merge_action() { if (_internal_has_merge_action()) { if (GetArenaForAllocation() == 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 (_internal_has_merge_action()) { clear_has_node(); ::pg_query::MergeAction* temp = _impl_.node_.merge_action_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.merge_action_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::MergeAction& Node::_internal_merge_action() const { return _internal_has_merge_action() ? *_impl_.node_.merge_action_ : reinterpret_cast< ::pg_query::MergeAction&>(::pg_query::_MergeAction_default_instance_); } inline const ::pg_query::MergeAction& Node::merge_action() const { // @@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 (_internal_has_merge_action()) { clear_has_node(); ::pg_query::MergeAction* 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* merge_action) { clear_node(); if (merge_action) { set_has_merge_action(); _impl_.node_.merge_action_ = merge_action; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.merge_action) } inline ::pg_query::MergeAction* Node::_internal_mutable_merge_action() { if (!_internal_has_merge_action()) { clear_node(); set_has_merge_action(); _impl_.node_.merge_action_ = CreateMaybeMessage< ::pg_query::MergeAction >(GetArenaForAllocation()); } return _impl_.node_.merge_action_; } inline ::pg_query::MergeAction* Node::mutable_merge_action() { ::pg_query::MergeAction* _msg = _internal_mutable_merge_action(); // @@protoc_insertion_point(field_mutable:pg_query.Node.merge_action) return _msg; } // .pg_query.RawStmt raw_stmt = 52 [json_name = "RawStmt"]; inline bool Node::_internal_has_raw_stmt() const { return node_case() == kRawStmt; } inline bool Node::has_raw_stmt() const { return _internal_has_raw_stmt(); } inline void Node::set_has_raw_stmt() { _impl_._oneof_case_[0] = kRawStmt; } inline void Node::clear_raw_stmt() { if (_internal_has_raw_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_raw_stmt()) { clear_has_node(); ::pg_query::RawStmt* temp = _impl_.node_.raw_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.raw_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RawStmt& Node::_internal_raw_stmt() const { return _internal_has_raw_stmt() ? *_impl_.node_.raw_stmt_ : reinterpret_cast< ::pg_query::RawStmt&>(::pg_query::_RawStmt_default_instance_); } inline const ::pg_query::RawStmt& Node::raw_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.raw_stmt) return _internal_raw_stmt(); } inline ::pg_query::RawStmt* Node::unsafe_arena_release_raw_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.raw_stmt) if (_internal_has_raw_stmt()) { clear_has_node(); ::pg_query::RawStmt* temp = _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* raw_stmt) { clear_node(); if (raw_stmt) { set_has_raw_stmt(); _impl_.node_.raw_stmt_ = raw_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.raw_stmt) } inline ::pg_query::RawStmt* Node::_internal_mutable_raw_stmt() { if (!_internal_has_raw_stmt()) { clear_node(); set_has_raw_stmt(); _impl_.node_.raw_stmt_ = CreateMaybeMessage< ::pg_query::RawStmt >(GetArenaForAllocation()); } return _impl_.node_.raw_stmt_; } inline ::pg_query::RawStmt* Node::mutable_raw_stmt() { ::pg_query::RawStmt* _msg = _internal_mutable_raw_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.raw_stmt) return _msg; } // .pg_query.Query query = 53 [json_name = "Query"]; inline bool Node::_internal_has_query() const { return node_case() == kQuery; } inline bool Node::has_query() const { return _internal_has_query(); } inline void Node::set_has_query() { _impl_._oneof_case_[0] = kQuery; } inline void Node::clear_query() { if (_internal_has_query()) { if (GetArenaForAllocation() == 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 (_internal_has_query()) { clear_has_node(); ::pg_query::Query* temp = _impl_.node_.query_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.query_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Query& Node::_internal_query() const { return _internal_has_query() ? *_impl_.node_.query_ : reinterpret_cast< ::pg_query::Query&>(::pg_query::_Query_default_instance_); } inline const ::pg_query::Query& Node::query() const { // @@protoc_insertion_point(field_get:pg_query.Node.query) return _internal_query(); } inline ::pg_query::Query* Node::unsafe_arena_release_query() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.query) if (_internal_has_query()) { clear_has_node(); ::pg_query::Query* temp = _impl_.node_.query_; _impl_.node_.query_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_query(::pg_query::Query* query) { clear_node(); if (query) { set_has_query(); _impl_.node_.query_ = query; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.query) } inline ::pg_query::Query* Node::_internal_mutable_query() { if (!_internal_has_query()) { clear_node(); set_has_query(); _impl_.node_.query_ = CreateMaybeMessage< ::pg_query::Query >(GetArenaForAllocation()); } return _impl_.node_.query_; } inline ::pg_query::Query* Node::mutable_query() { ::pg_query::Query* _msg = _internal_mutable_query(); // @@protoc_insertion_point(field_mutable:pg_query.Node.query) return _msg; } // .pg_query.InsertStmt insert_stmt = 54 [json_name = "InsertStmt"]; inline bool Node::_internal_has_insert_stmt() const { return node_case() == kInsertStmt; } inline bool Node::has_insert_stmt() const { return _internal_has_insert_stmt(); } inline void Node::set_has_insert_stmt() { _impl_._oneof_case_[0] = kInsertStmt; } inline void Node::clear_insert_stmt() { if (_internal_has_insert_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_insert_stmt()) { clear_has_node(); ::pg_query::InsertStmt* temp = _impl_.node_.insert_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.insert_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::InsertStmt& Node::_internal_insert_stmt() const { return _internal_has_insert_stmt() ? *_impl_.node_.insert_stmt_ : reinterpret_cast< ::pg_query::InsertStmt&>(::pg_query::_InsertStmt_default_instance_); } inline const ::pg_query::InsertStmt& Node::insert_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.insert_stmt) return _internal_insert_stmt(); } inline ::pg_query::InsertStmt* Node::unsafe_arena_release_insert_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.insert_stmt) if (_internal_has_insert_stmt()) { clear_has_node(); ::pg_query::InsertStmt* temp = _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* insert_stmt) { clear_node(); if (insert_stmt) { set_has_insert_stmt(); _impl_.node_.insert_stmt_ = insert_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.insert_stmt) } inline ::pg_query::InsertStmt* Node::_internal_mutable_insert_stmt() { if (!_internal_has_insert_stmt()) { clear_node(); set_has_insert_stmt(); _impl_.node_.insert_stmt_ = CreateMaybeMessage< ::pg_query::InsertStmt >(GetArenaForAllocation()); } return _impl_.node_.insert_stmt_; } inline ::pg_query::InsertStmt* Node::mutable_insert_stmt() { ::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 = 55 [json_name = "DeleteStmt"]; inline bool Node::_internal_has_delete_stmt() const { return node_case() == kDeleteStmt; } inline bool Node::has_delete_stmt() const { return _internal_has_delete_stmt(); } inline void Node::set_has_delete_stmt() { _impl_._oneof_case_[0] = kDeleteStmt; } inline void Node::clear_delete_stmt() { if (_internal_has_delete_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_delete_stmt()) { clear_has_node(); ::pg_query::DeleteStmt* temp = _impl_.node_.delete_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.delete_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DeleteStmt& Node::_internal_delete_stmt() const { return _internal_has_delete_stmt() ? *_impl_.node_.delete_stmt_ : reinterpret_cast< ::pg_query::DeleteStmt&>(::pg_query::_DeleteStmt_default_instance_); } inline const ::pg_query::DeleteStmt& Node::delete_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.delete_stmt) return _internal_delete_stmt(); } inline ::pg_query::DeleteStmt* Node::unsafe_arena_release_delete_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.delete_stmt) if (_internal_has_delete_stmt()) { clear_has_node(); ::pg_query::DeleteStmt* temp = _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* delete_stmt) { clear_node(); if (delete_stmt) { set_has_delete_stmt(); _impl_.node_.delete_stmt_ = delete_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.delete_stmt) } inline ::pg_query::DeleteStmt* Node::_internal_mutable_delete_stmt() { if (!_internal_has_delete_stmt()) { clear_node(); set_has_delete_stmt(); _impl_.node_.delete_stmt_ = CreateMaybeMessage< ::pg_query::DeleteStmt >(GetArenaForAllocation()); } return _impl_.node_.delete_stmt_; } inline ::pg_query::DeleteStmt* Node::mutable_delete_stmt() { ::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 = 56 [json_name = "UpdateStmt"]; inline bool Node::_internal_has_update_stmt() const { return node_case() == kUpdateStmt; } inline bool Node::has_update_stmt() const { return _internal_has_update_stmt(); } inline void Node::set_has_update_stmt() { _impl_._oneof_case_[0] = kUpdateStmt; } inline void Node::clear_update_stmt() { if (_internal_has_update_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_update_stmt()) { clear_has_node(); ::pg_query::UpdateStmt* temp = _impl_.node_.update_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.update_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::UpdateStmt& Node::_internal_update_stmt() const { return _internal_has_update_stmt() ? *_impl_.node_.update_stmt_ : reinterpret_cast< ::pg_query::UpdateStmt&>(::pg_query::_UpdateStmt_default_instance_); } inline const ::pg_query::UpdateStmt& Node::update_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.update_stmt) return _internal_update_stmt(); } inline ::pg_query::UpdateStmt* Node::unsafe_arena_release_update_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.update_stmt) if (_internal_has_update_stmt()) { clear_has_node(); ::pg_query::UpdateStmt* temp = _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* update_stmt) { clear_node(); if (update_stmt) { set_has_update_stmt(); _impl_.node_.update_stmt_ = update_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.update_stmt) } inline ::pg_query::UpdateStmt* Node::_internal_mutable_update_stmt() { if (!_internal_has_update_stmt()) { clear_node(); set_has_update_stmt(); _impl_.node_.update_stmt_ = CreateMaybeMessage< ::pg_query::UpdateStmt >(GetArenaForAllocation()); } return _impl_.node_.update_stmt_; } inline ::pg_query::UpdateStmt* Node::mutable_update_stmt() { ::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 = 57 [json_name = "MergeStmt"]; inline bool Node::_internal_has_merge_stmt() const { return node_case() == kMergeStmt; } inline bool Node::has_merge_stmt() const { return _internal_has_merge_stmt(); } inline void Node::set_has_merge_stmt() { _impl_._oneof_case_[0] = kMergeStmt; } inline void Node::clear_merge_stmt() { if (_internal_has_merge_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_merge_stmt()) { clear_has_node(); ::pg_query::MergeStmt* temp = _impl_.node_.merge_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.merge_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::MergeStmt& Node::_internal_merge_stmt() const { return _internal_has_merge_stmt() ? *_impl_.node_.merge_stmt_ : reinterpret_cast< ::pg_query::MergeStmt&>(::pg_query::_MergeStmt_default_instance_); } inline const ::pg_query::MergeStmt& Node::merge_stmt() const { // @@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 (_internal_has_merge_stmt()) { clear_has_node(); ::pg_query::MergeStmt* 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* merge_stmt) { clear_node(); if (merge_stmt) { set_has_merge_stmt(); _impl_.node_.merge_stmt_ = merge_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.merge_stmt) } inline ::pg_query::MergeStmt* Node::_internal_mutable_merge_stmt() { if (!_internal_has_merge_stmt()) { clear_node(); set_has_merge_stmt(); _impl_.node_.merge_stmt_ = CreateMaybeMessage< ::pg_query::MergeStmt >(GetArenaForAllocation()); } return _impl_.node_.merge_stmt_; } inline ::pg_query::MergeStmt* Node::mutable_merge_stmt() { ::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 = 58 [json_name = "SelectStmt"]; inline bool Node::_internal_has_select_stmt() const { return node_case() == kSelectStmt; } inline bool Node::has_select_stmt() const { return _internal_has_select_stmt(); } inline void Node::set_has_select_stmt() { _impl_._oneof_case_[0] = kSelectStmt; } inline void Node::clear_select_stmt() { if (_internal_has_select_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_select_stmt()) { clear_has_node(); ::pg_query::SelectStmt* temp = _impl_.node_.select_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.select_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SelectStmt& Node::_internal_select_stmt() const { return _internal_has_select_stmt() ? *_impl_.node_.select_stmt_ : reinterpret_cast< ::pg_query::SelectStmt&>(::pg_query::_SelectStmt_default_instance_); } inline const ::pg_query::SelectStmt& Node::select_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.select_stmt) return _internal_select_stmt(); } inline ::pg_query::SelectStmt* Node::unsafe_arena_release_select_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.select_stmt) if (_internal_has_select_stmt()) { clear_has_node(); ::pg_query::SelectStmt* temp = _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* select_stmt) { clear_node(); if (select_stmt) { set_has_select_stmt(); _impl_.node_.select_stmt_ = select_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.select_stmt) } inline ::pg_query::SelectStmt* Node::_internal_mutable_select_stmt() { if (!_internal_has_select_stmt()) { clear_node(); set_has_select_stmt(); _impl_.node_.select_stmt_ = CreateMaybeMessage< ::pg_query::SelectStmt >(GetArenaForAllocation()); } return _impl_.node_.select_stmt_; } inline ::pg_query::SelectStmt* Node::mutable_select_stmt() { ::pg_query::SelectStmt* _msg = _internal_mutable_select_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.select_stmt) return _msg; } // .pg_query.ReturnStmt return_stmt = 59 [json_name = "ReturnStmt"]; inline bool Node::_internal_has_return_stmt() const { return node_case() == kReturnStmt; } inline bool Node::has_return_stmt() const { return _internal_has_return_stmt(); } inline void Node::set_has_return_stmt() { _impl_._oneof_case_[0] = kReturnStmt; } inline void Node::clear_return_stmt() { if (_internal_has_return_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_return_stmt()) { clear_has_node(); ::pg_query::ReturnStmt* temp = _impl_.node_.return_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.return_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ReturnStmt& Node::_internal_return_stmt() const { return _internal_has_return_stmt() ? *_impl_.node_.return_stmt_ : reinterpret_cast< ::pg_query::ReturnStmt&>(::pg_query::_ReturnStmt_default_instance_); } inline const ::pg_query::ReturnStmt& Node::return_stmt() const { // @@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 (_internal_has_return_stmt()) { clear_has_node(); ::pg_query::ReturnStmt* 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* return_stmt) { clear_node(); if (return_stmt) { set_has_return_stmt(); _impl_.node_.return_stmt_ = return_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.return_stmt) } inline ::pg_query::ReturnStmt* Node::_internal_mutable_return_stmt() { if (!_internal_has_return_stmt()) { clear_node(); set_has_return_stmt(); _impl_.node_.return_stmt_ = CreateMaybeMessage< ::pg_query::ReturnStmt >(GetArenaForAllocation()); } return _impl_.node_.return_stmt_; } inline ::pg_query::ReturnStmt* Node::mutable_return_stmt() { ::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 = 60 [json_name = "PLAssignStmt"]; inline bool Node::_internal_has_plassign_stmt() const { return node_case() == kPlassignStmt; } inline bool Node::has_plassign_stmt() const { return _internal_has_plassign_stmt(); } inline void Node::set_has_plassign_stmt() { _impl_._oneof_case_[0] = kPlassignStmt; } inline void Node::clear_plassign_stmt() { if (_internal_has_plassign_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_plassign_stmt()) { clear_has_node(); ::pg_query::PLAssignStmt* temp = _impl_.node_.plassign_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.plassign_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PLAssignStmt& Node::_internal_plassign_stmt() const { return _internal_has_plassign_stmt() ? *_impl_.node_.plassign_stmt_ : reinterpret_cast< ::pg_query::PLAssignStmt&>(::pg_query::_PLAssignStmt_default_instance_); } inline const ::pg_query::PLAssignStmt& Node::plassign_stmt() const { // @@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 (_internal_has_plassign_stmt()) { clear_has_node(); ::pg_query::PLAssignStmt* 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* plassign_stmt) { clear_node(); if (plassign_stmt) { set_has_plassign_stmt(); _impl_.node_.plassign_stmt_ = plassign_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.plassign_stmt) } inline ::pg_query::PLAssignStmt* Node::_internal_mutable_plassign_stmt() { if (!_internal_has_plassign_stmt()) { clear_node(); set_has_plassign_stmt(); _impl_.node_.plassign_stmt_ = CreateMaybeMessage< ::pg_query::PLAssignStmt >(GetArenaForAllocation()); } return _impl_.node_.plassign_stmt_; } inline ::pg_query::PLAssignStmt* Node::mutable_plassign_stmt() { ::pg_query::PLAssignStmt* _msg = _internal_mutable_plassign_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.plassign_stmt) return _msg; } // .pg_query.AlterTableStmt alter_table_stmt = 61 [json_name = "AlterTableStmt"]; inline bool Node::_internal_has_alter_table_stmt() const { return node_case() == kAlterTableStmt; } inline bool Node::has_alter_table_stmt() const { return _internal_has_alter_table_stmt(); } inline void Node::set_has_alter_table_stmt() { _impl_._oneof_case_[0] = kAlterTableStmt; } inline void Node::clear_alter_table_stmt() { if (_internal_has_alter_table_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_table_stmt()) { clear_has_node(); ::pg_query::AlterTableStmt* temp = _impl_.node_.alter_table_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_table_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_table_stmt) return _internal_alter_table_stmt(); } inline ::pg_query::AlterTableStmt* Node::unsafe_arena_release_alter_table_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_table_stmt) if (_internal_has_alter_table_stmt()) { clear_has_node(); ::pg_query::AlterTableStmt* temp = _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* alter_table_stmt) { clear_node(); if (alter_table_stmt) { set_has_alter_table_stmt(); _impl_.node_.alter_table_stmt_ = alter_table_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_table_stmt) } inline ::pg_query::AlterTableStmt* Node::_internal_mutable_alter_table_stmt() { if (!_internal_has_alter_table_stmt()) { clear_node(); set_has_alter_table_stmt(); _impl_.node_.alter_table_stmt_ = CreateMaybeMessage< ::pg_query::AlterTableStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_table_stmt_; } inline ::pg_query::AlterTableStmt* Node::mutable_alter_table_stmt() { ::pg_query::AlterTableStmt* _msg = _internal_mutable_alter_table_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_table_stmt) return _msg; } // .pg_query.AlterTableCmd alter_table_cmd = 62 [json_name = "AlterTableCmd"]; inline bool Node::_internal_has_alter_table_cmd() const { return node_case() == kAlterTableCmd; } inline bool Node::has_alter_table_cmd() const { return _internal_has_alter_table_cmd(); } inline void Node::set_has_alter_table_cmd() { _impl_._oneof_case_[0] = kAlterTableCmd; } inline void Node::clear_alter_table_cmd() { if (_internal_has_alter_table_cmd()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_table_cmd()) { clear_has_node(); ::pg_query::AlterTableCmd* temp = _impl_.node_.alter_table_cmd_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_table_cmd() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_table_cmd) return _internal_alter_table_cmd(); } inline ::pg_query::AlterTableCmd* Node::unsafe_arena_release_alter_table_cmd() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_table_cmd) if (_internal_has_alter_table_cmd()) { clear_has_node(); ::pg_query::AlterTableCmd* temp = _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* alter_table_cmd) { clear_node(); if (alter_table_cmd) { set_has_alter_table_cmd(); _impl_.node_.alter_table_cmd_ = alter_table_cmd; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_table_cmd) } inline ::pg_query::AlterTableCmd* Node::_internal_mutable_alter_table_cmd() { if (!_internal_has_alter_table_cmd()) { clear_node(); set_has_alter_table_cmd(); _impl_.node_.alter_table_cmd_ = CreateMaybeMessage< ::pg_query::AlterTableCmd >(GetArenaForAllocation()); } return _impl_.node_.alter_table_cmd_; } inline ::pg_query::AlterTableCmd* Node::mutable_alter_table_cmd() { ::pg_query::AlterTableCmd* _msg = _internal_mutable_alter_table_cmd(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_table_cmd) return _msg; } // .pg_query.AlterDomainStmt alter_domain_stmt = 63 [json_name = "AlterDomainStmt"]; inline bool Node::_internal_has_alter_domain_stmt() const { return node_case() == kAlterDomainStmt; } inline bool Node::has_alter_domain_stmt() const { return _internal_has_alter_domain_stmt(); } inline void Node::set_has_alter_domain_stmt() { _impl_._oneof_case_[0] = kAlterDomainStmt; } inline void Node::clear_alter_domain_stmt() { if (_internal_has_alter_domain_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_domain_stmt()) { clear_has_node(); ::pg_query::AlterDomainStmt* temp = _impl_.node_.alter_domain_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_domain_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_domain_stmt) return _internal_alter_domain_stmt(); } inline ::pg_query::AlterDomainStmt* Node::unsafe_arena_release_alter_domain_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_domain_stmt) if (_internal_has_alter_domain_stmt()) { clear_has_node(); ::pg_query::AlterDomainStmt* temp = _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* alter_domain_stmt) { clear_node(); if (alter_domain_stmt) { set_has_alter_domain_stmt(); _impl_.node_.alter_domain_stmt_ = alter_domain_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_domain_stmt) } inline ::pg_query::AlterDomainStmt* Node::_internal_mutable_alter_domain_stmt() { if (!_internal_has_alter_domain_stmt()) { clear_node(); set_has_alter_domain_stmt(); _impl_.node_.alter_domain_stmt_ = CreateMaybeMessage< ::pg_query::AlterDomainStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_domain_stmt_; } inline ::pg_query::AlterDomainStmt* Node::mutable_alter_domain_stmt() { ::pg_query::AlterDomainStmt* _msg = _internal_mutable_alter_domain_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_domain_stmt) return _msg; } // .pg_query.SetOperationStmt set_operation_stmt = 64 [json_name = "SetOperationStmt"]; inline bool Node::_internal_has_set_operation_stmt() const { return node_case() == kSetOperationStmt; } inline bool Node::has_set_operation_stmt() const { return _internal_has_set_operation_stmt(); } inline void Node::set_has_set_operation_stmt() { _impl_._oneof_case_[0] = kSetOperationStmt; } inline void Node::clear_set_operation_stmt() { if (_internal_has_set_operation_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_set_operation_stmt()) { clear_has_node(); ::pg_query::SetOperationStmt* temp = _impl_.node_.set_operation_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_set_operation_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.set_operation_stmt) return _internal_set_operation_stmt(); } inline ::pg_query::SetOperationStmt* Node::unsafe_arena_release_set_operation_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.set_operation_stmt) if (_internal_has_set_operation_stmt()) { clear_has_node(); ::pg_query::SetOperationStmt* temp = _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* set_operation_stmt) { clear_node(); if (set_operation_stmt) { set_has_set_operation_stmt(); _impl_.node_.set_operation_stmt_ = set_operation_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.set_operation_stmt) } inline ::pg_query::SetOperationStmt* Node::_internal_mutable_set_operation_stmt() { if (!_internal_has_set_operation_stmt()) { clear_node(); set_has_set_operation_stmt(); _impl_.node_.set_operation_stmt_ = CreateMaybeMessage< ::pg_query::SetOperationStmt >(GetArenaForAllocation()); } return _impl_.node_.set_operation_stmt_; } inline ::pg_query::SetOperationStmt* Node::mutable_set_operation_stmt() { ::pg_query::SetOperationStmt* _msg = _internal_mutable_set_operation_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.set_operation_stmt) return _msg; } // .pg_query.GrantStmt grant_stmt = 65 [json_name = "GrantStmt"]; inline bool Node::_internal_has_grant_stmt() const { return node_case() == kGrantStmt; } inline bool Node::has_grant_stmt() const { return _internal_has_grant_stmt(); } inline void Node::set_has_grant_stmt() { _impl_._oneof_case_[0] = kGrantStmt; } inline void Node::clear_grant_stmt() { if (_internal_has_grant_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_grant_stmt()) { clear_has_node(); ::pg_query::GrantStmt* temp = _impl_.node_.grant_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.grant_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::GrantStmt& Node::_internal_grant_stmt() const { return _internal_has_grant_stmt() ? *_impl_.node_.grant_stmt_ : reinterpret_cast< ::pg_query::GrantStmt&>(::pg_query::_GrantStmt_default_instance_); } inline const ::pg_query::GrantStmt& Node::grant_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.grant_stmt) return _internal_grant_stmt(); } inline ::pg_query::GrantStmt* Node::unsafe_arena_release_grant_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.grant_stmt) if (_internal_has_grant_stmt()) { clear_has_node(); ::pg_query::GrantStmt* temp = _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* grant_stmt) { clear_node(); if (grant_stmt) { set_has_grant_stmt(); _impl_.node_.grant_stmt_ = grant_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.grant_stmt) } inline ::pg_query::GrantStmt* Node::_internal_mutable_grant_stmt() { if (!_internal_has_grant_stmt()) { clear_node(); set_has_grant_stmt(); _impl_.node_.grant_stmt_ = CreateMaybeMessage< ::pg_query::GrantStmt >(GetArenaForAllocation()); } return _impl_.node_.grant_stmt_; } inline ::pg_query::GrantStmt* Node::mutable_grant_stmt() { ::pg_query::GrantStmt* _msg = _internal_mutable_grant_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.grant_stmt) return _msg; } // .pg_query.GrantRoleStmt grant_role_stmt = 66 [json_name = "GrantRoleStmt"]; inline bool Node::_internal_has_grant_role_stmt() const { return node_case() == kGrantRoleStmt; } inline bool Node::has_grant_role_stmt() const { return _internal_has_grant_role_stmt(); } inline void Node::set_has_grant_role_stmt() { _impl_._oneof_case_[0] = kGrantRoleStmt; } inline void Node::clear_grant_role_stmt() { if (_internal_has_grant_role_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_grant_role_stmt()) { clear_has_node(); ::pg_query::GrantRoleStmt* temp = _impl_.node_.grant_role_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_grant_role_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.grant_role_stmt) return _internal_grant_role_stmt(); } inline ::pg_query::GrantRoleStmt* Node::unsafe_arena_release_grant_role_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.grant_role_stmt) if (_internal_has_grant_role_stmt()) { clear_has_node(); ::pg_query::GrantRoleStmt* temp = _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* grant_role_stmt) { clear_node(); if (grant_role_stmt) { set_has_grant_role_stmt(); _impl_.node_.grant_role_stmt_ = grant_role_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.grant_role_stmt) } inline ::pg_query::GrantRoleStmt* Node::_internal_mutable_grant_role_stmt() { if (!_internal_has_grant_role_stmt()) { clear_node(); set_has_grant_role_stmt(); _impl_.node_.grant_role_stmt_ = CreateMaybeMessage< ::pg_query::GrantRoleStmt >(GetArenaForAllocation()); } return _impl_.node_.grant_role_stmt_; } inline ::pg_query::GrantRoleStmt* Node::mutable_grant_role_stmt() { ::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 = 67 [json_name = "AlterDefaultPrivilegesStmt"]; inline bool Node::_internal_has_alter_default_privileges_stmt() const { return node_case() == kAlterDefaultPrivilegesStmt; } inline bool Node::has_alter_default_privileges_stmt() const { return _internal_has_alter_default_privileges_stmt(); } inline void Node::set_has_alter_default_privileges_stmt() { _impl_._oneof_case_[0] = kAlterDefaultPrivilegesStmt; } inline void Node::clear_alter_default_privileges_stmt() { if (_internal_has_alter_default_privileges_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_default_privileges_stmt()) { clear_has_node(); ::pg_query::AlterDefaultPrivilegesStmt* temp = _impl_.node_.alter_default_privileges_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_default_privileges_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_default_privileges_stmt) return _internal_alter_default_privileges_stmt(); } inline ::pg_query::AlterDefaultPrivilegesStmt* Node::unsafe_arena_release_alter_default_privileges_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_default_privileges_stmt) if (_internal_has_alter_default_privileges_stmt()) { clear_has_node(); ::pg_query::AlterDefaultPrivilegesStmt* temp = _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* alter_default_privileges_stmt) { clear_node(); if (alter_default_privileges_stmt) { set_has_alter_default_privileges_stmt(); _impl_.node_.alter_default_privileges_stmt_ = alter_default_privileges_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_default_privileges_stmt) } inline ::pg_query::AlterDefaultPrivilegesStmt* Node::_internal_mutable_alter_default_privileges_stmt() { if (!_internal_has_alter_default_privileges_stmt()) { clear_node(); set_has_alter_default_privileges_stmt(); _impl_.node_.alter_default_privileges_stmt_ = CreateMaybeMessage< ::pg_query::AlterDefaultPrivilegesStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_default_privileges_stmt_; } inline ::pg_query::AlterDefaultPrivilegesStmt* Node::mutable_alter_default_privileges_stmt() { ::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.ClosePortalStmt close_portal_stmt = 68 [json_name = "ClosePortalStmt"]; inline bool Node::_internal_has_close_portal_stmt() const { return node_case() == kClosePortalStmt; } inline bool Node::has_close_portal_stmt() const { return _internal_has_close_portal_stmt(); } inline void Node::set_has_close_portal_stmt() { _impl_._oneof_case_[0] = kClosePortalStmt; } inline void Node::clear_close_portal_stmt() { if (_internal_has_close_portal_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_close_portal_stmt()) { clear_has_node(); ::pg_query::ClosePortalStmt* temp = _impl_.node_.close_portal_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_close_portal_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.close_portal_stmt) return _internal_close_portal_stmt(); } inline ::pg_query::ClosePortalStmt* Node::unsafe_arena_release_close_portal_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.close_portal_stmt) if (_internal_has_close_portal_stmt()) { clear_has_node(); ::pg_query::ClosePortalStmt* temp = _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* close_portal_stmt) { clear_node(); if (close_portal_stmt) { set_has_close_portal_stmt(); _impl_.node_.close_portal_stmt_ = close_portal_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.close_portal_stmt) } inline ::pg_query::ClosePortalStmt* Node::_internal_mutable_close_portal_stmt() { if (!_internal_has_close_portal_stmt()) { clear_node(); set_has_close_portal_stmt(); _impl_.node_.close_portal_stmt_ = CreateMaybeMessage< ::pg_query::ClosePortalStmt >(GetArenaForAllocation()); } return _impl_.node_.close_portal_stmt_; } inline ::pg_query::ClosePortalStmt* Node::mutable_close_portal_stmt() { ::pg_query::ClosePortalStmt* _msg = _internal_mutable_close_portal_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.close_portal_stmt) return _msg; } // .pg_query.ClusterStmt cluster_stmt = 69 [json_name = "ClusterStmt"]; inline bool Node::_internal_has_cluster_stmt() const { return node_case() == kClusterStmt; } inline bool Node::has_cluster_stmt() const { return _internal_has_cluster_stmt(); } inline void Node::set_has_cluster_stmt() { _impl_._oneof_case_[0] = kClusterStmt; } inline void Node::clear_cluster_stmt() { if (_internal_has_cluster_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_cluster_stmt()) { clear_has_node(); ::pg_query::ClusterStmt* temp = _impl_.node_.cluster_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.cluster_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ClusterStmt& Node::_internal_cluster_stmt() const { return _internal_has_cluster_stmt() ? *_impl_.node_.cluster_stmt_ : reinterpret_cast< ::pg_query::ClusterStmt&>(::pg_query::_ClusterStmt_default_instance_); } inline const ::pg_query::ClusterStmt& Node::cluster_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.cluster_stmt) return _internal_cluster_stmt(); } inline ::pg_query::ClusterStmt* Node::unsafe_arena_release_cluster_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.cluster_stmt) if (_internal_has_cluster_stmt()) { clear_has_node(); ::pg_query::ClusterStmt* temp = _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* cluster_stmt) { clear_node(); if (cluster_stmt) { set_has_cluster_stmt(); _impl_.node_.cluster_stmt_ = cluster_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.cluster_stmt) } inline ::pg_query::ClusterStmt* Node::_internal_mutable_cluster_stmt() { if (!_internal_has_cluster_stmt()) { clear_node(); set_has_cluster_stmt(); _impl_.node_.cluster_stmt_ = CreateMaybeMessage< ::pg_query::ClusterStmt >(GetArenaForAllocation()); } return _impl_.node_.cluster_stmt_; } inline ::pg_query::ClusterStmt* Node::mutable_cluster_stmt() { ::pg_query::ClusterStmt* _msg = _internal_mutable_cluster_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.cluster_stmt) return _msg; } // .pg_query.CopyStmt copy_stmt = 70 [json_name = "CopyStmt"]; inline bool Node::_internal_has_copy_stmt() const { return node_case() == kCopyStmt; } inline bool Node::has_copy_stmt() const { return _internal_has_copy_stmt(); } inline void Node::set_has_copy_stmt() { _impl_._oneof_case_[0] = kCopyStmt; } inline void Node::clear_copy_stmt() { if (_internal_has_copy_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_copy_stmt()) { clear_has_node(); ::pg_query::CopyStmt* temp = _impl_.node_.copy_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.copy_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CopyStmt& Node::_internal_copy_stmt() const { return _internal_has_copy_stmt() ? *_impl_.node_.copy_stmt_ : reinterpret_cast< ::pg_query::CopyStmt&>(::pg_query::_CopyStmt_default_instance_); } inline const ::pg_query::CopyStmt& Node::copy_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.copy_stmt) return _internal_copy_stmt(); } inline ::pg_query::CopyStmt* Node::unsafe_arena_release_copy_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.copy_stmt) if (_internal_has_copy_stmt()) { clear_has_node(); ::pg_query::CopyStmt* temp = _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* copy_stmt) { clear_node(); if (copy_stmt) { set_has_copy_stmt(); _impl_.node_.copy_stmt_ = copy_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.copy_stmt) } inline ::pg_query::CopyStmt* Node::_internal_mutable_copy_stmt() { if (!_internal_has_copy_stmt()) { clear_node(); set_has_copy_stmt(); _impl_.node_.copy_stmt_ = CreateMaybeMessage< ::pg_query::CopyStmt >(GetArenaForAllocation()); } return _impl_.node_.copy_stmt_; } inline ::pg_query::CopyStmt* Node::mutable_copy_stmt() { ::pg_query::CopyStmt* _msg = _internal_mutable_copy_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.copy_stmt) return _msg; } // .pg_query.CreateStmt create_stmt = 71 [json_name = "CreateStmt"]; inline bool Node::_internal_has_create_stmt() const { return node_case() == kCreateStmt; } inline bool Node::has_create_stmt() const { return _internal_has_create_stmt(); } inline void Node::set_has_create_stmt() { _impl_._oneof_case_[0] = kCreateStmt; } inline void Node::clear_create_stmt() { if (_internal_has_create_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_stmt()) { clear_has_node(); ::pg_query::CreateStmt* temp = _impl_.node_.create_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateStmt& Node::_internal_create_stmt() const { return _internal_has_create_stmt() ? *_impl_.node_.create_stmt_ : reinterpret_cast< ::pg_query::CreateStmt&>(::pg_query::_CreateStmt_default_instance_); } inline const ::pg_query::CreateStmt& Node::create_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_stmt) return _internal_create_stmt(); } inline ::pg_query::CreateStmt* Node::unsafe_arena_release_create_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_stmt) if (_internal_has_create_stmt()) { clear_has_node(); ::pg_query::CreateStmt* temp = _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* create_stmt) { clear_node(); if (create_stmt) { set_has_create_stmt(); _impl_.node_.create_stmt_ = create_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_stmt) } inline ::pg_query::CreateStmt* Node::_internal_mutable_create_stmt() { if (!_internal_has_create_stmt()) { clear_node(); set_has_create_stmt(); _impl_.node_.create_stmt_ = CreateMaybeMessage< ::pg_query::CreateStmt >(GetArenaForAllocation()); } return _impl_.node_.create_stmt_; } inline ::pg_query::CreateStmt* Node::mutable_create_stmt() { ::pg_query::CreateStmt* _msg = _internal_mutable_create_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_stmt) return _msg; } // .pg_query.DefineStmt define_stmt = 72 [json_name = "DefineStmt"]; inline bool Node::_internal_has_define_stmt() const { return node_case() == kDefineStmt; } inline bool Node::has_define_stmt() const { return _internal_has_define_stmt(); } inline void Node::set_has_define_stmt() { _impl_._oneof_case_[0] = kDefineStmt; } inline void Node::clear_define_stmt() { if (_internal_has_define_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_define_stmt()) { clear_has_node(); ::pg_query::DefineStmt* temp = _impl_.node_.define_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.define_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DefineStmt& Node::_internal_define_stmt() const { return _internal_has_define_stmt() ? *_impl_.node_.define_stmt_ : reinterpret_cast< ::pg_query::DefineStmt&>(::pg_query::_DefineStmt_default_instance_); } inline const ::pg_query::DefineStmt& Node::define_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.define_stmt) return _internal_define_stmt(); } inline ::pg_query::DefineStmt* Node::unsafe_arena_release_define_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.define_stmt) if (_internal_has_define_stmt()) { clear_has_node(); ::pg_query::DefineStmt* temp = _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* define_stmt) { clear_node(); if (define_stmt) { set_has_define_stmt(); _impl_.node_.define_stmt_ = define_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.define_stmt) } inline ::pg_query::DefineStmt* Node::_internal_mutable_define_stmt() { if (!_internal_has_define_stmt()) { clear_node(); set_has_define_stmt(); _impl_.node_.define_stmt_ = CreateMaybeMessage< ::pg_query::DefineStmt >(GetArenaForAllocation()); } return _impl_.node_.define_stmt_; } inline ::pg_query::DefineStmt* Node::mutable_define_stmt() { ::pg_query::DefineStmt* _msg = _internal_mutable_define_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.define_stmt) return _msg; } // .pg_query.DropStmt drop_stmt = 73 [json_name = "DropStmt"]; inline bool Node::_internal_has_drop_stmt() const { return node_case() == kDropStmt; } inline bool Node::has_drop_stmt() const { return _internal_has_drop_stmt(); } inline void Node::set_has_drop_stmt() { _impl_._oneof_case_[0] = kDropStmt; } inline void Node::clear_drop_stmt() { if (_internal_has_drop_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_drop_stmt()) { clear_has_node(); ::pg_query::DropStmt* temp = _impl_.node_.drop_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.drop_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DropStmt& Node::_internal_drop_stmt() const { return _internal_has_drop_stmt() ? *_impl_.node_.drop_stmt_ : reinterpret_cast< ::pg_query::DropStmt&>(::pg_query::_DropStmt_default_instance_); } inline const ::pg_query::DropStmt& Node::drop_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.drop_stmt) return _internal_drop_stmt(); } inline ::pg_query::DropStmt* Node::unsafe_arena_release_drop_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_stmt) if (_internal_has_drop_stmt()) { clear_has_node(); ::pg_query::DropStmt* temp = _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* drop_stmt) { clear_node(); if (drop_stmt) { set_has_drop_stmt(); _impl_.node_.drop_stmt_ = drop_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_stmt) } inline ::pg_query::DropStmt* Node::_internal_mutable_drop_stmt() { if (!_internal_has_drop_stmt()) { clear_node(); set_has_drop_stmt(); _impl_.node_.drop_stmt_ = CreateMaybeMessage< ::pg_query::DropStmt >(GetArenaForAllocation()); } return _impl_.node_.drop_stmt_; } inline ::pg_query::DropStmt* Node::mutable_drop_stmt() { ::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 = 74 [json_name = "TruncateStmt"]; inline bool Node::_internal_has_truncate_stmt() const { return node_case() == kTruncateStmt; } inline bool Node::has_truncate_stmt() const { return _internal_has_truncate_stmt(); } inline void Node::set_has_truncate_stmt() { _impl_._oneof_case_[0] = kTruncateStmt; } inline void Node::clear_truncate_stmt() { if (_internal_has_truncate_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_truncate_stmt()) { clear_has_node(); ::pg_query::TruncateStmt* temp = _impl_.node_.truncate_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.truncate_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TruncateStmt& Node::_internal_truncate_stmt() const { return _internal_has_truncate_stmt() ? *_impl_.node_.truncate_stmt_ : reinterpret_cast< ::pg_query::TruncateStmt&>(::pg_query::_TruncateStmt_default_instance_); } inline const ::pg_query::TruncateStmt& Node::truncate_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.truncate_stmt) return _internal_truncate_stmt(); } inline ::pg_query::TruncateStmt* Node::unsafe_arena_release_truncate_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.truncate_stmt) if (_internal_has_truncate_stmt()) { clear_has_node(); ::pg_query::TruncateStmt* temp = _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* truncate_stmt) { clear_node(); if (truncate_stmt) { set_has_truncate_stmt(); _impl_.node_.truncate_stmt_ = truncate_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.truncate_stmt) } inline ::pg_query::TruncateStmt* Node::_internal_mutable_truncate_stmt() { if (!_internal_has_truncate_stmt()) { clear_node(); set_has_truncate_stmt(); _impl_.node_.truncate_stmt_ = CreateMaybeMessage< ::pg_query::TruncateStmt >(GetArenaForAllocation()); } return _impl_.node_.truncate_stmt_; } inline ::pg_query::TruncateStmt* Node::mutable_truncate_stmt() { ::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 = 75 [json_name = "CommentStmt"]; inline bool Node::_internal_has_comment_stmt() const { return node_case() == kCommentStmt; } inline bool Node::has_comment_stmt() const { return _internal_has_comment_stmt(); } inline void Node::set_has_comment_stmt() { _impl_._oneof_case_[0] = kCommentStmt; } inline void Node::clear_comment_stmt() { if (_internal_has_comment_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_comment_stmt()) { clear_has_node(); ::pg_query::CommentStmt* temp = _impl_.node_.comment_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.comment_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CommentStmt& Node::_internal_comment_stmt() const { return _internal_has_comment_stmt() ? *_impl_.node_.comment_stmt_ : reinterpret_cast< ::pg_query::CommentStmt&>(::pg_query::_CommentStmt_default_instance_); } inline const ::pg_query::CommentStmt& Node::comment_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.comment_stmt) return _internal_comment_stmt(); } inline ::pg_query::CommentStmt* Node::unsafe_arena_release_comment_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.comment_stmt) if (_internal_has_comment_stmt()) { clear_has_node(); ::pg_query::CommentStmt* temp = _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* comment_stmt) { clear_node(); if (comment_stmt) { set_has_comment_stmt(); _impl_.node_.comment_stmt_ = comment_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.comment_stmt) } inline ::pg_query::CommentStmt* Node::_internal_mutable_comment_stmt() { if (!_internal_has_comment_stmt()) { clear_node(); set_has_comment_stmt(); _impl_.node_.comment_stmt_ = CreateMaybeMessage< ::pg_query::CommentStmt >(GetArenaForAllocation()); } return _impl_.node_.comment_stmt_; } inline ::pg_query::CommentStmt* Node::mutable_comment_stmt() { ::pg_query::CommentStmt* _msg = _internal_mutable_comment_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.comment_stmt) return _msg; } // .pg_query.FetchStmt fetch_stmt = 76 [json_name = "FetchStmt"]; inline bool Node::_internal_has_fetch_stmt() const { return node_case() == kFetchStmt; } inline bool Node::has_fetch_stmt() const { return _internal_has_fetch_stmt(); } inline void Node::set_has_fetch_stmt() { _impl_._oneof_case_[0] = kFetchStmt; } inline void Node::clear_fetch_stmt() { if (_internal_has_fetch_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_fetch_stmt()) { clear_has_node(); ::pg_query::FetchStmt* temp = _impl_.node_.fetch_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.fetch_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FetchStmt& Node::_internal_fetch_stmt() const { return _internal_has_fetch_stmt() ? *_impl_.node_.fetch_stmt_ : reinterpret_cast< ::pg_query::FetchStmt&>(::pg_query::_FetchStmt_default_instance_); } inline const ::pg_query::FetchStmt& Node::fetch_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.fetch_stmt) return _internal_fetch_stmt(); } inline ::pg_query::FetchStmt* Node::unsafe_arena_release_fetch_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.fetch_stmt) if (_internal_has_fetch_stmt()) { clear_has_node(); ::pg_query::FetchStmt* temp = _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* fetch_stmt) { clear_node(); if (fetch_stmt) { set_has_fetch_stmt(); _impl_.node_.fetch_stmt_ = fetch_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.fetch_stmt) } inline ::pg_query::FetchStmt* Node::_internal_mutable_fetch_stmt() { if (!_internal_has_fetch_stmt()) { clear_node(); set_has_fetch_stmt(); _impl_.node_.fetch_stmt_ = CreateMaybeMessage< ::pg_query::FetchStmt >(GetArenaForAllocation()); } return _impl_.node_.fetch_stmt_; } inline ::pg_query::FetchStmt* Node::mutable_fetch_stmt() { ::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 = 77 [json_name = "IndexStmt"]; inline bool Node::_internal_has_index_stmt() const { return node_case() == kIndexStmt; } inline bool Node::has_index_stmt() const { return _internal_has_index_stmt(); } inline void Node::set_has_index_stmt() { _impl_._oneof_case_[0] = kIndexStmt; } inline void Node::clear_index_stmt() { if (_internal_has_index_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_index_stmt()) { clear_has_node(); ::pg_query::IndexStmt* temp = _impl_.node_.index_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.index_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::IndexStmt& Node::_internal_index_stmt() const { return _internal_has_index_stmt() ? *_impl_.node_.index_stmt_ : reinterpret_cast< ::pg_query::IndexStmt&>(::pg_query::_IndexStmt_default_instance_); } inline const ::pg_query::IndexStmt& Node::index_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.index_stmt) return _internal_index_stmt(); } inline ::pg_query::IndexStmt* Node::unsafe_arena_release_index_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.index_stmt) if (_internal_has_index_stmt()) { clear_has_node(); ::pg_query::IndexStmt* temp = _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* index_stmt) { clear_node(); if (index_stmt) { set_has_index_stmt(); _impl_.node_.index_stmt_ = index_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.index_stmt) } inline ::pg_query::IndexStmt* Node::_internal_mutable_index_stmt() { if (!_internal_has_index_stmt()) { clear_node(); set_has_index_stmt(); _impl_.node_.index_stmt_ = CreateMaybeMessage< ::pg_query::IndexStmt >(GetArenaForAllocation()); } return _impl_.node_.index_stmt_; } inline ::pg_query::IndexStmt* Node::mutable_index_stmt() { ::pg_query::IndexStmt* _msg = _internal_mutable_index_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.index_stmt) return _msg; } // .pg_query.CreateFunctionStmt create_function_stmt = 78 [json_name = "CreateFunctionStmt"]; inline bool Node::_internal_has_create_function_stmt() const { return node_case() == kCreateFunctionStmt; } inline bool Node::has_create_function_stmt() const { return _internal_has_create_function_stmt(); } inline void Node::set_has_create_function_stmt() { _impl_._oneof_case_[0] = kCreateFunctionStmt; } inline void Node::clear_create_function_stmt() { if (_internal_has_create_function_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_function_stmt()) { clear_has_node(); ::pg_query::CreateFunctionStmt* temp = _impl_.node_.create_function_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_function_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_function_stmt) return _internal_create_function_stmt(); } inline ::pg_query::CreateFunctionStmt* Node::unsafe_arena_release_create_function_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_function_stmt) if (_internal_has_create_function_stmt()) { clear_has_node(); ::pg_query::CreateFunctionStmt* temp = _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* create_function_stmt) { clear_node(); if (create_function_stmt) { set_has_create_function_stmt(); _impl_.node_.create_function_stmt_ = create_function_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_function_stmt) } inline ::pg_query::CreateFunctionStmt* Node::_internal_mutable_create_function_stmt() { if (!_internal_has_create_function_stmt()) { clear_node(); set_has_create_function_stmt(); _impl_.node_.create_function_stmt_ = CreateMaybeMessage< ::pg_query::CreateFunctionStmt >(GetArenaForAllocation()); } return _impl_.node_.create_function_stmt_; } inline ::pg_query::CreateFunctionStmt* Node::mutable_create_function_stmt() { ::pg_query::CreateFunctionStmt* _msg = _internal_mutable_create_function_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_function_stmt) return _msg; } // .pg_query.AlterFunctionStmt alter_function_stmt = 79 [json_name = "AlterFunctionStmt"]; inline bool Node::_internal_has_alter_function_stmt() const { return node_case() == kAlterFunctionStmt; } inline bool Node::has_alter_function_stmt() const { return _internal_has_alter_function_stmt(); } inline void Node::set_has_alter_function_stmt() { _impl_._oneof_case_[0] = kAlterFunctionStmt; } inline void Node::clear_alter_function_stmt() { if (_internal_has_alter_function_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_function_stmt()) { clear_has_node(); ::pg_query::AlterFunctionStmt* temp = _impl_.node_.alter_function_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_function_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_function_stmt) return _internal_alter_function_stmt(); } inline ::pg_query::AlterFunctionStmt* Node::unsafe_arena_release_alter_function_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_function_stmt) if (_internal_has_alter_function_stmt()) { clear_has_node(); ::pg_query::AlterFunctionStmt* temp = _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* alter_function_stmt) { clear_node(); if (alter_function_stmt) { set_has_alter_function_stmt(); _impl_.node_.alter_function_stmt_ = alter_function_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_function_stmt) } inline ::pg_query::AlterFunctionStmt* Node::_internal_mutable_alter_function_stmt() { if (!_internal_has_alter_function_stmt()) { clear_node(); set_has_alter_function_stmt(); _impl_.node_.alter_function_stmt_ = CreateMaybeMessage< ::pg_query::AlterFunctionStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_function_stmt_; } inline ::pg_query::AlterFunctionStmt* Node::mutable_alter_function_stmt() { ::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 = 80 [json_name = "DoStmt"]; inline bool Node::_internal_has_do_stmt() const { return node_case() == kDoStmt; } inline bool Node::has_do_stmt() const { return _internal_has_do_stmt(); } inline void Node::set_has_do_stmt() { _impl_._oneof_case_[0] = kDoStmt; } inline void Node::clear_do_stmt() { if (_internal_has_do_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_do_stmt()) { clear_has_node(); ::pg_query::DoStmt* temp = _impl_.node_.do_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.do_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DoStmt& Node::_internal_do_stmt() const { return _internal_has_do_stmt() ? *_impl_.node_.do_stmt_ : reinterpret_cast< ::pg_query::DoStmt&>(::pg_query::_DoStmt_default_instance_); } inline const ::pg_query::DoStmt& Node::do_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.do_stmt) return _internal_do_stmt(); } inline ::pg_query::DoStmt* Node::unsafe_arena_release_do_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.do_stmt) if (_internal_has_do_stmt()) { clear_has_node(); ::pg_query::DoStmt* temp = _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* do_stmt) { clear_node(); if (do_stmt) { set_has_do_stmt(); _impl_.node_.do_stmt_ = do_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.do_stmt) } inline ::pg_query::DoStmt* Node::_internal_mutable_do_stmt() { if (!_internal_has_do_stmt()) { clear_node(); set_has_do_stmt(); _impl_.node_.do_stmt_ = CreateMaybeMessage< ::pg_query::DoStmt >(GetArenaForAllocation()); } return _impl_.node_.do_stmt_; } inline ::pg_query::DoStmt* Node::mutable_do_stmt() { ::pg_query::DoStmt* _msg = _internal_mutable_do_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.do_stmt) return _msg; } // .pg_query.RenameStmt rename_stmt = 81 [json_name = "RenameStmt"]; inline bool Node::_internal_has_rename_stmt() const { return node_case() == kRenameStmt; } inline bool Node::has_rename_stmt() const { return _internal_has_rename_stmt(); } inline void Node::set_has_rename_stmt() { _impl_._oneof_case_[0] = kRenameStmt; } inline void Node::clear_rename_stmt() { if (_internal_has_rename_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_rename_stmt()) { clear_has_node(); ::pg_query::RenameStmt* temp = _impl_.node_.rename_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.rename_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RenameStmt& Node::_internal_rename_stmt() const { return _internal_has_rename_stmt() ? *_impl_.node_.rename_stmt_ : reinterpret_cast< ::pg_query::RenameStmt&>(::pg_query::_RenameStmt_default_instance_); } inline const ::pg_query::RenameStmt& Node::rename_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.rename_stmt) return _internal_rename_stmt(); } inline ::pg_query::RenameStmt* Node::unsafe_arena_release_rename_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.rename_stmt) if (_internal_has_rename_stmt()) { clear_has_node(); ::pg_query::RenameStmt* temp = _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* rename_stmt) { clear_node(); if (rename_stmt) { set_has_rename_stmt(); _impl_.node_.rename_stmt_ = rename_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.rename_stmt) } inline ::pg_query::RenameStmt* Node::_internal_mutable_rename_stmt() { if (!_internal_has_rename_stmt()) { clear_node(); set_has_rename_stmt(); _impl_.node_.rename_stmt_ = CreateMaybeMessage< ::pg_query::RenameStmt >(GetArenaForAllocation()); } return _impl_.node_.rename_stmt_; } inline ::pg_query::RenameStmt* Node::mutable_rename_stmt() { ::pg_query::RenameStmt* _msg = _internal_mutable_rename_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.rename_stmt) return _msg; } // .pg_query.RuleStmt rule_stmt = 82 [json_name = "RuleStmt"]; inline bool Node::_internal_has_rule_stmt() const { return node_case() == kRuleStmt; } inline bool Node::has_rule_stmt() const { return _internal_has_rule_stmt(); } inline void Node::set_has_rule_stmt() { _impl_._oneof_case_[0] = kRuleStmt; } inline void Node::clear_rule_stmt() { if (_internal_has_rule_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_rule_stmt()) { clear_has_node(); ::pg_query::RuleStmt* temp = _impl_.node_.rule_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.rule_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RuleStmt& Node::_internal_rule_stmt() const { return _internal_has_rule_stmt() ? *_impl_.node_.rule_stmt_ : reinterpret_cast< ::pg_query::RuleStmt&>(::pg_query::_RuleStmt_default_instance_); } inline const ::pg_query::RuleStmt& Node::rule_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.rule_stmt) return _internal_rule_stmt(); } inline ::pg_query::RuleStmt* Node::unsafe_arena_release_rule_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.rule_stmt) if (_internal_has_rule_stmt()) { clear_has_node(); ::pg_query::RuleStmt* temp = _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* rule_stmt) { clear_node(); if (rule_stmt) { set_has_rule_stmt(); _impl_.node_.rule_stmt_ = rule_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.rule_stmt) } inline ::pg_query::RuleStmt* Node::_internal_mutable_rule_stmt() { if (!_internal_has_rule_stmt()) { clear_node(); set_has_rule_stmt(); _impl_.node_.rule_stmt_ = CreateMaybeMessage< ::pg_query::RuleStmt >(GetArenaForAllocation()); } return _impl_.node_.rule_stmt_; } inline ::pg_query::RuleStmt* Node::mutable_rule_stmt() { ::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 = 83 [json_name = "NotifyStmt"]; inline bool Node::_internal_has_notify_stmt() const { return node_case() == kNotifyStmt; } inline bool Node::has_notify_stmt() const { return _internal_has_notify_stmt(); } inline void Node::set_has_notify_stmt() { _impl_._oneof_case_[0] = kNotifyStmt; } inline void Node::clear_notify_stmt() { if (_internal_has_notify_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_notify_stmt()) { clear_has_node(); ::pg_query::NotifyStmt* temp = _impl_.node_.notify_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.notify_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::NotifyStmt& Node::_internal_notify_stmt() const { return _internal_has_notify_stmt() ? *_impl_.node_.notify_stmt_ : reinterpret_cast< ::pg_query::NotifyStmt&>(::pg_query::_NotifyStmt_default_instance_); } inline const ::pg_query::NotifyStmt& Node::notify_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.notify_stmt) return _internal_notify_stmt(); } inline ::pg_query::NotifyStmt* Node::unsafe_arena_release_notify_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.notify_stmt) if (_internal_has_notify_stmt()) { clear_has_node(); ::pg_query::NotifyStmt* temp = _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* notify_stmt) { clear_node(); if (notify_stmt) { set_has_notify_stmt(); _impl_.node_.notify_stmt_ = notify_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.notify_stmt) } inline ::pg_query::NotifyStmt* Node::_internal_mutable_notify_stmt() { if (!_internal_has_notify_stmt()) { clear_node(); set_has_notify_stmt(); _impl_.node_.notify_stmt_ = CreateMaybeMessage< ::pg_query::NotifyStmt >(GetArenaForAllocation()); } return _impl_.node_.notify_stmt_; } inline ::pg_query::NotifyStmt* Node::mutable_notify_stmt() { ::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 = 84 [json_name = "ListenStmt"]; inline bool Node::_internal_has_listen_stmt() const { return node_case() == kListenStmt; } inline bool Node::has_listen_stmt() const { return _internal_has_listen_stmt(); } inline void Node::set_has_listen_stmt() { _impl_._oneof_case_[0] = kListenStmt; } inline void Node::clear_listen_stmt() { if (_internal_has_listen_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_listen_stmt()) { clear_has_node(); ::pg_query::ListenStmt* temp = _impl_.node_.listen_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.listen_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ListenStmt& Node::_internal_listen_stmt() const { return _internal_has_listen_stmt() ? *_impl_.node_.listen_stmt_ : reinterpret_cast< ::pg_query::ListenStmt&>(::pg_query::_ListenStmt_default_instance_); } inline const ::pg_query::ListenStmt& Node::listen_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.listen_stmt) return _internal_listen_stmt(); } inline ::pg_query::ListenStmt* Node::unsafe_arena_release_listen_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.listen_stmt) if (_internal_has_listen_stmt()) { clear_has_node(); ::pg_query::ListenStmt* temp = _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* listen_stmt) { clear_node(); if (listen_stmt) { set_has_listen_stmt(); _impl_.node_.listen_stmt_ = listen_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.listen_stmt) } inline ::pg_query::ListenStmt* Node::_internal_mutable_listen_stmt() { if (!_internal_has_listen_stmt()) { clear_node(); set_has_listen_stmt(); _impl_.node_.listen_stmt_ = CreateMaybeMessage< ::pg_query::ListenStmt >(GetArenaForAllocation()); } return _impl_.node_.listen_stmt_; } inline ::pg_query::ListenStmt* Node::mutable_listen_stmt() { ::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 = 85 [json_name = "UnlistenStmt"]; inline bool Node::_internal_has_unlisten_stmt() const { return node_case() == kUnlistenStmt; } inline bool Node::has_unlisten_stmt() const { return _internal_has_unlisten_stmt(); } inline void Node::set_has_unlisten_stmt() { _impl_._oneof_case_[0] = kUnlistenStmt; } inline void Node::clear_unlisten_stmt() { if (_internal_has_unlisten_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_unlisten_stmt()) { clear_has_node(); ::pg_query::UnlistenStmt* temp = _impl_.node_.unlisten_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.unlisten_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::UnlistenStmt& Node::_internal_unlisten_stmt() const { return _internal_has_unlisten_stmt() ? *_impl_.node_.unlisten_stmt_ : reinterpret_cast< ::pg_query::UnlistenStmt&>(::pg_query::_UnlistenStmt_default_instance_); } inline const ::pg_query::UnlistenStmt& Node::unlisten_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.unlisten_stmt) return _internal_unlisten_stmt(); } inline ::pg_query::UnlistenStmt* Node::unsafe_arena_release_unlisten_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.unlisten_stmt) if (_internal_has_unlisten_stmt()) { clear_has_node(); ::pg_query::UnlistenStmt* temp = _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* unlisten_stmt) { clear_node(); if (unlisten_stmt) { set_has_unlisten_stmt(); _impl_.node_.unlisten_stmt_ = unlisten_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.unlisten_stmt) } inline ::pg_query::UnlistenStmt* Node::_internal_mutable_unlisten_stmt() { if (!_internal_has_unlisten_stmt()) { clear_node(); set_has_unlisten_stmt(); _impl_.node_.unlisten_stmt_ = CreateMaybeMessage< ::pg_query::UnlistenStmt >(GetArenaForAllocation()); } return _impl_.node_.unlisten_stmt_; } inline ::pg_query::UnlistenStmt* Node::mutable_unlisten_stmt() { ::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 = 86 [json_name = "TransactionStmt"]; inline bool Node::_internal_has_transaction_stmt() const { return node_case() == kTransactionStmt; } inline bool Node::has_transaction_stmt() const { return _internal_has_transaction_stmt(); } inline void Node::set_has_transaction_stmt() { _impl_._oneof_case_[0] = kTransactionStmt; } inline void Node::clear_transaction_stmt() { if (_internal_has_transaction_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_transaction_stmt()) { clear_has_node(); ::pg_query::TransactionStmt* temp = _impl_.node_.transaction_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.transaction_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TransactionStmt& Node::_internal_transaction_stmt() const { return _internal_has_transaction_stmt() ? *_impl_.node_.transaction_stmt_ : reinterpret_cast< ::pg_query::TransactionStmt&>(::pg_query::_TransactionStmt_default_instance_); } inline const ::pg_query::TransactionStmt& Node::transaction_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.transaction_stmt) return _internal_transaction_stmt(); } inline ::pg_query::TransactionStmt* Node::unsafe_arena_release_transaction_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.transaction_stmt) if (_internal_has_transaction_stmt()) { clear_has_node(); ::pg_query::TransactionStmt* temp = _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* transaction_stmt) { clear_node(); if (transaction_stmt) { set_has_transaction_stmt(); _impl_.node_.transaction_stmt_ = transaction_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.transaction_stmt) } inline ::pg_query::TransactionStmt* Node::_internal_mutable_transaction_stmt() { if (!_internal_has_transaction_stmt()) { clear_node(); set_has_transaction_stmt(); _impl_.node_.transaction_stmt_ = CreateMaybeMessage< ::pg_query::TransactionStmt >(GetArenaForAllocation()); } return _impl_.node_.transaction_stmt_; } inline ::pg_query::TransactionStmt* Node::mutable_transaction_stmt() { ::pg_query::TransactionStmt* _msg = _internal_mutable_transaction_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.transaction_stmt) return _msg; } // .pg_query.ViewStmt view_stmt = 87 [json_name = "ViewStmt"]; inline bool Node::_internal_has_view_stmt() const { return node_case() == kViewStmt; } inline bool Node::has_view_stmt() const { return _internal_has_view_stmt(); } inline void Node::set_has_view_stmt() { _impl_._oneof_case_[0] = kViewStmt; } inline void Node::clear_view_stmt() { if (_internal_has_view_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_view_stmt()) { clear_has_node(); ::pg_query::ViewStmt* temp = _impl_.node_.view_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.view_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ViewStmt& Node::_internal_view_stmt() const { return _internal_has_view_stmt() ? *_impl_.node_.view_stmt_ : reinterpret_cast< ::pg_query::ViewStmt&>(::pg_query::_ViewStmt_default_instance_); } inline const ::pg_query::ViewStmt& Node::view_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.view_stmt) return _internal_view_stmt(); } inline ::pg_query::ViewStmt* Node::unsafe_arena_release_view_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.view_stmt) if (_internal_has_view_stmt()) { clear_has_node(); ::pg_query::ViewStmt* temp = _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* view_stmt) { clear_node(); if (view_stmt) { set_has_view_stmt(); _impl_.node_.view_stmt_ = view_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.view_stmt) } inline ::pg_query::ViewStmt* Node::_internal_mutable_view_stmt() { if (!_internal_has_view_stmt()) { clear_node(); set_has_view_stmt(); _impl_.node_.view_stmt_ = CreateMaybeMessage< ::pg_query::ViewStmt >(GetArenaForAllocation()); } return _impl_.node_.view_stmt_; } inline ::pg_query::ViewStmt* Node::mutable_view_stmt() { ::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 = 88 [json_name = "LoadStmt"]; inline bool Node::_internal_has_load_stmt() const { return node_case() == kLoadStmt; } inline bool Node::has_load_stmt() const { return _internal_has_load_stmt(); } inline void Node::set_has_load_stmt() { _impl_._oneof_case_[0] = kLoadStmt; } inline void Node::clear_load_stmt() { if (_internal_has_load_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_load_stmt()) { clear_has_node(); ::pg_query::LoadStmt* temp = _impl_.node_.load_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.load_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::LoadStmt& Node::_internal_load_stmt() const { return _internal_has_load_stmt() ? *_impl_.node_.load_stmt_ : reinterpret_cast< ::pg_query::LoadStmt&>(::pg_query::_LoadStmt_default_instance_); } inline const ::pg_query::LoadStmt& Node::load_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.load_stmt) return _internal_load_stmt(); } inline ::pg_query::LoadStmt* Node::unsafe_arena_release_load_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.load_stmt) if (_internal_has_load_stmt()) { clear_has_node(); ::pg_query::LoadStmt* temp = _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* load_stmt) { clear_node(); if (load_stmt) { set_has_load_stmt(); _impl_.node_.load_stmt_ = load_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.load_stmt) } inline ::pg_query::LoadStmt* Node::_internal_mutable_load_stmt() { if (!_internal_has_load_stmt()) { clear_node(); set_has_load_stmt(); _impl_.node_.load_stmt_ = CreateMaybeMessage< ::pg_query::LoadStmt >(GetArenaForAllocation()); } return _impl_.node_.load_stmt_; } inline ::pg_query::LoadStmt* Node::mutable_load_stmt() { ::pg_query::LoadStmt* _msg = _internal_mutable_load_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.load_stmt) return _msg; } // .pg_query.CreateDomainStmt create_domain_stmt = 89 [json_name = "CreateDomainStmt"]; inline bool Node::_internal_has_create_domain_stmt() const { return node_case() == kCreateDomainStmt; } inline bool Node::has_create_domain_stmt() const { return _internal_has_create_domain_stmt(); } inline void Node::set_has_create_domain_stmt() { _impl_._oneof_case_[0] = kCreateDomainStmt; } inline void Node::clear_create_domain_stmt() { if (_internal_has_create_domain_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_domain_stmt()) { clear_has_node(); ::pg_query::CreateDomainStmt* temp = _impl_.node_.create_domain_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_domain_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_domain_stmt) return _internal_create_domain_stmt(); } inline ::pg_query::CreateDomainStmt* Node::unsafe_arena_release_create_domain_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_domain_stmt) if (_internal_has_create_domain_stmt()) { clear_has_node(); ::pg_query::CreateDomainStmt* temp = _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* create_domain_stmt) { clear_node(); if (create_domain_stmt) { set_has_create_domain_stmt(); _impl_.node_.create_domain_stmt_ = create_domain_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_domain_stmt) } inline ::pg_query::CreateDomainStmt* Node::_internal_mutable_create_domain_stmt() { if (!_internal_has_create_domain_stmt()) { clear_node(); set_has_create_domain_stmt(); _impl_.node_.create_domain_stmt_ = CreateMaybeMessage< ::pg_query::CreateDomainStmt >(GetArenaForAllocation()); } return _impl_.node_.create_domain_stmt_; } inline ::pg_query::CreateDomainStmt* Node::mutable_create_domain_stmt() { ::pg_query::CreateDomainStmt* _msg = _internal_mutable_create_domain_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_domain_stmt) return _msg; } // .pg_query.CreatedbStmt createdb_stmt = 90 [json_name = "CreatedbStmt"]; inline bool Node::_internal_has_createdb_stmt() const { return node_case() == kCreatedbStmt; } inline bool Node::has_createdb_stmt() const { return _internal_has_createdb_stmt(); } inline void Node::set_has_createdb_stmt() { _impl_._oneof_case_[0] = kCreatedbStmt; } inline void Node::clear_createdb_stmt() { if (_internal_has_createdb_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_createdb_stmt()) { clear_has_node(); ::pg_query::CreatedbStmt* temp = _impl_.node_.createdb_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.createdb_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreatedbStmt& Node::_internal_createdb_stmt() const { return _internal_has_createdb_stmt() ? *_impl_.node_.createdb_stmt_ : reinterpret_cast< ::pg_query::CreatedbStmt&>(::pg_query::_CreatedbStmt_default_instance_); } inline const ::pg_query::CreatedbStmt& Node::createdb_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.createdb_stmt) return _internal_createdb_stmt(); } inline ::pg_query::CreatedbStmt* Node::unsafe_arena_release_createdb_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.createdb_stmt) if (_internal_has_createdb_stmt()) { clear_has_node(); ::pg_query::CreatedbStmt* temp = _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* createdb_stmt) { clear_node(); if (createdb_stmt) { set_has_createdb_stmt(); _impl_.node_.createdb_stmt_ = createdb_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.createdb_stmt) } inline ::pg_query::CreatedbStmt* Node::_internal_mutable_createdb_stmt() { if (!_internal_has_createdb_stmt()) { clear_node(); set_has_createdb_stmt(); _impl_.node_.createdb_stmt_ = CreateMaybeMessage< ::pg_query::CreatedbStmt >(GetArenaForAllocation()); } return _impl_.node_.createdb_stmt_; } inline ::pg_query::CreatedbStmt* Node::mutable_createdb_stmt() { ::pg_query::CreatedbStmt* _msg = _internal_mutable_createdb_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.createdb_stmt) return _msg; } // .pg_query.DropdbStmt dropdb_stmt = 91 [json_name = "DropdbStmt"]; inline bool Node::_internal_has_dropdb_stmt() const { return node_case() == kDropdbStmt; } inline bool Node::has_dropdb_stmt() const { return _internal_has_dropdb_stmt(); } inline void Node::set_has_dropdb_stmt() { _impl_._oneof_case_[0] = kDropdbStmt; } inline void Node::clear_dropdb_stmt() { if (_internal_has_dropdb_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_dropdb_stmt()) { clear_has_node(); ::pg_query::DropdbStmt* temp = _impl_.node_.dropdb_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.dropdb_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DropdbStmt& Node::_internal_dropdb_stmt() const { return _internal_has_dropdb_stmt() ? *_impl_.node_.dropdb_stmt_ : reinterpret_cast< ::pg_query::DropdbStmt&>(::pg_query::_DropdbStmt_default_instance_); } inline const ::pg_query::DropdbStmt& Node::dropdb_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.dropdb_stmt) return _internal_dropdb_stmt(); } inline ::pg_query::DropdbStmt* Node::unsafe_arena_release_dropdb_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.dropdb_stmt) if (_internal_has_dropdb_stmt()) { clear_has_node(); ::pg_query::DropdbStmt* temp = _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* dropdb_stmt) { clear_node(); if (dropdb_stmt) { set_has_dropdb_stmt(); _impl_.node_.dropdb_stmt_ = dropdb_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.dropdb_stmt) } inline ::pg_query::DropdbStmt* Node::_internal_mutable_dropdb_stmt() { if (!_internal_has_dropdb_stmt()) { clear_node(); set_has_dropdb_stmt(); _impl_.node_.dropdb_stmt_ = CreateMaybeMessage< ::pg_query::DropdbStmt >(GetArenaForAllocation()); } return _impl_.node_.dropdb_stmt_; } inline ::pg_query::DropdbStmt* Node::mutable_dropdb_stmt() { ::pg_query::DropdbStmt* _msg = _internal_mutable_dropdb_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.dropdb_stmt) return _msg; } // .pg_query.VacuumStmt vacuum_stmt = 92 [json_name = "VacuumStmt"]; inline bool Node::_internal_has_vacuum_stmt() const { return node_case() == kVacuumStmt; } inline bool Node::has_vacuum_stmt() const { return _internal_has_vacuum_stmt(); } inline void Node::set_has_vacuum_stmt() { _impl_._oneof_case_[0] = kVacuumStmt; } inline void Node::clear_vacuum_stmt() { if (_internal_has_vacuum_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_vacuum_stmt()) { clear_has_node(); ::pg_query::VacuumStmt* temp = _impl_.node_.vacuum_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.vacuum_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::VacuumStmt& Node::_internal_vacuum_stmt() const { return _internal_has_vacuum_stmt() ? *_impl_.node_.vacuum_stmt_ : reinterpret_cast< ::pg_query::VacuumStmt&>(::pg_query::_VacuumStmt_default_instance_); } inline const ::pg_query::VacuumStmt& Node::vacuum_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.vacuum_stmt) return _internal_vacuum_stmt(); } inline ::pg_query::VacuumStmt* Node::unsafe_arena_release_vacuum_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.vacuum_stmt) if (_internal_has_vacuum_stmt()) { clear_has_node(); ::pg_query::VacuumStmt* temp = _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* vacuum_stmt) { clear_node(); if (vacuum_stmt) { set_has_vacuum_stmt(); _impl_.node_.vacuum_stmt_ = vacuum_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.vacuum_stmt) } inline ::pg_query::VacuumStmt* Node::_internal_mutable_vacuum_stmt() { if (!_internal_has_vacuum_stmt()) { clear_node(); set_has_vacuum_stmt(); _impl_.node_.vacuum_stmt_ = CreateMaybeMessage< ::pg_query::VacuumStmt >(GetArenaForAllocation()); } return _impl_.node_.vacuum_stmt_; } inline ::pg_query::VacuumStmt* Node::mutable_vacuum_stmt() { ::pg_query::VacuumStmt* _msg = _internal_mutable_vacuum_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.vacuum_stmt) return _msg; } // .pg_query.ExplainStmt explain_stmt = 93 [json_name = "ExplainStmt"]; inline bool Node::_internal_has_explain_stmt() const { return node_case() == kExplainStmt; } inline bool Node::has_explain_stmt() const { return _internal_has_explain_stmt(); } inline void Node::set_has_explain_stmt() { _impl_._oneof_case_[0] = kExplainStmt; } inline void Node::clear_explain_stmt() { if (_internal_has_explain_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_explain_stmt()) { clear_has_node(); ::pg_query::ExplainStmt* temp = _impl_.node_.explain_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.explain_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ExplainStmt& Node::_internal_explain_stmt() const { return _internal_has_explain_stmt() ? *_impl_.node_.explain_stmt_ : reinterpret_cast< ::pg_query::ExplainStmt&>(::pg_query::_ExplainStmt_default_instance_); } inline const ::pg_query::ExplainStmt& Node::explain_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.explain_stmt) return _internal_explain_stmt(); } inline ::pg_query::ExplainStmt* Node::unsafe_arena_release_explain_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.explain_stmt) if (_internal_has_explain_stmt()) { clear_has_node(); ::pg_query::ExplainStmt* temp = _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* explain_stmt) { clear_node(); if (explain_stmt) { set_has_explain_stmt(); _impl_.node_.explain_stmt_ = explain_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.explain_stmt) } inline ::pg_query::ExplainStmt* Node::_internal_mutable_explain_stmt() { if (!_internal_has_explain_stmt()) { clear_node(); set_has_explain_stmt(); _impl_.node_.explain_stmt_ = CreateMaybeMessage< ::pg_query::ExplainStmt >(GetArenaForAllocation()); } return _impl_.node_.explain_stmt_; } inline ::pg_query::ExplainStmt* Node::mutable_explain_stmt() { ::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 = 94 [json_name = "CreateTableAsStmt"]; inline bool Node::_internal_has_create_table_as_stmt() const { return node_case() == kCreateTableAsStmt; } inline bool Node::has_create_table_as_stmt() const { return _internal_has_create_table_as_stmt(); } inline void Node::set_has_create_table_as_stmt() { _impl_._oneof_case_[0] = kCreateTableAsStmt; } inline void Node::clear_create_table_as_stmt() { if (_internal_has_create_table_as_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_table_as_stmt()) { clear_has_node(); ::pg_query::CreateTableAsStmt* temp = _impl_.node_.create_table_as_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_table_as_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_table_as_stmt) return _internal_create_table_as_stmt(); } inline ::pg_query::CreateTableAsStmt* Node::unsafe_arena_release_create_table_as_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_table_as_stmt) if (_internal_has_create_table_as_stmt()) { clear_has_node(); ::pg_query::CreateTableAsStmt* temp = _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* create_table_as_stmt) { clear_node(); if (create_table_as_stmt) { set_has_create_table_as_stmt(); _impl_.node_.create_table_as_stmt_ = create_table_as_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_table_as_stmt) } inline ::pg_query::CreateTableAsStmt* Node::_internal_mutable_create_table_as_stmt() { if (!_internal_has_create_table_as_stmt()) { clear_node(); set_has_create_table_as_stmt(); _impl_.node_.create_table_as_stmt_ = CreateMaybeMessage< ::pg_query::CreateTableAsStmt >(GetArenaForAllocation()); } return _impl_.node_.create_table_as_stmt_; } inline ::pg_query::CreateTableAsStmt* Node::mutable_create_table_as_stmt() { ::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.CreateSeqStmt create_seq_stmt = 95 [json_name = "CreateSeqStmt"]; inline bool Node::_internal_has_create_seq_stmt() const { return node_case() == kCreateSeqStmt; } inline bool Node::has_create_seq_stmt() const { return _internal_has_create_seq_stmt(); } inline void Node::set_has_create_seq_stmt() { _impl_._oneof_case_[0] = kCreateSeqStmt; } inline void Node::clear_create_seq_stmt() { if (_internal_has_create_seq_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_seq_stmt()) { clear_has_node(); ::pg_query::CreateSeqStmt* temp = _impl_.node_.create_seq_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_seq_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_seq_stmt) return _internal_create_seq_stmt(); } inline ::pg_query::CreateSeqStmt* Node::unsafe_arena_release_create_seq_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_seq_stmt) if (_internal_has_create_seq_stmt()) { clear_has_node(); ::pg_query::CreateSeqStmt* temp = _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* create_seq_stmt) { clear_node(); if (create_seq_stmt) { set_has_create_seq_stmt(); _impl_.node_.create_seq_stmt_ = create_seq_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_seq_stmt) } inline ::pg_query::CreateSeqStmt* Node::_internal_mutable_create_seq_stmt() { if (!_internal_has_create_seq_stmt()) { clear_node(); set_has_create_seq_stmt(); _impl_.node_.create_seq_stmt_ = CreateMaybeMessage< ::pg_query::CreateSeqStmt >(GetArenaForAllocation()); } return _impl_.node_.create_seq_stmt_; } inline ::pg_query::CreateSeqStmt* Node::mutable_create_seq_stmt() { ::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 = 96 [json_name = "AlterSeqStmt"]; inline bool Node::_internal_has_alter_seq_stmt() const { return node_case() == kAlterSeqStmt; } inline bool Node::has_alter_seq_stmt() const { return _internal_has_alter_seq_stmt(); } inline void Node::set_has_alter_seq_stmt() { _impl_._oneof_case_[0] = kAlterSeqStmt; } inline void Node::clear_alter_seq_stmt() { if (_internal_has_alter_seq_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_seq_stmt()) { clear_has_node(); ::pg_query::AlterSeqStmt* temp = _impl_.node_.alter_seq_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_seq_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_seq_stmt) return _internal_alter_seq_stmt(); } inline ::pg_query::AlterSeqStmt* Node::unsafe_arena_release_alter_seq_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_seq_stmt) if (_internal_has_alter_seq_stmt()) { clear_has_node(); ::pg_query::AlterSeqStmt* temp = _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* alter_seq_stmt) { clear_node(); if (alter_seq_stmt) { set_has_alter_seq_stmt(); _impl_.node_.alter_seq_stmt_ = alter_seq_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_seq_stmt) } inline ::pg_query::AlterSeqStmt* Node::_internal_mutable_alter_seq_stmt() { if (!_internal_has_alter_seq_stmt()) { clear_node(); set_has_alter_seq_stmt(); _impl_.node_.alter_seq_stmt_ = CreateMaybeMessage< ::pg_query::AlterSeqStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_seq_stmt_; } inline ::pg_query::AlterSeqStmt* Node::mutable_alter_seq_stmt() { ::pg_query::AlterSeqStmt* _msg = _internal_mutable_alter_seq_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_seq_stmt) return _msg; } // .pg_query.VariableSetStmt variable_set_stmt = 97 [json_name = "VariableSetStmt"]; inline bool Node::_internal_has_variable_set_stmt() const { return node_case() == kVariableSetStmt; } inline bool Node::has_variable_set_stmt() const { return _internal_has_variable_set_stmt(); } inline void Node::set_has_variable_set_stmt() { _impl_._oneof_case_[0] = kVariableSetStmt; } inline void Node::clear_variable_set_stmt() { if (_internal_has_variable_set_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_variable_set_stmt()) { clear_has_node(); ::pg_query::VariableSetStmt* temp = _impl_.node_.variable_set_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_variable_set_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.variable_set_stmt) return _internal_variable_set_stmt(); } inline ::pg_query::VariableSetStmt* Node::unsafe_arena_release_variable_set_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.variable_set_stmt) if (_internal_has_variable_set_stmt()) { clear_has_node(); ::pg_query::VariableSetStmt* temp = _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* variable_set_stmt) { clear_node(); if (variable_set_stmt) { set_has_variable_set_stmt(); _impl_.node_.variable_set_stmt_ = variable_set_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.variable_set_stmt) } inline ::pg_query::VariableSetStmt* Node::_internal_mutable_variable_set_stmt() { if (!_internal_has_variable_set_stmt()) { clear_node(); set_has_variable_set_stmt(); _impl_.node_.variable_set_stmt_ = CreateMaybeMessage< ::pg_query::VariableSetStmt >(GetArenaForAllocation()); } return _impl_.node_.variable_set_stmt_; } inline ::pg_query::VariableSetStmt* Node::mutable_variable_set_stmt() { ::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 = 98 [json_name = "VariableShowStmt"]; inline bool Node::_internal_has_variable_show_stmt() const { return node_case() == kVariableShowStmt; } inline bool Node::has_variable_show_stmt() const { return _internal_has_variable_show_stmt(); } inline void Node::set_has_variable_show_stmt() { _impl_._oneof_case_[0] = kVariableShowStmt; } inline void Node::clear_variable_show_stmt() { if (_internal_has_variable_show_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_variable_show_stmt()) { clear_has_node(); ::pg_query::VariableShowStmt* temp = _impl_.node_.variable_show_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_variable_show_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.variable_show_stmt) return _internal_variable_show_stmt(); } inline ::pg_query::VariableShowStmt* Node::unsafe_arena_release_variable_show_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.variable_show_stmt) if (_internal_has_variable_show_stmt()) { clear_has_node(); ::pg_query::VariableShowStmt* temp = _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* variable_show_stmt) { clear_node(); if (variable_show_stmt) { set_has_variable_show_stmt(); _impl_.node_.variable_show_stmt_ = variable_show_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.variable_show_stmt) } inline ::pg_query::VariableShowStmt* Node::_internal_mutable_variable_show_stmt() { if (!_internal_has_variable_show_stmt()) { clear_node(); set_has_variable_show_stmt(); _impl_.node_.variable_show_stmt_ = CreateMaybeMessage< ::pg_query::VariableShowStmt >(GetArenaForAllocation()); } return _impl_.node_.variable_show_stmt_; } inline ::pg_query::VariableShowStmt* Node::mutable_variable_show_stmt() { ::pg_query::VariableShowStmt* _msg = _internal_mutable_variable_show_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.variable_show_stmt) return _msg; } // .pg_query.DiscardStmt discard_stmt = 99 [json_name = "DiscardStmt"]; inline bool Node::_internal_has_discard_stmt() const { return node_case() == kDiscardStmt; } inline bool Node::has_discard_stmt() const { return _internal_has_discard_stmt(); } inline void Node::set_has_discard_stmt() { _impl_._oneof_case_[0] = kDiscardStmt; } inline void Node::clear_discard_stmt() { if (_internal_has_discard_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_discard_stmt()) { clear_has_node(); ::pg_query::DiscardStmt* temp = _impl_.node_.discard_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.discard_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DiscardStmt& Node::_internal_discard_stmt() const { return _internal_has_discard_stmt() ? *_impl_.node_.discard_stmt_ : reinterpret_cast< ::pg_query::DiscardStmt&>(::pg_query::_DiscardStmt_default_instance_); } inline const ::pg_query::DiscardStmt& Node::discard_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.discard_stmt) return _internal_discard_stmt(); } inline ::pg_query::DiscardStmt* Node::unsafe_arena_release_discard_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.discard_stmt) if (_internal_has_discard_stmt()) { clear_has_node(); ::pg_query::DiscardStmt* temp = _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* discard_stmt) { clear_node(); if (discard_stmt) { set_has_discard_stmt(); _impl_.node_.discard_stmt_ = discard_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.discard_stmt) } inline ::pg_query::DiscardStmt* Node::_internal_mutable_discard_stmt() { if (!_internal_has_discard_stmt()) { clear_node(); set_has_discard_stmt(); _impl_.node_.discard_stmt_ = CreateMaybeMessage< ::pg_query::DiscardStmt >(GetArenaForAllocation()); } return _impl_.node_.discard_stmt_; } inline ::pg_query::DiscardStmt* Node::mutable_discard_stmt() { ::pg_query::DiscardStmt* _msg = _internal_mutable_discard_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.discard_stmt) return _msg; } // .pg_query.CreateTrigStmt create_trig_stmt = 100 [json_name = "CreateTrigStmt"]; inline bool Node::_internal_has_create_trig_stmt() const { return node_case() == kCreateTrigStmt; } inline bool Node::has_create_trig_stmt() const { return _internal_has_create_trig_stmt(); } inline void Node::set_has_create_trig_stmt() { _impl_._oneof_case_[0] = kCreateTrigStmt; } inline void Node::clear_create_trig_stmt() { if (_internal_has_create_trig_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_trig_stmt()) { clear_has_node(); ::pg_query::CreateTrigStmt* temp = _impl_.node_.create_trig_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_trig_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_trig_stmt) return _internal_create_trig_stmt(); } inline ::pg_query::CreateTrigStmt* Node::unsafe_arena_release_create_trig_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_trig_stmt) if (_internal_has_create_trig_stmt()) { clear_has_node(); ::pg_query::CreateTrigStmt* temp = _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* create_trig_stmt) { clear_node(); if (create_trig_stmt) { set_has_create_trig_stmt(); _impl_.node_.create_trig_stmt_ = create_trig_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_trig_stmt) } inline ::pg_query::CreateTrigStmt* Node::_internal_mutable_create_trig_stmt() { if (!_internal_has_create_trig_stmt()) { clear_node(); set_has_create_trig_stmt(); _impl_.node_.create_trig_stmt_ = CreateMaybeMessage< ::pg_query::CreateTrigStmt >(GetArenaForAllocation()); } return _impl_.node_.create_trig_stmt_; } inline ::pg_query::CreateTrigStmt* Node::mutable_create_trig_stmt() { ::pg_query::CreateTrigStmt* _msg = _internal_mutable_create_trig_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_trig_stmt) return _msg; } // .pg_query.CreatePLangStmt create_plang_stmt = 101 [json_name = "CreatePLangStmt"]; inline bool Node::_internal_has_create_plang_stmt() const { return node_case() == kCreatePlangStmt; } inline bool Node::has_create_plang_stmt() const { return _internal_has_create_plang_stmt(); } inline void Node::set_has_create_plang_stmt() { _impl_._oneof_case_[0] = kCreatePlangStmt; } inline void Node::clear_create_plang_stmt() { if (_internal_has_create_plang_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_plang_stmt()) { clear_has_node(); ::pg_query::CreatePLangStmt* temp = _impl_.node_.create_plang_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_plang_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_plang_stmt) return _internal_create_plang_stmt(); } inline ::pg_query::CreatePLangStmt* Node::unsafe_arena_release_create_plang_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_plang_stmt) if (_internal_has_create_plang_stmt()) { clear_has_node(); ::pg_query::CreatePLangStmt* temp = _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* create_plang_stmt) { clear_node(); if (create_plang_stmt) { set_has_create_plang_stmt(); _impl_.node_.create_plang_stmt_ = create_plang_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_plang_stmt) } inline ::pg_query::CreatePLangStmt* Node::_internal_mutable_create_plang_stmt() { if (!_internal_has_create_plang_stmt()) { clear_node(); set_has_create_plang_stmt(); _impl_.node_.create_plang_stmt_ = CreateMaybeMessage< ::pg_query::CreatePLangStmt >(GetArenaForAllocation()); } return _impl_.node_.create_plang_stmt_; } inline ::pg_query::CreatePLangStmt* Node::mutable_create_plang_stmt() { ::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 = 102 [json_name = "CreateRoleStmt"]; inline bool Node::_internal_has_create_role_stmt() const { return node_case() == kCreateRoleStmt; } inline bool Node::has_create_role_stmt() const { return _internal_has_create_role_stmt(); } inline void Node::set_has_create_role_stmt() { _impl_._oneof_case_[0] = kCreateRoleStmt; } inline void Node::clear_create_role_stmt() { if (_internal_has_create_role_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_role_stmt()) { clear_has_node(); ::pg_query::CreateRoleStmt* temp = _impl_.node_.create_role_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_role_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_role_stmt) return _internal_create_role_stmt(); } inline ::pg_query::CreateRoleStmt* Node::unsafe_arena_release_create_role_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_role_stmt) if (_internal_has_create_role_stmt()) { clear_has_node(); ::pg_query::CreateRoleStmt* temp = _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* create_role_stmt) { clear_node(); if (create_role_stmt) { set_has_create_role_stmt(); _impl_.node_.create_role_stmt_ = create_role_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_role_stmt) } inline ::pg_query::CreateRoleStmt* Node::_internal_mutable_create_role_stmt() { if (!_internal_has_create_role_stmt()) { clear_node(); set_has_create_role_stmt(); _impl_.node_.create_role_stmt_ = CreateMaybeMessage< ::pg_query::CreateRoleStmt >(GetArenaForAllocation()); } return _impl_.node_.create_role_stmt_; } inline ::pg_query::CreateRoleStmt* Node::mutable_create_role_stmt() { ::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 = 103 [json_name = "AlterRoleStmt"]; inline bool Node::_internal_has_alter_role_stmt() const { return node_case() == kAlterRoleStmt; } inline bool Node::has_alter_role_stmt() const { return _internal_has_alter_role_stmt(); } inline void Node::set_has_alter_role_stmt() { _impl_._oneof_case_[0] = kAlterRoleStmt; } inline void Node::clear_alter_role_stmt() { if (_internal_has_alter_role_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_role_stmt()) { clear_has_node(); ::pg_query::AlterRoleStmt* temp = _impl_.node_.alter_role_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_role_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_role_stmt) return _internal_alter_role_stmt(); } inline ::pg_query::AlterRoleStmt* Node::unsafe_arena_release_alter_role_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_role_stmt) if (_internal_has_alter_role_stmt()) { clear_has_node(); ::pg_query::AlterRoleStmt* temp = _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* alter_role_stmt) { clear_node(); if (alter_role_stmt) { set_has_alter_role_stmt(); _impl_.node_.alter_role_stmt_ = alter_role_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_role_stmt) } inline ::pg_query::AlterRoleStmt* Node::_internal_mutable_alter_role_stmt() { if (!_internal_has_alter_role_stmt()) { clear_node(); set_has_alter_role_stmt(); _impl_.node_.alter_role_stmt_ = CreateMaybeMessage< ::pg_query::AlterRoleStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_role_stmt_; } inline ::pg_query::AlterRoleStmt* Node::mutable_alter_role_stmt() { ::pg_query::AlterRoleStmt* _msg = _internal_mutable_alter_role_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_role_stmt) return _msg; } // .pg_query.DropRoleStmt drop_role_stmt = 104 [json_name = "DropRoleStmt"]; inline bool Node::_internal_has_drop_role_stmt() const { return node_case() == kDropRoleStmt; } inline bool Node::has_drop_role_stmt() const { return _internal_has_drop_role_stmt(); } inline void Node::set_has_drop_role_stmt() { _impl_._oneof_case_[0] = kDropRoleStmt; } inline void Node::clear_drop_role_stmt() { if (_internal_has_drop_role_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_drop_role_stmt()) { clear_has_node(); ::pg_query::DropRoleStmt* temp = _impl_.node_.drop_role_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_drop_role_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.drop_role_stmt) return _internal_drop_role_stmt(); } inline ::pg_query::DropRoleStmt* Node::unsafe_arena_release_drop_role_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_role_stmt) if (_internal_has_drop_role_stmt()) { clear_has_node(); ::pg_query::DropRoleStmt* temp = _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* drop_role_stmt) { clear_node(); if (drop_role_stmt) { set_has_drop_role_stmt(); _impl_.node_.drop_role_stmt_ = drop_role_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_role_stmt) } inline ::pg_query::DropRoleStmt* Node::_internal_mutable_drop_role_stmt() { if (!_internal_has_drop_role_stmt()) { clear_node(); set_has_drop_role_stmt(); _impl_.node_.drop_role_stmt_ = CreateMaybeMessage< ::pg_query::DropRoleStmt >(GetArenaForAllocation()); } return _impl_.node_.drop_role_stmt_; } inline ::pg_query::DropRoleStmt* Node::mutable_drop_role_stmt() { ::pg_query::DropRoleStmt* _msg = _internal_mutable_drop_role_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_role_stmt) return _msg; } // .pg_query.LockStmt lock_stmt = 105 [json_name = "LockStmt"]; inline bool Node::_internal_has_lock_stmt() const { return node_case() == kLockStmt; } inline bool Node::has_lock_stmt() const { return _internal_has_lock_stmt(); } inline void Node::set_has_lock_stmt() { _impl_._oneof_case_[0] = kLockStmt; } inline void Node::clear_lock_stmt() { if (_internal_has_lock_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_lock_stmt()) { clear_has_node(); ::pg_query::LockStmt* temp = _impl_.node_.lock_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.lock_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::LockStmt& Node::_internal_lock_stmt() const { return _internal_has_lock_stmt() ? *_impl_.node_.lock_stmt_ : reinterpret_cast< ::pg_query::LockStmt&>(::pg_query::_LockStmt_default_instance_); } inline const ::pg_query::LockStmt& Node::lock_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.lock_stmt) return _internal_lock_stmt(); } inline ::pg_query::LockStmt* Node::unsafe_arena_release_lock_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.lock_stmt) if (_internal_has_lock_stmt()) { clear_has_node(); ::pg_query::LockStmt* temp = _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* lock_stmt) { clear_node(); if (lock_stmt) { set_has_lock_stmt(); _impl_.node_.lock_stmt_ = lock_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.lock_stmt) } inline ::pg_query::LockStmt* Node::_internal_mutable_lock_stmt() { if (!_internal_has_lock_stmt()) { clear_node(); set_has_lock_stmt(); _impl_.node_.lock_stmt_ = CreateMaybeMessage< ::pg_query::LockStmt >(GetArenaForAllocation()); } return _impl_.node_.lock_stmt_; } inline ::pg_query::LockStmt* Node::mutable_lock_stmt() { ::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 = 106 [json_name = "ConstraintsSetStmt"]; inline bool Node::_internal_has_constraints_set_stmt() const { return node_case() == kConstraintsSetStmt; } inline bool Node::has_constraints_set_stmt() const { return _internal_has_constraints_set_stmt(); } inline void Node::set_has_constraints_set_stmt() { _impl_._oneof_case_[0] = kConstraintsSetStmt; } inline void Node::clear_constraints_set_stmt() { if (_internal_has_constraints_set_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_constraints_set_stmt()) { clear_has_node(); ::pg_query::ConstraintsSetStmt* temp = _impl_.node_.constraints_set_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_constraints_set_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.constraints_set_stmt) return _internal_constraints_set_stmt(); } inline ::pg_query::ConstraintsSetStmt* Node::unsafe_arena_release_constraints_set_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.constraints_set_stmt) if (_internal_has_constraints_set_stmt()) { clear_has_node(); ::pg_query::ConstraintsSetStmt* temp = _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* constraints_set_stmt) { clear_node(); if (constraints_set_stmt) { set_has_constraints_set_stmt(); _impl_.node_.constraints_set_stmt_ = constraints_set_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.constraints_set_stmt) } inline ::pg_query::ConstraintsSetStmt* Node::_internal_mutable_constraints_set_stmt() { if (!_internal_has_constraints_set_stmt()) { clear_node(); set_has_constraints_set_stmt(); _impl_.node_.constraints_set_stmt_ = CreateMaybeMessage< ::pg_query::ConstraintsSetStmt >(GetArenaForAllocation()); } return _impl_.node_.constraints_set_stmt_; } inline ::pg_query::ConstraintsSetStmt* Node::mutable_constraints_set_stmt() { ::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 = 107 [json_name = "ReindexStmt"]; inline bool Node::_internal_has_reindex_stmt() const { return node_case() == kReindexStmt; } inline bool Node::has_reindex_stmt() const { return _internal_has_reindex_stmt(); } inline void Node::set_has_reindex_stmt() { _impl_._oneof_case_[0] = kReindexStmt; } inline void Node::clear_reindex_stmt() { if (_internal_has_reindex_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_reindex_stmt()) { clear_has_node(); ::pg_query::ReindexStmt* temp = _impl_.node_.reindex_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.reindex_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ReindexStmt& Node::_internal_reindex_stmt() const { return _internal_has_reindex_stmt() ? *_impl_.node_.reindex_stmt_ : reinterpret_cast< ::pg_query::ReindexStmt&>(::pg_query::_ReindexStmt_default_instance_); } inline const ::pg_query::ReindexStmt& Node::reindex_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.reindex_stmt) return _internal_reindex_stmt(); } inline ::pg_query::ReindexStmt* Node::unsafe_arena_release_reindex_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.reindex_stmt) if (_internal_has_reindex_stmt()) { clear_has_node(); ::pg_query::ReindexStmt* temp = _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* reindex_stmt) { clear_node(); if (reindex_stmt) { set_has_reindex_stmt(); _impl_.node_.reindex_stmt_ = reindex_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.reindex_stmt) } inline ::pg_query::ReindexStmt* Node::_internal_mutable_reindex_stmt() { if (!_internal_has_reindex_stmt()) { clear_node(); set_has_reindex_stmt(); _impl_.node_.reindex_stmt_ = CreateMaybeMessage< ::pg_query::ReindexStmt >(GetArenaForAllocation()); } return _impl_.node_.reindex_stmt_; } inline ::pg_query::ReindexStmt* Node::mutable_reindex_stmt() { ::pg_query::ReindexStmt* _msg = _internal_mutable_reindex_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.reindex_stmt) return _msg; } // .pg_query.CheckPointStmt check_point_stmt = 108 [json_name = "CheckPointStmt"]; inline bool Node::_internal_has_check_point_stmt() const { return node_case() == kCheckPointStmt; } inline bool Node::has_check_point_stmt() const { return _internal_has_check_point_stmt(); } inline void Node::set_has_check_point_stmt() { _impl_._oneof_case_[0] = kCheckPointStmt; } inline void Node::clear_check_point_stmt() { if (_internal_has_check_point_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_check_point_stmt()) { clear_has_node(); ::pg_query::CheckPointStmt* temp = _impl_.node_.check_point_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_check_point_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.check_point_stmt) return _internal_check_point_stmt(); } inline ::pg_query::CheckPointStmt* Node::unsafe_arena_release_check_point_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.check_point_stmt) if (_internal_has_check_point_stmt()) { clear_has_node(); ::pg_query::CheckPointStmt* temp = _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* check_point_stmt) { clear_node(); if (check_point_stmt) { set_has_check_point_stmt(); _impl_.node_.check_point_stmt_ = check_point_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.check_point_stmt) } inline ::pg_query::CheckPointStmt* Node::_internal_mutable_check_point_stmt() { if (!_internal_has_check_point_stmt()) { clear_node(); set_has_check_point_stmt(); _impl_.node_.check_point_stmt_ = CreateMaybeMessage< ::pg_query::CheckPointStmt >(GetArenaForAllocation()); } return _impl_.node_.check_point_stmt_; } inline ::pg_query::CheckPointStmt* Node::mutable_check_point_stmt() { ::pg_query::CheckPointStmt* _msg = _internal_mutable_check_point_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.check_point_stmt) return _msg; } // .pg_query.CreateSchemaStmt create_schema_stmt = 109 [json_name = "CreateSchemaStmt"]; inline bool Node::_internal_has_create_schema_stmt() const { return node_case() == kCreateSchemaStmt; } inline bool Node::has_create_schema_stmt() const { return _internal_has_create_schema_stmt(); } inline void Node::set_has_create_schema_stmt() { _impl_._oneof_case_[0] = kCreateSchemaStmt; } inline void Node::clear_create_schema_stmt() { if (_internal_has_create_schema_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_schema_stmt()) { clear_has_node(); ::pg_query::CreateSchemaStmt* temp = _impl_.node_.create_schema_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_schema_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_schema_stmt) return _internal_create_schema_stmt(); } inline ::pg_query::CreateSchemaStmt* Node::unsafe_arena_release_create_schema_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_schema_stmt) if (_internal_has_create_schema_stmt()) { clear_has_node(); ::pg_query::CreateSchemaStmt* temp = _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* create_schema_stmt) { clear_node(); if (create_schema_stmt) { set_has_create_schema_stmt(); _impl_.node_.create_schema_stmt_ = create_schema_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_schema_stmt) } inline ::pg_query::CreateSchemaStmt* Node::_internal_mutable_create_schema_stmt() { if (!_internal_has_create_schema_stmt()) { clear_node(); set_has_create_schema_stmt(); _impl_.node_.create_schema_stmt_ = CreateMaybeMessage< ::pg_query::CreateSchemaStmt >(GetArenaForAllocation()); } return _impl_.node_.create_schema_stmt_; } inline ::pg_query::CreateSchemaStmt* Node::mutable_create_schema_stmt() { ::pg_query::CreateSchemaStmt* _msg = _internal_mutable_create_schema_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_schema_stmt) return _msg; } // .pg_query.AlterDatabaseStmt alter_database_stmt = 110 [json_name = "AlterDatabaseStmt"]; inline bool Node::_internal_has_alter_database_stmt() const { return node_case() == kAlterDatabaseStmt; } inline bool Node::has_alter_database_stmt() const { return _internal_has_alter_database_stmt(); } inline void Node::set_has_alter_database_stmt() { _impl_._oneof_case_[0] = kAlterDatabaseStmt; } inline void Node::clear_alter_database_stmt() { if (_internal_has_alter_database_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_database_stmt()) { clear_has_node(); ::pg_query::AlterDatabaseStmt* temp = _impl_.node_.alter_database_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_database_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_database_stmt) return _internal_alter_database_stmt(); } inline ::pg_query::AlterDatabaseStmt* Node::unsafe_arena_release_alter_database_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_database_stmt) if (_internal_has_alter_database_stmt()) { clear_has_node(); ::pg_query::AlterDatabaseStmt* temp = _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* alter_database_stmt) { clear_node(); if (alter_database_stmt) { set_has_alter_database_stmt(); _impl_.node_.alter_database_stmt_ = alter_database_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_database_stmt) } inline ::pg_query::AlterDatabaseStmt* Node::_internal_mutable_alter_database_stmt() { if (!_internal_has_alter_database_stmt()) { clear_node(); set_has_alter_database_stmt(); _impl_.node_.alter_database_stmt_ = CreateMaybeMessage< ::pg_query::AlterDatabaseStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_database_stmt_; } inline ::pg_query::AlterDatabaseStmt* Node::mutable_alter_database_stmt() { ::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 = 111 [json_name = "AlterDatabaseRefreshCollStmt"]; inline bool Node::_internal_has_alter_database_refresh_coll_stmt() const { return node_case() == kAlterDatabaseRefreshCollStmt; } inline bool Node::has_alter_database_refresh_coll_stmt() const { return _internal_has_alter_database_refresh_coll_stmt(); } inline void Node::set_has_alter_database_refresh_coll_stmt() { _impl_._oneof_case_[0] = kAlterDatabaseRefreshCollStmt; } inline void Node::clear_alter_database_refresh_coll_stmt() { if (_internal_has_alter_database_refresh_coll_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_database_refresh_coll_stmt()) { clear_has_node(); ::pg_query::AlterDatabaseRefreshCollStmt* temp = _impl_.node_.alter_database_refresh_coll_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_database_refresh_coll_stmt() ? *_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 { // @@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 (_internal_has_alter_database_refresh_coll_stmt()) { clear_has_node(); ::pg_query::AlterDatabaseRefreshCollStmt* 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* alter_database_refresh_coll_stmt) { clear_node(); if (alter_database_refresh_coll_stmt) { set_has_alter_database_refresh_coll_stmt(); _impl_.node_.alter_database_refresh_coll_stmt_ = alter_database_refresh_coll_stmt; } // @@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 (!_internal_has_alter_database_refresh_coll_stmt()) { clear_node(); set_has_alter_database_refresh_coll_stmt(); _impl_.node_.alter_database_refresh_coll_stmt_ = CreateMaybeMessage< ::pg_query::AlterDatabaseRefreshCollStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_database_refresh_coll_stmt_; } inline ::pg_query::AlterDatabaseRefreshCollStmt* Node::mutable_alter_database_refresh_coll_stmt() { ::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 = 112 [json_name = "AlterDatabaseSetStmt"]; inline bool Node::_internal_has_alter_database_set_stmt() const { return node_case() == kAlterDatabaseSetStmt; } inline bool Node::has_alter_database_set_stmt() const { return _internal_has_alter_database_set_stmt(); } inline void Node::set_has_alter_database_set_stmt() { _impl_._oneof_case_[0] = kAlterDatabaseSetStmt; } inline void Node::clear_alter_database_set_stmt() { if (_internal_has_alter_database_set_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_database_set_stmt()) { clear_has_node(); ::pg_query::AlterDatabaseSetStmt* temp = _impl_.node_.alter_database_set_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_database_set_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_database_set_stmt) return _internal_alter_database_set_stmt(); } inline ::pg_query::AlterDatabaseSetStmt* Node::unsafe_arena_release_alter_database_set_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_database_set_stmt) if (_internal_has_alter_database_set_stmt()) { clear_has_node(); ::pg_query::AlterDatabaseSetStmt* temp = _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* alter_database_set_stmt) { clear_node(); if (alter_database_set_stmt) { set_has_alter_database_set_stmt(); _impl_.node_.alter_database_set_stmt_ = alter_database_set_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_database_set_stmt) } inline ::pg_query::AlterDatabaseSetStmt* Node::_internal_mutable_alter_database_set_stmt() { if (!_internal_has_alter_database_set_stmt()) { clear_node(); set_has_alter_database_set_stmt(); _impl_.node_.alter_database_set_stmt_ = CreateMaybeMessage< ::pg_query::AlterDatabaseSetStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_database_set_stmt_; } inline ::pg_query::AlterDatabaseSetStmt* Node::mutable_alter_database_set_stmt() { ::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.AlterRoleSetStmt alter_role_set_stmt = 113 [json_name = "AlterRoleSetStmt"]; inline bool Node::_internal_has_alter_role_set_stmt() const { return node_case() == kAlterRoleSetStmt; } inline bool Node::has_alter_role_set_stmt() const { return _internal_has_alter_role_set_stmt(); } inline void Node::set_has_alter_role_set_stmt() { _impl_._oneof_case_[0] = kAlterRoleSetStmt; } inline void Node::clear_alter_role_set_stmt() { if (_internal_has_alter_role_set_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_role_set_stmt()) { clear_has_node(); ::pg_query::AlterRoleSetStmt* temp = _impl_.node_.alter_role_set_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_role_set_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_role_set_stmt) return _internal_alter_role_set_stmt(); } inline ::pg_query::AlterRoleSetStmt* Node::unsafe_arena_release_alter_role_set_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_role_set_stmt) if (_internal_has_alter_role_set_stmt()) { clear_has_node(); ::pg_query::AlterRoleSetStmt* temp = _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* alter_role_set_stmt) { clear_node(); if (alter_role_set_stmt) { set_has_alter_role_set_stmt(); _impl_.node_.alter_role_set_stmt_ = alter_role_set_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_role_set_stmt) } inline ::pg_query::AlterRoleSetStmt* Node::_internal_mutable_alter_role_set_stmt() { if (!_internal_has_alter_role_set_stmt()) { clear_node(); set_has_alter_role_set_stmt(); _impl_.node_.alter_role_set_stmt_ = CreateMaybeMessage< ::pg_query::AlterRoleSetStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_role_set_stmt_; } inline ::pg_query::AlterRoleSetStmt* Node::mutable_alter_role_set_stmt() { ::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.CreateConversionStmt create_conversion_stmt = 114 [json_name = "CreateConversionStmt"]; inline bool Node::_internal_has_create_conversion_stmt() const { return node_case() == kCreateConversionStmt; } inline bool Node::has_create_conversion_stmt() const { return _internal_has_create_conversion_stmt(); } inline void Node::set_has_create_conversion_stmt() { _impl_._oneof_case_[0] = kCreateConversionStmt; } inline void Node::clear_create_conversion_stmt() { if (_internal_has_create_conversion_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_conversion_stmt()) { clear_has_node(); ::pg_query::CreateConversionStmt* temp = _impl_.node_.create_conversion_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_conversion_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_conversion_stmt) return _internal_create_conversion_stmt(); } inline ::pg_query::CreateConversionStmt* Node::unsafe_arena_release_create_conversion_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_conversion_stmt) if (_internal_has_create_conversion_stmt()) { clear_has_node(); ::pg_query::CreateConversionStmt* temp = _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* create_conversion_stmt) { clear_node(); if (create_conversion_stmt) { set_has_create_conversion_stmt(); _impl_.node_.create_conversion_stmt_ = create_conversion_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_conversion_stmt) } inline ::pg_query::CreateConversionStmt* Node::_internal_mutable_create_conversion_stmt() { if (!_internal_has_create_conversion_stmt()) { clear_node(); set_has_create_conversion_stmt(); _impl_.node_.create_conversion_stmt_ = CreateMaybeMessage< ::pg_query::CreateConversionStmt >(GetArenaForAllocation()); } return _impl_.node_.create_conversion_stmt_; } inline ::pg_query::CreateConversionStmt* Node::mutable_create_conversion_stmt() { ::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 = 115 [json_name = "CreateCastStmt"]; inline bool Node::_internal_has_create_cast_stmt() const { return node_case() == kCreateCastStmt; } inline bool Node::has_create_cast_stmt() const { return _internal_has_create_cast_stmt(); } inline void Node::set_has_create_cast_stmt() { _impl_._oneof_case_[0] = kCreateCastStmt; } inline void Node::clear_create_cast_stmt() { if (_internal_has_create_cast_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_cast_stmt()) { clear_has_node(); ::pg_query::CreateCastStmt* temp = _impl_.node_.create_cast_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_cast_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_cast_stmt) return _internal_create_cast_stmt(); } inline ::pg_query::CreateCastStmt* Node::unsafe_arena_release_create_cast_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_cast_stmt) if (_internal_has_create_cast_stmt()) { clear_has_node(); ::pg_query::CreateCastStmt* temp = _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* create_cast_stmt) { clear_node(); if (create_cast_stmt) { set_has_create_cast_stmt(); _impl_.node_.create_cast_stmt_ = create_cast_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_cast_stmt) } inline ::pg_query::CreateCastStmt* Node::_internal_mutable_create_cast_stmt() { if (!_internal_has_create_cast_stmt()) { clear_node(); set_has_create_cast_stmt(); _impl_.node_.create_cast_stmt_ = CreateMaybeMessage< ::pg_query::CreateCastStmt >(GetArenaForAllocation()); } return _impl_.node_.create_cast_stmt_; } inline ::pg_query::CreateCastStmt* Node::mutable_create_cast_stmt() { ::pg_query::CreateCastStmt* _msg = _internal_mutable_create_cast_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_cast_stmt) return _msg; } // .pg_query.CreateOpClassStmt create_op_class_stmt = 116 [json_name = "CreateOpClassStmt"]; inline bool Node::_internal_has_create_op_class_stmt() const { return node_case() == kCreateOpClassStmt; } inline bool Node::has_create_op_class_stmt() const { return _internal_has_create_op_class_stmt(); } inline void Node::set_has_create_op_class_stmt() { _impl_._oneof_case_[0] = kCreateOpClassStmt; } inline void Node::clear_create_op_class_stmt() { if (_internal_has_create_op_class_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_op_class_stmt()) { clear_has_node(); ::pg_query::CreateOpClassStmt* temp = _impl_.node_.create_op_class_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_op_class_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_op_class_stmt) return _internal_create_op_class_stmt(); } inline ::pg_query::CreateOpClassStmt* Node::unsafe_arena_release_create_op_class_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_op_class_stmt) if (_internal_has_create_op_class_stmt()) { clear_has_node(); ::pg_query::CreateOpClassStmt* temp = _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* create_op_class_stmt) { clear_node(); if (create_op_class_stmt) { set_has_create_op_class_stmt(); _impl_.node_.create_op_class_stmt_ = create_op_class_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_op_class_stmt) } inline ::pg_query::CreateOpClassStmt* Node::_internal_mutable_create_op_class_stmt() { if (!_internal_has_create_op_class_stmt()) { clear_node(); set_has_create_op_class_stmt(); _impl_.node_.create_op_class_stmt_ = CreateMaybeMessage< ::pg_query::CreateOpClassStmt >(GetArenaForAllocation()); } return _impl_.node_.create_op_class_stmt_; } inline ::pg_query::CreateOpClassStmt* Node::mutable_create_op_class_stmt() { ::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.CreateOpFamilyStmt create_op_family_stmt = 117 [json_name = "CreateOpFamilyStmt"]; inline bool Node::_internal_has_create_op_family_stmt() const { return node_case() == kCreateOpFamilyStmt; } inline bool Node::has_create_op_family_stmt() const { return _internal_has_create_op_family_stmt(); } inline void Node::set_has_create_op_family_stmt() { _impl_._oneof_case_[0] = kCreateOpFamilyStmt; } inline void Node::clear_create_op_family_stmt() { if (_internal_has_create_op_family_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_op_family_stmt()) { clear_has_node(); ::pg_query::CreateOpFamilyStmt* temp = _impl_.node_.create_op_family_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_op_family_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_op_family_stmt) return _internal_create_op_family_stmt(); } inline ::pg_query::CreateOpFamilyStmt* Node::unsafe_arena_release_create_op_family_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_op_family_stmt) if (_internal_has_create_op_family_stmt()) { clear_has_node(); ::pg_query::CreateOpFamilyStmt* temp = _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* create_op_family_stmt) { clear_node(); if (create_op_family_stmt) { set_has_create_op_family_stmt(); _impl_.node_.create_op_family_stmt_ = create_op_family_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_op_family_stmt) } inline ::pg_query::CreateOpFamilyStmt* Node::_internal_mutable_create_op_family_stmt() { if (!_internal_has_create_op_family_stmt()) { clear_node(); set_has_create_op_family_stmt(); _impl_.node_.create_op_family_stmt_ = CreateMaybeMessage< ::pg_query::CreateOpFamilyStmt >(GetArenaForAllocation()); } return _impl_.node_.create_op_family_stmt_; } inline ::pg_query::CreateOpFamilyStmt* Node::mutable_create_op_family_stmt() { ::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 = 118 [json_name = "AlterOpFamilyStmt"]; inline bool Node::_internal_has_alter_op_family_stmt() const { return node_case() == kAlterOpFamilyStmt; } inline bool Node::has_alter_op_family_stmt() const { return _internal_has_alter_op_family_stmt(); } inline void Node::set_has_alter_op_family_stmt() { _impl_._oneof_case_[0] = kAlterOpFamilyStmt; } inline void Node::clear_alter_op_family_stmt() { if (_internal_has_alter_op_family_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_op_family_stmt()) { clear_has_node(); ::pg_query::AlterOpFamilyStmt* temp = _impl_.node_.alter_op_family_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_op_family_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_op_family_stmt) return _internal_alter_op_family_stmt(); } inline ::pg_query::AlterOpFamilyStmt* Node::unsafe_arena_release_alter_op_family_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_op_family_stmt) if (_internal_has_alter_op_family_stmt()) { clear_has_node(); ::pg_query::AlterOpFamilyStmt* temp = _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* alter_op_family_stmt) { clear_node(); if (alter_op_family_stmt) { set_has_alter_op_family_stmt(); _impl_.node_.alter_op_family_stmt_ = alter_op_family_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_op_family_stmt) } inline ::pg_query::AlterOpFamilyStmt* Node::_internal_mutable_alter_op_family_stmt() { if (!_internal_has_alter_op_family_stmt()) { clear_node(); set_has_alter_op_family_stmt(); _impl_.node_.alter_op_family_stmt_ = CreateMaybeMessage< ::pg_query::AlterOpFamilyStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_op_family_stmt_; } inline ::pg_query::AlterOpFamilyStmt* Node::mutable_alter_op_family_stmt() { ::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.PrepareStmt prepare_stmt = 119 [json_name = "PrepareStmt"]; inline bool Node::_internal_has_prepare_stmt() const { return node_case() == kPrepareStmt; } inline bool Node::has_prepare_stmt() const { return _internal_has_prepare_stmt(); } inline void Node::set_has_prepare_stmt() { _impl_._oneof_case_[0] = kPrepareStmt; } inline void Node::clear_prepare_stmt() { if (_internal_has_prepare_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_prepare_stmt()) { clear_has_node(); ::pg_query::PrepareStmt* temp = _impl_.node_.prepare_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.prepare_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PrepareStmt& Node::_internal_prepare_stmt() const { return _internal_has_prepare_stmt() ? *_impl_.node_.prepare_stmt_ : reinterpret_cast< ::pg_query::PrepareStmt&>(::pg_query::_PrepareStmt_default_instance_); } inline const ::pg_query::PrepareStmt& Node::prepare_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.prepare_stmt) return _internal_prepare_stmt(); } inline ::pg_query::PrepareStmt* Node::unsafe_arena_release_prepare_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.prepare_stmt) if (_internal_has_prepare_stmt()) { clear_has_node(); ::pg_query::PrepareStmt* temp = _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* prepare_stmt) { clear_node(); if (prepare_stmt) { set_has_prepare_stmt(); _impl_.node_.prepare_stmt_ = prepare_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.prepare_stmt) } inline ::pg_query::PrepareStmt* Node::_internal_mutable_prepare_stmt() { if (!_internal_has_prepare_stmt()) { clear_node(); set_has_prepare_stmt(); _impl_.node_.prepare_stmt_ = CreateMaybeMessage< ::pg_query::PrepareStmt >(GetArenaForAllocation()); } return _impl_.node_.prepare_stmt_; } inline ::pg_query::PrepareStmt* Node::mutable_prepare_stmt() { ::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 = 120 [json_name = "ExecuteStmt"]; inline bool Node::_internal_has_execute_stmt() const { return node_case() == kExecuteStmt; } inline bool Node::has_execute_stmt() const { return _internal_has_execute_stmt(); } inline void Node::set_has_execute_stmt() { _impl_._oneof_case_[0] = kExecuteStmt; } inline void Node::clear_execute_stmt() { if (_internal_has_execute_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_execute_stmt()) { clear_has_node(); ::pg_query::ExecuteStmt* temp = _impl_.node_.execute_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.execute_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ExecuteStmt& Node::_internal_execute_stmt() const { return _internal_has_execute_stmt() ? *_impl_.node_.execute_stmt_ : reinterpret_cast< ::pg_query::ExecuteStmt&>(::pg_query::_ExecuteStmt_default_instance_); } inline const ::pg_query::ExecuteStmt& Node::execute_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.execute_stmt) return _internal_execute_stmt(); } inline ::pg_query::ExecuteStmt* Node::unsafe_arena_release_execute_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.execute_stmt) if (_internal_has_execute_stmt()) { clear_has_node(); ::pg_query::ExecuteStmt* temp = _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* execute_stmt) { clear_node(); if (execute_stmt) { set_has_execute_stmt(); _impl_.node_.execute_stmt_ = execute_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.execute_stmt) } inline ::pg_query::ExecuteStmt* Node::_internal_mutable_execute_stmt() { if (!_internal_has_execute_stmt()) { clear_node(); set_has_execute_stmt(); _impl_.node_.execute_stmt_ = CreateMaybeMessage< ::pg_query::ExecuteStmt >(GetArenaForAllocation()); } return _impl_.node_.execute_stmt_; } inline ::pg_query::ExecuteStmt* Node::mutable_execute_stmt() { ::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 = 121 [json_name = "DeallocateStmt"]; inline bool Node::_internal_has_deallocate_stmt() const { return node_case() == kDeallocateStmt; } inline bool Node::has_deallocate_stmt() const { return _internal_has_deallocate_stmt(); } inline void Node::set_has_deallocate_stmt() { _impl_._oneof_case_[0] = kDeallocateStmt; } inline void Node::clear_deallocate_stmt() { if (_internal_has_deallocate_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_deallocate_stmt()) { clear_has_node(); ::pg_query::DeallocateStmt* temp = _impl_.node_.deallocate_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.deallocate_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DeallocateStmt& Node::_internal_deallocate_stmt() const { return _internal_has_deallocate_stmt() ? *_impl_.node_.deallocate_stmt_ : reinterpret_cast< ::pg_query::DeallocateStmt&>(::pg_query::_DeallocateStmt_default_instance_); } inline const ::pg_query::DeallocateStmt& Node::deallocate_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.deallocate_stmt) return _internal_deallocate_stmt(); } inline ::pg_query::DeallocateStmt* Node::unsafe_arena_release_deallocate_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.deallocate_stmt) if (_internal_has_deallocate_stmt()) { clear_has_node(); ::pg_query::DeallocateStmt* temp = _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* deallocate_stmt) { clear_node(); if (deallocate_stmt) { set_has_deallocate_stmt(); _impl_.node_.deallocate_stmt_ = deallocate_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.deallocate_stmt) } inline ::pg_query::DeallocateStmt* Node::_internal_mutable_deallocate_stmt() { if (!_internal_has_deallocate_stmt()) { clear_node(); set_has_deallocate_stmt(); _impl_.node_.deallocate_stmt_ = CreateMaybeMessage< ::pg_query::DeallocateStmt >(GetArenaForAllocation()); } return _impl_.node_.deallocate_stmt_; } inline ::pg_query::DeallocateStmt* Node::mutable_deallocate_stmt() { ::pg_query::DeallocateStmt* _msg = _internal_mutable_deallocate_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.deallocate_stmt) return _msg; } // .pg_query.DeclareCursorStmt declare_cursor_stmt = 122 [json_name = "DeclareCursorStmt"]; inline bool Node::_internal_has_declare_cursor_stmt() const { return node_case() == kDeclareCursorStmt; } inline bool Node::has_declare_cursor_stmt() const { return _internal_has_declare_cursor_stmt(); } inline void Node::set_has_declare_cursor_stmt() { _impl_._oneof_case_[0] = kDeclareCursorStmt; } inline void Node::clear_declare_cursor_stmt() { if (_internal_has_declare_cursor_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_declare_cursor_stmt()) { clear_has_node(); ::pg_query::DeclareCursorStmt* temp = _impl_.node_.declare_cursor_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_declare_cursor_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.declare_cursor_stmt) return _internal_declare_cursor_stmt(); } inline ::pg_query::DeclareCursorStmt* Node::unsafe_arena_release_declare_cursor_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.declare_cursor_stmt) if (_internal_has_declare_cursor_stmt()) { clear_has_node(); ::pg_query::DeclareCursorStmt* temp = _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* declare_cursor_stmt) { clear_node(); if (declare_cursor_stmt) { set_has_declare_cursor_stmt(); _impl_.node_.declare_cursor_stmt_ = declare_cursor_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.declare_cursor_stmt) } inline ::pg_query::DeclareCursorStmt* Node::_internal_mutable_declare_cursor_stmt() { if (!_internal_has_declare_cursor_stmt()) { clear_node(); set_has_declare_cursor_stmt(); _impl_.node_.declare_cursor_stmt_ = CreateMaybeMessage< ::pg_query::DeclareCursorStmt >(GetArenaForAllocation()); } return _impl_.node_.declare_cursor_stmt_; } inline ::pg_query::DeclareCursorStmt* Node::mutable_declare_cursor_stmt() { ::pg_query::DeclareCursorStmt* _msg = _internal_mutable_declare_cursor_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.declare_cursor_stmt) return _msg; } // .pg_query.CreateTableSpaceStmt create_table_space_stmt = 123 [json_name = "CreateTableSpaceStmt"]; inline bool Node::_internal_has_create_table_space_stmt() const { return node_case() == kCreateTableSpaceStmt; } inline bool Node::has_create_table_space_stmt() const { return _internal_has_create_table_space_stmt(); } inline void Node::set_has_create_table_space_stmt() { _impl_._oneof_case_[0] = kCreateTableSpaceStmt; } inline void Node::clear_create_table_space_stmt() { if (_internal_has_create_table_space_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_table_space_stmt()) { clear_has_node(); ::pg_query::CreateTableSpaceStmt* temp = _impl_.node_.create_table_space_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_table_space_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_table_space_stmt) return _internal_create_table_space_stmt(); } inline ::pg_query::CreateTableSpaceStmt* Node::unsafe_arena_release_create_table_space_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_table_space_stmt) if (_internal_has_create_table_space_stmt()) { clear_has_node(); ::pg_query::CreateTableSpaceStmt* temp = _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* create_table_space_stmt) { clear_node(); if (create_table_space_stmt) { set_has_create_table_space_stmt(); _impl_.node_.create_table_space_stmt_ = create_table_space_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_table_space_stmt) } inline ::pg_query::CreateTableSpaceStmt* Node::_internal_mutable_create_table_space_stmt() { if (!_internal_has_create_table_space_stmt()) { clear_node(); set_has_create_table_space_stmt(); _impl_.node_.create_table_space_stmt_ = CreateMaybeMessage< ::pg_query::CreateTableSpaceStmt >(GetArenaForAllocation()); } return _impl_.node_.create_table_space_stmt_; } inline ::pg_query::CreateTableSpaceStmt* Node::mutable_create_table_space_stmt() { ::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 = 124 [json_name = "DropTableSpaceStmt"]; inline bool Node::_internal_has_drop_table_space_stmt() const { return node_case() == kDropTableSpaceStmt; } inline bool Node::has_drop_table_space_stmt() const { return _internal_has_drop_table_space_stmt(); } inline void Node::set_has_drop_table_space_stmt() { _impl_._oneof_case_[0] = kDropTableSpaceStmt; } inline void Node::clear_drop_table_space_stmt() { if (_internal_has_drop_table_space_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_drop_table_space_stmt()) { clear_has_node(); ::pg_query::DropTableSpaceStmt* temp = _impl_.node_.drop_table_space_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_drop_table_space_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.drop_table_space_stmt) return _internal_drop_table_space_stmt(); } inline ::pg_query::DropTableSpaceStmt* Node::unsafe_arena_release_drop_table_space_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_table_space_stmt) if (_internal_has_drop_table_space_stmt()) { clear_has_node(); ::pg_query::DropTableSpaceStmt* temp = _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* drop_table_space_stmt) { clear_node(); if (drop_table_space_stmt) { set_has_drop_table_space_stmt(); _impl_.node_.drop_table_space_stmt_ = drop_table_space_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_table_space_stmt) } inline ::pg_query::DropTableSpaceStmt* Node::_internal_mutable_drop_table_space_stmt() { if (!_internal_has_drop_table_space_stmt()) { clear_node(); set_has_drop_table_space_stmt(); _impl_.node_.drop_table_space_stmt_ = CreateMaybeMessage< ::pg_query::DropTableSpaceStmt >(GetArenaForAllocation()); } return _impl_.node_.drop_table_space_stmt_; } inline ::pg_query::DropTableSpaceStmt* Node::mutable_drop_table_space_stmt() { ::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.AlterObjectDependsStmt alter_object_depends_stmt = 125 [json_name = "AlterObjectDependsStmt"]; inline bool Node::_internal_has_alter_object_depends_stmt() const { return node_case() == kAlterObjectDependsStmt; } inline bool Node::has_alter_object_depends_stmt() const { return _internal_has_alter_object_depends_stmt(); } inline void Node::set_has_alter_object_depends_stmt() { _impl_._oneof_case_[0] = kAlterObjectDependsStmt; } inline void Node::clear_alter_object_depends_stmt() { if (_internal_has_alter_object_depends_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_object_depends_stmt()) { clear_has_node(); ::pg_query::AlterObjectDependsStmt* temp = _impl_.node_.alter_object_depends_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_object_depends_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_object_depends_stmt) return _internal_alter_object_depends_stmt(); } inline ::pg_query::AlterObjectDependsStmt* Node::unsafe_arena_release_alter_object_depends_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_object_depends_stmt) if (_internal_has_alter_object_depends_stmt()) { clear_has_node(); ::pg_query::AlterObjectDependsStmt* temp = _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* alter_object_depends_stmt) { clear_node(); if (alter_object_depends_stmt) { set_has_alter_object_depends_stmt(); _impl_.node_.alter_object_depends_stmt_ = alter_object_depends_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_object_depends_stmt) } inline ::pg_query::AlterObjectDependsStmt* Node::_internal_mutable_alter_object_depends_stmt() { if (!_internal_has_alter_object_depends_stmt()) { clear_node(); set_has_alter_object_depends_stmt(); _impl_.node_.alter_object_depends_stmt_ = CreateMaybeMessage< ::pg_query::AlterObjectDependsStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_object_depends_stmt_; } inline ::pg_query::AlterObjectDependsStmt* Node::mutable_alter_object_depends_stmt() { ::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 = 126 [json_name = "AlterObjectSchemaStmt"]; inline bool Node::_internal_has_alter_object_schema_stmt() const { return node_case() == kAlterObjectSchemaStmt; } inline bool Node::has_alter_object_schema_stmt() const { return _internal_has_alter_object_schema_stmt(); } inline void Node::set_has_alter_object_schema_stmt() { _impl_._oneof_case_[0] = kAlterObjectSchemaStmt; } inline void Node::clear_alter_object_schema_stmt() { if (_internal_has_alter_object_schema_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_object_schema_stmt()) { clear_has_node(); ::pg_query::AlterObjectSchemaStmt* temp = _impl_.node_.alter_object_schema_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_object_schema_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_object_schema_stmt) return _internal_alter_object_schema_stmt(); } inline ::pg_query::AlterObjectSchemaStmt* Node::unsafe_arena_release_alter_object_schema_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_object_schema_stmt) if (_internal_has_alter_object_schema_stmt()) { clear_has_node(); ::pg_query::AlterObjectSchemaStmt* temp = _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* alter_object_schema_stmt) { clear_node(); if (alter_object_schema_stmt) { set_has_alter_object_schema_stmt(); _impl_.node_.alter_object_schema_stmt_ = alter_object_schema_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_object_schema_stmt) } inline ::pg_query::AlterObjectSchemaStmt* Node::_internal_mutable_alter_object_schema_stmt() { if (!_internal_has_alter_object_schema_stmt()) { clear_node(); set_has_alter_object_schema_stmt(); _impl_.node_.alter_object_schema_stmt_ = CreateMaybeMessage< ::pg_query::AlterObjectSchemaStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_object_schema_stmt_; } inline ::pg_query::AlterObjectSchemaStmt* Node::mutable_alter_object_schema_stmt() { ::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 = 127 [json_name = "AlterOwnerStmt"]; inline bool Node::_internal_has_alter_owner_stmt() const { return node_case() == kAlterOwnerStmt; } inline bool Node::has_alter_owner_stmt() const { return _internal_has_alter_owner_stmt(); } inline void Node::set_has_alter_owner_stmt() { _impl_._oneof_case_[0] = kAlterOwnerStmt; } inline void Node::clear_alter_owner_stmt() { if (_internal_has_alter_owner_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_owner_stmt()) { clear_has_node(); ::pg_query::AlterOwnerStmt* temp = _impl_.node_.alter_owner_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_owner_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_owner_stmt) return _internal_alter_owner_stmt(); } inline ::pg_query::AlterOwnerStmt* Node::unsafe_arena_release_alter_owner_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_owner_stmt) if (_internal_has_alter_owner_stmt()) { clear_has_node(); ::pg_query::AlterOwnerStmt* temp = _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* alter_owner_stmt) { clear_node(); if (alter_owner_stmt) { set_has_alter_owner_stmt(); _impl_.node_.alter_owner_stmt_ = alter_owner_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_owner_stmt) } inline ::pg_query::AlterOwnerStmt* Node::_internal_mutable_alter_owner_stmt() { if (!_internal_has_alter_owner_stmt()) { clear_node(); set_has_alter_owner_stmt(); _impl_.node_.alter_owner_stmt_ = CreateMaybeMessage< ::pg_query::AlterOwnerStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_owner_stmt_; } inline ::pg_query::AlterOwnerStmt* Node::mutable_alter_owner_stmt() { ::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 = 128 [json_name = "AlterOperatorStmt"]; inline bool Node::_internal_has_alter_operator_stmt() const { return node_case() == kAlterOperatorStmt; } inline bool Node::has_alter_operator_stmt() const { return _internal_has_alter_operator_stmt(); } inline void Node::set_has_alter_operator_stmt() { _impl_._oneof_case_[0] = kAlterOperatorStmt; } inline void Node::clear_alter_operator_stmt() { if (_internal_has_alter_operator_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_operator_stmt()) { clear_has_node(); ::pg_query::AlterOperatorStmt* temp = _impl_.node_.alter_operator_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_operator_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_operator_stmt) return _internal_alter_operator_stmt(); } inline ::pg_query::AlterOperatorStmt* Node::unsafe_arena_release_alter_operator_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_operator_stmt) if (_internal_has_alter_operator_stmt()) { clear_has_node(); ::pg_query::AlterOperatorStmt* temp = _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* alter_operator_stmt) { clear_node(); if (alter_operator_stmt) { set_has_alter_operator_stmt(); _impl_.node_.alter_operator_stmt_ = alter_operator_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_operator_stmt) } inline ::pg_query::AlterOperatorStmt* Node::_internal_mutable_alter_operator_stmt() { if (!_internal_has_alter_operator_stmt()) { clear_node(); set_has_alter_operator_stmt(); _impl_.node_.alter_operator_stmt_ = CreateMaybeMessage< ::pg_query::AlterOperatorStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_operator_stmt_; } inline ::pg_query::AlterOperatorStmt* Node::mutable_alter_operator_stmt() { ::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 = 129 [json_name = "AlterTypeStmt"]; inline bool Node::_internal_has_alter_type_stmt() const { return node_case() == kAlterTypeStmt; } inline bool Node::has_alter_type_stmt() const { return _internal_has_alter_type_stmt(); } inline void Node::set_has_alter_type_stmt() { _impl_._oneof_case_[0] = kAlterTypeStmt; } inline void Node::clear_alter_type_stmt() { if (_internal_has_alter_type_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_type_stmt()) { clear_has_node(); ::pg_query::AlterTypeStmt* temp = _impl_.node_.alter_type_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_type_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_type_stmt) return _internal_alter_type_stmt(); } inline ::pg_query::AlterTypeStmt* Node::unsafe_arena_release_alter_type_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_type_stmt) if (_internal_has_alter_type_stmt()) { clear_has_node(); ::pg_query::AlterTypeStmt* temp = _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* alter_type_stmt) { clear_node(); if (alter_type_stmt) { set_has_alter_type_stmt(); _impl_.node_.alter_type_stmt_ = alter_type_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_type_stmt) } inline ::pg_query::AlterTypeStmt* Node::_internal_mutable_alter_type_stmt() { if (!_internal_has_alter_type_stmt()) { clear_node(); set_has_alter_type_stmt(); _impl_.node_.alter_type_stmt_ = CreateMaybeMessage< ::pg_query::AlterTypeStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_type_stmt_; } inline ::pg_query::AlterTypeStmt* Node::mutable_alter_type_stmt() { ::pg_query::AlterTypeStmt* _msg = _internal_mutable_alter_type_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_type_stmt) return _msg; } // .pg_query.DropOwnedStmt drop_owned_stmt = 130 [json_name = "DropOwnedStmt"]; inline bool Node::_internal_has_drop_owned_stmt() const { return node_case() == kDropOwnedStmt; } inline bool Node::has_drop_owned_stmt() const { return _internal_has_drop_owned_stmt(); } inline void Node::set_has_drop_owned_stmt() { _impl_._oneof_case_[0] = kDropOwnedStmt; } inline void Node::clear_drop_owned_stmt() { if (_internal_has_drop_owned_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_drop_owned_stmt()) { clear_has_node(); ::pg_query::DropOwnedStmt* temp = _impl_.node_.drop_owned_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_drop_owned_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.drop_owned_stmt) return _internal_drop_owned_stmt(); } inline ::pg_query::DropOwnedStmt* Node::unsafe_arena_release_drop_owned_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_owned_stmt) if (_internal_has_drop_owned_stmt()) { clear_has_node(); ::pg_query::DropOwnedStmt* temp = _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* drop_owned_stmt) { clear_node(); if (drop_owned_stmt) { set_has_drop_owned_stmt(); _impl_.node_.drop_owned_stmt_ = drop_owned_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_owned_stmt) } inline ::pg_query::DropOwnedStmt* Node::_internal_mutable_drop_owned_stmt() { if (!_internal_has_drop_owned_stmt()) { clear_node(); set_has_drop_owned_stmt(); _impl_.node_.drop_owned_stmt_ = CreateMaybeMessage< ::pg_query::DropOwnedStmt >(GetArenaForAllocation()); } return _impl_.node_.drop_owned_stmt_; } inline ::pg_query::DropOwnedStmt* Node::mutable_drop_owned_stmt() { ::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 = 131 [json_name = "ReassignOwnedStmt"]; inline bool Node::_internal_has_reassign_owned_stmt() const { return node_case() == kReassignOwnedStmt; } inline bool Node::has_reassign_owned_stmt() const { return _internal_has_reassign_owned_stmt(); } inline void Node::set_has_reassign_owned_stmt() { _impl_._oneof_case_[0] = kReassignOwnedStmt; } inline void Node::clear_reassign_owned_stmt() { if (_internal_has_reassign_owned_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_reassign_owned_stmt()) { clear_has_node(); ::pg_query::ReassignOwnedStmt* temp = _impl_.node_.reassign_owned_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_reassign_owned_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.reassign_owned_stmt) return _internal_reassign_owned_stmt(); } inline ::pg_query::ReassignOwnedStmt* Node::unsafe_arena_release_reassign_owned_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.reassign_owned_stmt) if (_internal_has_reassign_owned_stmt()) { clear_has_node(); ::pg_query::ReassignOwnedStmt* temp = _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* reassign_owned_stmt) { clear_node(); if (reassign_owned_stmt) { set_has_reassign_owned_stmt(); _impl_.node_.reassign_owned_stmt_ = reassign_owned_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.reassign_owned_stmt) } inline ::pg_query::ReassignOwnedStmt* Node::_internal_mutable_reassign_owned_stmt() { if (!_internal_has_reassign_owned_stmt()) { clear_node(); set_has_reassign_owned_stmt(); _impl_.node_.reassign_owned_stmt_ = CreateMaybeMessage< ::pg_query::ReassignOwnedStmt >(GetArenaForAllocation()); } return _impl_.node_.reassign_owned_stmt_; } inline ::pg_query::ReassignOwnedStmt* Node::mutable_reassign_owned_stmt() { ::pg_query::ReassignOwnedStmt* _msg = _internal_mutable_reassign_owned_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.reassign_owned_stmt) return _msg; } // .pg_query.CompositeTypeStmt composite_type_stmt = 132 [json_name = "CompositeTypeStmt"]; inline bool Node::_internal_has_composite_type_stmt() const { return node_case() == kCompositeTypeStmt; } inline bool Node::has_composite_type_stmt() const { return _internal_has_composite_type_stmt(); } inline void Node::set_has_composite_type_stmt() { _impl_._oneof_case_[0] = kCompositeTypeStmt; } inline void Node::clear_composite_type_stmt() { if (_internal_has_composite_type_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_composite_type_stmt()) { clear_has_node(); ::pg_query::CompositeTypeStmt* temp = _impl_.node_.composite_type_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_composite_type_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.composite_type_stmt) return _internal_composite_type_stmt(); } inline ::pg_query::CompositeTypeStmt* Node::unsafe_arena_release_composite_type_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.composite_type_stmt) if (_internal_has_composite_type_stmt()) { clear_has_node(); ::pg_query::CompositeTypeStmt* temp = _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* composite_type_stmt) { clear_node(); if (composite_type_stmt) { set_has_composite_type_stmt(); _impl_.node_.composite_type_stmt_ = composite_type_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.composite_type_stmt) } inline ::pg_query::CompositeTypeStmt* Node::_internal_mutable_composite_type_stmt() { if (!_internal_has_composite_type_stmt()) { clear_node(); set_has_composite_type_stmt(); _impl_.node_.composite_type_stmt_ = CreateMaybeMessage< ::pg_query::CompositeTypeStmt >(GetArenaForAllocation()); } return _impl_.node_.composite_type_stmt_; } inline ::pg_query::CompositeTypeStmt* Node::mutable_composite_type_stmt() { ::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 = 133 [json_name = "CreateEnumStmt"]; inline bool Node::_internal_has_create_enum_stmt() const { return node_case() == kCreateEnumStmt; } inline bool Node::has_create_enum_stmt() const { return _internal_has_create_enum_stmt(); } inline void Node::set_has_create_enum_stmt() { _impl_._oneof_case_[0] = kCreateEnumStmt; } inline void Node::clear_create_enum_stmt() { if (_internal_has_create_enum_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_enum_stmt()) { clear_has_node(); ::pg_query::CreateEnumStmt* temp = _impl_.node_.create_enum_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_enum_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_enum_stmt) return _internal_create_enum_stmt(); } inline ::pg_query::CreateEnumStmt* Node::unsafe_arena_release_create_enum_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_enum_stmt) if (_internal_has_create_enum_stmt()) { clear_has_node(); ::pg_query::CreateEnumStmt* temp = _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* create_enum_stmt) { clear_node(); if (create_enum_stmt) { set_has_create_enum_stmt(); _impl_.node_.create_enum_stmt_ = create_enum_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_enum_stmt) } inline ::pg_query::CreateEnumStmt* Node::_internal_mutable_create_enum_stmt() { if (!_internal_has_create_enum_stmt()) { clear_node(); set_has_create_enum_stmt(); _impl_.node_.create_enum_stmt_ = CreateMaybeMessage< ::pg_query::CreateEnumStmt >(GetArenaForAllocation()); } return _impl_.node_.create_enum_stmt_; } inline ::pg_query::CreateEnumStmt* Node::mutable_create_enum_stmt() { ::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 = 134 [json_name = "CreateRangeStmt"]; inline bool Node::_internal_has_create_range_stmt() const { return node_case() == kCreateRangeStmt; } inline bool Node::has_create_range_stmt() const { return _internal_has_create_range_stmt(); } inline void Node::set_has_create_range_stmt() { _impl_._oneof_case_[0] = kCreateRangeStmt; } inline void Node::clear_create_range_stmt() { if (_internal_has_create_range_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_range_stmt()) { clear_has_node(); ::pg_query::CreateRangeStmt* temp = _impl_.node_.create_range_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_range_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_range_stmt) return _internal_create_range_stmt(); } inline ::pg_query::CreateRangeStmt* Node::unsafe_arena_release_create_range_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_range_stmt) if (_internal_has_create_range_stmt()) { clear_has_node(); ::pg_query::CreateRangeStmt* temp = _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* create_range_stmt) { clear_node(); if (create_range_stmt) { set_has_create_range_stmt(); _impl_.node_.create_range_stmt_ = create_range_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_range_stmt) } inline ::pg_query::CreateRangeStmt* Node::_internal_mutable_create_range_stmt() { if (!_internal_has_create_range_stmt()) { clear_node(); set_has_create_range_stmt(); _impl_.node_.create_range_stmt_ = CreateMaybeMessage< ::pg_query::CreateRangeStmt >(GetArenaForAllocation()); } return _impl_.node_.create_range_stmt_; } inline ::pg_query::CreateRangeStmt* Node::mutable_create_range_stmt() { ::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 = 135 [json_name = "AlterEnumStmt"]; inline bool Node::_internal_has_alter_enum_stmt() const { return node_case() == kAlterEnumStmt; } inline bool Node::has_alter_enum_stmt() const { return _internal_has_alter_enum_stmt(); } inline void Node::set_has_alter_enum_stmt() { _impl_._oneof_case_[0] = kAlterEnumStmt; } inline void Node::clear_alter_enum_stmt() { if (_internal_has_alter_enum_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_enum_stmt()) { clear_has_node(); ::pg_query::AlterEnumStmt* temp = _impl_.node_.alter_enum_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_enum_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_enum_stmt) return _internal_alter_enum_stmt(); } inline ::pg_query::AlterEnumStmt* Node::unsafe_arena_release_alter_enum_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_enum_stmt) if (_internal_has_alter_enum_stmt()) { clear_has_node(); ::pg_query::AlterEnumStmt* temp = _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* alter_enum_stmt) { clear_node(); if (alter_enum_stmt) { set_has_alter_enum_stmt(); _impl_.node_.alter_enum_stmt_ = alter_enum_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_enum_stmt) } inline ::pg_query::AlterEnumStmt* Node::_internal_mutable_alter_enum_stmt() { if (!_internal_has_alter_enum_stmt()) { clear_node(); set_has_alter_enum_stmt(); _impl_.node_.alter_enum_stmt_ = CreateMaybeMessage< ::pg_query::AlterEnumStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_enum_stmt_; } inline ::pg_query::AlterEnumStmt* Node::mutable_alter_enum_stmt() { ::pg_query::AlterEnumStmt* _msg = _internal_mutable_alter_enum_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_enum_stmt) return _msg; } // .pg_query.AlterTSDictionaryStmt alter_tsdictionary_stmt = 136 [json_name = "AlterTSDictionaryStmt"]; inline bool Node::_internal_has_alter_tsdictionary_stmt() const { return node_case() == kAlterTsdictionaryStmt; } inline bool Node::has_alter_tsdictionary_stmt() const { return _internal_has_alter_tsdictionary_stmt(); } inline void Node::set_has_alter_tsdictionary_stmt() { _impl_._oneof_case_[0] = kAlterTsdictionaryStmt; } inline void Node::clear_alter_tsdictionary_stmt() { if (_internal_has_alter_tsdictionary_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_tsdictionary_stmt()) { clear_has_node(); ::pg_query::AlterTSDictionaryStmt* temp = _impl_.node_.alter_tsdictionary_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_tsdictionary_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_tsdictionary_stmt) return _internal_alter_tsdictionary_stmt(); } inline ::pg_query::AlterTSDictionaryStmt* Node::unsafe_arena_release_alter_tsdictionary_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_tsdictionary_stmt) if (_internal_has_alter_tsdictionary_stmt()) { clear_has_node(); ::pg_query::AlterTSDictionaryStmt* temp = _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* alter_tsdictionary_stmt) { clear_node(); if (alter_tsdictionary_stmt) { set_has_alter_tsdictionary_stmt(); _impl_.node_.alter_tsdictionary_stmt_ = alter_tsdictionary_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_tsdictionary_stmt) } inline ::pg_query::AlterTSDictionaryStmt* Node::_internal_mutable_alter_tsdictionary_stmt() { if (!_internal_has_alter_tsdictionary_stmt()) { clear_node(); set_has_alter_tsdictionary_stmt(); _impl_.node_.alter_tsdictionary_stmt_ = CreateMaybeMessage< ::pg_query::AlterTSDictionaryStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_tsdictionary_stmt_; } inline ::pg_query::AlterTSDictionaryStmt* Node::mutable_alter_tsdictionary_stmt() { ::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 = 137 [json_name = "AlterTSConfigurationStmt"]; inline bool Node::_internal_has_alter_tsconfiguration_stmt() const { return node_case() == kAlterTsconfigurationStmt; } inline bool Node::has_alter_tsconfiguration_stmt() const { return _internal_has_alter_tsconfiguration_stmt(); } inline void Node::set_has_alter_tsconfiguration_stmt() { _impl_._oneof_case_[0] = kAlterTsconfigurationStmt; } inline void Node::clear_alter_tsconfiguration_stmt() { if (_internal_has_alter_tsconfiguration_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_tsconfiguration_stmt()) { clear_has_node(); ::pg_query::AlterTSConfigurationStmt* temp = _impl_.node_.alter_tsconfiguration_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_tsconfiguration_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_tsconfiguration_stmt) return _internal_alter_tsconfiguration_stmt(); } inline ::pg_query::AlterTSConfigurationStmt* Node::unsafe_arena_release_alter_tsconfiguration_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_tsconfiguration_stmt) if (_internal_has_alter_tsconfiguration_stmt()) { clear_has_node(); ::pg_query::AlterTSConfigurationStmt* temp = _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* alter_tsconfiguration_stmt) { clear_node(); if (alter_tsconfiguration_stmt) { set_has_alter_tsconfiguration_stmt(); _impl_.node_.alter_tsconfiguration_stmt_ = alter_tsconfiguration_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_tsconfiguration_stmt) } inline ::pg_query::AlterTSConfigurationStmt* Node::_internal_mutable_alter_tsconfiguration_stmt() { if (!_internal_has_alter_tsconfiguration_stmt()) { clear_node(); set_has_alter_tsconfiguration_stmt(); _impl_.node_.alter_tsconfiguration_stmt_ = CreateMaybeMessage< ::pg_query::AlterTSConfigurationStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_tsconfiguration_stmt_; } inline ::pg_query::AlterTSConfigurationStmt* Node::mutable_alter_tsconfiguration_stmt() { ::pg_query::AlterTSConfigurationStmt* _msg = _internal_mutable_alter_tsconfiguration_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_tsconfiguration_stmt) return _msg; } // .pg_query.CreateFdwStmt create_fdw_stmt = 138 [json_name = "CreateFdwStmt"]; inline bool Node::_internal_has_create_fdw_stmt() const { return node_case() == kCreateFdwStmt; } inline bool Node::has_create_fdw_stmt() const { return _internal_has_create_fdw_stmt(); } inline void Node::set_has_create_fdw_stmt() { _impl_._oneof_case_[0] = kCreateFdwStmt; } inline void Node::clear_create_fdw_stmt() { if (_internal_has_create_fdw_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_fdw_stmt()) { clear_has_node(); ::pg_query::CreateFdwStmt* temp = _impl_.node_.create_fdw_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_fdw_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_fdw_stmt) return _internal_create_fdw_stmt(); } inline ::pg_query::CreateFdwStmt* Node::unsafe_arena_release_create_fdw_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_fdw_stmt) if (_internal_has_create_fdw_stmt()) { clear_has_node(); ::pg_query::CreateFdwStmt* temp = _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* create_fdw_stmt) { clear_node(); if (create_fdw_stmt) { set_has_create_fdw_stmt(); _impl_.node_.create_fdw_stmt_ = create_fdw_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_fdw_stmt) } inline ::pg_query::CreateFdwStmt* Node::_internal_mutable_create_fdw_stmt() { if (!_internal_has_create_fdw_stmt()) { clear_node(); set_has_create_fdw_stmt(); _impl_.node_.create_fdw_stmt_ = CreateMaybeMessage< ::pg_query::CreateFdwStmt >(GetArenaForAllocation()); } return _impl_.node_.create_fdw_stmt_; } inline ::pg_query::CreateFdwStmt* Node::mutable_create_fdw_stmt() { ::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 = 139 [json_name = "AlterFdwStmt"]; inline bool Node::_internal_has_alter_fdw_stmt() const { return node_case() == kAlterFdwStmt; } inline bool Node::has_alter_fdw_stmt() const { return _internal_has_alter_fdw_stmt(); } inline void Node::set_has_alter_fdw_stmt() { _impl_._oneof_case_[0] = kAlterFdwStmt; } inline void Node::clear_alter_fdw_stmt() { if (_internal_has_alter_fdw_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_fdw_stmt()) { clear_has_node(); ::pg_query::AlterFdwStmt* temp = _impl_.node_.alter_fdw_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_fdw_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_fdw_stmt) return _internal_alter_fdw_stmt(); } inline ::pg_query::AlterFdwStmt* Node::unsafe_arena_release_alter_fdw_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_fdw_stmt) if (_internal_has_alter_fdw_stmt()) { clear_has_node(); ::pg_query::AlterFdwStmt* temp = _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* alter_fdw_stmt) { clear_node(); if (alter_fdw_stmt) { set_has_alter_fdw_stmt(); _impl_.node_.alter_fdw_stmt_ = alter_fdw_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_fdw_stmt) } inline ::pg_query::AlterFdwStmt* Node::_internal_mutable_alter_fdw_stmt() { if (!_internal_has_alter_fdw_stmt()) { clear_node(); set_has_alter_fdw_stmt(); _impl_.node_.alter_fdw_stmt_ = CreateMaybeMessage< ::pg_query::AlterFdwStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_fdw_stmt_; } inline ::pg_query::AlterFdwStmt* Node::mutable_alter_fdw_stmt() { ::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 = 140 [json_name = "CreateForeignServerStmt"]; inline bool Node::_internal_has_create_foreign_server_stmt() const { return node_case() == kCreateForeignServerStmt; } inline bool Node::has_create_foreign_server_stmt() const { return _internal_has_create_foreign_server_stmt(); } inline void Node::set_has_create_foreign_server_stmt() { _impl_._oneof_case_[0] = kCreateForeignServerStmt; } inline void Node::clear_create_foreign_server_stmt() { if (_internal_has_create_foreign_server_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_foreign_server_stmt()) { clear_has_node(); ::pg_query::CreateForeignServerStmt* temp = _impl_.node_.create_foreign_server_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_foreign_server_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_foreign_server_stmt) return _internal_create_foreign_server_stmt(); } inline ::pg_query::CreateForeignServerStmt* Node::unsafe_arena_release_create_foreign_server_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_foreign_server_stmt) if (_internal_has_create_foreign_server_stmt()) { clear_has_node(); ::pg_query::CreateForeignServerStmt* temp = _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* create_foreign_server_stmt) { clear_node(); if (create_foreign_server_stmt) { set_has_create_foreign_server_stmt(); _impl_.node_.create_foreign_server_stmt_ = create_foreign_server_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_foreign_server_stmt) } inline ::pg_query::CreateForeignServerStmt* Node::_internal_mutable_create_foreign_server_stmt() { if (!_internal_has_create_foreign_server_stmt()) { clear_node(); set_has_create_foreign_server_stmt(); _impl_.node_.create_foreign_server_stmt_ = CreateMaybeMessage< ::pg_query::CreateForeignServerStmt >(GetArenaForAllocation()); } return _impl_.node_.create_foreign_server_stmt_; } inline ::pg_query::CreateForeignServerStmt* Node::mutable_create_foreign_server_stmt() { ::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 = 141 [json_name = "AlterForeignServerStmt"]; inline bool Node::_internal_has_alter_foreign_server_stmt() const { return node_case() == kAlterForeignServerStmt; } inline bool Node::has_alter_foreign_server_stmt() const { return _internal_has_alter_foreign_server_stmt(); } inline void Node::set_has_alter_foreign_server_stmt() { _impl_._oneof_case_[0] = kAlterForeignServerStmt; } inline void Node::clear_alter_foreign_server_stmt() { if (_internal_has_alter_foreign_server_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_foreign_server_stmt()) { clear_has_node(); ::pg_query::AlterForeignServerStmt* temp = _impl_.node_.alter_foreign_server_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_foreign_server_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_foreign_server_stmt) return _internal_alter_foreign_server_stmt(); } inline ::pg_query::AlterForeignServerStmt* Node::unsafe_arena_release_alter_foreign_server_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_foreign_server_stmt) if (_internal_has_alter_foreign_server_stmt()) { clear_has_node(); ::pg_query::AlterForeignServerStmt* temp = _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* alter_foreign_server_stmt) { clear_node(); if (alter_foreign_server_stmt) { set_has_alter_foreign_server_stmt(); _impl_.node_.alter_foreign_server_stmt_ = alter_foreign_server_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_foreign_server_stmt) } inline ::pg_query::AlterForeignServerStmt* Node::_internal_mutable_alter_foreign_server_stmt() { if (!_internal_has_alter_foreign_server_stmt()) { clear_node(); set_has_alter_foreign_server_stmt(); _impl_.node_.alter_foreign_server_stmt_ = CreateMaybeMessage< ::pg_query::AlterForeignServerStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_foreign_server_stmt_; } inline ::pg_query::AlterForeignServerStmt* Node::mutable_alter_foreign_server_stmt() { ::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.CreateUserMappingStmt create_user_mapping_stmt = 142 [json_name = "CreateUserMappingStmt"]; inline bool Node::_internal_has_create_user_mapping_stmt() const { return node_case() == kCreateUserMappingStmt; } inline bool Node::has_create_user_mapping_stmt() const { return _internal_has_create_user_mapping_stmt(); } inline void Node::set_has_create_user_mapping_stmt() { _impl_._oneof_case_[0] = kCreateUserMappingStmt; } inline void Node::clear_create_user_mapping_stmt() { if (_internal_has_create_user_mapping_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_user_mapping_stmt()) { clear_has_node(); ::pg_query::CreateUserMappingStmt* temp = _impl_.node_.create_user_mapping_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_user_mapping_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_user_mapping_stmt) return _internal_create_user_mapping_stmt(); } inline ::pg_query::CreateUserMappingStmt* Node::unsafe_arena_release_create_user_mapping_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_user_mapping_stmt) if (_internal_has_create_user_mapping_stmt()) { clear_has_node(); ::pg_query::CreateUserMappingStmt* temp = _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* create_user_mapping_stmt) { clear_node(); if (create_user_mapping_stmt) { set_has_create_user_mapping_stmt(); _impl_.node_.create_user_mapping_stmt_ = create_user_mapping_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_user_mapping_stmt) } inline ::pg_query::CreateUserMappingStmt* Node::_internal_mutable_create_user_mapping_stmt() { if (!_internal_has_create_user_mapping_stmt()) { clear_node(); set_has_create_user_mapping_stmt(); _impl_.node_.create_user_mapping_stmt_ = CreateMaybeMessage< ::pg_query::CreateUserMappingStmt >(GetArenaForAllocation()); } return _impl_.node_.create_user_mapping_stmt_; } inline ::pg_query::CreateUserMappingStmt* Node::mutable_create_user_mapping_stmt() { ::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 = 143 [json_name = "AlterUserMappingStmt"]; inline bool Node::_internal_has_alter_user_mapping_stmt() const { return node_case() == kAlterUserMappingStmt; } inline bool Node::has_alter_user_mapping_stmt() const { return _internal_has_alter_user_mapping_stmt(); } inline void Node::set_has_alter_user_mapping_stmt() { _impl_._oneof_case_[0] = kAlterUserMappingStmt; } inline void Node::clear_alter_user_mapping_stmt() { if (_internal_has_alter_user_mapping_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_user_mapping_stmt()) { clear_has_node(); ::pg_query::AlterUserMappingStmt* temp = _impl_.node_.alter_user_mapping_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_user_mapping_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_user_mapping_stmt) return _internal_alter_user_mapping_stmt(); } inline ::pg_query::AlterUserMappingStmt* Node::unsafe_arena_release_alter_user_mapping_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_user_mapping_stmt) if (_internal_has_alter_user_mapping_stmt()) { clear_has_node(); ::pg_query::AlterUserMappingStmt* temp = _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* alter_user_mapping_stmt) { clear_node(); if (alter_user_mapping_stmt) { set_has_alter_user_mapping_stmt(); _impl_.node_.alter_user_mapping_stmt_ = alter_user_mapping_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_user_mapping_stmt) } inline ::pg_query::AlterUserMappingStmt* Node::_internal_mutable_alter_user_mapping_stmt() { if (!_internal_has_alter_user_mapping_stmt()) { clear_node(); set_has_alter_user_mapping_stmt(); _impl_.node_.alter_user_mapping_stmt_ = CreateMaybeMessage< ::pg_query::AlterUserMappingStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_user_mapping_stmt_; } inline ::pg_query::AlterUserMappingStmt* Node::mutable_alter_user_mapping_stmt() { ::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 = 144 [json_name = "DropUserMappingStmt"]; inline bool Node::_internal_has_drop_user_mapping_stmt() const { return node_case() == kDropUserMappingStmt; } inline bool Node::has_drop_user_mapping_stmt() const { return _internal_has_drop_user_mapping_stmt(); } inline void Node::set_has_drop_user_mapping_stmt() { _impl_._oneof_case_[0] = kDropUserMappingStmt; } inline void Node::clear_drop_user_mapping_stmt() { if (_internal_has_drop_user_mapping_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_drop_user_mapping_stmt()) { clear_has_node(); ::pg_query::DropUserMappingStmt* temp = _impl_.node_.drop_user_mapping_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_drop_user_mapping_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.drop_user_mapping_stmt) return _internal_drop_user_mapping_stmt(); } inline ::pg_query::DropUserMappingStmt* Node::unsafe_arena_release_drop_user_mapping_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_user_mapping_stmt) if (_internal_has_drop_user_mapping_stmt()) { clear_has_node(); ::pg_query::DropUserMappingStmt* temp = _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* drop_user_mapping_stmt) { clear_node(); if (drop_user_mapping_stmt) { set_has_drop_user_mapping_stmt(); _impl_.node_.drop_user_mapping_stmt_ = drop_user_mapping_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_user_mapping_stmt) } inline ::pg_query::DropUserMappingStmt* Node::_internal_mutable_drop_user_mapping_stmt() { if (!_internal_has_drop_user_mapping_stmt()) { clear_node(); set_has_drop_user_mapping_stmt(); _impl_.node_.drop_user_mapping_stmt_ = CreateMaybeMessage< ::pg_query::DropUserMappingStmt >(GetArenaForAllocation()); } return _impl_.node_.drop_user_mapping_stmt_; } inline ::pg_query::DropUserMappingStmt* Node::mutable_drop_user_mapping_stmt() { ::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.AlterTableSpaceOptionsStmt alter_table_space_options_stmt = 145 [json_name = "AlterTableSpaceOptionsStmt"]; inline bool Node::_internal_has_alter_table_space_options_stmt() const { return node_case() == kAlterTableSpaceOptionsStmt; } inline bool Node::has_alter_table_space_options_stmt() const { return _internal_has_alter_table_space_options_stmt(); } inline void Node::set_has_alter_table_space_options_stmt() { _impl_._oneof_case_[0] = kAlterTableSpaceOptionsStmt; } inline void Node::clear_alter_table_space_options_stmt() { if (_internal_has_alter_table_space_options_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_table_space_options_stmt()) { clear_has_node(); ::pg_query::AlterTableSpaceOptionsStmt* temp = _impl_.node_.alter_table_space_options_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_table_space_options_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_table_space_options_stmt) return _internal_alter_table_space_options_stmt(); } inline ::pg_query::AlterTableSpaceOptionsStmt* Node::unsafe_arena_release_alter_table_space_options_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_table_space_options_stmt) if (_internal_has_alter_table_space_options_stmt()) { clear_has_node(); ::pg_query::AlterTableSpaceOptionsStmt* temp = _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* alter_table_space_options_stmt) { clear_node(); if (alter_table_space_options_stmt) { set_has_alter_table_space_options_stmt(); _impl_.node_.alter_table_space_options_stmt_ = alter_table_space_options_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_table_space_options_stmt) } inline ::pg_query::AlterTableSpaceOptionsStmt* Node::_internal_mutable_alter_table_space_options_stmt() { if (!_internal_has_alter_table_space_options_stmt()) { clear_node(); set_has_alter_table_space_options_stmt(); _impl_.node_.alter_table_space_options_stmt_ = CreateMaybeMessage< ::pg_query::AlterTableSpaceOptionsStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_table_space_options_stmt_; } inline ::pg_query::AlterTableSpaceOptionsStmt* Node::mutable_alter_table_space_options_stmt() { ::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 = 146 [json_name = "AlterTableMoveAllStmt"]; inline bool Node::_internal_has_alter_table_move_all_stmt() const { return node_case() == kAlterTableMoveAllStmt; } inline bool Node::has_alter_table_move_all_stmt() const { return _internal_has_alter_table_move_all_stmt(); } inline void Node::set_has_alter_table_move_all_stmt() { _impl_._oneof_case_[0] = kAlterTableMoveAllStmt; } inline void Node::clear_alter_table_move_all_stmt() { if (_internal_has_alter_table_move_all_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_table_move_all_stmt()) { clear_has_node(); ::pg_query::AlterTableMoveAllStmt* temp = _impl_.node_.alter_table_move_all_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_table_move_all_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_table_move_all_stmt) return _internal_alter_table_move_all_stmt(); } inline ::pg_query::AlterTableMoveAllStmt* Node::unsafe_arena_release_alter_table_move_all_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_table_move_all_stmt) if (_internal_has_alter_table_move_all_stmt()) { clear_has_node(); ::pg_query::AlterTableMoveAllStmt* temp = _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* alter_table_move_all_stmt) { clear_node(); if (alter_table_move_all_stmt) { set_has_alter_table_move_all_stmt(); _impl_.node_.alter_table_move_all_stmt_ = alter_table_move_all_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_table_move_all_stmt) } inline ::pg_query::AlterTableMoveAllStmt* Node::_internal_mutable_alter_table_move_all_stmt() { if (!_internal_has_alter_table_move_all_stmt()) { clear_node(); set_has_alter_table_move_all_stmt(); _impl_.node_.alter_table_move_all_stmt_ = CreateMaybeMessage< ::pg_query::AlterTableMoveAllStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_table_move_all_stmt_; } inline ::pg_query::AlterTableMoveAllStmt* Node::mutable_alter_table_move_all_stmt() { ::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.SecLabelStmt sec_label_stmt = 147 [json_name = "SecLabelStmt"]; inline bool Node::_internal_has_sec_label_stmt() const { return node_case() == kSecLabelStmt; } inline bool Node::has_sec_label_stmt() const { return _internal_has_sec_label_stmt(); } inline void Node::set_has_sec_label_stmt() { _impl_._oneof_case_[0] = kSecLabelStmt; } inline void Node::clear_sec_label_stmt() { if (_internal_has_sec_label_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_sec_label_stmt()) { clear_has_node(); ::pg_query::SecLabelStmt* temp = _impl_.node_.sec_label_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_sec_label_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.sec_label_stmt) return _internal_sec_label_stmt(); } inline ::pg_query::SecLabelStmt* Node::unsafe_arena_release_sec_label_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sec_label_stmt) if (_internal_has_sec_label_stmt()) { clear_has_node(); ::pg_query::SecLabelStmt* temp = _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* sec_label_stmt) { clear_node(); if (sec_label_stmt) { set_has_sec_label_stmt(); _impl_.node_.sec_label_stmt_ = sec_label_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sec_label_stmt) } inline ::pg_query::SecLabelStmt* Node::_internal_mutable_sec_label_stmt() { if (!_internal_has_sec_label_stmt()) { clear_node(); set_has_sec_label_stmt(); _impl_.node_.sec_label_stmt_ = CreateMaybeMessage< ::pg_query::SecLabelStmt >(GetArenaForAllocation()); } return _impl_.node_.sec_label_stmt_; } inline ::pg_query::SecLabelStmt* Node::mutable_sec_label_stmt() { ::pg_query::SecLabelStmt* _msg = _internal_mutable_sec_label_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.sec_label_stmt) return _msg; } // .pg_query.CreateForeignTableStmt create_foreign_table_stmt = 148 [json_name = "CreateForeignTableStmt"]; inline bool Node::_internal_has_create_foreign_table_stmt() const { return node_case() == kCreateForeignTableStmt; } inline bool Node::has_create_foreign_table_stmt() const { return _internal_has_create_foreign_table_stmt(); } inline void Node::set_has_create_foreign_table_stmt() { _impl_._oneof_case_[0] = kCreateForeignTableStmt; } inline void Node::clear_create_foreign_table_stmt() { if (_internal_has_create_foreign_table_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_foreign_table_stmt()) { clear_has_node(); ::pg_query::CreateForeignTableStmt* temp = _impl_.node_.create_foreign_table_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_foreign_table_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_foreign_table_stmt) return _internal_create_foreign_table_stmt(); } inline ::pg_query::CreateForeignTableStmt* Node::unsafe_arena_release_create_foreign_table_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_foreign_table_stmt) if (_internal_has_create_foreign_table_stmt()) { clear_has_node(); ::pg_query::CreateForeignTableStmt* temp = _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* create_foreign_table_stmt) { clear_node(); if (create_foreign_table_stmt) { set_has_create_foreign_table_stmt(); _impl_.node_.create_foreign_table_stmt_ = create_foreign_table_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_foreign_table_stmt) } inline ::pg_query::CreateForeignTableStmt* Node::_internal_mutable_create_foreign_table_stmt() { if (!_internal_has_create_foreign_table_stmt()) { clear_node(); set_has_create_foreign_table_stmt(); _impl_.node_.create_foreign_table_stmt_ = CreateMaybeMessage< ::pg_query::CreateForeignTableStmt >(GetArenaForAllocation()); } return _impl_.node_.create_foreign_table_stmt_; } inline ::pg_query::CreateForeignTableStmt* Node::mutable_create_foreign_table_stmt() { ::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.ImportForeignSchemaStmt import_foreign_schema_stmt = 149 [json_name = "ImportForeignSchemaStmt"]; inline bool Node::_internal_has_import_foreign_schema_stmt() const { return node_case() == kImportForeignSchemaStmt; } inline bool Node::has_import_foreign_schema_stmt() const { return _internal_has_import_foreign_schema_stmt(); } inline void Node::set_has_import_foreign_schema_stmt() { _impl_._oneof_case_[0] = kImportForeignSchemaStmt; } inline void Node::clear_import_foreign_schema_stmt() { if (_internal_has_import_foreign_schema_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_import_foreign_schema_stmt()) { clear_has_node(); ::pg_query::ImportForeignSchemaStmt* temp = _impl_.node_.import_foreign_schema_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_import_foreign_schema_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.import_foreign_schema_stmt) return _internal_import_foreign_schema_stmt(); } inline ::pg_query::ImportForeignSchemaStmt* Node::unsafe_arena_release_import_foreign_schema_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.import_foreign_schema_stmt) if (_internal_has_import_foreign_schema_stmt()) { clear_has_node(); ::pg_query::ImportForeignSchemaStmt* temp = _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* import_foreign_schema_stmt) { clear_node(); if (import_foreign_schema_stmt) { set_has_import_foreign_schema_stmt(); _impl_.node_.import_foreign_schema_stmt_ = import_foreign_schema_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.import_foreign_schema_stmt) } inline ::pg_query::ImportForeignSchemaStmt* Node::_internal_mutable_import_foreign_schema_stmt() { if (!_internal_has_import_foreign_schema_stmt()) { clear_node(); set_has_import_foreign_schema_stmt(); _impl_.node_.import_foreign_schema_stmt_ = CreateMaybeMessage< ::pg_query::ImportForeignSchemaStmt >(GetArenaForAllocation()); } return _impl_.node_.import_foreign_schema_stmt_; } inline ::pg_query::ImportForeignSchemaStmt* Node::mutable_import_foreign_schema_stmt() { ::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.CreateExtensionStmt create_extension_stmt = 150 [json_name = "CreateExtensionStmt"]; inline bool Node::_internal_has_create_extension_stmt() const { return node_case() == kCreateExtensionStmt; } inline bool Node::has_create_extension_stmt() const { return _internal_has_create_extension_stmt(); } inline void Node::set_has_create_extension_stmt() { _impl_._oneof_case_[0] = kCreateExtensionStmt; } inline void Node::clear_create_extension_stmt() { if (_internal_has_create_extension_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_extension_stmt()) { clear_has_node(); ::pg_query::CreateExtensionStmt* temp = _impl_.node_.create_extension_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_extension_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_extension_stmt) return _internal_create_extension_stmt(); } inline ::pg_query::CreateExtensionStmt* Node::unsafe_arena_release_create_extension_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_extension_stmt) if (_internal_has_create_extension_stmt()) { clear_has_node(); ::pg_query::CreateExtensionStmt* temp = _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* create_extension_stmt) { clear_node(); if (create_extension_stmt) { set_has_create_extension_stmt(); _impl_.node_.create_extension_stmt_ = create_extension_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_extension_stmt) } inline ::pg_query::CreateExtensionStmt* Node::_internal_mutable_create_extension_stmt() { if (!_internal_has_create_extension_stmt()) { clear_node(); set_has_create_extension_stmt(); _impl_.node_.create_extension_stmt_ = CreateMaybeMessage< ::pg_query::CreateExtensionStmt >(GetArenaForAllocation()); } return _impl_.node_.create_extension_stmt_; } inline ::pg_query::CreateExtensionStmt* Node::mutable_create_extension_stmt() { ::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 = 151 [json_name = "AlterExtensionStmt"]; inline bool Node::_internal_has_alter_extension_stmt() const { return node_case() == kAlterExtensionStmt; } inline bool Node::has_alter_extension_stmt() const { return _internal_has_alter_extension_stmt(); } inline void Node::set_has_alter_extension_stmt() { _impl_._oneof_case_[0] = kAlterExtensionStmt; } inline void Node::clear_alter_extension_stmt() { if (_internal_has_alter_extension_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_extension_stmt()) { clear_has_node(); ::pg_query::AlterExtensionStmt* temp = _impl_.node_.alter_extension_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_extension_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_extension_stmt) return _internal_alter_extension_stmt(); } inline ::pg_query::AlterExtensionStmt* Node::unsafe_arena_release_alter_extension_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_extension_stmt) if (_internal_has_alter_extension_stmt()) { clear_has_node(); ::pg_query::AlterExtensionStmt* temp = _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* alter_extension_stmt) { clear_node(); if (alter_extension_stmt) { set_has_alter_extension_stmt(); _impl_.node_.alter_extension_stmt_ = alter_extension_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_extension_stmt) } inline ::pg_query::AlterExtensionStmt* Node::_internal_mutable_alter_extension_stmt() { if (!_internal_has_alter_extension_stmt()) { clear_node(); set_has_alter_extension_stmt(); _impl_.node_.alter_extension_stmt_ = CreateMaybeMessage< ::pg_query::AlterExtensionStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_extension_stmt_; } inline ::pg_query::AlterExtensionStmt* Node::mutable_alter_extension_stmt() { ::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 = 152 [json_name = "AlterExtensionContentsStmt"]; inline bool Node::_internal_has_alter_extension_contents_stmt() const { return node_case() == kAlterExtensionContentsStmt; } inline bool Node::has_alter_extension_contents_stmt() const { return _internal_has_alter_extension_contents_stmt(); } inline void Node::set_has_alter_extension_contents_stmt() { _impl_._oneof_case_[0] = kAlterExtensionContentsStmt; } inline void Node::clear_alter_extension_contents_stmt() { if (_internal_has_alter_extension_contents_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_extension_contents_stmt()) { clear_has_node(); ::pg_query::AlterExtensionContentsStmt* temp = _impl_.node_.alter_extension_contents_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_extension_contents_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_extension_contents_stmt) return _internal_alter_extension_contents_stmt(); } inline ::pg_query::AlterExtensionContentsStmt* Node::unsafe_arena_release_alter_extension_contents_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_extension_contents_stmt) if (_internal_has_alter_extension_contents_stmt()) { clear_has_node(); ::pg_query::AlterExtensionContentsStmt* temp = _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* alter_extension_contents_stmt) { clear_node(); if (alter_extension_contents_stmt) { set_has_alter_extension_contents_stmt(); _impl_.node_.alter_extension_contents_stmt_ = alter_extension_contents_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_extension_contents_stmt) } inline ::pg_query::AlterExtensionContentsStmt* Node::_internal_mutable_alter_extension_contents_stmt() { if (!_internal_has_alter_extension_contents_stmt()) { clear_node(); set_has_alter_extension_contents_stmt(); _impl_.node_.alter_extension_contents_stmt_ = CreateMaybeMessage< ::pg_query::AlterExtensionContentsStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_extension_contents_stmt_; } inline ::pg_query::AlterExtensionContentsStmt* Node::mutable_alter_extension_contents_stmt() { ::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.CreateEventTrigStmt create_event_trig_stmt = 153 [json_name = "CreateEventTrigStmt"]; inline bool Node::_internal_has_create_event_trig_stmt() const { return node_case() == kCreateEventTrigStmt; } inline bool Node::has_create_event_trig_stmt() const { return _internal_has_create_event_trig_stmt(); } inline void Node::set_has_create_event_trig_stmt() { _impl_._oneof_case_[0] = kCreateEventTrigStmt; } inline void Node::clear_create_event_trig_stmt() { if (_internal_has_create_event_trig_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_event_trig_stmt()) { clear_has_node(); ::pg_query::CreateEventTrigStmt* temp = _impl_.node_.create_event_trig_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_event_trig_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_event_trig_stmt) return _internal_create_event_trig_stmt(); } inline ::pg_query::CreateEventTrigStmt* Node::unsafe_arena_release_create_event_trig_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_event_trig_stmt) if (_internal_has_create_event_trig_stmt()) { clear_has_node(); ::pg_query::CreateEventTrigStmt* temp = _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* create_event_trig_stmt) { clear_node(); if (create_event_trig_stmt) { set_has_create_event_trig_stmt(); _impl_.node_.create_event_trig_stmt_ = create_event_trig_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_event_trig_stmt) } inline ::pg_query::CreateEventTrigStmt* Node::_internal_mutable_create_event_trig_stmt() { if (!_internal_has_create_event_trig_stmt()) { clear_node(); set_has_create_event_trig_stmt(); _impl_.node_.create_event_trig_stmt_ = CreateMaybeMessage< ::pg_query::CreateEventTrigStmt >(GetArenaForAllocation()); } return _impl_.node_.create_event_trig_stmt_; } inline ::pg_query::CreateEventTrigStmt* Node::mutable_create_event_trig_stmt() { ::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 = 154 [json_name = "AlterEventTrigStmt"]; inline bool Node::_internal_has_alter_event_trig_stmt() const { return node_case() == kAlterEventTrigStmt; } inline bool Node::has_alter_event_trig_stmt() const { return _internal_has_alter_event_trig_stmt(); } inline void Node::set_has_alter_event_trig_stmt() { _impl_._oneof_case_[0] = kAlterEventTrigStmt; } inline void Node::clear_alter_event_trig_stmt() { if (_internal_has_alter_event_trig_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_event_trig_stmt()) { clear_has_node(); ::pg_query::AlterEventTrigStmt* temp = _impl_.node_.alter_event_trig_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_event_trig_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_event_trig_stmt) return _internal_alter_event_trig_stmt(); } inline ::pg_query::AlterEventTrigStmt* Node::unsafe_arena_release_alter_event_trig_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_event_trig_stmt) if (_internal_has_alter_event_trig_stmt()) { clear_has_node(); ::pg_query::AlterEventTrigStmt* temp = _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* alter_event_trig_stmt) { clear_node(); if (alter_event_trig_stmt) { set_has_alter_event_trig_stmt(); _impl_.node_.alter_event_trig_stmt_ = alter_event_trig_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_event_trig_stmt) } inline ::pg_query::AlterEventTrigStmt* Node::_internal_mutable_alter_event_trig_stmt() { if (!_internal_has_alter_event_trig_stmt()) { clear_node(); set_has_alter_event_trig_stmt(); _impl_.node_.alter_event_trig_stmt_ = CreateMaybeMessage< ::pg_query::AlterEventTrigStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_event_trig_stmt_; } inline ::pg_query::AlterEventTrigStmt* Node::mutable_alter_event_trig_stmt() { ::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.RefreshMatViewStmt refresh_mat_view_stmt = 155 [json_name = "RefreshMatViewStmt"]; inline bool Node::_internal_has_refresh_mat_view_stmt() const { return node_case() == kRefreshMatViewStmt; } inline bool Node::has_refresh_mat_view_stmt() const { return _internal_has_refresh_mat_view_stmt(); } inline void Node::set_has_refresh_mat_view_stmt() { _impl_._oneof_case_[0] = kRefreshMatViewStmt; } inline void Node::clear_refresh_mat_view_stmt() { if (_internal_has_refresh_mat_view_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_refresh_mat_view_stmt()) { clear_has_node(); ::pg_query::RefreshMatViewStmt* temp = _impl_.node_.refresh_mat_view_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_refresh_mat_view_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.refresh_mat_view_stmt) return _internal_refresh_mat_view_stmt(); } inline ::pg_query::RefreshMatViewStmt* Node::unsafe_arena_release_refresh_mat_view_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.refresh_mat_view_stmt) if (_internal_has_refresh_mat_view_stmt()) { clear_has_node(); ::pg_query::RefreshMatViewStmt* temp = _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* refresh_mat_view_stmt) { clear_node(); if (refresh_mat_view_stmt) { set_has_refresh_mat_view_stmt(); _impl_.node_.refresh_mat_view_stmt_ = refresh_mat_view_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.refresh_mat_view_stmt) } inline ::pg_query::RefreshMatViewStmt* Node::_internal_mutable_refresh_mat_view_stmt() { if (!_internal_has_refresh_mat_view_stmt()) { clear_node(); set_has_refresh_mat_view_stmt(); _impl_.node_.refresh_mat_view_stmt_ = CreateMaybeMessage< ::pg_query::RefreshMatViewStmt >(GetArenaForAllocation()); } return _impl_.node_.refresh_mat_view_stmt_; } inline ::pg_query::RefreshMatViewStmt* Node::mutable_refresh_mat_view_stmt() { ::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.ReplicaIdentityStmt replica_identity_stmt = 156 [json_name = "ReplicaIdentityStmt"]; inline bool Node::_internal_has_replica_identity_stmt() const { return node_case() == kReplicaIdentityStmt; } inline bool Node::has_replica_identity_stmt() const { return _internal_has_replica_identity_stmt(); } inline void Node::set_has_replica_identity_stmt() { _impl_._oneof_case_[0] = kReplicaIdentityStmt; } inline void Node::clear_replica_identity_stmt() { if (_internal_has_replica_identity_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_replica_identity_stmt()) { clear_has_node(); ::pg_query::ReplicaIdentityStmt* temp = _impl_.node_.replica_identity_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_replica_identity_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.replica_identity_stmt) return _internal_replica_identity_stmt(); } inline ::pg_query::ReplicaIdentityStmt* Node::unsafe_arena_release_replica_identity_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.replica_identity_stmt) if (_internal_has_replica_identity_stmt()) { clear_has_node(); ::pg_query::ReplicaIdentityStmt* temp = _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* replica_identity_stmt) { clear_node(); if (replica_identity_stmt) { set_has_replica_identity_stmt(); _impl_.node_.replica_identity_stmt_ = replica_identity_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.replica_identity_stmt) } inline ::pg_query::ReplicaIdentityStmt* Node::_internal_mutable_replica_identity_stmt() { if (!_internal_has_replica_identity_stmt()) { clear_node(); set_has_replica_identity_stmt(); _impl_.node_.replica_identity_stmt_ = CreateMaybeMessage< ::pg_query::ReplicaIdentityStmt >(GetArenaForAllocation()); } return _impl_.node_.replica_identity_stmt_; } inline ::pg_query::ReplicaIdentityStmt* Node::mutable_replica_identity_stmt() { ::pg_query::ReplicaIdentityStmt* _msg = _internal_mutable_replica_identity_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.replica_identity_stmt) return _msg; } // .pg_query.AlterSystemStmt alter_system_stmt = 157 [json_name = "AlterSystemStmt"]; inline bool Node::_internal_has_alter_system_stmt() const { return node_case() == kAlterSystemStmt; } inline bool Node::has_alter_system_stmt() const { return _internal_has_alter_system_stmt(); } inline void Node::set_has_alter_system_stmt() { _impl_._oneof_case_[0] = kAlterSystemStmt; } inline void Node::clear_alter_system_stmt() { if (_internal_has_alter_system_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_system_stmt()) { clear_has_node(); ::pg_query::AlterSystemStmt* temp = _impl_.node_.alter_system_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_system_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_system_stmt) return _internal_alter_system_stmt(); } inline ::pg_query::AlterSystemStmt* Node::unsafe_arena_release_alter_system_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_system_stmt) if (_internal_has_alter_system_stmt()) { clear_has_node(); ::pg_query::AlterSystemStmt* temp = _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* alter_system_stmt) { clear_node(); if (alter_system_stmt) { set_has_alter_system_stmt(); _impl_.node_.alter_system_stmt_ = alter_system_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_system_stmt) } inline ::pg_query::AlterSystemStmt* Node::_internal_mutable_alter_system_stmt() { if (!_internal_has_alter_system_stmt()) { clear_node(); set_has_alter_system_stmt(); _impl_.node_.alter_system_stmt_ = CreateMaybeMessage< ::pg_query::AlterSystemStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_system_stmt_; } inline ::pg_query::AlterSystemStmt* Node::mutable_alter_system_stmt() { ::pg_query::AlterSystemStmt* _msg = _internal_mutable_alter_system_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_system_stmt) return _msg; } // .pg_query.CreatePolicyStmt create_policy_stmt = 158 [json_name = "CreatePolicyStmt"]; inline bool Node::_internal_has_create_policy_stmt() const { return node_case() == kCreatePolicyStmt; } inline bool Node::has_create_policy_stmt() const { return _internal_has_create_policy_stmt(); } inline void Node::set_has_create_policy_stmt() { _impl_._oneof_case_[0] = kCreatePolicyStmt; } inline void Node::clear_create_policy_stmt() { if (_internal_has_create_policy_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_policy_stmt()) { clear_has_node(); ::pg_query::CreatePolicyStmt* temp = _impl_.node_.create_policy_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_policy_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_policy_stmt) return _internal_create_policy_stmt(); } inline ::pg_query::CreatePolicyStmt* Node::unsafe_arena_release_create_policy_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_policy_stmt) if (_internal_has_create_policy_stmt()) { clear_has_node(); ::pg_query::CreatePolicyStmt* temp = _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* create_policy_stmt) { clear_node(); if (create_policy_stmt) { set_has_create_policy_stmt(); _impl_.node_.create_policy_stmt_ = create_policy_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_policy_stmt) } inline ::pg_query::CreatePolicyStmt* Node::_internal_mutable_create_policy_stmt() { if (!_internal_has_create_policy_stmt()) { clear_node(); set_has_create_policy_stmt(); _impl_.node_.create_policy_stmt_ = CreateMaybeMessage< ::pg_query::CreatePolicyStmt >(GetArenaForAllocation()); } return _impl_.node_.create_policy_stmt_; } inline ::pg_query::CreatePolicyStmt* Node::mutable_create_policy_stmt() { ::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 = 159 [json_name = "AlterPolicyStmt"]; inline bool Node::_internal_has_alter_policy_stmt() const { return node_case() == kAlterPolicyStmt; } inline bool Node::has_alter_policy_stmt() const { return _internal_has_alter_policy_stmt(); } inline void Node::set_has_alter_policy_stmt() { _impl_._oneof_case_[0] = kAlterPolicyStmt; } inline void Node::clear_alter_policy_stmt() { if (_internal_has_alter_policy_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_policy_stmt()) { clear_has_node(); ::pg_query::AlterPolicyStmt* temp = _impl_.node_.alter_policy_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_policy_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_policy_stmt) return _internal_alter_policy_stmt(); } inline ::pg_query::AlterPolicyStmt* Node::unsafe_arena_release_alter_policy_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_policy_stmt) if (_internal_has_alter_policy_stmt()) { clear_has_node(); ::pg_query::AlterPolicyStmt* temp = _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* alter_policy_stmt) { clear_node(); if (alter_policy_stmt) { set_has_alter_policy_stmt(); _impl_.node_.alter_policy_stmt_ = alter_policy_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_policy_stmt) } inline ::pg_query::AlterPolicyStmt* Node::_internal_mutable_alter_policy_stmt() { if (!_internal_has_alter_policy_stmt()) { clear_node(); set_has_alter_policy_stmt(); _impl_.node_.alter_policy_stmt_ = CreateMaybeMessage< ::pg_query::AlterPolicyStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_policy_stmt_; } inline ::pg_query::AlterPolicyStmt* Node::mutable_alter_policy_stmt() { ::pg_query::AlterPolicyStmt* _msg = _internal_mutable_alter_policy_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_policy_stmt) return _msg; } // .pg_query.CreateTransformStmt create_transform_stmt = 160 [json_name = "CreateTransformStmt"]; inline bool Node::_internal_has_create_transform_stmt() const { return node_case() == kCreateTransformStmt; } inline bool Node::has_create_transform_stmt() const { return _internal_has_create_transform_stmt(); } inline void Node::set_has_create_transform_stmt() { _impl_._oneof_case_[0] = kCreateTransformStmt; } inline void Node::clear_create_transform_stmt() { if (_internal_has_create_transform_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_transform_stmt()) { clear_has_node(); ::pg_query::CreateTransformStmt* temp = _impl_.node_.create_transform_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_transform_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_transform_stmt) return _internal_create_transform_stmt(); } inline ::pg_query::CreateTransformStmt* Node::unsafe_arena_release_create_transform_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_transform_stmt) if (_internal_has_create_transform_stmt()) { clear_has_node(); ::pg_query::CreateTransformStmt* temp = _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* create_transform_stmt) { clear_node(); if (create_transform_stmt) { set_has_create_transform_stmt(); _impl_.node_.create_transform_stmt_ = create_transform_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_transform_stmt) } inline ::pg_query::CreateTransformStmt* Node::_internal_mutable_create_transform_stmt() { if (!_internal_has_create_transform_stmt()) { clear_node(); set_has_create_transform_stmt(); _impl_.node_.create_transform_stmt_ = CreateMaybeMessage< ::pg_query::CreateTransformStmt >(GetArenaForAllocation()); } return _impl_.node_.create_transform_stmt_; } inline ::pg_query::CreateTransformStmt* Node::mutable_create_transform_stmt() { ::pg_query::CreateTransformStmt* _msg = _internal_mutable_create_transform_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_transform_stmt) return _msg; } // .pg_query.CreateAmStmt create_am_stmt = 161 [json_name = "CreateAmStmt"]; inline bool Node::_internal_has_create_am_stmt() const { return node_case() == kCreateAmStmt; } inline bool Node::has_create_am_stmt() const { return _internal_has_create_am_stmt(); } inline void Node::set_has_create_am_stmt() { _impl_._oneof_case_[0] = kCreateAmStmt; } inline void Node::clear_create_am_stmt() { if (_internal_has_create_am_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_am_stmt()) { clear_has_node(); ::pg_query::CreateAmStmt* temp = _impl_.node_.create_am_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_am_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_am_stmt) return _internal_create_am_stmt(); } inline ::pg_query::CreateAmStmt* Node::unsafe_arena_release_create_am_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_am_stmt) if (_internal_has_create_am_stmt()) { clear_has_node(); ::pg_query::CreateAmStmt* temp = _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* create_am_stmt) { clear_node(); if (create_am_stmt) { set_has_create_am_stmt(); _impl_.node_.create_am_stmt_ = create_am_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_am_stmt) } inline ::pg_query::CreateAmStmt* Node::_internal_mutable_create_am_stmt() { if (!_internal_has_create_am_stmt()) { clear_node(); set_has_create_am_stmt(); _impl_.node_.create_am_stmt_ = CreateMaybeMessage< ::pg_query::CreateAmStmt >(GetArenaForAllocation()); } return _impl_.node_.create_am_stmt_; } inline ::pg_query::CreateAmStmt* Node::mutable_create_am_stmt() { ::pg_query::CreateAmStmt* _msg = _internal_mutable_create_am_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_am_stmt) return _msg; } // .pg_query.CreatePublicationStmt create_publication_stmt = 162 [json_name = "CreatePublicationStmt"]; inline bool Node::_internal_has_create_publication_stmt() const { return node_case() == kCreatePublicationStmt; } inline bool Node::has_create_publication_stmt() const { return _internal_has_create_publication_stmt(); } inline void Node::set_has_create_publication_stmt() { _impl_._oneof_case_[0] = kCreatePublicationStmt; } inline void Node::clear_create_publication_stmt() { if (_internal_has_create_publication_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_publication_stmt()) { clear_has_node(); ::pg_query::CreatePublicationStmt* temp = _impl_.node_.create_publication_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_publication_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_publication_stmt) return _internal_create_publication_stmt(); } inline ::pg_query::CreatePublicationStmt* Node::unsafe_arena_release_create_publication_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_publication_stmt) if (_internal_has_create_publication_stmt()) { clear_has_node(); ::pg_query::CreatePublicationStmt* temp = _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* create_publication_stmt) { clear_node(); if (create_publication_stmt) { set_has_create_publication_stmt(); _impl_.node_.create_publication_stmt_ = create_publication_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_publication_stmt) } inline ::pg_query::CreatePublicationStmt* Node::_internal_mutable_create_publication_stmt() { if (!_internal_has_create_publication_stmt()) { clear_node(); set_has_create_publication_stmt(); _impl_.node_.create_publication_stmt_ = CreateMaybeMessage< ::pg_query::CreatePublicationStmt >(GetArenaForAllocation()); } return _impl_.node_.create_publication_stmt_; } inline ::pg_query::CreatePublicationStmt* Node::mutable_create_publication_stmt() { ::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 = 163 [json_name = "AlterPublicationStmt"]; inline bool Node::_internal_has_alter_publication_stmt() const { return node_case() == kAlterPublicationStmt; } inline bool Node::has_alter_publication_stmt() const { return _internal_has_alter_publication_stmt(); } inline void Node::set_has_alter_publication_stmt() { _impl_._oneof_case_[0] = kAlterPublicationStmt; } inline void Node::clear_alter_publication_stmt() { if (_internal_has_alter_publication_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_publication_stmt()) { clear_has_node(); ::pg_query::AlterPublicationStmt* temp = _impl_.node_.alter_publication_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_publication_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_publication_stmt) return _internal_alter_publication_stmt(); } inline ::pg_query::AlterPublicationStmt* Node::unsafe_arena_release_alter_publication_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_publication_stmt) if (_internal_has_alter_publication_stmt()) { clear_has_node(); ::pg_query::AlterPublicationStmt* temp = _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* alter_publication_stmt) { clear_node(); if (alter_publication_stmt) { set_has_alter_publication_stmt(); _impl_.node_.alter_publication_stmt_ = alter_publication_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_publication_stmt) } inline ::pg_query::AlterPublicationStmt* Node::_internal_mutable_alter_publication_stmt() { if (!_internal_has_alter_publication_stmt()) { clear_node(); set_has_alter_publication_stmt(); _impl_.node_.alter_publication_stmt_ = CreateMaybeMessage< ::pg_query::AlterPublicationStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_publication_stmt_; } inline ::pg_query::AlterPublicationStmt* Node::mutable_alter_publication_stmt() { ::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 = 164 [json_name = "CreateSubscriptionStmt"]; inline bool Node::_internal_has_create_subscription_stmt() const { return node_case() == kCreateSubscriptionStmt; } inline bool Node::has_create_subscription_stmt() const { return _internal_has_create_subscription_stmt(); } inline void Node::set_has_create_subscription_stmt() { _impl_._oneof_case_[0] = kCreateSubscriptionStmt; } inline void Node::clear_create_subscription_stmt() { if (_internal_has_create_subscription_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_subscription_stmt()) { clear_has_node(); ::pg_query::CreateSubscriptionStmt* temp = _impl_.node_.create_subscription_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_subscription_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_subscription_stmt) return _internal_create_subscription_stmt(); } inline ::pg_query::CreateSubscriptionStmt* Node::unsafe_arena_release_create_subscription_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_subscription_stmt) if (_internal_has_create_subscription_stmt()) { clear_has_node(); ::pg_query::CreateSubscriptionStmt* temp = _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* create_subscription_stmt) { clear_node(); if (create_subscription_stmt) { set_has_create_subscription_stmt(); _impl_.node_.create_subscription_stmt_ = create_subscription_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_subscription_stmt) } inline ::pg_query::CreateSubscriptionStmt* Node::_internal_mutable_create_subscription_stmt() { if (!_internal_has_create_subscription_stmt()) { clear_node(); set_has_create_subscription_stmt(); _impl_.node_.create_subscription_stmt_ = CreateMaybeMessage< ::pg_query::CreateSubscriptionStmt >(GetArenaForAllocation()); } return _impl_.node_.create_subscription_stmt_; } inline ::pg_query::CreateSubscriptionStmt* Node::mutable_create_subscription_stmt() { ::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 = 165 [json_name = "AlterSubscriptionStmt"]; inline bool Node::_internal_has_alter_subscription_stmt() const { return node_case() == kAlterSubscriptionStmt; } inline bool Node::has_alter_subscription_stmt() const { return _internal_has_alter_subscription_stmt(); } inline void Node::set_has_alter_subscription_stmt() { _impl_._oneof_case_[0] = kAlterSubscriptionStmt; } inline void Node::clear_alter_subscription_stmt() { if (_internal_has_alter_subscription_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_subscription_stmt()) { clear_has_node(); ::pg_query::AlterSubscriptionStmt* temp = _impl_.node_.alter_subscription_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_subscription_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_subscription_stmt) return _internal_alter_subscription_stmt(); } inline ::pg_query::AlterSubscriptionStmt* Node::unsafe_arena_release_alter_subscription_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_subscription_stmt) if (_internal_has_alter_subscription_stmt()) { clear_has_node(); ::pg_query::AlterSubscriptionStmt* temp = _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* alter_subscription_stmt) { clear_node(); if (alter_subscription_stmt) { set_has_alter_subscription_stmt(); _impl_.node_.alter_subscription_stmt_ = alter_subscription_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_subscription_stmt) } inline ::pg_query::AlterSubscriptionStmt* Node::_internal_mutable_alter_subscription_stmt() { if (!_internal_has_alter_subscription_stmt()) { clear_node(); set_has_alter_subscription_stmt(); _impl_.node_.alter_subscription_stmt_ = CreateMaybeMessage< ::pg_query::AlterSubscriptionStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_subscription_stmt_; } inline ::pg_query::AlterSubscriptionStmt* Node::mutable_alter_subscription_stmt() { ::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 = 166 [json_name = "DropSubscriptionStmt"]; inline bool Node::_internal_has_drop_subscription_stmt() const { return node_case() == kDropSubscriptionStmt; } inline bool Node::has_drop_subscription_stmt() const { return _internal_has_drop_subscription_stmt(); } inline void Node::set_has_drop_subscription_stmt() { _impl_._oneof_case_[0] = kDropSubscriptionStmt; } inline void Node::clear_drop_subscription_stmt() { if (_internal_has_drop_subscription_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_drop_subscription_stmt()) { clear_has_node(); ::pg_query::DropSubscriptionStmt* temp = _impl_.node_.drop_subscription_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_drop_subscription_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.drop_subscription_stmt) return _internal_drop_subscription_stmt(); } inline ::pg_query::DropSubscriptionStmt* Node::unsafe_arena_release_drop_subscription_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_subscription_stmt) if (_internal_has_drop_subscription_stmt()) { clear_has_node(); ::pg_query::DropSubscriptionStmt* temp = _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* drop_subscription_stmt) { clear_node(); if (drop_subscription_stmt) { set_has_drop_subscription_stmt(); _impl_.node_.drop_subscription_stmt_ = drop_subscription_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_subscription_stmt) } inline ::pg_query::DropSubscriptionStmt* Node::_internal_mutable_drop_subscription_stmt() { if (!_internal_has_drop_subscription_stmt()) { clear_node(); set_has_drop_subscription_stmt(); _impl_.node_.drop_subscription_stmt_ = CreateMaybeMessage< ::pg_query::DropSubscriptionStmt >(GetArenaForAllocation()); } return _impl_.node_.drop_subscription_stmt_; } inline ::pg_query::DropSubscriptionStmt* Node::mutable_drop_subscription_stmt() { ::pg_query::DropSubscriptionStmt* _msg = _internal_mutable_drop_subscription_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_subscription_stmt) return _msg; } // .pg_query.CreateStatsStmt create_stats_stmt = 167 [json_name = "CreateStatsStmt"]; inline bool Node::_internal_has_create_stats_stmt() const { return node_case() == kCreateStatsStmt; } inline bool Node::has_create_stats_stmt() const { return _internal_has_create_stats_stmt(); } inline void Node::set_has_create_stats_stmt() { _impl_._oneof_case_[0] = kCreateStatsStmt; } inline void Node::clear_create_stats_stmt() { if (_internal_has_create_stats_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_create_stats_stmt()) { clear_has_node(); ::pg_query::CreateStatsStmt* temp = _impl_.node_.create_stats_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_stats_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_stats_stmt) return _internal_create_stats_stmt(); } inline ::pg_query::CreateStatsStmt* Node::unsafe_arena_release_create_stats_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_stats_stmt) if (_internal_has_create_stats_stmt()) { clear_has_node(); ::pg_query::CreateStatsStmt* temp = _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* create_stats_stmt) { clear_node(); if (create_stats_stmt) { set_has_create_stats_stmt(); _impl_.node_.create_stats_stmt_ = create_stats_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_stats_stmt) } inline ::pg_query::CreateStatsStmt* Node::_internal_mutable_create_stats_stmt() { if (!_internal_has_create_stats_stmt()) { clear_node(); set_has_create_stats_stmt(); _impl_.node_.create_stats_stmt_ = CreateMaybeMessage< ::pg_query::CreateStatsStmt >(GetArenaForAllocation()); } return _impl_.node_.create_stats_stmt_; } inline ::pg_query::CreateStatsStmt* Node::mutable_create_stats_stmt() { ::pg_query::CreateStatsStmt* _msg = _internal_mutable_create_stats_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_stats_stmt) return _msg; } // .pg_query.AlterCollationStmt alter_collation_stmt = 168 [json_name = "AlterCollationStmt"]; inline bool Node::_internal_has_alter_collation_stmt() const { return node_case() == kAlterCollationStmt; } inline bool Node::has_alter_collation_stmt() const { return _internal_has_alter_collation_stmt(); } inline void Node::set_has_alter_collation_stmt() { _impl_._oneof_case_[0] = kAlterCollationStmt; } inline void Node::clear_alter_collation_stmt() { if (_internal_has_alter_collation_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_collation_stmt()) { clear_has_node(); ::pg_query::AlterCollationStmt* temp = _impl_.node_.alter_collation_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_collation_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_collation_stmt) return _internal_alter_collation_stmt(); } inline ::pg_query::AlterCollationStmt* Node::unsafe_arena_release_alter_collation_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_collation_stmt) if (_internal_has_alter_collation_stmt()) { clear_has_node(); ::pg_query::AlterCollationStmt* temp = _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* alter_collation_stmt) { clear_node(); if (alter_collation_stmt) { set_has_alter_collation_stmt(); _impl_.node_.alter_collation_stmt_ = alter_collation_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_collation_stmt) } inline ::pg_query::AlterCollationStmt* Node::_internal_mutable_alter_collation_stmt() { if (!_internal_has_alter_collation_stmt()) { clear_node(); set_has_alter_collation_stmt(); _impl_.node_.alter_collation_stmt_ = CreateMaybeMessage< ::pg_query::AlterCollationStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_collation_stmt_; } inline ::pg_query::AlterCollationStmt* Node::mutable_alter_collation_stmt() { ::pg_query::AlterCollationStmt* _msg = _internal_mutable_alter_collation_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_collation_stmt) return _msg; } // .pg_query.CallStmt call_stmt = 169 [json_name = "CallStmt"]; inline bool Node::_internal_has_call_stmt() const { return node_case() == kCallStmt; } inline bool Node::has_call_stmt() const { return _internal_has_call_stmt(); } inline void Node::set_has_call_stmt() { _impl_._oneof_case_[0] = kCallStmt; } inline void Node::clear_call_stmt() { if (_internal_has_call_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_call_stmt()) { clear_has_node(); ::pg_query::CallStmt* temp = _impl_.node_.call_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.call_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CallStmt& Node::_internal_call_stmt() const { return _internal_has_call_stmt() ? *_impl_.node_.call_stmt_ : reinterpret_cast< ::pg_query::CallStmt&>(::pg_query::_CallStmt_default_instance_); } inline const ::pg_query::CallStmt& Node::call_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.call_stmt) return _internal_call_stmt(); } inline ::pg_query::CallStmt* Node::unsafe_arena_release_call_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.call_stmt) if (_internal_has_call_stmt()) { clear_has_node(); ::pg_query::CallStmt* temp = _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* call_stmt) { clear_node(); if (call_stmt) { set_has_call_stmt(); _impl_.node_.call_stmt_ = call_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.call_stmt) } inline ::pg_query::CallStmt* Node::_internal_mutable_call_stmt() { if (!_internal_has_call_stmt()) { clear_node(); set_has_call_stmt(); _impl_.node_.call_stmt_ = CreateMaybeMessage< ::pg_query::CallStmt >(GetArenaForAllocation()); } return _impl_.node_.call_stmt_; } inline ::pg_query::CallStmt* Node::mutable_call_stmt() { ::pg_query::CallStmt* _msg = _internal_mutable_call_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.call_stmt) return _msg; } // .pg_query.AlterStatsStmt alter_stats_stmt = 170 [json_name = "AlterStatsStmt"]; inline bool Node::_internal_has_alter_stats_stmt() const { return node_case() == kAlterStatsStmt; } inline bool Node::has_alter_stats_stmt() const { return _internal_has_alter_stats_stmt(); } inline void Node::set_has_alter_stats_stmt() { _impl_._oneof_case_[0] = kAlterStatsStmt; } inline void Node::clear_alter_stats_stmt() { if (_internal_has_alter_stats_stmt()) { if (GetArenaForAllocation() == 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 (_internal_has_alter_stats_stmt()) { clear_has_node(); ::pg_query::AlterStatsStmt* temp = _impl_.node_.alter_stats_stmt_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_alter_stats_stmt() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.alter_stats_stmt) return _internal_alter_stats_stmt(); } inline ::pg_query::AlterStatsStmt* Node::unsafe_arena_release_alter_stats_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_stats_stmt) if (_internal_has_alter_stats_stmt()) { clear_has_node(); ::pg_query::AlterStatsStmt* temp = _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* alter_stats_stmt) { clear_node(); if (alter_stats_stmt) { set_has_alter_stats_stmt(); _impl_.node_.alter_stats_stmt_ = alter_stats_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_stats_stmt) } inline ::pg_query::AlterStatsStmt* Node::_internal_mutable_alter_stats_stmt() { if (!_internal_has_alter_stats_stmt()) { clear_node(); set_has_alter_stats_stmt(); _impl_.node_.alter_stats_stmt_ = CreateMaybeMessage< ::pg_query::AlterStatsStmt >(GetArenaForAllocation()); } return _impl_.node_.alter_stats_stmt_; } inline ::pg_query::AlterStatsStmt* Node::mutable_alter_stats_stmt() { ::pg_query::AlterStatsStmt* _msg = _internal_mutable_alter_stats_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_stats_stmt) return _msg; } // .pg_query.A_Expr a_expr = 171 [json_name = "A_Expr"]; inline bool Node::_internal_has_a_expr() const { return node_case() == kAExpr; } inline bool Node::has_a_expr() const { return _internal_has_a_expr(); } inline void Node::set_has_a_expr() { _impl_._oneof_case_[0] = kAExpr; } inline void Node::clear_a_expr() { if (_internal_has_a_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_a_expr()) { clear_has_node(); ::pg_query::A_Expr* temp = _impl_.node_.a_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_a_expr() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.a_expr) return _internal_a_expr(); } inline ::pg_query::A_Expr* Node::unsafe_arena_release_a_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_expr) if (_internal_has_a_expr()) { clear_has_node(); ::pg_query::A_Expr* temp = _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* a_expr) { clear_node(); if (a_expr) { set_has_a_expr(); _impl_.node_.a_expr_ = a_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_expr) } inline ::pg_query::A_Expr* Node::_internal_mutable_a_expr() { if (!_internal_has_a_expr()) { clear_node(); set_has_a_expr(); _impl_.node_.a_expr_ = CreateMaybeMessage< ::pg_query::A_Expr >(GetArenaForAllocation()); } return _impl_.node_.a_expr_; } inline ::pg_query::A_Expr* Node::mutable_a_expr() { ::pg_query::A_Expr* _msg = _internal_mutable_a_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.a_expr) return _msg; } // .pg_query.ColumnRef column_ref = 172 [json_name = "ColumnRef"]; inline bool Node::_internal_has_column_ref() const { return node_case() == kColumnRef; } inline bool Node::has_column_ref() const { return _internal_has_column_ref(); } inline void Node::set_has_column_ref() { _impl_._oneof_case_[0] = kColumnRef; } inline void Node::clear_column_ref() { if (_internal_has_column_ref()) { if (GetArenaForAllocation() == 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 (_internal_has_column_ref()) { clear_has_node(); ::pg_query::ColumnRef* temp = _impl_.node_.column_ref_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.column_ref_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ColumnRef& Node::_internal_column_ref() const { return _internal_has_column_ref() ? *_impl_.node_.column_ref_ : reinterpret_cast< ::pg_query::ColumnRef&>(::pg_query::_ColumnRef_default_instance_); } inline const ::pg_query::ColumnRef& Node::column_ref() const { // @@protoc_insertion_point(field_get:pg_query.Node.column_ref) return _internal_column_ref(); } inline ::pg_query::ColumnRef* Node::unsafe_arena_release_column_ref() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.column_ref) if (_internal_has_column_ref()) { clear_has_node(); ::pg_query::ColumnRef* temp = _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* column_ref) { clear_node(); if (column_ref) { set_has_column_ref(); _impl_.node_.column_ref_ = column_ref; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.column_ref) } inline ::pg_query::ColumnRef* Node::_internal_mutable_column_ref() { if (!_internal_has_column_ref()) { clear_node(); set_has_column_ref(); _impl_.node_.column_ref_ = CreateMaybeMessage< ::pg_query::ColumnRef >(GetArenaForAllocation()); } return _impl_.node_.column_ref_; } inline ::pg_query::ColumnRef* Node::mutable_column_ref() { ::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 = 173 [json_name = "ParamRef"]; inline bool Node::_internal_has_param_ref() const { return node_case() == kParamRef; } inline bool Node::has_param_ref() const { return _internal_has_param_ref(); } inline void Node::set_has_param_ref() { _impl_._oneof_case_[0] = kParamRef; } inline void Node::clear_param_ref() { if (_internal_has_param_ref()) { if (GetArenaForAllocation() == 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 (_internal_has_param_ref()) { clear_has_node(); ::pg_query::ParamRef* temp = _impl_.node_.param_ref_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.param_ref_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ParamRef& Node::_internal_param_ref() const { return _internal_has_param_ref() ? *_impl_.node_.param_ref_ : reinterpret_cast< ::pg_query::ParamRef&>(::pg_query::_ParamRef_default_instance_); } inline const ::pg_query::ParamRef& Node::param_ref() const { // @@protoc_insertion_point(field_get:pg_query.Node.param_ref) return _internal_param_ref(); } inline ::pg_query::ParamRef* Node::unsafe_arena_release_param_ref() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.param_ref) if (_internal_has_param_ref()) { clear_has_node(); ::pg_query::ParamRef* temp = _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* param_ref) { clear_node(); if (param_ref) { set_has_param_ref(); _impl_.node_.param_ref_ = param_ref; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.param_ref) } inline ::pg_query::ParamRef* Node::_internal_mutable_param_ref() { if (!_internal_has_param_ref()) { clear_node(); set_has_param_ref(); _impl_.node_.param_ref_ = CreateMaybeMessage< ::pg_query::ParamRef >(GetArenaForAllocation()); } return _impl_.node_.param_ref_; } inline ::pg_query::ParamRef* Node::mutable_param_ref() { ::pg_query::ParamRef* _msg = _internal_mutable_param_ref(); // @@protoc_insertion_point(field_mutable:pg_query.Node.param_ref) return _msg; } // .pg_query.FuncCall func_call = 174 [json_name = "FuncCall"]; inline bool Node::_internal_has_func_call() const { return node_case() == kFuncCall; } inline bool Node::has_func_call() const { return _internal_has_func_call(); } inline void Node::set_has_func_call() { _impl_._oneof_case_[0] = kFuncCall; } inline void Node::clear_func_call() { if (_internal_has_func_call()) { if (GetArenaForAllocation() == 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 (_internal_has_func_call()) { clear_has_node(); ::pg_query::FuncCall* temp = _impl_.node_.func_call_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.func_call_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FuncCall& Node::_internal_func_call() const { return _internal_has_func_call() ? *_impl_.node_.func_call_ : reinterpret_cast< ::pg_query::FuncCall&>(::pg_query::_FuncCall_default_instance_); } inline const ::pg_query::FuncCall& Node::func_call() const { // @@protoc_insertion_point(field_get:pg_query.Node.func_call) return _internal_func_call(); } inline ::pg_query::FuncCall* Node::unsafe_arena_release_func_call() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.func_call) if (_internal_has_func_call()) { clear_has_node(); ::pg_query::FuncCall* temp = _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* func_call) { clear_node(); if (func_call) { set_has_func_call(); _impl_.node_.func_call_ = func_call; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.func_call) } inline ::pg_query::FuncCall* Node::_internal_mutable_func_call() { if (!_internal_has_func_call()) { clear_node(); set_has_func_call(); _impl_.node_.func_call_ = CreateMaybeMessage< ::pg_query::FuncCall >(GetArenaForAllocation()); } return _impl_.node_.func_call_; } inline ::pg_query::FuncCall* Node::mutable_func_call() { ::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 = 175 [json_name = "A_Star"]; inline bool Node::_internal_has_a_star() const { return node_case() == kAStar; } inline bool Node::has_a_star() const { return _internal_has_a_star(); } inline void Node::set_has_a_star() { _impl_._oneof_case_[0] = kAStar; } inline void Node::clear_a_star() { if (_internal_has_a_star()) { if (GetArenaForAllocation() == 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 (_internal_has_a_star()) { clear_has_node(); ::pg_query::A_Star* temp = _impl_.node_.a_star_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_a_star() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.a_star) return _internal_a_star(); } inline ::pg_query::A_Star* Node::unsafe_arena_release_a_star() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_star) if (_internal_has_a_star()) { clear_has_node(); ::pg_query::A_Star* temp = _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* a_star) { clear_node(); if (a_star) { set_has_a_star(); _impl_.node_.a_star_ = a_star; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_star) } inline ::pg_query::A_Star* Node::_internal_mutable_a_star() { if (!_internal_has_a_star()) { clear_node(); set_has_a_star(); _impl_.node_.a_star_ = CreateMaybeMessage< ::pg_query::A_Star >(GetArenaForAllocation()); } return _impl_.node_.a_star_; } inline ::pg_query::A_Star* Node::mutable_a_star() { ::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 = 176 [json_name = "A_Indices"]; inline bool Node::_internal_has_a_indices() const { return node_case() == kAIndices; } inline bool Node::has_a_indices() const { return _internal_has_a_indices(); } inline void Node::set_has_a_indices() { _impl_._oneof_case_[0] = kAIndices; } inline void Node::clear_a_indices() { if (_internal_has_a_indices()) { if (GetArenaForAllocation() == 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 (_internal_has_a_indices()) { clear_has_node(); ::pg_query::A_Indices* temp = _impl_.node_.a_indices_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_a_indices() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.a_indices) return _internal_a_indices(); } inline ::pg_query::A_Indices* Node::unsafe_arena_release_a_indices() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_indices) if (_internal_has_a_indices()) { clear_has_node(); ::pg_query::A_Indices* temp = _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* a_indices) { clear_node(); if (a_indices) { set_has_a_indices(); _impl_.node_.a_indices_ = a_indices; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_indices) } inline ::pg_query::A_Indices* Node::_internal_mutable_a_indices() { if (!_internal_has_a_indices()) { clear_node(); set_has_a_indices(); _impl_.node_.a_indices_ = CreateMaybeMessage< ::pg_query::A_Indices >(GetArenaForAllocation()); } return _impl_.node_.a_indices_; } inline ::pg_query::A_Indices* Node::mutable_a_indices() { ::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 = 177 [json_name = "A_Indirection"]; inline bool Node::_internal_has_a_indirection() const { return node_case() == kAIndirection; } inline bool Node::has_a_indirection() const { return _internal_has_a_indirection(); } inline void Node::set_has_a_indirection() { _impl_._oneof_case_[0] = kAIndirection; } inline void Node::clear_a_indirection() { if (_internal_has_a_indirection()) { if (GetArenaForAllocation() == 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 (_internal_has_a_indirection()) { clear_has_node(); ::pg_query::A_Indirection* temp = _impl_.node_.a_indirection_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_a_indirection() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.a_indirection) return _internal_a_indirection(); } inline ::pg_query::A_Indirection* Node::unsafe_arena_release_a_indirection() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_indirection) if (_internal_has_a_indirection()) { clear_has_node(); ::pg_query::A_Indirection* temp = _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* a_indirection) { clear_node(); if (a_indirection) { set_has_a_indirection(); _impl_.node_.a_indirection_ = a_indirection; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_indirection) } inline ::pg_query::A_Indirection* Node::_internal_mutable_a_indirection() { if (!_internal_has_a_indirection()) { clear_node(); set_has_a_indirection(); _impl_.node_.a_indirection_ = CreateMaybeMessage< ::pg_query::A_Indirection >(GetArenaForAllocation()); } return _impl_.node_.a_indirection_; } inline ::pg_query::A_Indirection* Node::mutable_a_indirection() { ::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 = 178 [json_name = "A_ArrayExpr"]; inline bool Node::_internal_has_a_array_expr() const { return node_case() == kAArrayExpr; } inline bool Node::has_a_array_expr() const { return _internal_has_a_array_expr(); } inline void Node::set_has_a_array_expr() { _impl_._oneof_case_[0] = kAArrayExpr; } inline void Node::clear_a_array_expr() { if (_internal_has_a_array_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_a_array_expr()) { clear_has_node(); ::pg_query::A_ArrayExpr* temp = _impl_.node_.a_array_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_a_array_expr() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.a_array_expr) return _internal_a_array_expr(); } inline ::pg_query::A_ArrayExpr* Node::unsafe_arena_release_a_array_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_array_expr) if (_internal_has_a_array_expr()) { clear_has_node(); ::pg_query::A_ArrayExpr* temp = _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* a_array_expr) { clear_node(); if (a_array_expr) { set_has_a_array_expr(); _impl_.node_.a_array_expr_ = a_array_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_array_expr) } inline ::pg_query::A_ArrayExpr* Node::_internal_mutable_a_array_expr() { if (!_internal_has_a_array_expr()) { clear_node(); set_has_a_array_expr(); _impl_.node_.a_array_expr_ = CreateMaybeMessage< ::pg_query::A_ArrayExpr >(GetArenaForAllocation()); } return _impl_.node_.a_array_expr_; } inline ::pg_query::A_ArrayExpr* Node::mutable_a_array_expr() { ::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 = 179 [json_name = "ResTarget"]; inline bool Node::_internal_has_res_target() const { return node_case() == kResTarget; } inline bool Node::has_res_target() const { return _internal_has_res_target(); } inline void Node::set_has_res_target() { _impl_._oneof_case_[0] = kResTarget; } inline void Node::clear_res_target() { if (_internal_has_res_target()) { if (GetArenaForAllocation() == 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 (_internal_has_res_target()) { clear_has_node(); ::pg_query::ResTarget* temp = _impl_.node_.res_target_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.res_target_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ResTarget& Node::_internal_res_target() const { return _internal_has_res_target() ? *_impl_.node_.res_target_ : reinterpret_cast< ::pg_query::ResTarget&>(::pg_query::_ResTarget_default_instance_); } inline const ::pg_query::ResTarget& Node::res_target() const { // @@protoc_insertion_point(field_get:pg_query.Node.res_target) return _internal_res_target(); } inline ::pg_query::ResTarget* Node::unsafe_arena_release_res_target() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.res_target) if (_internal_has_res_target()) { clear_has_node(); ::pg_query::ResTarget* temp = _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* res_target) { clear_node(); if (res_target) { set_has_res_target(); _impl_.node_.res_target_ = res_target; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.res_target) } inline ::pg_query::ResTarget* Node::_internal_mutable_res_target() { if (!_internal_has_res_target()) { clear_node(); set_has_res_target(); _impl_.node_.res_target_ = CreateMaybeMessage< ::pg_query::ResTarget >(GetArenaForAllocation()); } return _impl_.node_.res_target_; } inline ::pg_query::ResTarget* Node::mutable_res_target() { ::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 = 180 [json_name = "MultiAssignRef"]; inline bool Node::_internal_has_multi_assign_ref() const { return node_case() == kMultiAssignRef; } inline bool Node::has_multi_assign_ref() const { return _internal_has_multi_assign_ref(); } inline void Node::set_has_multi_assign_ref() { _impl_._oneof_case_[0] = kMultiAssignRef; } inline void Node::clear_multi_assign_ref() { if (_internal_has_multi_assign_ref()) { if (GetArenaForAllocation() == 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 (_internal_has_multi_assign_ref()) { clear_has_node(); ::pg_query::MultiAssignRef* temp = _impl_.node_.multi_assign_ref_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_multi_assign_ref() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.multi_assign_ref) return _internal_multi_assign_ref(); } inline ::pg_query::MultiAssignRef* Node::unsafe_arena_release_multi_assign_ref() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.multi_assign_ref) if (_internal_has_multi_assign_ref()) { clear_has_node(); ::pg_query::MultiAssignRef* temp = _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* multi_assign_ref) { clear_node(); if (multi_assign_ref) { set_has_multi_assign_ref(); _impl_.node_.multi_assign_ref_ = multi_assign_ref; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.multi_assign_ref) } inline ::pg_query::MultiAssignRef* Node::_internal_mutable_multi_assign_ref() { if (!_internal_has_multi_assign_ref()) { clear_node(); set_has_multi_assign_ref(); _impl_.node_.multi_assign_ref_ = CreateMaybeMessage< ::pg_query::MultiAssignRef >(GetArenaForAllocation()); } return _impl_.node_.multi_assign_ref_; } inline ::pg_query::MultiAssignRef* Node::mutable_multi_assign_ref() { ::pg_query::MultiAssignRef* _msg = _internal_mutable_multi_assign_ref(); // @@protoc_insertion_point(field_mutable:pg_query.Node.multi_assign_ref) return _msg; } // .pg_query.TypeCast type_cast = 181 [json_name = "TypeCast"]; inline bool Node::_internal_has_type_cast() const { return node_case() == kTypeCast; } inline bool Node::has_type_cast() const { return _internal_has_type_cast(); } inline void Node::set_has_type_cast() { _impl_._oneof_case_[0] = kTypeCast; } inline void Node::clear_type_cast() { if (_internal_has_type_cast()) { if (GetArenaForAllocation() == 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 (_internal_has_type_cast()) { clear_has_node(); ::pg_query::TypeCast* temp = _impl_.node_.type_cast_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.type_cast_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TypeCast& Node::_internal_type_cast() const { return _internal_has_type_cast() ? *_impl_.node_.type_cast_ : reinterpret_cast< ::pg_query::TypeCast&>(::pg_query::_TypeCast_default_instance_); } inline const ::pg_query::TypeCast& Node::type_cast() const { // @@protoc_insertion_point(field_get:pg_query.Node.type_cast) return _internal_type_cast(); } inline ::pg_query::TypeCast* Node::unsafe_arena_release_type_cast() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.type_cast) if (_internal_has_type_cast()) { clear_has_node(); ::pg_query::TypeCast* temp = _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* type_cast) { clear_node(); if (type_cast) { set_has_type_cast(); _impl_.node_.type_cast_ = type_cast; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.type_cast) } inline ::pg_query::TypeCast* Node::_internal_mutable_type_cast() { if (!_internal_has_type_cast()) { clear_node(); set_has_type_cast(); _impl_.node_.type_cast_ = CreateMaybeMessage< ::pg_query::TypeCast >(GetArenaForAllocation()); } return _impl_.node_.type_cast_; } inline ::pg_query::TypeCast* Node::mutable_type_cast() { ::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 = 182 [json_name = "CollateClause"]; inline bool Node::_internal_has_collate_clause() const { return node_case() == kCollateClause; } inline bool Node::has_collate_clause() const { return _internal_has_collate_clause(); } inline void Node::set_has_collate_clause() { _impl_._oneof_case_[0] = kCollateClause; } inline void Node::clear_collate_clause() { if (_internal_has_collate_clause()) { if (GetArenaForAllocation() == 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 (_internal_has_collate_clause()) { clear_has_node(); ::pg_query::CollateClause* temp = _impl_.node_.collate_clause_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.collate_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CollateClause& Node::_internal_collate_clause() const { return _internal_has_collate_clause() ? *_impl_.node_.collate_clause_ : reinterpret_cast< ::pg_query::CollateClause&>(::pg_query::_CollateClause_default_instance_); } inline const ::pg_query::CollateClause& Node::collate_clause() const { // @@protoc_insertion_point(field_get:pg_query.Node.collate_clause) return _internal_collate_clause(); } inline ::pg_query::CollateClause* Node::unsafe_arena_release_collate_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.collate_clause) if (_internal_has_collate_clause()) { clear_has_node(); ::pg_query::CollateClause* temp = _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* collate_clause) { clear_node(); if (collate_clause) { set_has_collate_clause(); _impl_.node_.collate_clause_ = collate_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.collate_clause) } inline ::pg_query::CollateClause* Node::_internal_mutable_collate_clause() { if (!_internal_has_collate_clause()) { clear_node(); set_has_collate_clause(); _impl_.node_.collate_clause_ = CreateMaybeMessage< ::pg_query::CollateClause >(GetArenaForAllocation()); } return _impl_.node_.collate_clause_; } inline ::pg_query::CollateClause* Node::mutable_collate_clause() { ::pg_query::CollateClause* _msg = _internal_mutable_collate_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.collate_clause) return _msg; } // .pg_query.SortBy sort_by = 183 [json_name = "SortBy"]; inline bool Node::_internal_has_sort_by() const { return node_case() == kSortBy; } inline bool Node::has_sort_by() const { return _internal_has_sort_by(); } inline void Node::set_has_sort_by() { _impl_._oneof_case_[0] = kSortBy; } inline void Node::clear_sort_by() { if (_internal_has_sort_by()) { if (GetArenaForAllocation() == 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 (_internal_has_sort_by()) { clear_has_node(); ::pg_query::SortBy* temp = _impl_.node_.sort_by_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.sort_by_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SortBy& Node::_internal_sort_by() const { return _internal_has_sort_by() ? *_impl_.node_.sort_by_ : reinterpret_cast< ::pg_query::SortBy&>(::pg_query::_SortBy_default_instance_); } inline const ::pg_query::SortBy& Node::sort_by() const { // @@protoc_insertion_point(field_get:pg_query.Node.sort_by) return _internal_sort_by(); } inline ::pg_query::SortBy* Node::unsafe_arena_release_sort_by() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sort_by) if (_internal_has_sort_by()) { clear_has_node(); ::pg_query::SortBy* temp = _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* sort_by) { clear_node(); if (sort_by) { set_has_sort_by(); _impl_.node_.sort_by_ = sort_by; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sort_by) } inline ::pg_query::SortBy* Node::_internal_mutable_sort_by() { if (!_internal_has_sort_by()) { clear_node(); set_has_sort_by(); _impl_.node_.sort_by_ = CreateMaybeMessage< ::pg_query::SortBy >(GetArenaForAllocation()); } return _impl_.node_.sort_by_; } inline ::pg_query::SortBy* Node::mutable_sort_by() { ::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 = 184 [json_name = "WindowDef"]; inline bool Node::_internal_has_window_def() const { return node_case() == kWindowDef; } inline bool Node::has_window_def() const { return _internal_has_window_def(); } inline void Node::set_has_window_def() { _impl_._oneof_case_[0] = kWindowDef; } inline void Node::clear_window_def() { if (_internal_has_window_def()) { if (GetArenaForAllocation() == 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 (_internal_has_window_def()) { clear_has_node(); ::pg_query::WindowDef* temp = _impl_.node_.window_def_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.window_def_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::WindowDef& Node::_internal_window_def() const { return _internal_has_window_def() ? *_impl_.node_.window_def_ : reinterpret_cast< ::pg_query::WindowDef&>(::pg_query::_WindowDef_default_instance_); } inline const ::pg_query::WindowDef& Node::window_def() const { // @@protoc_insertion_point(field_get:pg_query.Node.window_def) return _internal_window_def(); } inline ::pg_query::WindowDef* Node::unsafe_arena_release_window_def() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.window_def) if (_internal_has_window_def()) { clear_has_node(); ::pg_query::WindowDef* temp = _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* window_def) { clear_node(); if (window_def) { set_has_window_def(); _impl_.node_.window_def_ = window_def; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.window_def) } inline ::pg_query::WindowDef* Node::_internal_mutable_window_def() { if (!_internal_has_window_def()) { clear_node(); set_has_window_def(); _impl_.node_.window_def_ = CreateMaybeMessage< ::pg_query::WindowDef >(GetArenaForAllocation()); } return _impl_.node_.window_def_; } inline ::pg_query::WindowDef* Node::mutable_window_def() { ::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 = 185 [json_name = "RangeSubselect"]; inline bool Node::_internal_has_range_subselect() const { return node_case() == kRangeSubselect; } inline bool Node::has_range_subselect() const { return _internal_has_range_subselect(); } inline void Node::set_has_range_subselect() { _impl_._oneof_case_[0] = kRangeSubselect; } inline void Node::clear_range_subselect() { if (_internal_has_range_subselect()) { if (GetArenaForAllocation() == 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 (_internal_has_range_subselect()) { clear_has_node(); ::pg_query::RangeSubselect* temp = _impl_.node_.range_subselect_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.range_subselect_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeSubselect& Node::_internal_range_subselect() const { return _internal_has_range_subselect() ? *_impl_.node_.range_subselect_ : reinterpret_cast< ::pg_query::RangeSubselect&>(::pg_query::_RangeSubselect_default_instance_); } inline const ::pg_query::RangeSubselect& Node::range_subselect() const { // @@protoc_insertion_point(field_get:pg_query.Node.range_subselect) return _internal_range_subselect(); } inline ::pg_query::RangeSubselect* Node::unsafe_arena_release_range_subselect() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_subselect) if (_internal_has_range_subselect()) { clear_has_node(); ::pg_query::RangeSubselect* temp = _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* range_subselect) { clear_node(); if (range_subselect) { set_has_range_subselect(); _impl_.node_.range_subselect_ = range_subselect; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_subselect) } inline ::pg_query::RangeSubselect* Node::_internal_mutable_range_subselect() { if (!_internal_has_range_subselect()) { clear_node(); set_has_range_subselect(); _impl_.node_.range_subselect_ = CreateMaybeMessage< ::pg_query::RangeSubselect >(GetArenaForAllocation()); } return _impl_.node_.range_subselect_; } inline ::pg_query::RangeSubselect* Node::mutable_range_subselect() { ::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 = 186 [json_name = "RangeFunction"]; inline bool Node::_internal_has_range_function() const { return node_case() == kRangeFunction; } inline bool Node::has_range_function() const { return _internal_has_range_function(); } inline void Node::set_has_range_function() { _impl_._oneof_case_[0] = kRangeFunction; } inline void Node::clear_range_function() { if (_internal_has_range_function()) { if (GetArenaForAllocation() == 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 (_internal_has_range_function()) { clear_has_node(); ::pg_query::RangeFunction* temp = _impl_.node_.range_function_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.range_function_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeFunction& Node::_internal_range_function() const { return _internal_has_range_function() ? *_impl_.node_.range_function_ : reinterpret_cast< ::pg_query::RangeFunction&>(::pg_query::_RangeFunction_default_instance_); } inline const ::pg_query::RangeFunction& Node::range_function() const { // @@protoc_insertion_point(field_get:pg_query.Node.range_function) return _internal_range_function(); } inline ::pg_query::RangeFunction* Node::unsafe_arena_release_range_function() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_function) if (_internal_has_range_function()) { clear_has_node(); ::pg_query::RangeFunction* temp = _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* range_function) { clear_node(); if (range_function) { set_has_range_function(); _impl_.node_.range_function_ = range_function; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_function) } inline ::pg_query::RangeFunction* Node::_internal_mutable_range_function() { if (!_internal_has_range_function()) { clear_node(); set_has_range_function(); _impl_.node_.range_function_ = CreateMaybeMessage< ::pg_query::RangeFunction >(GetArenaForAllocation()); } return _impl_.node_.range_function_; } inline ::pg_query::RangeFunction* Node::mutable_range_function() { ::pg_query::RangeFunction* _msg = _internal_mutable_range_function(); // @@protoc_insertion_point(field_mutable:pg_query.Node.range_function) return _msg; } // .pg_query.RangeTableSample range_table_sample = 187 [json_name = "RangeTableSample"]; inline bool Node::_internal_has_range_table_sample() const { return node_case() == kRangeTableSample; } inline bool Node::has_range_table_sample() const { return _internal_has_range_table_sample(); } inline void Node::set_has_range_table_sample() { _impl_._oneof_case_[0] = kRangeTableSample; } inline void Node::clear_range_table_sample() { if (_internal_has_range_table_sample()) { if (GetArenaForAllocation() == 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 (_internal_has_range_table_sample()) { clear_has_node(); ::pg_query::RangeTableSample* temp = _impl_.node_.range_table_sample_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_range_table_sample() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.range_table_sample) return _internal_range_table_sample(); } inline ::pg_query::RangeTableSample* Node::unsafe_arena_release_range_table_sample() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_table_sample) if (_internal_has_range_table_sample()) { clear_has_node(); ::pg_query::RangeTableSample* temp = _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* range_table_sample) { clear_node(); if (range_table_sample) { set_has_range_table_sample(); _impl_.node_.range_table_sample_ = range_table_sample; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_table_sample) } inline ::pg_query::RangeTableSample* Node::_internal_mutable_range_table_sample() { if (!_internal_has_range_table_sample()) { clear_node(); set_has_range_table_sample(); _impl_.node_.range_table_sample_ = CreateMaybeMessage< ::pg_query::RangeTableSample >(GetArenaForAllocation()); } return _impl_.node_.range_table_sample_; } inline ::pg_query::RangeTableSample* Node::mutable_range_table_sample() { ::pg_query::RangeTableSample* _msg = _internal_mutable_range_table_sample(); // @@protoc_insertion_point(field_mutable:pg_query.Node.range_table_sample) return _msg; } // .pg_query.RangeTableFunc range_table_func = 188 [json_name = "RangeTableFunc"]; inline bool Node::_internal_has_range_table_func() const { return node_case() == kRangeTableFunc; } inline bool Node::has_range_table_func() const { return _internal_has_range_table_func(); } inline void Node::set_has_range_table_func() { _impl_._oneof_case_[0] = kRangeTableFunc; } inline void Node::clear_range_table_func() { if (_internal_has_range_table_func()) { if (GetArenaForAllocation() == 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 (_internal_has_range_table_func()) { clear_has_node(); ::pg_query::RangeTableFunc* temp = _impl_.node_.range_table_func_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_range_table_func() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.range_table_func) return _internal_range_table_func(); } inline ::pg_query::RangeTableFunc* Node::unsafe_arena_release_range_table_func() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_table_func) if (_internal_has_range_table_func()) { clear_has_node(); ::pg_query::RangeTableFunc* temp = _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* range_table_func) { clear_node(); if (range_table_func) { set_has_range_table_func(); _impl_.node_.range_table_func_ = range_table_func; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_table_func) } inline ::pg_query::RangeTableFunc* Node::_internal_mutable_range_table_func() { if (!_internal_has_range_table_func()) { clear_node(); set_has_range_table_func(); _impl_.node_.range_table_func_ = CreateMaybeMessage< ::pg_query::RangeTableFunc >(GetArenaForAllocation()); } return _impl_.node_.range_table_func_; } inline ::pg_query::RangeTableFunc* Node::mutable_range_table_func() { ::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 = 189 [json_name = "RangeTableFuncCol"]; inline bool Node::_internal_has_range_table_func_col() const { return node_case() == kRangeTableFuncCol; } inline bool Node::has_range_table_func_col() const { return _internal_has_range_table_func_col(); } inline void Node::set_has_range_table_func_col() { _impl_._oneof_case_[0] = kRangeTableFuncCol; } inline void Node::clear_range_table_func_col() { if (_internal_has_range_table_func_col()) { if (GetArenaForAllocation() == 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 (_internal_has_range_table_func_col()) { clear_has_node(); ::pg_query::RangeTableFuncCol* temp = _impl_.node_.range_table_func_col_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_range_table_func_col() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.range_table_func_col) return _internal_range_table_func_col(); } inline ::pg_query::RangeTableFuncCol* Node::unsafe_arena_release_range_table_func_col() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_table_func_col) if (_internal_has_range_table_func_col()) { clear_has_node(); ::pg_query::RangeTableFuncCol* temp = _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* range_table_func_col) { clear_node(); if (range_table_func_col) { set_has_range_table_func_col(); _impl_.node_.range_table_func_col_ = range_table_func_col; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_table_func_col) } inline ::pg_query::RangeTableFuncCol* Node::_internal_mutable_range_table_func_col() { if (!_internal_has_range_table_func_col()) { clear_node(); set_has_range_table_func_col(); _impl_.node_.range_table_func_col_ = CreateMaybeMessage< ::pg_query::RangeTableFuncCol >(GetArenaForAllocation()); } return _impl_.node_.range_table_func_col_; } inline ::pg_query::RangeTableFuncCol* Node::mutable_range_table_func_col() { ::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.TypeName type_name = 190 [json_name = "TypeName"]; inline bool Node::_internal_has_type_name() const { return node_case() == kTypeName; } inline bool Node::has_type_name() const { return _internal_has_type_name(); } inline void Node::set_has_type_name() { _impl_._oneof_case_[0] = kTypeName; } inline void Node::clear_type_name() { if (_internal_has_type_name()) { if (GetArenaForAllocation() == 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 (_internal_has_type_name()) { clear_has_node(); ::pg_query::TypeName* temp = _impl_.node_.type_name_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.type_name_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TypeName& Node::_internal_type_name() const { return _internal_has_type_name() ? *_impl_.node_.type_name_ : reinterpret_cast< ::pg_query::TypeName&>(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& Node::type_name() const { // @@protoc_insertion_point(field_get:pg_query.Node.type_name) return _internal_type_name(); } inline ::pg_query::TypeName* Node::unsafe_arena_release_type_name() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.type_name) if (_internal_has_type_name()) { clear_has_node(); ::pg_query::TypeName* temp = _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* type_name) { clear_node(); if (type_name) { set_has_type_name(); _impl_.node_.type_name_ = type_name; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.type_name) } inline ::pg_query::TypeName* Node::_internal_mutable_type_name() { if (!_internal_has_type_name()) { clear_node(); set_has_type_name(); _impl_.node_.type_name_ = CreateMaybeMessage< ::pg_query::TypeName >(GetArenaForAllocation()); } return _impl_.node_.type_name_; } inline ::pg_query::TypeName* Node::mutable_type_name() { ::pg_query::TypeName* _msg = _internal_mutable_type_name(); // @@protoc_insertion_point(field_mutable:pg_query.Node.type_name) return _msg; } // .pg_query.ColumnDef column_def = 191 [json_name = "ColumnDef"]; inline bool Node::_internal_has_column_def() const { return node_case() == kColumnDef; } inline bool Node::has_column_def() const { return _internal_has_column_def(); } inline void Node::set_has_column_def() { _impl_._oneof_case_[0] = kColumnDef; } inline void Node::clear_column_def() { if (_internal_has_column_def()) { if (GetArenaForAllocation() == 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 (_internal_has_column_def()) { clear_has_node(); ::pg_query::ColumnDef* temp = _impl_.node_.column_def_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.column_def_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ColumnDef& Node::_internal_column_def() const { return _internal_has_column_def() ? *_impl_.node_.column_def_ : reinterpret_cast< ::pg_query::ColumnDef&>(::pg_query::_ColumnDef_default_instance_); } inline const ::pg_query::ColumnDef& Node::column_def() const { // @@protoc_insertion_point(field_get:pg_query.Node.column_def) return _internal_column_def(); } inline ::pg_query::ColumnDef* Node::unsafe_arena_release_column_def() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.column_def) if (_internal_has_column_def()) { clear_has_node(); ::pg_query::ColumnDef* temp = _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* column_def) { clear_node(); if (column_def) { set_has_column_def(); _impl_.node_.column_def_ = column_def; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.column_def) } inline ::pg_query::ColumnDef* Node::_internal_mutable_column_def() { if (!_internal_has_column_def()) { clear_node(); set_has_column_def(); _impl_.node_.column_def_ = CreateMaybeMessage< ::pg_query::ColumnDef >(GetArenaForAllocation()); } return _impl_.node_.column_def_; } inline ::pg_query::ColumnDef* Node::mutable_column_def() { ::pg_query::ColumnDef* _msg = _internal_mutable_column_def(); // @@protoc_insertion_point(field_mutable:pg_query.Node.column_def) return _msg; } // .pg_query.IndexElem index_elem = 192 [json_name = "IndexElem"]; inline bool Node::_internal_has_index_elem() const { return node_case() == kIndexElem; } inline bool Node::has_index_elem() const { return _internal_has_index_elem(); } inline void Node::set_has_index_elem() { _impl_._oneof_case_[0] = kIndexElem; } inline void Node::clear_index_elem() { if (_internal_has_index_elem()) { if (GetArenaForAllocation() == 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 (_internal_has_index_elem()) { clear_has_node(); ::pg_query::IndexElem* temp = _impl_.node_.index_elem_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.index_elem_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::IndexElem& Node::_internal_index_elem() const { return _internal_has_index_elem() ? *_impl_.node_.index_elem_ : reinterpret_cast< ::pg_query::IndexElem&>(::pg_query::_IndexElem_default_instance_); } inline const ::pg_query::IndexElem& Node::index_elem() const { // @@protoc_insertion_point(field_get:pg_query.Node.index_elem) return _internal_index_elem(); } inline ::pg_query::IndexElem* Node::unsafe_arena_release_index_elem() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.index_elem) if (_internal_has_index_elem()) { clear_has_node(); ::pg_query::IndexElem* temp = _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* index_elem) { clear_node(); if (index_elem) { set_has_index_elem(); _impl_.node_.index_elem_ = index_elem; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.index_elem) } inline ::pg_query::IndexElem* Node::_internal_mutable_index_elem() { if (!_internal_has_index_elem()) { clear_node(); set_has_index_elem(); _impl_.node_.index_elem_ = CreateMaybeMessage< ::pg_query::IndexElem >(GetArenaForAllocation()); } return _impl_.node_.index_elem_; } inline ::pg_query::IndexElem* Node::mutable_index_elem() { ::pg_query::IndexElem* _msg = _internal_mutable_index_elem(); // @@protoc_insertion_point(field_mutable:pg_query.Node.index_elem) return _msg; } // .pg_query.StatsElem stats_elem = 193 [json_name = "StatsElem"]; inline bool Node::_internal_has_stats_elem() const { return node_case() == kStatsElem; } inline bool Node::has_stats_elem() const { return _internal_has_stats_elem(); } inline void Node::set_has_stats_elem() { _impl_._oneof_case_[0] = kStatsElem; } inline void Node::clear_stats_elem() { if (_internal_has_stats_elem()) { if (GetArenaForAllocation() == 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 (_internal_has_stats_elem()) { clear_has_node(); ::pg_query::StatsElem* temp = _impl_.node_.stats_elem_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.stats_elem_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::StatsElem& Node::_internal_stats_elem() const { return _internal_has_stats_elem() ? *_impl_.node_.stats_elem_ : reinterpret_cast< ::pg_query::StatsElem&>(::pg_query::_StatsElem_default_instance_); } inline const ::pg_query::StatsElem& Node::stats_elem() const { // @@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 (_internal_has_stats_elem()) { clear_has_node(); ::pg_query::StatsElem* 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* stats_elem) { clear_node(); if (stats_elem) { set_has_stats_elem(); _impl_.node_.stats_elem_ = stats_elem; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.stats_elem) } inline ::pg_query::StatsElem* Node::_internal_mutable_stats_elem() { if (!_internal_has_stats_elem()) { clear_node(); set_has_stats_elem(); _impl_.node_.stats_elem_ = CreateMaybeMessage< ::pg_query::StatsElem >(GetArenaForAllocation()); } return _impl_.node_.stats_elem_; } inline ::pg_query::StatsElem* Node::mutable_stats_elem() { ::pg_query::StatsElem* _msg = _internal_mutable_stats_elem(); // @@protoc_insertion_point(field_mutable:pg_query.Node.stats_elem) return _msg; } // .pg_query.Constraint constraint = 194 [json_name = "Constraint"]; inline bool Node::_internal_has_constraint() const { return node_case() == kConstraint; } inline bool Node::has_constraint() const { return _internal_has_constraint(); } inline void Node::set_has_constraint() { _impl_._oneof_case_[0] = kConstraint; } inline void Node::clear_constraint() { if (_internal_has_constraint()) { if (GetArenaForAllocation() == 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 (_internal_has_constraint()) { clear_has_node(); ::pg_query::Constraint* temp = _impl_.node_.constraint_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.constraint_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Constraint& Node::_internal_constraint() const { return _internal_has_constraint() ? *_impl_.node_.constraint_ : reinterpret_cast< ::pg_query::Constraint&>(::pg_query::_Constraint_default_instance_); } inline const ::pg_query::Constraint& Node::constraint() const { // @@protoc_insertion_point(field_get:pg_query.Node.constraint) return _internal_constraint(); } inline ::pg_query::Constraint* Node::unsafe_arena_release_constraint() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.constraint) if (_internal_has_constraint()) { clear_has_node(); ::pg_query::Constraint* temp = _impl_.node_.constraint_; _impl_.node_.constraint_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_constraint(::pg_query::Constraint* constraint) { clear_node(); if (constraint) { set_has_constraint(); _impl_.node_.constraint_ = constraint; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.constraint) } inline ::pg_query::Constraint* Node::_internal_mutable_constraint() { if (!_internal_has_constraint()) { clear_node(); set_has_constraint(); _impl_.node_.constraint_ = CreateMaybeMessage< ::pg_query::Constraint >(GetArenaForAllocation()); } return _impl_.node_.constraint_; } inline ::pg_query::Constraint* Node::mutable_constraint() { ::pg_query::Constraint* _msg = _internal_mutable_constraint(); // @@protoc_insertion_point(field_mutable:pg_query.Node.constraint) return _msg; } // .pg_query.DefElem def_elem = 195 [json_name = "DefElem"]; inline bool Node::_internal_has_def_elem() const { return node_case() == kDefElem; } inline bool Node::has_def_elem() const { return _internal_has_def_elem(); } inline void Node::set_has_def_elem() { _impl_._oneof_case_[0] = kDefElem; } inline void Node::clear_def_elem() { if (_internal_has_def_elem()) { if (GetArenaForAllocation() == 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 (_internal_has_def_elem()) { clear_has_node(); ::pg_query::DefElem* temp = _impl_.node_.def_elem_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.def_elem_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DefElem& Node::_internal_def_elem() const { return _internal_has_def_elem() ? *_impl_.node_.def_elem_ : reinterpret_cast< ::pg_query::DefElem&>(::pg_query::_DefElem_default_instance_); } inline const ::pg_query::DefElem& Node::def_elem() const { // @@protoc_insertion_point(field_get:pg_query.Node.def_elem) return _internal_def_elem(); } inline ::pg_query::DefElem* Node::unsafe_arena_release_def_elem() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.def_elem) if (_internal_has_def_elem()) { clear_has_node(); ::pg_query::DefElem* temp = _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* def_elem) { clear_node(); if (def_elem) { set_has_def_elem(); _impl_.node_.def_elem_ = def_elem; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.def_elem) } inline ::pg_query::DefElem* Node::_internal_mutable_def_elem() { if (!_internal_has_def_elem()) { clear_node(); set_has_def_elem(); _impl_.node_.def_elem_ = CreateMaybeMessage< ::pg_query::DefElem >(GetArenaForAllocation()); } return _impl_.node_.def_elem_; } inline ::pg_query::DefElem* Node::mutable_def_elem() { ::pg_query::DefElem* _msg = _internal_mutable_def_elem(); // @@protoc_insertion_point(field_mutable:pg_query.Node.def_elem) return _msg; } // .pg_query.RangeTblEntry range_tbl_entry = 196 [json_name = "RangeTblEntry"]; inline bool Node::_internal_has_range_tbl_entry() const { return node_case() == kRangeTblEntry; } inline bool Node::has_range_tbl_entry() const { return _internal_has_range_tbl_entry(); } inline void Node::set_has_range_tbl_entry() { _impl_._oneof_case_[0] = kRangeTblEntry; } inline void Node::clear_range_tbl_entry() { if (_internal_has_range_tbl_entry()) { if (GetArenaForAllocation() == 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 (_internal_has_range_tbl_entry()) { clear_has_node(); ::pg_query::RangeTblEntry* temp = _impl_.node_.range_tbl_entry_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_range_tbl_entry() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.range_tbl_entry) return _internal_range_tbl_entry(); } inline ::pg_query::RangeTblEntry* Node::unsafe_arena_release_range_tbl_entry() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_tbl_entry) if (_internal_has_range_tbl_entry()) { clear_has_node(); ::pg_query::RangeTblEntry* temp = _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* range_tbl_entry) { clear_node(); if (range_tbl_entry) { set_has_range_tbl_entry(); _impl_.node_.range_tbl_entry_ = range_tbl_entry; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_tbl_entry) } inline ::pg_query::RangeTblEntry* Node::_internal_mutable_range_tbl_entry() { if (!_internal_has_range_tbl_entry()) { clear_node(); set_has_range_tbl_entry(); _impl_.node_.range_tbl_entry_ = CreateMaybeMessage< ::pg_query::RangeTblEntry >(GetArenaForAllocation()); } return _impl_.node_.range_tbl_entry_; } inline ::pg_query::RangeTblEntry* Node::mutable_range_tbl_entry() { ::pg_query::RangeTblEntry* _msg = _internal_mutable_range_tbl_entry(); // @@protoc_insertion_point(field_mutable:pg_query.Node.range_tbl_entry) return _msg; } // .pg_query.RangeTblFunction range_tbl_function = 197 [json_name = "RangeTblFunction"]; inline bool Node::_internal_has_range_tbl_function() const { return node_case() == kRangeTblFunction; } inline bool Node::has_range_tbl_function() const { return _internal_has_range_tbl_function(); } inline void Node::set_has_range_tbl_function() { _impl_._oneof_case_[0] = kRangeTblFunction; } inline void Node::clear_range_tbl_function() { if (_internal_has_range_tbl_function()) { if (GetArenaForAllocation() == 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 (_internal_has_range_tbl_function()) { clear_has_node(); ::pg_query::RangeTblFunction* temp = _impl_.node_.range_tbl_function_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_range_tbl_function() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.range_tbl_function) return _internal_range_tbl_function(); } inline ::pg_query::RangeTblFunction* Node::unsafe_arena_release_range_tbl_function() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_tbl_function) if (_internal_has_range_tbl_function()) { clear_has_node(); ::pg_query::RangeTblFunction* temp = _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* range_tbl_function) { clear_node(); if (range_tbl_function) { set_has_range_tbl_function(); _impl_.node_.range_tbl_function_ = range_tbl_function; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_tbl_function) } inline ::pg_query::RangeTblFunction* Node::_internal_mutable_range_tbl_function() { if (!_internal_has_range_tbl_function()) { clear_node(); set_has_range_tbl_function(); _impl_.node_.range_tbl_function_ = CreateMaybeMessage< ::pg_query::RangeTblFunction >(GetArenaForAllocation()); } return _impl_.node_.range_tbl_function_; } inline ::pg_query::RangeTblFunction* Node::mutable_range_tbl_function() { ::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 = 198 [json_name = "TableSampleClause"]; inline bool Node::_internal_has_table_sample_clause() const { return node_case() == kTableSampleClause; } inline bool Node::has_table_sample_clause() const { return _internal_has_table_sample_clause(); } inline void Node::set_has_table_sample_clause() { _impl_._oneof_case_[0] = kTableSampleClause; } inline void Node::clear_table_sample_clause() { if (_internal_has_table_sample_clause()) { if (GetArenaForAllocation() == 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 (_internal_has_table_sample_clause()) { clear_has_node(); ::pg_query::TableSampleClause* temp = _impl_.node_.table_sample_clause_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_table_sample_clause() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.table_sample_clause) return _internal_table_sample_clause(); } inline ::pg_query::TableSampleClause* Node::unsafe_arena_release_table_sample_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.table_sample_clause) if (_internal_has_table_sample_clause()) { clear_has_node(); ::pg_query::TableSampleClause* temp = _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* table_sample_clause) { clear_node(); if (table_sample_clause) { set_has_table_sample_clause(); _impl_.node_.table_sample_clause_ = table_sample_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.table_sample_clause) } inline ::pg_query::TableSampleClause* Node::_internal_mutable_table_sample_clause() { if (!_internal_has_table_sample_clause()) { clear_node(); set_has_table_sample_clause(); _impl_.node_.table_sample_clause_ = CreateMaybeMessage< ::pg_query::TableSampleClause >(GetArenaForAllocation()); } return _impl_.node_.table_sample_clause_; } inline ::pg_query::TableSampleClause* Node::mutable_table_sample_clause() { ::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 = 199 [json_name = "WithCheckOption"]; inline bool Node::_internal_has_with_check_option() const { return node_case() == kWithCheckOption; } inline bool Node::has_with_check_option() const { return _internal_has_with_check_option(); } inline void Node::set_has_with_check_option() { _impl_._oneof_case_[0] = kWithCheckOption; } inline void Node::clear_with_check_option() { if (_internal_has_with_check_option()) { if (GetArenaForAllocation() == 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 (_internal_has_with_check_option()) { clear_has_node(); ::pg_query::WithCheckOption* temp = _impl_.node_.with_check_option_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_with_check_option() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.with_check_option) return _internal_with_check_option(); } inline ::pg_query::WithCheckOption* Node::unsafe_arena_release_with_check_option() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.with_check_option) if (_internal_has_with_check_option()) { clear_has_node(); ::pg_query::WithCheckOption* temp = _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* with_check_option) { clear_node(); if (with_check_option) { set_has_with_check_option(); _impl_.node_.with_check_option_ = with_check_option; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.with_check_option) } inline ::pg_query::WithCheckOption* Node::_internal_mutable_with_check_option() { if (!_internal_has_with_check_option()) { clear_node(); set_has_with_check_option(); _impl_.node_.with_check_option_ = CreateMaybeMessage< ::pg_query::WithCheckOption >(GetArenaForAllocation()); } return _impl_.node_.with_check_option_; } inline ::pg_query::WithCheckOption* Node::mutable_with_check_option() { ::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 = 200 [json_name = "SortGroupClause"]; inline bool Node::_internal_has_sort_group_clause() const { return node_case() == kSortGroupClause; } inline bool Node::has_sort_group_clause() const { return _internal_has_sort_group_clause(); } inline void Node::set_has_sort_group_clause() { _impl_._oneof_case_[0] = kSortGroupClause; } inline void Node::clear_sort_group_clause() { if (_internal_has_sort_group_clause()) { if (GetArenaForAllocation() == 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 (_internal_has_sort_group_clause()) { clear_has_node(); ::pg_query::SortGroupClause* temp = _impl_.node_.sort_group_clause_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_sort_group_clause() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.sort_group_clause) return _internal_sort_group_clause(); } inline ::pg_query::SortGroupClause* Node::unsafe_arena_release_sort_group_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sort_group_clause) if (_internal_has_sort_group_clause()) { clear_has_node(); ::pg_query::SortGroupClause* temp = _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* sort_group_clause) { clear_node(); if (sort_group_clause) { set_has_sort_group_clause(); _impl_.node_.sort_group_clause_ = sort_group_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sort_group_clause) } inline ::pg_query::SortGroupClause* Node::_internal_mutable_sort_group_clause() { if (!_internal_has_sort_group_clause()) { clear_node(); set_has_sort_group_clause(); _impl_.node_.sort_group_clause_ = CreateMaybeMessage< ::pg_query::SortGroupClause >(GetArenaForAllocation()); } return _impl_.node_.sort_group_clause_; } inline ::pg_query::SortGroupClause* Node::mutable_sort_group_clause() { ::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 = 201 [json_name = "GroupingSet"]; inline bool Node::_internal_has_grouping_set() const { return node_case() == kGroupingSet; } inline bool Node::has_grouping_set() const { return _internal_has_grouping_set(); } inline void Node::set_has_grouping_set() { _impl_._oneof_case_[0] = kGroupingSet; } inline void Node::clear_grouping_set() { if (_internal_has_grouping_set()) { if (GetArenaForAllocation() == 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 (_internal_has_grouping_set()) { clear_has_node(); ::pg_query::GroupingSet* temp = _impl_.node_.grouping_set_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.grouping_set_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::GroupingSet& Node::_internal_grouping_set() const { return _internal_has_grouping_set() ? *_impl_.node_.grouping_set_ : reinterpret_cast< ::pg_query::GroupingSet&>(::pg_query::_GroupingSet_default_instance_); } inline const ::pg_query::GroupingSet& Node::grouping_set() const { // @@protoc_insertion_point(field_get:pg_query.Node.grouping_set) return _internal_grouping_set(); } inline ::pg_query::GroupingSet* Node::unsafe_arena_release_grouping_set() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.grouping_set) if (_internal_has_grouping_set()) { clear_has_node(); ::pg_query::GroupingSet* temp = _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* grouping_set) { clear_node(); if (grouping_set) { set_has_grouping_set(); _impl_.node_.grouping_set_ = grouping_set; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.grouping_set) } inline ::pg_query::GroupingSet* Node::_internal_mutable_grouping_set() { if (!_internal_has_grouping_set()) { clear_node(); set_has_grouping_set(); _impl_.node_.grouping_set_ = CreateMaybeMessage< ::pg_query::GroupingSet >(GetArenaForAllocation()); } return _impl_.node_.grouping_set_; } inline ::pg_query::GroupingSet* Node::mutable_grouping_set() { ::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 = 202 [json_name = "WindowClause"]; inline bool Node::_internal_has_window_clause() const { return node_case() == kWindowClause; } inline bool Node::has_window_clause() const { return _internal_has_window_clause(); } inline void Node::set_has_window_clause() { _impl_._oneof_case_[0] = kWindowClause; } inline void Node::clear_window_clause() { if (_internal_has_window_clause()) { if (GetArenaForAllocation() == 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 (_internal_has_window_clause()) { clear_has_node(); ::pg_query::WindowClause* temp = _impl_.node_.window_clause_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.window_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::WindowClause& Node::_internal_window_clause() const { return _internal_has_window_clause() ? *_impl_.node_.window_clause_ : reinterpret_cast< ::pg_query::WindowClause&>(::pg_query::_WindowClause_default_instance_); } inline const ::pg_query::WindowClause& Node::window_clause() const { // @@protoc_insertion_point(field_get:pg_query.Node.window_clause) return _internal_window_clause(); } inline ::pg_query::WindowClause* Node::unsafe_arena_release_window_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.window_clause) if (_internal_has_window_clause()) { clear_has_node(); ::pg_query::WindowClause* temp = _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* window_clause) { clear_node(); if (window_clause) { set_has_window_clause(); _impl_.node_.window_clause_ = window_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.window_clause) } inline ::pg_query::WindowClause* Node::_internal_mutable_window_clause() { if (!_internal_has_window_clause()) { clear_node(); set_has_window_clause(); _impl_.node_.window_clause_ = CreateMaybeMessage< ::pg_query::WindowClause >(GetArenaForAllocation()); } return _impl_.node_.window_clause_; } inline ::pg_query::WindowClause* Node::mutable_window_clause() { ::pg_query::WindowClause* _msg = _internal_mutable_window_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.window_clause) return _msg; } // .pg_query.ObjectWithArgs object_with_args = 203 [json_name = "ObjectWithArgs"]; inline bool Node::_internal_has_object_with_args() const { return node_case() == kObjectWithArgs; } inline bool Node::has_object_with_args() const { return _internal_has_object_with_args(); } inline void Node::set_has_object_with_args() { _impl_._oneof_case_[0] = kObjectWithArgs; } inline void Node::clear_object_with_args() { if (_internal_has_object_with_args()) { if (GetArenaForAllocation() == 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 (_internal_has_object_with_args()) { clear_has_node(); ::pg_query::ObjectWithArgs* temp = _impl_.node_.object_with_args_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_object_with_args() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.object_with_args) return _internal_object_with_args(); } inline ::pg_query::ObjectWithArgs* Node::unsafe_arena_release_object_with_args() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.object_with_args) if (_internal_has_object_with_args()) { clear_has_node(); ::pg_query::ObjectWithArgs* temp = _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* object_with_args) { clear_node(); if (object_with_args) { set_has_object_with_args(); _impl_.node_.object_with_args_ = object_with_args; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.object_with_args) } inline ::pg_query::ObjectWithArgs* Node::_internal_mutable_object_with_args() { if (!_internal_has_object_with_args()) { clear_node(); set_has_object_with_args(); _impl_.node_.object_with_args_ = CreateMaybeMessage< ::pg_query::ObjectWithArgs >(GetArenaForAllocation()); } return _impl_.node_.object_with_args_; } inline ::pg_query::ObjectWithArgs* Node::mutable_object_with_args() { ::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 = 204 [json_name = "AccessPriv"]; inline bool Node::_internal_has_access_priv() const { return node_case() == kAccessPriv; } inline bool Node::has_access_priv() const { return _internal_has_access_priv(); } inline void Node::set_has_access_priv() { _impl_._oneof_case_[0] = kAccessPriv; } inline void Node::clear_access_priv() { if (_internal_has_access_priv()) { if (GetArenaForAllocation() == 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 (_internal_has_access_priv()) { clear_has_node(); ::pg_query::AccessPriv* temp = _impl_.node_.access_priv_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.access_priv_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AccessPriv& Node::_internal_access_priv() const { return _internal_has_access_priv() ? *_impl_.node_.access_priv_ : reinterpret_cast< ::pg_query::AccessPriv&>(::pg_query::_AccessPriv_default_instance_); } inline const ::pg_query::AccessPriv& Node::access_priv() const { // @@protoc_insertion_point(field_get:pg_query.Node.access_priv) return _internal_access_priv(); } inline ::pg_query::AccessPriv* Node::unsafe_arena_release_access_priv() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.access_priv) if (_internal_has_access_priv()) { clear_has_node(); ::pg_query::AccessPriv* temp = _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* access_priv) { clear_node(); if (access_priv) { set_has_access_priv(); _impl_.node_.access_priv_ = access_priv; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.access_priv) } inline ::pg_query::AccessPriv* Node::_internal_mutable_access_priv() { if (!_internal_has_access_priv()) { clear_node(); set_has_access_priv(); _impl_.node_.access_priv_ = CreateMaybeMessage< ::pg_query::AccessPriv >(GetArenaForAllocation()); } return _impl_.node_.access_priv_; } inline ::pg_query::AccessPriv* Node::mutable_access_priv() { ::pg_query::AccessPriv* _msg = _internal_mutable_access_priv(); // @@protoc_insertion_point(field_mutable:pg_query.Node.access_priv) return _msg; } // .pg_query.CreateOpClassItem create_op_class_item = 205 [json_name = "CreateOpClassItem"]; inline bool Node::_internal_has_create_op_class_item() const { return node_case() == kCreateOpClassItem; } inline bool Node::has_create_op_class_item() const { return _internal_has_create_op_class_item(); } inline void Node::set_has_create_op_class_item() { _impl_._oneof_case_[0] = kCreateOpClassItem; } inline void Node::clear_create_op_class_item() { if (_internal_has_create_op_class_item()) { if (GetArenaForAllocation() == 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 (_internal_has_create_op_class_item()) { clear_has_node(); ::pg_query::CreateOpClassItem* temp = _impl_.node_.create_op_class_item_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_create_op_class_item() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.create_op_class_item) return _internal_create_op_class_item(); } inline ::pg_query::CreateOpClassItem* Node::unsafe_arena_release_create_op_class_item() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_op_class_item) if (_internal_has_create_op_class_item()) { clear_has_node(); ::pg_query::CreateOpClassItem* temp = _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* create_op_class_item) { clear_node(); if (create_op_class_item) { set_has_create_op_class_item(); _impl_.node_.create_op_class_item_ = create_op_class_item; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_op_class_item) } inline ::pg_query::CreateOpClassItem* Node::_internal_mutable_create_op_class_item() { if (!_internal_has_create_op_class_item()) { clear_node(); set_has_create_op_class_item(); _impl_.node_.create_op_class_item_ = CreateMaybeMessage< ::pg_query::CreateOpClassItem >(GetArenaForAllocation()); } return _impl_.node_.create_op_class_item_; } inline ::pg_query::CreateOpClassItem* Node::mutable_create_op_class_item() { ::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.TableLikeClause table_like_clause = 206 [json_name = "TableLikeClause"]; inline bool Node::_internal_has_table_like_clause() const { return node_case() == kTableLikeClause; } inline bool Node::has_table_like_clause() const { return _internal_has_table_like_clause(); } inline void Node::set_has_table_like_clause() { _impl_._oneof_case_[0] = kTableLikeClause; } inline void Node::clear_table_like_clause() { if (_internal_has_table_like_clause()) { if (GetArenaForAllocation() == 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 (_internal_has_table_like_clause()) { clear_has_node(); ::pg_query::TableLikeClause* temp = _impl_.node_.table_like_clause_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_table_like_clause() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.table_like_clause) return _internal_table_like_clause(); } inline ::pg_query::TableLikeClause* Node::unsafe_arena_release_table_like_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.table_like_clause) if (_internal_has_table_like_clause()) { clear_has_node(); ::pg_query::TableLikeClause* temp = _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* table_like_clause) { clear_node(); if (table_like_clause) { set_has_table_like_clause(); _impl_.node_.table_like_clause_ = table_like_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.table_like_clause) } inline ::pg_query::TableLikeClause* Node::_internal_mutable_table_like_clause() { if (!_internal_has_table_like_clause()) { clear_node(); set_has_table_like_clause(); _impl_.node_.table_like_clause_ = CreateMaybeMessage< ::pg_query::TableLikeClause >(GetArenaForAllocation()); } return _impl_.node_.table_like_clause_; } inline ::pg_query::TableLikeClause* Node::mutable_table_like_clause() { ::pg_query::TableLikeClause* _msg = _internal_mutable_table_like_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.table_like_clause) return _msg; } // .pg_query.FunctionParameter function_parameter = 207 [json_name = "FunctionParameter"]; inline bool Node::_internal_has_function_parameter() const { return node_case() == kFunctionParameter; } inline bool Node::has_function_parameter() const { return _internal_has_function_parameter(); } inline void Node::set_has_function_parameter() { _impl_._oneof_case_[0] = kFunctionParameter; } inline void Node::clear_function_parameter() { if (_internal_has_function_parameter()) { if (GetArenaForAllocation() == 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 (_internal_has_function_parameter()) { clear_has_node(); ::pg_query::FunctionParameter* temp = _impl_.node_.function_parameter_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.function_parameter_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FunctionParameter& Node::_internal_function_parameter() const { return _internal_has_function_parameter() ? *_impl_.node_.function_parameter_ : reinterpret_cast< ::pg_query::FunctionParameter&>(::pg_query::_FunctionParameter_default_instance_); } inline const ::pg_query::FunctionParameter& Node::function_parameter() const { // @@protoc_insertion_point(field_get:pg_query.Node.function_parameter) return _internal_function_parameter(); } inline ::pg_query::FunctionParameter* Node::unsafe_arena_release_function_parameter() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.function_parameter) if (_internal_has_function_parameter()) { clear_has_node(); ::pg_query::FunctionParameter* temp = _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* function_parameter) { clear_node(); if (function_parameter) { set_has_function_parameter(); _impl_.node_.function_parameter_ = function_parameter; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.function_parameter) } inline ::pg_query::FunctionParameter* Node::_internal_mutable_function_parameter() { if (!_internal_has_function_parameter()) { clear_node(); set_has_function_parameter(); _impl_.node_.function_parameter_ = CreateMaybeMessage< ::pg_query::FunctionParameter >(GetArenaForAllocation()); } return _impl_.node_.function_parameter_; } inline ::pg_query::FunctionParameter* Node::mutable_function_parameter() { ::pg_query::FunctionParameter* _msg = _internal_mutable_function_parameter(); // @@protoc_insertion_point(field_mutable:pg_query.Node.function_parameter) return _msg; } // .pg_query.LockingClause locking_clause = 208 [json_name = "LockingClause"]; inline bool Node::_internal_has_locking_clause() const { return node_case() == kLockingClause; } inline bool Node::has_locking_clause() const { return _internal_has_locking_clause(); } inline void Node::set_has_locking_clause() { _impl_._oneof_case_[0] = kLockingClause; } inline void Node::clear_locking_clause() { if (_internal_has_locking_clause()) { if (GetArenaForAllocation() == 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 (_internal_has_locking_clause()) { clear_has_node(); ::pg_query::LockingClause* temp = _impl_.node_.locking_clause_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.locking_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::LockingClause& Node::_internal_locking_clause() const { return _internal_has_locking_clause() ? *_impl_.node_.locking_clause_ : reinterpret_cast< ::pg_query::LockingClause&>(::pg_query::_LockingClause_default_instance_); } inline const ::pg_query::LockingClause& Node::locking_clause() const { // @@protoc_insertion_point(field_get:pg_query.Node.locking_clause) return _internal_locking_clause(); } inline ::pg_query::LockingClause* Node::unsafe_arena_release_locking_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.locking_clause) if (_internal_has_locking_clause()) { clear_has_node(); ::pg_query::LockingClause* temp = _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* locking_clause) { clear_node(); if (locking_clause) { set_has_locking_clause(); _impl_.node_.locking_clause_ = locking_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.locking_clause) } inline ::pg_query::LockingClause* Node::_internal_mutable_locking_clause() { if (!_internal_has_locking_clause()) { clear_node(); set_has_locking_clause(); _impl_.node_.locking_clause_ = CreateMaybeMessage< ::pg_query::LockingClause >(GetArenaForAllocation()); } return _impl_.node_.locking_clause_; } inline ::pg_query::LockingClause* Node::mutable_locking_clause() { ::pg_query::LockingClause* _msg = _internal_mutable_locking_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.locking_clause) return _msg; } // .pg_query.RowMarkClause row_mark_clause = 209 [json_name = "RowMarkClause"]; inline bool Node::_internal_has_row_mark_clause() const { return node_case() == kRowMarkClause; } inline bool Node::has_row_mark_clause() const { return _internal_has_row_mark_clause(); } inline void Node::set_has_row_mark_clause() { _impl_._oneof_case_[0] = kRowMarkClause; } inline void Node::clear_row_mark_clause() { if (_internal_has_row_mark_clause()) { if (GetArenaForAllocation() == 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 (_internal_has_row_mark_clause()) { clear_has_node(); ::pg_query::RowMarkClause* temp = _impl_.node_.row_mark_clause_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_row_mark_clause() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.row_mark_clause) return _internal_row_mark_clause(); } inline ::pg_query::RowMarkClause* Node::unsafe_arena_release_row_mark_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.row_mark_clause) if (_internal_has_row_mark_clause()) { clear_has_node(); ::pg_query::RowMarkClause* temp = _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* row_mark_clause) { clear_node(); if (row_mark_clause) { set_has_row_mark_clause(); _impl_.node_.row_mark_clause_ = row_mark_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.row_mark_clause) } inline ::pg_query::RowMarkClause* Node::_internal_mutable_row_mark_clause() { if (!_internal_has_row_mark_clause()) { clear_node(); set_has_row_mark_clause(); _impl_.node_.row_mark_clause_ = CreateMaybeMessage< ::pg_query::RowMarkClause >(GetArenaForAllocation()); } return _impl_.node_.row_mark_clause_; } inline ::pg_query::RowMarkClause* Node::mutable_row_mark_clause() { ::pg_query::RowMarkClause* _msg = _internal_mutable_row_mark_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.row_mark_clause) return _msg; } // .pg_query.XmlSerialize xml_serialize = 210 [json_name = "XmlSerialize"]; inline bool Node::_internal_has_xml_serialize() const { return node_case() == kXmlSerialize; } inline bool Node::has_xml_serialize() const { return _internal_has_xml_serialize(); } inline void Node::set_has_xml_serialize() { _impl_._oneof_case_[0] = kXmlSerialize; } inline void Node::clear_xml_serialize() { if (_internal_has_xml_serialize()) { if (GetArenaForAllocation() == 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 (_internal_has_xml_serialize()) { clear_has_node(); ::pg_query::XmlSerialize* temp = _impl_.node_.xml_serialize_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.xml_serialize_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::XmlSerialize& Node::_internal_xml_serialize() const { return _internal_has_xml_serialize() ? *_impl_.node_.xml_serialize_ : reinterpret_cast< ::pg_query::XmlSerialize&>(::pg_query::_XmlSerialize_default_instance_); } inline const ::pg_query::XmlSerialize& Node::xml_serialize() const { // @@protoc_insertion_point(field_get:pg_query.Node.xml_serialize) return _internal_xml_serialize(); } inline ::pg_query::XmlSerialize* Node::unsafe_arena_release_xml_serialize() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.xml_serialize) if (_internal_has_xml_serialize()) { clear_has_node(); ::pg_query::XmlSerialize* temp = _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* xml_serialize) { clear_node(); if (xml_serialize) { set_has_xml_serialize(); _impl_.node_.xml_serialize_ = xml_serialize; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.xml_serialize) } inline ::pg_query::XmlSerialize* Node::_internal_mutable_xml_serialize() { if (!_internal_has_xml_serialize()) { clear_node(); set_has_xml_serialize(); _impl_.node_.xml_serialize_ = CreateMaybeMessage< ::pg_query::XmlSerialize >(GetArenaForAllocation()); } return _impl_.node_.xml_serialize_; } inline ::pg_query::XmlSerialize* Node::mutable_xml_serialize() { ::pg_query::XmlSerialize* _msg = _internal_mutable_xml_serialize(); // @@protoc_insertion_point(field_mutable:pg_query.Node.xml_serialize) return _msg; } // .pg_query.WithClause with_clause = 211 [json_name = "WithClause"]; inline bool Node::_internal_has_with_clause() const { return node_case() == kWithClause; } inline bool Node::has_with_clause() const { return _internal_has_with_clause(); } inline void Node::set_has_with_clause() { _impl_._oneof_case_[0] = kWithClause; } inline void Node::clear_with_clause() { if (_internal_has_with_clause()) { if (GetArenaForAllocation() == 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 (_internal_has_with_clause()) { clear_has_node(); ::pg_query::WithClause* temp = _impl_.node_.with_clause_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.with_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::WithClause& Node::_internal_with_clause() const { return _internal_has_with_clause() ? *_impl_.node_.with_clause_ : reinterpret_cast< ::pg_query::WithClause&>(::pg_query::_WithClause_default_instance_); } inline const ::pg_query::WithClause& Node::with_clause() const { // @@protoc_insertion_point(field_get:pg_query.Node.with_clause) return _internal_with_clause(); } inline ::pg_query::WithClause* Node::unsafe_arena_release_with_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.with_clause) if (_internal_has_with_clause()) { clear_has_node(); ::pg_query::WithClause* temp = _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* with_clause) { clear_node(); if (with_clause) { set_has_with_clause(); _impl_.node_.with_clause_ = with_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.with_clause) } inline ::pg_query::WithClause* Node::_internal_mutable_with_clause() { if (!_internal_has_with_clause()) { clear_node(); set_has_with_clause(); _impl_.node_.with_clause_ = CreateMaybeMessage< ::pg_query::WithClause >(GetArenaForAllocation()); } return _impl_.node_.with_clause_; } inline ::pg_query::WithClause* Node::mutable_with_clause() { ::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 = 212 [json_name = "InferClause"]; inline bool Node::_internal_has_infer_clause() const { return node_case() == kInferClause; } inline bool Node::has_infer_clause() const { return _internal_has_infer_clause(); } inline void Node::set_has_infer_clause() { _impl_._oneof_case_[0] = kInferClause; } inline void Node::clear_infer_clause() { if (_internal_has_infer_clause()) { if (GetArenaForAllocation() == 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 (_internal_has_infer_clause()) { clear_has_node(); ::pg_query::InferClause* temp = _impl_.node_.infer_clause_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.infer_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::InferClause& Node::_internal_infer_clause() const { return _internal_has_infer_clause() ? *_impl_.node_.infer_clause_ : reinterpret_cast< ::pg_query::InferClause&>(::pg_query::_InferClause_default_instance_); } inline const ::pg_query::InferClause& Node::infer_clause() const { // @@protoc_insertion_point(field_get:pg_query.Node.infer_clause) return _internal_infer_clause(); } inline ::pg_query::InferClause* Node::unsafe_arena_release_infer_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.infer_clause) if (_internal_has_infer_clause()) { clear_has_node(); ::pg_query::InferClause* temp = _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* infer_clause) { clear_node(); if (infer_clause) { set_has_infer_clause(); _impl_.node_.infer_clause_ = infer_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.infer_clause) } inline ::pg_query::InferClause* Node::_internal_mutable_infer_clause() { if (!_internal_has_infer_clause()) { clear_node(); set_has_infer_clause(); _impl_.node_.infer_clause_ = CreateMaybeMessage< ::pg_query::InferClause >(GetArenaForAllocation()); } return _impl_.node_.infer_clause_; } inline ::pg_query::InferClause* Node::mutable_infer_clause() { ::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 = 213 [json_name = "OnConflictClause"]; inline bool Node::_internal_has_on_conflict_clause() const { return node_case() == kOnConflictClause; } inline bool Node::has_on_conflict_clause() const { return _internal_has_on_conflict_clause(); } inline void Node::set_has_on_conflict_clause() { _impl_._oneof_case_[0] = kOnConflictClause; } inline void Node::clear_on_conflict_clause() { if (_internal_has_on_conflict_clause()) { if (GetArenaForAllocation() == 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 (_internal_has_on_conflict_clause()) { clear_has_node(); ::pg_query::OnConflictClause* temp = _impl_.node_.on_conflict_clause_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_on_conflict_clause() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.on_conflict_clause) return _internal_on_conflict_clause(); } inline ::pg_query::OnConflictClause* Node::unsafe_arena_release_on_conflict_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.on_conflict_clause) if (_internal_has_on_conflict_clause()) { clear_has_node(); ::pg_query::OnConflictClause* temp = _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* on_conflict_clause) { clear_node(); if (on_conflict_clause) { set_has_on_conflict_clause(); _impl_.node_.on_conflict_clause_ = on_conflict_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.on_conflict_clause) } inline ::pg_query::OnConflictClause* Node::_internal_mutable_on_conflict_clause() { if (!_internal_has_on_conflict_clause()) { clear_node(); set_has_on_conflict_clause(); _impl_.node_.on_conflict_clause_ = CreateMaybeMessage< ::pg_query::OnConflictClause >(GetArenaForAllocation()); } return _impl_.node_.on_conflict_clause_; } inline ::pg_query::OnConflictClause* Node::mutable_on_conflict_clause() { ::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 = 214 [json_name = "CTESearchClause"]; inline bool Node::_internal_has_ctesearch_clause() const { return node_case() == kCtesearchClause; } inline bool Node::has_ctesearch_clause() const { return _internal_has_ctesearch_clause(); } inline void Node::set_has_ctesearch_clause() { _impl_._oneof_case_[0] = kCtesearchClause; } inline void Node::clear_ctesearch_clause() { if (_internal_has_ctesearch_clause()) { if (GetArenaForAllocation() == 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 (_internal_has_ctesearch_clause()) { clear_has_node(); ::pg_query::CTESearchClause* temp = _impl_.node_.ctesearch_clause_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.ctesearch_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CTESearchClause& Node::_internal_ctesearch_clause() const { return _internal_has_ctesearch_clause() ? *_impl_.node_.ctesearch_clause_ : reinterpret_cast< ::pg_query::CTESearchClause&>(::pg_query::_CTESearchClause_default_instance_); } inline const ::pg_query::CTESearchClause& Node::ctesearch_clause() const { // @@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 (_internal_has_ctesearch_clause()) { clear_has_node(); ::pg_query::CTESearchClause* 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* ctesearch_clause) { clear_node(); if (ctesearch_clause) { set_has_ctesearch_clause(); _impl_.node_.ctesearch_clause_ = ctesearch_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.ctesearch_clause) } inline ::pg_query::CTESearchClause* Node::_internal_mutable_ctesearch_clause() { if (!_internal_has_ctesearch_clause()) { clear_node(); set_has_ctesearch_clause(); _impl_.node_.ctesearch_clause_ = CreateMaybeMessage< ::pg_query::CTESearchClause >(GetArenaForAllocation()); } return _impl_.node_.ctesearch_clause_; } inline ::pg_query::CTESearchClause* Node::mutable_ctesearch_clause() { ::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 = 215 [json_name = "CTECycleClause"]; inline bool Node::_internal_has_ctecycle_clause() const { return node_case() == kCtecycleClause; } inline bool Node::has_ctecycle_clause() const { return _internal_has_ctecycle_clause(); } inline void Node::set_has_ctecycle_clause() { _impl_._oneof_case_[0] = kCtecycleClause; } inline void Node::clear_ctecycle_clause() { if (_internal_has_ctecycle_clause()) { if (GetArenaForAllocation() == 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 (_internal_has_ctecycle_clause()) { clear_has_node(); ::pg_query::CTECycleClause* temp = _impl_.node_.ctecycle_clause_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.ctecycle_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CTECycleClause& Node::_internal_ctecycle_clause() const { return _internal_has_ctecycle_clause() ? *_impl_.node_.ctecycle_clause_ : reinterpret_cast< ::pg_query::CTECycleClause&>(::pg_query::_CTECycleClause_default_instance_); } inline const ::pg_query::CTECycleClause& Node::ctecycle_clause() const { // @@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 (_internal_has_ctecycle_clause()) { clear_has_node(); ::pg_query::CTECycleClause* 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* ctecycle_clause) { clear_node(); if (ctecycle_clause) { set_has_ctecycle_clause(); _impl_.node_.ctecycle_clause_ = ctecycle_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.ctecycle_clause) } inline ::pg_query::CTECycleClause* Node::_internal_mutable_ctecycle_clause() { if (!_internal_has_ctecycle_clause()) { clear_node(); set_has_ctecycle_clause(); _impl_.node_.ctecycle_clause_ = CreateMaybeMessage< ::pg_query::CTECycleClause >(GetArenaForAllocation()); } return _impl_.node_.ctecycle_clause_; } inline ::pg_query::CTECycleClause* Node::mutable_ctecycle_clause() { ::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 = 216 [json_name = "CommonTableExpr"]; inline bool Node::_internal_has_common_table_expr() const { return node_case() == kCommonTableExpr; } inline bool Node::has_common_table_expr() const { return _internal_has_common_table_expr(); } inline void Node::set_has_common_table_expr() { _impl_._oneof_case_[0] = kCommonTableExpr; } inline void Node::clear_common_table_expr() { if (_internal_has_common_table_expr()) { if (GetArenaForAllocation() == 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 (_internal_has_common_table_expr()) { clear_has_node(); ::pg_query::CommonTableExpr* temp = _impl_.node_.common_table_expr_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_common_table_expr() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.common_table_expr) return _internal_common_table_expr(); } inline ::pg_query::CommonTableExpr* Node::unsafe_arena_release_common_table_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.common_table_expr) if (_internal_has_common_table_expr()) { clear_has_node(); ::pg_query::CommonTableExpr* temp = _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* common_table_expr) { clear_node(); if (common_table_expr) { set_has_common_table_expr(); _impl_.node_.common_table_expr_ = common_table_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.common_table_expr) } inline ::pg_query::CommonTableExpr* Node::_internal_mutable_common_table_expr() { if (!_internal_has_common_table_expr()) { clear_node(); set_has_common_table_expr(); _impl_.node_.common_table_expr_ = CreateMaybeMessage< ::pg_query::CommonTableExpr >(GetArenaForAllocation()); } return _impl_.node_.common_table_expr_; } inline ::pg_query::CommonTableExpr* Node::mutable_common_table_expr() { ::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 = 217 [json_name = "MergeWhenClause"]; inline bool Node::_internal_has_merge_when_clause() const { return node_case() == kMergeWhenClause; } inline bool Node::has_merge_when_clause() const { return _internal_has_merge_when_clause(); } inline void Node::set_has_merge_when_clause() { _impl_._oneof_case_[0] = kMergeWhenClause; } inline void Node::clear_merge_when_clause() { if (_internal_has_merge_when_clause()) { if (GetArenaForAllocation() == 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 (_internal_has_merge_when_clause()) { clear_has_node(); ::pg_query::MergeWhenClause* temp = _impl_.node_.merge_when_clause_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_merge_when_clause() ? *_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 { // @@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 (_internal_has_merge_when_clause()) { clear_has_node(); ::pg_query::MergeWhenClause* 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* merge_when_clause) { clear_node(); if (merge_when_clause) { set_has_merge_when_clause(); _impl_.node_.merge_when_clause_ = merge_when_clause; } // @@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 (!_internal_has_merge_when_clause()) { clear_node(); set_has_merge_when_clause(); _impl_.node_.merge_when_clause_ = CreateMaybeMessage< ::pg_query::MergeWhenClause >(GetArenaForAllocation()); } return _impl_.node_.merge_when_clause_; } inline ::pg_query::MergeWhenClause* Node::mutable_merge_when_clause() { ::pg_query::MergeWhenClause* _msg = _internal_mutable_merge_when_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.merge_when_clause) return _msg; } // .pg_query.RoleSpec role_spec = 218 [json_name = "RoleSpec"]; inline bool Node::_internal_has_role_spec() const { return node_case() == kRoleSpec; } inline bool Node::has_role_spec() const { return _internal_has_role_spec(); } inline void Node::set_has_role_spec() { _impl_._oneof_case_[0] = kRoleSpec; } inline void Node::clear_role_spec() { if (_internal_has_role_spec()) { if (GetArenaForAllocation() == 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 (_internal_has_role_spec()) { clear_has_node(); ::pg_query::RoleSpec* temp = _impl_.node_.role_spec_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.role_spec_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RoleSpec& Node::_internal_role_spec() const { return _internal_has_role_spec() ? *_impl_.node_.role_spec_ : reinterpret_cast< ::pg_query::RoleSpec&>(::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& Node::role_spec() const { // @@protoc_insertion_point(field_get:pg_query.Node.role_spec) return _internal_role_spec(); } inline ::pg_query::RoleSpec* Node::unsafe_arena_release_role_spec() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.role_spec) if (_internal_has_role_spec()) { clear_has_node(); ::pg_query::RoleSpec* temp = _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* role_spec) { clear_node(); if (role_spec) { set_has_role_spec(); _impl_.node_.role_spec_ = role_spec; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.role_spec) } inline ::pg_query::RoleSpec* Node::_internal_mutable_role_spec() { if (!_internal_has_role_spec()) { clear_node(); set_has_role_spec(); _impl_.node_.role_spec_ = CreateMaybeMessage< ::pg_query::RoleSpec >(GetArenaForAllocation()); } return _impl_.node_.role_spec_; } inline ::pg_query::RoleSpec* Node::mutable_role_spec() { ::pg_query::RoleSpec* _msg = _internal_mutable_role_spec(); // @@protoc_insertion_point(field_mutable:pg_query.Node.role_spec) return _msg; } // .pg_query.TriggerTransition trigger_transition = 219 [json_name = "TriggerTransition"]; inline bool Node::_internal_has_trigger_transition() const { return node_case() == kTriggerTransition; } inline bool Node::has_trigger_transition() const { return _internal_has_trigger_transition(); } inline void Node::set_has_trigger_transition() { _impl_._oneof_case_[0] = kTriggerTransition; } inline void Node::clear_trigger_transition() { if (_internal_has_trigger_transition()) { if (GetArenaForAllocation() == 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 (_internal_has_trigger_transition()) { clear_has_node(); ::pg_query::TriggerTransition* temp = _impl_.node_.trigger_transition_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.trigger_transition_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TriggerTransition& Node::_internal_trigger_transition() const { return _internal_has_trigger_transition() ? *_impl_.node_.trigger_transition_ : reinterpret_cast< ::pg_query::TriggerTransition&>(::pg_query::_TriggerTransition_default_instance_); } inline const ::pg_query::TriggerTransition& Node::trigger_transition() const { // @@protoc_insertion_point(field_get:pg_query.Node.trigger_transition) return _internal_trigger_transition(); } inline ::pg_query::TriggerTransition* Node::unsafe_arena_release_trigger_transition() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.trigger_transition) if (_internal_has_trigger_transition()) { clear_has_node(); ::pg_query::TriggerTransition* temp = _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* trigger_transition) { clear_node(); if (trigger_transition) { set_has_trigger_transition(); _impl_.node_.trigger_transition_ = trigger_transition; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.trigger_transition) } inline ::pg_query::TriggerTransition* Node::_internal_mutable_trigger_transition() { if (!_internal_has_trigger_transition()) { clear_node(); set_has_trigger_transition(); _impl_.node_.trigger_transition_ = CreateMaybeMessage< ::pg_query::TriggerTransition >(GetArenaForAllocation()); } return _impl_.node_.trigger_transition_; } inline ::pg_query::TriggerTransition* Node::mutable_trigger_transition() { ::pg_query::TriggerTransition* _msg = _internal_mutable_trigger_transition(); // @@protoc_insertion_point(field_mutable:pg_query.Node.trigger_transition) return _msg; } // .pg_query.PartitionElem partition_elem = 220 [json_name = "PartitionElem"]; inline bool Node::_internal_has_partition_elem() const { return node_case() == kPartitionElem; } inline bool Node::has_partition_elem() const { return _internal_has_partition_elem(); } inline void Node::set_has_partition_elem() { _impl_._oneof_case_[0] = kPartitionElem; } inline void Node::clear_partition_elem() { if (_internal_has_partition_elem()) { if (GetArenaForAllocation() == 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 (_internal_has_partition_elem()) { clear_has_node(); ::pg_query::PartitionElem* temp = _impl_.node_.partition_elem_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.partition_elem_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PartitionElem& Node::_internal_partition_elem() const { return _internal_has_partition_elem() ? *_impl_.node_.partition_elem_ : reinterpret_cast< ::pg_query::PartitionElem&>(::pg_query::_PartitionElem_default_instance_); } inline const ::pg_query::PartitionElem& Node::partition_elem() const { // @@protoc_insertion_point(field_get:pg_query.Node.partition_elem) return _internal_partition_elem(); } inline ::pg_query::PartitionElem* Node::unsafe_arena_release_partition_elem() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.partition_elem) if (_internal_has_partition_elem()) { clear_has_node(); ::pg_query::PartitionElem* temp = _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* partition_elem) { clear_node(); if (partition_elem) { set_has_partition_elem(); _impl_.node_.partition_elem_ = partition_elem; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_elem) } inline ::pg_query::PartitionElem* Node::_internal_mutable_partition_elem() { if (!_internal_has_partition_elem()) { clear_node(); set_has_partition_elem(); _impl_.node_.partition_elem_ = CreateMaybeMessage< ::pg_query::PartitionElem >(GetArenaForAllocation()); } return _impl_.node_.partition_elem_; } inline ::pg_query::PartitionElem* Node::mutable_partition_elem() { ::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 = 221 [json_name = "PartitionSpec"]; inline bool Node::_internal_has_partition_spec() const { return node_case() == kPartitionSpec; } inline bool Node::has_partition_spec() const { return _internal_has_partition_spec(); } inline void Node::set_has_partition_spec() { _impl_._oneof_case_[0] = kPartitionSpec; } inline void Node::clear_partition_spec() { if (_internal_has_partition_spec()) { if (GetArenaForAllocation() == 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 (_internal_has_partition_spec()) { clear_has_node(); ::pg_query::PartitionSpec* temp = _impl_.node_.partition_spec_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.partition_spec_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PartitionSpec& Node::_internal_partition_spec() const { return _internal_has_partition_spec() ? *_impl_.node_.partition_spec_ : reinterpret_cast< ::pg_query::PartitionSpec&>(::pg_query::_PartitionSpec_default_instance_); } inline const ::pg_query::PartitionSpec& Node::partition_spec() const { // @@protoc_insertion_point(field_get:pg_query.Node.partition_spec) return _internal_partition_spec(); } inline ::pg_query::PartitionSpec* Node::unsafe_arena_release_partition_spec() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.partition_spec) if (_internal_has_partition_spec()) { clear_has_node(); ::pg_query::PartitionSpec* temp = _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* partition_spec) { clear_node(); if (partition_spec) { set_has_partition_spec(); _impl_.node_.partition_spec_ = partition_spec; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_spec) } inline ::pg_query::PartitionSpec* Node::_internal_mutable_partition_spec() { if (!_internal_has_partition_spec()) { clear_node(); set_has_partition_spec(); _impl_.node_.partition_spec_ = CreateMaybeMessage< ::pg_query::PartitionSpec >(GetArenaForAllocation()); } return _impl_.node_.partition_spec_; } inline ::pg_query::PartitionSpec* Node::mutable_partition_spec() { ::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 = 222 [json_name = "PartitionBoundSpec"]; inline bool Node::_internal_has_partition_bound_spec() const { return node_case() == kPartitionBoundSpec; } inline bool Node::has_partition_bound_spec() const { return _internal_has_partition_bound_spec(); } inline void Node::set_has_partition_bound_spec() { _impl_._oneof_case_[0] = kPartitionBoundSpec; } inline void Node::clear_partition_bound_spec() { if (_internal_has_partition_bound_spec()) { if (GetArenaForAllocation() == 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 (_internal_has_partition_bound_spec()) { clear_has_node(); ::pg_query::PartitionBoundSpec* temp = _impl_.node_.partition_bound_spec_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_partition_bound_spec() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.partition_bound_spec) return _internal_partition_bound_spec(); } inline ::pg_query::PartitionBoundSpec* Node::unsafe_arena_release_partition_bound_spec() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.partition_bound_spec) if (_internal_has_partition_bound_spec()) { clear_has_node(); ::pg_query::PartitionBoundSpec* temp = _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* partition_bound_spec) { clear_node(); if (partition_bound_spec) { set_has_partition_bound_spec(); _impl_.node_.partition_bound_spec_ = partition_bound_spec; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_bound_spec) } inline ::pg_query::PartitionBoundSpec* Node::_internal_mutable_partition_bound_spec() { if (!_internal_has_partition_bound_spec()) { clear_node(); set_has_partition_bound_spec(); _impl_.node_.partition_bound_spec_ = CreateMaybeMessage< ::pg_query::PartitionBoundSpec >(GetArenaForAllocation()); } return _impl_.node_.partition_bound_spec_; } inline ::pg_query::PartitionBoundSpec* Node::mutable_partition_bound_spec() { ::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 = 223 [json_name = "PartitionRangeDatum"]; inline bool Node::_internal_has_partition_range_datum() const { return node_case() == kPartitionRangeDatum; } inline bool Node::has_partition_range_datum() const { return _internal_has_partition_range_datum(); } inline void Node::set_has_partition_range_datum() { _impl_._oneof_case_[0] = kPartitionRangeDatum; } inline void Node::clear_partition_range_datum() { if (_internal_has_partition_range_datum()) { if (GetArenaForAllocation() == 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 (_internal_has_partition_range_datum()) { clear_has_node(); ::pg_query::PartitionRangeDatum* temp = _impl_.node_.partition_range_datum_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_partition_range_datum() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.partition_range_datum) return _internal_partition_range_datum(); } inline ::pg_query::PartitionRangeDatum* Node::unsafe_arena_release_partition_range_datum() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.partition_range_datum) if (_internal_has_partition_range_datum()) { clear_has_node(); ::pg_query::PartitionRangeDatum* temp = _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* partition_range_datum) { clear_node(); if (partition_range_datum) { set_has_partition_range_datum(); _impl_.node_.partition_range_datum_ = partition_range_datum; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_range_datum) } inline ::pg_query::PartitionRangeDatum* Node::_internal_mutable_partition_range_datum() { if (!_internal_has_partition_range_datum()) { clear_node(); set_has_partition_range_datum(); _impl_.node_.partition_range_datum_ = CreateMaybeMessage< ::pg_query::PartitionRangeDatum >(GetArenaForAllocation()); } return _impl_.node_.partition_range_datum_; } inline ::pg_query::PartitionRangeDatum* Node::mutable_partition_range_datum() { ::pg_query::PartitionRangeDatum* _msg = _internal_mutable_partition_range_datum(); // @@protoc_insertion_point(field_mutable:pg_query.Node.partition_range_datum) return _msg; } // .pg_query.PartitionCmd partition_cmd = 224 [json_name = "PartitionCmd"]; inline bool Node::_internal_has_partition_cmd() const { return node_case() == kPartitionCmd; } inline bool Node::has_partition_cmd() const { return _internal_has_partition_cmd(); } inline void Node::set_has_partition_cmd() { _impl_._oneof_case_[0] = kPartitionCmd; } inline void Node::clear_partition_cmd() { if (_internal_has_partition_cmd()) { if (GetArenaForAllocation() == 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 (_internal_has_partition_cmd()) { clear_has_node(); ::pg_query::PartitionCmd* temp = _impl_.node_.partition_cmd_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.partition_cmd_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PartitionCmd& Node::_internal_partition_cmd() const { return _internal_has_partition_cmd() ? *_impl_.node_.partition_cmd_ : reinterpret_cast< ::pg_query::PartitionCmd&>(::pg_query::_PartitionCmd_default_instance_); } inline const ::pg_query::PartitionCmd& Node::partition_cmd() const { // @@protoc_insertion_point(field_get:pg_query.Node.partition_cmd) return _internal_partition_cmd(); } inline ::pg_query::PartitionCmd* Node::unsafe_arena_release_partition_cmd() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.partition_cmd) if (_internal_has_partition_cmd()) { clear_has_node(); ::pg_query::PartitionCmd* temp = _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* partition_cmd) { clear_node(); if (partition_cmd) { set_has_partition_cmd(); _impl_.node_.partition_cmd_ = partition_cmd; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_cmd) } inline ::pg_query::PartitionCmd* Node::_internal_mutable_partition_cmd() { if (!_internal_has_partition_cmd()) { clear_node(); set_has_partition_cmd(); _impl_.node_.partition_cmd_ = CreateMaybeMessage< ::pg_query::PartitionCmd >(GetArenaForAllocation()); } return _impl_.node_.partition_cmd_; } inline ::pg_query::PartitionCmd* Node::mutable_partition_cmd() { ::pg_query::PartitionCmd* _msg = _internal_mutable_partition_cmd(); // @@protoc_insertion_point(field_mutable:pg_query.Node.partition_cmd) return _msg; } // .pg_query.VacuumRelation vacuum_relation = 225 [json_name = "VacuumRelation"]; inline bool Node::_internal_has_vacuum_relation() const { return node_case() == kVacuumRelation; } inline bool Node::has_vacuum_relation() const { return _internal_has_vacuum_relation(); } inline void Node::set_has_vacuum_relation() { _impl_._oneof_case_[0] = kVacuumRelation; } inline void Node::clear_vacuum_relation() { if (_internal_has_vacuum_relation()) { if (GetArenaForAllocation() == 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 (_internal_has_vacuum_relation()) { clear_has_node(); ::pg_query::VacuumRelation* temp = _impl_.node_.vacuum_relation_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.vacuum_relation_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::VacuumRelation& Node::_internal_vacuum_relation() const { return _internal_has_vacuum_relation() ? *_impl_.node_.vacuum_relation_ : reinterpret_cast< ::pg_query::VacuumRelation&>(::pg_query::_VacuumRelation_default_instance_); } inline const ::pg_query::VacuumRelation& Node::vacuum_relation() const { // @@protoc_insertion_point(field_get:pg_query.Node.vacuum_relation) return _internal_vacuum_relation(); } inline ::pg_query::VacuumRelation* Node::unsafe_arena_release_vacuum_relation() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.vacuum_relation) if (_internal_has_vacuum_relation()) { clear_has_node(); ::pg_query::VacuumRelation* temp = _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* vacuum_relation) { clear_node(); if (vacuum_relation) { set_has_vacuum_relation(); _impl_.node_.vacuum_relation_ = vacuum_relation; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.vacuum_relation) } inline ::pg_query::VacuumRelation* Node::_internal_mutable_vacuum_relation() { if (!_internal_has_vacuum_relation()) { clear_node(); set_has_vacuum_relation(); _impl_.node_.vacuum_relation_ = CreateMaybeMessage< ::pg_query::VacuumRelation >(GetArenaForAllocation()); } return _impl_.node_.vacuum_relation_; } inline ::pg_query::VacuumRelation* Node::mutable_vacuum_relation() { ::pg_query::VacuumRelation* _msg = _internal_mutable_vacuum_relation(); // @@protoc_insertion_point(field_mutable:pg_query.Node.vacuum_relation) return _msg; } // .pg_query.PublicationObjSpec publication_obj_spec = 226 [json_name = "PublicationObjSpec"]; inline bool Node::_internal_has_publication_obj_spec() const { return node_case() == kPublicationObjSpec; } inline bool Node::has_publication_obj_spec() const { return _internal_has_publication_obj_spec(); } inline void Node::set_has_publication_obj_spec() { _impl_._oneof_case_[0] = kPublicationObjSpec; } inline void Node::clear_publication_obj_spec() { if (_internal_has_publication_obj_spec()) { if (GetArenaForAllocation() == 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 (_internal_has_publication_obj_spec()) { clear_has_node(); ::pg_query::PublicationObjSpec* temp = _impl_.node_.publication_obj_spec_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_publication_obj_spec() ? *_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 { // @@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 (_internal_has_publication_obj_spec()) { clear_has_node(); ::pg_query::PublicationObjSpec* 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* publication_obj_spec) { clear_node(); if (publication_obj_spec) { set_has_publication_obj_spec(); _impl_.node_.publication_obj_spec_ = publication_obj_spec; } // @@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 (!_internal_has_publication_obj_spec()) { clear_node(); set_has_publication_obj_spec(); _impl_.node_.publication_obj_spec_ = CreateMaybeMessage< ::pg_query::PublicationObjSpec >(GetArenaForAllocation()); } return _impl_.node_.publication_obj_spec_; } inline ::pg_query::PublicationObjSpec* Node::mutable_publication_obj_spec() { ::pg_query::PublicationObjSpec* _msg = _internal_mutable_publication_obj_spec(); // @@protoc_insertion_point(field_mutable:pg_query.Node.publication_obj_spec) return _msg; } // .pg_query.PublicationTable publication_table = 227 [json_name = "PublicationTable"]; inline bool Node::_internal_has_publication_table() const { return node_case() == kPublicationTable; } inline bool Node::has_publication_table() const { return _internal_has_publication_table(); } inline void Node::set_has_publication_table() { _impl_._oneof_case_[0] = kPublicationTable; } inline void Node::clear_publication_table() { if (_internal_has_publication_table()) { if (GetArenaForAllocation() == 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 (_internal_has_publication_table()) { clear_has_node(); ::pg_query::PublicationTable* temp = _impl_.node_.publication_table_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.publication_table_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PublicationTable& Node::_internal_publication_table() const { return _internal_has_publication_table() ? *_impl_.node_.publication_table_ : reinterpret_cast< ::pg_query::PublicationTable&>(::pg_query::_PublicationTable_default_instance_); } inline const ::pg_query::PublicationTable& Node::publication_table() const { // @@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 (_internal_has_publication_table()) { clear_has_node(); ::pg_query::PublicationTable* 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* publication_table) { clear_node(); if (publication_table) { set_has_publication_table(); _impl_.node_.publication_table_ = publication_table; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.publication_table) } inline ::pg_query::PublicationTable* Node::_internal_mutable_publication_table() { if (!_internal_has_publication_table()) { clear_node(); set_has_publication_table(); _impl_.node_.publication_table_ = CreateMaybeMessage< ::pg_query::PublicationTable >(GetArenaForAllocation()); } return _impl_.node_.publication_table_; } inline ::pg_query::PublicationTable* Node::mutable_publication_table() { ::pg_query::PublicationTable* _msg = _internal_mutable_publication_table(); // @@protoc_insertion_point(field_mutable:pg_query.Node.publication_table) return _msg; } // .pg_query.InlineCodeBlock inline_code_block = 228 [json_name = "InlineCodeBlock"]; inline bool Node::_internal_has_inline_code_block() const { return node_case() == kInlineCodeBlock; } inline bool Node::has_inline_code_block() const { return _internal_has_inline_code_block(); } inline void Node::set_has_inline_code_block() { _impl_._oneof_case_[0] = kInlineCodeBlock; } inline void Node::clear_inline_code_block() { if (_internal_has_inline_code_block()) { if (GetArenaForAllocation() == 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 (_internal_has_inline_code_block()) { clear_has_node(); ::pg_query::InlineCodeBlock* temp = _impl_.node_.inline_code_block_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_inline_code_block() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.inline_code_block) return _internal_inline_code_block(); } inline ::pg_query::InlineCodeBlock* Node::unsafe_arena_release_inline_code_block() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.inline_code_block) if (_internal_has_inline_code_block()) { clear_has_node(); ::pg_query::InlineCodeBlock* temp = _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* inline_code_block) { clear_node(); if (inline_code_block) { set_has_inline_code_block(); _impl_.node_.inline_code_block_ = inline_code_block; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.inline_code_block) } inline ::pg_query::InlineCodeBlock* Node::_internal_mutable_inline_code_block() { if (!_internal_has_inline_code_block()) { clear_node(); set_has_inline_code_block(); _impl_.node_.inline_code_block_ = CreateMaybeMessage< ::pg_query::InlineCodeBlock >(GetArenaForAllocation()); } return _impl_.node_.inline_code_block_; } inline ::pg_query::InlineCodeBlock* Node::mutable_inline_code_block() { ::pg_query::InlineCodeBlock* _msg = _internal_mutable_inline_code_block(); // @@protoc_insertion_point(field_mutable:pg_query.Node.inline_code_block) return _msg; } // .pg_query.CallContext call_context = 229 [json_name = "CallContext"]; inline bool Node::_internal_has_call_context() const { return node_case() == kCallContext; } inline bool Node::has_call_context() const { return _internal_has_call_context(); } inline void Node::set_has_call_context() { _impl_._oneof_case_[0] = kCallContext; } inline void Node::clear_call_context() { if (_internal_has_call_context()) { if (GetArenaForAllocation() == 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 (_internal_has_call_context()) { clear_has_node(); ::pg_query::CallContext* temp = _impl_.node_.call_context_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.call_context_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CallContext& Node::_internal_call_context() const { return _internal_has_call_context() ? *_impl_.node_.call_context_ : reinterpret_cast< ::pg_query::CallContext&>(::pg_query::_CallContext_default_instance_); } inline const ::pg_query::CallContext& Node::call_context() const { // @@protoc_insertion_point(field_get:pg_query.Node.call_context) return _internal_call_context(); } inline ::pg_query::CallContext* Node::unsafe_arena_release_call_context() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.call_context) if (_internal_has_call_context()) { clear_has_node(); ::pg_query::CallContext* temp = _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* call_context) { clear_node(); if (call_context) { set_has_call_context(); _impl_.node_.call_context_ = call_context; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.call_context) } inline ::pg_query::CallContext* Node::_internal_mutable_call_context() { if (!_internal_has_call_context()) { clear_node(); set_has_call_context(); _impl_.node_.call_context_ = CreateMaybeMessage< ::pg_query::CallContext >(GetArenaForAllocation()); } return _impl_.node_.call_context_; } inline ::pg_query::CallContext* Node::mutable_call_context() { ::pg_query::CallContext* _msg = _internal_mutable_call_context(); // @@protoc_insertion_point(field_mutable:pg_query.Node.call_context) return _msg; } // .pg_query.Integer integer = 230 [json_name = "Integer"]; inline bool Node::_internal_has_integer() const { return node_case() == kInteger; } inline bool Node::has_integer() const { return _internal_has_integer(); } inline void Node::set_has_integer() { _impl_._oneof_case_[0] = kInteger; } inline void Node::clear_integer() { if (_internal_has_integer()) { if (GetArenaForAllocation() == 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 (_internal_has_integer()) { clear_has_node(); ::pg_query::Integer* temp = _impl_.node_.integer_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.integer_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Integer& Node::_internal_integer() const { return _internal_has_integer() ? *_impl_.node_.integer_ : reinterpret_cast< ::pg_query::Integer&>(::pg_query::_Integer_default_instance_); } inline const ::pg_query::Integer& Node::integer() const { // @@protoc_insertion_point(field_get:pg_query.Node.integer) return _internal_integer(); } inline ::pg_query::Integer* Node::unsafe_arena_release_integer() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.integer) if (_internal_has_integer()) { clear_has_node(); ::pg_query::Integer* temp = _impl_.node_.integer_; _impl_.node_.integer_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_integer(::pg_query::Integer* integer) { clear_node(); if (integer) { set_has_integer(); _impl_.node_.integer_ = integer; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.integer) } inline ::pg_query::Integer* Node::_internal_mutable_integer() { if (!_internal_has_integer()) { clear_node(); set_has_integer(); _impl_.node_.integer_ = CreateMaybeMessage< ::pg_query::Integer >(GetArenaForAllocation()); } return _impl_.node_.integer_; } inline ::pg_query::Integer* Node::mutable_integer() { ::pg_query::Integer* _msg = _internal_mutable_integer(); // @@protoc_insertion_point(field_mutable:pg_query.Node.integer) return _msg; } // .pg_query.Float float = 231 [json_name = "Float"]; inline bool Node::_internal_has_float_() const { return node_case() == kFloat; } inline bool Node::has_float_() const { return _internal_has_float_(); } inline void Node::set_has_float_() { _impl_._oneof_case_[0] = kFloat; } inline void Node::clear_float_() { if (_internal_has_float_()) { if (GetArenaForAllocation() == 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 (_internal_has_float_()) { clear_has_node(); ::pg_query::Float* temp = _impl_.node_.float__; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.float__ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Float& Node::_internal_float_() const { return _internal_has_float_() ? *_impl_.node_.float__ : reinterpret_cast< ::pg_query::Float&>(::pg_query::_Float_default_instance_); } inline const ::pg_query::Float& Node::float_() const { // @@protoc_insertion_point(field_get:pg_query.Node.float) return _internal_float_(); } inline ::pg_query::Float* Node::unsafe_arena_release_float_() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.float) if (_internal_has_float_()) { clear_has_node(); ::pg_query::Float* temp = _impl_.node_.float__; _impl_.node_.float__ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_float_(::pg_query::Float* float_) { clear_node(); if (float_) { set_has_float_(); _impl_.node_.float__ = float_; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.float) } inline ::pg_query::Float* Node::_internal_mutable_float_() { if (!_internal_has_float_()) { clear_node(); set_has_float_(); _impl_.node_.float__ = CreateMaybeMessage< ::pg_query::Float >(GetArenaForAllocation()); } return _impl_.node_.float__; } inline ::pg_query::Float* Node::mutable_float_() { ::pg_query::Float* _msg = _internal_mutable_float_(); // @@protoc_insertion_point(field_mutable:pg_query.Node.float) return _msg; } // .pg_query.Boolean boolean = 232 [json_name = "Boolean"]; inline bool Node::_internal_has_boolean() const { return node_case() == kBoolean; } inline bool Node::has_boolean() const { return _internal_has_boolean(); } inline void Node::set_has_boolean() { _impl_._oneof_case_[0] = kBoolean; } inline void Node::clear_boolean() { if (_internal_has_boolean()) { if (GetArenaForAllocation() == 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 (_internal_has_boolean()) { clear_has_node(); ::pg_query::Boolean* temp = _impl_.node_.boolean_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.boolean_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Boolean& Node::_internal_boolean() const { return _internal_has_boolean() ? *_impl_.node_.boolean_ : reinterpret_cast< ::pg_query::Boolean&>(::pg_query::_Boolean_default_instance_); } inline const ::pg_query::Boolean& Node::boolean() const { // @@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 (_internal_has_boolean()) { clear_has_node(); ::pg_query::Boolean* temp = _impl_.node_.boolean_; _impl_.node_.boolean_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_boolean(::pg_query::Boolean* boolean) { clear_node(); if (boolean) { set_has_boolean(); _impl_.node_.boolean_ = boolean; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.boolean) } inline ::pg_query::Boolean* Node::_internal_mutable_boolean() { if (!_internal_has_boolean()) { clear_node(); set_has_boolean(); _impl_.node_.boolean_ = CreateMaybeMessage< ::pg_query::Boolean >(GetArenaForAllocation()); } return _impl_.node_.boolean_; } inline ::pg_query::Boolean* Node::mutable_boolean() { ::pg_query::Boolean* _msg = _internal_mutable_boolean(); // @@protoc_insertion_point(field_mutable:pg_query.Node.boolean) return _msg; } // .pg_query.String string = 233 [json_name = "String"]; inline bool Node::_internal_has_string() const { return node_case() == kString; } inline bool Node::has_string() const { return _internal_has_string(); } inline void Node::set_has_string() { _impl_._oneof_case_[0] = kString; } inline void Node::clear_string() { if (_internal_has_string()) { if (GetArenaForAllocation() == 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 (_internal_has_string()) { clear_has_node(); ::pg_query::String* temp = _impl_.node_.string_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.string_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::String& Node::_internal_string() const { return _internal_has_string() ? *_impl_.node_.string_ : reinterpret_cast< ::pg_query::String&>(::pg_query::_String_default_instance_); } inline const ::pg_query::String& Node::string() const { // @@protoc_insertion_point(field_get:pg_query.Node.string) return _internal_string(); } inline ::pg_query::String* Node::unsafe_arena_release_string() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.string) if (_internal_has_string()) { clear_has_node(); ::pg_query::String* temp = _impl_.node_.string_; _impl_.node_.string_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_string(::pg_query::String* string) { clear_node(); if (string) { set_has_string(); _impl_.node_.string_ = string; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.string) } inline ::pg_query::String* Node::_internal_mutable_string() { if (!_internal_has_string()) { clear_node(); set_has_string(); _impl_.node_.string_ = CreateMaybeMessage< ::pg_query::String >(GetArenaForAllocation()); } return _impl_.node_.string_; } inline ::pg_query::String* Node::mutable_string() { ::pg_query::String* _msg = _internal_mutable_string(); // @@protoc_insertion_point(field_mutable:pg_query.Node.string) return _msg; } // .pg_query.BitString bit_string = 234 [json_name = "BitString"]; inline bool Node::_internal_has_bit_string() const { return node_case() == kBitString; } inline bool Node::has_bit_string() const { return _internal_has_bit_string(); } inline void Node::set_has_bit_string() { _impl_._oneof_case_[0] = kBitString; } inline void Node::clear_bit_string() { if (_internal_has_bit_string()) { if (GetArenaForAllocation() == 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 (_internal_has_bit_string()) { clear_has_node(); ::pg_query::BitString* temp = _impl_.node_.bit_string_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.bit_string_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::BitString& Node::_internal_bit_string() const { return _internal_has_bit_string() ? *_impl_.node_.bit_string_ : reinterpret_cast< ::pg_query::BitString&>(::pg_query::_BitString_default_instance_); } inline const ::pg_query::BitString& Node::bit_string() const { // @@protoc_insertion_point(field_get:pg_query.Node.bit_string) return _internal_bit_string(); } inline ::pg_query::BitString* Node::unsafe_arena_release_bit_string() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.bit_string) if (_internal_has_bit_string()) { clear_has_node(); ::pg_query::BitString* temp = _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* bit_string) { clear_node(); if (bit_string) { set_has_bit_string(); _impl_.node_.bit_string_ = bit_string; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.bit_string) } inline ::pg_query::BitString* Node::_internal_mutable_bit_string() { if (!_internal_has_bit_string()) { clear_node(); set_has_bit_string(); _impl_.node_.bit_string_ = CreateMaybeMessage< ::pg_query::BitString >(GetArenaForAllocation()); } return _impl_.node_.bit_string_; } inline ::pg_query::BitString* Node::mutable_bit_string() { ::pg_query::BitString* _msg = _internal_mutable_bit_string(); // @@protoc_insertion_point(field_mutable:pg_query.Node.bit_string) return _msg; } // .pg_query.List list = 235 [json_name = "List"]; inline bool Node::_internal_has_list() const { return node_case() == kList; } inline bool Node::has_list() const { return _internal_has_list(); } inline void Node::set_has_list() { _impl_._oneof_case_[0] = kList; } inline void Node::clear_list() { if (_internal_has_list()) { if (GetArenaForAllocation() == 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 (_internal_has_list()) { clear_has_node(); ::pg_query::List* temp = _impl_.node_.list_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.list_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::List& Node::_internal_list() const { return _internal_has_list() ? *_impl_.node_.list_ : reinterpret_cast< ::pg_query::List&>(::pg_query::_List_default_instance_); } inline const ::pg_query::List& Node::list() const { // @@protoc_insertion_point(field_get:pg_query.Node.list) return _internal_list(); } inline ::pg_query::List* Node::unsafe_arena_release_list() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.list) if (_internal_has_list()) { clear_has_node(); ::pg_query::List* temp = _impl_.node_.list_; _impl_.node_.list_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_list(::pg_query::List* list) { clear_node(); if (list) { set_has_list(); _impl_.node_.list_ = list; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.list) } inline ::pg_query::List* Node::_internal_mutable_list() { if (!_internal_has_list()) { clear_node(); set_has_list(); _impl_.node_.list_ = CreateMaybeMessage< ::pg_query::List >(GetArenaForAllocation()); } return _impl_.node_.list_; } inline ::pg_query::List* Node::mutable_list() { ::pg_query::List* _msg = _internal_mutable_list(); // @@protoc_insertion_point(field_mutable:pg_query.Node.list) return _msg; } // .pg_query.IntList int_list = 236 [json_name = "IntList"]; inline bool Node::_internal_has_int_list() const { return node_case() == kIntList; } inline bool Node::has_int_list() const { return _internal_has_int_list(); } inline void Node::set_has_int_list() { _impl_._oneof_case_[0] = kIntList; } inline void Node::clear_int_list() { if (_internal_has_int_list()) { if (GetArenaForAllocation() == 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 (_internal_has_int_list()) { clear_has_node(); ::pg_query::IntList* temp = _impl_.node_.int_list_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.int_list_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::IntList& Node::_internal_int_list() const { return _internal_has_int_list() ? *_impl_.node_.int_list_ : reinterpret_cast< ::pg_query::IntList&>(::pg_query::_IntList_default_instance_); } inline const ::pg_query::IntList& Node::int_list() const { // @@protoc_insertion_point(field_get:pg_query.Node.int_list) return _internal_int_list(); } inline ::pg_query::IntList* Node::unsafe_arena_release_int_list() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.int_list) if (_internal_has_int_list()) { clear_has_node(); ::pg_query::IntList* temp = _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* int_list) { clear_node(); if (int_list) { set_has_int_list(); _impl_.node_.int_list_ = int_list; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.int_list) } inline ::pg_query::IntList* Node::_internal_mutable_int_list() { if (!_internal_has_int_list()) { clear_node(); set_has_int_list(); _impl_.node_.int_list_ = CreateMaybeMessage< ::pg_query::IntList >(GetArenaForAllocation()); } return _impl_.node_.int_list_; } inline ::pg_query::IntList* Node::mutable_int_list() { ::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 = 237 [json_name = "OidList"]; inline bool Node::_internal_has_oid_list() const { return node_case() == kOidList; } inline bool Node::has_oid_list() const { return _internal_has_oid_list(); } inline void Node::set_has_oid_list() { _impl_._oneof_case_[0] = kOidList; } inline void Node::clear_oid_list() { if (_internal_has_oid_list()) { if (GetArenaForAllocation() == 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 (_internal_has_oid_list()) { clear_has_node(); ::pg_query::OidList* temp = _impl_.node_.oid_list_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.node_.oid_list_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::OidList& Node::_internal_oid_list() const { return _internal_has_oid_list() ? *_impl_.node_.oid_list_ : reinterpret_cast< ::pg_query::OidList&>(::pg_query::_OidList_default_instance_); } inline const ::pg_query::OidList& Node::oid_list() const { // @@protoc_insertion_point(field_get:pg_query.Node.oid_list) return _internal_oid_list(); } inline ::pg_query::OidList* Node::unsafe_arena_release_oid_list() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.oid_list) if (_internal_has_oid_list()) { clear_has_node(); ::pg_query::OidList* temp = _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* oid_list) { clear_node(); if (oid_list) { set_has_oid_list(); _impl_.node_.oid_list_ = oid_list; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.oid_list) } inline ::pg_query::OidList* Node::_internal_mutable_oid_list() { if (!_internal_has_oid_list()) { clear_node(); set_has_oid_list(); _impl_.node_.oid_list_ = CreateMaybeMessage< ::pg_query::OidList >(GetArenaForAllocation()); } return _impl_.node_.oid_list_; } inline ::pg_query::OidList* Node::mutable_oid_list() { ::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 = 238 [json_name = "A_Const"]; inline bool Node::_internal_has_a_const() const { return node_case() == kAConst; } inline bool Node::has_a_const() const { return _internal_has_a_const(); } inline void Node::set_has_a_const() { _impl_._oneof_case_[0] = kAConst; } inline void Node::clear_a_const() { if (_internal_has_a_const()) { if (GetArenaForAllocation() == 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 (_internal_has_a_const()) { clear_has_node(); ::pg_query::A_Const* temp = _impl_.node_.a_const_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::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 _internal_has_a_const() ? *_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 { // @@protoc_insertion_point(field_get:pg_query.Node.a_const) return _internal_a_const(); } inline ::pg_query::A_Const* Node::unsafe_arena_release_a_const() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_const) if (_internal_has_a_const()) { clear_has_node(); ::pg_query::A_Const* temp = _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* a_const) { clear_node(); if (a_const) { set_has_a_const(); _impl_.node_.a_const_ = a_const; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_const) } inline ::pg_query::A_Const* Node::_internal_mutable_a_const() { if (!_internal_has_a_const()) { clear_node(); set_has_a_const(); _impl_.node_.a_const_ = CreateMaybeMessage< ::pg_query::A_Const >(GetArenaForAllocation()); } return _impl_.node_.a_const_; } inline ::pg_query::A_Const* Node::mutable_a_const() { ::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() { _impl_.ival_ = 0; } inline int32_t Integer::_internal_ival() const { return _impl_.ival_; } inline int32_t Integer::ival() const { // @@protoc_insertion_point(field_get:pg_query.Integer.ival) return _internal_ival(); } inline void Integer::_internal_set_ival(int32_t value) { _impl_.ival_ = value; } inline void Integer::set_ival(int32_t value) { _internal_set_ival(value); // @@protoc_insertion_point(field_set:pg_query.Integer.ival) } // ------------------------------------------------------------------- // Float // string fval = 1; inline void Float::clear_fval() { _impl_.fval_.ClearToEmpty(); } inline const std::string& Float::fval() const { // @@protoc_insertion_point(field_get:pg_query.Float.fval) return _internal_fval(); } template inline PROTOBUF_ALWAYS_INLINE void Float::set_fval(ArgT0&& arg0, ArgT... args) { _impl_.fval_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.Float.fval) } inline std::string* Float::mutable_fval() { 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 { return _impl_.fval_.Get(); } inline void Float::_internal_set_fval(const std::string& value) { _impl_.fval_.Set(value, GetArenaForAllocation()); } inline std::string* Float::_internal_mutable_fval() { return _impl_.fval_.Mutable(GetArenaForAllocation()); } inline std::string* Float::release_fval() { // @@protoc_insertion_point(field_release:pg_query.Float.fval) return _impl_.fval_.Release(); } inline void Float::set_allocated_fval(std::string* fval) { if (fval != nullptr) { } else { } _impl_.fval_.SetAllocated(fval, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.fval_.IsDefault()) { _impl_.fval_.Set("", GetArenaForAllocation()); } #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() { _impl_.boolval_ = false; } inline bool Boolean::_internal_boolval() const { return _impl_.boolval_; } inline bool Boolean::boolval() const { // @@protoc_insertion_point(field_get:pg_query.Boolean.boolval) return _internal_boolval(); } inline void Boolean::_internal_set_boolval(bool value) { _impl_.boolval_ = value; } inline void Boolean::set_boolval(bool value) { _internal_set_boolval(value); // @@protoc_insertion_point(field_set:pg_query.Boolean.boolval) } // ------------------------------------------------------------------- // String // string sval = 1; inline void String::clear_sval() { _impl_.sval_.ClearToEmpty(); } inline const std::string& String::sval() const { // @@protoc_insertion_point(field_get:pg_query.String.sval) return _internal_sval(); } template inline PROTOBUF_ALWAYS_INLINE void String::set_sval(ArgT0&& arg0, ArgT... args) { _impl_.sval_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.String.sval) } inline std::string* String::mutable_sval() { 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 { return _impl_.sval_.Get(); } inline void String::_internal_set_sval(const std::string& value) { _impl_.sval_.Set(value, GetArenaForAllocation()); } inline std::string* String::_internal_mutable_sval() { return _impl_.sval_.Mutable(GetArenaForAllocation()); } inline std::string* String::release_sval() { // @@protoc_insertion_point(field_release:pg_query.String.sval) return _impl_.sval_.Release(); } inline void String::set_allocated_sval(std::string* sval) { if (sval != nullptr) { } else { } _impl_.sval_.SetAllocated(sval, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.sval_.IsDefault()) { _impl_.sval_.Set("", GetArenaForAllocation()); } #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() { _impl_.bsval_.ClearToEmpty(); } inline const std::string& BitString::bsval() const { // @@protoc_insertion_point(field_get:pg_query.BitString.bsval) return _internal_bsval(); } template inline PROTOBUF_ALWAYS_INLINE void BitString::set_bsval(ArgT0&& arg0, ArgT... args) { _impl_.bsval_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.BitString.bsval) } inline std::string* BitString::mutable_bsval() { 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 { return _impl_.bsval_.Get(); } inline void BitString::_internal_set_bsval(const std::string& value) { _impl_.bsval_.Set(value, GetArenaForAllocation()); } inline std::string* BitString::_internal_mutable_bsval() { return _impl_.bsval_.Mutable(GetArenaForAllocation()); } inline std::string* BitString::release_bsval() { // @@protoc_insertion_point(field_release:pg_query.BitString.bsval) return _impl_.bsval_.Release(); } inline void BitString::set_allocated_bsval(std::string* bsval) { if (bsval != nullptr) { } else { } _impl_.bsval_.SetAllocated(bsval, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.bsval_.IsDefault()) { _impl_.bsval_.Set("", GetArenaForAllocation()); } #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 _impl_.items_.size(); } inline int List::items_size() const { return _internal_items_size(); } inline void List::clear_items() { _impl_.items_.Clear(); } inline ::pg_query::Node* List::mutable_items(int index) { // @@protoc_insertion_point(field_mutable:pg_query.List.items) return _impl_.items_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* List::mutable_items() { // @@protoc_insertion_point(field_mutable_list:pg_query.List.items) return &_impl_.items_; } inline const ::pg_query::Node& List::_internal_items(int index) const { return _impl_.items_.Get(index); } inline const ::pg_query::Node& List::items(int index) const { // @@protoc_insertion_point(field_get:pg_query.List.items) return _internal_items(index); } inline ::pg_query::Node* List::_internal_add_items() { return _impl_.items_.Add(); } inline ::pg_query::Node* List::add_items() { ::pg_query::Node* _add = _internal_add_items(); // @@protoc_insertion_point(field_add:pg_query.List.items) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& List::items() const { // @@protoc_insertion_point(field_list:pg_query.List.items) return _impl_.items_; } // ------------------------------------------------------------------- // OidList // repeated .pg_query.Node items = 1; inline int OidList::_internal_items_size() const { return _impl_.items_.size(); } inline int OidList::items_size() const { return _internal_items_size(); } inline void OidList::clear_items() { _impl_.items_.Clear(); } inline ::pg_query::Node* OidList::mutable_items(int index) { // @@protoc_insertion_point(field_mutable:pg_query.OidList.items) return _impl_.items_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* OidList::mutable_items() { // @@protoc_insertion_point(field_mutable_list:pg_query.OidList.items) return &_impl_.items_; } inline const ::pg_query::Node& OidList::_internal_items(int index) const { return _impl_.items_.Get(index); } inline const ::pg_query::Node& OidList::items(int index) const { // @@protoc_insertion_point(field_get:pg_query.OidList.items) return _internal_items(index); } inline ::pg_query::Node* OidList::_internal_add_items() { return _impl_.items_.Add(); } inline ::pg_query::Node* OidList::add_items() { ::pg_query::Node* _add = _internal_add_items(); // @@protoc_insertion_point(field_add:pg_query.OidList.items) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& OidList::items() const { // @@protoc_insertion_point(field_list:pg_query.OidList.items) return _impl_.items_; } // ------------------------------------------------------------------- // IntList // repeated .pg_query.Node items = 1; inline int IntList::_internal_items_size() const { return _impl_.items_.size(); } inline int IntList::items_size() const { return _internal_items_size(); } inline void IntList::clear_items() { _impl_.items_.Clear(); } inline ::pg_query::Node* IntList::mutable_items(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IntList.items) return _impl_.items_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IntList::mutable_items() { // @@protoc_insertion_point(field_mutable_list:pg_query.IntList.items) return &_impl_.items_; } inline const ::pg_query::Node& IntList::_internal_items(int index) const { return _impl_.items_.Get(index); } inline const ::pg_query::Node& IntList::items(int index) const { // @@protoc_insertion_point(field_get:pg_query.IntList.items) return _internal_items(index); } inline ::pg_query::Node* IntList::_internal_add_items() { return _impl_.items_.Add(); } inline ::pg_query::Node* IntList::add_items() { ::pg_query::Node* _add = _internal_add_items(); // @@protoc_insertion_point(field_add:pg_query.IntList.items) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IntList::items() const { // @@protoc_insertion_point(field_list:pg_query.IntList.items) return _impl_.items_; } // ------------------------------------------------------------------- // A_Const // .pg_query.Integer ival = 1; inline bool A_Const::_internal_has_ival() const { return val_case() == kIval; } inline bool A_Const::has_ival() const { return _internal_has_ival(); } inline void A_Const::set_has_ival() { _impl_._oneof_case_[0] = kIval; } inline void A_Const::clear_ival() { if (_internal_has_ival()) { if (GetArenaForAllocation() == 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 (_internal_has_ival()) { clear_has_val(); ::pg_query::Integer* temp = _impl_.val_.ival_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.val_.ival_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Integer& A_Const::_internal_ival() const { return _internal_has_ival() ? *_impl_.val_.ival_ : reinterpret_cast< ::pg_query::Integer&>(::pg_query::_Integer_default_instance_); } inline const ::pg_query::Integer& A_Const::ival() const { // @@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 (_internal_has_ival()) { clear_has_val(); ::pg_query::Integer* 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* ival) { clear_val(); if (ival) { set_has_ival(); _impl_.val_.ival_ = ival; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Const.ival) } inline ::pg_query::Integer* A_Const::_internal_mutable_ival() { if (!_internal_has_ival()) { clear_val(); set_has_ival(); _impl_.val_.ival_ = CreateMaybeMessage< ::pg_query::Integer >(GetArenaForAllocation()); } return _impl_.val_.ival_; } inline ::pg_query::Integer* A_Const::mutable_ival() { ::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::_internal_has_fval() const { return val_case() == kFval; } inline bool A_Const::has_fval() const { return _internal_has_fval(); } inline void A_Const::set_has_fval() { _impl_._oneof_case_[0] = kFval; } inline void A_Const::clear_fval() { if (_internal_has_fval()) { if (GetArenaForAllocation() == 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 (_internal_has_fval()) { clear_has_val(); ::pg_query::Float* temp = _impl_.val_.fval_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.val_.fval_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Float& A_Const::_internal_fval() const { return _internal_has_fval() ? *_impl_.val_.fval_ : reinterpret_cast< ::pg_query::Float&>(::pg_query::_Float_default_instance_); } inline const ::pg_query::Float& A_Const::fval() const { // @@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 (_internal_has_fval()) { clear_has_val(); ::pg_query::Float* 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* fval) { clear_val(); if (fval) { set_has_fval(); _impl_.val_.fval_ = fval; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Const.fval) } inline ::pg_query::Float* A_Const::_internal_mutable_fval() { if (!_internal_has_fval()) { clear_val(); set_has_fval(); _impl_.val_.fval_ = CreateMaybeMessage< ::pg_query::Float >(GetArenaForAllocation()); } return _impl_.val_.fval_; } inline ::pg_query::Float* A_Const::mutable_fval() { ::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::_internal_has_boolval() const { return val_case() == kBoolval; } inline bool A_Const::has_boolval() const { return _internal_has_boolval(); } inline void A_Const::set_has_boolval() { _impl_._oneof_case_[0] = kBoolval; } inline void A_Const::clear_boolval() { if (_internal_has_boolval()) { if (GetArenaForAllocation() == 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 (_internal_has_boolval()) { clear_has_val(); ::pg_query::Boolean* temp = _impl_.val_.boolval_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.val_.boolval_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Boolean& A_Const::_internal_boolval() const { return _internal_has_boolval() ? *_impl_.val_.boolval_ : reinterpret_cast< ::pg_query::Boolean&>(::pg_query::_Boolean_default_instance_); } inline const ::pg_query::Boolean& A_Const::boolval() const { // @@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 (_internal_has_boolval()) { clear_has_val(); ::pg_query::Boolean* 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* boolval) { clear_val(); if (boolval) { set_has_boolval(); _impl_.val_.boolval_ = boolval; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Const.boolval) } inline ::pg_query::Boolean* A_Const::_internal_mutable_boolval() { if (!_internal_has_boolval()) { clear_val(); set_has_boolval(); _impl_.val_.boolval_ = CreateMaybeMessage< ::pg_query::Boolean >(GetArenaForAllocation()); } return _impl_.val_.boolval_; } inline ::pg_query::Boolean* A_Const::mutable_boolval() { ::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::_internal_has_sval() const { return val_case() == kSval; } inline bool A_Const::has_sval() const { return _internal_has_sval(); } inline void A_Const::set_has_sval() { _impl_._oneof_case_[0] = kSval; } inline void A_Const::clear_sval() { if (_internal_has_sval()) { if (GetArenaForAllocation() == 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 (_internal_has_sval()) { clear_has_val(); ::pg_query::String* temp = _impl_.val_.sval_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.val_.sval_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::String& A_Const::_internal_sval() const { return _internal_has_sval() ? *_impl_.val_.sval_ : reinterpret_cast< ::pg_query::String&>(::pg_query::_String_default_instance_); } inline const ::pg_query::String& A_Const::sval() const { // @@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 (_internal_has_sval()) { clear_has_val(); ::pg_query::String* 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* sval) { clear_val(); if (sval) { set_has_sval(); _impl_.val_.sval_ = sval; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Const.sval) } inline ::pg_query::String* A_Const::_internal_mutable_sval() { if (!_internal_has_sval()) { clear_val(); set_has_sval(); _impl_.val_.sval_ = CreateMaybeMessage< ::pg_query::String >(GetArenaForAllocation()); } return _impl_.val_.sval_; } inline ::pg_query::String* A_Const::mutable_sval() { ::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::_internal_has_bsval() const { return val_case() == kBsval; } inline bool A_Const::has_bsval() const { return _internal_has_bsval(); } inline void A_Const::set_has_bsval() { _impl_._oneof_case_[0] = kBsval; } inline void A_Const::clear_bsval() { if (_internal_has_bsval()) { if (GetArenaForAllocation() == 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 (_internal_has_bsval()) { clear_has_val(); ::pg_query::BitString* temp = _impl_.val_.bsval_; if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } _impl_.val_.bsval_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::BitString& A_Const::_internal_bsval() const { return _internal_has_bsval() ? *_impl_.val_.bsval_ : reinterpret_cast< ::pg_query::BitString&>(::pg_query::_BitString_default_instance_); } inline const ::pg_query::BitString& A_Const::bsval() const { // @@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 (_internal_has_bsval()) { clear_has_val(); ::pg_query::BitString* 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* bsval) { clear_val(); if (bsval) { set_has_bsval(); _impl_.val_.bsval_ = bsval; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Const.bsval) } inline ::pg_query::BitString* A_Const::_internal_mutable_bsval() { if (!_internal_has_bsval()) { clear_val(); set_has_bsval(); _impl_.val_.bsval_ = CreateMaybeMessage< ::pg_query::BitString >(GetArenaForAllocation()); } return _impl_.val_.bsval_; } inline ::pg_query::BitString* A_Const::mutable_bsval() { ::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() { _impl_.isnull_ = false; } inline bool A_Const::_internal_isnull() const { return _impl_.isnull_; } inline bool A_Const::isnull() const { // @@protoc_insertion_point(field_get:pg_query.A_Const.isnull) return _internal_isnull(); } inline void A_Const::_internal_set_isnull(bool value) { _impl_.isnull_ = value; } inline void A_Const::set_isnull(bool value) { _internal_set_isnull(value); // @@protoc_insertion_point(field_set:pg_query.A_Const.isnull) } // int32 location = 11; inline void A_Const::clear_location() { _impl_.location_ = 0; } inline int32_t A_Const::_internal_location() const { return _impl_.location_; } inline int32_t A_Const::location() const { // @@protoc_insertion_point(field_get:pg_query.A_Const.location) return _internal_location(); } inline void A_Const::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void A_Const::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.A_Const.location) } 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() { _impl_.aliasname_.ClearToEmpty(); } inline const std::string& Alias::aliasname() const { // @@protoc_insertion_point(field_get:pg_query.Alias.aliasname) return _internal_aliasname(); } template inline PROTOBUF_ALWAYS_INLINE void Alias::set_aliasname(ArgT0&& arg0, ArgT... args) { _impl_.aliasname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.Alias.aliasname) } inline std::string* Alias::mutable_aliasname() { 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 { return _impl_.aliasname_.Get(); } inline void Alias::_internal_set_aliasname(const std::string& value) { _impl_.aliasname_.Set(value, GetArenaForAllocation()); } inline std::string* Alias::_internal_mutable_aliasname() { return _impl_.aliasname_.Mutable(GetArenaForAllocation()); } inline std::string* Alias::release_aliasname() { // @@protoc_insertion_point(field_release:pg_query.Alias.aliasname) return _impl_.aliasname_.Release(); } inline void Alias::set_allocated_aliasname(std::string* aliasname) { if (aliasname != nullptr) { } else { } _impl_.aliasname_.SetAllocated(aliasname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.aliasname_.IsDefault()) { _impl_.aliasname_.Set("", GetArenaForAllocation()); } #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 _impl_.colnames_.size(); } inline int Alias::colnames_size() const { return _internal_colnames_size(); } inline void Alias::clear_colnames() { _impl_.colnames_.Clear(); } inline ::pg_query::Node* Alias::mutable_colnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Alias.colnames) return _impl_.colnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Alias::mutable_colnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.Alias.colnames) return &_impl_.colnames_; } inline const ::pg_query::Node& Alias::_internal_colnames(int index) const { return _impl_.colnames_.Get(index); } inline const ::pg_query::Node& Alias::colnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.Alias.colnames) return _internal_colnames(index); } inline ::pg_query::Node* Alias::_internal_add_colnames() { return _impl_.colnames_.Add(); } inline ::pg_query::Node* Alias::add_colnames() { ::pg_query::Node* _add = _internal_add_colnames(); // @@protoc_insertion_point(field_add:pg_query.Alias.colnames) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Alias::colnames() const { // @@protoc_insertion_point(field_list:pg_query.Alias.colnames) return _impl_.colnames_; } // ------------------------------------------------------------------- // RangeVar // string catalogname = 1 [json_name = "catalogname"]; inline void RangeVar::clear_catalogname() { _impl_.catalogname_.ClearToEmpty(); } inline const std::string& RangeVar::catalogname() const { // @@protoc_insertion_point(field_get:pg_query.RangeVar.catalogname) return _internal_catalogname(); } template inline PROTOBUF_ALWAYS_INLINE void RangeVar::set_catalogname(ArgT0&& arg0, ArgT... args) { _impl_.catalogname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.RangeVar.catalogname) } inline std::string* RangeVar::mutable_catalogname() { 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 { return _impl_.catalogname_.Get(); } inline void RangeVar::_internal_set_catalogname(const std::string& value) { _impl_.catalogname_.Set(value, GetArenaForAllocation()); } inline std::string* RangeVar::_internal_mutable_catalogname() { return _impl_.catalogname_.Mutable(GetArenaForAllocation()); } inline std::string* RangeVar::release_catalogname() { // @@protoc_insertion_point(field_release:pg_query.RangeVar.catalogname) return _impl_.catalogname_.Release(); } inline void RangeVar::set_allocated_catalogname(std::string* catalogname) { if (catalogname != nullptr) { } else { } _impl_.catalogname_.SetAllocated(catalogname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.catalogname_.IsDefault()) { _impl_.catalogname_.Set("", GetArenaForAllocation()); } #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() { _impl_.schemaname_.ClearToEmpty(); } inline const std::string& RangeVar::schemaname() const { // @@protoc_insertion_point(field_get:pg_query.RangeVar.schemaname) return _internal_schemaname(); } template inline PROTOBUF_ALWAYS_INLINE void RangeVar::set_schemaname(ArgT0&& arg0, ArgT... args) { _impl_.schemaname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.RangeVar.schemaname) } inline std::string* RangeVar::mutable_schemaname() { 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 { return _impl_.schemaname_.Get(); } inline void RangeVar::_internal_set_schemaname(const std::string& value) { _impl_.schemaname_.Set(value, GetArenaForAllocation()); } inline std::string* RangeVar::_internal_mutable_schemaname() { return _impl_.schemaname_.Mutable(GetArenaForAllocation()); } inline std::string* RangeVar::release_schemaname() { // @@protoc_insertion_point(field_release:pg_query.RangeVar.schemaname) return _impl_.schemaname_.Release(); } inline void RangeVar::set_allocated_schemaname(std::string* schemaname) { if (schemaname != nullptr) { } else { } _impl_.schemaname_.SetAllocated(schemaname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.schemaname_.IsDefault()) { _impl_.schemaname_.Set("", GetArenaForAllocation()); } #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() { _impl_.relname_.ClearToEmpty(); } inline const std::string& RangeVar::relname() const { // @@protoc_insertion_point(field_get:pg_query.RangeVar.relname) return _internal_relname(); } template inline PROTOBUF_ALWAYS_INLINE void RangeVar::set_relname(ArgT0&& arg0, ArgT... args) { _impl_.relname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.RangeVar.relname) } inline std::string* RangeVar::mutable_relname() { 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 { return _impl_.relname_.Get(); } inline void RangeVar::_internal_set_relname(const std::string& value) { _impl_.relname_.Set(value, GetArenaForAllocation()); } inline std::string* RangeVar::_internal_mutable_relname() { return _impl_.relname_.Mutable(GetArenaForAllocation()); } inline std::string* RangeVar::release_relname() { // @@protoc_insertion_point(field_release:pg_query.RangeVar.relname) return _impl_.relname_.Release(); } inline void RangeVar::set_allocated_relname(std::string* relname) { if (relname != nullptr) { } else { } _impl_.relname_.SetAllocated(relname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.relname_.IsDefault()) { _impl_.relname_.Set("", GetArenaForAllocation()); } #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() { _impl_.inh_ = false; } inline bool RangeVar::_internal_inh() const { return _impl_.inh_; } inline bool RangeVar::inh() const { // @@protoc_insertion_point(field_get:pg_query.RangeVar.inh) return _internal_inh(); } inline void RangeVar::_internal_set_inh(bool value) { _impl_.inh_ = value; } inline void RangeVar::set_inh(bool value) { _internal_set_inh(value); // @@protoc_insertion_point(field_set:pg_query.RangeVar.inh) } // string relpersistence = 5 [json_name = "relpersistence"]; inline void RangeVar::clear_relpersistence() { _impl_.relpersistence_.ClearToEmpty(); } inline const std::string& RangeVar::relpersistence() const { // @@protoc_insertion_point(field_get:pg_query.RangeVar.relpersistence) return _internal_relpersistence(); } template inline PROTOBUF_ALWAYS_INLINE void RangeVar::set_relpersistence(ArgT0&& arg0, ArgT... args) { _impl_.relpersistence_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.RangeVar.relpersistence) } inline std::string* RangeVar::mutable_relpersistence() { 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 { return _impl_.relpersistence_.Get(); } inline void RangeVar::_internal_set_relpersistence(const std::string& value) { _impl_.relpersistence_.Set(value, GetArenaForAllocation()); } inline std::string* RangeVar::_internal_mutable_relpersistence() { return _impl_.relpersistence_.Mutable(GetArenaForAllocation()); } inline std::string* RangeVar::release_relpersistence() { // @@protoc_insertion_point(field_release:pg_query.RangeVar.relpersistence) return _impl_.relpersistence_.Release(); } inline void RangeVar::set_allocated_relpersistence(std::string* relpersistence) { if (relpersistence != nullptr) { } else { } _impl_.relpersistence_.SetAllocated(relpersistence, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.relpersistence_.IsDefault()) { _impl_.relpersistence_.Set("", GetArenaForAllocation()); } #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::_internal_has_alias() const { return this != internal_default_instance() && _impl_.alias_ != nullptr; } inline bool RangeVar::has_alias() const { return _internal_has_alias(); } inline void RangeVar::clear_alias() { if (GetArenaForAllocation() == nullptr && _impl_.alias_ != nullptr) { delete _impl_.alias_; } _impl_.alias_ = nullptr; } inline const ::pg_query::Alias& RangeVar::_internal_alias() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeVar.alias) return _internal_alias(); } inline void RangeVar::unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.alias_); } _impl_.alias_ = alias; if (alias) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeVar.alias) } inline ::pg_query::Alias* RangeVar::release_alias() { ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Alias* RangeVar::unsafe_arena_release_alias() { // @@protoc_insertion_point(field_release:pg_query.RangeVar.alias) ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; return temp; } inline ::pg_query::Alias* RangeVar::_internal_mutable_alias() { if (_impl_.alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArenaForAllocation()); _impl_.alias_ = p; } return _impl_.alias_; } inline ::pg_query::Alias* RangeVar::mutable_alias() { ::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* alias) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.alias_; } if (alias) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(alias); if (message_arena != submessage_arena) { alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alias, submessage_arena); } } else { } _impl_.alias_ = alias; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeVar.alias) } // int32 location = 7 [json_name = "location"]; inline void RangeVar::clear_location() { _impl_.location_ = 0; } inline int32_t RangeVar::_internal_location() const { return _impl_.location_; } inline int32_t RangeVar::location() const { // @@protoc_insertion_point(field_get:pg_query.RangeVar.location) return _internal_location(); } inline void RangeVar::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void RangeVar::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RangeVar.location) } // ------------------------------------------------------------------- // TableFunc // repeated .pg_query.Node ns_uris = 1 [json_name = "ns_uris"]; inline int TableFunc::_internal_ns_uris_size() const { return _impl_.ns_uris_.size(); } inline int TableFunc::ns_uris_size() const { return _internal_ns_uris_size(); } inline void TableFunc::clear_ns_uris() { _impl_.ns_uris_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_ns_uris(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.ns_uris) return _impl_.ns_uris_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableFunc::mutable_ns_uris() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.ns_uris) return &_impl_.ns_uris_; } inline const ::pg_query::Node& TableFunc::_internal_ns_uris(int index) const { return _impl_.ns_uris_.Get(index); } inline const ::pg_query::Node& TableFunc::ns_uris(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.ns_uris) return _internal_ns_uris(index); } inline ::pg_query::Node* TableFunc::_internal_add_ns_uris() { return _impl_.ns_uris_.Add(); } inline ::pg_query::Node* TableFunc::add_ns_uris() { ::pg_query::Node* _add = _internal_add_ns_uris(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.ns_uris) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableFunc::ns_uris() const { // @@protoc_insertion_point(field_list:pg_query.TableFunc.ns_uris) return _impl_.ns_uris_; } // repeated .pg_query.Node ns_names = 2 [json_name = "ns_names"]; inline int TableFunc::_internal_ns_names_size() const { return _impl_.ns_names_.size(); } inline int TableFunc::ns_names_size() const { return _internal_ns_names_size(); } inline void TableFunc::clear_ns_names() { _impl_.ns_names_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_ns_names(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.ns_names) return _impl_.ns_names_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableFunc::mutable_ns_names() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.ns_names) return &_impl_.ns_names_; } inline const ::pg_query::Node& TableFunc::_internal_ns_names(int index) const { return _impl_.ns_names_.Get(index); } inline const ::pg_query::Node& TableFunc::ns_names(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.ns_names) return _internal_ns_names(index); } inline ::pg_query::Node* TableFunc::_internal_add_ns_names() { return _impl_.ns_names_.Add(); } inline ::pg_query::Node* TableFunc::add_ns_names() { ::pg_query::Node* _add = _internal_add_ns_names(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.ns_names) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableFunc::ns_names() const { // @@protoc_insertion_point(field_list:pg_query.TableFunc.ns_names) return _impl_.ns_names_; } // .pg_query.Node docexpr = 3 [json_name = "docexpr"]; inline bool TableFunc::_internal_has_docexpr() const { return this != internal_default_instance() && _impl_.docexpr_ != nullptr; } inline bool TableFunc::has_docexpr() const { return _internal_has_docexpr(); } inline void TableFunc::clear_docexpr() { if (GetArenaForAllocation() == nullptr && _impl_.docexpr_ != nullptr) { delete _impl_.docexpr_; } _impl_.docexpr_ = nullptr; } inline const ::pg_query::Node& TableFunc::_internal_docexpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.TableFunc.docexpr) return _internal_docexpr(); } inline void TableFunc::unsafe_arena_set_allocated_docexpr( ::pg_query::Node* docexpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.docexpr_); } _impl_.docexpr_ = docexpr; if (docexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TableFunc.docexpr) } inline ::pg_query::Node* TableFunc::release_docexpr() { ::pg_query::Node* temp = _impl_.docexpr_; _impl_.docexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* TableFunc::unsafe_arena_release_docexpr() { // @@protoc_insertion_point(field_release:pg_query.TableFunc.docexpr) ::pg_query::Node* temp = _impl_.docexpr_; _impl_.docexpr_ = nullptr; return temp; } inline ::pg_query::Node* TableFunc::_internal_mutable_docexpr() { if (_impl_.docexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.docexpr_ = p; } return _impl_.docexpr_; } inline ::pg_query::Node* TableFunc::mutable_docexpr() { ::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* docexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.docexpr_; } if (docexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(docexpr); if (message_arena != submessage_arena) { docexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, docexpr, submessage_arena); } } else { } _impl_.docexpr_ = docexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.TableFunc.docexpr) } // .pg_query.Node rowexpr = 4 [json_name = "rowexpr"]; inline bool TableFunc::_internal_has_rowexpr() const { return this != internal_default_instance() && _impl_.rowexpr_ != nullptr; } inline bool TableFunc::has_rowexpr() const { return _internal_has_rowexpr(); } inline void TableFunc::clear_rowexpr() { if (GetArenaForAllocation() == nullptr && _impl_.rowexpr_ != nullptr) { delete _impl_.rowexpr_; } _impl_.rowexpr_ = nullptr; } inline const ::pg_query::Node& TableFunc::_internal_rowexpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.TableFunc.rowexpr) return _internal_rowexpr(); } inline void TableFunc::unsafe_arena_set_allocated_rowexpr( ::pg_query::Node* rowexpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.rowexpr_); } _impl_.rowexpr_ = rowexpr; if (rowexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TableFunc.rowexpr) } inline ::pg_query::Node* TableFunc::release_rowexpr() { ::pg_query::Node* temp = _impl_.rowexpr_; _impl_.rowexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* TableFunc::unsafe_arena_release_rowexpr() { // @@protoc_insertion_point(field_release:pg_query.TableFunc.rowexpr) ::pg_query::Node* temp = _impl_.rowexpr_; _impl_.rowexpr_ = nullptr; return temp; } inline ::pg_query::Node* TableFunc::_internal_mutable_rowexpr() { if (_impl_.rowexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.rowexpr_ = p; } return _impl_.rowexpr_; } inline ::pg_query::Node* TableFunc::mutable_rowexpr() { ::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* rowexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.rowexpr_; } if (rowexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(rowexpr); if (message_arena != submessage_arena) { rowexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, rowexpr, submessage_arena); } } else { } _impl_.rowexpr_ = rowexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.TableFunc.rowexpr) } // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; inline int TableFunc::_internal_colnames_size() const { return _impl_.colnames_.size(); } inline int TableFunc::colnames_size() const { return _internal_colnames_size(); } inline void TableFunc::clear_colnames() { _impl_.colnames_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_colnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.colnames) return _impl_.colnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableFunc::mutable_colnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.colnames) return &_impl_.colnames_; } inline const ::pg_query::Node& TableFunc::_internal_colnames(int index) const { return _impl_.colnames_.Get(index); } inline const ::pg_query::Node& TableFunc::colnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.colnames) return _internal_colnames(index); } inline ::pg_query::Node* TableFunc::_internal_add_colnames() { return _impl_.colnames_.Add(); } inline ::pg_query::Node* TableFunc::add_colnames() { ::pg_query::Node* _add = _internal_add_colnames(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.colnames) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableFunc::colnames() const { // @@protoc_insertion_point(field_list:pg_query.TableFunc.colnames) return _impl_.colnames_; } // repeated .pg_query.Node coltypes = 6 [json_name = "coltypes"]; inline int TableFunc::_internal_coltypes_size() const { return _impl_.coltypes_.size(); } inline int TableFunc::coltypes_size() const { return _internal_coltypes_size(); } inline void TableFunc::clear_coltypes() { _impl_.coltypes_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_coltypes(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.coltypes) return _impl_.coltypes_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableFunc::mutable_coltypes() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.coltypes) return &_impl_.coltypes_; } inline const ::pg_query::Node& TableFunc::_internal_coltypes(int index) const { return _impl_.coltypes_.Get(index); } inline const ::pg_query::Node& TableFunc::coltypes(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.coltypes) return _internal_coltypes(index); } inline ::pg_query::Node* TableFunc::_internal_add_coltypes() { return _impl_.coltypes_.Add(); } inline ::pg_query::Node* TableFunc::add_coltypes() { ::pg_query::Node* _add = _internal_add_coltypes(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.coltypes) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableFunc::coltypes() const { // @@protoc_insertion_point(field_list:pg_query.TableFunc.coltypes) return _impl_.coltypes_; } // repeated .pg_query.Node coltypmods = 7 [json_name = "coltypmods"]; inline int TableFunc::_internal_coltypmods_size() const { return _impl_.coltypmods_.size(); } inline int TableFunc::coltypmods_size() const { return _internal_coltypmods_size(); } inline void TableFunc::clear_coltypmods() { _impl_.coltypmods_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_coltypmods(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.coltypmods) return _impl_.coltypmods_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableFunc::mutable_coltypmods() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.coltypmods) return &_impl_.coltypmods_; } inline const ::pg_query::Node& TableFunc::_internal_coltypmods(int index) const { return _impl_.coltypmods_.Get(index); } inline const ::pg_query::Node& TableFunc::coltypmods(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.coltypmods) return _internal_coltypmods(index); } inline ::pg_query::Node* TableFunc::_internal_add_coltypmods() { return _impl_.coltypmods_.Add(); } inline ::pg_query::Node* TableFunc::add_coltypmods() { ::pg_query::Node* _add = _internal_add_coltypmods(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.coltypmods) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableFunc::coltypmods() const { // @@protoc_insertion_point(field_list:pg_query.TableFunc.coltypmods) return _impl_.coltypmods_; } // repeated .pg_query.Node colcollations = 8 [json_name = "colcollations"]; inline int TableFunc::_internal_colcollations_size() const { return _impl_.colcollations_.size(); } inline int TableFunc::colcollations_size() const { return _internal_colcollations_size(); } inline void TableFunc::clear_colcollations() { _impl_.colcollations_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_colcollations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.colcollations) return _impl_.colcollations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableFunc::mutable_colcollations() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.colcollations) return &_impl_.colcollations_; } inline const ::pg_query::Node& TableFunc::_internal_colcollations(int index) const { return _impl_.colcollations_.Get(index); } inline const ::pg_query::Node& TableFunc::colcollations(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.colcollations) return _internal_colcollations(index); } inline ::pg_query::Node* TableFunc::_internal_add_colcollations() { return _impl_.colcollations_.Add(); } inline ::pg_query::Node* TableFunc::add_colcollations() { ::pg_query::Node* _add = _internal_add_colcollations(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.colcollations) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableFunc::colcollations() const { // @@protoc_insertion_point(field_list:pg_query.TableFunc.colcollations) return _impl_.colcollations_; } // repeated .pg_query.Node colexprs = 9 [json_name = "colexprs"]; inline int TableFunc::_internal_colexprs_size() const { return _impl_.colexprs_.size(); } inline int TableFunc::colexprs_size() const { return _internal_colexprs_size(); } inline void TableFunc::clear_colexprs() { _impl_.colexprs_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_colexprs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.colexprs) return _impl_.colexprs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableFunc::mutable_colexprs() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.colexprs) return &_impl_.colexprs_; } inline const ::pg_query::Node& TableFunc::_internal_colexprs(int index) const { return _impl_.colexprs_.Get(index); } inline const ::pg_query::Node& TableFunc::colexprs(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.colexprs) return _internal_colexprs(index); } inline ::pg_query::Node* TableFunc::_internal_add_colexprs() { return _impl_.colexprs_.Add(); } inline ::pg_query::Node* TableFunc::add_colexprs() { ::pg_query::Node* _add = _internal_add_colexprs(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.colexprs) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableFunc::colexprs() const { // @@protoc_insertion_point(field_list:pg_query.TableFunc.colexprs) return _impl_.colexprs_; } // repeated .pg_query.Node coldefexprs = 10 [json_name = "coldefexprs"]; inline int TableFunc::_internal_coldefexprs_size() const { return _impl_.coldefexprs_.size(); } inline int TableFunc::coldefexprs_size() const { return _internal_coldefexprs_size(); } inline void TableFunc::clear_coldefexprs() { _impl_.coldefexprs_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_coldefexprs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.coldefexprs) return _impl_.coldefexprs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableFunc::mutable_coldefexprs() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.coldefexprs) return &_impl_.coldefexprs_; } inline const ::pg_query::Node& TableFunc::_internal_coldefexprs(int index) const { return _impl_.coldefexprs_.Get(index); } inline const ::pg_query::Node& TableFunc::coldefexprs(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.coldefexprs) return _internal_coldefexprs(index); } inline ::pg_query::Node* TableFunc::_internal_add_coldefexprs() { return _impl_.coldefexprs_.Add(); } inline ::pg_query::Node* TableFunc::add_coldefexprs() { ::pg_query::Node* _add = _internal_add_coldefexprs(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.coldefexprs) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableFunc::coldefexprs() const { // @@protoc_insertion_point(field_list:pg_query.TableFunc.coldefexprs) return _impl_.coldefexprs_; } // repeated uint64 notnulls = 11 [json_name = "notnulls"]; inline int TableFunc::_internal_notnulls_size() const { return _impl_.notnulls_.size(); } inline int TableFunc::notnulls_size() const { return _internal_notnulls_size(); } inline void TableFunc::clear_notnulls() { _impl_.notnulls_.Clear(); } inline uint64_t TableFunc::_internal_notnulls(int index) const { return _impl_.notnulls_.Get(index); } inline uint64_t TableFunc::notnulls(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.notnulls) return _internal_notnulls(index); } inline void TableFunc::set_notnulls(int index, uint64_t value) { _impl_.notnulls_.Set(index, value); // @@protoc_insertion_point(field_set:pg_query.TableFunc.notnulls) } inline void TableFunc::_internal_add_notnulls(uint64_t value) { _impl_.notnulls_.Add(value); } inline void TableFunc::add_notnulls(uint64_t value) { _internal_add_notnulls(value); // @@protoc_insertion_point(field_add:pg_query.TableFunc.notnulls) } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& TableFunc::_internal_notnulls() const { return _impl_.notnulls_; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& TableFunc::notnulls() const { // @@protoc_insertion_point(field_list:pg_query.TableFunc.notnulls) return _internal_notnulls(); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* TableFunc::_internal_mutable_notnulls() { return &_impl_.notnulls_; } inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* TableFunc::mutable_notnulls() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.notnulls) return _internal_mutable_notnulls(); } // int32 ordinalitycol = 12 [json_name = "ordinalitycol"]; inline void TableFunc::clear_ordinalitycol() { _impl_.ordinalitycol_ = 0; } inline int32_t TableFunc::_internal_ordinalitycol() const { return _impl_.ordinalitycol_; } inline int32_t TableFunc::ordinalitycol() const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.ordinalitycol) return _internal_ordinalitycol(); } inline void TableFunc::_internal_set_ordinalitycol(int32_t value) { _impl_.ordinalitycol_ = value; } inline void TableFunc::set_ordinalitycol(int32_t value) { _internal_set_ordinalitycol(value); // @@protoc_insertion_point(field_set:pg_query.TableFunc.ordinalitycol) } // int32 location = 13 [json_name = "location"]; inline void TableFunc::clear_location() { _impl_.location_ = 0; } inline int32_t TableFunc::_internal_location() const { return _impl_.location_; } inline int32_t TableFunc::location() const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.location) return _internal_location(); } inline void TableFunc::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void TableFunc::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.TableFunc.location) } // ------------------------------------------------------------------- // Var // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool Var::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool Var::has_xpr() const { return _internal_has_xpr(); } inline void Var::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& Var::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.Var.xpr) return _internal_xpr(); } inline void Var::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Var.xpr) } inline ::pg_query::Node* Var::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* Var::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.Var.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* Var::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* Var::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.Var.xpr) } // int32 varno = 2 [json_name = "varno"]; inline void Var::clear_varno() { _impl_.varno_ = 0; } inline int32_t Var::_internal_varno() const { return _impl_.varno_; } inline int32_t Var::varno() const { // @@protoc_insertion_point(field_get:pg_query.Var.varno) return _internal_varno(); } inline void Var::_internal_set_varno(int32_t value) { _impl_.varno_ = value; } inline void Var::set_varno(int32_t value) { _internal_set_varno(value); // @@protoc_insertion_point(field_set:pg_query.Var.varno) } // int32 varattno = 3 [json_name = "varattno"]; inline void Var::clear_varattno() { _impl_.varattno_ = 0; } inline int32_t Var::_internal_varattno() const { return _impl_.varattno_; } inline int32_t Var::varattno() const { // @@protoc_insertion_point(field_get:pg_query.Var.varattno) return _internal_varattno(); } inline void Var::_internal_set_varattno(int32_t value) { _impl_.varattno_ = value; } inline void Var::set_varattno(int32_t value) { _internal_set_varattno(value); // @@protoc_insertion_point(field_set:pg_query.Var.varattno) } // uint32 vartype = 4 [json_name = "vartype"]; inline void Var::clear_vartype() { _impl_.vartype_ = 0u; } inline uint32_t Var::_internal_vartype() const { return _impl_.vartype_; } inline uint32_t Var::vartype() const { // @@protoc_insertion_point(field_get:pg_query.Var.vartype) return _internal_vartype(); } inline void Var::_internal_set_vartype(uint32_t value) { _impl_.vartype_ = value; } inline void Var::set_vartype(uint32_t value) { _internal_set_vartype(value); // @@protoc_insertion_point(field_set:pg_query.Var.vartype) } // int32 vartypmod = 5 [json_name = "vartypmod"]; inline void Var::clear_vartypmod() { _impl_.vartypmod_ = 0; } inline int32_t Var::_internal_vartypmod() const { return _impl_.vartypmod_; } inline int32_t Var::vartypmod() const { // @@protoc_insertion_point(field_get:pg_query.Var.vartypmod) return _internal_vartypmod(); } inline void Var::_internal_set_vartypmod(int32_t value) { _impl_.vartypmod_ = value; } inline void Var::set_vartypmod(int32_t value) { _internal_set_vartypmod(value); // @@protoc_insertion_point(field_set:pg_query.Var.vartypmod) } // uint32 varcollid = 6 [json_name = "varcollid"]; inline void Var::clear_varcollid() { _impl_.varcollid_ = 0u; } inline uint32_t Var::_internal_varcollid() const { return _impl_.varcollid_; } inline uint32_t Var::varcollid() const { // @@protoc_insertion_point(field_get:pg_query.Var.varcollid) return _internal_varcollid(); } inline void Var::_internal_set_varcollid(uint32_t value) { _impl_.varcollid_ = value; } inline void Var::set_varcollid(uint32_t value) { _internal_set_varcollid(value); // @@protoc_insertion_point(field_set:pg_query.Var.varcollid) } // uint32 varlevelsup = 7 [json_name = "varlevelsup"]; inline void Var::clear_varlevelsup() { _impl_.varlevelsup_ = 0u; } inline uint32_t Var::_internal_varlevelsup() const { return _impl_.varlevelsup_; } inline uint32_t Var::varlevelsup() const { // @@protoc_insertion_point(field_get:pg_query.Var.varlevelsup) return _internal_varlevelsup(); } inline void Var::_internal_set_varlevelsup(uint32_t value) { _impl_.varlevelsup_ = value; } inline void Var::set_varlevelsup(uint32_t value) { _internal_set_varlevelsup(value); // @@protoc_insertion_point(field_set:pg_query.Var.varlevelsup) } // uint32 varnosyn = 8 [json_name = "varnosyn"]; inline void Var::clear_varnosyn() { _impl_.varnosyn_ = 0u; } inline uint32_t Var::_internal_varnosyn() const { return _impl_.varnosyn_; } inline uint32_t Var::varnosyn() const { // @@protoc_insertion_point(field_get:pg_query.Var.varnosyn) return _internal_varnosyn(); } inline void Var::_internal_set_varnosyn(uint32_t value) { _impl_.varnosyn_ = value; } inline void Var::set_varnosyn(uint32_t value) { _internal_set_varnosyn(value); // @@protoc_insertion_point(field_set:pg_query.Var.varnosyn) } // int32 varattnosyn = 9 [json_name = "varattnosyn"]; inline void Var::clear_varattnosyn() { _impl_.varattnosyn_ = 0; } inline int32_t Var::_internal_varattnosyn() const { return _impl_.varattnosyn_; } inline int32_t Var::varattnosyn() const { // @@protoc_insertion_point(field_get:pg_query.Var.varattnosyn) return _internal_varattnosyn(); } inline void Var::_internal_set_varattnosyn(int32_t value) { _impl_.varattnosyn_ = value; } inline void Var::set_varattnosyn(int32_t value) { _internal_set_varattnosyn(value); // @@protoc_insertion_point(field_set:pg_query.Var.varattnosyn) } // int32 location = 10 [json_name = "location"]; inline void Var::clear_location() { _impl_.location_ = 0; } inline int32_t Var::_internal_location() const { return _impl_.location_; } inline int32_t Var::location() const { // @@protoc_insertion_point(field_get:pg_query.Var.location) return _internal_location(); } inline void Var::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void Var::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.Var.location) } // ------------------------------------------------------------------- // Param // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool Param::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool Param::has_xpr() const { return _internal_has_xpr(); } inline void Param::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& Param::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.Param.xpr) return _internal_xpr(); } inline void Param::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Param.xpr) } inline ::pg_query::Node* Param::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* Param::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.Param.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* Param::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* Param::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.Param.xpr) } // .pg_query.ParamKind paramkind = 2 [json_name = "paramkind"]; inline void Param::clear_paramkind() { _impl_.paramkind_ = 0; } inline ::pg_query::ParamKind Param::_internal_paramkind() const { return static_cast< ::pg_query::ParamKind >(_impl_.paramkind_); } inline ::pg_query::ParamKind Param::paramkind() const { // @@protoc_insertion_point(field_get:pg_query.Param.paramkind) return _internal_paramkind(); } inline void Param::_internal_set_paramkind(::pg_query::ParamKind value) { _impl_.paramkind_ = value; } inline void Param::set_paramkind(::pg_query::ParamKind value) { _internal_set_paramkind(value); // @@protoc_insertion_point(field_set:pg_query.Param.paramkind) } // int32 paramid = 3 [json_name = "paramid"]; inline void Param::clear_paramid() { _impl_.paramid_ = 0; } inline int32_t Param::_internal_paramid() const { return _impl_.paramid_; } inline int32_t Param::paramid() const { // @@protoc_insertion_point(field_get:pg_query.Param.paramid) return _internal_paramid(); } inline void Param::_internal_set_paramid(int32_t value) { _impl_.paramid_ = value; } inline void Param::set_paramid(int32_t value) { _internal_set_paramid(value); // @@protoc_insertion_point(field_set:pg_query.Param.paramid) } // uint32 paramtype = 4 [json_name = "paramtype"]; inline void Param::clear_paramtype() { _impl_.paramtype_ = 0u; } inline uint32_t Param::_internal_paramtype() const { return _impl_.paramtype_; } inline uint32_t Param::paramtype() const { // @@protoc_insertion_point(field_get:pg_query.Param.paramtype) return _internal_paramtype(); } inline void Param::_internal_set_paramtype(uint32_t value) { _impl_.paramtype_ = value; } inline void Param::set_paramtype(uint32_t value) { _internal_set_paramtype(value); // @@protoc_insertion_point(field_set:pg_query.Param.paramtype) } // int32 paramtypmod = 5 [json_name = "paramtypmod"]; inline void Param::clear_paramtypmod() { _impl_.paramtypmod_ = 0; } inline int32_t Param::_internal_paramtypmod() const { return _impl_.paramtypmod_; } inline int32_t Param::paramtypmod() const { // @@protoc_insertion_point(field_get:pg_query.Param.paramtypmod) return _internal_paramtypmod(); } inline void Param::_internal_set_paramtypmod(int32_t value) { _impl_.paramtypmod_ = value; } inline void Param::set_paramtypmod(int32_t value) { _internal_set_paramtypmod(value); // @@protoc_insertion_point(field_set:pg_query.Param.paramtypmod) } // uint32 paramcollid = 6 [json_name = "paramcollid"]; inline void Param::clear_paramcollid() { _impl_.paramcollid_ = 0u; } inline uint32_t Param::_internal_paramcollid() const { return _impl_.paramcollid_; } inline uint32_t Param::paramcollid() const { // @@protoc_insertion_point(field_get:pg_query.Param.paramcollid) return _internal_paramcollid(); } inline void Param::_internal_set_paramcollid(uint32_t value) { _impl_.paramcollid_ = value; } inline void Param::set_paramcollid(uint32_t value) { _internal_set_paramcollid(value); // @@protoc_insertion_point(field_set:pg_query.Param.paramcollid) } // int32 location = 7 [json_name = "location"]; inline void Param::clear_location() { _impl_.location_ = 0; } inline int32_t Param::_internal_location() const { return _impl_.location_; } inline int32_t Param::location() const { // @@protoc_insertion_point(field_get:pg_query.Param.location) return _internal_location(); } inline void Param::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void Param::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.Param.location) } // ------------------------------------------------------------------- // Aggref // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool Aggref::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool Aggref::has_xpr() const { return _internal_has_xpr(); } inline void Aggref::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& Aggref::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.Aggref.xpr) return _internal_xpr(); } inline void Aggref::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Aggref.xpr) } inline ::pg_query::Node* Aggref::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* Aggref::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.Aggref.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* Aggref::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* Aggref::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.Aggref.xpr) } // uint32 aggfnoid = 2 [json_name = "aggfnoid"]; inline void Aggref::clear_aggfnoid() { _impl_.aggfnoid_ = 0u; } inline uint32_t Aggref::_internal_aggfnoid() const { return _impl_.aggfnoid_; } inline uint32_t Aggref::aggfnoid() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggfnoid) return _internal_aggfnoid(); } inline void Aggref::_internal_set_aggfnoid(uint32_t value) { _impl_.aggfnoid_ = value; } inline void Aggref::set_aggfnoid(uint32_t value) { _internal_set_aggfnoid(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggfnoid) } // uint32 aggtype = 3 [json_name = "aggtype"]; inline void Aggref::clear_aggtype() { _impl_.aggtype_ = 0u; } inline uint32_t Aggref::_internal_aggtype() const { return _impl_.aggtype_; } inline uint32_t Aggref::aggtype() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggtype) return _internal_aggtype(); } inline void Aggref::_internal_set_aggtype(uint32_t value) { _impl_.aggtype_ = value; } inline void Aggref::set_aggtype(uint32_t value) { _internal_set_aggtype(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggtype) } // uint32 aggcollid = 4 [json_name = "aggcollid"]; inline void Aggref::clear_aggcollid() { _impl_.aggcollid_ = 0u; } inline uint32_t Aggref::_internal_aggcollid() const { return _impl_.aggcollid_; } inline uint32_t Aggref::aggcollid() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggcollid) return _internal_aggcollid(); } inline void Aggref::_internal_set_aggcollid(uint32_t value) { _impl_.aggcollid_ = value; } inline void Aggref::set_aggcollid(uint32_t value) { _internal_set_aggcollid(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggcollid) } // uint32 inputcollid = 5 [json_name = "inputcollid"]; inline void Aggref::clear_inputcollid() { _impl_.inputcollid_ = 0u; } inline uint32_t Aggref::_internal_inputcollid() const { return _impl_.inputcollid_; } inline uint32_t Aggref::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.inputcollid) return _internal_inputcollid(); } inline void Aggref::_internal_set_inputcollid(uint32_t value) { _impl_.inputcollid_ = value; } inline void Aggref::set_inputcollid(uint32_t value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.inputcollid) } // uint32 aggtranstype = 6 [json_name = "aggtranstype"]; inline void Aggref::clear_aggtranstype() { _impl_.aggtranstype_ = 0u; } inline uint32_t Aggref::_internal_aggtranstype() const { return _impl_.aggtranstype_; } inline uint32_t Aggref::aggtranstype() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggtranstype) return _internal_aggtranstype(); } inline void Aggref::_internal_set_aggtranstype(uint32_t value) { _impl_.aggtranstype_ = value; } inline void Aggref::set_aggtranstype(uint32_t value) { _internal_set_aggtranstype(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggtranstype) } // repeated .pg_query.Node aggargtypes = 7 [json_name = "aggargtypes"]; inline int Aggref::_internal_aggargtypes_size() const { return _impl_.aggargtypes_.size(); } inline int Aggref::aggargtypes_size() const { return _internal_aggargtypes_size(); } inline void Aggref::clear_aggargtypes() { _impl_.aggargtypes_.Clear(); } inline ::pg_query::Node* Aggref::mutable_aggargtypes(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggargtypes) return _impl_.aggargtypes_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Aggref::mutable_aggargtypes() { // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.aggargtypes) return &_impl_.aggargtypes_; } inline const ::pg_query::Node& Aggref::_internal_aggargtypes(int index) const { return _impl_.aggargtypes_.Get(index); } inline const ::pg_query::Node& Aggref::aggargtypes(int index) const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggargtypes) return _internal_aggargtypes(index); } inline ::pg_query::Node* Aggref::_internal_add_aggargtypes() { return _impl_.aggargtypes_.Add(); } inline ::pg_query::Node* Aggref::add_aggargtypes() { ::pg_query::Node* _add = _internal_add_aggargtypes(); // @@protoc_insertion_point(field_add:pg_query.Aggref.aggargtypes) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Aggref::aggargtypes() const { // @@protoc_insertion_point(field_list:pg_query.Aggref.aggargtypes) return _impl_.aggargtypes_; } // repeated .pg_query.Node aggdirectargs = 8 [json_name = "aggdirectargs"]; inline int Aggref::_internal_aggdirectargs_size() const { return _impl_.aggdirectargs_.size(); } inline int Aggref::aggdirectargs_size() const { return _internal_aggdirectargs_size(); } inline void Aggref::clear_aggdirectargs() { _impl_.aggdirectargs_.Clear(); } inline ::pg_query::Node* Aggref::mutable_aggdirectargs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggdirectargs) return _impl_.aggdirectargs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Aggref::mutable_aggdirectargs() { // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.aggdirectargs) return &_impl_.aggdirectargs_; } inline const ::pg_query::Node& Aggref::_internal_aggdirectargs(int index) const { return _impl_.aggdirectargs_.Get(index); } inline const ::pg_query::Node& Aggref::aggdirectargs(int index) const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggdirectargs) return _internal_aggdirectargs(index); } inline ::pg_query::Node* Aggref::_internal_add_aggdirectargs() { return _impl_.aggdirectargs_.Add(); } inline ::pg_query::Node* Aggref::add_aggdirectargs() { ::pg_query::Node* _add = _internal_add_aggdirectargs(); // @@protoc_insertion_point(field_add:pg_query.Aggref.aggdirectargs) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Aggref::aggdirectargs() const { // @@protoc_insertion_point(field_list:pg_query.Aggref.aggdirectargs) return _impl_.aggdirectargs_; } // repeated .pg_query.Node args = 9 [json_name = "args"]; inline int Aggref::_internal_args_size() const { return _impl_.args_.size(); } inline int Aggref::args_size() const { return _internal_args_size(); } inline void Aggref::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* Aggref::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Aggref::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.args) return &_impl_.args_; } inline const ::pg_query::Node& Aggref::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& Aggref::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.Aggref.args) return _internal_args(index); } inline ::pg_query::Node* Aggref::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* Aggref::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.Aggref.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Aggref::args() const { // @@protoc_insertion_point(field_list:pg_query.Aggref.args) return _impl_.args_; } // repeated .pg_query.Node aggorder = 10 [json_name = "aggorder"]; inline int Aggref::_internal_aggorder_size() const { return _impl_.aggorder_.size(); } inline int Aggref::aggorder_size() const { return _internal_aggorder_size(); } inline void Aggref::clear_aggorder() { _impl_.aggorder_.Clear(); } inline ::pg_query::Node* Aggref::mutable_aggorder(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggorder) return _impl_.aggorder_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Aggref::mutable_aggorder() { // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.aggorder) return &_impl_.aggorder_; } inline const ::pg_query::Node& Aggref::_internal_aggorder(int index) const { return _impl_.aggorder_.Get(index); } inline const ::pg_query::Node& Aggref::aggorder(int index) const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggorder) return _internal_aggorder(index); } inline ::pg_query::Node* Aggref::_internal_add_aggorder() { return _impl_.aggorder_.Add(); } inline ::pg_query::Node* Aggref::add_aggorder() { ::pg_query::Node* _add = _internal_add_aggorder(); // @@protoc_insertion_point(field_add:pg_query.Aggref.aggorder) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Aggref::aggorder() const { // @@protoc_insertion_point(field_list:pg_query.Aggref.aggorder) return _impl_.aggorder_; } // repeated .pg_query.Node aggdistinct = 11 [json_name = "aggdistinct"]; inline int Aggref::_internal_aggdistinct_size() const { return _impl_.aggdistinct_.size(); } inline int Aggref::aggdistinct_size() const { return _internal_aggdistinct_size(); } inline void Aggref::clear_aggdistinct() { _impl_.aggdistinct_.Clear(); } inline ::pg_query::Node* Aggref::mutable_aggdistinct(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggdistinct) return _impl_.aggdistinct_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Aggref::mutable_aggdistinct() { // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.aggdistinct) return &_impl_.aggdistinct_; } inline const ::pg_query::Node& Aggref::_internal_aggdistinct(int index) const { return _impl_.aggdistinct_.Get(index); } inline const ::pg_query::Node& Aggref::aggdistinct(int index) const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggdistinct) return _internal_aggdistinct(index); } inline ::pg_query::Node* Aggref::_internal_add_aggdistinct() { return _impl_.aggdistinct_.Add(); } inline ::pg_query::Node* Aggref::add_aggdistinct() { ::pg_query::Node* _add = _internal_add_aggdistinct(); // @@protoc_insertion_point(field_add:pg_query.Aggref.aggdistinct) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Aggref::aggdistinct() const { // @@protoc_insertion_point(field_list:pg_query.Aggref.aggdistinct) return _impl_.aggdistinct_; } // .pg_query.Node aggfilter = 12 [json_name = "aggfilter"]; inline bool Aggref::_internal_has_aggfilter() const { return this != internal_default_instance() && _impl_.aggfilter_ != nullptr; } inline bool Aggref::has_aggfilter() const { return _internal_has_aggfilter(); } inline void Aggref::clear_aggfilter() { if (GetArenaForAllocation() == nullptr && _impl_.aggfilter_ != nullptr) { delete _impl_.aggfilter_; } _impl_.aggfilter_ = nullptr; } inline const ::pg_query::Node& Aggref::_internal_aggfilter() const { 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 { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggfilter) return _internal_aggfilter(); } inline void Aggref::unsafe_arena_set_allocated_aggfilter( ::pg_query::Node* aggfilter) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.aggfilter_); } _impl_.aggfilter_ = aggfilter; if (aggfilter) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Aggref.aggfilter) } inline ::pg_query::Node* Aggref::release_aggfilter() { ::pg_query::Node* temp = _impl_.aggfilter_; _impl_.aggfilter_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* Aggref::unsafe_arena_release_aggfilter() { // @@protoc_insertion_point(field_release:pg_query.Aggref.aggfilter) ::pg_query::Node* temp = _impl_.aggfilter_; _impl_.aggfilter_ = nullptr; return temp; } inline ::pg_query::Node* Aggref::_internal_mutable_aggfilter() { if (_impl_.aggfilter_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.aggfilter_ = p; } return _impl_.aggfilter_; } inline ::pg_query::Node* Aggref::mutable_aggfilter() { ::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* aggfilter) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.aggfilter_; } if (aggfilter) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(aggfilter); if (message_arena != submessage_arena) { aggfilter = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, aggfilter, submessage_arena); } } else { } _impl_.aggfilter_ = aggfilter; // @@protoc_insertion_point(field_set_allocated:pg_query.Aggref.aggfilter) } // bool aggstar = 13 [json_name = "aggstar"]; inline void Aggref::clear_aggstar() { _impl_.aggstar_ = false; } inline bool Aggref::_internal_aggstar() const { return _impl_.aggstar_; } inline bool Aggref::aggstar() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggstar) return _internal_aggstar(); } inline void Aggref::_internal_set_aggstar(bool value) { _impl_.aggstar_ = value; } inline void Aggref::set_aggstar(bool value) { _internal_set_aggstar(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggstar) } // bool aggvariadic = 14 [json_name = "aggvariadic"]; inline void Aggref::clear_aggvariadic() { _impl_.aggvariadic_ = false; } inline bool Aggref::_internal_aggvariadic() const { return _impl_.aggvariadic_; } inline bool Aggref::aggvariadic() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggvariadic) return _internal_aggvariadic(); } inline void Aggref::_internal_set_aggvariadic(bool value) { _impl_.aggvariadic_ = value; } inline void Aggref::set_aggvariadic(bool value) { _internal_set_aggvariadic(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggvariadic) } // string aggkind = 15 [json_name = "aggkind"]; inline void Aggref::clear_aggkind() { _impl_.aggkind_.ClearToEmpty(); } inline const std::string& Aggref::aggkind() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggkind) return _internal_aggkind(); } template inline PROTOBUF_ALWAYS_INLINE void Aggref::set_aggkind(ArgT0&& arg0, ArgT... args) { _impl_.aggkind_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggkind) } inline std::string* Aggref::mutable_aggkind() { 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 { return _impl_.aggkind_.Get(); } inline void Aggref::_internal_set_aggkind(const std::string& value) { _impl_.aggkind_.Set(value, GetArenaForAllocation()); } inline std::string* Aggref::_internal_mutable_aggkind() { return _impl_.aggkind_.Mutable(GetArenaForAllocation()); } inline std::string* Aggref::release_aggkind() { // @@protoc_insertion_point(field_release:pg_query.Aggref.aggkind) return _impl_.aggkind_.Release(); } inline void Aggref::set_allocated_aggkind(std::string* aggkind) { if (aggkind != nullptr) { } else { } _impl_.aggkind_.SetAllocated(aggkind, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.aggkind_.IsDefault()) { _impl_.aggkind_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Aggref.aggkind) } // uint32 agglevelsup = 16 [json_name = "agglevelsup"]; inline void Aggref::clear_agglevelsup() { _impl_.agglevelsup_ = 0u; } inline uint32_t Aggref::_internal_agglevelsup() const { return _impl_.agglevelsup_; } inline uint32_t Aggref::agglevelsup() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.agglevelsup) return _internal_agglevelsup(); } inline void Aggref::_internal_set_agglevelsup(uint32_t value) { _impl_.agglevelsup_ = value; } inline void Aggref::set_agglevelsup(uint32_t value) { _internal_set_agglevelsup(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.agglevelsup) } // .pg_query.AggSplit aggsplit = 17 [json_name = "aggsplit"]; inline void Aggref::clear_aggsplit() { _impl_.aggsplit_ = 0; } inline ::pg_query::AggSplit Aggref::_internal_aggsplit() const { return static_cast< ::pg_query::AggSplit >(_impl_.aggsplit_); } inline ::pg_query::AggSplit Aggref::aggsplit() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggsplit) return _internal_aggsplit(); } inline void Aggref::_internal_set_aggsplit(::pg_query::AggSplit value) { _impl_.aggsplit_ = value; } inline void Aggref::set_aggsplit(::pg_query::AggSplit value) { _internal_set_aggsplit(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggsplit) } // int32 aggno = 18 [json_name = "aggno"]; inline void Aggref::clear_aggno() { _impl_.aggno_ = 0; } inline int32_t Aggref::_internal_aggno() const { return _impl_.aggno_; } inline int32_t Aggref::aggno() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggno) return _internal_aggno(); } inline void Aggref::_internal_set_aggno(int32_t value) { _impl_.aggno_ = value; } inline void Aggref::set_aggno(int32_t value) { _internal_set_aggno(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggno) } // int32 aggtransno = 19 [json_name = "aggtransno"]; inline void Aggref::clear_aggtransno() { _impl_.aggtransno_ = 0; } inline int32_t Aggref::_internal_aggtransno() const { return _impl_.aggtransno_; } inline int32_t Aggref::aggtransno() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggtransno) return _internal_aggtransno(); } inline void Aggref::_internal_set_aggtransno(int32_t value) { _impl_.aggtransno_ = value; } inline void Aggref::set_aggtransno(int32_t value) { _internal_set_aggtransno(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggtransno) } // int32 location = 20 [json_name = "location"]; inline void Aggref::clear_location() { _impl_.location_ = 0; } inline int32_t Aggref::_internal_location() const { return _impl_.location_; } inline int32_t Aggref::location() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.location) return _internal_location(); } inline void Aggref::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void Aggref::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.location) } // ------------------------------------------------------------------- // GroupingFunc // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool GroupingFunc::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool GroupingFunc::has_xpr() const { return _internal_has_xpr(); } inline void GroupingFunc::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& GroupingFunc::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.xpr) return _internal_xpr(); } inline void GroupingFunc::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.GroupingFunc.xpr) } inline ::pg_query::Node* GroupingFunc::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* GroupingFunc::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.GroupingFunc.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* GroupingFunc::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* GroupingFunc::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.GroupingFunc.xpr) } // repeated .pg_query.Node args = 2 [json_name = "args"]; inline int GroupingFunc::_internal_args_size() const { return _impl_.args_.size(); } inline int GroupingFunc::args_size() const { return _internal_args_size(); } inline void GroupingFunc::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* GroupingFunc::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GroupingFunc.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GroupingFunc::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.GroupingFunc.args) return &_impl_.args_; } inline const ::pg_query::Node& GroupingFunc::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& GroupingFunc::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.args) return _internal_args(index); } inline ::pg_query::Node* GroupingFunc::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* GroupingFunc::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.GroupingFunc.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GroupingFunc::args() const { // @@protoc_insertion_point(field_list:pg_query.GroupingFunc.args) return _impl_.args_; } // repeated .pg_query.Node refs = 3 [json_name = "refs"]; inline int GroupingFunc::_internal_refs_size() const { return _impl_.refs_.size(); } inline int GroupingFunc::refs_size() const { return _internal_refs_size(); } inline void GroupingFunc::clear_refs() { _impl_.refs_.Clear(); } inline ::pg_query::Node* GroupingFunc::mutable_refs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GroupingFunc.refs) return _impl_.refs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GroupingFunc::mutable_refs() { // @@protoc_insertion_point(field_mutable_list:pg_query.GroupingFunc.refs) return &_impl_.refs_; } inline const ::pg_query::Node& GroupingFunc::_internal_refs(int index) const { return _impl_.refs_.Get(index); } inline const ::pg_query::Node& GroupingFunc::refs(int index) const { // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.refs) return _internal_refs(index); } inline ::pg_query::Node* GroupingFunc::_internal_add_refs() { return _impl_.refs_.Add(); } inline ::pg_query::Node* GroupingFunc::add_refs() { ::pg_query::Node* _add = _internal_add_refs(); // @@protoc_insertion_point(field_add:pg_query.GroupingFunc.refs) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GroupingFunc::refs() const { // @@protoc_insertion_point(field_list:pg_query.GroupingFunc.refs) return _impl_.refs_; } // repeated .pg_query.Node cols = 4 [json_name = "cols"]; inline int GroupingFunc::_internal_cols_size() const { return _impl_.cols_.size(); } inline int GroupingFunc::cols_size() const { return _internal_cols_size(); } inline void GroupingFunc::clear_cols() { _impl_.cols_.Clear(); } inline ::pg_query::Node* GroupingFunc::mutable_cols(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GroupingFunc.cols) return _impl_.cols_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GroupingFunc::mutable_cols() { // @@protoc_insertion_point(field_mutable_list:pg_query.GroupingFunc.cols) return &_impl_.cols_; } inline const ::pg_query::Node& GroupingFunc::_internal_cols(int index) const { return _impl_.cols_.Get(index); } inline const ::pg_query::Node& GroupingFunc::cols(int index) const { // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.cols) return _internal_cols(index); } inline ::pg_query::Node* GroupingFunc::_internal_add_cols() { return _impl_.cols_.Add(); } inline ::pg_query::Node* GroupingFunc::add_cols() { ::pg_query::Node* _add = _internal_add_cols(); // @@protoc_insertion_point(field_add:pg_query.GroupingFunc.cols) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GroupingFunc::cols() const { // @@protoc_insertion_point(field_list:pg_query.GroupingFunc.cols) return _impl_.cols_; } // uint32 agglevelsup = 5 [json_name = "agglevelsup"]; inline void GroupingFunc::clear_agglevelsup() { _impl_.agglevelsup_ = 0u; } inline uint32_t GroupingFunc::_internal_agglevelsup() const { return _impl_.agglevelsup_; } inline uint32_t GroupingFunc::agglevelsup() const { // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.agglevelsup) return _internal_agglevelsup(); } inline void GroupingFunc::_internal_set_agglevelsup(uint32_t value) { _impl_.agglevelsup_ = value; } inline void GroupingFunc::set_agglevelsup(uint32_t value) { _internal_set_agglevelsup(value); // @@protoc_insertion_point(field_set:pg_query.GroupingFunc.agglevelsup) } // int32 location = 6 [json_name = "location"]; inline void GroupingFunc::clear_location() { _impl_.location_ = 0; } inline int32_t GroupingFunc::_internal_location() const { return _impl_.location_; } inline int32_t GroupingFunc::location() const { // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.location) return _internal_location(); } inline void GroupingFunc::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void GroupingFunc::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.GroupingFunc.location) } // ------------------------------------------------------------------- // WindowFunc // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool WindowFunc::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool WindowFunc::has_xpr() const { return _internal_has_xpr(); } inline void WindowFunc::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& WindowFunc::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.xpr) return _internal_xpr(); } inline void WindowFunc::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowFunc.xpr) } inline ::pg_query::Node* WindowFunc::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* WindowFunc::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.WindowFunc.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* WindowFunc::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* WindowFunc::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.WindowFunc.xpr) } // uint32 winfnoid = 2 [json_name = "winfnoid"]; inline void WindowFunc::clear_winfnoid() { _impl_.winfnoid_ = 0u; } inline uint32_t WindowFunc::_internal_winfnoid() const { return _impl_.winfnoid_; } inline uint32_t WindowFunc::winfnoid() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.winfnoid) return _internal_winfnoid(); } inline void WindowFunc::_internal_set_winfnoid(uint32_t value) { _impl_.winfnoid_ = value; } inline void WindowFunc::set_winfnoid(uint32_t value) { _internal_set_winfnoid(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.winfnoid) } // uint32 wintype = 3 [json_name = "wintype"]; inline void WindowFunc::clear_wintype() { _impl_.wintype_ = 0u; } inline uint32_t WindowFunc::_internal_wintype() const { return _impl_.wintype_; } inline uint32_t WindowFunc::wintype() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.wintype) return _internal_wintype(); } inline void WindowFunc::_internal_set_wintype(uint32_t value) { _impl_.wintype_ = value; } inline void WindowFunc::set_wintype(uint32_t value) { _internal_set_wintype(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.wintype) } // uint32 wincollid = 4 [json_name = "wincollid"]; inline void WindowFunc::clear_wincollid() { _impl_.wincollid_ = 0u; } inline uint32_t WindowFunc::_internal_wincollid() const { return _impl_.wincollid_; } inline uint32_t WindowFunc::wincollid() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.wincollid) return _internal_wincollid(); } inline void WindowFunc::_internal_set_wincollid(uint32_t value) { _impl_.wincollid_ = value; } inline void WindowFunc::set_wincollid(uint32_t value) { _internal_set_wincollid(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.wincollid) } // uint32 inputcollid = 5 [json_name = "inputcollid"]; inline void WindowFunc::clear_inputcollid() { _impl_.inputcollid_ = 0u; } inline uint32_t WindowFunc::_internal_inputcollid() const { return _impl_.inputcollid_; } inline uint32_t WindowFunc::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.inputcollid) return _internal_inputcollid(); } inline void WindowFunc::_internal_set_inputcollid(uint32_t value) { _impl_.inputcollid_ = value; } inline void WindowFunc::set_inputcollid(uint32_t value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.inputcollid) } // repeated .pg_query.Node args = 6 [json_name = "args"]; inline int WindowFunc::_internal_args_size() const { return _impl_.args_.size(); } inline int WindowFunc::args_size() const { return _internal_args_size(); } inline void WindowFunc::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* WindowFunc::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.WindowFunc.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* WindowFunc::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.WindowFunc.args) return &_impl_.args_; } inline const ::pg_query::Node& WindowFunc::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& WindowFunc::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.args) return _internal_args(index); } inline ::pg_query::Node* WindowFunc::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* WindowFunc::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.WindowFunc.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& WindowFunc::args() const { // @@protoc_insertion_point(field_list:pg_query.WindowFunc.args) return _impl_.args_; } // .pg_query.Node aggfilter = 7 [json_name = "aggfilter"]; inline bool WindowFunc::_internal_has_aggfilter() const { return this != internal_default_instance() && _impl_.aggfilter_ != nullptr; } inline bool WindowFunc::has_aggfilter() const { return _internal_has_aggfilter(); } inline void WindowFunc::clear_aggfilter() { if (GetArenaForAllocation() == nullptr && _impl_.aggfilter_ != nullptr) { delete _impl_.aggfilter_; } _impl_.aggfilter_ = nullptr; } inline const ::pg_query::Node& WindowFunc::_internal_aggfilter() const { 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 { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.aggfilter) return _internal_aggfilter(); } inline void WindowFunc::unsafe_arena_set_allocated_aggfilter( ::pg_query::Node* aggfilter) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.aggfilter_); } _impl_.aggfilter_ = aggfilter; if (aggfilter) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowFunc.aggfilter) } inline ::pg_query::Node* WindowFunc::release_aggfilter() { ::pg_query::Node* temp = _impl_.aggfilter_; _impl_.aggfilter_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* WindowFunc::unsafe_arena_release_aggfilter() { // @@protoc_insertion_point(field_release:pg_query.WindowFunc.aggfilter) ::pg_query::Node* temp = _impl_.aggfilter_; _impl_.aggfilter_ = nullptr; return temp; } inline ::pg_query::Node* WindowFunc::_internal_mutable_aggfilter() { if (_impl_.aggfilter_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.aggfilter_ = p; } return _impl_.aggfilter_; } inline ::pg_query::Node* WindowFunc::mutable_aggfilter() { ::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* aggfilter) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.aggfilter_; } if (aggfilter) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(aggfilter); if (message_arena != submessage_arena) { aggfilter = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, aggfilter, submessage_arena); } } else { } _impl_.aggfilter_ = aggfilter; // @@protoc_insertion_point(field_set_allocated:pg_query.WindowFunc.aggfilter) } // uint32 winref = 8 [json_name = "winref"]; inline void WindowFunc::clear_winref() { _impl_.winref_ = 0u; } inline uint32_t WindowFunc::_internal_winref() const { return _impl_.winref_; } inline uint32_t WindowFunc::winref() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.winref) return _internal_winref(); } inline void WindowFunc::_internal_set_winref(uint32_t value) { _impl_.winref_ = value; } inline void WindowFunc::set_winref(uint32_t value) { _internal_set_winref(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.winref) } // bool winstar = 9 [json_name = "winstar"]; inline void WindowFunc::clear_winstar() { _impl_.winstar_ = false; } inline bool WindowFunc::_internal_winstar() const { return _impl_.winstar_; } inline bool WindowFunc::winstar() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.winstar) return _internal_winstar(); } inline void WindowFunc::_internal_set_winstar(bool value) { _impl_.winstar_ = value; } inline void WindowFunc::set_winstar(bool value) { _internal_set_winstar(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.winstar) } // bool winagg = 10 [json_name = "winagg"]; inline void WindowFunc::clear_winagg() { _impl_.winagg_ = false; } inline bool WindowFunc::_internal_winagg() const { return _impl_.winagg_; } inline bool WindowFunc::winagg() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.winagg) return _internal_winagg(); } inline void WindowFunc::_internal_set_winagg(bool value) { _impl_.winagg_ = value; } inline void WindowFunc::set_winagg(bool value) { _internal_set_winagg(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.winagg) } // int32 location = 11 [json_name = "location"]; inline void WindowFunc::clear_location() { _impl_.location_ = 0; } inline int32_t WindowFunc::_internal_location() const { return _impl_.location_; } inline int32_t WindowFunc::location() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.location) return _internal_location(); } inline void WindowFunc::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void WindowFunc::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.location) } // ------------------------------------------------------------------- // SubscriptingRef // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool SubscriptingRef::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool SubscriptingRef::has_xpr() const { return _internal_has_xpr(); } inline void SubscriptingRef::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& SubscriptingRef::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.xpr) return _internal_xpr(); } inline void SubscriptingRef::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubscriptingRef.xpr) } inline ::pg_query::Node* SubscriptingRef::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SubscriptingRef::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.SubscriptingRef.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* SubscriptingRef::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* SubscriptingRef::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SubscriptingRef.xpr) } // uint32 refcontainertype = 2 [json_name = "refcontainertype"]; inline void SubscriptingRef::clear_refcontainertype() { _impl_.refcontainertype_ = 0u; } inline uint32_t SubscriptingRef::_internal_refcontainertype() const { return _impl_.refcontainertype_; } inline uint32_t SubscriptingRef::refcontainertype() const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refcontainertype) return _internal_refcontainertype(); } inline void SubscriptingRef::_internal_set_refcontainertype(uint32_t value) { _impl_.refcontainertype_ = value; } inline void SubscriptingRef::set_refcontainertype(uint32_t value) { _internal_set_refcontainertype(value); // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.refcontainertype) } // uint32 refelemtype = 3 [json_name = "refelemtype"]; inline void SubscriptingRef::clear_refelemtype() { _impl_.refelemtype_ = 0u; } inline uint32_t SubscriptingRef::_internal_refelemtype() const { return _impl_.refelemtype_; } inline uint32_t SubscriptingRef::refelemtype() const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refelemtype) return _internal_refelemtype(); } inline void SubscriptingRef::_internal_set_refelemtype(uint32_t value) { _impl_.refelemtype_ = value; } inline void SubscriptingRef::set_refelemtype(uint32_t value) { _internal_set_refelemtype(value); // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.refelemtype) } // uint32 refrestype = 4 [json_name = "refrestype"]; inline void SubscriptingRef::clear_refrestype() { _impl_.refrestype_ = 0u; } inline uint32_t SubscriptingRef::_internal_refrestype() const { return _impl_.refrestype_; } inline uint32_t SubscriptingRef::refrestype() const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refrestype) return _internal_refrestype(); } inline void SubscriptingRef::_internal_set_refrestype(uint32_t value) { _impl_.refrestype_ = value; } inline void SubscriptingRef::set_refrestype(uint32_t value) { _internal_set_refrestype(value); // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.refrestype) } // int32 reftypmod = 5 [json_name = "reftypmod"]; inline void SubscriptingRef::clear_reftypmod() { _impl_.reftypmod_ = 0; } inline int32_t SubscriptingRef::_internal_reftypmod() const { return _impl_.reftypmod_; } inline int32_t SubscriptingRef::reftypmod() const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.reftypmod) return _internal_reftypmod(); } inline void SubscriptingRef::_internal_set_reftypmod(int32_t value) { _impl_.reftypmod_ = value; } inline void SubscriptingRef::set_reftypmod(int32_t value) { _internal_set_reftypmod(value); // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.reftypmod) } // uint32 refcollid = 6 [json_name = "refcollid"]; inline void SubscriptingRef::clear_refcollid() { _impl_.refcollid_ = 0u; } inline uint32_t SubscriptingRef::_internal_refcollid() const { return _impl_.refcollid_; } inline uint32_t SubscriptingRef::refcollid() const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refcollid) return _internal_refcollid(); } inline void SubscriptingRef::_internal_set_refcollid(uint32_t value) { _impl_.refcollid_ = value; } inline void SubscriptingRef::set_refcollid(uint32_t value) { _internal_set_refcollid(value); // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.refcollid) } // repeated .pg_query.Node refupperindexpr = 7 [json_name = "refupperindexpr"]; inline int SubscriptingRef::_internal_refupperindexpr_size() const { return _impl_.refupperindexpr_.size(); } inline int SubscriptingRef::refupperindexpr_size() const { return _internal_refupperindexpr_size(); } inline void SubscriptingRef::clear_refupperindexpr() { _impl_.refupperindexpr_.Clear(); } inline ::pg_query::Node* SubscriptingRef::mutable_refupperindexpr(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SubscriptingRef.refupperindexpr) return _impl_.refupperindexpr_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SubscriptingRef::mutable_refupperindexpr() { // @@protoc_insertion_point(field_mutable_list:pg_query.SubscriptingRef.refupperindexpr) return &_impl_.refupperindexpr_; } inline const ::pg_query::Node& SubscriptingRef::_internal_refupperindexpr(int index) const { return _impl_.refupperindexpr_.Get(index); } inline const ::pg_query::Node& SubscriptingRef::refupperindexpr(int index) const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refupperindexpr) return _internal_refupperindexpr(index); } inline ::pg_query::Node* SubscriptingRef::_internal_add_refupperindexpr() { return _impl_.refupperindexpr_.Add(); } inline ::pg_query::Node* SubscriptingRef::add_refupperindexpr() { ::pg_query::Node* _add = _internal_add_refupperindexpr(); // @@protoc_insertion_point(field_add:pg_query.SubscriptingRef.refupperindexpr) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SubscriptingRef::refupperindexpr() const { // @@protoc_insertion_point(field_list:pg_query.SubscriptingRef.refupperindexpr) return _impl_.refupperindexpr_; } // repeated .pg_query.Node reflowerindexpr = 8 [json_name = "reflowerindexpr"]; inline int SubscriptingRef::_internal_reflowerindexpr_size() const { return _impl_.reflowerindexpr_.size(); } inline int SubscriptingRef::reflowerindexpr_size() const { return _internal_reflowerindexpr_size(); } inline void SubscriptingRef::clear_reflowerindexpr() { _impl_.reflowerindexpr_.Clear(); } inline ::pg_query::Node* SubscriptingRef::mutable_reflowerindexpr(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SubscriptingRef.reflowerindexpr) return _impl_.reflowerindexpr_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SubscriptingRef::mutable_reflowerindexpr() { // @@protoc_insertion_point(field_mutable_list:pg_query.SubscriptingRef.reflowerindexpr) return &_impl_.reflowerindexpr_; } inline const ::pg_query::Node& SubscriptingRef::_internal_reflowerindexpr(int index) const { return _impl_.reflowerindexpr_.Get(index); } inline const ::pg_query::Node& SubscriptingRef::reflowerindexpr(int index) const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.reflowerindexpr) return _internal_reflowerindexpr(index); } inline ::pg_query::Node* SubscriptingRef::_internal_add_reflowerindexpr() { return _impl_.reflowerindexpr_.Add(); } inline ::pg_query::Node* SubscriptingRef::add_reflowerindexpr() { ::pg_query::Node* _add = _internal_add_reflowerindexpr(); // @@protoc_insertion_point(field_add:pg_query.SubscriptingRef.reflowerindexpr) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SubscriptingRef::reflowerindexpr() const { // @@protoc_insertion_point(field_list:pg_query.SubscriptingRef.reflowerindexpr) return _impl_.reflowerindexpr_; } // .pg_query.Node refexpr = 9 [json_name = "refexpr"]; inline bool SubscriptingRef::_internal_has_refexpr() const { return this != internal_default_instance() && _impl_.refexpr_ != nullptr; } inline bool SubscriptingRef::has_refexpr() const { return _internal_has_refexpr(); } inline void SubscriptingRef::clear_refexpr() { if (GetArenaForAllocation() == nullptr && _impl_.refexpr_ != nullptr) { delete _impl_.refexpr_; } _impl_.refexpr_ = nullptr; } inline const ::pg_query::Node& SubscriptingRef::_internal_refexpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refexpr) return _internal_refexpr(); } inline void SubscriptingRef::unsafe_arena_set_allocated_refexpr( ::pg_query::Node* refexpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.refexpr_); } _impl_.refexpr_ = refexpr; if (refexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubscriptingRef.refexpr) } inline ::pg_query::Node* SubscriptingRef::release_refexpr() { ::pg_query::Node* temp = _impl_.refexpr_; _impl_.refexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SubscriptingRef::unsafe_arena_release_refexpr() { // @@protoc_insertion_point(field_release:pg_query.SubscriptingRef.refexpr) ::pg_query::Node* temp = _impl_.refexpr_; _impl_.refexpr_ = nullptr; return temp; } inline ::pg_query::Node* SubscriptingRef::_internal_mutable_refexpr() { if (_impl_.refexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.refexpr_ = p; } return _impl_.refexpr_; } inline ::pg_query::Node* SubscriptingRef::mutable_refexpr() { ::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* refexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.refexpr_; } if (refexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(refexpr); if (message_arena != submessage_arena) { refexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, refexpr, submessage_arena); } } else { } _impl_.refexpr_ = refexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SubscriptingRef.refexpr) } // .pg_query.Node refassgnexpr = 10 [json_name = "refassgnexpr"]; inline bool SubscriptingRef::_internal_has_refassgnexpr() const { return this != internal_default_instance() && _impl_.refassgnexpr_ != nullptr; } inline bool SubscriptingRef::has_refassgnexpr() const { return _internal_has_refassgnexpr(); } inline void SubscriptingRef::clear_refassgnexpr() { if (GetArenaForAllocation() == nullptr && _impl_.refassgnexpr_ != nullptr) { delete _impl_.refassgnexpr_; } _impl_.refassgnexpr_ = nullptr; } inline const ::pg_query::Node& SubscriptingRef::_internal_refassgnexpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refassgnexpr) return _internal_refassgnexpr(); } inline void SubscriptingRef::unsafe_arena_set_allocated_refassgnexpr( ::pg_query::Node* refassgnexpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.refassgnexpr_); } _impl_.refassgnexpr_ = refassgnexpr; if (refassgnexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubscriptingRef.refassgnexpr) } inline ::pg_query::Node* SubscriptingRef::release_refassgnexpr() { ::pg_query::Node* temp = _impl_.refassgnexpr_; _impl_.refassgnexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SubscriptingRef::unsafe_arena_release_refassgnexpr() { // @@protoc_insertion_point(field_release:pg_query.SubscriptingRef.refassgnexpr) ::pg_query::Node* temp = _impl_.refassgnexpr_; _impl_.refassgnexpr_ = nullptr; return temp; } inline ::pg_query::Node* SubscriptingRef::_internal_mutable_refassgnexpr() { if (_impl_.refassgnexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.refassgnexpr_ = p; } return _impl_.refassgnexpr_; } inline ::pg_query::Node* SubscriptingRef::mutable_refassgnexpr() { ::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* refassgnexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.refassgnexpr_; } if (refassgnexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(refassgnexpr); if (message_arena != submessage_arena) { refassgnexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, refassgnexpr, submessage_arena); } } else { } _impl_.refassgnexpr_ = refassgnexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SubscriptingRef.refassgnexpr) } // ------------------------------------------------------------------- // FuncExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool FuncExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool FuncExpr::has_xpr() const { return _internal_has_xpr(); } inline void FuncExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& FuncExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.xpr) return _internal_xpr(); } inline void FuncExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FuncExpr.xpr) } inline ::pg_query::Node* FuncExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* FuncExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.FuncExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* FuncExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* FuncExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.FuncExpr.xpr) } // uint32 funcid = 2 [json_name = "funcid"]; inline void FuncExpr::clear_funcid() { _impl_.funcid_ = 0u; } inline uint32_t FuncExpr::_internal_funcid() const { return _impl_.funcid_; } inline uint32_t FuncExpr::funcid() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcid) return _internal_funcid(); } inline void FuncExpr::_internal_set_funcid(uint32_t value) { _impl_.funcid_ = value; } inline void FuncExpr::set_funcid(uint32_t value) { _internal_set_funcid(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcid) } // uint32 funcresulttype = 3 [json_name = "funcresulttype"]; inline void FuncExpr::clear_funcresulttype() { _impl_.funcresulttype_ = 0u; } inline uint32_t FuncExpr::_internal_funcresulttype() const { return _impl_.funcresulttype_; } inline uint32_t FuncExpr::funcresulttype() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcresulttype) return _internal_funcresulttype(); } inline void FuncExpr::_internal_set_funcresulttype(uint32_t value) { _impl_.funcresulttype_ = value; } inline void FuncExpr::set_funcresulttype(uint32_t value) { _internal_set_funcresulttype(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcresulttype) } // bool funcretset = 4 [json_name = "funcretset"]; inline void FuncExpr::clear_funcretset() { _impl_.funcretset_ = false; } inline bool FuncExpr::_internal_funcretset() const { return _impl_.funcretset_; } inline bool FuncExpr::funcretset() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcretset) return _internal_funcretset(); } inline void FuncExpr::_internal_set_funcretset(bool value) { _impl_.funcretset_ = value; } inline void FuncExpr::set_funcretset(bool value) { _internal_set_funcretset(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcretset) } // bool funcvariadic = 5 [json_name = "funcvariadic"]; inline void FuncExpr::clear_funcvariadic() { _impl_.funcvariadic_ = false; } inline bool FuncExpr::_internal_funcvariadic() const { return _impl_.funcvariadic_; } inline bool FuncExpr::funcvariadic() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcvariadic) return _internal_funcvariadic(); } inline void FuncExpr::_internal_set_funcvariadic(bool value) { _impl_.funcvariadic_ = value; } inline void FuncExpr::set_funcvariadic(bool value) { _internal_set_funcvariadic(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcvariadic) } // .pg_query.CoercionForm funcformat = 6 [json_name = "funcformat"]; inline void FuncExpr::clear_funcformat() { _impl_.funcformat_ = 0; } inline ::pg_query::CoercionForm FuncExpr::_internal_funcformat() const { return static_cast< ::pg_query::CoercionForm >(_impl_.funcformat_); } inline ::pg_query::CoercionForm FuncExpr::funcformat() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcformat) return _internal_funcformat(); } inline void FuncExpr::_internal_set_funcformat(::pg_query::CoercionForm value) { _impl_.funcformat_ = value; } inline void FuncExpr::set_funcformat(::pg_query::CoercionForm value) { _internal_set_funcformat(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcformat) } // uint32 funccollid = 7 [json_name = "funccollid"]; inline void FuncExpr::clear_funccollid() { _impl_.funccollid_ = 0u; } inline uint32_t FuncExpr::_internal_funccollid() const { return _impl_.funccollid_; } inline uint32_t FuncExpr::funccollid() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funccollid) return _internal_funccollid(); } inline void FuncExpr::_internal_set_funccollid(uint32_t value) { _impl_.funccollid_ = value; } inline void FuncExpr::set_funccollid(uint32_t value) { _internal_set_funccollid(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funccollid) } // uint32 inputcollid = 8 [json_name = "inputcollid"]; inline void FuncExpr::clear_inputcollid() { _impl_.inputcollid_ = 0u; } inline uint32_t FuncExpr::_internal_inputcollid() const { return _impl_.inputcollid_; } inline uint32_t FuncExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.inputcollid) return _internal_inputcollid(); } inline void FuncExpr::_internal_set_inputcollid(uint32_t value) { _impl_.inputcollid_ = value; } inline void FuncExpr::set_inputcollid(uint32_t value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.inputcollid) } // repeated .pg_query.Node args = 9 [json_name = "args"]; inline int FuncExpr::_internal_args_size() const { return _impl_.args_.size(); } inline int FuncExpr::args_size() const { return _internal_args_size(); } inline void FuncExpr::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* FuncExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.FuncExpr.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* FuncExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.FuncExpr.args) return &_impl_.args_; } inline const ::pg_query::Node& FuncExpr::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& FuncExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.args) return _internal_args(index); } inline ::pg_query::Node* FuncExpr::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* FuncExpr::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.FuncExpr.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& FuncExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.FuncExpr.args) return _impl_.args_; } // int32 location = 10 [json_name = "location"]; inline void FuncExpr::clear_location() { _impl_.location_ = 0; } inline int32_t FuncExpr::_internal_location() const { return _impl_.location_; } inline int32_t FuncExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.location) return _internal_location(); } inline void FuncExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void FuncExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.location) } // ------------------------------------------------------------------- // NamedArgExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool NamedArgExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool NamedArgExpr::has_xpr() const { return _internal_has_xpr(); } inline void NamedArgExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& NamedArgExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.xpr) return _internal_xpr(); } inline void NamedArgExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NamedArgExpr.xpr) } inline ::pg_query::Node* NamedArgExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* NamedArgExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.NamedArgExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* NamedArgExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* NamedArgExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.NamedArgExpr.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool NamedArgExpr::_internal_has_arg() const { return this != internal_default_instance() && _impl_.arg_ != nullptr; } inline bool NamedArgExpr::has_arg() const { return _internal_has_arg(); } inline void NamedArgExpr::clear_arg() { if (GetArenaForAllocation() == nullptr && _impl_.arg_ != nullptr) { delete _impl_.arg_; } _impl_.arg_ = nullptr; } inline const ::pg_query::Node& NamedArgExpr::_internal_arg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.arg) return _internal_arg(); } inline void NamedArgExpr::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arg_); } _impl_.arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NamedArgExpr.arg) } inline ::pg_query::Node* NamedArgExpr::release_arg() { ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* NamedArgExpr::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.NamedArgExpr.arg) ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* NamedArgExpr::_internal_mutable_arg() { if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.arg_ = p; } return _impl_.arg_; } inline ::pg_query::Node* NamedArgExpr::mutable_arg() { ::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* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } _impl_.arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.NamedArgExpr.arg) } // string name = 3 [json_name = "name"]; inline void NamedArgExpr::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& NamedArgExpr::name() const { // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void NamedArgExpr::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.NamedArgExpr.name) } inline std::string* NamedArgExpr::mutable_name() { 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 { return _impl_.name_.Get(); } inline void NamedArgExpr::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* NamedArgExpr::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* NamedArgExpr::release_name() { // @@protoc_insertion_point(field_release:pg_query.NamedArgExpr.name) return _impl_.name_.Release(); } inline void NamedArgExpr::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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() { _impl_.argnumber_ = 0; } inline int32_t NamedArgExpr::_internal_argnumber() const { return _impl_.argnumber_; } inline int32_t NamedArgExpr::argnumber() const { // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.argnumber) return _internal_argnumber(); } inline void NamedArgExpr::_internal_set_argnumber(int32_t value) { _impl_.argnumber_ = value; } inline void NamedArgExpr::set_argnumber(int32_t value) { _internal_set_argnumber(value); // @@protoc_insertion_point(field_set:pg_query.NamedArgExpr.argnumber) } // int32 location = 5 [json_name = "location"]; inline void NamedArgExpr::clear_location() { _impl_.location_ = 0; } inline int32_t NamedArgExpr::_internal_location() const { return _impl_.location_; } inline int32_t NamedArgExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.location) return _internal_location(); } inline void NamedArgExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void NamedArgExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.NamedArgExpr.location) } // ------------------------------------------------------------------- // OpExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool OpExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool OpExpr::has_xpr() const { return _internal_has_xpr(); } inline void OpExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& OpExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.OpExpr.xpr) return _internal_xpr(); } inline void OpExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OpExpr.xpr) } inline ::pg_query::Node* OpExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* OpExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.OpExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* OpExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* OpExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.OpExpr.xpr) } // uint32 opno = 2 [json_name = "opno"]; inline void OpExpr::clear_opno() { _impl_.opno_ = 0u; } inline uint32_t OpExpr::_internal_opno() const { return _impl_.opno_; } inline uint32_t OpExpr::opno() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.opno) return _internal_opno(); } inline void OpExpr::_internal_set_opno(uint32_t value) { _impl_.opno_ = value; } inline void OpExpr::set_opno(uint32_t value) { _internal_set_opno(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.opno) } // uint32 opfuncid = 3 [json_name = "opfuncid"]; inline void OpExpr::clear_opfuncid() { _impl_.opfuncid_ = 0u; } inline uint32_t OpExpr::_internal_opfuncid() const { return _impl_.opfuncid_; } inline uint32_t OpExpr::opfuncid() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.opfuncid) return _internal_opfuncid(); } inline void OpExpr::_internal_set_opfuncid(uint32_t value) { _impl_.opfuncid_ = value; } inline void OpExpr::set_opfuncid(uint32_t value) { _internal_set_opfuncid(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.opfuncid) } // uint32 opresulttype = 4 [json_name = "opresulttype"]; inline void OpExpr::clear_opresulttype() { _impl_.opresulttype_ = 0u; } inline uint32_t OpExpr::_internal_opresulttype() const { return _impl_.opresulttype_; } inline uint32_t OpExpr::opresulttype() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.opresulttype) return _internal_opresulttype(); } inline void OpExpr::_internal_set_opresulttype(uint32_t value) { _impl_.opresulttype_ = value; } inline void OpExpr::set_opresulttype(uint32_t value) { _internal_set_opresulttype(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.opresulttype) } // bool opretset = 5 [json_name = "opretset"]; inline void OpExpr::clear_opretset() { _impl_.opretset_ = false; } inline bool OpExpr::_internal_opretset() const { return _impl_.opretset_; } inline bool OpExpr::opretset() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.opretset) return _internal_opretset(); } inline void OpExpr::_internal_set_opretset(bool value) { _impl_.opretset_ = value; } inline void OpExpr::set_opretset(bool value) { _internal_set_opretset(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.opretset) } // uint32 opcollid = 6 [json_name = "opcollid"]; inline void OpExpr::clear_opcollid() { _impl_.opcollid_ = 0u; } inline uint32_t OpExpr::_internal_opcollid() const { return _impl_.opcollid_; } inline uint32_t OpExpr::opcollid() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.opcollid) return _internal_opcollid(); } inline void OpExpr::_internal_set_opcollid(uint32_t value) { _impl_.opcollid_ = value; } inline void OpExpr::set_opcollid(uint32_t value) { _internal_set_opcollid(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.opcollid) } // uint32 inputcollid = 7 [json_name = "inputcollid"]; inline void OpExpr::clear_inputcollid() { _impl_.inputcollid_ = 0u; } inline uint32_t OpExpr::_internal_inputcollid() const { return _impl_.inputcollid_; } inline uint32_t OpExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.inputcollid) return _internal_inputcollid(); } inline void OpExpr::_internal_set_inputcollid(uint32_t value) { _impl_.inputcollid_ = value; } inline void OpExpr::set_inputcollid(uint32_t value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.inputcollid) } // repeated .pg_query.Node args = 8 [json_name = "args"]; inline int OpExpr::_internal_args_size() const { return _impl_.args_.size(); } inline int OpExpr::args_size() const { return _internal_args_size(); } inline void OpExpr::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* OpExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.OpExpr.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* OpExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.OpExpr.args) return &_impl_.args_; } inline const ::pg_query::Node& OpExpr::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& OpExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.args) return _internal_args(index); } inline ::pg_query::Node* OpExpr::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* OpExpr::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.OpExpr.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& OpExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.OpExpr.args) return _impl_.args_; } // int32 location = 9 [json_name = "location"]; inline void OpExpr::clear_location() { _impl_.location_ = 0; } inline int32_t OpExpr::_internal_location() const { return _impl_.location_; } inline int32_t OpExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.location) return _internal_location(); } inline void OpExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void OpExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.location) } // ------------------------------------------------------------------- // DistinctExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool DistinctExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool DistinctExpr::has_xpr() const { return _internal_has_xpr(); } inline void DistinctExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& DistinctExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.xpr) return _internal_xpr(); } inline void DistinctExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DistinctExpr.xpr) } inline ::pg_query::Node* DistinctExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* DistinctExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.DistinctExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* DistinctExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* DistinctExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.DistinctExpr.xpr) } // uint32 opno = 2 [json_name = "opno"]; inline void DistinctExpr::clear_opno() { _impl_.opno_ = 0u; } inline uint32_t DistinctExpr::_internal_opno() const { return _impl_.opno_; } inline uint32_t DistinctExpr::opno() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opno) return _internal_opno(); } inline void DistinctExpr::_internal_set_opno(uint32_t value) { _impl_.opno_ = value; } inline void DistinctExpr::set_opno(uint32_t value) { _internal_set_opno(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opno) } // uint32 opfuncid = 3 [json_name = "opfuncid"]; inline void DistinctExpr::clear_opfuncid() { _impl_.opfuncid_ = 0u; } inline uint32_t DistinctExpr::_internal_opfuncid() const { return _impl_.opfuncid_; } inline uint32_t DistinctExpr::opfuncid() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opfuncid) return _internal_opfuncid(); } inline void DistinctExpr::_internal_set_opfuncid(uint32_t value) { _impl_.opfuncid_ = value; } inline void DistinctExpr::set_opfuncid(uint32_t value) { _internal_set_opfuncid(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opfuncid) } // uint32 opresulttype = 4 [json_name = "opresulttype"]; inline void DistinctExpr::clear_opresulttype() { _impl_.opresulttype_ = 0u; } inline uint32_t DistinctExpr::_internal_opresulttype() const { return _impl_.opresulttype_; } inline uint32_t DistinctExpr::opresulttype() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opresulttype) return _internal_opresulttype(); } inline void DistinctExpr::_internal_set_opresulttype(uint32_t value) { _impl_.opresulttype_ = value; } inline void DistinctExpr::set_opresulttype(uint32_t value) { _internal_set_opresulttype(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opresulttype) } // bool opretset = 5 [json_name = "opretset"]; inline void DistinctExpr::clear_opretset() { _impl_.opretset_ = false; } inline bool DistinctExpr::_internal_opretset() const { return _impl_.opretset_; } inline bool DistinctExpr::opretset() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opretset) return _internal_opretset(); } inline void DistinctExpr::_internal_set_opretset(bool value) { _impl_.opretset_ = value; } inline void DistinctExpr::set_opretset(bool value) { _internal_set_opretset(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opretset) } // uint32 opcollid = 6 [json_name = "opcollid"]; inline void DistinctExpr::clear_opcollid() { _impl_.opcollid_ = 0u; } inline uint32_t DistinctExpr::_internal_opcollid() const { return _impl_.opcollid_; } inline uint32_t DistinctExpr::opcollid() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opcollid) return _internal_opcollid(); } inline void DistinctExpr::_internal_set_opcollid(uint32_t value) { _impl_.opcollid_ = value; } inline void DistinctExpr::set_opcollid(uint32_t value) { _internal_set_opcollid(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opcollid) } // uint32 inputcollid = 7 [json_name = "inputcollid"]; inline void DistinctExpr::clear_inputcollid() { _impl_.inputcollid_ = 0u; } inline uint32_t DistinctExpr::_internal_inputcollid() const { return _impl_.inputcollid_; } inline uint32_t DistinctExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.inputcollid) return _internal_inputcollid(); } inline void DistinctExpr::_internal_set_inputcollid(uint32_t value) { _impl_.inputcollid_ = value; } inline void DistinctExpr::set_inputcollid(uint32_t value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.inputcollid) } // repeated .pg_query.Node args = 8 [json_name = "args"]; inline int DistinctExpr::_internal_args_size() const { return _impl_.args_.size(); } inline int DistinctExpr::args_size() const { return _internal_args_size(); } inline void DistinctExpr::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* DistinctExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DistinctExpr.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DistinctExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.DistinctExpr.args) return &_impl_.args_; } inline const ::pg_query::Node& DistinctExpr::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& DistinctExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.args) return _internal_args(index); } inline ::pg_query::Node* DistinctExpr::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* DistinctExpr::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.DistinctExpr.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DistinctExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.DistinctExpr.args) return _impl_.args_; } // int32 location = 9 [json_name = "location"]; inline void DistinctExpr::clear_location() { _impl_.location_ = 0; } inline int32_t DistinctExpr::_internal_location() const { return _impl_.location_; } inline int32_t DistinctExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.location) return _internal_location(); } inline void DistinctExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void DistinctExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.location) } // ------------------------------------------------------------------- // NullIfExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool NullIfExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool NullIfExpr::has_xpr() const { return _internal_has_xpr(); } inline void NullIfExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& NullIfExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.xpr) return _internal_xpr(); } inline void NullIfExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NullIfExpr.xpr) } inline ::pg_query::Node* NullIfExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* NullIfExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.NullIfExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* NullIfExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* NullIfExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.NullIfExpr.xpr) } // uint32 opno = 2 [json_name = "opno"]; inline void NullIfExpr::clear_opno() { _impl_.opno_ = 0u; } inline uint32_t NullIfExpr::_internal_opno() const { return _impl_.opno_; } inline uint32_t NullIfExpr::opno() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opno) return _internal_opno(); } inline void NullIfExpr::_internal_set_opno(uint32_t value) { _impl_.opno_ = value; } inline void NullIfExpr::set_opno(uint32_t value) { _internal_set_opno(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opno) } // uint32 opfuncid = 3 [json_name = "opfuncid"]; inline void NullIfExpr::clear_opfuncid() { _impl_.opfuncid_ = 0u; } inline uint32_t NullIfExpr::_internal_opfuncid() const { return _impl_.opfuncid_; } inline uint32_t NullIfExpr::opfuncid() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opfuncid) return _internal_opfuncid(); } inline void NullIfExpr::_internal_set_opfuncid(uint32_t value) { _impl_.opfuncid_ = value; } inline void NullIfExpr::set_opfuncid(uint32_t value) { _internal_set_opfuncid(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opfuncid) } // uint32 opresulttype = 4 [json_name = "opresulttype"]; inline void NullIfExpr::clear_opresulttype() { _impl_.opresulttype_ = 0u; } inline uint32_t NullIfExpr::_internal_opresulttype() const { return _impl_.opresulttype_; } inline uint32_t NullIfExpr::opresulttype() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opresulttype) return _internal_opresulttype(); } inline void NullIfExpr::_internal_set_opresulttype(uint32_t value) { _impl_.opresulttype_ = value; } inline void NullIfExpr::set_opresulttype(uint32_t value) { _internal_set_opresulttype(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opresulttype) } // bool opretset = 5 [json_name = "opretset"]; inline void NullIfExpr::clear_opretset() { _impl_.opretset_ = false; } inline bool NullIfExpr::_internal_opretset() const { return _impl_.opretset_; } inline bool NullIfExpr::opretset() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opretset) return _internal_opretset(); } inline void NullIfExpr::_internal_set_opretset(bool value) { _impl_.opretset_ = value; } inline void NullIfExpr::set_opretset(bool value) { _internal_set_opretset(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opretset) } // uint32 opcollid = 6 [json_name = "opcollid"]; inline void NullIfExpr::clear_opcollid() { _impl_.opcollid_ = 0u; } inline uint32_t NullIfExpr::_internal_opcollid() const { return _impl_.opcollid_; } inline uint32_t NullIfExpr::opcollid() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opcollid) return _internal_opcollid(); } inline void NullIfExpr::_internal_set_opcollid(uint32_t value) { _impl_.opcollid_ = value; } inline void NullIfExpr::set_opcollid(uint32_t value) { _internal_set_opcollid(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opcollid) } // uint32 inputcollid = 7 [json_name = "inputcollid"]; inline void NullIfExpr::clear_inputcollid() { _impl_.inputcollid_ = 0u; } inline uint32_t NullIfExpr::_internal_inputcollid() const { return _impl_.inputcollid_; } inline uint32_t NullIfExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.inputcollid) return _internal_inputcollid(); } inline void NullIfExpr::_internal_set_inputcollid(uint32_t value) { _impl_.inputcollid_ = value; } inline void NullIfExpr::set_inputcollid(uint32_t value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.inputcollid) } // repeated .pg_query.Node args = 8 [json_name = "args"]; inline int NullIfExpr::_internal_args_size() const { return _impl_.args_.size(); } inline int NullIfExpr::args_size() const { return _internal_args_size(); } inline void NullIfExpr::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* NullIfExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.NullIfExpr.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* NullIfExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.NullIfExpr.args) return &_impl_.args_; } inline const ::pg_query::Node& NullIfExpr::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& NullIfExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.args) return _internal_args(index); } inline ::pg_query::Node* NullIfExpr::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* NullIfExpr::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.NullIfExpr.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& NullIfExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.NullIfExpr.args) return _impl_.args_; } // int32 location = 9 [json_name = "location"]; inline void NullIfExpr::clear_location() { _impl_.location_ = 0; } inline int32_t NullIfExpr::_internal_location() const { return _impl_.location_; } inline int32_t NullIfExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.location) return _internal_location(); } inline void NullIfExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void NullIfExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.location) } // ------------------------------------------------------------------- // ScalarArrayOpExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool ScalarArrayOpExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool ScalarArrayOpExpr::has_xpr() const { return _internal_has_xpr(); } inline void ScalarArrayOpExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& ScalarArrayOpExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.xpr) return _internal_xpr(); } inline void ScalarArrayOpExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ScalarArrayOpExpr.xpr) } inline ::pg_query::Node* ScalarArrayOpExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* ScalarArrayOpExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.ScalarArrayOpExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* ScalarArrayOpExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* ScalarArrayOpExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.ScalarArrayOpExpr.xpr) } // uint32 opno = 2 [json_name = "opno"]; inline void ScalarArrayOpExpr::clear_opno() { _impl_.opno_ = 0u; } inline uint32_t ScalarArrayOpExpr::_internal_opno() const { return _impl_.opno_; } inline uint32_t ScalarArrayOpExpr::opno() const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.opno) return _internal_opno(); } inline void ScalarArrayOpExpr::_internal_set_opno(uint32_t value) { _impl_.opno_ = value; } inline void ScalarArrayOpExpr::set_opno(uint32_t value) { _internal_set_opno(value); // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.opno) } // uint32 opfuncid = 3 [json_name = "opfuncid"]; inline void ScalarArrayOpExpr::clear_opfuncid() { _impl_.opfuncid_ = 0u; } inline uint32_t ScalarArrayOpExpr::_internal_opfuncid() const { return _impl_.opfuncid_; } inline uint32_t ScalarArrayOpExpr::opfuncid() const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.opfuncid) return _internal_opfuncid(); } inline void ScalarArrayOpExpr::_internal_set_opfuncid(uint32_t value) { _impl_.opfuncid_ = value; } inline void ScalarArrayOpExpr::set_opfuncid(uint32_t value) { _internal_set_opfuncid(value); // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.opfuncid) } // uint32 hashfuncid = 4 [json_name = "hashfuncid"]; inline void ScalarArrayOpExpr::clear_hashfuncid() { _impl_.hashfuncid_ = 0u; } inline uint32_t ScalarArrayOpExpr::_internal_hashfuncid() const { return _impl_.hashfuncid_; } inline uint32_t ScalarArrayOpExpr::hashfuncid() const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.hashfuncid) return _internal_hashfuncid(); } inline void ScalarArrayOpExpr::_internal_set_hashfuncid(uint32_t value) { _impl_.hashfuncid_ = value; } inline void ScalarArrayOpExpr::set_hashfuncid(uint32_t value) { _internal_set_hashfuncid(value); // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.hashfuncid) } // uint32 negfuncid = 5 [json_name = "negfuncid"]; inline void ScalarArrayOpExpr::clear_negfuncid() { _impl_.negfuncid_ = 0u; } inline uint32_t ScalarArrayOpExpr::_internal_negfuncid() const { return _impl_.negfuncid_; } inline uint32_t ScalarArrayOpExpr::negfuncid() const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.negfuncid) return _internal_negfuncid(); } inline void ScalarArrayOpExpr::_internal_set_negfuncid(uint32_t value) { _impl_.negfuncid_ = value; } inline void ScalarArrayOpExpr::set_negfuncid(uint32_t value) { _internal_set_negfuncid(value); // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.negfuncid) } // bool use_or = 6 [json_name = "useOr"]; inline void ScalarArrayOpExpr::clear_use_or() { _impl_.use_or_ = false; } inline bool ScalarArrayOpExpr::_internal_use_or() const { return _impl_.use_or_; } inline bool ScalarArrayOpExpr::use_or() const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.use_or) return _internal_use_or(); } inline void ScalarArrayOpExpr::_internal_set_use_or(bool value) { _impl_.use_or_ = value; } inline void ScalarArrayOpExpr::set_use_or(bool value) { _internal_set_use_or(value); // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.use_or) } // uint32 inputcollid = 7 [json_name = "inputcollid"]; inline void ScalarArrayOpExpr::clear_inputcollid() { _impl_.inputcollid_ = 0u; } inline uint32_t ScalarArrayOpExpr::_internal_inputcollid() const { return _impl_.inputcollid_; } inline uint32_t ScalarArrayOpExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.inputcollid) return _internal_inputcollid(); } inline void ScalarArrayOpExpr::_internal_set_inputcollid(uint32_t value) { _impl_.inputcollid_ = value; } inline void ScalarArrayOpExpr::set_inputcollid(uint32_t value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.inputcollid) } // repeated .pg_query.Node args = 8 [json_name = "args"]; inline int ScalarArrayOpExpr::_internal_args_size() const { return _impl_.args_.size(); } inline int ScalarArrayOpExpr::args_size() const { return _internal_args_size(); } inline void ScalarArrayOpExpr::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* ScalarArrayOpExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ScalarArrayOpExpr.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ScalarArrayOpExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.ScalarArrayOpExpr.args) return &_impl_.args_; } inline const ::pg_query::Node& ScalarArrayOpExpr::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& ScalarArrayOpExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.args) return _internal_args(index); } inline ::pg_query::Node* ScalarArrayOpExpr::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* ScalarArrayOpExpr::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.ScalarArrayOpExpr.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ScalarArrayOpExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.ScalarArrayOpExpr.args) return _impl_.args_; } // int32 location = 9 [json_name = "location"]; inline void ScalarArrayOpExpr::clear_location() { _impl_.location_ = 0; } inline int32_t ScalarArrayOpExpr::_internal_location() const { return _impl_.location_; } inline int32_t ScalarArrayOpExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.location) return _internal_location(); } inline void ScalarArrayOpExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void ScalarArrayOpExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.location) } // ------------------------------------------------------------------- // BoolExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool BoolExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool BoolExpr::has_xpr() const { return _internal_has_xpr(); } inline void BoolExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& BoolExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.BoolExpr.xpr) return _internal_xpr(); } inline void BoolExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.BoolExpr.xpr) } inline ::pg_query::Node* BoolExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* BoolExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.BoolExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* BoolExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* BoolExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.BoolExpr.xpr) } // .pg_query.BoolExprType boolop = 2 [json_name = "boolop"]; inline void BoolExpr::clear_boolop() { _impl_.boolop_ = 0; } inline ::pg_query::BoolExprType BoolExpr::_internal_boolop() const { return static_cast< ::pg_query::BoolExprType >(_impl_.boolop_); } inline ::pg_query::BoolExprType BoolExpr::boolop() const { // @@protoc_insertion_point(field_get:pg_query.BoolExpr.boolop) return _internal_boolop(); } inline void BoolExpr::_internal_set_boolop(::pg_query::BoolExprType value) { _impl_.boolop_ = value; } inline void BoolExpr::set_boolop(::pg_query::BoolExprType value) { _internal_set_boolop(value); // @@protoc_insertion_point(field_set:pg_query.BoolExpr.boolop) } // repeated .pg_query.Node args = 3 [json_name = "args"]; inline int BoolExpr::_internal_args_size() const { return _impl_.args_.size(); } inline int BoolExpr::args_size() const { return _internal_args_size(); } inline void BoolExpr::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* BoolExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.BoolExpr.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* BoolExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.BoolExpr.args) return &_impl_.args_; } inline const ::pg_query::Node& BoolExpr::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& BoolExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.BoolExpr.args) return _internal_args(index); } inline ::pg_query::Node* BoolExpr::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* BoolExpr::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.BoolExpr.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& BoolExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.BoolExpr.args) return _impl_.args_; } // int32 location = 4 [json_name = "location"]; inline void BoolExpr::clear_location() { _impl_.location_ = 0; } inline int32_t BoolExpr::_internal_location() const { return _impl_.location_; } inline int32_t BoolExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.BoolExpr.location) return _internal_location(); } inline void BoolExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void BoolExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.BoolExpr.location) } // ------------------------------------------------------------------- // SubLink // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool SubLink::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool SubLink::has_xpr() const { return _internal_has_xpr(); } inline void SubLink::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& SubLink::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SubLink.xpr) return _internal_xpr(); } inline void SubLink::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubLink.xpr) } inline ::pg_query::Node* SubLink::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SubLink::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.SubLink.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* SubLink::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* SubLink::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SubLink.xpr) } // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; inline void SubLink::clear_sub_link_type() { _impl_.sub_link_type_ = 0; } inline ::pg_query::SubLinkType SubLink::_internal_sub_link_type() const { return static_cast< ::pg_query::SubLinkType >(_impl_.sub_link_type_); } inline ::pg_query::SubLinkType SubLink::sub_link_type() const { // @@protoc_insertion_point(field_get:pg_query.SubLink.sub_link_type) return _internal_sub_link_type(); } inline void SubLink::_internal_set_sub_link_type(::pg_query::SubLinkType value) { _impl_.sub_link_type_ = value; } inline void SubLink::set_sub_link_type(::pg_query::SubLinkType value) { _internal_set_sub_link_type(value); // @@protoc_insertion_point(field_set:pg_query.SubLink.sub_link_type) } // int32 sub_link_id = 3 [json_name = "subLinkId"]; inline void SubLink::clear_sub_link_id() { _impl_.sub_link_id_ = 0; } inline int32_t SubLink::_internal_sub_link_id() const { return _impl_.sub_link_id_; } 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::_internal_set_sub_link_id(int32_t value) { _impl_.sub_link_id_ = value; } 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) } // .pg_query.Node testexpr = 4 [json_name = "testexpr"]; inline bool SubLink::_internal_has_testexpr() const { return this != internal_default_instance() && _impl_.testexpr_ != nullptr; } inline bool SubLink::has_testexpr() const { return _internal_has_testexpr(); } inline void SubLink::clear_testexpr() { if (GetArenaForAllocation() == nullptr && _impl_.testexpr_ != nullptr) { delete _impl_.testexpr_; } _impl_.testexpr_ = nullptr; } inline const ::pg_query::Node& SubLink::_internal_testexpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SubLink.testexpr) return _internal_testexpr(); } inline void SubLink::unsafe_arena_set_allocated_testexpr( ::pg_query::Node* testexpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.testexpr_); } _impl_.testexpr_ = testexpr; if (testexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubLink.testexpr) } inline ::pg_query::Node* SubLink::release_testexpr() { ::pg_query::Node* temp = _impl_.testexpr_; _impl_.testexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SubLink::unsafe_arena_release_testexpr() { // @@protoc_insertion_point(field_release:pg_query.SubLink.testexpr) ::pg_query::Node* temp = _impl_.testexpr_; _impl_.testexpr_ = nullptr; return temp; } inline ::pg_query::Node* SubLink::_internal_mutable_testexpr() { if (_impl_.testexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.testexpr_ = p; } return _impl_.testexpr_; } inline ::pg_query::Node* SubLink::mutable_testexpr() { ::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* testexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.testexpr_; } if (testexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(testexpr); if (message_arena != submessage_arena) { testexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, testexpr, submessage_arena); } } else { } _impl_.testexpr_ = testexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SubLink.testexpr) } // repeated .pg_query.Node oper_name = 5 [json_name = "operName"]; inline int SubLink::_internal_oper_name_size() const { return _impl_.oper_name_.size(); } inline int SubLink::oper_name_size() const { return _internal_oper_name_size(); } inline void SubLink::clear_oper_name() { _impl_.oper_name_.Clear(); } inline ::pg_query::Node* SubLink::mutable_oper_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SubLink.oper_name) return _impl_.oper_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SubLink::mutable_oper_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.SubLink.oper_name) return &_impl_.oper_name_; } inline const ::pg_query::Node& SubLink::_internal_oper_name(int index) const { return _impl_.oper_name_.Get(index); } inline const ::pg_query::Node& SubLink::oper_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.SubLink.oper_name) return _internal_oper_name(index); } inline ::pg_query::Node* SubLink::_internal_add_oper_name() { return _impl_.oper_name_.Add(); } inline ::pg_query::Node* SubLink::add_oper_name() { ::pg_query::Node* _add = _internal_add_oper_name(); // @@protoc_insertion_point(field_add:pg_query.SubLink.oper_name) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SubLink::oper_name() const { // @@protoc_insertion_point(field_list:pg_query.SubLink.oper_name) return _impl_.oper_name_; } // .pg_query.Node subselect = 6 [json_name = "subselect"]; inline bool SubLink::_internal_has_subselect() const { return this != internal_default_instance() && _impl_.subselect_ != nullptr; } inline bool SubLink::has_subselect() const { return _internal_has_subselect(); } inline void SubLink::clear_subselect() { if (GetArenaForAllocation() == nullptr && _impl_.subselect_ != nullptr) { delete _impl_.subselect_; } _impl_.subselect_ = nullptr; } inline const ::pg_query::Node& SubLink::_internal_subselect() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SubLink.subselect) return _internal_subselect(); } inline void SubLink::unsafe_arena_set_allocated_subselect( ::pg_query::Node* subselect) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.subselect_); } _impl_.subselect_ = subselect; if (subselect) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubLink.subselect) } inline ::pg_query::Node* SubLink::release_subselect() { ::pg_query::Node* temp = _impl_.subselect_; _impl_.subselect_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SubLink::unsafe_arena_release_subselect() { // @@protoc_insertion_point(field_release:pg_query.SubLink.subselect) ::pg_query::Node* temp = _impl_.subselect_; _impl_.subselect_ = nullptr; return temp; } inline ::pg_query::Node* SubLink::_internal_mutable_subselect() { if (_impl_.subselect_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.subselect_ = p; } return _impl_.subselect_; } inline ::pg_query::Node* SubLink::mutable_subselect() { ::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* subselect) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.subselect_; } if (subselect) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(subselect); if (message_arena != submessage_arena) { subselect = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, subselect, submessage_arena); } } else { } _impl_.subselect_ = subselect; // @@protoc_insertion_point(field_set_allocated:pg_query.SubLink.subselect) } // int32 location = 7 [json_name = "location"]; inline void SubLink::clear_location() { _impl_.location_ = 0; } inline int32_t SubLink::_internal_location() const { return _impl_.location_; } inline int32_t SubLink::location() const { // @@protoc_insertion_point(field_get:pg_query.SubLink.location) return _internal_location(); } inline void SubLink::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void SubLink::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.SubLink.location) } // ------------------------------------------------------------------- // SubPlan // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool SubPlan::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool SubPlan::has_xpr() const { return _internal_has_xpr(); } inline void SubPlan::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& SubPlan::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SubPlan.xpr) return _internal_xpr(); } inline void SubPlan::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubPlan.xpr) } inline ::pg_query::Node* SubPlan::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SubPlan::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.SubPlan.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* SubPlan::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* SubPlan::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SubPlan.xpr) } // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; inline void SubPlan::clear_sub_link_type() { _impl_.sub_link_type_ = 0; } inline ::pg_query::SubLinkType SubPlan::_internal_sub_link_type() const { return static_cast< ::pg_query::SubLinkType >(_impl_.sub_link_type_); } inline ::pg_query::SubLinkType SubPlan::sub_link_type() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.sub_link_type) return _internal_sub_link_type(); } inline void SubPlan::_internal_set_sub_link_type(::pg_query::SubLinkType value) { _impl_.sub_link_type_ = value; } inline void SubPlan::set_sub_link_type(::pg_query::SubLinkType value) { _internal_set_sub_link_type(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.sub_link_type) } // .pg_query.Node testexpr = 3 [json_name = "testexpr"]; inline bool SubPlan::_internal_has_testexpr() const { return this != internal_default_instance() && _impl_.testexpr_ != nullptr; } inline bool SubPlan::has_testexpr() const { return _internal_has_testexpr(); } inline void SubPlan::clear_testexpr() { if (GetArenaForAllocation() == nullptr && _impl_.testexpr_ != nullptr) { delete _impl_.testexpr_; } _impl_.testexpr_ = nullptr; } inline const ::pg_query::Node& SubPlan::_internal_testexpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SubPlan.testexpr) return _internal_testexpr(); } inline void SubPlan::unsafe_arena_set_allocated_testexpr( ::pg_query::Node* testexpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.testexpr_); } _impl_.testexpr_ = testexpr; if (testexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubPlan.testexpr) } inline ::pg_query::Node* SubPlan::release_testexpr() { ::pg_query::Node* temp = _impl_.testexpr_; _impl_.testexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SubPlan::unsafe_arena_release_testexpr() { // @@protoc_insertion_point(field_release:pg_query.SubPlan.testexpr) ::pg_query::Node* temp = _impl_.testexpr_; _impl_.testexpr_ = nullptr; return temp; } inline ::pg_query::Node* SubPlan::_internal_mutable_testexpr() { if (_impl_.testexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.testexpr_ = p; } return _impl_.testexpr_; } inline ::pg_query::Node* SubPlan::mutable_testexpr() { ::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* testexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.testexpr_; } if (testexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(testexpr); if (message_arena != submessage_arena) { testexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, testexpr, submessage_arena); } } else { } _impl_.testexpr_ = testexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SubPlan.testexpr) } // repeated .pg_query.Node param_ids = 4 [json_name = "paramIds"]; inline int SubPlan::_internal_param_ids_size() const { return _impl_.param_ids_.size(); } inline int SubPlan::param_ids_size() const { return _internal_param_ids_size(); } inline void SubPlan::clear_param_ids() { _impl_.param_ids_.Clear(); } inline ::pg_query::Node* SubPlan::mutable_param_ids(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.param_ids) return _impl_.param_ids_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SubPlan::mutable_param_ids() { // @@protoc_insertion_point(field_mutable_list:pg_query.SubPlan.param_ids) return &_impl_.param_ids_; } inline const ::pg_query::Node& SubPlan::_internal_param_ids(int index) const { return _impl_.param_ids_.Get(index); } inline const ::pg_query::Node& SubPlan::param_ids(int index) const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.param_ids) return _internal_param_ids(index); } inline ::pg_query::Node* SubPlan::_internal_add_param_ids() { return _impl_.param_ids_.Add(); } inline ::pg_query::Node* SubPlan::add_param_ids() { ::pg_query::Node* _add = _internal_add_param_ids(); // @@protoc_insertion_point(field_add:pg_query.SubPlan.param_ids) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SubPlan::param_ids() const { // @@protoc_insertion_point(field_list:pg_query.SubPlan.param_ids) return _impl_.param_ids_; } // int32 plan_id = 5 [json_name = "plan_id"]; inline void SubPlan::clear_plan_id() { _impl_.plan_id_ = 0; } inline int32_t SubPlan::_internal_plan_id() const { return _impl_.plan_id_; } inline int32_t SubPlan::plan_id() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.plan_id) return _internal_plan_id(); } inline void SubPlan::_internal_set_plan_id(int32_t value) { _impl_.plan_id_ = value; } inline void SubPlan::set_plan_id(int32_t value) { _internal_set_plan_id(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.plan_id) } // string plan_name = 6 [json_name = "plan_name"]; inline void SubPlan::clear_plan_name() { _impl_.plan_name_.ClearToEmpty(); } inline const std::string& SubPlan::plan_name() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.plan_name) return _internal_plan_name(); } template inline PROTOBUF_ALWAYS_INLINE void SubPlan::set_plan_name(ArgT0&& arg0, ArgT... args) { _impl_.plan_name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.SubPlan.plan_name) } inline std::string* SubPlan::mutable_plan_name() { 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 { return _impl_.plan_name_.Get(); } inline void SubPlan::_internal_set_plan_name(const std::string& value) { _impl_.plan_name_.Set(value, GetArenaForAllocation()); } inline std::string* SubPlan::_internal_mutable_plan_name() { return _impl_.plan_name_.Mutable(GetArenaForAllocation()); } inline std::string* SubPlan::release_plan_name() { // @@protoc_insertion_point(field_release:pg_query.SubPlan.plan_name) return _impl_.plan_name_.Release(); } inline void SubPlan::set_allocated_plan_name(std::string* plan_name) { if (plan_name != nullptr) { } else { } _impl_.plan_name_.SetAllocated(plan_name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.plan_name_.IsDefault()) { _impl_.plan_name_.Set("", GetArenaForAllocation()); } #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() { _impl_.first_col_type_ = 0u; } inline uint32_t SubPlan::_internal_first_col_type() const { return _impl_.first_col_type_; } 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::_internal_set_first_col_type(uint32_t value) { _impl_.first_col_type_ = value; } 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) } // int32 first_col_typmod = 8 [json_name = "firstColTypmod"]; inline void SubPlan::clear_first_col_typmod() { _impl_.first_col_typmod_ = 0; } inline int32_t SubPlan::_internal_first_col_typmod() const { return _impl_.first_col_typmod_; } 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::_internal_set_first_col_typmod(int32_t value) { _impl_.first_col_typmod_ = value; } 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) } // uint32 first_col_collation = 9 [json_name = "firstColCollation"]; inline void SubPlan::clear_first_col_collation() { _impl_.first_col_collation_ = 0u; } inline uint32_t SubPlan::_internal_first_col_collation() const { return _impl_.first_col_collation_; } 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::_internal_set_first_col_collation(uint32_t value) { _impl_.first_col_collation_ = value; } 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) } // bool use_hash_table = 10 [json_name = "useHashTable"]; inline void SubPlan::clear_use_hash_table() { _impl_.use_hash_table_ = false; } inline bool SubPlan::_internal_use_hash_table() const { return _impl_.use_hash_table_; } inline bool SubPlan::use_hash_table() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.use_hash_table) return _internal_use_hash_table(); } inline void SubPlan::_internal_set_use_hash_table(bool value) { _impl_.use_hash_table_ = value; } inline void SubPlan::set_use_hash_table(bool value) { _internal_set_use_hash_table(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.use_hash_table) } // bool unknown_eq_false = 11 [json_name = "unknownEqFalse"]; inline void SubPlan::clear_unknown_eq_false() { _impl_.unknown_eq_false_ = false; } inline bool SubPlan::_internal_unknown_eq_false() const { return _impl_.unknown_eq_false_; } inline bool SubPlan::unknown_eq_false() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.unknown_eq_false) return _internal_unknown_eq_false(); } inline void SubPlan::_internal_set_unknown_eq_false(bool value) { _impl_.unknown_eq_false_ = value; } inline void SubPlan::set_unknown_eq_false(bool value) { _internal_set_unknown_eq_false(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.unknown_eq_false) } // bool parallel_safe = 12 [json_name = "parallel_safe"]; inline void SubPlan::clear_parallel_safe() { _impl_.parallel_safe_ = false; } inline bool SubPlan::_internal_parallel_safe() const { return _impl_.parallel_safe_; } inline bool SubPlan::parallel_safe() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.parallel_safe) return _internal_parallel_safe(); } inline void SubPlan::_internal_set_parallel_safe(bool value) { _impl_.parallel_safe_ = value; } inline void SubPlan::set_parallel_safe(bool value) { _internal_set_parallel_safe(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.parallel_safe) } // repeated .pg_query.Node set_param = 13 [json_name = "setParam"]; inline int SubPlan::_internal_set_param_size() const { return _impl_.set_param_.size(); } inline int SubPlan::set_param_size() const { return _internal_set_param_size(); } inline void SubPlan::clear_set_param() { _impl_.set_param_.Clear(); } inline ::pg_query::Node* SubPlan::mutable_set_param(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.set_param) return _impl_.set_param_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SubPlan::mutable_set_param() { // @@protoc_insertion_point(field_mutable_list:pg_query.SubPlan.set_param) return &_impl_.set_param_; } inline const ::pg_query::Node& SubPlan::_internal_set_param(int index) const { return _impl_.set_param_.Get(index); } inline const ::pg_query::Node& SubPlan::set_param(int index) const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.set_param) return _internal_set_param(index); } inline ::pg_query::Node* SubPlan::_internal_add_set_param() { return _impl_.set_param_.Add(); } inline ::pg_query::Node* SubPlan::add_set_param() { ::pg_query::Node* _add = _internal_add_set_param(); // @@protoc_insertion_point(field_add:pg_query.SubPlan.set_param) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SubPlan::set_param() const { // @@protoc_insertion_point(field_list:pg_query.SubPlan.set_param) return _impl_.set_param_; } // repeated .pg_query.Node par_param = 14 [json_name = "parParam"]; inline int SubPlan::_internal_par_param_size() const { return _impl_.par_param_.size(); } inline int SubPlan::par_param_size() const { return _internal_par_param_size(); } inline void SubPlan::clear_par_param() { _impl_.par_param_.Clear(); } inline ::pg_query::Node* SubPlan::mutable_par_param(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.par_param) return _impl_.par_param_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SubPlan::mutable_par_param() { // @@protoc_insertion_point(field_mutable_list:pg_query.SubPlan.par_param) return &_impl_.par_param_; } inline const ::pg_query::Node& SubPlan::_internal_par_param(int index) const { return _impl_.par_param_.Get(index); } inline const ::pg_query::Node& SubPlan::par_param(int index) const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.par_param) return _internal_par_param(index); } inline ::pg_query::Node* SubPlan::_internal_add_par_param() { return _impl_.par_param_.Add(); } inline ::pg_query::Node* SubPlan::add_par_param() { ::pg_query::Node* _add = _internal_add_par_param(); // @@protoc_insertion_point(field_add:pg_query.SubPlan.par_param) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SubPlan::par_param() const { // @@protoc_insertion_point(field_list:pg_query.SubPlan.par_param) return _impl_.par_param_; } // repeated .pg_query.Node args = 15 [json_name = "args"]; inline int SubPlan::_internal_args_size() const { return _impl_.args_.size(); } inline int SubPlan::args_size() const { return _internal_args_size(); } inline void SubPlan::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* SubPlan::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SubPlan::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.SubPlan.args) return &_impl_.args_; } inline const ::pg_query::Node& SubPlan::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& SubPlan::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.args) return _internal_args(index); } inline ::pg_query::Node* SubPlan::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* SubPlan::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.SubPlan.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SubPlan::args() const { // @@protoc_insertion_point(field_list:pg_query.SubPlan.args) return _impl_.args_; } // double startup_cost = 16 [json_name = "startup_cost"]; inline void SubPlan::clear_startup_cost() { _impl_.startup_cost_ = 0; } inline double SubPlan::_internal_startup_cost() const { return _impl_.startup_cost_; } inline double SubPlan::startup_cost() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.startup_cost) return _internal_startup_cost(); } inline void SubPlan::_internal_set_startup_cost(double value) { _impl_.startup_cost_ = value; } inline void SubPlan::set_startup_cost(double value) { _internal_set_startup_cost(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.startup_cost) } // double per_call_cost = 17 [json_name = "per_call_cost"]; inline void SubPlan::clear_per_call_cost() { _impl_.per_call_cost_ = 0; } inline double SubPlan::_internal_per_call_cost() const { return _impl_.per_call_cost_; } inline double SubPlan::per_call_cost() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.per_call_cost) return _internal_per_call_cost(); } inline void SubPlan::_internal_set_per_call_cost(double value) { _impl_.per_call_cost_ = value; } inline void SubPlan::set_per_call_cost(double value) { _internal_set_per_call_cost(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.per_call_cost) } // ------------------------------------------------------------------- // AlternativeSubPlan // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool AlternativeSubPlan::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool AlternativeSubPlan::has_xpr() const { return _internal_has_xpr(); } inline void AlternativeSubPlan::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& AlternativeSubPlan::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlternativeSubPlan.xpr) return _internal_xpr(); } inline void AlternativeSubPlan::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlternativeSubPlan.xpr) } inline ::pg_query::Node* AlternativeSubPlan::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* AlternativeSubPlan::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.AlternativeSubPlan.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* AlternativeSubPlan::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* AlternativeSubPlan::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.AlternativeSubPlan.xpr) } // repeated .pg_query.Node subplans = 2 [json_name = "subplans"]; inline int AlternativeSubPlan::_internal_subplans_size() const { return _impl_.subplans_.size(); } inline int AlternativeSubPlan::subplans_size() const { return _internal_subplans_size(); } inline void AlternativeSubPlan::clear_subplans() { _impl_.subplans_.Clear(); } inline ::pg_query::Node* AlternativeSubPlan::mutable_subplans(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlternativeSubPlan.subplans) return _impl_.subplans_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlternativeSubPlan::mutable_subplans() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlternativeSubPlan.subplans) return &_impl_.subplans_; } inline const ::pg_query::Node& AlternativeSubPlan::_internal_subplans(int index) const { return _impl_.subplans_.Get(index); } inline const ::pg_query::Node& AlternativeSubPlan::subplans(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlternativeSubPlan.subplans) return _internal_subplans(index); } inline ::pg_query::Node* AlternativeSubPlan::_internal_add_subplans() { return _impl_.subplans_.Add(); } inline ::pg_query::Node* AlternativeSubPlan::add_subplans() { ::pg_query::Node* _add = _internal_add_subplans(); // @@protoc_insertion_point(field_add:pg_query.AlternativeSubPlan.subplans) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlternativeSubPlan::subplans() const { // @@protoc_insertion_point(field_list:pg_query.AlternativeSubPlan.subplans) return _impl_.subplans_; } // ------------------------------------------------------------------- // FieldSelect // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool FieldSelect::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool FieldSelect::has_xpr() const { return _internal_has_xpr(); } inline void FieldSelect::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& FieldSelect::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.xpr) return _internal_xpr(); } inline void FieldSelect::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FieldSelect.xpr) } inline ::pg_query::Node* FieldSelect::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* FieldSelect::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.FieldSelect.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* FieldSelect::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* FieldSelect::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.FieldSelect.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool FieldSelect::_internal_has_arg() const { return this != internal_default_instance() && _impl_.arg_ != nullptr; } inline bool FieldSelect::has_arg() const { return _internal_has_arg(); } inline void FieldSelect::clear_arg() { if (GetArenaForAllocation() == nullptr && _impl_.arg_ != nullptr) { delete _impl_.arg_; } _impl_.arg_ = nullptr; } inline const ::pg_query::Node& FieldSelect::_internal_arg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.arg) return _internal_arg(); } inline void FieldSelect::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arg_); } _impl_.arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FieldSelect.arg) } inline ::pg_query::Node* FieldSelect::release_arg() { ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* FieldSelect::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.FieldSelect.arg) ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* FieldSelect::_internal_mutable_arg() { if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.arg_ = p; } return _impl_.arg_; } inline ::pg_query::Node* FieldSelect::mutable_arg() { ::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* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } _impl_.arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.FieldSelect.arg) } // int32 fieldnum = 3 [json_name = "fieldnum"]; inline void FieldSelect::clear_fieldnum() { _impl_.fieldnum_ = 0; } inline int32_t FieldSelect::_internal_fieldnum() const { return _impl_.fieldnum_; } inline int32_t FieldSelect::fieldnum() const { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.fieldnum) return _internal_fieldnum(); } inline void FieldSelect::_internal_set_fieldnum(int32_t value) { _impl_.fieldnum_ = value; } inline void FieldSelect::set_fieldnum(int32_t value) { _internal_set_fieldnum(value); // @@protoc_insertion_point(field_set:pg_query.FieldSelect.fieldnum) } // uint32 resulttype = 4 [json_name = "resulttype"]; inline void FieldSelect::clear_resulttype() { _impl_.resulttype_ = 0u; } inline uint32_t FieldSelect::_internal_resulttype() const { return _impl_.resulttype_; } inline uint32_t FieldSelect::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.resulttype) return _internal_resulttype(); } inline void FieldSelect::_internal_set_resulttype(uint32_t value) { _impl_.resulttype_ = value; } inline void FieldSelect::set_resulttype(uint32_t value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.FieldSelect.resulttype) } // int32 resulttypmod = 5 [json_name = "resulttypmod"]; inline void FieldSelect::clear_resulttypmod() { _impl_.resulttypmod_ = 0; } inline int32_t FieldSelect::_internal_resulttypmod() const { return _impl_.resulttypmod_; } inline int32_t FieldSelect::resulttypmod() const { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.resulttypmod) return _internal_resulttypmod(); } inline void FieldSelect::_internal_set_resulttypmod(int32_t value) { _impl_.resulttypmod_ = value; } inline void FieldSelect::set_resulttypmod(int32_t value) { _internal_set_resulttypmod(value); // @@protoc_insertion_point(field_set:pg_query.FieldSelect.resulttypmod) } // uint32 resultcollid = 6 [json_name = "resultcollid"]; inline void FieldSelect::clear_resultcollid() { _impl_.resultcollid_ = 0u; } inline uint32_t FieldSelect::_internal_resultcollid() const { return _impl_.resultcollid_; } inline uint32_t FieldSelect::resultcollid() const { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.resultcollid) return _internal_resultcollid(); } inline void FieldSelect::_internal_set_resultcollid(uint32_t value) { _impl_.resultcollid_ = value; } inline void FieldSelect::set_resultcollid(uint32_t value) { _internal_set_resultcollid(value); // @@protoc_insertion_point(field_set:pg_query.FieldSelect.resultcollid) } // ------------------------------------------------------------------- // FieldStore // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool FieldStore::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool FieldStore::has_xpr() const { return _internal_has_xpr(); } inline void FieldStore::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& FieldStore::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.FieldStore.xpr) return _internal_xpr(); } inline void FieldStore::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FieldStore.xpr) } inline ::pg_query::Node* FieldStore::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* FieldStore::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.FieldStore.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* FieldStore::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* FieldStore::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.FieldStore.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool FieldStore::_internal_has_arg() const { return this != internal_default_instance() && _impl_.arg_ != nullptr; } inline bool FieldStore::has_arg() const { return _internal_has_arg(); } inline void FieldStore::clear_arg() { if (GetArenaForAllocation() == nullptr && _impl_.arg_ != nullptr) { delete _impl_.arg_; } _impl_.arg_ = nullptr; } inline const ::pg_query::Node& FieldStore::_internal_arg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.FieldStore.arg) return _internal_arg(); } inline void FieldStore::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arg_); } _impl_.arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FieldStore.arg) } inline ::pg_query::Node* FieldStore::release_arg() { ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* FieldStore::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.FieldStore.arg) ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* FieldStore::_internal_mutable_arg() { if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.arg_ = p; } return _impl_.arg_; } inline ::pg_query::Node* FieldStore::mutable_arg() { ::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* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } _impl_.arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.FieldStore.arg) } // repeated .pg_query.Node newvals = 3 [json_name = "newvals"]; inline int FieldStore::_internal_newvals_size() const { return _impl_.newvals_.size(); } inline int FieldStore::newvals_size() const { return _internal_newvals_size(); } inline void FieldStore::clear_newvals() { _impl_.newvals_.Clear(); } inline ::pg_query::Node* FieldStore::mutable_newvals(int index) { // @@protoc_insertion_point(field_mutable:pg_query.FieldStore.newvals) return _impl_.newvals_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* FieldStore::mutable_newvals() { // @@protoc_insertion_point(field_mutable_list:pg_query.FieldStore.newvals) return &_impl_.newvals_; } inline const ::pg_query::Node& FieldStore::_internal_newvals(int index) const { return _impl_.newvals_.Get(index); } inline const ::pg_query::Node& FieldStore::newvals(int index) const { // @@protoc_insertion_point(field_get:pg_query.FieldStore.newvals) return _internal_newvals(index); } inline ::pg_query::Node* FieldStore::_internal_add_newvals() { return _impl_.newvals_.Add(); } inline ::pg_query::Node* FieldStore::add_newvals() { ::pg_query::Node* _add = _internal_add_newvals(); // @@protoc_insertion_point(field_add:pg_query.FieldStore.newvals) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& FieldStore::newvals() const { // @@protoc_insertion_point(field_list:pg_query.FieldStore.newvals) return _impl_.newvals_; } // repeated .pg_query.Node fieldnums = 4 [json_name = "fieldnums"]; inline int FieldStore::_internal_fieldnums_size() const { return _impl_.fieldnums_.size(); } inline int FieldStore::fieldnums_size() const { return _internal_fieldnums_size(); } inline void FieldStore::clear_fieldnums() { _impl_.fieldnums_.Clear(); } inline ::pg_query::Node* FieldStore::mutable_fieldnums(int index) { // @@protoc_insertion_point(field_mutable:pg_query.FieldStore.fieldnums) return _impl_.fieldnums_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* FieldStore::mutable_fieldnums() { // @@protoc_insertion_point(field_mutable_list:pg_query.FieldStore.fieldnums) return &_impl_.fieldnums_; } inline const ::pg_query::Node& FieldStore::_internal_fieldnums(int index) const { return _impl_.fieldnums_.Get(index); } inline const ::pg_query::Node& FieldStore::fieldnums(int index) const { // @@protoc_insertion_point(field_get:pg_query.FieldStore.fieldnums) return _internal_fieldnums(index); } inline ::pg_query::Node* FieldStore::_internal_add_fieldnums() { return _impl_.fieldnums_.Add(); } inline ::pg_query::Node* FieldStore::add_fieldnums() { ::pg_query::Node* _add = _internal_add_fieldnums(); // @@protoc_insertion_point(field_add:pg_query.FieldStore.fieldnums) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& FieldStore::fieldnums() const { // @@protoc_insertion_point(field_list:pg_query.FieldStore.fieldnums) return _impl_.fieldnums_; } // uint32 resulttype = 5 [json_name = "resulttype"]; inline void FieldStore::clear_resulttype() { _impl_.resulttype_ = 0u; } inline uint32_t FieldStore::_internal_resulttype() const { return _impl_.resulttype_; } inline uint32_t FieldStore::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.FieldStore.resulttype) return _internal_resulttype(); } inline void FieldStore::_internal_set_resulttype(uint32_t value) { _impl_.resulttype_ = value; } inline void FieldStore::set_resulttype(uint32_t value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.FieldStore.resulttype) } // ------------------------------------------------------------------- // RelabelType // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool RelabelType::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool RelabelType::has_xpr() const { return _internal_has_xpr(); } inline void RelabelType::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& RelabelType::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RelabelType.xpr) return _internal_xpr(); } inline void RelabelType::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RelabelType.xpr) } inline ::pg_query::Node* RelabelType::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* RelabelType::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.RelabelType.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* RelabelType::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* RelabelType::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.RelabelType.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool RelabelType::_internal_has_arg() const { return this != internal_default_instance() && _impl_.arg_ != nullptr; } inline bool RelabelType::has_arg() const { return _internal_has_arg(); } inline void RelabelType::clear_arg() { if (GetArenaForAllocation() == nullptr && _impl_.arg_ != nullptr) { delete _impl_.arg_; } _impl_.arg_ = nullptr; } inline const ::pg_query::Node& RelabelType::_internal_arg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RelabelType.arg) return _internal_arg(); } inline void RelabelType::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arg_); } _impl_.arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RelabelType.arg) } inline ::pg_query::Node* RelabelType::release_arg() { ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* RelabelType::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.RelabelType.arg) ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* RelabelType::_internal_mutable_arg() { if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.arg_ = p; } return _impl_.arg_; } inline ::pg_query::Node* RelabelType::mutable_arg() { ::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* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } _impl_.arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.RelabelType.arg) } // uint32 resulttype = 3 [json_name = "resulttype"]; inline void RelabelType::clear_resulttype() { _impl_.resulttype_ = 0u; } inline uint32_t RelabelType::_internal_resulttype() const { return _impl_.resulttype_; } inline uint32_t RelabelType::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.RelabelType.resulttype) return _internal_resulttype(); } inline void RelabelType::_internal_set_resulttype(uint32_t value) { _impl_.resulttype_ = value; } inline void RelabelType::set_resulttype(uint32_t value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.RelabelType.resulttype) } // int32 resulttypmod = 4 [json_name = "resulttypmod"]; inline void RelabelType::clear_resulttypmod() { _impl_.resulttypmod_ = 0; } inline int32_t RelabelType::_internal_resulttypmod() const { return _impl_.resulttypmod_; } inline int32_t RelabelType::resulttypmod() const { // @@protoc_insertion_point(field_get:pg_query.RelabelType.resulttypmod) return _internal_resulttypmod(); } inline void RelabelType::_internal_set_resulttypmod(int32_t value) { _impl_.resulttypmod_ = value; } inline void RelabelType::set_resulttypmod(int32_t value) { _internal_set_resulttypmod(value); // @@protoc_insertion_point(field_set:pg_query.RelabelType.resulttypmod) } // uint32 resultcollid = 5 [json_name = "resultcollid"]; inline void RelabelType::clear_resultcollid() { _impl_.resultcollid_ = 0u; } inline uint32_t RelabelType::_internal_resultcollid() const { return _impl_.resultcollid_; } inline uint32_t RelabelType::resultcollid() const { // @@protoc_insertion_point(field_get:pg_query.RelabelType.resultcollid) return _internal_resultcollid(); } inline void RelabelType::_internal_set_resultcollid(uint32_t value) { _impl_.resultcollid_ = value; } inline void RelabelType::set_resultcollid(uint32_t value) { _internal_set_resultcollid(value); // @@protoc_insertion_point(field_set:pg_query.RelabelType.resultcollid) } // .pg_query.CoercionForm relabelformat = 6 [json_name = "relabelformat"]; inline void RelabelType::clear_relabelformat() { _impl_.relabelformat_ = 0; } inline ::pg_query::CoercionForm RelabelType::_internal_relabelformat() const { return static_cast< ::pg_query::CoercionForm >(_impl_.relabelformat_); } inline ::pg_query::CoercionForm RelabelType::relabelformat() const { // @@protoc_insertion_point(field_get:pg_query.RelabelType.relabelformat) return _internal_relabelformat(); } inline void RelabelType::_internal_set_relabelformat(::pg_query::CoercionForm value) { _impl_.relabelformat_ = value; } inline void RelabelType::set_relabelformat(::pg_query::CoercionForm value) { _internal_set_relabelformat(value); // @@protoc_insertion_point(field_set:pg_query.RelabelType.relabelformat) } // int32 location = 7 [json_name = "location"]; inline void RelabelType::clear_location() { _impl_.location_ = 0; } inline int32_t RelabelType::_internal_location() const { return _impl_.location_; } inline int32_t RelabelType::location() const { // @@protoc_insertion_point(field_get:pg_query.RelabelType.location) return _internal_location(); } inline void RelabelType::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void RelabelType::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RelabelType.location) } // ------------------------------------------------------------------- // CoerceViaIO // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CoerceViaIO::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool CoerceViaIO::has_xpr() const { return _internal_has_xpr(); } inline void CoerceViaIO::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& CoerceViaIO::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.xpr) return _internal_xpr(); } inline void CoerceViaIO::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceViaIO.xpr) } inline ::pg_query::Node* CoerceViaIO::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CoerceViaIO::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CoerceViaIO.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CoerceViaIO::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* CoerceViaIO::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceViaIO.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool CoerceViaIO::_internal_has_arg() const { return this != internal_default_instance() && _impl_.arg_ != nullptr; } inline bool CoerceViaIO::has_arg() const { return _internal_has_arg(); } inline void CoerceViaIO::clear_arg() { if (GetArenaForAllocation() == nullptr && _impl_.arg_ != nullptr) { delete _impl_.arg_; } _impl_.arg_ = nullptr; } inline const ::pg_query::Node& CoerceViaIO::_internal_arg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.arg) return _internal_arg(); } inline void CoerceViaIO::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arg_); } _impl_.arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceViaIO.arg) } inline ::pg_query::Node* CoerceViaIO::release_arg() { ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CoerceViaIO::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.CoerceViaIO.arg) ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* CoerceViaIO::_internal_mutable_arg() { if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.arg_ = p; } return _impl_.arg_; } inline ::pg_query::Node* CoerceViaIO::mutable_arg() { ::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* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } _impl_.arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceViaIO.arg) } // uint32 resulttype = 3 [json_name = "resulttype"]; inline void CoerceViaIO::clear_resulttype() { _impl_.resulttype_ = 0u; } inline uint32_t CoerceViaIO::_internal_resulttype() const { return _impl_.resulttype_; } inline uint32_t CoerceViaIO::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.resulttype) return _internal_resulttype(); } inline void CoerceViaIO::_internal_set_resulttype(uint32_t value) { _impl_.resulttype_ = value; } inline void CoerceViaIO::set_resulttype(uint32_t value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.CoerceViaIO.resulttype) } // uint32 resultcollid = 4 [json_name = "resultcollid"]; inline void CoerceViaIO::clear_resultcollid() { _impl_.resultcollid_ = 0u; } inline uint32_t CoerceViaIO::_internal_resultcollid() const { return _impl_.resultcollid_; } inline uint32_t CoerceViaIO::resultcollid() const { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.resultcollid) return _internal_resultcollid(); } inline void CoerceViaIO::_internal_set_resultcollid(uint32_t value) { _impl_.resultcollid_ = value; } inline void CoerceViaIO::set_resultcollid(uint32_t value) { _internal_set_resultcollid(value); // @@protoc_insertion_point(field_set:pg_query.CoerceViaIO.resultcollid) } // .pg_query.CoercionForm coerceformat = 5 [json_name = "coerceformat"]; inline void CoerceViaIO::clear_coerceformat() { _impl_.coerceformat_ = 0; } inline ::pg_query::CoercionForm CoerceViaIO::_internal_coerceformat() const { return static_cast< ::pg_query::CoercionForm >(_impl_.coerceformat_); } inline ::pg_query::CoercionForm CoerceViaIO::coerceformat() const { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.coerceformat) return _internal_coerceformat(); } inline void CoerceViaIO::_internal_set_coerceformat(::pg_query::CoercionForm value) { _impl_.coerceformat_ = value; } inline void CoerceViaIO::set_coerceformat(::pg_query::CoercionForm value) { _internal_set_coerceformat(value); // @@protoc_insertion_point(field_set:pg_query.CoerceViaIO.coerceformat) } // int32 location = 6 [json_name = "location"]; inline void CoerceViaIO::clear_location() { _impl_.location_ = 0; } inline int32_t CoerceViaIO::_internal_location() const { return _impl_.location_; } inline int32_t CoerceViaIO::location() const { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.location) return _internal_location(); } inline void CoerceViaIO::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void CoerceViaIO::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CoerceViaIO.location) } // ------------------------------------------------------------------- // ArrayCoerceExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool ArrayCoerceExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool ArrayCoerceExpr::has_xpr() const { return _internal_has_xpr(); } inline void ArrayCoerceExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& ArrayCoerceExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.xpr) return _internal_xpr(); } inline void ArrayCoerceExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ArrayCoerceExpr.xpr) } inline ::pg_query::Node* ArrayCoerceExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* ArrayCoerceExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.ArrayCoerceExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* ArrayCoerceExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* ArrayCoerceExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.ArrayCoerceExpr.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool ArrayCoerceExpr::_internal_has_arg() const { return this != internal_default_instance() && _impl_.arg_ != nullptr; } inline bool ArrayCoerceExpr::has_arg() const { return _internal_has_arg(); } inline void ArrayCoerceExpr::clear_arg() { if (GetArenaForAllocation() == nullptr && _impl_.arg_ != nullptr) { delete _impl_.arg_; } _impl_.arg_ = nullptr; } inline const ::pg_query::Node& ArrayCoerceExpr::_internal_arg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.arg) return _internal_arg(); } inline void ArrayCoerceExpr::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arg_); } _impl_.arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ArrayCoerceExpr.arg) } inline ::pg_query::Node* ArrayCoerceExpr::release_arg() { ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* ArrayCoerceExpr::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.ArrayCoerceExpr.arg) ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* ArrayCoerceExpr::_internal_mutable_arg() { if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.arg_ = p; } return _impl_.arg_; } inline ::pg_query::Node* ArrayCoerceExpr::mutable_arg() { ::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* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } _impl_.arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.ArrayCoerceExpr.arg) } // .pg_query.Node elemexpr = 3 [json_name = "elemexpr"]; inline bool ArrayCoerceExpr::_internal_has_elemexpr() const { return this != internal_default_instance() && _impl_.elemexpr_ != nullptr; } inline bool ArrayCoerceExpr::has_elemexpr() const { return _internal_has_elemexpr(); } inline void ArrayCoerceExpr::clear_elemexpr() { if (GetArenaForAllocation() == nullptr && _impl_.elemexpr_ != nullptr) { delete _impl_.elemexpr_; } _impl_.elemexpr_ = nullptr; } inline const ::pg_query::Node& ArrayCoerceExpr::_internal_elemexpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.elemexpr) return _internal_elemexpr(); } inline void ArrayCoerceExpr::unsafe_arena_set_allocated_elemexpr( ::pg_query::Node* elemexpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.elemexpr_); } _impl_.elemexpr_ = elemexpr; if (elemexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ArrayCoerceExpr.elemexpr) } inline ::pg_query::Node* ArrayCoerceExpr::release_elemexpr() { ::pg_query::Node* temp = _impl_.elemexpr_; _impl_.elemexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* ArrayCoerceExpr::unsafe_arena_release_elemexpr() { // @@protoc_insertion_point(field_release:pg_query.ArrayCoerceExpr.elemexpr) ::pg_query::Node* temp = _impl_.elemexpr_; _impl_.elemexpr_ = nullptr; return temp; } inline ::pg_query::Node* ArrayCoerceExpr::_internal_mutable_elemexpr() { if (_impl_.elemexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.elemexpr_ = p; } return _impl_.elemexpr_; } inline ::pg_query::Node* ArrayCoerceExpr::mutable_elemexpr() { ::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* elemexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.elemexpr_; } if (elemexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(elemexpr); if (message_arena != submessage_arena) { elemexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, elemexpr, submessage_arena); } } else { } _impl_.elemexpr_ = elemexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.ArrayCoerceExpr.elemexpr) } // uint32 resulttype = 4 [json_name = "resulttype"]; inline void ArrayCoerceExpr::clear_resulttype() { _impl_.resulttype_ = 0u; } inline uint32_t ArrayCoerceExpr::_internal_resulttype() const { return _impl_.resulttype_; } inline uint32_t ArrayCoerceExpr::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.resulttype) return _internal_resulttype(); } inline void ArrayCoerceExpr::_internal_set_resulttype(uint32_t value) { _impl_.resulttype_ = value; } inline void ArrayCoerceExpr::set_resulttype(uint32_t value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.resulttype) } // int32 resulttypmod = 5 [json_name = "resulttypmod"]; inline void ArrayCoerceExpr::clear_resulttypmod() { _impl_.resulttypmod_ = 0; } inline int32_t ArrayCoerceExpr::_internal_resulttypmod() const { return _impl_.resulttypmod_; } inline int32_t ArrayCoerceExpr::resulttypmod() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.resulttypmod) return _internal_resulttypmod(); } inline void ArrayCoerceExpr::_internal_set_resulttypmod(int32_t value) { _impl_.resulttypmod_ = value; } inline void ArrayCoerceExpr::set_resulttypmod(int32_t value) { _internal_set_resulttypmod(value); // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.resulttypmod) } // uint32 resultcollid = 6 [json_name = "resultcollid"]; inline void ArrayCoerceExpr::clear_resultcollid() { _impl_.resultcollid_ = 0u; } inline uint32_t ArrayCoerceExpr::_internal_resultcollid() const { return _impl_.resultcollid_; } inline uint32_t ArrayCoerceExpr::resultcollid() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.resultcollid) return _internal_resultcollid(); } inline void ArrayCoerceExpr::_internal_set_resultcollid(uint32_t value) { _impl_.resultcollid_ = value; } inline void ArrayCoerceExpr::set_resultcollid(uint32_t value) { _internal_set_resultcollid(value); // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.resultcollid) } // .pg_query.CoercionForm coerceformat = 7 [json_name = "coerceformat"]; inline void ArrayCoerceExpr::clear_coerceformat() { _impl_.coerceformat_ = 0; } inline ::pg_query::CoercionForm ArrayCoerceExpr::_internal_coerceformat() const { return static_cast< ::pg_query::CoercionForm >(_impl_.coerceformat_); } inline ::pg_query::CoercionForm ArrayCoerceExpr::coerceformat() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.coerceformat) return _internal_coerceformat(); } inline void ArrayCoerceExpr::_internal_set_coerceformat(::pg_query::CoercionForm value) { _impl_.coerceformat_ = value; } inline void ArrayCoerceExpr::set_coerceformat(::pg_query::CoercionForm value) { _internal_set_coerceformat(value); // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.coerceformat) } // int32 location = 8 [json_name = "location"]; inline void ArrayCoerceExpr::clear_location() { _impl_.location_ = 0; } inline int32_t ArrayCoerceExpr::_internal_location() const { return _impl_.location_; } inline int32_t ArrayCoerceExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.location) return _internal_location(); } inline void ArrayCoerceExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void ArrayCoerceExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.location) } // ------------------------------------------------------------------- // ConvertRowtypeExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool ConvertRowtypeExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool ConvertRowtypeExpr::has_xpr() const { return _internal_has_xpr(); } inline void ConvertRowtypeExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& ConvertRowtypeExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.xpr) return _internal_xpr(); } inline void ConvertRowtypeExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ConvertRowtypeExpr.xpr) } inline ::pg_query::Node* ConvertRowtypeExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* ConvertRowtypeExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.ConvertRowtypeExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* ConvertRowtypeExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* ConvertRowtypeExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.ConvertRowtypeExpr.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool ConvertRowtypeExpr::_internal_has_arg() const { return this != internal_default_instance() && _impl_.arg_ != nullptr; } inline bool ConvertRowtypeExpr::has_arg() const { return _internal_has_arg(); } inline void ConvertRowtypeExpr::clear_arg() { if (GetArenaForAllocation() == nullptr && _impl_.arg_ != nullptr) { delete _impl_.arg_; } _impl_.arg_ = nullptr; } inline const ::pg_query::Node& ConvertRowtypeExpr::_internal_arg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.arg) return _internal_arg(); } inline void ConvertRowtypeExpr::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arg_); } _impl_.arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ConvertRowtypeExpr.arg) } inline ::pg_query::Node* ConvertRowtypeExpr::release_arg() { ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* ConvertRowtypeExpr::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.ConvertRowtypeExpr.arg) ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* ConvertRowtypeExpr::_internal_mutable_arg() { if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.arg_ = p; } return _impl_.arg_; } inline ::pg_query::Node* ConvertRowtypeExpr::mutable_arg() { ::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* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } _impl_.arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.ConvertRowtypeExpr.arg) } // uint32 resulttype = 3 [json_name = "resulttype"]; inline void ConvertRowtypeExpr::clear_resulttype() { _impl_.resulttype_ = 0u; } inline uint32_t ConvertRowtypeExpr::_internal_resulttype() const { return _impl_.resulttype_; } inline uint32_t ConvertRowtypeExpr::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.resulttype) return _internal_resulttype(); } inline void ConvertRowtypeExpr::_internal_set_resulttype(uint32_t value) { _impl_.resulttype_ = value; } inline void ConvertRowtypeExpr::set_resulttype(uint32_t value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.ConvertRowtypeExpr.resulttype) } // .pg_query.CoercionForm convertformat = 4 [json_name = "convertformat"]; inline void ConvertRowtypeExpr::clear_convertformat() { _impl_.convertformat_ = 0; } inline ::pg_query::CoercionForm ConvertRowtypeExpr::_internal_convertformat() const { return static_cast< ::pg_query::CoercionForm >(_impl_.convertformat_); } inline ::pg_query::CoercionForm ConvertRowtypeExpr::convertformat() const { // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.convertformat) return _internal_convertformat(); } inline void ConvertRowtypeExpr::_internal_set_convertformat(::pg_query::CoercionForm value) { _impl_.convertformat_ = value; } inline void ConvertRowtypeExpr::set_convertformat(::pg_query::CoercionForm value) { _internal_set_convertformat(value); // @@protoc_insertion_point(field_set:pg_query.ConvertRowtypeExpr.convertformat) } // int32 location = 5 [json_name = "location"]; inline void ConvertRowtypeExpr::clear_location() { _impl_.location_ = 0; } inline int32_t ConvertRowtypeExpr::_internal_location() const { return _impl_.location_; } inline int32_t ConvertRowtypeExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.location) return _internal_location(); } inline void ConvertRowtypeExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void ConvertRowtypeExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ConvertRowtypeExpr.location) } // ------------------------------------------------------------------- // CollateExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CollateExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool CollateExpr::has_xpr() const { return _internal_has_xpr(); } inline void CollateExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& CollateExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CollateExpr.xpr) return _internal_xpr(); } inline void CollateExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CollateExpr.xpr) } inline ::pg_query::Node* CollateExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CollateExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CollateExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CollateExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* CollateExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CollateExpr.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool CollateExpr::_internal_has_arg() const { return this != internal_default_instance() && _impl_.arg_ != nullptr; } inline bool CollateExpr::has_arg() const { return _internal_has_arg(); } inline void CollateExpr::clear_arg() { if (GetArenaForAllocation() == nullptr && _impl_.arg_ != nullptr) { delete _impl_.arg_; } _impl_.arg_ = nullptr; } inline const ::pg_query::Node& CollateExpr::_internal_arg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CollateExpr.arg) return _internal_arg(); } inline void CollateExpr::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arg_); } _impl_.arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CollateExpr.arg) } inline ::pg_query::Node* CollateExpr::release_arg() { ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CollateExpr::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.CollateExpr.arg) ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* CollateExpr::_internal_mutable_arg() { if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.arg_ = p; } return _impl_.arg_; } inline ::pg_query::Node* CollateExpr::mutable_arg() { ::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* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } _impl_.arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.CollateExpr.arg) } // uint32 coll_oid = 3 [json_name = "collOid"]; inline void CollateExpr::clear_coll_oid() { _impl_.coll_oid_ = 0u; } inline uint32_t CollateExpr::_internal_coll_oid() const { return _impl_.coll_oid_; } inline uint32_t CollateExpr::coll_oid() const { // @@protoc_insertion_point(field_get:pg_query.CollateExpr.coll_oid) return _internal_coll_oid(); } inline void CollateExpr::_internal_set_coll_oid(uint32_t value) { _impl_.coll_oid_ = value; } inline void CollateExpr::set_coll_oid(uint32_t value) { _internal_set_coll_oid(value); // @@protoc_insertion_point(field_set:pg_query.CollateExpr.coll_oid) } // int32 location = 4 [json_name = "location"]; inline void CollateExpr::clear_location() { _impl_.location_ = 0; } inline int32_t CollateExpr::_internal_location() const { return _impl_.location_; } inline int32_t CollateExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.CollateExpr.location) return _internal_location(); } inline void CollateExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void CollateExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CollateExpr.location) } // ------------------------------------------------------------------- // CaseExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CaseExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool CaseExpr::has_xpr() const { return _internal_has_xpr(); } inline void CaseExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& CaseExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.xpr) return _internal_xpr(); } inline void CaseExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseExpr.xpr) } inline ::pg_query::Node* CaseExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CaseExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CaseExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CaseExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* CaseExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CaseExpr.xpr) } // uint32 casetype = 2 [json_name = "casetype"]; inline void CaseExpr::clear_casetype() { _impl_.casetype_ = 0u; } inline uint32_t CaseExpr::_internal_casetype() const { return _impl_.casetype_; } inline uint32_t CaseExpr::casetype() const { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.casetype) return _internal_casetype(); } inline void CaseExpr::_internal_set_casetype(uint32_t value) { _impl_.casetype_ = value; } inline void CaseExpr::set_casetype(uint32_t value) { _internal_set_casetype(value); // @@protoc_insertion_point(field_set:pg_query.CaseExpr.casetype) } // uint32 casecollid = 3 [json_name = "casecollid"]; inline void CaseExpr::clear_casecollid() { _impl_.casecollid_ = 0u; } inline uint32_t CaseExpr::_internal_casecollid() const { return _impl_.casecollid_; } inline uint32_t CaseExpr::casecollid() const { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.casecollid) return _internal_casecollid(); } inline void CaseExpr::_internal_set_casecollid(uint32_t value) { _impl_.casecollid_ = value; } inline void CaseExpr::set_casecollid(uint32_t value) { _internal_set_casecollid(value); // @@protoc_insertion_point(field_set:pg_query.CaseExpr.casecollid) } // .pg_query.Node arg = 4 [json_name = "arg"]; inline bool CaseExpr::_internal_has_arg() const { return this != internal_default_instance() && _impl_.arg_ != nullptr; } inline bool CaseExpr::has_arg() const { return _internal_has_arg(); } inline void CaseExpr::clear_arg() { if (GetArenaForAllocation() == nullptr && _impl_.arg_ != nullptr) { delete _impl_.arg_; } _impl_.arg_ = nullptr; } inline const ::pg_query::Node& CaseExpr::_internal_arg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.arg) return _internal_arg(); } inline void CaseExpr::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arg_); } _impl_.arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseExpr.arg) } inline ::pg_query::Node* CaseExpr::release_arg() { ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CaseExpr::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.CaseExpr.arg) ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* CaseExpr::_internal_mutable_arg() { if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.arg_ = p; } return _impl_.arg_; } inline ::pg_query::Node* CaseExpr::mutable_arg() { ::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* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } _impl_.arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.CaseExpr.arg) } // repeated .pg_query.Node args = 5 [json_name = "args"]; inline int CaseExpr::_internal_args_size() const { return _impl_.args_.size(); } inline int CaseExpr::args_size() const { return _internal_args_size(); } inline void CaseExpr::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* CaseExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CaseExpr.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CaseExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.CaseExpr.args) return &_impl_.args_; } inline const ::pg_query::Node& CaseExpr::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& CaseExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.args) return _internal_args(index); } inline ::pg_query::Node* CaseExpr::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* CaseExpr::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.CaseExpr.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CaseExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.CaseExpr.args) return _impl_.args_; } // .pg_query.Node defresult = 6 [json_name = "defresult"]; inline bool CaseExpr::_internal_has_defresult() const { return this != internal_default_instance() && _impl_.defresult_ != nullptr; } inline bool CaseExpr::has_defresult() const { return _internal_has_defresult(); } inline void CaseExpr::clear_defresult() { if (GetArenaForAllocation() == nullptr && _impl_.defresult_ != nullptr) { delete _impl_.defresult_; } _impl_.defresult_ = nullptr; } inline const ::pg_query::Node& CaseExpr::_internal_defresult() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.defresult) return _internal_defresult(); } inline void CaseExpr::unsafe_arena_set_allocated_defresult( ::pg_query::Node* defresult) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.defresult_); } _impl_.defresult_ = defresult; if (defresult) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseExpr.defresult) } inline ::pg_query::Node* CaseExpr::release_defresult() { ::pg_query::Node* temp = _impl_.defresult_; _impl_.defresult_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CaseExpr::unsafe_arena_release_defresult() { // @@protoc_insertion_point(field_release:pg_query.CaseExpr.defresult) ::pg_query::Node* temp = _impl_.defresult_; _impl_.defresult_ = nullptr; return temp; } inline ::pg_query::Node* CaseExpr::_internal_mutable_defresult() { if (_impl_.defresult_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.defresult_ = p; } return _impl_.defresult_; } inline ::pg_query::Node* CaseExpr::mutable_defresult() { ::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* defresult) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.defresult_; } if (defresult) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(defresult); if (message_arena != submessage_arena) { defresult = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, defresult, submessage_arena); } } else { } _impl_.defresult_ = defresult; // @@protoc_insertion_point(field_set_allocated:pg_query.CaseExpr.defresult) } // int32 location = 7 [json_name = "location"]; inline void CaseExpr::clear_location() { _impl_.location_ = 0; } inline int32_t CaseExpr::_internal_location() const { return _impl_.location_; } inline int32_t CaseExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.location) return _internal_location(); } inline void CaseExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void CaseExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CaseExpr.location) } // ------------------------------------------------------------------- // CaseWhen // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CaseWhen::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool CaseWhen::has_xpr() const { return _internal_has_xpr(); } inline void CaseWhen::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& CaseWhen::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CaseWhen.xpr) return _internal_xpr(); } inline void CaseWhen::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseWhen.xpr) } inline ::pg_query::Node* CaseWhen::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CaseWhen::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CaseWhen.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CaseWhen::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* CaseWhen::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CaseWhen.xpr) } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool CaseWhen::_internal_has_expr() const { return this != internal_default_instance() && _impl_.expr_ != nullptr; } inline bool CaseWhen::has_expr() const { return _internal_has_expr(); } inline void CaseWhen::clear_expr() { if (GetArenaForAllocation() == nullptr && _impl_.expr_ != nullptr) { delete _impl_.expr_; } _impl_.expr_ = nullptr; } inline const ::pg_query::Node& CaseWhen::_internal_expr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CaseWhen.expr) return _internal_expr(); } inline void CaseWhen::unsafe_arena_set_allocated_expr( ::pg_query::Node* expr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.expr_); } _impl_.expr_ = expr; if (expr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseWhen.expr) } inline ::pg_query::Node* CaseWhen::release_expr() { ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CaseWhen::unsafe_arena_release_expr() { // @@protoc_insertion_point(field_release:pg_query.CaseWhen.expr) ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::Node* CaseWhen::_internal_mutable_expr() { if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.expr_ = p; } return _impl_.expr_; } inline ::pg_query::Node* CaseWhen::mutable_expr() { ::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* expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.expr_; } if (expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(expr); if (message_arena != submessage_arena) { expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, expr, submessage_arena); } } else { } _impl_.expr_ = expr; // @@protoc_insertion_point(field_set_allocated:pg_query.CaseWhen.expr) } // .pg_query.Node result = 3 [json_name = "result"]; inline bool CaseWhen::_internal_has_result() const { return this != internal_default_instance() && _impl_.result_ != nullptr; } inline bool CaseWhen::has_result() const { return _internal_has_result(); } inline void CaseWhen::clear_result() { if (GetArenaForAllocation() == nullptr && _impl_.result_ != nullptr) { delete _impl_.result_; } _impl_.result_ = nullptr; } inline const ::pg_query::Node& CaseWhen::_internal_result() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CaseWhen.result) return _internal_result(); } inline void CaseWhen::unsafe_arena_set_allocated_result( ::pg_query::Node* result) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.result_); } _impl_.result_ = result; if (result) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseWhen.result) } inline ::pg_query::Node* CaseWhen::release_result() { ::pg_query::Node* temp = _impl_.result_; _impl_.result_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CaseWhen::unsafe_arena_release_result() { // @@protoc_insertion_point(field_release:pg_query.CaseWhen.result) ::pg_query::Node* temp = _impl_.result_; _impl_.result_ = nullptr; return temp; } inline ::pg_query::Node* CaseWhen::_internal_mutable_result() { if (_impl_.result_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.result_ = p; } return _impl_.result_; } inline ::pg_query::Node* CaseWhen::mutable_result() { ::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* result) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.result_; } if (result) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(result); if (message_arena != submessage_arena) { result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, result, submessage_arena); } } else { } _impl_.result_ = result; // @@protoc_insertion_point(field_set_allocated:pg_query.CaseWhen.result) } // int32 location = 4 [json_name = "location"]; inline void CaseWhen::clear_location() { _impl_.location_ = 0; } inline int32_t CaseWhen::_internal_location() const { return _impl_.location_; } inline int32_t CaseWhen::location() const { // @@protoc_insertion_point(field_get:pg_query.CaseWhen.location) return _internal_location(); } inline void CaseWhen::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void CaseWhen::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CaseWhen.location) } // ------------------------------------------------------------------- // CaseTestExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CaseTestExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool CaseTestExpr::has_xpr() const { return _internal_has_xpr(); } inline void CaseTestExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& CaseTestExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CaseTestExpr.xpr) return _internal_xpr(); } inline void CaseTestExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseTestExpr.xpr) } inline ::pg_query::Node* CaseTestExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CaseTestExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CaseTestExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CaseTestExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* CaseTestExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CaseTestExpr.xpr) } // uint32 type_id = 2 [json_name = "typeId"]; inline void CaseTestExpr::clear_type_id() { _impl_.type_id_ = 0u; } inline uint32_t CaseTestExpr::_internal_type_id() const { return _impl_.type_id_; } inline uint32_t CaseTestExpr::type_id() const { // @@protoc_insertion_point(field_get:pg_query.CaseTestExpr.type_id) return _internal_type_id(); } inline void CaseTestExpr::_internal_set_type_id(uint32_t value) { _impl_.type_id_ = value; } inline void CaseTestExpr::set_type_id(uint32_t value) { _internal_set_type_id(value); // @@protoc_insertion_point(field_set:pg_query.CaseTestExpr.type_id) } // int32 type_mod = 3 [json_name = "typeMod"]; inline void CaseTestExpr::clear_type_mod() { _impl_.type_mod_ = 0; } inline int32_t CaseTestExpr::_internal_type_mod() const { return _impl_.type_mod_; } inline int32_t CaseTestExpr::type_mod() const { // @@protoc_insertion_point(field_get:pg_query.CaseTestExpr.type_mod) return _internal_type_mod(); } inline void CaseTestExpr::_internal_set_type_mod(int32_t value) { _impl_.type_mod_ = value; } inline void CaseTestExpr::set_type_mod(int32_t value) { _internal_set_type_mod(value); // @@protoc_insertion_point(field_set:pg_query.CaseTestExpr.type_mod) } // uint32 collation = 4 [json_name = "collation"]; inline void CaseTestExpr::clear_collation() { _impl_.collation_ = 0u; } inline uint32_t CaseTestExpr::_internal_collation() const { return _impl_.collation_; } inline uint32_t CaseTestExpr::collation() const { // @@protoc_insertion_point(field_get:pg_query.CaseTestExpr.collation) return _internal_collation(); } inline void CaseTestExpr::_internal_set_collation(uint32_t value) { _impl_.collation_ = value; } inline void CaseTestExpr::set_collation(uint32_t value) { _internal_set_collation(value); // @@protoc_insertion_point(field_set:pg_query.CaseTestExpr.collation) } // ------------------------------------------------------------------- // ArrayExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool ArrayExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool ArrayExpr::has_xpr() const { return _internal_has_xpr(); } inline void ArrayExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& ArrayExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.xpr) return _internal_xpr(); } inline void ArrayExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ArrayExpr.xpr) } inline ::pg_query::Node* ArrayExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* ArrayExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.ArrayExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* ArrayExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* ArrayExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.ArrayExpr.xpr) } // uint32 array_typeid = 2 [json_name = "array_typeid"]; inline void ArrayExpr::clear_array_typeid() { _impl_.array_typeid_ = 0u; } inline uint32_t ArrayExpr::_internal_array_typeid() const { return _impl_.array_typeid_; } inline uint32_t ArrayExpr::array_typeid() const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.array_typeid) return _internal_array_typeid(); } inline void ArrayExpr::_internal_set_array_typeid(uint32_t value) { _impl_.array_typeid_ = value; } inline void ArrayExpr::set_array_typeid(uint32_t value) { _internal_set_array_typeid(value); // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.array_typeid) } // uint32 array_collid = 3 [json_name = "array_collid"]; inline void ArrayExpr::clear_array_collid() { _impl_.array_collid_ = 0u; } inline uint32_t ArrayExpr::_internal_array_collid() const { return _impl_.array_collid_; } inline uint32_t ArrayExpr::array_collid() const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.array_collid) return _internal_array_collid(); } inline void ArrayExpr::_internal_set_array_collid(uint32_t value) { _impl_.array_collid_ = value; } inline void ArrayExpr::set_array_collid(uint32_t value) { _internal_set_array_collid(value); // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.array_collid) } // uint32 element_typeid = 4 [json_name = "element_typeid"]; inline void ArrayExpr::clear_element_typeid() { _impl_.element_typeid_ = 0u; } inline uint32_t ArrayExpr::_internal_element_typeid() const { return _impl_.element_typeid_; } inline uint32_t ArrayExpr::element_typeid() const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.element_typeid) return _internal_element_typeid(); } inline void ArrayExpr::_internal_set_element_typeid(uint32_t value) { _impl_.element_typeid_ = value; } inline void ArrayExpr::set_element_typeid(uint32_t value) { _internal_set_element_typeid(value); // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.element_typeid) } // repeated .pg_query.Node elements = 5 [json_name = "elements"]; inline int ArrayExpr::_internal_elements_size() const { return _impl_.elements_.size(); } inline int ArrayExpr::elements_size() const { return _internal_elements_size(); } inline void ArrayExpr::clear_elements() { _impl_.elements_.Clear(); } inline ::pg_query::Node* ArrayExpr::mutable_elements(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ArrayExpr.elements) return _impl_.elements_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ArrayExpr::mutable_elements() { // @@protoc_insertion_point(field_mutable_list:pg_query.ArrayExpr.elements) return &_impl_.elements_; } inline const ::pg_query::Node& ArrayExpr::_internal_elements(int index) const { return _impl_.elements_.Get(index); } inline const ::pg_query::Node& ArrayExpr::elements(int index) const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.elements) return _internal_elements(index); } inline ::pg_query::Node* ArrayExpr::_internal_add_elements() { return _impl_.elements_.Add(); } inline ::pg_query::Node* ArrayExpr::add_elements() { ::pg_query::Node* _add = _internal_add_elements(); // @@protoc_insertion_point(field_add:pg_query.ArrayExpr.elements) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ArrayExpr::elements() const { // @@protoc_insertion_point(field_list:pg_query.ArrayExpr.elements) return _impl_.elements_; } // bool multidims = 6 [json_name = "multidims"]; inline void ArrayExpr::clear_multidims() { _impl_.multidims_ = false; } inline bool ArrayExpr::_internal_multidims() const { return _impl_.multidims_; } inline bool ArrayExpr::multidims() const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.multidims) return _internal_multidims(); } inline void ArrayExpr::_internal_set_multidims(bool value) { _impl_.multidims_ = value; } inline void ArrayExpr::set_multidims(bool value) { _internal_set_multidims(value); // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.multidims) } // int32 location = 7 [json_name = "location"]; inline void ArrayExpr::clear_location() { _impl_.location_ = 0; } inline int32_t ArrayExpr::_internal_location() const { return _impl_.location_; } inline int32_t ArrayExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.location) return _internal_location(); } inline void ArrayExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void ArrayExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.location) } // ------------------------------------------------------------------- // RowExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool RowExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool RowExpr::has_xpr() const { return _internal_has_xpr(); } inline void RowExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& RowExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RowExpr.xpr) return _internal_xpr(); } inline void RowExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RowExpr.xpr) } inline ::pg_query::Node* RowExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* RowExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.RowExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* RowExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* RowExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.RowExpr.xpr) } // repeated .pg_query.Node args = 2 [json_name = "args"]; inline int RowExpr::_internal_args_size() const { return _impl_.args_.size(); } inline int RowExpr::args_size() const { return _internal_args_size(); } inline void RowExpr::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* RowExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RowExpr.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RowExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.RowExpr.args) return &_impl_.args_; } inline const ::pg_query::Node& RowExpr::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& RowExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.RowExpr.args) return _internal_args(index); } inline ::pg_query::Node* RowExpr::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* RowExpr::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.RowExpr.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RowExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.RowExpr.args) return _impl_.args_; } // uint32 row_typeid = 3 [json_name = "row_typeid"]; inline void RowExpr::clear_row_typeid() { _impl_.row_typeid_ = 0u; } inline uint32_t RowExpr::_internal_row_typeid() const { return _impl_.row_typeid_; } inline uint32_t RowExpr::row_typeid() const { // @@protoc_insertion_point(field_get:pg_query.RowExpr.row_typeid) return _internal_row_typeid(); } inline void RowExpr::_internal_set_row_typeid(uint32_t value) { _impl_.row_typeid_ = value; } inline void RowExpr::set_row_typeid(uint32_t value) { _internal_set_row_typeid(value); // @@protoc_insertion_point(field_set:pg_query.RowExpr.row_typeid) } // .pg_query.CoercionForm row_format = 4 [json_name = "row_format"]; inline void RowExpr::clear_row_format() { _impl_.row_format_ = 0; } inline ::pg_query::CoercionForm RowExpr::_internal_row_format() const { return static_cast< ::pg_query::CoercionForm >(_impl_.row_format_); } inline ::pg_query::CoercionForm RowExpr::row_format() const { // @@protoc_insertion_point(field_get:pg_query.RowExpr.row_format) return _internal_row_format(); } inline void RowExpr::_internal_set_row_format(::pg_query::CoercionForm value) { _impl_.row_format_ = value; } inline void RowExpr::set_row_format(::pg_query::CoercionForm value) { _internal_set_row_format(value); // @@protoc_insertion_point(field_set:pg_query.RowExpr.row_format) } // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; inline int RowExpr::_internal_colnames_size() const { return _impl_.colnames_.size(); } inline int RowExpr::colnames_size() const { return _internal_colnames_size(); } inline void RowExpr::clear_colnames() { _impl_.colnames_.Clear(); } inline ::pg_query::Node* RowExpr::mutable_colnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RowExpr.colnames) return _impl_.colnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RowExpr::mutable_colnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.RowExpr.colnames) return &_impl_.colnames_; } inline const ::pg_query::Node& RowExpr::_internal_colnames(int index) const { return _impl_.colnames_.Get(index); } inline const ::pg_query::Node& RowExpr::colnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.RowExpr.colnames) return _internal_colnames(index); } inline ::pg_query::Node* RowExpr::_internal_add_colnames() { return _impl_.colnames_.Add(); } inline ::pg_query::Node* RowExpr::add_colnames() { ::pg_query::Node* _add = _internal_add_colnames(); // @@protoc_insertion_point(field_add:pg_query.RowExpr.colnames) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RowExpr::colnames() const { // @@protoc_insertion_point(field_list:pg_query.RowExpr.colnames) return _impl_.colnames_; } // int32 location = 6 [json_name = "location"]; inline void RowExpr::clear_location() { _impl_.location_ = 0; } inline int32_t RowExpr::_internal_location() const { return _impl_.location_; } inline int32_t RowExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.RowExpr.location) return _internal_location(); } inline void RowExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void RowExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RowExpr.location) } // ------------------------------------------------------------------- // RowCompareExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool RowCompareExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool RowCompareExpr::has_xpr() const { return _internal_has_xpr(); } inline void RowCompareExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& RowCompareExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.xpr) return _internal_xpr(); } inline void RowCompareExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RowCompareExpr.xpr) } inline ::pg_query::Node* RowCompareExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* RowCompareExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.RowCompareExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* RowCompareExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* RowCompareExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.RowCompareExpr.xpr) } // .pg_query.RowCompareType rctype = 2 [json_name = "rctype"]; inline void RowCompareExpr::clear_rctype() { _impl_.rctype_ = 0; } inline ::pg_query::RowCompareType RowCompareExpr::_internal_rctype() const { return static_cast< ::pg_query::RowCompareType >(_impl_.rctype_); } inline ::pg_query::RowCompareType RowCompareExpr::rctype() const { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.rctype) return _internal_rctype(); } inline void RowCompareExpr::_internal_set_rctype(::pg_query::RowCompareType value) { _impl_.rctype_ = value; } inline void RowCompareExpr::set_rctype(::pg_query::RowCompareType value) { _internal_set_rctype(value); // @@protoc_insertion_point(field_set:pg_query.RowCompareExpr.rctype) } // repeated .pg_query.Node opnos = 3 [json_name = "opnos"]; inline int RowCompareExpr::_internal_opnos_size() const { return _impl_.opnos_.size(); } inline int RowCompareExpr::opnos_size() const { return _internal_opnos_size(); } inline void RowCompareExpr::clear_opnos() { _impl_.opnos_.Clear(); } inline ::pg_query::Node* RowCompareExpr::mutable_opnos(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.opnos) return _impl_.opnos_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RowCompareExpr::mutable_opnos() { // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.opnos) return &_impl_.opnos_; } inline const ::pg_query::Node& RowCompareExpr::_internal_opnos(int index) const { return _impl_.opnos_.Get(index); } inline const ::pg_query::Node& RowCompareExpr::opnos(int index) const { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.opnos) return _internal_opnos(index); } inline ::pg_query::Node* RowCompareExpr::_internal_add_opnos() { return _impl_.opnos_.Add(); } inline ::pg_query::Node* RowCompareExpr::add_opnos() { ::pg_query::Node* _add = _internal_add_opnos(); // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.opnos) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RowCompareExpr::opnos() const { // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.opnos) return _impl_.opnos_; } // repeated .pg_query.Node opfamilies = 4 [json_name = "opfamilies"]; inline int RowCompareExpr::_internal_opfamilies_size() const { return _impl_.opfamilies_.size(); } inline int RowCompareExpr::opfamilies_size() const { return _internal_opfamilies_size(); } inline void RowCompareExpr::clear_opfamilies() { _impl_.opfamilies_.Clear(); } inline ::pg_query::Node* RowCompareExpr::mutable_opfamilies(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.opfamilies) return _impl_.opfamilies_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RowCompareExpr::mutable_opfamilies() { // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.opfamilies) return &_impl_.opfamilies_; } inline const ::pg_query::Node& RowCompareExpr::_internal_opfamilies(int index) const { return _impl_.opfamilies_.Get(index); } inline const ::pg_query::Node& RowCompareExpr::opfamilies(int index) const { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.opfamilies) return _internal_opfamilies(index); } inline ::pg_query::Node* RowCompareExpr::_internal_add_opfamilies() { return _impl_.opfamilies_.Add(); } inline ::pg_query::Node* RowCompareExpr::add_opfamilies() { ::pg_query::Node* _add = _internal_add_opfamilies(); // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.opfamilies) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RowCompareExpr::opfamilies() const { // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.opfamilies) return _impl_.opfamilies_; } // repeated .pg_query.Node inputcollids = 5 [json_name = "inputcollids"]; inline int RowCompareExpr::_internal_inputcollids_size() const { return _impl_.inputcollids_.size(); } inline int RowCompareExpr::inputcollids_size() const { return _internal_inputcollids_size(); } inline void RowCompareExpr::clear_inputcollids() { _impl_.inputcollids_.Clear(); } inline ::pg_query::Node* RowCompareExpr::mutable_inputcollids(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.inputcollids) return _impl_.inputcollids_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RowCompareExpr::mutable_inputcollids() { // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.inputcollids) return &_impl_.inputcollids_; } inline const ::pg_query::Node& RowCompareExpr::_internal_inputcollids(int index) const { return _impl_.inputcollids_.Get(index); } inline const ::pg_query::Node& RowCompareExpr::inputcollids(int index) const { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.inputcollids) return _internal_inputcollids(index); } inline ::pg_query::Node* RowCompareExpr::_internal_add_inputcollids() { return _impl_.inputcollids_.Add(); } inline ::pg_query::Node* RowCompareExpr::add_inputcollids() { ::pg_query::Node* _add = _internal_add_inputcollids(); // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.inputcollids) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RowCompareExpr::inputcollids() const { // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.inputcollids) return _impl_.inputcollids_; } // repeated .pg_query.Node largs = 6 [json_name = "largs"]; inline int RowCompareExpr::_internal_largs_size() const { return _impl_.largs_.size(); } inline int RowCompareExpr::largs_size() const { return _internal_largs_size(); } inline void RowCompareExpr::clear_largs() { _impl_.largs_.Clear(); } inline ::pg_query::Node* RowCompareExpr::mutable_largs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.largs) return _impl_.largs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RowCompareExpr::mutable_largs() { // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.largs) return &_impl_.largs_; } inline const ::pg_query::Node& RowCompareExpr::_internal_largs(int index) const { return _impl_.largs_.Get(index); } inline const ::pg_query::Node& RowCompareExpr::largs(int index) const { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.largs) return _internal_largs(index); } inline ::pg_query::Node* RowCompareExpr::_internal_add_largs() { return _impl_.largs_.Add(); } inline ::pg_query::Node* RowCompareExpr::add_largs() { ::pg_query::Node* _add = _internal_add_largs(); // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.largs) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RowCompareExpr::largs() const { // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.largs) return _impl_.largs_; } // repeated .pg_query.Node rargs = 7 [json_name = "rargs"]; inline int RowCompareExpr::_internal_rargs_size() const { return _impl_.rargs_.size(); } inline int RowCompareExpr::rargs_size() const { return _internal_rargs_size(); } inline void RowCompareExpr::clear_rargs() { _impl_.rargs_.Clear(); } inline ::pg_query::Node* RowCompareExpr::mutable_rargs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.rargs) return _impl_.rargs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RowCompareExpr::mutable_rargs() { // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.rargs) return &_impl_.rargs_; } inline const ::pg_query::Node& RowCompareExpr::_internal_rargs(int index) const { return _impl_.rargs_.Get(index); } inline const ::pg_query::Node& RowCompareExpr::rargs(int index) const { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.rargs) return _internal_rargs(index); } inline ::pg_query::Node* RowCompareExpr::_internal_add_rargs() { return _impl_.rargs_.Add(); } inline ::pg_query::Node* RowCompareExpr::add_rargs() { ::pg_query::Node* _add = _internal_add_rargs(); // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.rargs) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RowCompareExpr::rargs() const { // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.rargs) return _impl_.rargs_; } // ------------------------------------------------------------------- // CoalesceExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CoalesceExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool CoalesceExpr::has_xpr() const { return _internal_has_xpr(); } inline void CoalesceExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& CoalesceExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.xpr) return _internal_xpr(); } inline void CoalesceExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoalesceExpr.xpr) } inline ::pg_query::Node* CoalesceExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CoalesceExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CoalesceExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CoalesceExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* CoalesceExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CoalesceExpr.xpr) } // uint32 coalescetype = 2 [json_name = "coalescetype"]; inline void CoalesceExpr::clear_coalescetype() { _impl_.coalescetype_ = 0u; } inline uint32_t CoalesceExpr::_internal_coalescetype() const { return _impl_.coalescetype_; } inline uint32_t CoalesceExpr::coalescetype() const { // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.coalescetype) return _internal_coalescetype(); } inline void CoalesceExpr::_internal_set_coalescetype(uint32_t value) { _impl_.coalescetype_ = value; } inline void CoalesceExpr::set_coalescetype(uint32_t value) { _internal_set_coalescetype(value); // @@protoc_insertion_point(field_set:pg_query.CoalesceExpr.coalescetype) } // uint32 coalescecollid = 3 [json_name = "coalescecollid"]; inline void CoalesceExpr::clear_coalescecollid() { _impl_.coalescecollid_ = 0u; } inline uint32_t CoalesceExpr::_internal_coalescecollid() const { return _impl_.coalescecollid_; } inline uint32_t CoalesceExpr::coalescecollid() const { // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.coalescecollid) return _internal_coalescecollid(); } inline void CoalesceExpr::_internal_set_coalescecollid(uint32_t value) { _impl_.coalescecollid_ = value; } inline void CoalesceExpr::set_coalescecollid(uint32_t value) { _internal_set_coalescecollid(value); // @@protoc_insertion_point(field_set:pg_query.CoalesceExpr.coalescecollid) } // repeated .pg_query.Node args = 4 [json_name = "args"]; inline int CoalesceExpr::_internal_args_size() const { return _impl_.args_.size(); } inline int CoalesceExpr::args_size() const { return _internal_args_size(); } inline void CoalesceExpr::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* CoalesceExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CoalesceExpr.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CoalesceExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.CoalesceExpr.args) return &_impl_.args_; } inline const ::pg_query::Node& CoalesceExpr::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& CoalesceExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.args) return _internal_args(index); } inline ::pg_query::Node* CoalesceExpr::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* CoalesceExpr::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.CoalesceExpr.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CoalesceExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.CoalesceExpr.args) return _impl_.args_; } // int32 location = 5 [json_name = "location"]; inline void CoalesceExpr::clear_location() { _impl_.location_ = 0; } inline int32_t CoalesceExpr::_internal_location() const { return _impl_.location_; } inline int32_t CoalesceExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.location) return _internal_location(); } inline void CoalesceExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void CoalesceExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CoalesceExpr.location) } // ------------------------------------------------------------------- // MinMaxExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool MinMaxExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool MinMaxExpr::has_xpr() const { return _internal_has_xpr(); } inline void MinMaxExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& MinMaxExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.xpr) return _internal_xpr(); } inline void MinMaxExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MinMaxExpr.xpr) } inline ::pg_query::Node* MinMaxExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* MinMaxExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.MinMaxExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* MinMaxExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* MinMaxExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.MinMaxExpr.xpr) } // uint32 minmaxtype = 2 [json_name = "minmaxtype"]; inline void MinMaxExpr::clear_minmaxtype() { _impl_.minmaxtype_ = 0u; } inline uint32_t MinMaxExpr::_internal_minmaxtype() const { return _impl_.minmaxtype_; } inline uint32_t MinMaxExpr::minmaxtype() const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.minmaxtype) return _internal_minmaxtype(); } inline void MinMaxExpr::_internal_set_minmaxtype(uint32_t value) { _impl_.minmaxtype_ = value; } inline void MinMaxExpr::set_minmaxtype(uint32_t value) { _internal_set_minmaxtype(value); // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.minmaxtype) } // uint32 minmaxcollid = 3 [json_name = "minmaxcollid"]; inline void MinMaxExpr::clear_minmaxcollid() { _impl_.minmaxcollid_ = 0u; } inline uint32_t MinMaxExpr::_internal_minmaxcollid() const { return _impl_.minmaxcollid_; } inline uint32_t MinMaxExpr::minmaxcollid() const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.minmaxcollid) return _internal_minmaxcollid(); } inline void MinMaxExpr::_internal_set_minmaxcollid(uint32_t value) { _impl_.minmaxcollid_ = value; } inline void MinMaxExpr::set_minmaxcollid(uint32_t value) { _internal_set_minmaxcollid(value); // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.minmaxcollid) } // uint32 inputcollid = 4 [json_name = "inputcollid"]; inline void MinMaxExpr::clear_inputcollid() { _impl_.inputcollid_ = 0u; } inline uint32_t MinMaxExpr::_internal_inputcollid() const { return _impl_.inputcollid_; } inline uint32_t MinMaxExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.inputcollid) return _internal_inputcollid(); } inline void MinMaxExpr::_internal_set_inputcollid(uint32_t value) { _impl_.inputcollid_ = value; } inline void MinMaxExpr::set_inputcollid(uint32_t value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.inputcollid) } // .pg_query.MinMaxOp op = 5 [json_name = "op"]; inline void MinMaxExpr::clear_op() { _impl_.op_ = 0; } inline ::pg_query::MinMaxOp MinMaxExpr::_internal_op() const { return static_cast< ::pg_query::MinMaxOp >(_impl_.op_); } inline ::pg_query::MinMaxOp MinMaxExpr::op() const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.op) return _internal_op(); } inline void MinMaxExpr::_internal_set_op(::pg_query::MinMaxOp value) { _impl_.op_ = value; } inline void MinMaxExpr::set_op(::pg_query::MinMaxOp value) { _internal_set_op(value); // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.op) } // repeated .pg_query.Node args = 6 [json_name = "args"]; inline int MinMaxExpr::_internal_args_size() const { return _impl_.args_.size(); } inline int MinMaxExpr::args_size() const { return _internal_args_size(); } inline void MinMaxExpr::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* MinMaxExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.MinMaxExpr.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* MinMaxExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.MinMaxExpr.args) return &_impl_.args_; } inline const ::pg_query::Node& MinMaxExpr::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& MinMaxExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.args) return _internal_args(index); } inline ::pg_query::Node* MinMaxExpr::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* MinMaxExpr::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.MinMaxExpr.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& MinMaxExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.MinMaxExpr.args) return _impl_.args_; } // int32 location = 7 [json_name = "location"]; inline void MinMaxExpr::clear_location() { _impl_.location_ = 0; } inline int32_t MinMaxExpr::_internal_location() const { return _impl_.location_; } inline int32_t MinMaxExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.location) return _internal_location(); } inline void MinMaxExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void MinMaxExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.location) } // ------------------------------------------------------------------- // SQLValueFunction // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool SQLValueFunction::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool SQLValueFunction::has_xpr() const { return _internal_has_xpr(); } inline void SQLValueFunction::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& SQLValueFunction::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.xpr) return _internal_xpr(); } inline void SQLValueFunction::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SQLValueFunction.xpr) } inline ::pg_query::Node* SQLValueFunction::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SQLValueFunction::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.SQLValueFunction.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* SQLValueFunction::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* SQLValueFunction::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SQLValueFunction.xpr) } // .pg_query.SQLValueFunctionOp op = 2 [json_name = "op"]; inline void SQLValueFunction::clear_op() { _impl_.op_ = 0; } inline ::pg_query::SQLValueFunctionOp SQLValueFunction::_internal_op() const { return static_cast< ::pg_query::SQLValueFunctionOp >(_impl_.op_); } inline ::pg_query::SQLValueFunctionOp SQLValueFunction::op() const { // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.op) return _internal_op(); } inline void SQLValueFunction::_internal_set_op(::pg_query::SQLValueFunctionOp value) { _impl_.op_ = value; } inline void SQLValueFunction::set_op(::pg_query::SQLValueFunctionOp value) { _internal_set_op(value); // @@protoc_insertion_point(field_set:pg_query.SQLValueFunction.op) } // uint32 type = 3 [json_name = "type"]; inline void SQLValueFunction::clear_type() { _impl_.type_ = 0u; } inline uint32_t SQLValueFunction::_internal_type() const { return _impl_.type_; } inline uint32_t SQLValueFunction::type() const { // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.type) return _internal_type(); } inline void SQLValueFunction::_internal_set_type(uint32_t value) { _impl_.type_ = value; } inline void SQLValueFunction::set_type(uint32_t value) { _internal_set_type(value); // @@protoc_insertion_point(field_set:pg_query.SQLValueFunction.type) } // int32 typmod = 4 [json_name = "typmod"]; inline void SQLValueFunction::clear_typmod() { _impl_.typmod_ = 0; } inline int32_t SQLValueFunction::_internal_typmod() const { return _impl_.typmod_; } inline int32_t SQLValueFunction::typmod() const { // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.typmod) return _internal_typmod(); } inline void SQLValueFunction::_internal_set_typmod(int32_t value) { _impl_.typmod_ = value; } inline void SQLValueFunction::set_typmod(int32_t value) { _internal_set_typmod(value); // @@protoc_insertion_point(field_set:pg_query.SQLValueFunction.typmod) } // int32 location = 5 [json_name = "location"]; inline void SQLValueFunction::clear_location() { _impl_.location_ = 0; } inline int32_t SQLValueFunction::_internal_location() const { return _impl_.location_; } inline int32_t SQLValueFunction::location() const { // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.location) return _internal_location(); } inline void SQLValueFunction::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void SQLValueFunction::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.SQLValueFunction.location) } // ------------------------------------------------------------------- // XmlExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool XmlExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool XmlExpr::has_xpr() const { return _internal_has_xpr(); } inline void XmlExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& XmlExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.xpr) return _internal_xpr(); } inline void XmlExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.XmlExpr.xpr) } inline ::pg_query::Node* XmlExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* XmlExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.XmlExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* XmlExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* XmlExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.XmlExpr.xpr) } // .pg_query.XmlExprOp op = 2 [json_name = "op"]; inline void XmlExpr::clear_op() { _impl_.op_ = 0; } inline ::pg_query::XmlExprOp XmlExpr::_internal_op() const { return static_cast< ::pg_query::XmlExprOp >(_impl_.op_); } inline ::pg_query::XmlExprOp XmlExpr::op() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.op) return _internal_op(); } inline void XmlExpr::_internal_set_op(::pg_query::XmlExprOp value) { _impl_.op_ = value; } inline void XmlExpr::set_op(::pg_query::XmlExprOp value) { _internal_set_op(value); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.op) } // string name = 3 [json_name = "name"]; inline void XmlExpr::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& XmlExpr::name() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void XmlExpr::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.name) } inline std::string* XmlExpr::mutable_name() { 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 { return _impl_.name_.Get(); } inline void XmlExpr::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* XmlExpr::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* XmlExpr::release_name() { // @@protoc_insertion_point(field_release:pg_query.XmlExpr.name) return _impl_.name_.Release(); } inline void XmlExpr::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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 _impl_.named_args_.size(); } inline int XmlExpr::named_args_size() const { return _internal_named_args_size(); } inline void XmlExpr::clear_named_args() { _impl_.named_args_.Clear(); } inline ::pg_query::Node* XmlExpr::mutable_named_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.named_args) return _impl_.named_args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* XmlExpr::mutable_named_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.XmlExpr.named_args) return &_impl_.named_args_; } inline const ::pg_query::Node& XmlExpr::_internal_named_args(int index) const { return _impl_.named_args_.Get(index); } inline const ::pg_query::Node& XmlExpr::named_args(int index) const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.named_args) return _internal_named_args(index); } inline ::pg_query::Node* XmlExpr::_internal_add_named_args() { return _impl_.named_args_.Add(); } inline ::pg_query::Node* XmlExpr::add_named_args() { ::pg_query::Node* _add = _internal_add_named_args(); // @@protoc_insertion_point(field_add:pg_query.XmlExpr.named_args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& XmlExpr::named_args() const { // @@protoc_insertion_point(field_list:pg_query.XmlExpr.named_args) return _impl_.named_args_; } // repeated .pg_query.Node arg_names = 5 [json_name = "arg_names"]; inline int XmlExpr::_internal_arg_names_size() const { return _impl_.arg_names_.size(); } inline int XmlExpr::arg_names_size() const { return _internal_arg_names_size(); } inline void XmlExpr::clear_arg_names() { _impl_.arg_names_.Clear(); } inline ::pg_query::Node* XmlExpr::mutable_arg_names(int index) { // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.arg_names) return _impl_.arg_names_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* XmlExpr::mutable_arg_names() { // @@protoc_insertion_point(field_mutable_list:pg_query.XmlExpr.arg_names) return &_impl_.arg_names_; } inline const ::pg_query::Node& XmlExpr::_internal_arg_names(int index) const { return _impl_.arg_names_.Get(index); } inline const ::pg_query::Node& XmlExpr::arg_names(int index) const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.arg_names) return _internal_arg_names(index); } inline ::pg_query::Node* XmlExpr::_internal_add_arg_names() { return _impl_.arg_names_.Add(); } inline ::pg_query::Node* XmlExpr::add_arg_names() { ::pg_query::Node* _add = _internal_add_arg_names(); // @@protoc_insertion_point(field_add:pg_query.XmlExpr.arg_names) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& XmlExpr::arg_names() const { // @@protoc_insertion_point(field_list:pg_query.XmlExpr.arg_names) return _impl_.arg_names_; } // repeated .pg_query.Node args = 6 [json_name = "args"]; inline int XmlExpr::_internal_args_size() const { return _impl_.args_.size(); } inline int XmlExpr::args_size() const { return _internal_args_size(); } inline void XmlExpr::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* XmlExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* XmlExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.XmlExpr.args) return &_impl_.args_; } inline const ::pg_query::Node& XmlExpr::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& XmlExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.args) return _internal_args(index); } inline ::pg_query::Node* XmlExpr::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* XmlExpr::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.XmlExpr.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& XmlExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.XmlExpr.args) return _impl_.args_; } // .pg_query.XmlOptionType xmloption = 7 [json_name = "xmloption"]; inline void XmlExpr::clear_xmloption() { _impl_.xmloption_ = 0; } inline ::pg_query::XmlOptionType XmlExpr::_internal_xmloption() const { return static_cast< ::pg_query::XmlOptionType >(_impl_.xmloption_); } inline ::pg_query::XmlOptionType XmlExpr::xmloption() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.xmloption) return _internal_xmloption(); } inline void XmlExpr::_internal_set_xmloption(::pg_query::XmlOptionType value) { _impl_.xmloption_ = value; } inline void XmlExpr::set_xmloption(::pg_query::XmlOptionType value) { _internal_set_xmloption(value); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.xmloption) } // uint32 type = 8 [json_name = "type"]; inline void XmlExpr::clear_type() { _impl_.type_ = 0u; } inline uint32_t XmlExpr::_internal_type() const { return _impl_.type_; } inline uint32_t XmlExpr::type() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.type) return _internal_type(); } inline void XmlExpr::_internal_set_type(uint32_t value) { _impl_.type_ = value; } inline void XmlExpr::set_type(uint32_t value) { _internal_set_type(value); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.type) } // int32 typmod = 9 [json_name = "typmod"]; inline void XmlExpr::clear_typmod() { _impl_.typmod_ = 0; } inline int32_t XmlExpr::_internal_typmod() const { return _impl_.typmod_; } inline int32_t XmlExpr::typmod() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.typmod) return _internal_typmod(); } inline void XmlExpr::_internal_set_typmod(int32_t value) { _impl_.typmod_ = value; } inline void XmlExpr::set_typmod(int32_t value) { _internal_set_typmod(value); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.typmod) } // int32 location = 10 [json_name = "location"]; inline void XmlExpr::clear_location() { _impl_.location_ = 0; } inline int32_t XmlExpr::_internal_location() const { return _impl_.location_; } inline int32_t XmlExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.location) return _internal_location(); } inline void XmlExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void XmlExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.location) } // ------------------------------------------------------------------- // NullTest // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool NullTest::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool NullTest::has_xpr() const { return _internal_has_xpr(); } inline void NullTest::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& NullTest::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.NullTest.xpr) return _internal_xpr(); } inline void NullTest::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NullTest.xpr) } inline ::pg_query::Node* NullTest::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* NullTest::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.NullTest.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* NullTest::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* NullTest::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.NullTest.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool NullTest::_internal_has_arg() const { return this != internal_default_instance() && _impl_.arg_ != nullptr; } inline bool NullTest::has_arg() const { return _internal_has_arg(); } inline void NullTest::clear_arg() { if (GetArenaForAllocation() == nullptr && _impl_.arg_ != nullptr) { delete _impl_.arg_; } _impl_.arg_ = nullptr; } inline const ::pg_query::Node& NullTest::_internal_arg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.NullTest.arg) return _internal_arg(); } inline void NullTest::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arg_); } _impl_.arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NullTest.arg) } inline ::pg_query::Node* NullTest::release_arg() { ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* NullTest::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.NullTest.arg) ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* NullTest::_internal_mutable_arg() { if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.arg_ = p; } return _impl_.arg_; } inline ::pg_query::Node* NullTest::mutable_arg() { ::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* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } _impl_.arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.NullTest.arg) } // .pg_query.NullTestType nulltesttype = 3 [json_name = "nulltesttype"]; inline void NullTest::clear_nulltesttype() { _impl_.nulltesttype_ = 0; } inline ::pg_query::NullTestType NullTest::_internal_nulltesttype() const { return static_cast< ::pg_query::NullTestType >(_impl_.nulltesttype_); } inline ::pg_query::NullTestType NullTest::nulltesttype() const { // @@protoc_insertion_point(field_get:pg_query.NullTest.nulltesttype) return _internal_nulltesttype(); } inline void NullTest::_internal_set_nulltesttype(::pg_query::NullTestType value) { _impl_.nulltesttype_ = value; } inline void NullTest::set_nulltesttype(::pg_query::NullTestType value) { _internal_set_nulltesttype(value); // @@protoc_insertion_point(field_set:pg_query.NullTest.nulltesttype) } // bool argisrow = 4 [json_name = "argisrow"]; inline void NullTest::clear_argisrow() { _impl_.argisrow_ = false; } inline bool NullTest::_internal_argisrow() const { return _impl_.argisrow_; } inline bool NullTest::argisrow() const { // @@protoc_insertion_point(field_get:pg_query.NullTest.argisrow) return _internal_argisrow(); } inline void NullTest::_internal_set_argisrow(bool value) { _impl_.argisrow_ = value; } inline void NullTest::set_argisrow(bool value) { _internal_set_argisrow(value); // @@protoc_insertion_point(field_set:pg_query.NullTest.argisrow) } // int32 location = 5 [json_name = "location"]; inline void NullTest::clear_location() { _impl_.location_ = 0; } inline int32_t NullTest::_internal_location() const { return _impl_.location_; } inline int32_t NullTest::location() const { // @@protoc_insertion_point(field_get:pg_query.NullTest.location) return _internal_location(); } inline void NullTest::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void NullTest::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.NullTest.location) } // ------------------------------------------------------------------- // BooleanTest // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool BooleanTest::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool BooleanTest::has_xpr() const { return _internal_has_xpr(); } inline void BooleanTest::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& BooleanTest::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.BooleanTest.xpr) return _internal_xpr(); } inline void BooleanTest::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.BooleanTest.xpr) } inline ::pg_query::Node* BooleanTest::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* BooleanTest::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.BooleanTest.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* BooleanTest::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* BooleanTest::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.BooleanTest.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool BooleanTest::_internal_has_arg() const { return this != internal_default_instance() && _impl_.arg_ != nullptr; } inline bool BooleanTest::has_arg() const { return _internal_has_arg(); } inline void BooleanTest::clear_arg() { if (GetArenaForAllocation() == nullptr && _impl_.arg_ != nullptr) { delete _impl_.arg_; } _impl_.arg_ = nullptr; } inline const ::pg_query::Node& BooleanTest::_internal_arg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.BooleanTest.arg) return _internal_arg(); } inline void BooleanTest::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arg_); } _impl_.arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.BooleanTest.arg) } inline ::pg_query::Node* BooleanTest::release_arg() { ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* BooleanTest::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.BooleanTest.arg) ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* BooleanTest::_internal_mutable_arg() { if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.arg_ = p; } return _impl_.arg_; } inline ::pg_query::Node* BooleanTest::mutable_arg() { ::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* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } _impl_.arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.BooleanTest.arg) } // .pg_query.BoolTestType booltesttype = 3 [json_name = "booltesttype"]; inline void BooleanTest::clear_booltesttype() { _impl_.booltesttype_ = 0; } inline ::pg_query::BoolTestType BooleanTest::_internal_booltesttype() const { return static_cast< ::pg_query::BoolTestType >(_impl_.booltesttype_); } inline ::pg_query::BoolTestType BooleanTest::booltesttype() const { // @@protoc_insertion_point(field_get:pg_query.BooleanTest.booltesttype) return _internal_booltesttype(); } inline void BooleanTest::_internal_set_booltesttype(::pg_query::BoolTestType value) { _impl_.booltesttype_ = value; } inline void BooleanTest::set_booltesttype(::pg_query::BoolTestType value) { _internal_set_booltesttype(value); // @@protoc_insertion_point(field_set:pg_query.BooleanTest.booltesttype) } // int32 location = 4 [json_name = "location"]; inline void BooleanTest::clear_location() { _impl_.location_ = 0; } inline int32_t BooleanTest::_internal_location() const { return _impl_.location_; } inline int32_t BooleanTest::location() const { // @@protoc_insertion_point(field_get:pg_query.BooleanTest.location) return _internal_location(); } inline void BooleanTest::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void BooleanTest::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.BooleanTest.location) } // ------------------------------------------------------------------- // CoerceToDomain // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CoerceToDomain::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool CoerceToDomain::has_xpr() const { return _internal_has_xpr(); } inline void CoerceToDomain::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& CoerceToDomain::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.xpr) return _internal_xpr(); } inline void CoerceToDomain::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceToDomain.xpr) } inline ::pg_query::Node* CoerceToDomain::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CoerceToDomain::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CoerceToDomain.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CoerceToDomain::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* CoerceToDomain::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceToDomain.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool CoerceToDomain::_internal_has_arg() const { return this != internal_default_instance() && _impl_.arg_ != nullptr; } inline bool CoerceToDomain::has_arg() const { return _internal_has_arg(); } inline void CoerceToDomain::clear_arg() { if (GetArenaForAllocation() == nullptr && _impl_.arg_ != nullptr) { delete _impl_.arg_; } _impl_.arg_ = nullptr; } inline const ::pg_query::Node& CoerceToDomain::_internal_arg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.arg) return _internal_arg(); } inline void CoerceToDomain::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arg_); } _impl_.arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceToDomain.arg) } inline ::pg_query::Node* CoerceToDomain::release_arg() { ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CoerceToDomain::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.CoerceToDomain.arg) ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* CoerceToDomain::_internal_mutable_arg() { if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.arg_ = p; } return _impl_.arg_; } inline ::pg_query::Node* CoerceToDomain::mutable_arg() { ::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* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } _impl_.arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceToDomain.arg) } // uint32 resulttype = 3 [json_name = "resulttype"]; inline void CoerceToDomain::clear_resulttype() { _impl_.resulttype_ = 0u; } inline uint32_t CoerceToDomain::_internal_resulttype() const { return _impl_.resulttype_; } inline uint32_t CoerceToDomain::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.resulttype) return _internal_resulttype(); } inline void CoerceToDomain::_internal_set_resulttype(uint32_t value) { _impl_.resulttype_ = value; } inline void CoerceToDomain::set_resulttype(uint32_t value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.resulttype) } // int32 resulttypmod = 4 [json_name = "resulttypmod"]; inline void CoerceToDomain::clear_resulttypmod() { _impl_.resulttypmod_ = 0; } inline int32_t CoerceToDomain::_internal_resulttypmod() const { return _impl_.resulttypmod_; } inline int32_t CoerceToDomain::resulttypmod() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.resulttypmod) return _internal_resulttypmod(); } inline void CoerceToDomain::_internal_set_resulttypmod(int32_t value) { _impl_.resulttypmod_ = value; } inline void CoerceToDomain::set_resulttypmod(int32_t value) { _internal_set_resulttypmod(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.resulttypmod) } // uint32 resultcollid = 5 [json_name = "resultcollid"]; inline void CoerceToDomain::clear_resultcollid() { _impl_.resultcollid_ = 0u; } inline uint32_t CoerceToDomain::_internal_resultcollid() const { return _impl_.resultcollid_; } inline uint32_t CoerceToDomain::resultcollid() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.resultcollid) return _internal_resultcollid(); } inline void CoerceToDomain::_internal_set_resultcollid(uint32_t value) { _impl_.resultcollid_ = value; } inline void CoerceToDomain::set_resultcollid(uint32_t value) { _internal_set_resultcollid(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.resultcollid) } // .pg_query.CoercionForm coercionformat = 6 [json_name = "coercionformat"]; inline void CoerceToDomain::clear_coercionformat() { _impl_.coercionformat_ = 0; } inline ::pg_query::CoercionForm CoerceToDomain::_internal_coercionformat() const { return static_cast< ::pg_query::CoercionForm >(_impl_.coercionformat_); } inline ::pg_query::CoercionForm CoerceToDomain::coercionformat() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.coercionformat) return _internal_coercionformat(); } inline void CoerceToDomain::_internal_set_coercionformat(::pg_query::CoercionForm value) { _impl_.coercionformat_ = value; } inline void CoerceToDomain::set_coercionformat(::pg_query::CoercionForm value) { _internal_set_coercionformat(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.coercionformat) } // int32 location = 7 [json_name = "location"]; inline void CoerceToDomain::clear_location() { _impl_.location_ = 0; } inline int32_t CoerceToDomain::_internal_location() const { return _impl_.location_; } inline int32_t CoerceToDomain::location() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.location) return _internal_location(); } inline void CoerceToDomain::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void CoerceToDomain::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.location) } // ------------------------------------------------------------------- // CoerceToDomainValue // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CoerceToDomainValue::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool CoerceToDomainValue::has_xpr() const { return _internal_has_xpr(); } inline void CoerceToDomainValue::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& CoerceToDomainValue::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.xpr) return _internal_xpr(); } inline void CoerceToDomainValue::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceToDomainValue.xpr) } inline ::pg_query::Node* CoerceToDomainValue::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CoerceToDomainValue::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CoerceToDomainValue.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CoerceToDomainValue::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* CoerceToDomainValue::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceToDomainValue.xpr) } // uint32 type_id = 2 [json_name = "typeId"]; inline void CoerceToDomainValue::clear_type_id() { _impl_.type_id_ = 0u; } inline uint32_t CoerceToDomainValue::_internal_type_id() const { return _impl_.type_id_; } inline uint32_t CoerceToDomainValue::type_id() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.type_id) return _internal_type_id(); } inline void CoerceToDomainValue::_internal_set_type_id(uint32_t value) { _impl_.type_id_ = value; } inline void CoerceToDomainValue::set_type_id(uint32_t value) { _internal_set_type_id(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomainValue.type_id) } // int32 type_mod = 3 [json_name = "typeMod"]; inline void CoerceToDomainValue::clear_type_mod() { _impl_.type_mod_ = 0; } inline int32_t CoerceToDomainValue::_internal_type_mod() const { return _impl_.type_mod_; } inline int32_t CoerceToDomainValue::type_mod() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.type_mod) return _internal_type_mod(); } inline void CoerceToDomainValue::_internal_set_type_mod(int32_t value) { _impl_.type_mod_ = value; } inline void CoerceToDomainValue::set_type_mod(int32_t value) { _internal_set_type_mod(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomainValue.type_mod) } // uint32 collation = 4 [json_name = "collation"]; inline void CoerceToDomainValue::clear_collation() { _impl_.collation_ = 0u; } inline uint32_t CoerceToDomainValue::_internal_collation() const { return _impl_.collation_; } inline uint32_t CoerceToDomainValue::collation() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.collation) return _internal_collation(); } inline void CoerceToDomainValue::_internal_set_collation(uint32_t value) { _impl_.collation_ = value; } inline void CoerceToDomainValue::set_collation(uint32_t value) { _internal_set_collation(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomainValue.collation) } // int32 location = 5 [json_name = "location"]; inline void CoerceToDomainValue::clear_location() { _impl_.location_ = 0; } inline int32_t CoerceToDomainValue::_internal_location() const { return _impl_.location_; } inline int32_t CoerceToDomainValue::location() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.location) return _internal_location(); } inline void CoerceToDomainValue::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void CoerceToDomainValue::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomainValue.location) } // ------------------------------------------------------------------- // SetToDefault // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool SetToDefault::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool SetToDefault::has_xpr() const { return _internal_has_xpr(); } inline void SetToDefault::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& SetToDefault::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SetToDefault.xpr) return _internal_xpr(); } inline void SetToDefault::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SetToDefault.xpr) } inline ::pg_query::Node* SetToDefault::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SetToDefault::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.SetToDefault.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* SetToDefault::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* SetToDefault::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SetToDefault.xpr) } // uint32 type_id = 2 [json_name = "typeId"]; inline void SetToDefault::clear_type_id() { _impl_.type_id_ = 0u; } inline uint32_t SetToDefault::_internal_type_id() const { return _impl_.type_id_; } inline uint32_t SetToDefault::type_id() const { // @@protoc_insertion_point(field_get:pg_query.SetToDefault.type_id) return _internal_type_id(); } inline void SetToDefault::_internal_set_type_id(uint32_t value) { _impl_.type_id_ = value; } inline void SetToDefault::set_type_id(uint32_t value) { _internal_set_type_id(value); // @@protoc_insertion_point(field_set:pg_query.SetToDefault.type_id) } // int32 type_mod = 3 [json_name = "typeMod"]; inline void SetToDefault::clear_type_mod() { _impl_.type_mod_ = 0; } inline int32_t SetToDefault::_internal_type_mod() const { return _impl_.type_mod_; } inline int32_t SetToDefault::type_mod() const { // @@protoc_insertion_point(field_get:pg_query.SetToDefault.type_mod) return _internal_type_mod(); } inline void SetToDefault::_internal_set_type_mod(int32_t value) { _impl_.type_mod_ = value; } inline void SetToDefault::set_type_mod(int32_t value) { _internal_set_type_mod(value); // @@protoc_insertion_point(field_set:pg_query.SetToDefault.type_mod) } // uint32 collation = 4 [json_name = "collation"]; inline void SetToDefault::clear_collation() { _impl_.collation_ = 0u; } inline uint32_t SetToDefault::_internal_collation() const { return _impl_.collation_; } inline uint32_t SetToDefault::collation() const { // @@protoc_insertion_point(field_get:pg_query.SetToDefault.collation) return _internal_collation(); } inline void SetToDefault::_internal_set_collation(uint32_t value) { _impl_.collation_ = value; } inline void SetToDefault::set_collation(uint32_t value) { _internal_set_collation(value); // @@protoc_insertion_point(field_set:pg_query.SetToDefault.collation) } // int32 location = 5 [json_name = "location"]; inline void SetToDefault::clear_location() { _impl_.location_ = 0; } inline int32_t SetToDefault::_internal_location() const { return _impl_.location_; } inline int32_t SetToDefault::location() const { // @@protoc_insertion_point(field_get:pg_query.SetToDefault.location) return _internal_location(); } inline void SetToDefault::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void SetToDefault::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.SetToDefault.location) } // ------------------------------------------------------------------- // CurrentOfExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CurrentOfExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool CurrentOfExpr::has_xpr() const { return _internal_has_xpr(); } inline void CurrentOfExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& CurrentOfExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CurrentOfExpr.xpr) return _internal_xpr(); } inline void CurrentOfExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CurrentOfExpr.xpr) } inline ::pg_query::Node* CurrentOfExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CurrentOfExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CurrentOfExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CurrentOfExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* CurrentOfExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CurrentOfExpr.xpr) } // uint32 cvarno = 2 [json_name = "cvarno"]; inline void CurrentOfExpr::clear_cvarno() { _impl_.cvarno_ = 0u; } inline uint32_t CurrentOfExpr::_internal_cvarno() const { return _impl_.cvarno_; } inline uint32_t CurrentOfExpr::cvarno() const { // @@protoc_insertion_point(field_get:pg_query.CurrentOfExpr.cvarno) return _internal_cvarno(); } inline void CurrentOfExpr::_internal_set_cvarno(uint32_t value) { _impl_.cvarno_ = value; } inline void CurrentOfExpr::set_cvarno(uint32_t value) { _internal_set_cvarno(value); // @@protoc_insertion_point(field_set:pg_query.CurrentOfExpr.cvarno) } // string cursor_name = 3 [json_name = "cursor_name"]; inline void CurrentOfExpr::clear_cursor_name() { _impl_.cursor_name_.ClearToEmpty(); } inline const std::string& CurrentOfExpr::cursor_name() const { // @@protoc_insertion_point(field_get:pg_query.CurrentOfExpr.cursor_name) return _internal_cursor_name(); } template inline PROTOBUF_ALWAYS_INLINE void CurrentOfExpr::set_cursor_name(ArgT0&& arg0, ArgT... args) { _impl_.cursor_name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CurrentOfExpr.cursor_name) } inline std::string* CurrentOfExpr::mutable_cursor_name() { 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 { return _impl_.cursor_name_.Get(); } inline void CurrentOfExpr::_internal_set_cursor_name(const std::string& value) { _impl_.cursor_name_.Set(value, GetArenaForAllocation()); } inline std::string* CurrentOfExpr::_internal_mutable_cursor_name() { return _impl_.cursor_name_.Mutable(GetArenaForAllocation()); } inline std::string* CurrentOfExpr::release_cursor_name() { // @@protoc_insertion_point(field_release:pg_query.CurrentOfExpr.cursor_name) return _impl_.cursor_name_.Release(); } inline void CurrentOfExpr::set_allocated_cursor_name(std::string* cursor_name) { if (cursor_name != nullptr) { } else { } _impl_.cursor_name_.SetAllocated(cursor_name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.cursor_name_.IsDefault()) { _impl_.cursor_name_.Set("", GetArenaForAllocation()); } #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() { _impl_.cursor_param_ = 0; } inline int32_t CurrentOfExpr::_internal_cursor_param() const { return _impl_.cursor_param_; } inline int32_t CurrentOfExpr::cursor_param() const { // @@protoc_insertion_point(field_get:pg_query.CurrentOfExpr.cursor_param) return _internal_cursor_param(); } inline void CurrentOfExpr::_internal_set_cursor_param(int32_t value) { _impl_.cursor_param_ = value; } inline void CurrentOfExpr::set_cursor_param(int32_t value) { _internal_set_cursor_param(value); // @@protoc_insertion_point(field_set:pg_query.CurrentOfExpr.cursor_param) } // ------------------------------------------------------------------- // NextValueExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool NextValueExpr::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool NextValueExpr::has_xpr() const { return _internal_has_xpr(); } inline void NextValueExpr::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& NextValueExpr::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.NextValueExpr.xpr) return _internal_xpr(); } inline void NextValueExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NextValueExpr.xpr) } inline ::pg_query::Node* NextValueExpr::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* NextValueExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.NextValueExpr.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* NextValueExpr::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* NextValueExpr::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.NextValueExpr.xpr) } // uint32 seqid = 2 [json_name = "seqid"]; inline void NextValueExpr::clear_seqid() { _impl_.seqid_ = 0u; } inline uint32_t NextValueExpr::_internal_seqid() const { return _impl_.seqid_; } inline uint32_t NextValueExpr::seqid() const { // @@protoc_insertion_point(field_get:pg_query.NextValueExpr.seqid) return _internal_seqid(); } inline void NextValueExpr::_internal_set_seqid(uint32_t value) { _impl_.seqid_ = value; } inline void NextValueExpr::set_seqid(uint32_t value) { _internal_set_seqid(value); // @@protoc_insertion_point(field_set:pg_query.NextValueExpr.seqid) } // uint32 type_id = 3 [json_name = "typeId"]; inline void NextValueExpr::clear_type_id() { _impl_.type_id_ = 0u; } inline uint32_t NextValueExpr::_internal_type_id() const { return _impl_.type_id_; } inline uint32_t NextValueExpr::type_id() const { // @@protoc_insertion_point(field_get:pg_query.NextValueExpr.type_id) return _internal_type_id(); } inline void NextValueExpr::_internal_set_type_id(uint32_t value) { _impl_.type_id_ = value; } inline void NextValueExpr::set_type_id(uint32_t value) { _internal_set_type_id(value); // @@protoc_insertion_point(field_set:pg_query.NextValueExpr.type_id) } // ------------------------------------------------------------------- // InferenceElem // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool InferenceElem::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool InferenceElem::has_xpr() const { return _internal_has_xpr(); } inline void InferenceElem::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& InferenceElem::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.InferenceElem.xpr) return _internal_xpr(); } inline void InferenceElem::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InferenceElem.xpr) } inline ::pg_query::Node* InferenceElem::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* InferenceElem::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.InferenceElem.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* InferenceElem::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* InferenceElem::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.InferenceElem.xpr) } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool InferenceElem::_internal_has_expr() const { return this != internal_default_instance() && _impl_.expr_ != nullptr; } inline bool InferenceElem::has_expr() const { return _internal_has_expr(); } inline void InferenceElem::clear_expr() { if (GetArenaForAllocation() == nullptr && _impl_.expr_ != nullptr) { delete _impl_.expr_; } _impl_.expr_ = nullptr; } inline const ::pg_query::Node& InferenceElem::_internal_expr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.InferenceElem.expr) return _internal_expr(); } inline void InferenceElem::unsafe_arena_set_allocated_expr( ::pg_query::Node* expr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.expr_); } _impl_.expr_ = expr; if (expr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InferenceElem.expr) } inline ::pg_query::Node* InferenceElem::release_expr() { ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* InferenceElem::unsafe_arena_release_expr() { // @@protoc_insertion_point(field_release:pg_query.InferenceElem.expr) ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::Node* InferenceElem::_internal_mutable_expr() { if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.expr_ = p; } return _impl_.expr_; } inline ::pg_query::Node* InferenceElem::mutable_expr() { ::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* expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.expr_; } if (expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(expr); if (message_arena != submessage_arena) { expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, expr, submessage_arena); } } else { } _impl_.expr_ = expr; // @@protoc_insertion_point(field_set_allocated:pg_query.InferenceElem.expr) } // uint32 infercollid = 3 [json_name = "infercollid"]; inline void InferenceElem::clear_infercollid() { _impl_.infercollid_ = 0u; } inline uint32_t InferenceElem::_internal_infercollid() const { return _impl_.infercollid_; } inline uint32_t InferenceElem::infercollid() const { // @@protoc_insertion_point(field_get:pg_query.InferenceElem.infercollid) return _internal_infercollid(); } inline void InferenceElem::_internal_set_infercollid(uint32_t value) { _impl_.infercollid_ = value; } inline void InferenceElem::set_infercollid(uint32_t value) { _internal_set_infercollid(value); // @@protoc_insertion_point(field_set:pg_query.InferenceElem.infercollid) } // uint32 inferopclass = 4 [json_name = "inferopclass"]; inline void InferenceElem::clear_inferopclass() { _impl_.inferopclass_ = 0u; } inline uint32_t InferenceElem::_internal_inferopclass() const { return _impl_.inferopclass_; } inline uint32_t InferenceElem::inferopclass() const { // @@protoc_insertion_point(field_get:pg_query.InferenceElem.inferopclass) return _internal_inferopclass(); } inline void InferenceElem::_internal_set_inferopclass(uint32_t value) { _impl_.inferopclass_ = value; } inline void InferenceElem::set_inferopclass(uint32_t value) { _internal_set_inferopclass(value); // @@protoc_insertion_point(field_set:pg_query.InferenceElem.inferopclass) } // ------------------------------------------------------------------- // TargetEntry // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool TargetEntry::_internal_has_xpr() const { return this != internal_default_instance() && _impl_.xpr_ != nullptr; } inline bool TargetEntry::has_xpr() const { return _internal_has_xpr(); } inline void TargetEntry::clear_xpr() { if (GetArenaForAllocation() == nullptr && _impl_.xpr_ != nullptr) { delete _impl_.xpr_; } _impl_.xpr_ = nullptr; } inline const ::pg_query::Node& TargetEntry::_internal_xpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.xpr) return _internal_xpr(); } inline void TargetEntry::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TargetEntry.xpr) } inline ::pg_query::Node* TargetEntry::release_xpr() { ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* TargetEntry::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.TargetEntry.xpr) ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* TargetEntry::_internal_mutable_xpr() { if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.xpr_ = p; } return _impl_.xpr_; } inline ::pg_query::Node* TargetEntry::mutable_xpr() { ::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* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } _impl_.xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.TargetEntry.xpr) } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool TargetEntry::_internal_has_expr() const { return this != internal_default_instance() && _impl_.expr_ != nullptr; } inline bool TargetEntry::has_expr() const { return _internal_has_expr(); } inline void TargetEntry::clear_expr() { if (GetArenaForAllocation() == nullptr && _impl_.expr_ != nullptr) { delete _impl_.expr_; } _impl_.expr_ = nullptr; } inline const ::pg_query::Node& TargetEntry::_internal_expr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.expr) return _internal_expr(); } inline void TargetEntry::unsafe_arena_set_allocated_expr( ::pg_query::Node* expr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.expr_); } _impl_.expr_ = expr; if (expr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TargetEntry.expr) } inline ::pg_query::Node* TargetEntry::release_expr() { ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* TargetEntry::unsafe_arena_release_expr() { // @@protoc_insertion_point(field_release:pg_query.TargetEntry.expr) ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::Node* TargetEntry::_internal_mutable_expr() { if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.expr_ = p; } return _impl_.expr_; } inline ::pg_query::Node* TargetEntry::mutable_expr() { ::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* expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.expr_; } if (expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(expr); if (message_arena != submessage_arena) { expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, expr, submessage_arena); } } else { } _impl_.expr_ = expr; // @@protoc_insertion_point(field_set_allocated:pg_query.TargetEntry.expr) } // int32 resno = 3 [json_name = "resno"]; inline void TargetEntry::clear_resno() { _impl_.resno_ = 0; } inline int32_t TargetEntry::_internal_resno() const { return _impl_.resno_; } inline int32_t TargetEntry::resno() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resno) return _internal_resno(); } inline void TargetEntry::_internal_set_resno(int32_t value) { _impl_.resno_ = value; } inline void TargetEntry::set_resno(int32_t value) { _internal_set_resno(value); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resno) } // string resname = 4 [json_name = "resname"]; inline void TargetEntry::clear_resname() { _impl_.resname_.ClearToEmpty(); } inline const std::string& TargetEntry::resname() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resname) return _internal_resname(); } template inline PROTOBUF_ALWAYS_INLINE void TargetEntry::set_resname(ArgT0&& arg0, ArgT... args) { _impl_.resname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resname) } inline std::string* TargetEntry::mutable_resname() { 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 { return _impl_.resname_.Get(); } inline void TargetEntry::_internal_set_resname(const std::string& value) { _impl_.resname_.Set(value, GetArenaForAllocation()); } inline std::string* TargetEntry::_internal_mutable_resname() { return _impl_.resname_.Mutable(GetArenaForAllocation()); } inline std::string* TargetEntry::release_resname() { // @@protoc_insertion_point(field_release:pg_query.TargetEntry.resname) return _impl_.resname_.Release(); } inline void TargetEntry::set_allocated_resname(std::string* resname) { if (resname != nullptr) { } else { } _impl_.resname_.SetAllocated(resname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.resname_.IsDefault()) { _impl_.resname_.Set("", GetArenaForAllocation()); } #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() { _impl_.ressortgroupref_ = 0u; } inline uint32_t TargetEntry::_internal_ressortgroupref() const { return _impl_.ressortgroupref_; } inline uint32_t TargetEntry::ressortgroupref() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.ressortgroupref) return _internal_ressortgroupref(); } inline void TargetEntry::_internal_set_ressortgroupref(uint32_t value) { _impl_.ressortgroupref_ = value; } inline void TargetEntry::set_ressortgroupref(uint32_t value) { _internal_set_ressortgroupref(value); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.ressortgroupref) } // uint32 resorigtbl = 6 [json_name = "resorigtbl"]; inline void TargetEntry::clear_resorigtbl() { _impl_.resorigtbl_ = 0u; } inline uint32_t TargetEntry::_internal_resorigtbl() const { return _impl_.resorigtbl_; } inline uint32_t TargetEntry::resorigtbl() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resorigtbl) return _internal_resorigtbl(); } inline void TargetEntry::_internal_set_resorigtbl(uint32_t value) { _impl_.resorigtbl_ = value; } inline void TargetEntry::set_resorigtbl(uint32_t value) { _internal_set_resorigtbl(value); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resorigtbl) } // int32 resorigcol = 7 [json_name = "resorigcol"]; inline void TargetEntry::clear_resorigcol() { _impl_.resorigcol_ = 0; } inline int32_t TargetEntry::_internal_resorigcol() const { return _impl_.resorigcol_; } inline int32_t TargetEntry::resorigcol() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resorigcol) return _internal_resorigcol(); } inline void TargetEntry::_internal_set_resorigcol(int32_t value) { _impl_.resorigcol_ = value; } inline void TargetEntry::set_resorigcol(int32_t value) { _internal_set_resorigcol(value); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resorigcol) } // bool resjunk = 8 [json_name = "resjunk"]; inline void TargetEntry::clear_resjunk() { _impl_.resjunk_ = false; } inline bool TargetEntry::_internal_resjunk() const { return _impl_.resjunk_; } inline bool TargetEntry::resjunk() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resjunk) return _internal_resjunk(); } inline void TargetEntry::_internal_set_resjunk(bool value) { _impl_.resjunk_ = value; } inline void TargetEntry::set_resjunk(bool value) { _internal_set_resjunk(value); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resjunk) } // ------------------------------------------------------------------- // RangeTblRef // int32 rtindex = 1 [json_name = "rtindex"]; inline void RangeTblRef::clear_rtindex() { _impl_.rtindex_ = 0; } inline int32_t RangeTblRef::_internal_rtindex() const { return _impl_.rtindex_; } inline int32_t RangeTblRef::rtindex() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblRef.rtindex) return _internal_rtindex(); } inline void RangeTblRef::_internal_set_rtindex(int32_t value) { _impl_.rtindex_ = value; } inline void RangeTblRef::set_rtindex(int32_t value) { _internal_set_rtindex(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblRef.rtindex) } // ------------------------------------------------------------------- // JoinExpr // .pg_query.JoinType jointype = 1 [json_name = "jointype"]; inline void JoinExpr::clear_jointype() { _impl_.jointype_ = 0; } inline ::pg_query::JoinType JoinExpr::_internal_jointype() const { return static_cast< ::pg_query::JoinType >(_impl_.jointype_); } inline ::pg_query::JoinType JoinExpr::jointype() const { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.jointype) return _internal_jointype(); } inline void JoinExpr::_internal_set_jointype(::pg_query::JoinType value) { _impl_.jointype_ = value; } inline void JoinExpr::set_jointype(::pg_query::JoinType value) { _internal_set_jointype(value); // @@protoc_insertion_point(field_set:pg_query.JoinExpr.jointype) } // bool is_natural = 2 [json_name = "isNatural"]; inline void JoinExpr::clear_is_natural() { _impl_.is_natural_ = false; } inline bool JoinExpr::_internal_is_natural() const { return _impl_.is_natural_; } inline bool JoinExpr::is_natural() const { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.is_natural) return _internal_is_natural(); } inline void JoinExpr::_internal_set_is_natural(bool value) { _impl_.is_natural_ = value; } inline void JoinExpr::set_is_natural(bool value) { _internal_set_is_natural(value); // @@protoc_insertion_point(field_set:pg_query.JoinExpr.is_natural) } // .pg_query.Node larg = 3 [json_name = "larg"]; inline bool JoinExpr::_internal_has_larg() const { return this != internal_default_instance() && _impl_.larg_ != nullptr; } inline bool JoinExpr::has_larg() const { return _internal_has_larg(); } inline void JoinExpr::clear_larg() { if (GetArenaForAllocation() == nullptr && _impl_.larg_ != nullptr) { delete _impl_.larg_; } _impl_.larg_ = nullptr; } inline const ::pg_query::Node& JoinExpr::_internal_larg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.larg) return _internal_larg(); } inline void JoinExpr::unsafe_arena_set_allocated_larg( ::pg_query::Node* larg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.larg_); } _impl_.larg_ = larg; if (larg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.larg) } inline ::pg_query::Node* JoinExpr::release_larg() { ::pg_query::Node* temp = _impl_.larg_; _impl_.larg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* JoinExpr::unsafe_arena_release_larg() { // @@protoc_insertion_point(field_release:pg_query.JoinExpr.larg) ::pg_query::Node* temp = _impl_.larg_; _impl_.larg_ = nullptr; return temp; } inline ::pg_query::Node* JoinExpr::_internal_mutable_larg() { if (_impl_.larg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.larg_ = p; } return _impl_.larg_; } inline ::pg_query::Node* JoinExpr::mutable_larg() { ::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* larg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.larg_; } if (larg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(larg); if (message_arena != submessage_arena) { larg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, larg, submessage_arena); } } else { } _impl_.larg_ = larg; // @@protoc_insertion_point(field_set_allocated:pg_query.JoinExpr.larg) } // .pg_query.Node rarg = 4 [json_name = "rarg"]; inline bool JoinExpr::_internal_has_rarg() const { return this != internal_default_instance() && _impl_.rarg_ != nullptr; } inline bool JoinExpr::has_rarg() const { return _internal_has_rarg(); } inline void JoinExpr::clear_rarg() { if (GetArenaForAllocation() == nullptr && _impl_.rarg_ != nullptr) { delete _impl_.rarg_; } _impl_.rarg_ = nullptr; } inline const ::pg_query::Node& JoinExpr::_internal_rarg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.rarg) return _internal_rarg(); } inline void JoinExpr::unsafe_arena_set_allocated_rarg( ::pg_query::Node* rarg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.rarg_); } _impl_.rarg_ = rarg; if (rarg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.rarg) } inline ::pg_query::Node* JoinExpr::release_rarg() { ::pg_query::Node* temp = _impl_.rarg_; _impl_.rarg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* JoinExpr::unsafe_arena_release_rarg() { // @@protoc_insertion_point(field_release:pg_query.JoinExpr.rarg) ::pg_query::Node* temp = _impl_.rarg_; _impl_.rarg_ = nullptr; return temp; } inline ::pg_query::Node* JoinExpr::_internal_mutable_rarg() { if (_impl_.rarg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.rarg_ = p; } return _impl_.rarg_; } inline ::pg_query::Node* JoinExpr::mutable_rarg() { ::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* rarg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.rarg_; } if (rarg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(rarg); if (message_arena != submessage_arena) { rarg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, rarg, submessage_arena); } } else { } _impl_.rarg_ = rarg; // @@protoc_insertion_point(field_set_allocated:pg_query.JoinExpr.rarg) } // repeated .pg_query.Node using_clause = 5 [json_name = "usingClause"]; inline int JoinExpr::_internal_using_clause_size() const { return _impl_.using_clause_.size(); } inline int JoinExpr::using_clause_size() const { return _internal_using_clause_size(); } inline void JoinExpr::clear_using_clause() { _impl_.using_clause_.Clear(); } inline ::pg_query::Node* JoinExpr::mutable_using_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.JoinExpr.using_clause) return _impl_.using_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* JoinExpr::mutable_using_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.JoinExpr.using_clause) return &_impl_.using_clause_; } inline const ::pg_query::Node& JoinExpr::_internal_using_clause(int index) const { return _impl_.using_clause_.Get(index); } inline const ::pg_query::Node& JoinExpr::using_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.using_clause) return _internal_using_clause(index); } inline ::pg_query::Node* JoinExpr::_internal_add_using_clause() { return _impl_.using_clause_.Add(); } inline ::pg_query::Node* JoinExpr::add_using_clause() { ::pg_query::Node* _add = _internal_add_using_clause(); // @@protoc_insertion_point(field_add:pg_query.JoinExpr.using_clause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& JoinExpr::using_clause() const { // @@protoc_insertion_point(field_list:pg_query.JoinExpr.using_clause) return _impl_.using_clause_; } // .pg_query.Alias join_using_alias = 6 [json_name = "join_using_alias"]; inline bool JoinExpr::_internal_has_join_using_alias() const { return this != internal_default_instance() && _impl_.join_using_alias_ != nullptr; } inline bool JoinExpr::has_join_using_alias() const { return _internal_has_join_using_alias(); } inline void JoinExpr::clear_join_using_alias() { if (GetArenaForAllocation() == nullptr && _impl_.join_using_alias_ != nullptr) { delete _impl_.join_using_alias_; } _impl_.join_using_alias_ = nullptr; } inline const ::pg_query::Alias& JoinExpr::_internal_join_using_alias() const { 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 { // @@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* join_using_alias) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.join_using_alias_); } _impl_.join_using_alias_ = join_using_alias; if (join_using_alias) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.join_using_alias) } inline ::pg_query::Alias* JoinExpr::release_join_using_alias() { ::pg_query::Alias* temp = _impl_.join_using_alias_; _impl_.join_using_alias_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Alias* JoinExpr::unsafe_arena_release_join_using_alias() { // @@protoc_insertion_point(field_release:pg_query.JoinExpr.join_using_alias) ::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() { if (_impl_.join_using_alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArenaForAllocation()); _impl_.join_using_alias_ = p; } return _impl_.join_using_alias_; } inline ::pg_query::Alias* JoinExpr::mutable_join_using_alias() { ::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* join_using_alias) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.join_using_alias_; } if (join_using_alias) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(join_using_alias); if (message_arena != submessage_arena) { join_using_alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, join_using_alias, submessage_arena); } } else { } _impl_.join_using_alias_ = join_using_alias; // @@protoc_insertion_point(field_set_allocated:pg_query.JoinExpr.join_using_alias) } // .pg_query.Node quals = 7 [json_name = "quals"]; inline bool JoinExpr::_internal_has_quals() const { return this != internal_default_instance() && _impl_.quals_ != nullptr; } inline bool JoinExpr::has_quals() const { return _internal_has_quals(); } inline void JoinExpr::clear_quals() { if (GetArenaForAllocation() == nullptr && _impl_.quals_ != nullptr) { delete _impl_.quals_; } _impl_.quals_ = nullptr; } inline const ::pg_query::Node& JoinExpr::_internal_quals() const { 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 { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.quals) return _internal_quals(); } inline void JoinExpr::unsafe_arena_set_allocated_quals( ::pg_query::Node* quals) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.quals_); } _impl_.quals_ = quals; if (quals) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.quals) } inline ::pg_query::Node* JoinExpr::release_quals() { ::pg_query::Node* temp = _impl_.quals_; _impl_.quals_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* JoinExpr::unsafe_arena_release_quals() { // @@protoc_insertion_point(field_release:pg_query.JoinExpr.quals) ::pg_query::Node* temp = _impl_.quals_; _impl_.quals_ = nullptr; return temp; } inline ::pg_query::Node* JoinExpr::_internal_mutable_quals() { if (_impl_.quals_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.quals_ = p; } return _impl_.quals_; } inline ::pg_query::Node* JoinExpr::mutable_quals() { ::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* quals) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.quals_; } if (quals) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(quals); if (message_arena != submessage_arena) { quals = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, quals, submessage_arena); } } else { } _impl_.quals_ = quals; // @@protoc_insertion_point(field_set_allocated:pg_query.JoinExpr.quals) } // .pg_query.Alias alias = 8 [json_name = "alias"]; inline bool JoinExpr::_internal_has_alias() const { return this != internal_default_instance() && _impl_.alias_ != nullptr; } inline bool JoinExpr::has_alias() const { return _internal_has_alias(); } inline void JoinExpr::clear_alias() { if (GetArenaForAllocation() == nullptr && _impl_.alias_ != nullptr) { delete _impl_.alias_; } _impl_.alias_ = nullptr; } inline const ::pg_query::Alias& JoinExpr::_internal_alias() const { 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 { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.alias) return _internal_alias(); } inline void JoinExpr::unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.alias_); } _impl_.alias_ = alias; if (alias) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.alias) } inline ::pg_query::Alias* JoinExpr::release_alias() { ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Alias* JoinExpr::unsafe_arena_release_alias() { // @@protoc_insertion_point(field_release:pg_query.JoinExpr.alias) ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; return temp; } inline ::pg_query::Alias* JoinExpr::_internal_mutable_alias() { if (_impl_.alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArenaForAllocation()); _impl_.alias_ = p; } return _impl_.alias_; } inline ::pg_query::Alias* JoinExpr::mutable_alias() { ::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* alias) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.alias_; } if (alias) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(alias); if (message_arena != submessage_arena) { alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alias, submessage_arena); } } else { } _impl_.alias_ = alias; // @@protoc_insertion_point(field_set_allocated:pg_query.JoinExpr.alias) } // int32 rtindex = 9 [json_name = "rtindex"]; inline void JoinExpr::clear_rtindex() { _impl_.rtindex_ = 0; } inline int32_t JoinExpr::_internal_rtindex() const { return _impl_.rtindex_; } inline int32_t JoinExpr::rtindex() const { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.rtindex) return _internal_rtindex(); } inline void JoinExpr::_internal_set_rtindex(int32_t value) { _impl_.rtindex_ = value; } inline void JoinExpr::set_rtindex(int32_t value) { _internal_set_rtindex(value); // @@protoc_insertion_point(field_set:pg_query.JoinExpr.rtindex) } // ------------------------------------------------------------------- // FromExpr // repeated .pg_query.Node fromlist = 1 [json_name = "fromlist"]; inline int FromExpr::_internal_fromlist_size() const { return _impl_.fromlist_.size(); } inline int FromExpr::fromlist_size() const { return _internal_fromlist_size(); } inline void FromExpr::clear_fromlist() { _impl_.fromlist_.Clear(); } inline ::pg_query::Node* FromExpr::mutable_fromlist(int index) { // @@protoc_insertion_point(field_mutable:pg_query.FromExpr.fromlist) return _impl_.fromlist_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* FromExpr::mutable_fromlist() { // @@protoc_insertion_point(field_mutable_list:pg_query.FromExpr.fromlist) return &_impl_.fromlist_; } inline const ::pg_query::Node& FromExpr::_internal_fromlist(int index) const { return _impl_.fromlist_.Get(index); } inline const ::pg_query::Node& FromExpr::fromlist(int index) const { // @@protoc_insertion_point(field_get:pg_query.FromExpr.fromlist) return _internal_fromlist(index); } inline ::pg_query::Node* FromExpr::_internal_add_fromlist() { return _impl_.fromlist_.Add(); } inline ::pg_query::Node* FromExpr::add_fromlist() { ::pg_query::Node* _add = _internal_add_fromlist(); // @@protoc_insertion_point(field_add:pg_query.FromExpr.fromlist) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& FromExpr::fromlist() const { // @@protoc_insertion_point(field_list:pg_query.FromExpr.fromlist) return _impl_.fromlist_; } // .pg_query.Node quals = 2 [json_name = "quals"]; inline bool FromExpr::_internal_has_quals() const { return this != internal_default_instance() && _impl_.quals_ != nullptr; } inline bool FromExpr::has_quals() const { return _internal_has_quals(); } inline void FromExpr::clear_quals() { if (GetArenaForAllocation() == nullptr && _impl_.quals_ != nullptr) { delete _impl_.quals_; } _impl_.quals_ = nullptr; } inline const ::pg_query::Node& FromExpr::_internal_quals() const { 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 { // @@protoc_insertion_point(field_get:pg_query.FromExpr.quals) return _internal_quals(); } inline void FromExpr::unsafe_arena_set_allocated_quals( ::pg_query::Node* quals) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.quals_); } _impl_.quals_ = quals; if (quals) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FromExpr.quals) } inline ::pg_query::Node* FromExpr::release_quals() { ::pg_query::Node* temp = _impl_.quals_; _impl_.quals_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* FromExpr::unsafe_arena_release_quals() { // @@protoc_insertion_point(field_release:pg_query.FromExpr.quals) ::pg_query::Node* temp = _impl_.quals_; _impl_.quals_ = nullptr; return temp; } inline ::pg_query::Node* FromExpr::_internal_mutable_quals() { if (_impl_.quals_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.quals_ = p; } return _impl_.quals_; } inline ::pg_query::Node* FromExpr::mutable_quals() { ::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* quals) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.quals_; } if (quals) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(quals); if (message_arena != submessage_arena) { quals = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, quals, submessage_arena); } } else { } _impl_.quals_ = quals; // @@protoc_insertion_point(field_set_allocated:pg_query.FromExpr.quals) } // ------------------------------------------------------------------- // OnConflictExpr // .pg_query.OnConflictAction action = 1 [json_name = "action"]; inline void OnConflictExpr::clear_action() { _impl_.action_ = 0; } inline ::pg_query::OnConflictAction OnConflictExpr::_internal_action() const { return static_cast< ::pg_query::OnConflictAction >(_impl_.action_); } inline ::pg_query::OnConflictAction OnConflictExpr::action() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.action) return _internal_action(); } inline void OnConflictExpr::_internal_set_action(::pg_query::OnConflictAction value) { _impl_.action_ = value; } inline void OnConflictExpr::set_action(::pg_query::OnConflictAction value) { _internal_set_action(value); // @@protoc_insertion_point(field_set:pg_query.OnConflictExpr.action) } // repeated .pg_query.Node arbiter_elems = 2 [json_name = "arbiterElems"]; inline int OnConflictExpr::_internal_arbiter_elems_size() const { return _impl_.arbiter_elems_.size(); } inline int OnConflictExpr::arbiter_elems_size() const { return _internal_arbiter_elems_size(); } inline void OnConflictExpr::clear_arbiter_elems() { _impl_.arbiter_elems_.Clear(); } inline ::pg_query::Node* OnConflictExpr::mutable_arbiter_elems(int index) { // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.arbiter_elems) return _impl_.arbiter_elems_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* OnConflictExpr::mutable_arbiter_elems() { // @@protoc_insertion_point(field_mutable_list:pg_query.OnConflictExpr.arbiter_elems) return &_impl_.arbiter_elems_; } inline const ::pg_query::Node& OnConflictExpr::_internal_arbiter_elems(int index) const { return _impl_.arbiter_elems_.Get(index); } inline const ::pg_query::Node& OnConflictExpr::arbiter_elems(int index) const { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.arbiter_elems) return _internal_arbiter_elems(index); } inline ::pg_query::Node* OnConflictExpr::_internal_add_arbiter_elems() { return _impl_.arbiter_elems_.Add(); } inline ::pg_query::Node* OnConflictExpr::add_arbiter_elems() { ::pg_query::Node* _add = _internal_add_arbiter_elems(); // @@protoc_insertion_point(field_add:pg_query.OnConflictExpr.arbiter_elems) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& OnConflictExpr::arbiter_elems() const { // @@protoc_insertion_point(field_list:pg_query.OnConflictExpr.arbiter_elems) return _impl_.arbiter_elems_; } // .pg_query.Node arbiter_where = 3 [json_name = "arbiterWhere"]; inline bool OnConflictExpr::_internal_has_arbiter_where() const { return this != internal_default_instance() && _impl_.arbiter_where_ != nullptr; } inline bool OnConflictExpr::has_arbiter_where() const { return _internal_has_arbiter_where(); } inline void OnConflictExpr::clear_arbiter_where() { if (GetArenaForAllocation() == nullptr && _impl_.arbiter_where_ != nullptr) { delete _impl_.arbiter_where_; } _impl_.arbiter_where_ = nullptr; } inline const ::pg_query::Node& OnConflictExpr::_internal_arbiter_where() const { 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 { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.arbiter_where) return _internal_arbiter_where(); } inline void OnConflictExpr::unsafe_arena_set_allocated_arbiter_where( ::pg_query::Node* arbiter_where) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arbiter_where_); } _impl_.arbiter_where_ = arbiter_where; if (arbiter_where) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OnConflictExpr.arbiter_where) } inline ::pg_query::Node* OnConflictExpr::release_arbiter_where() { ::pg_query::Node* temp = _impl_.arbiter_where_; _impl_.arbiter_where_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* OnConflictExpr::unsafe_arena_release_arbiter_where() { // @@protoc_insertion_point(field_release:pg_query.OnConflictExpr.arbiter_where) ::pg_query::Node* temp = _impl_.arbiter_where_; _impl_.arbiter_where_ = nullptr; return temp; } inline ::pg_query::Node* OnConflictExpr::_internal_mutable_arbiter_where() { if (_impl_.arbiter_where_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.arbiter_where_ = p; } return _impl_.arbiter_where_; } inline ::pg_query::Node* OnConflictExpr::mutable_arbiter_where() { ::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* arbiter_where) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arbiter_where_; } if (arbiter_where) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arbiter_where); if (message_arena != submessage_arena) { arbiter_where = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arbiter_where, submessage_arena); } } else { } _impl_.arbiter_where_ = arbiter_where; // @@protoc_insertion_point(field_set_allocated:pg_query.OnConflictExpr.arbiter_where) } // uint32 constraint = 4 [json_name = "constraint"]; inline void OnConflictExpr::clear_constraint() { _impl_.constraint_ = 0u; } inline uint32_t OnConflictExpr::_internal_constraint() const { return _impl_.constraint_; } inline uint32_t OnConflictExpr::constraint() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.constraint) return _internal_constraint(); } inline void OnConflictExpr::_internal_set_constraint(uint32_t value) { _impl_.constraint_ = value; } inline void OnConflictExpr::set_constraint(uint32_t value) { _internal_set_constraint(value); // @@protoc_insertion_point(field_set:pg_query.OnConflictExpr.constraint) } // repeated .pg_query.Node on_conflict_set = 5 [json_name = "onConflictSet"]; inline int OnConflictExpr::_internal_on_conflict_set_size() const { return _impl_.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() { _impl_.on_conflict_set_.Clear(); } inline ::pg_query::Node* OnConflictExpr::mutable_on_conflict_set(int index) { // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.on_conflict_set) return _impl_.on_conflict_set_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* OnConflictExpr::mutable_on_conflict_set() { // @@protoc_insertion_point(field_mutable_list:pg_query.OnConflictExpr.on_conflict_set) return &_impl_.on_conflict_set_; } inline const ::pg_query::Node& OnConflictExpr::_internal_on_conflict_set(int index) const { return _impl_.on_conflict_set_.Get(index); } inline const ::pg_query::Node& OnConflictExpr::on_conflict_set(int index) const { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.on_conflict_set) return _internal_on_conflict_set(index); } inline ::pg_query::Node* OnConflictExpr::_internal_add_on_conflict_set() { return _impl_.on_conflict_set_.Add(); } inline ::pg_query::Node* OnConflictExpr::add_on_conflict_set() { ::pg_query::Node* _add = _internal_add_on_conflict_set(); // @@protoc_insertion_point(field_add:pg_query.OnConflictExpr.on_conflict_set) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& OnConflictExpr::on_conflict_set() const { // @@protoc_insertion_point(field_list:pg_query.OnConflictExpr.on_conflict_set) return _impl_.on_conflict_set_; } // .pg_query.Node on_conflict_where = 6 [json_name = "onConflictWhere"]; inline bool OnConflictExpr::_internal_has_on_conflict_where() const { return this != internal_default_instance() && _impl_.on_conflict_where_ != nullptr; } inline bool OnConflictExpr::has_on_conflict_where() const { return _internal_has_on_conflict_where(); } inline void OnConflictExpr::clear_on_conflict_where() { if (GetArenaForAllocation() == nullptr && _impl_.on_conflict_where_ != nullptr) { delete _impl_.on_conflict_where_; } _impl_.on_conflict_where_ = nullptr; } inline const ::pg_query::Node& OnConflictExpr::_internal_on_conflict_where() const { 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 { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.on_conflict_where) return _internal_on_conflict_where(); } inline void OnConflictExpr::unsafe_arena_set_allocated_on_conflict_where( ::pg_query::Node* on_conflict_where) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.on_conflict_where_); } _impl_.on_conflict_where_ = on_conflict_where; if (on_conflict_where) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OnConflictExpr.on_conflict_where) } inline ::pg_query::Node* OnConflictExpr::release_on_conflict_where() { ::pg_query::Node* temp = _impl_.on_conflict_where_; _impl_.on_conflict_where_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* OnConflictExpr::unsafe_arena_release_on_conflict_where() { // @@protoc_insertion_point(field_release:pg_query.OnConflictExpr.on_conflict_where) ::pg_query::Node* temp = _impl_.on_conflict_where_; _impl_.on_conflict_where_ = nullptr; return temp; } inline ::pg_query::Node* OnConflictExpr::_internal_mutable_on_conflict_where() { if (_impl_.on_conflict_where_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.on_conflict_where_ = p; } return _impl_.on_conflict_where_; } inline ::pg_query::Node* OnConflictExpr::mutable_on_conflict_where() { ::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* on_conflict_where) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.on_conflict_where_; } if (on_conflict_where) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(on_conflict_where); if (message_arena != submessage_arena) { on_conflict_where = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, on_conflict_where, submessage_arena); } } else { } _impl_.on_conflict_where_ = on_conflict_where; // @@protoc_insertion_point(field_set_allocated:pg_query.OnConflictExpr.on_conflict_where) } // int32 excl_rel_index = 7 [json_name = "exclRelIndex"]; inline void OnConflictExpr::clear_excl_rel_index() { _impl_.excl_rel_index_ = 0; } inline int32_t OnConflictExpr::_internal_excl_rel_index() const { return _impl_.excl_rel_index_; } 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::_internal_set_excl_rel_index(int32_t value) { _impl_.excl_rel_index_ = value; } 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) } // repeated .pg_query.Node excl_rel_tlist = 8 [json_name = "exclRelTlist"]; inline int OnConflictExpr::_internal_excl_rel_tlist_size() const { return _impl_.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() { _impl_.excl_rel_tlist_.Clear(); } inline ::pg_query::Node* OnConflictExpr::mutable_excl_rel_tlist(int index) { // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.excl_rel_tlist) return _impl_.excl_rel_tlist_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* OnConflictExpr::mutable_excl_rel_tlist() { // @@protoc_insertion_point(field_mutable_list:pg_query.OnConflictExpr.excl_rel_tlist) return &_impl_.excl_rel_tlist_; } inline const ::pg_query::Node& OnConflictExpr::_internal_excl_rel_tlist(int index) const { return _impl_.excl_rel_tlist_.Get(index); } inline const ::pg_query::Node& OnConflictExpr::excl_rel_tlist(int index) const { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.excl_rel_tlist) return _internal_excl_rel_tlist(index); } inline ::pg_query::Node* OnConflictExpr::_internal_add_excl_rel_tlist() { return _impl_.excl_rel_tlist_.Add(); } inline ::pg_query::Node* OnConflictExpr::add_excl_rel_tlist() { ::pg_query::Node* _add = _internal_add_excl_rel_tlist(); // @@protoc_insertion_point(field_add:pg_query.OnConflictExpr.excl_rel_tlist) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& OnConflictExpr::excl_rel_tlist() const { // @@protoc_insertion_point(field_list:pg_query.OnConflictExpr.excl_rel_tlist) return _impl_.excl_rel_tlist_; } // ------------------------------------------------------------------- // IntoClause // .pg_query.RangeVar rel = 1 [json_name = "rel"]; inline bool IntoClause::_internal_has_rel() const { return this != internal_default_instance() && _impl_.rel_ != nullptr; } inline bool IntoClause::has_rel() const { return _internal_has_rel(); } inline void IntoClause::clear_rel() { if (GetArenaForAllocation() == nullptr && _impl_.rel_ != nullptr) { delete _impl_.rel_; } _impl_.rel_ = nullptr; } inline const ::pg_query::RangeVar& IntoClause::_internal_rel() const { 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 { // @@protoc_insertion_point(field_get:pg_query.IntoClause.rel) return _internal_rel(); } inline void IntoClause::unsafe_arena_set_allocated_rel( ::pg_query::RangeVar* rel) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.rel_); } _impl_.rel_ = rel; if (rel) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IntoClause.rel) } inline ::pg_query::RangeVar* IntoClause::release_rel() { ::pg_query::RangeVar* temp = _impl_.rel_; _impl_.rel_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* IntoClause::unsafe_arena_release_rel() { // @@protoc_insertion_point(field_release:pg_query.IntoClause.rel) ::pg_query::RangeVar* temp = _impl_.rel_; _impl_.rel_ = nullptr; return temp; } inline ::pg_query::RangeVar* IntoClause::_internal_mutable_rel() { if (_impl_.rel_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.rel_ = p; } return _impl_.rel_; } inline ::pg_query::RangeVar* IntoClause::mutable_rel() { ::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* rel) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.rel_; } if (rel) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(rel); if (message_arena != submessage_arena) { rel = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, rel, submessage_arena); } } else { } _impl_.rel_ = rel; // @@protoc_insertion_point(field_set_allocated:pg_query.IntoClause.rel) } // repeated .pg_query.Node col_names = 2 [json_name = "colNames"]; inline int IntoClause::_internal_col_names_size() const { return _impl_.col_names_.size(); } inline int IntoClause::col_names_size() const { return _internal_col_names_size(); } inline void IntoClause::clear_col_names() { _impl_.col_names_.Clear(); } inline ::pg_query::Node* IntoClause::mutable_col_names(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.col_names) return _impl_.col_names_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IntoClause::mutable_col_names() { // @@protoc_insertion_point(field_mutable_list:pg_query.IntoClause.col_names) return &_impl_.col_names_; } inline const ::pg_query::Node& IntoClause::_internal_col_names(int index) const { return _impl_.col_names_.Get(index); } inline const ::pg_query::Node& IntoClause::col_names(int index) const { // @@protoc_insertion_point(field_get:pg_query.IntoClause.col_names) return _internal_col_names(index); } inline ::pg_query::Node* IntoClause::_internal_add_col_names() { return _impl_.col_names_.Add(); } inline ::pg_query::Node* IntoClause::add_col_names() { ::pg_query::Node* _add = _internal_add_col_names(); // @@protoc_insertion_point(field_add:pg_query.IntoClause.col_names) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IntoClause::col_names() const { // @@protoc_insertion_point(field_list:pg_query.IntoClause.col_names) return _impl_.col_names_; } // string access_method = 3 [json_name = "accessMethod"]; inline void IntoClause::clear_access_method() { _impl_.access_method_.ClearToEmpty(); } inline const std::string& IntoClause::access_method() const { // @@protoc_insertion_point(field_get:pg_query.IntoClause.access_method) return _internal_access_method(); } template inline PROTOBUF_ALWAYS_INLINE void IntoClause::set_access_method(ArgT0&& arg0, ArgT... args) { _impl_.access_method_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.IntoClause.access_method) } inline std::string* IntoClause::mutable_access_method() { 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 { return _impl_.access_method_.Get(); } inline void IntoClause::_internal_set_access_method(const std::string& value) { _impl_.access_method_.Set(value, GetArenaForAllocation()); } inline std::string* IntoClause::_internal_mutable_access_method() { return _impl_.access_method_.Mutable(GetArenaForAllocation()); } inline std::string* IntoClause::release_access_method() { // @@protoc_insertion_point(field_release:pg_query.IntoClause.access_method) return _impl_.access_method_.Release(); } inline void IntoClause::set_allocated_access_method(std::string* access_method) { if (access_method != nullptr) { } else { } _impl_.access_method_.SetAllocated(access_method, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.access_method_.IsDefault()) { _impl_.access_method_.Set("", GetArenaForAllocation()); } #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 _impl_.options_.size(); } inline int IntoClause::options_size() const { return _internal_options_size(); } inline void IntoClause::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* IntoClause::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IntoClause::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.IntoClause.options) return &_impl_.options_; } inline const ::pg_query::Node& IntoClause::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& IntoClause::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.IntoClause.options) return _internal_options(index); } inline ::pg_query::Node* IntoClause::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* IntoClause::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.IntoClause.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IntoClause::options() const { // @@protoc_insertion_point(field_list:pg_query.IntoClause.options) return _impl_.options_; } // .pg_query.OnCommitAction on_commit = 5 [json_name = "onCommit"]; inline void IntoClause::clear_on_commit() { _impl_.on_commit_ = 0; } inline ::pg_query::OnCommitAction IntoClause::_internal_on_commit() const { return static_cast< ::pg_query::OnCommitAction >(_impl_.on_commit_); } inline ::pg_query::OnCommitAction IntoClause::on_commit() const { // @@protoc_insertion_point(field_get:pg_query.IntoClause.on_commit) return _internal_on_commit(); } inline void IntoClause::_internal_set_on_commit(::pg_query::OnCommitAction value) { _impl_.on_commit_ = value; } inline void IntoClause::set_on_commit(::pg_query::OnCommitAction value) { _internal_set_on_commit(value); // @@protoc_insertion_point(field_set:pg_query.IntoClause.on_commit) } // string table_space_name = 6 [json_name = "tableSpaceName"]; inline void IntoClause::clear_table_space_name() { _impl_.table_space_name_.ClearToEmpty(); } inline const std::string& IntoClause::table_space_name() const { // @@protoc_insertion_point(field_get:pg_query.IntoClause.table_space_name) return _internal_table_space_name(); } template inline PROTOBUF_ALWAYS_INLINE void IntoClause::set_table_space_name(ArgT0&& arg0, ArgT... args) { _impl_.table_space_name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.IntoClause.table_space_name) } inline std::string* IntoClause::mutable_table_space_name() { 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 { return _impl_.table_space_name_.Get(); } inline void IntoClause::_internal_set_table_space_name(const std::string& value) { _impl_.table_space_name_.Set(value, GetArenaForAllocation()); } inline std::string* IntoClause::_internal_mutable_table_space_name() { return _impl_.table_space_name_.Mutable(GetArenaForAllocation()); } inline std::string* IntoClause::release_table_space_name() { // @@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* table_space_name) { if (table_space_name != nullptr) { } else { } _impl_.table_space_name_.SetAllocated(table_space_name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.table_space_name_.IsDefault()) { _impl_.table_space_name_.Set("", GetArenaForAllocation()); } #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::_internal_has_view_query() const { return this != internal_default_instance() && _impl_.view_query_ != nullptr; } inline bool IntoClause::has_view_query() const { return _internal_has_view_query(); } inline void IntoClause::clear_view_query() { if (GetArenaForAllocation() == nullptr && _impl_.view_query_ != nullptr) { delete _impl_.view_query_; } _impl_.view_query_ = nullptr; } inline const ::pg_query::Node& IntoClause::_internal_view_query() const { 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 { // @@protoc_insertion_point(field_get:pg_query.IntoClause.view_query) return _internal_view_query(); } inline void IntoClause::unsafe_arena_set_allocated_view_query( ::pg_query::Node* view_query) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.view_query_); } _impl_.view_query_ = view_query; if (view_query) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IntoClause.view_query) } inline ::pg_query::Node* IntoClause::release_view_query() { ::pg_query::Node* temp = _impl_.view_query_; _impl_.view_query_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* IntoClause::unsafe_arena_release_view_query() { // @@protoc_insertion_point(field_release:pg_query.IntoClause.view_query) ::pg_query::Node* temp = _impl_.view_query_; _impl_.view_query_ = nullptr; return temp; } inline ::pg_query::Node* IntoClause::_internal_mutable_view_query() { if (_impl_.view_query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.view_query_ = p; } return _impl_.view_query_; } inline ::pg_query::Node* IntoClause::mutable_view_query() { ::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* view_query) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.view_query_; } if (view_query) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(view_query); if (message_arena != submessage_arena) { view_query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, view_query, submessage_arena); } } else { } _impl_.view_query_ = view_query; // @@protoc_insertion_point(field_set_allocated:pg_query.IntoClause.view_query) } // bool skip_data = 8 [json_name = "skipData"]; inline void IntoClause::clear_skip_data() { _impl_.skip_data_ = false; } inline bool IntoClause::_internal_skip_data() const { return _impl_.skip_data_; } inline bool IntoClause::skip_data() const { // @@protoc_insertion_point(field_get:pg_query.IntoClause.skip_data) return _internal_skip_data(); } inline void IntoClause::_internal_set_skip_data(bool value) { _impl_.skip_data_ = value; } inline void IntoClause::set_skip_data(bool value) { _internal_set_skip_data(value); // @@protoc_insertion_point(field_set:pg_query.IntoClause.skip_data) } // ------------------------------------------------------------------- // MergeAction // bool matched = 1 [json_name = "matched"]; inline void MergeAction::clear_matched() { _impl_.matched_ = false; } inline bool MergeAction::_internal_matched() const { return _impl_.matched_; } inline bool MergeAction::matched() const { // @@protoc_insertion_point(field_get:pg_query.MergeAction.matched) return _internal_matched(); } inline void MergeAction::_internal_set_matched(bool value) { _impl_.matched_ = value; } inline void MergeAction::set_matched(bool value) { _internal_set_matched(value); // @@protoc_insertion_point(field_set:pg_query.MergeAction.matched) } // .pg_query.CmdType command_type = 2 [json_name = "commandType"]; inline void MergeAction::clear_command_type() { _impl_.command_type_ = 0; } inline ::pg_query::CmdType MergeAction::_internal_command_type() const { return static_cast< ::pg_query::CmdType >(_impl_.command_type_); } 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::_internal_set_command_type(::pg_query::CmdType value) { _impl_.command_type_ = value; } 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) } // .pg_query.OverridingKind override = 3 [json_name = "override"]; inline void MergeAction::clear_override() { _impl_.override_ = 0; } inline ::pg_query::OverridingKind MergeAction::_internal_override() const { return static_cast< ::pg_query::OverridingKind >(_impl_.override_); } inline ::pg_query::OverridingKind MergeAction::override() const { // @@protoc_insertion_point(field_get:pg_query.MergeAction.override) return _internal_override(); } inline void MergeAction::_internal_set_override(::pg_query::OverridingKind value) { _impl_.override_ = value; } inline void MergeAction::set_override(::pg_query::OverridingKind value) { _internal_set_override(value); // @@protoc_insertion_point(field_set:pg_query.MergeAction.override) } // .pg_query.Node qual = 4 [json_name = "qual"]; inline bool MergeAction::_internal_has_qual() const { return this != internal_default_instance() && _impl_.qual_ != nullptr; } inline bool MergeAction::has_qual() const { return _internal_has_qual(); } inline void MergeAction::clear_qual() { if (GetArenaForAllocation() == nullptr && _impl_.qual_ != nullptr) { delete _impl_.qual_; } _impl_.qual_ = nullptr; } inline const ::pg_query::Node& MergeAction::_internal_qual() const { 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 { // @@protoc_insertion_point(field_get:pg_query.MergeAction.qual) return _internal_qual(); } inline void MergeAction::unsafe_arena_set_allocated_qual( ::pg_query::Node* qual) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.qual_); } _impl_.qual_ = qual; if (qual) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MergeAction.qual) } inline ::pg_query::Node* MergeAction::release_qual() { ::pg_query::Node* temp = _impl_.qual_; _impl_.qual_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* MergeAction::unsafe_arena_release_qual() { // @@protoc_insertion_point(field_release:pg_query.MergeAction.qual) ::pg_query::Node* temp = _impl_.qual_; _impl_.qual_ = nullptr; return temp; } inline ::pg_query::Node* MergeAction::_internal_mutable_qual() { if (_impl_.qual_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.qual_ = p; } return _impl_.qual_; } inline ::pg_query::Node* MergeAction::mutable_qual() { ::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* qual) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.qual_; } if (qual) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(qual); if (message_arena != submessage_arena) { qual = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, qual, submessage_arena); } } else { } _impl_.qual_ = qual; // @@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 _impl_.target_list_.size(); } inline int MergeAction::target_list_size() const { return _internal_target_list_size(); } inline void MergeAction::clear_target_list() { _impl_.target_list_.Clear(); } inline ::pg_query::Node* MergeAction::mutable_target_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.MergeAction.target_list) return _impl_.target_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* MergeAction::mutable_target_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.MergeAction.target_list) return &_impl_.target_list_; } inline const ::pg_query::Node& MergeAction::_internal_target_list(int index) const { return _impl_.target_list_.Get(index); } inline const ::pg_query::Node& MergeAction::target_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.MergeAction.target_list) return _internal_target_list(index); } inline ::pg_query::Node* MergeAction::_internal_add_target_list() { return _impl_.target_list_.Add(); } inline ::pg_query::Node* MergeAction::add_target_list() { ::pg_query::Node* _add = _internal_add_target_list(); // @@protoc_insertion_point(field_add:pg_query.MergeAction.target_list) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& MergeAction::target_list() const { // @@protoc_insertion_point(field_list:pg_query.MergeAction.target_list) return _impl_.target_list_; } // repeated .pg_query.Node update_colnos = 6 [json_name = "updateColnos"]; inline int MergeAction::_internal_update_colnos_size() const { return _impl_.update_colnos_.size(); } inline int MergeAction::update_colnos_size() const { return _internal_update_colnos_size(); } inline void MergeAction::clear_update_colnos() { _impl_.update_colnos_.Clear(); } inline ::pg_query::Node* MergeAction::mutable_update_colnos(int index) { // @@protoc_insertion_point(field_mutable:pg_query.MergeAction.update_colnos) return _impl_.update_colnos_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* MergeAction::mutable_update_colnos() { // @@protoc_insertion_point(field_mutable_list:pg_query.MergeAction.update_colnos) return &_impl_.update_colnos_; } inline const ::pg_query::Node& MergeAction::_internal_update_colnos(int index) const { return _impl_.update_colnos_.Get(index); } inline const ::pg_query::Node& MergeAction::update_colnos(int index) const { // @@protoc_insertion_point(field_get:pg_query.MergeAction.update_colnos) return _internal_update_colnos(index); } inline ::pg_query::Node* MergeAction::_internal_add_update_colnos() { return _impl_.update_colnos_.Add(); } inline ::pg_query::Node* MergeAction::add_update_colnos() { ::pg_query::Node* _add = _internal_add_update_colnos(); // @@protoc_insertion_point(field_add:pg_query.MergeAction.update_colnos) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& MergeAction::update_colnos() const { // @@protoc_insertion_point(field_list:pg_query.MergeAction.update_colnos) return _impl_.update_colnos_; } // ------------------------------------------------------------------- // RawStmt // .pg_query.Node stmt = 1 [json_name = "stmt"]; inline bool RawStmt::_internal_has_stmt() const { return this != internal_default_instance() && _impl_.stmt_ != nullptr; } inline bool RawStmt::has_stmt() const { return _internal_has_stmt(); } inline void RawStmt::clear_stmt() { if (GetArenaForAllocation() == nullptr && _impl_.stmt_ != nullptr) { delete _impl_.stmt_; } _impl_.stmt_ = nullptr; } inline const ::pg_query::Node& RawStmt::_internal_stmt() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RawStmt.stmt) return _internal_stmt(); } inline void RawStmt::unsafe_arena_set_allocated_stmt( ::pg_query::Node* stmt) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.stmt_); } _impl_.stmt_ = stmt; if (stmt) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RawStmt.stmt) } inline ::pg_query::Node* RawStmt::release_stmt() { ::pg_query::Node* temp = _impl_.stmt_; _impl_.stmt_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* RawStmt::unsafe_arena_release_stmt() { // @@protoc_insertion_point(field_release:pg_query.RawStmt.stmt) ::pg_query::Node* temp = _impl_.stmt_; _impl_.stmt_ = nullptr; return temp; } inline ::pg_query::Node* RawStmt::_internal_mutable_stmt() { if (_impl_.stmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.stmt_ = p; } return _impl_.stmt_; } inline ::pg_query::Node* RawStmt::mutable_stmt() { ::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* stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.stmt_; } if (stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(stmt); if (message_arena != submessage_arena) { stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, stmt, submessage_arena); } } else { } _impl_.stmt_ = stmt; // @@protoc_insertion_point(field_set_allocated:pg_query.RawStmt.stmt) } // int32 stmt_location = 2 [json_name = "stmt_location"]; inline void RawStmt::clear_stmt_location() { _impl_.stmt_location_ = 0; } inline int32_t RawStmt::_internal_stmt_location() const { return _impl_.stmt_location_; } inline int32_t RawStmt::stmt_location() const { // @@protoc_insertion_point(field_get:pg_query.RawStmt.stmt_location) return _internal_stmt_location(); } inline void RawStmt::_internal_set_stmt_location(int32_t value) { _impl_.stmt_location_ = value; } inline void RawStmt::set_stmt_location(int32_t value) { _internal_set_stmt_location(value); // @@protoc_insertion_point(field_set:pg_query.RawStmt.stmt_location) } // int32 stmt_len = 3 [json_name = "stmt_len"]; inline void RawStmt::clear_stmt_len() { _impl_.stmt_len_ = 0; } inline int32_t RawStmt::_internal_stmt_len() const { return _impl_.stmt_len_; } inline int32_t RawStmt::stmt_len() const { // @@protoc_insertion_point(field_get:pg_query.RawStmt.stmt_len) return _internal_stmt_len(); } inline void RawStmt::_internal_set_stmt_len(int32_t value) { _impl_.stmt_len_ = value; } inline void RawStmt::set_stmt_len(int32_t value) { _internal_set_stmt_len(value); // @@protoc_insertion_point(field_set:pg_query.RawStmt.stmt_len) } // ------------------------------------------------------------------- // Query // .pg_query.CmdType command_type = 1 [json_name = "commandType"]; inline void Query::clear_command_type() { _impl_.command_type_ = 0; } inline ::pg_query::CmdType Query::_internal_command_type() const { return static_cast< ::pg_query::CmdType >(_impl_.command_type_); } inline ::pg_query::CmdType Query::command_type() const { // @@protoc_insertion_point(field_get:pg_query.Query.command_type) return _internal_command_type(); } inline void Query::_internal_set_command_type(::pg_query::CmdType value) { _impl_.command_type_ = value; } inline void Query::set_command_type(::pg_query::CmdType value) { _internal_set_command_type(value); // @@protoc_insertion_point(field_set:pg_query.Query.command_type) } // .pg_query.QuerySource query_source = 2 [json_name = "querySource"]; inline void Query::clear_query_source() { _impl_.query_source_ = 0; } inline ::pg_query::QuerySource Query::_internal_query_source() const { return static_cast< ::pg_query::QuerySource >(_impl_.query_source_); } inline ::pg_query::QuerySource Query::query_source() const { // @@protoc_insertion_point(field_get:pg_query.Query.query_source) return _internal_query_source(); } inline void Query::_internal_set_query_source(::pg_query::QuerySource value) { _impl_.query_source_ = value; } inline void Query::set_query_source(::pg_query::QuerySource value) { _internal_set_query_source(value); // @@protoc_insertion_point(field_set:pg_query.Query.query_source) } // bool can_set_tag = 3 [json_name = "canSetTag"]; inline void Query::clear_can_set_tag() { _impl_.can_set_tag_ = false; } inline bool Query::_internal_can_set_tag() const { return _impl_.can_set_tag_; } inline bool Query::can_set_tag() const { // @@protoc_insertion_point(field_get:pg_query.Query.can_set_tag) return _internal_can_set_tag(); } inline void Query::_internal_set_can_set_tag(bool value) { _impl_.can_set_tag_ = value; } inline void Query::set_can_set_tag(bool value) { _internal_set_can_set_tag(value); // @@protoc_insertion_point(field_set:pg_query.Query.can_set_tag) } // .pg_query.Node utility_stmt = 4 [json_name = "utilityStmt"]; inline bool Query::_internal_has_utility_stmt() const { return this != internal_default_instance() && _impl_.utility_stmt_ != nullptr; } inline bool Query::has_utility_stmt() const { return _internal_has_utility_stmt(); } inline void Query::clear_utility_stmt() { if (GetArenaForAllocation() == nullptr && _impl_.utility_stmt_ != nullptr) { delete _impl_.utility_stmt_; } _impl_.utility_stmt_ = nullptr; } inline const ::pg_query::Node& Query::_internal_utility_stmt() const { 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 { // @@protoc_insertion_point(field_get:pg_query.Query.utility_stmt) return _internal_utility_stmt(); } inline void Query::unsafe_arena_set_allocated_utility_stmt( ::pg_query::Node* utility_stmt) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.utility_stmt_); } _impl_.utility_stmt_ = utility_stmt; if (utility_stmt) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.utility_stmt) } inline ::pg_query::Node* Query::release_utility_stmt() { ::pg_query::Node* temp = _impl_.utility_stmt_; _impl_.utility_stmt_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* Query::unsafe_arena_release_utility_stmt() { // @@protoc_insertion_point(field_release:pg_query.Query.utility_stmt) ::pg_query::Node* temp = _impl_.utility_stmt_; _impl_.utility_stmt_ = nullptr; return temp; } inline ::pg_query::Node* Query::_internal_mutable_utility_stmt() { if (_impl_.utility_stmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.utility_stmt_ = p; } return _impl_.utility_stmt_; } inline ::pg_query::Node* Query::mutable_utility_stmt() { ::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* utility_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.utility_stmt_; } if (utility_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(utility_stmt); if (message_arena != submessage_arena) { utility_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, utility_stmt, submessage_arena); } } else { } _impl_.utility_stmt_ = utility_stmt; // @@protoc_insertion_point(field_set_allocated:pg_query.Query.utility_stmt) } // int32 result_relation = 5 [json_name = "resultRelation"]; inline void Query::clear_result_relation() { _impl_.result_relation_ = 0; } inline int32_t Query::_internal_result_relation() const { return _impl_.result_relation_; } inline int32_t Query::result_relation() const { // @@protoc_insertion_point(field_get:pg_query.Query.result_relation) return _internal_result_relation(); } inline void Query::_internal_set_result_relation(int32_t value) { _impl_.result_relation_ = value; } inline void Query::set_result_relation(int32_t value) { _internal_set_result_relation(value); // @@protoc_insertion_point(field_set:pg_query.Query.result_relation) } // bool has_aggs = 6 [json_name = "hasAggs"]; inline void Query::clear_has_aggs() { _impl_.has_aggs_ = false; } inline bool Query::_internal_has_aggs() const { return _impl_.has_aggs_; } inline bool Query::has_aggs() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_aggs) return _internal_has_aggs(); } inline void Query::_internal_set_has_aggs(bool value) { _impl_.has_aggs_ = value; } inline void Query::set_has_aggs(bool value) { _internal_set_has_aggs(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_aggs) } // bool has_window_funcs = 7 [json_name = "hasWindowFuncs"]; inline void Query::clear_has_window_funcs() { _impl_.has_window_funcs_ = false; } inline bool Query::_internal_has_window_funcs() const { return _impl_.has_window_funcs_; } inline bool Query::has_window_funcs() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_window_funcs) return _internal_has_window_funcs(); } inline void Query::_internal_set_has_window_funcs(bool value) { _impl_.has_window_funcs_ = value; } inline void Query::set_has_window_funcs(bool value) { _internal_set_has_window_funcs(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_window_funcs) } // bool has_target_srfs = 8 [json_name = "hasTargetSRFs"]; inline void Query::clear_has_target_srfs() { _impl_.has_target_srfs_ = false; } inline bool Query::_internal_has_target_srfs() const { return _impl_.has_target_srfs_; } inline bool Query::has_target_srfs() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_target_srfs) return _internal_has_target_srfs(); } inline void Query::_internal_set_has_target_srfs(bool value) { _impl_.has_target_srfs_ = value; } inline void Query::set_has_target_srfs(bool value) { _internal_set_has_target_srfs(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_target_srfs) } // bool has_sub_links = 9 [json_name = "hasSubLinks"]; inline void Query::clear_has_sub_links() { _impl_.has_sub_links_ = false; } inline bool Query::_internal_has_sub_links() const { return _impl_.has_sub_links_; } inline bool Query::has_sub_links() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_sub_links) return _internal_has_sub_links(); } inline void Query::_internal_set_has_sub_links(bool value) { _impl_.has_sub_links_ = value; } inline void Query::set_has_sub_links(bool value) { _internal_set_has_sub_links(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_sub_links) } // bool has_distinct_on = 10 [json_name = "hasDistinctOn"]; inline void Query::clear_has_distinct_on() { _impl_.has_distinct_on_ = false; } inline bool Query::_internal_has_distinct_on() const { return _impl_.has_distinct_on_; } inline bool Query::has_distinct_on() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_distinct_on) return _internal_has_distinct_on(); } inline void Query::_internal_set_has_distinct_on(bool value) { _impl_.has_distinct_on_ = value; } inline void Query::set_has_distinct_on(bool value) { _internal_set_has_distinct_on(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_distinct_on) } // bool has_recursive = 11 [json_name = "hasRecursive"]; inline void Query::clear_has_recursive() { _impl_.has_recursive_ = false; } inline bool Query::_internal_has_recursive() const { return _impl_.has_recursive_; } inline bool Query::has_recursive() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_recursive) return _internal_has_recursive(); } inline void Query::_internal_set_has_recursive(bool value) { _impl_.has_recursive_ = value; } inline void Query::set_has_recursive(bool value) { _internal_set_has_recursive(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_recursive) } // bool has_modifying_cte = 12 [json_name = "hasModifyingCTE"]; inline void Query::clear_has_modifying_cte() { _impl_.has_modifying_cte_ = false; } inline bool Query::_internal_has_modifying_cte() const { return _impl_.has_modifying_cte_; } inline bool Query::has_modifying_cte() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_modifying_cte) return _internal_has_modifying_cte(); } inline void Query::_internal_set_has_modifying_cte(bool value) { _impl_.has_modifying_cte_ = value; } inline void Query::set_has_modifying_cte(bool value) { _internal_set_has_modifying_cte(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_modifying_cte) } // bool has_for_update = 13 [json_name = "hasForUpdate"]; inline void Query::clear_has_for_update() { _impl_.has_for_update_ = false; } inline bool Query::_internal_has_for_update() const { return _impl_.has_for_update_; } inline bool Query::has_for_update() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_for_update) return _internal_has_for_update(); } inline void Query::_internal_set_has_for_update(bool value) { _impl_.has_for_update_ = value; } inline void Query::set_has_for_update(bool value) { _internal_set_has_for_update(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_for_update) } // bool has_row_security = 14 [json_name = "hasRowSecurity"]; inline void Query::clear_has_row_security() { _impl_.has_row_security_ = false; } inline bool Query::_internal_has_row_security() const { return _impl_.has_row_security_; } inline bool Query::has_row_security() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_row_security) return _internal_has_row_security(); } inline void Query::_internal_set_has_row_security(bool value) { _impl_.has_row_security_ = value; } inline void Query::set_has_row_security(bool value) { _internal_set_has_row_security(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_row_security) } // bool is_return = 15 [json_name = "isReturn"]; inline void Query::clear_is_return() { _impl_.is_return_ = false; } inline bool Query::_internal_is_return() const { return _impl_.is_return_; } inline bool Query::is_return() const { // @@protoc_insertion_point(field_get:pg_query.Query.is_return) return _internal_is_return(); } inline void Query::_internal_set_is_return(bool value) { _impl_.is_return_ = value; } inline void Query::set_is_return(bool value) { _internal_set_is_return(value); // @@protoc_insertion_point(field_set:pg_query.Query.is_return) } // repeated .pg_query.Node cte_list = 16 [json_name = "cteList"]; inline int Query::_internal_cte_list_size() const { return _impl_.cte_list_.size(); } inline int Query::cte_list_size() const { return _internal_cte_list_size(); } inline void Query::clear_cte_list() { _impl_.cte_list_.Clear(); } inline ::pg_query::Node* Query::mutable_cte_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.cte_list) return _impl_.cte_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_cte_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.cte_list) return &_impl_.cte_list_; } inline const ::pg_query::Node& Query::_internal_cte_list(int index) const { return _impl_.cte_list_.Get(index); } inline const ::pg_query::Node& Query::cte_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.cte_list) return _internal_cte_list(index); } inline ::pg_query::Node* Query::_internal_add_cte_list() { return _impl_.cte_list_.Add(); } inline ::pg_query::Node* Query::add_cte_list() { ::pg_query::Node* _add = _internal_add_cte_list(); // @@protoc_insertion_point(field_add:pg_query.Query.cte_list) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::cte_list() const { // @@protoc_insertion_point(field_list:pg_query.Query.cte_list) return _impl_.cte_list_; } // repeated .pg_query.Node rtable = 17 [json_name = "rtable"]; inline int Query::_internal_rtable_size() const { return _impl_.rtable_.size(); } inline int Query::rtable_size() const { return _internal_rtable_size(); } inline void Query::clear_rtable() { _impl_.rtable_.Clear(); } inline ::pg_query::Node* Query::mutable_rtable(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.rtable) return _impl_.rtable_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_rtable() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.rtable) return &_impl_.rtable_; } inline const ::pg_query::Node& Query::_internal_rtable(int index) const { return _impl_.rtable_.Get(index); } inline const ::pg_query::Node& Query::rtable(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.rtable) return _internal_rtable(index); } inline ::pg_query::Node* Query::_internal_add_rtable() { return _impl_.rtable_.Add(); } inline ::pg_query::Node* Query::add_rtable() { ::pg_query::Node* _add = _internal_add_rtable(); // @@protoc_insertion_point(field_add:pg_query.Query.rtable) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::rtable() const { // @@protoc_insertion_point(field_list:pg_query.Query.rtable) return _impl_.rtable_; } // .pg_query.FromExpr jointree = 18 [json_name = "jointree"]; inline bool Query::_internal_has_jointree() const { return this != internal_default_instance() && _impl_.jointree_ != nullptr; } inline bool Query::has_jointree() const { return _internal_has_jointree(); } inline void Query::clear_jointree() { if (GetArenaForAllocation() == nullptr && _impl_.jointree_ != nullptr) { delete _impl_.jointree_; } _impl_.jointree_ = nullptr; } inline const ::pg_query::FromExpr& Query::_internal_jointree() const { 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 { // @@protoc_insertion_point(field_get:pg_query.Query.jointree) return _internal_jointree(); } inline void Query::unsafe_arena_set_allocated_jointree( ::pg_query::FromExpr* jointree) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.jointree_); } _impl_.jointree_ = jointree; if (jointree) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.jointree) } inline ::pg_query::FromExpr* Query::release_jointree() { ::pg_query::FromExpr* temp = _impl_.jointree_; _impl_.jointree_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::FromExpr* Query::unsafe_arena_release_jointree() { // @@protoc_insertion_point(field_release:pg_query.Query.jointree) ::pg_query::FromExpr* temp = _impl_.jointree_; _impl_.jointree_ = nullptr; return temp; } inline ::pg_query::FromExpr* Query::_internal_mutable_jointree() { if (_impl_.jointree_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::FromExpr>(GetArenaForAllocation()); _impl_.jointree_ = p; } return _impl_.jointree_; } inline ::pg_query::FromExpr* Query::mutable_jointree() { ::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* jointree) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.jointree_; } if (jointree) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(jointree); if (message_arena != submessage_arena) { jointree = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, jointree, submessage_arena); } } else { } _impl_.jointree_ = jointree; // @@protoc_insertion_point(field_set_allocated:pg_query.Query.jointree) } // repeated .pg_query.Node merge_action_list = 19 [json_name = "mergeActionList"]; inline int Query::_internal_merge_action_list_size() const { return _impl_.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() { _impl_.merge_action_list_.Clear(); } inline ::pg_query::Node* Query::mutable_merge_action_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.merge_action_list) return _impl_.merge_action_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_merge_action_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.merge_action_list) return &_impl_.merge_action_list_; } inline const ::pg_query::Node& Query::_internal_merge_action_list(int index) const { return _impl_.merge_action_list_.Get(index); } inline const ::pg_query::Node& Query::merge_action_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.merge_action_list) return _internal_merge_action_list(index); } inline ::pg_query::Node* Query::_internal_add_merge_action_list() { return _impl_.merge_action_list_.Add(); } inline ::pg_query::Node* Query::add_merge_action_list() { ::pg_query::Node* _add = _internal_add_merge_action_list(); // @@protoc_insertion_point(field_add:pg_query.Query.merge_action_list) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::merge_action_list() const { // @@protoc_insertion_point(field_list:pg_query.Query.merge_action_list) return _impl_.merge_action_list_; } // bool merge_use_outer_join = 20 [json_name = "mergeUseOuterJoin"]; inline void Query::clear_merge_use_outer_join() { _impl_.merge_use_outer_join_ = false; } inline bool Query::_internal_merge_use_outer_join() const { return _impl_.merge_use_outer_join_; } inline bool Query::merge_use_outer_join() const { // @@protoc_insertion_point(field_get:pg_query.Query.merge_use_outer_join) return _internal_merge_use_outer_join(); } inline void Query::_internal_set_merge_use_outer_join(bool value) { _impl_.merge_use_outer_join_ = value; } inline void Query::set_merge_use_outer_join(bool value) { _internal_set_merge_use_outer_join(value); // @@protoc_insertion_point(field_set:pg_query.Query.merge_use_outer_join) } // repeated .pg_query.Node target_list = 21 [json_name = "targetList"]; inline int Query::_internal_target_list_size() const { return _impl_.target_list_.size(); } inline int Query::target_list_size() const { return _internal_target_list_size(); } inline void Query::clear_target_list() { _impl_.target_list_.Clear(); } inline ::pg_query::Node* Query::mutable_target_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.target_list) return _impl_.target_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_target_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.target_list) return &_impl_.target_list_; } inline const ::pg_query::Node& Query::_internal_target_list(int index) const { return _impl_.target_list_.Get(index); } inline const ::pg_query::Node& Query::target_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.target_list) return _internal_target_list(index); } inline ::pg_query::Node* Query::_internal_add_target_list() { return _impl_.target_list_.Add(); } inline ::pg_query::Node* Query::add_target_list() { ::pg_query::Node* _add = _internal_add_target_list(); // @@protoc_insertion_point(field_add:pg_query.Query.target_list) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::target_list() const { // @@protoc_insertion_point(field_list:pg_query.Query.target_list) return _impl_.target_list_; } // .pg_query.OverridingKind override = 22 [json_name = "override"]; inline void Query::clear_override() { _impl_.override_ = 0; } inline ::pg_query::OverridingKind Query::_internal_override() const { return static_cast< ::pg_query::OverridingKind >(_impl_.override_); } inline ::pg_query::OverridingKind Query::override() const { // @@protoc_insertion_point(field_get:pg_query.Query.override) return _internal_override(); } inline void Query::_internal_set_override(::pg_query::OverridingKind value) { _impl_.override_ = value; } inline void Query::set_override(::pg_query::OverridingKind value) { _internal_set_override(value); // @@protoc_insertion_point(field_set:pg_query.Query.override) } // .pg_query.OnConflictExpr on_conflict = 23 [json_name = "onConflict"]; inline bool Query::_internal_has_on_conflict() const { return this != internal_default_instance() && _impl_.on_conflict_ != nullptr; } inline bool Query::has_on_conflict() const { return _internal_has_on_conflict(); } inline void Query::clear_on_conflict() { if (GetArenaForAllocation() == nullptr && _impl_.on_conflict_ != nullptr) { delete _impl_.on_conflict_; } _impl_.on_conflict_ = nullptr; } inline const ::pg_query::OnConflictExpr& Query::_internal_on_conflict() const { 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 { // @@protoc_insertion_point(field_get:pg_query.Query.on_conflict) return _internal_on_conflict(); } inline void Query::unsafe_arena_set_allocated_on_conflict( ::pg_query::OnConflictExpr* on_conflict) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.on_conflict_); } _impl_.on_conflict_ = on_conflict; if (on_conflict) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.on_conflict) } inline ::pg_query::OnConflictExpr* Query::release_on_conflict() { ::pg_query::OnConflictExpr* temp = _impl_.on_conflict_; _impl_.on_conflict_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::OnConflictExpr* Query::unsafe_arena_release_on_conflict() { // @@protoc_insertion_point(field_release:pg_query.Query.on_conflict) ::pg_query::OnConflictExpr* temp = _impl_.on_conflict_; _impl_.on_conflict_ = nullptr; return temp; } inline ::pg_query::OnConflictExpr* Query::_internal_mutable_on_conflict() { if (_impl_.on_conflict_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::OnConflictExpr>(GetArenaForAllocation()); _impl_.on_conflict_ = p; } return _impl_.on_conflict_; } inline ::pg_query::OnConflictExpr* Query::mutable_on_conflict() { ::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* on_conflict) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.on_conflict_; } if (on_conflict) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(on_conflict); if (message_arena != submessage_arena) { on_conflict = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, on_conflict, submessage_arena); } } else { } _impl_.on_conflict_ = on_conflict; // @@protoc_insertion_point(field_set_allocated:pg_query.Query.on_conflict) } // repeated .pg_query.Node returning_list = 24 [json_name = "returningList"]; inline int Query::_internal_returning_list_size() const { return _impl_.returning_list_.size(); } inline int Query::returning_list_size() const { return _internal_returning_list_size(); } inline void Query::clear_returning_list() { _impl_.returning_list_.Clear(); } inline ::pg_query::Node* Query::mutable_returning_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.returning_list) return _impl_.returning_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_returning_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.returning_list) return &_impl_.returning_list_; } inline const ::pg_query::Node& Query::_internal_returning_list(int index) const { return _impl_.returning_list_.Get(index); } inline const ::pg_query::Node& Query::returning_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.returning_list) return _internal_returning_list(index); } inline ::pg_query::Node* Query::_internal_add_returning_list() { return _impl_.returning_list_.Add(); } inline ::pg_query::Node* Query::add_returning_list() { ::pg_query::Node* _add = _internal_add_returning_list(); // @@protoc_insertion_point(field_add:pg_query.Query.returning_list) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::returning_list() const { // @@protoc_insertion_point(field_list:pg_query.Query.returning_list) return _impl_.returning_list_; } // repeated .pg_query.Node group_clause = 25 [json_name = "groupClause"]; inline int Query::_internal_group_clause_size() const { return _impl_.group_clause_.size(); } inline int Query::group_clause_size() const { return _internal_group_clause_size(); } inline void Query::clear_group_clause() { _impl_.group_clause_.Clear(); } inline ::pg_query::Node* Query::mutable_group_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.group_clause) return _impl_.group_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_group_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.group_clause) return &_impl_.group_clause_; } inline const ::pg_query::Node& Query::_internal_group_clause(int index) const { return _impl_.group_clause_.Get(index); } inline const ::pg_query::Node& Query::group_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.group_clause) return _internal_group_clause(index); } inline ::pg_query::Node* Query::_internal_add_group_clause() { return _impl_.group_clause_.Add(); } inline ::pg_query::Node* Query::add_group_clause() { ::pg_query::Node* _add = _internal_add_group_clause(); // @@protoc_insertion_point(field_add:pg_query.Query.group_clause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::group_clause() const { // @@protoc_insertion_point(field_list:pg_query.Query.group_clause) return _impl_.group_clause_; } // bool group_distinct = 26 [json_name = "groupDistinct"]; inline void Query::clear_group_distinct() { _impl_.group_distinct_ = false; } inline bool Query::_internal_group_distinct() const { return _impl_.group_distinct_; } inline bool Query::group_distinct() const { // @@protoc_insertion_point(field_get:pg_query.Query.group_distinct) return _internal_group_distinct(); } inline void Query::_internal_set_group_distinct(bool value) { _impl_.group_distinct_ = value; } inline void Query::set_group_distinct(bool value) { _internal_set_group_distinct(value); // @@protoc_insertion_point(field_set:pg_query.Query.group_distinct) } // repeated .pg_query.Node grouping_sets = 27 [json_name = "groupingSets"]; inline int Query::_internal_grouping_sets_size() const { return _impl_.grouping_sets_.size(); } inline int Query::grouping_sets_size() const { return _internal_grouping_sets_size(); } inline void Query::clear_grouping_sets() { _impl_.grouping_sets_.Clear(); } inline ::pg_query::Node* Query::mutable_grouping_sets(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.grouping_sets) return _impl_.grouping_sets_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_grouping_sets() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.grouping_sets) return &_impl_.grouping_sets_; } inline const ::pg_query::Node& Query::_internal_grouping_sets(int index) const { return _impl_.grouping_sets_.Get(index); } inline const ::pg_query::Node& Query::grouping_sets(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.grouping_sets) return _internal_grouping_sets(index); } inline ::pg_query::Node* Query::_internal_add_grouping_sets() { return _impl_.grouping_sets_.Add(); } inline ::pg_query::Node* Query::add_grouping_sets() { ::pg_query::Node* _add = _internal_add_grouping_sets(); // @@protoc_insertion_point(field_add:pg_query.Query.grouping_sets) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::grouping_sets() const { // @@protoc_insertion_point(field_list:pg_query.Query.grouping_sets) return _impl_.grouping_sets_; } // .pg_query.Node having_qual = 28 [json_name = "havingQual"]; inline bool Query::_internal_has_having_qual() const { return this != internal_default_instance() && _impl_.having_qual_ != nullptr; } inline bool Query::has_having_qual() const { return _internal_has_having_qual(); } inline void Query::clear_having_qual() { if (GetArenaForAllocation() == nullptr && _impl_.having_qual_ != nullptr) { delete _impl_.having_qual_; } _impl_.having_qual_ = nullptr; } inline const ::pg_query::Node& Query::_internal_having_qual() const { 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 { // @@protoc_insertion_point(field_get:pg_query.Query.having_qual) return _internal_having_qual(); } inline void Query::unsafe_arena_set_allocated_having_qual( ::pg_query::Node* having_qual) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.having_qual_); } _impl_.having_qual_ = having_qual; if (having_qual) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.having_qual) } inline ::pg_query::Node* Query::release_having_qual() { ::pg_query::Node* temp = _impl_.having_qual_; _impl_.having_qual_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* Query::unsafe_arena_release_having_qual() { // @@protoc_insertion_point(field_release:pg_query.Query.having_qual) ::pg_query::Node* temp = _impl_.having_qual_; _impl_.having_qual_ = nullptr; return temp; } inline ::pg_query::Node* Query::_internal_mutable_having_qual() { if (_impl_.having_qual_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.having_qual_ = p; } return _impl_.having_qual_; } inline ::pg_query::Node* Query::mutable_having_qual() { ::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* having_qual) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.having_qual_; } if (having_qual) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(having_qual); if (message_arena != submessage_arena) { having_qual = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, having_qual, submessage_arena); } } else { } _impl_.having_qual_ = having_qual; // @@protoc_insertion_point(field_set_allocated:pg_query.Query.having_qual) } // repeated .pg_query.Node window_clause = 29 [json_name = "windowClause"]; inline int Query::_internal_window_clause_size() const { return _impl_.window_clause_.size(); } inline int Query::window_clause_size() const { return _internal_window_clause_size(); } inline void Query::clear_window_clause() { _impl_.window_clause_.Clear(); } inline ::pg_query::Node* Query::mutable_window_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.window_clause) return _impl_.window_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_window_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.window_clause) return &_impl_.window_clause_; } inline const ::pg_query::Node& Query::_internal_window_clause(int index) const { return _impl_.window_clause_.Get(index); } inline const ::pg_query::Node& Query::window_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.window_clause) return _internal_window_clause(index); } inline ::pg_query::Node* Query::_internal_add_window_clause() { return _impl_.window_clause_.Add(); } inline ::pg_query::Node* Query::add_window_clause() { ::pg_query::Node* _add = _internal_add_window_clause(); // @@protoc_insertion_point(field_add:pg_query.Query.window_clause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::window_clause() const { // @@protoc_insertion_point(field_list:pg_query.Query.window_clause) return _impl_.window_clause_; } // repeated .pg_query.Node distinct_clause = 30 [json_name = "distinctClause"]; inline int Query::_internal_distinct_clause_size() const { return _impl_.distinct_clause_.size(); } inline int Query::distinct_clause_size() const { return _internal_distinct_clause_size(); } inline void Query::clear_distinct_clause() { _impl_.distinct_clause_.Clear(); } inline ::pg_query::Node* Query::mutable_distinct_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.distinct_clause) return _impl_.distinct_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_distinct_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.distinct_clause) return &_impl_.distinct_clause_; } inline const ::pg_query::Node& Query::_internal_distinct_clause(int index) const { return _impl_.distinct_clause_.Get(index); } inline const ::pg_query::Node& Query::distinct_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.distinct_clause) return _internal_distinct_clause(index); } inline ::pg_query::Node* Query::_internal_add_distinct_clause() { return _impl_.distinct_clause_.Add(); } inline ::pg_query::Node* Query::add_distinct_clause() { ::pg_query::Node* _add = _internal_add_distinct_clause(); // @@protoc_insertion_point(field_add:pg_query.Query.distinct_clause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::distinct_clause() const { // @@protoc_insertion_point(field_list:pg_query.Query.distinct_clause) return _impl_.distinct_clause_; } // repeated .pg_query.Node sort_clause = 31 [json_name = "sortClause"]; inline int Query::_internal_sort_clause_size() const { return _impl_.sort_clause_.size(); } inline int Query::sort_clause_size() const { return _internal_sort_clause_size(); } inline void Query::clear_sort_clause() { _impl_.sort_clause_.Clear(); } inline ::pg_query::Node* Query::mutable_sort_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.sort_clause) return _impl_.sort_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_sort_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.sort_clause) return &_impl_.sort_clause_; } inline const ::pg_query::Node& Query::_internal_sort_clause(int index) const { return _impl_.sort_clause_.Get(index); } inline const ::pg_query::Node& Query::sort_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.sort_clause) return _internal_sort_clause(index); } inline ::pg_query::Node* Query::_internal_add_sort_clause() { return _impl_.sort_clause_.Add(); } inline ::pg_query::Node* Query::add_sort_clause() { ::pg_query::Node* _add = _internal_add_sort_clause(); // @@protoc_insertion_point(field_add:pg_query.Query.sort_clause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::sort_clause() const { // @@protoc_insertion_point(field_list:pg_query.Query.sort_clause) return _impl_.sort_clause_; } // .pg_query.Node limit_offset = 32 [json_name = "limitOffset"]; inline bool Query::_internal_has_limit_offset() const { return this != internal_default_instance() && _impl_.limit_offset_ != nullptr; } inline bool Query::has_limit_offset() const { return _internal_has_limit_offset(); } inline void Query::clear_limit_offset() { if (GetArenaForAllocation() == nullptr && _impl_.limit_offset_ != nullptr) { delete _impl_.limit_offset_; } _impl_.limit_offset_ = nullptr; } inline const ::pg_query::Node& Query::_internal_limit_offset() const { 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 { // @@protoc_insertion_point(field_get:pg_query.Query.limit_offset) return _internal_limit_offset(); } inline void Query::unsafe_arena_set_allocated_limit_offset( ::pg_query::Node* limit_offset) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.limit_offset_); } _impl_.limit_offset_ = limit_offset; if (limit_offset) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.limit_offset) } inline ::pg_query::Node* Query::release_limit_offset() { ::pg_query::Node* temp = _impl_.limit_offset_; _impl_.limit_offset_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* Query::unsafe_arena_release_limit_offset() { // @@protoc_insertion_point(field_release:pg_query.Query.limit_offset) ::pg_query::Node* temp = _impl_.limit_offset_; _impl_.limit_offset_ = nullptr; return temp; } inline ::pg_query::Node* Query::_internal_mutable_limit_offset() { if (_impl_.limit_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.limit_offset_ = p; } return _impl_.limit_offset_; } inline ::pg_query::Node* Query::mutable_limit_offset() { ::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* limit_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.limit_offset_; } if (limit_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(limit_offset); if (message_arena != submessage_arena) { limit_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, limit_offset, submessage_arena); } } else { } _impl_.limit_offset_ = limit_offset; // @@protoc_insertion_point(field_set_allocated:pg_query.Query.limit_offset) } // .pg_query.Node limit_count = 33 [json_name = "limitCount"]; inline bool Query::_internal_has_limit_count() const { return this != internal_default_instance() && _impl_.limit_count_ != nullptr; } inline bool Query::has_limit_count() const { return _internal_has_limit_count(); } inline void Query::clear_limit_count() { if (GetArenaForAllocation() == nullptr && _impl_.limit_count_ != nullptr) { delete _impl_.limit_count_; } _impl_.limit_count_ = nullptr; } inline const ::pg_query::Node& Query::_internal_limit_count() const { 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 { // @@protoc_insertion_point(field_get:pg_query.Query.limit_count) return _internal_limit_count(); } inline void Query::unsafe_arena_set_allocated_limit_count( ::pg_query::Node* limit_count) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.limit_count_); } _impl_.limit_count_ = limit_count; if (limit_count) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.limit_count) } inline ::pg_query::Node* Query::release_limit_count() { ::pg_query::Node* temp = _impl_.limit_count_; _impl_.limit_count_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* Query::unsafe_arena_release_limit_count() { // @@protoc_insertion_point(field_release:pg_query.Query.limit_count) ::pg_query::Node* temp = _impl_.limit_count_; _impl_.limit_count_ = nullptr; return temp; } inline ::pg_query::Node* Query::_internal_mutable_limit_count() { if (_impl_.limit_count_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.limit_count_ = p; } return _impl_.limit_count_; } inline ::pg_query::Node* Query::mutable_limit_count() { ::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* limit_count) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.limit_count_; } if (limit_count) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(limit_count); if (message_arena != submessage_arena) { limit_count = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, limit_count, submessage_arena); } } else { } _impl_.limit_count_ = limit_count; // @@protoc_insertion_point(field_set_allocated:pg_query.Query.limit_count) } // .pg_query.LimitOption limit_option = 34 [json_name = "limitOption"]; inline void Query::clear_limit_option() { _impl_.limit_option_ = 0; } inline ::pg_query::LimitOption Query::_internal_limit_option() const { return static_cast< ::pg_query::LimitOption >(_impl_.limit_option_); } inline ::pg_query::LimitOption Query::limit_option() const { // @@protoc_insertion_point(field_get:pg_query.Query.limit_option) return _internal_limit_option(); } inline void Query::_internal_set_limit_option(::pg_query::LimitOption value) { _impl_.limit_option_ = value; } inline void Query::set_limit_option(::pg_query::LimitOption value) { _internal_set_limit_option(value); // @@protoc_insertion_point(field_set:pg_query.Query.limit_option) } // repeated .pg_query.Node row_marks = 35 [json_name = "rowMarks"]; inline int Query::_internal_row_marks_size() const { return _impl_.row_marks_.size(); } inline int Query::row_marks_size() const { return _internal_row_marks_size(); } inline void Query::clear_row_marks() { _impl_.row_marks_.Clear(); } inline ::pg_query::Node* Query::mutable_row_marks(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.row_marks) return _impl_.row_marks_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_row_marks() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.row_marks) return &_impl_.row_marks_; } inline const ::pg_query::Node& Query::_internal_row_marks(int index) const { return _impl_.row_marks_.Get(index); } inline const ::pg_query::Node& Query::row_marks(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.row_marks) return _internal_row_marks(index); } inline ::pg_query::Node* Query::_internal_add_row_marks() { return _impl_.row_marks_.Add(); } inline ::pg_query::Node* Query::add_row_marks() { ::pg_query::Node* _add = _internal_add_row_marks(); // @@protoc_insertion_point(field_add:pg_query.Query.row_marks) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::row_marks() const { // @@protoc_insertion_point(field_list:pg_query.Query.row_marks) return _impl_.row_marks_; } // .pg_query.Node set_operations = 36 [json_name = "setOperations"]; inline bool Query::_internal_has_set_operations() const { return this != internal_default_instance() && _impl_.set_operations_ != nullptr; } inline bool Query::has_set_operations() const { return _internal_has_set_operations(); } inline void Query::clear_set_operations() { if (GetArenaForAllocation() == nullptr && _impl_.set_operations_ != nullptr) { delete _impl_.set_operations_; } _impl_.set_operations_ = nullptr; } inline const ::pg_query::Node& Query::_internal_set_operations() const { 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 { // @@protoc_insertion_point(field_get:pg_query.Query.set_operations) return _internal_set_operations(); } inline void Query::unsafe_arena_set_allocated_set_operations( ::pg_query::Node* set_operations) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.set_operations_); } _impl_.set_operations_ = set_operations; if (set_operations) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.set_operations) } inline ::pg_query::Node* Query::release_set_operations() { ::pg_query::Node* temp = _impl_.set_operations_; _impl_.set_operations_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* Query::unsafe_arena_release_set_operations() { // @@protoc_insertion_point(field_release:pg_query.Query.set_operations) ::pg_query::Node* temp = _impl_.set_operations_; _impl_.set_operations_ = nullptr; return temp; } inline ::pg_query::Node* Query::_internal_mutable_set_operations() { if (_impl_.set_operations_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.set_operations_ = p; } return _impl_.set_operations_; } inline ::pg_query::Node* Query::mutable_set_operations() { ::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* set_operations) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.set_operations_; } if (set_operations) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(set_operations); if (message_arena != submessage_arena) { set_operations = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, set_operations, submessage_arena); } } else { } _impl_.set_operations_ = set_operations; // @@protoc_insertion_point(field_set_allocated:pg_query.Query.set_operations) } // repeated .pg_query.Node constraint_deps = 37 [json_name = "constraintDeps"]; inline int Query::_internal_constraint_deps_size() const { return _impl_.constraint_deps_.size(); } inline int Query::constraint_deps_size() const { return _internal_constraint_deps_size(); } inline void Query::clear_constraint_deps() { _impl_.constraint_deps_.Clear(); } inline ::pg_query::Node* Query::mutable_constraint_deps(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.constraint_deps) return _impl_.constraint_deps_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_constraint_deps() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.constraint_deps) return &_impl_.constraint_deps_; } inline const ::pg_query::Node& Query::_internal_constraint_deps(int index) const { return _impl_.constraint_deps_.Get(index); } inline const ::pg_query::Node& Query::constraint_deps(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.constraint_deps) return _internal_constraint_deps(index); } inline ::pg_query::Node* Query::_internal_add_constraint_deps() { return _impl_.constraint_deps_.Add(); } inline ::pg_query::Node* Query::add_constraint_deps() { ::pg_query::Node* _add = _internal_add_constraint_deps(); // @@protoc_insertion_point(field_add:pg_query.Query.constraint_deps) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::constraint_deps() const { // @@protoc_insertion_point(field_list:pg_query.Query.constraint_deps) return _impl_.constraint_deps_; } // repeated .pg_query.Node with_check_options = 38 [json_name = "withCheckOptions"]; inline int Query::_internal_with_check_options_size() const { return _impl_.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() { _impl_.with_check_options_.Clear(); } inline ::pg_query::Node* Query::mutable_with_check_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.with_check_options) return _impl_.with_check_options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_with_check_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.with_check_options) return &_impl_.with_check_options_; } inline const ::pg_query::Node& Query::_internal_with_check_options(int index) const { return _impl_.with_check_options_.Get(index); } inline const ::pg_query::Node& Query::with_check_options(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.with_check_options) return _internal_with_check_options(index); } inline ::pg_query::Node* Query::_internal_add_with_check_options() { return _impl_.with_check_options_.Add(); } inline ::pg_query::Node* Query::add_with_check_options() { ::pg_query::Node* _add = _internal_add_with_check_options(); // @@protoc_insertion_point(field_add:pg_query.Query.with_check_options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::with_check_options() const { // @@protoc_insertion_point(field_list:pg_query.Query.with_check_options) return _impl_.with_check_options_; } // int32 stmt_location = 39 [json_name = "stmt_location"]; inline void Query::clear_stmt_location() { _impl_.stmt_location_ = 0; } inline int32_t Query::_internal_stmt_location() const { return _impl_.stmt_location_; } inline int32_t Query::stmt_location() const { // @@protoc_insertion_point(field_get:pg_query.Query.stmt_location) return _internal_stmt_location(); } inline void Query::_internal_set_stmt_location(int32_t value) { _impl_.stmt_location_ = value; } inline void Query::set_stmt_location(int32_t value) { _internal_set_stmt_location(value); // @@protoc_insertion_point(field_set:pg_query.Query.stmt_location) } // int32 stmt_len = 40 [json_name = "stmt_len"]; inline void Query::clear_stmt_len() { _impl_.stmt_len_ = 0; } inline int32_t Query::_internal_stmt_len() const { return _impl_.stmt_len_; } inline int32_t Query::stmt_len() const { // @@protoc_insertion_point(field_get:pg_query.Query.stmt_len) return _internal_stmt_len(); } inline void Query::_internal_set_stmt_len(int32_t value) { _impl_.stmt_len_ = value; } inline void Query::set_stmt_len(int32_t value) { _internal_set_stmt_len(value); // @@protoc_insertion_point(field_set:pg_query.Query.stmt_len) } // ------------------------------------------------------------------- // InsertStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool InsertStmt::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool InsertStmt::has_relation() const { return _internal_has_relation(); } inline void InsertStmt::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& InsertStmt::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.relation) return _internal_relation(); } inline void InsertStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InsertStmt.relation) } inline ::pg_query::RangeVar* InsertStmt::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* InsertStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.InsertStmt.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* InsertStmt::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* InsertStmt::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.InsertStmt.relation) } // repeated .pg_query.Node cols = 2 [json_name = "cols"]; inline int InsertStmt::_internal_cols_size() const { return _impl_.cols_.size(); } inline int InsertStmt::cols_size() const { return _internal_cols_size(); } inline void InsertStmt::clear_cols() { _impl_.cols_.Clear(); } inline ::pg_query::Node* InsertStmt::mutable_cols(int index) { // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.cols) return _impl_.cols_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* InsertStmt::mutable_cols() { // @@protoc_insertion_point(field_mutable_list:pg_query.InsertStmt.cols) return &_impl_.cols_; } inline const ::pg_query::Node& InsertStmt::_internal_cols(int index) const { return _impl_.cols_.Get(index); } inline const ::pg_query::Node& InsertStmt::cols(int index) const { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.cols) return _internal_cols(index); } inline ::pg_query::Node* InsertStmt::_internal_add_cols() { return _impl_.cols_.Add(); } inline ::pg_query::Node* InsertStmt::add_cols() { ::pg_query::Node* _add = _internal_add_cols(); // @@protoc_insertion_point(field_add:pg_query.InsertStmt.cols) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& InsertStmt::cols() const { // @@protoc_insertion_point(field_list:pg_query.InsertStmt.cols) return _impl_.cols_; } // .pg_query.Node select_stmt = 3 [json_name = "selectStmt"]; inline bool InsertStmt::_internal_has_select_stmt() const { return this != internal_default_instance() && _impl_.select_stmt_ != nullptr; } inline bool InsertStmt::has_select_stmt() const { return _internal_has_select_stmt(); } inline void InsertStmt::clear_select_stmt() { if (GetArenaForAllocation() == nullptr && _impl_.select_stmt_ != nullptr) { delete _impl_.select_stmt_; } _impl_.select_stmt_ = nullptr; } inline const ::pg_query::Node& InsertStmt::_internal_select_stmt() const { 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 { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.select_stmt) return _internal_select_stmt(); } inline void InsertStmt::unsafe_arena_set_allocated_select_stmt( ::pg_query::Node* select_stmt) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.select_stmt_); } _impl_.select_stmt_ = select_stmt; if (select_stmt) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InsertStmt.select_stmt) } inline ::pg_query::Node* InsertStmt::release_select_stmt() { ::pg_query::Node* temp = _impl_.select_stmt_; _impl_.select_stmt_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* InsertStmt::unsafe_arena_release_select_stmt() { // @@protoc_insertion_point(field_release:pg_query.InsertStmt.select_stmt) ::pg_query::Node* temp = _impl_.select_stmt_; _impl_.select_stmt_ = nullptr; return temp; } inline ::pg_query::Node* InsertStmt::_internal_mutable_select_stmt() { if (_impl_.select_stmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.select_stmt_ = p; } return _impl_.select_stmt_; } inline ::pg_query::Node* InsertStmt::mutable_select_stmt() { ::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* select_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.select_stmt_; } if (select_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(select_stmt); if (message_arena != submessage_arena) { select_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, select_stmt, submessage_arena); } } else { } _impl_.select_stmt_ = select_stmt; // @@protoc_insertion_point(field_set_allocated:pg_query.InsertStmt.select_stmt) } // .pg_query.OnConflictClause on_conflict_clause = 4 [json_name = "onConflictClause"]; inline bool InsertStmt::_internal_has_on_conflict_clause() const { return this != internal_default_instance() && _impl_.on_conflict_clause_ != nullptr; } inline bool InsertStmt::has_on_conflict_clause() const { return _internal_has_on_conflict_clause(); } inline void InsertStmt::clear_on_conflict_clause() { if (GetArenaForAllocation() == nullptr && _impl_.on_conflict_clause_ != nullptr) { delete _impl_.on_conflict_clause_; } _impl_.on_conflict_clause_ = nullptr; } inline const ::pg_query::OnConflictClause& InsertStmt::_internal_on_conflict_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.on_conflict_clause) return _internal_on_conflict_clause(); } inline void InsertStmt::unsafe_arena_set_allocated_on_conflict_clause( ::pg_query::OnConflictClause* on_conflict_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.on_conflict_clause_); } _impl_.on_conflict_clause_ = on_conflict_clause; if (on_conflict_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InsertStmt.on_conflict_clause) } inline ::pg_query::OnConflictClause* InsertStmt::release_on_conflict_clause() { ::pg_query::OnConflictClause* temp = _impl_.on_conflict_clause_; _impl_.on_conflict_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::OnConflictClause* InsertStmt::unsafe_arena_release_on_conflict_clause() { // @@protoc_insertion_point(field_release:pg_query.InsertStmt.on_conflict_clause) ::pg_query::OnConflictClause* temp = _impl_.on_conflict_clause_; _impl_.on_conflict_clause_ = nullptr; return temp; } inline ::pg_query::OnConflictClause* InsertStmt::_internal_mutable_on_conflict_clause() { if (_impl_.on_conflict_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::OnConflictClause>(GetArenaForAllocation()); _impl_.on_conflict_clause_ = p; } return _impl_.on_conflict_clause_; } inline ::pg_query::OnConflictClause* InsertStmt::mutable_on_conflict_clause() { ::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* on_conflict_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.on_conflict_clause_; } if (on_conflict_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(on_conflict_clause); if (message_arena != submessage_arena) { on_conflict_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, on_conflict_clause, submessage_arena); } } else { } _impl_.on_conflict_clause_ = on_conflict_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.InsertStmt.on_conflict_clause) } // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; inline int InsertStmt::_internal_returning_list_size() const { return _impl_.returning_list_.size(); } inline int InsertStmt::returning_list_size() const { return _internal_returning_list_size(); } inline void InsertStmt::clear_returning_list() { _impl_.returning_list_.Clear(); } inline ::pg_query::Node* InsertStmt::mutable_returning_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.returning_list) return _impl_.returning_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* InsertStmt::mutable_returning_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.InsertStmt.returning_list) return &_impl_.returning_list_; } inline const ::pg_query::Node& InsertStmt::_internal_returning_list(int index) const { return _impl_.returning_list_.Get(index); } inline const ::pg_query::Node& InsertStmt::returning_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.returning_list) return _internal_returning_list(index); } inline ::pg_query::Node* InsertStmt::_internal_add_returning_list() { return _impl_.returning_list_.Add(); } inline ::pg_query::Node* InsertStmt::add_returning_list() { ::pg_query::Node* _add = _internal_add_returning_list(); // @@protoc_insertion_point(field_add:pg_query.InsertStmt.returning_list) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& InsertStmt::returning_list() const { // @@protoc_insertion_point(field_list:pg_query.InsertStmt.returning_list) return _impl_.returning_list_; } // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; inline bool InsertStmt::_internal_has_with_clause() const { return this != internal_default_instance() && _impl_.with_clause_ != nullptr; } inline bool InsertStmt::has_with_clause() const { return _internal_has_with_clause(); } inline void InsertStmt::clear_with_clause() { if (GetArenaForAllocation() == nullptr && _impl_.with_clause_ != nullptr) { delete _impl_.with_clause_; } _impl_.with_clause_ = nullptr; } inline const ::pg_query::WithClause& InsertStmt::_internal_with_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.with_clause) return _internal_with_clause(); } inline void InsertStmt::unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.with_clause_); } _impl_.with_clause_ = with_clause; if (with_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InsertStmt.with_clause) } inline ::pg_query::WithClause* InsertStmt::release_with_clause() { ::pg_query::WithClause* temp = _impl_.with_clause_; _impl_.with_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::WithClause* InsertStmt::unsafe_arena_release_with_clause() { // @@protoc_insertion_point(field_release:pg_query.InsertStmt.with_clause) ::pg_query::WithClause* temp = _impl_.with_clause_; _impl_.with_clause_ = nullptr; return temp; } inline ::pg_query::WithClause* InsertStmt::_internal_mutable_with_clause() { if (_impl_.with_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArenaForAllocation()); _impl_.with_clause_ = p; } return _impl_.with_clause_; } inline ::pg_query::WithClause* InsertStmt::mutable_with_clause() { ::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* with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.with_clause_; } if (with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(with_clause); if (message_arena != submessage_arena) { with_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, with_clause, submessage_arena); } } else { } _impl_.with_clause_ = with_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.InsertStmt.with_clause) } // .pg_query.OverridingKind override = 7 [json_name = "override"]; inline void InsertStmt::clear_override() { _impl_.override_ = 0; } inline ::pg_query::OverridingKind InsertStmt::_internal_override() const { return static_cast< ::pg_query::OverridingKind >(_impl_.override_); } inline ::pg_query::OverridingKind InsertStmt::override() const { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.override) return _internal_override(); } inline void InsertStmt::_internal_set_override(::pg_query::OverridingKind value) { _impl_.override_ = value; } inline void InsertStmt::set_override(::pg_query::OverridingKind value) { _internal_set_override(value); // @@protoc_insertion_point(field_set:pg_query.InsertStmt.override) } // ------------------------------------------------------------------- // DeleteStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool DeleteStmt::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool DeleteStmt::has_relation() const { return _internal_has_relation(); } inline void DeleteStmt::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& DeleteStmt::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.relation) return _internal_relation(); } inline void DeleteStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DeleteStmt.relation) } inline ::pg_query::RangeVar* DeleteStmt::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* DeleteStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.DeleteStmt.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* DeleteStmt::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* DeleteStmt::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.DeleteStmt.relation) } // repeated .pg_query.Node using_clause = 2 [json_name = "usingClause"]; inline int DeleteStmt::_internal_using_clause_size() const { return _impl_.using_clause_.size(); } inline int DeleteStmt::using_clause_size() const { return _internal_using_clause_size(); } inline void DeleteStmt::clear_using_clause() { _impl_.using_clause_.Clear(); } inline ::pg_query::Node* DeleteStmt::mutable_using_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DeleteStmt.using_clause) return _impl_.using_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DeleteStmt::mutable_using_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.DeleteStmt.using_clause) return &_impl_.using_clause_; } inline const ::pg_query::Node& DeleteStmt::_internal_using_clause(int index) const { return _impl_.using_clause_.Get(index); } inline const ::pg_query::Node& DeleteStmt::using_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.using_clause) return _internal_using_clause(index); } inline ::pg_query::Node* DeleteStmt::_internal_add_using_clause() { return _impl_.using_clause_.Add(); } inline ::pg_query::Node* DeleteStmt::add_using_clause() { ::pg_query::Node* _add = _internal_add_using_clause(); // @@protoc_insertion_point(field_add:pg_query.DeleteStmt.using_clause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DeleteStmt::using_clause() const { // @@protoc_insertion_point(field_list:pg_query.DeleteStmt.using_clause) return _impl_.using_clause_; } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; inline bool DeleteStmt::_internal_has_where_clause() const { return this != internal_default_instance() && _impl_.where_clause_ != nullptr; } inline bool DeleteStmt::has_where_clause() const { return _internal_has_where_clause(); } inline void DeleteStmt::clear_where_clause() { if (GetArenaForAllocation() == nullptr && _impl_.where_clause_ != nullptr) { delete _impl_.where_clause_; } _impl_.where_clause_ = nullptr; } inline const ::pg_query::Node& DeleteStmt::_internal_where_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.where_clause) return _internal_where_clause(); } inline void DeleteStmt::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DeleteStmt.where_clause) } inline ::pg_query::Node* DeleteStmt::release_where_clause() { ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* DeleteStmt::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.DeleteStmt.where_clause) ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* DeleteStmt::_internal_mutable_where_clause() { if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.where_clause_ = p; } return _impl_.where_clause_; } inline ::pg_query::Node* DeleteStmt::mutable_where_clause() { ::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* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } _impl_.where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.DeleteStmt.where_clause) } // repeated .pg_query.Node returning_list = 4 [json_name = "returningList"]; inline int DeleteStmt::_internal_returning_list_size() const { return _impl_.returning_list_.size(); } inline int DeleteStmt::returning_list_size() const { return _internal_returning_list_size(); } inline void DeleteStmt::clear_returning_list() { _impl_.returning_list_.Clear(); } inline ::pg_query::Node* DeleteStmt::mutable_returning_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DeleteStmt.returning_list) return _impl_.returning_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DeleteStmt::mutable_returning_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.DeleteStmt.returning_list) return &_impl_.returning_list_; } inline const ::pg_query::Node& DeleteStmt::_internal_returning_list(int index) const { return _impl_.returning_list_.Get(index); } inline const ::pg_query::Node& DeleteStmt::returning_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.returning_list) return _internal_returning_list(index); } inline ::pg_query::Node* DeleteStmt::_internal_add_returning_list() { return _impl_.returning_list_.Add(); } inline ::pg_query::Node* DeleteStmt::add_returning_list() { ::pg_query::Node* _add = _internal_add_returning_list(); // @@protoc_insertion_point(field_add:pg_query.DeleteStmt.returning_list) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DeleteStmt::returning_list() const { // @@protoc_insertion_point(field_list:pg_query.DeleteStmt.returning_list) return _impl_.returning_list_; } // .pg_query.WithClause with_clause = 5 [json_name = "withClause"]; inline bool DeleteStmt::_internal_has_with_clause() const { return this != internal_default_instance() && _impl_.with_clause_ != nullptr; } inline bool DeleteStmt::has_with_clause() const { return _internal_has_with_clause(); } inline void DeleteStmt::clear_with_clause() { if (GetArenaForAllocation() == nullptr && _impl_.with_clause_ != nullptr) { delete _impl_.with_clause_; } _impl_.with_clause_ = nullptr; } inline const ::pg_query::WithClause& DeleteStmt::_internal_with_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.with_clause) return _internal_with_clause(); } inline void DeleteStmt::unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.with_clause_); } _impl_.with_clause_ = with_clause; if (with_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DeleteStmt.with_clause) } inline ::pg_query::WithClause* DeleteStmt::release_with_clause() { ::pg_query::WithClause* temp = _impl_.with_clause_; _impl_.with_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::WithClause* DeleteStmt::unsafe_arena_release_with_clause() { // @@protoc_insertion_point(field_release:pg_query.DeleteStmt.with_clause) ::pg_query::WithClause* temp = _impl_.with_clause_; _impl_.with_clause_ = nullptr; return temp; } inline ::pg_query::WithClause* DeleteStmt::_internal_mutable_with_clause() { if (_impl_.with_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArenaForAllocation()); _impl_.with_clause_ = p; } return _impl_.with_clause_; } inline ::pg_query::WithClause* DeleteStmt::mutable_with_clause() { ::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* with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.with_clause_; } if (with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(with_clause); if (message_arena != submessage_arena) { with_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, with_clause, submessage_arena); } } else { } _impl_.with_clause_ = with_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.DeleteStmt.with_clause) } // ------------------------------------------------------------------- // UpdateStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool UpdateStmt::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool UpdateStmt::has_relation() const { return _internal_has_relation(); } inline void UpdateStmt::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& UpdateStmt::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.relation) return _internal_relation(); } inline void UpdateStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.UpdateStmt.relation) } inline ::pg_query::RangeVar* UpdateStmt::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* UpdateStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.UpdateStmt.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* UpdateStmt::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* UpdateStmt::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.UpdateStmt.relation) } // repeated .pg_query.Node target_list = 2 [json_name = "targetList"]; inline int UpdateStmt::_internal_target_list_size() const { return _impl_.target_list_.size(); } inline int UpdateStmt::target_list_size() const { return _internal_target_list_size(); } inline void UpdateStmt::clear_target_list() { _impl_.target_list_.Clear(); } inline ::pg_query::Node* UpdateStmt::mutable_target_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.target_list) return _impl_.target_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* UpdateStmt::mutable_target_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.UpdateStmt.target_list) return &_impl_.target_list_; } inline const ::pg_query::Node& UpdateStmt::_internal_target_list(int index) const { return _impl_.target_list_.Get(index); } inline const ::pg_query::Node& UpdateStmt::target_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.target_list) return _internal_target_list(index); } inline ::pg_query::Node* UpdateStmt::_internal_add_target_list() { return _impl_.target_list_.Add(); } inline ::pg_query::Node* UpdateStmt::add_target_list() { ::pg_query::Node* _add = _internal_add_target_list(); // @@protoc_insertion_point(field_add:pg_query.UpdateStmt.target_list) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& UpdateStmt::target_list() const { // @@protoc_insertion_point(field_list:pg_query.UpdateStmt.target_list) return _impl_.target_list_; } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; inline bool UpdateStmt::_internal_has_where_clause() const { return this != internal_default_instance() && _impl_.where_clause_ != nullptr; } inline bool UpdateStmt::has_where_clause() const { return _internal_has_where_clause(); } inline void UpdateStmt::clear_where_clause() { if (GetArenaForAllocation() == nullptr && _impl_.where_clause_ != nullptr) { delete _impl_.where_clause_; } _impl_.where_clause_ = nullptr; } inline const ::pg_query::Node& UpdateStmt::_internal_where_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.where_clause) return _internal_where_clause(); } inline void UpdateStmt::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.UpdateStmt.where_clause) } inline ::pg_query::Node* UpdateStmt::release_where_clause() { ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* UpdateStmt::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.UpdateStmt.where_clause) ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* UpdateStmt::_internal_mutable_where_clause() { if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.where_clause_ = p; } return _impl_.where_clause_; } inline ::pg_query::Node* UpdateStmt::mutable_where_clause() { ::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* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } _impl_.where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.UpdateStmt.where_clause) } // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; inline int UpdateStmt::_internal_from_clause_size() const { return _impl_.from_clause_.size(); } inline int UpdateStmt::from_clause_size() const { return _internal_from_clause_size(); } inline void UpdateStmt::clear_from_clause() { _impl_.from_clause_.Clear(); } inline ::pg_query::Node* UpdateStmt::mutable_from_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.from_clause) return _impl_.from_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* UpdateStmt::mutable_from_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.UpdateStmt.from_clause) return &_impl_.from_clause_; } inline const ::pg_query::Node& UpdateStmt::_internal_from_clause(int index) const { return _impl_.from_clause_.Get(index); } inline const ::pg_query::Node& UpdateStmt::from_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.from_clause) return _internal_from_clause(index); } inline ::pg_query::Node* UpdateStmt::_internal_add_from_clause() { return _impl_.from_clause_.Add(); } inline ::pg_query::Node* UpdateStmt::add_from_clause() { ::pg_query::Node* _add = _internal_add_from_clause(); // @@protoc_insertion_point(field_add:pg_query.UpdateStmt.from_clause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& UpdateStmt::from_clause() const { // @@protoc_insertion_point(field_list:pg_query.UpdateStmt.from_clause) return _impl_.from_clause_; } // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; inline int UpdateStmt::_internal_returning_list_size() const { return _impl_.returning_list_.size(); } inline int UpdateStmt::returning_list_size() const { return _internal_returning_list_size(); } inline void UpdateStmt::clear_returning_list() { _impl_.returning_list_.Clear(); } inline ::pg_query::Node* UpdateStmt::mutable_returning_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.returning_list) return _impl_.returning_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* UpdateStmt::mutable_returning_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.UpdateStmt.returning_list) return &_impl_.returning_list_; } inline const ::pg_query::Node& UpdateStmt::_internal_returning_list(int index) const { return _impl_.returning_list_.Get(index); } inline const ::pg_query::Node& UpdateStmt::returning_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.returning_list) return _internal_returning_list(index); } inline ::pg_query::Node* UpdateStmt::_internal_add_returning_list() { return _impl_.returning_list_.Add(); } inline ::pg_query::Node* UpdateStmt::add_returning_list() { ::pg_query::Node* _add = _internal_add_returning_list(); // @@protoc_insertion_point(field_add:pg_query.UpdateStmt.returning_list) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& UpdateStmt::returning_list() const { // @@protoc_insertion_point(field_list:pg_query.UpdateStmt.returning_list) return _impl_.returning_list_; } // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; inline bool UpdateStmt::_internal_has_with_clause() const { return this != internal_default_instance() && _impl_.with_clause_ != nullptr; } inline bool UpdateStmt::has_with_clause() const { return _internal_has_with_clause(); } inline void UpdateStmt::clear_with_clause() { if (GetArenaForAllocation() == nullptr && _impl_.with_clause_ != nullptr) { delete _impl_.with_clause_; } _impl_.with_clause_ = nullptr; } inline const ::pg_query::WithClause& UpdateStmt::_internal_with_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.with_clause) return _internal_with_clause(); } inline void UpdateStmt::unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.with_clause_); } _impl_.with_clause_ = with_clause; if (with_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.UpdateStmt.with_clause) } inline ::pg_query::WithClause* UpdateStmt::release_with_clause() { ::pg_query::WithClause* temp = _impl_.with_clause_; _impl_.with_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::WithClause* UpdateStmt::unsafe_arena_release_with_clause() { // @@protoc_insertion_point(field_release:pg_query.UpdateStmt.with_clause) ::pg_query::WithClause* temp = _impl_.with_clause_; _impl_.with_clause_ = nullptr; return temp; } inline ::pg_query::WithClause* UpdateStmt::_internal_mutable_with_clause() { if (_impl_.with_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArenaForAllocation()); _impl_.with_clause_ = p; } return _impl_.with_clause_; } inline ::pg_query::WithClause* UpdateStmt::mutable_with_clause() { ::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* with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.with_clause_; } if (with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(with_clause); if (message_arena != submessage_arena) { with_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, with_clause, submessage_arena); } } else { } _impl_.with_clause_ = with_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.UpdateStmt.with_clause) } // ------------------------------------------------------------------- // MergeStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool MergeStmt::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool MergeStmt::has_relation() const { return _internal_has_relation(); } inline void MergeStmt::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& MergeStmt::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.MergeStmt.relation) return _internal_relation(); } inline void MergeStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MergeStmt.relation) } inline ::pg_query::RangeVar* MergeStmt::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* MergeStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.MergeStmt.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* MergeStmt::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* MergeStmt::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.MergeStmt.relation) } // .pg_query.Node source_relation = 2 [json_name = "sourceRelation"]; inline bool MergeStmt::_internal_has_source_relation() const { return this != internal_default_instance() && _impl_.source_relation_ != nullptr; } inline bool MergeStmt::has_source_relation() const { return _internal_has_source_relation(); } inline void MergeStmt::clear_source_relation() { if (GetArenaForAllocation() == nullptr && _impl_.source_relation_ != nullptr) { delete _impl_.source_relation_; } _impl_.source_relation_ = nullptr; } inline const ::pg_query::Node& MergeStmt::_internal_source_relation() const { 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 { // @@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* source_relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.source_relation_); } _impl_.source_relation_ = source_relation; if (source_relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MergeStmt.source_relation) } inline ::pg_query::Node* MergeStmt::release_source_relation() { ::pg_query::Node* temp = _impl_.source_relation_; _impl_.source_relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* MergeStmt::unsafe_arena_release_source_relation() { // @@protoc_insertion_point(field_release:pg_query.MergeStmt.source_relation) ::pg_query::Node* temp = _impl_.source_relation_; _impl_.source_relation_ = nullptr; return temp; } inline ::pg_query::Node* MergeStmt::_internal_mutable_source_relation() { if (_impl_.source_relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.source_relation_ = p; } return _impl_.source_relation_; } inline ::pg_query::Node* MergeStmt::mutable_source_relation() { ::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* source_relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.source_relation_; } if (source_relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(source_relation); if (message_arena != submessage_arena) { source_relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, source_relation, submessage_arena); } } else { } _impl_.source_relation_ = source_relation; // @@protoc_insertion_point(field_set_allocated:pg_query.MergeStmt.source_relation) } // .pg_query.Node join_condition = 3 [json_name = "joinCondition"]; inline bool MergeStmt::_internal_has_join_condition() const { return this != internal_default_instance() && _impl_.join_condition_ != nullptr; } inline bool MergeStmt::has_join_condition() const { return _internal_has_join_condition(); } inline void MergeStmt::clear_join_condition() { if (GetArenaForAllocation() == nullptr && _impl_.join_condition_ != nullptr) { delete _impl_.join_condition_; } _impl_.join_condition_ = nullptr; } inline const ::pg_query::Node& MergeStmt::_internal_join_condition() const { 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 { // @@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* join_condition) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.join_condition_); } _impl_.join_condition_ = join_condition; if (join_condition) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MergeStmt.join_condition) } inline ::pg_query::Node* MergeStmt::release_join_condition() { ::pg_query::Node* temp = _impl_.join_condition_; _impl_.join_condition_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* MergeStmt::unsafe_arena_release_join_condition() { // @@protoc_insertion_point(field_release:pg_query.MergeStmt.join_condition) ::pg_query::Node* temp = _impl_.join_condition_; _impl_.join_condition_ = nullptr; return temp; } inline ::pg_query::Node* MergeStmt::_internal_mutable_join_condition() { if (_impl_.join_condition_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.join_condition_ = p; } return _impl_.join_condition_; } inline ::pg_query::Node* MergeStmt::mutable_join_condition() { ::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* join_condition) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.join_condition_; } if (join_condition) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(join_condition); if (message_arena != submessage_arena) { join_condition = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, join_condition, submessage_arena); } } else { } _impl_.join_condition_ = join_condition; // @@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 _impl_.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() { _impl_.merge_when_clauses_.Clear(); } inline ::pg_query::Node* MergeStmt::mutable_merge_when_clauses(int index) { // @@protoc_insertion_point(field_mutable:pg_query.MergeStmt.merge_when_clauses) return _impl_.merge_when_clauses_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* MergeStmt::mutable_merge_when_clauses() { // @@protoc_insertion_point(field_mutable_list:pg_query.MergeStmt.merge_when_clauses) return &_impl_.merge_when_clauses_; } inline const ::pg_query::Node& MergeStmt::_internal_merge_when_clauses(int index) const { return _impl_.merge_when_clauses_.Get(index); } inline const ::pg_query::Node& MergeStmt::merge_when_clauses(int index) const { // @@protoc_insertion_point(field_get:pg_query.MergeStmt.merge_when_clauses) return _internal_merge_when_clauses(index); } inline ::pg_query::Node* MergeStmt::_internal_add_merge_when_clauses() { return _impl_.merge_when_clauses_.Add(); } inline ::pg_query::Node* MergeStmt::add_merge_when_clauses() { ::pg_query::Node* _add = _internal_add_merge_when_clauses(); // @@protoc_insertion_point(field_add:pg_query.MergeStmt.merge_when_clauses) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& MergeStmt::merge_when_clauses() const { // @@protoc_insertion_point(field_list:pg_query.MergeStmt.merge_when_clauses) return _impl_.merge_when_clauses_; } // .pg_query.WithClause with_clause = 5 [json_name = "withClause"]; inline bool MergeStmt::_internal_has_with_clause() const { return this != internal_default_instance() && _impl_.with_clause_ != nullptr; } inline bool MergeStmt::has_with_clause() const { return _internal_has_with_clause(); } inline void MergeStmt::clear_with_clause() { if (GetArenaForAllocation() == nullptr && _impl_.with_clause_ != nullptr) { delete _impl_.with_clause_; } _impl_.with_clause_ = nullptr; } inline const ::pg_query::WithClause& MergeStmt::_internal_with_clause() const { 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 { // @@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* with_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.with_clause_); } _impl_.with_clause_ = with_clause; if (with_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MergeStmt.with_clause) } inline ::pg_query::WithClause* MergeStmt::release_with_clause() { ::pg_query::WithClause* temp = _impl_.with_clause_; _impl_.with_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::WithClause* MergeStmt::unsafe_arena_release_with_clause() { // @@protoc_insertion_point(field_release:pg_query.MergeStmt.with_clause) ::pg_query::WithClause* temp = _impl_.with_clause_; _impl_.with_clause_ = nullptr; return temp; } inline ::pg_query::WithClause* MergeStmt::_internal_mutable_with_clause() { if (_impl_.with_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArenaForAllocation()); _impl_.with_clause_ = p; } return _impl_.with_clause_; } inline ::pg_query::WithClause* MergeStmt::mutable_with_clause() { ::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* with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.with_clause_; } if (with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(with_clause); if (message_arena != submessage_arena) { with_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, with_clause, submessage_arena); } } else { } _impl_.with_clause_ = with_clause; // @@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 _impl_.distinct_clause_.size(); } inline int SelectStmt::distinct_clause_size() const { return _internal_distinct_clause_size(); } inline void SelectStmt::clear_distinct_clause() { _impl_.distinct_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_distinct_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.distinct_clause) return _impl_.distinct_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SelectStmt::mutable_distinct_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.distinct_clause) return &_impl_.distinct_clause_; } inline const ::pg_query::Node& SelectStmt::_internal_distinct_clause(int index) const { return _impl_.distinct_clause_.Get(index); } inline const ::pg_query::Node& SelectStmt::distinct_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.distinct_clause) return _internal_distinct_clause(index); } inline ::pg_query::Node* SelectStmt::_internal_add_distinct_clause() { return _impl_.distinct_clause_.Add(); } inline ::pg_query::Node* SelectStmt::add_distinct_clause() { ::pg_query::Node* _add = _internal_add_distinct_clause(); // @@protoc_insertion_point(field_add:pg_query.SelectStmt.distinct_clause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SelectStmt::distinct_clause() const { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.distinct_clause) return _impl_.distinct_clause_; } // .pg_query.IntoClause into_clause = 2 [json_name = "intoClause"]; inline bool SelectStmt::_internal_has_into_clause() const { return this != internal_default_instance() && _impl_.into_clause_ != nullptr; } inline bool SelectStmt::has_into_clause() const { return _internal_has_into_clause(); } inline void SelectStmt::clear_into_clause() { if (GetArenaForAllocation() == nullptr && _impl_.into_clause_ != nullptr) { delete _impl_.into_clause_; } _impl_.into_clause_ = nullptr; } inline const ::pg_query::IntoClause& SelectStmt::_internal_into_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.into_clause) return _internal_into_clause(); } inline void SelectStmt::unsafe_arena_set_allocated_into_clause( ::pg_query::IntoClause* into_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.into_clause_); } _impl_.into_clause_ = into_clause; if (into_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.into_clause) } inline ::pg_query::IntoClause* SelectStmt::release_into_clause() { ::pg_query::IntoClause* temp = _impl_.into_clause_; _impl_.into_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::IntoClause* SelectStmt::unsafe_arena_release_into_clause() { // @@protoc_insertion_point(field_release:pg_query.SelectStmt.into_clause) ::pg_query::IntoClause* temp = _impl_.into_clause_; _impl_.into_clause_ = nullptr; return temp; } inline ::pg_query::IntoClause* SelectStmt::_internal_mutable_into_clause() { if (_impl_.into_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::IntoClause>(GetArenaForAllocation()); _impl_.into_clause_ = p; } return _impl_.into_clause_; } inline ::pg_query::IntoClause* SelectStmt::mutable_into_clause() { ::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* into_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.into_clause_; } if (into_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(into_clause); if (message_arena != submessage_arena) { into_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, into_clause, submessage_arena); } } else { } _impl_.into_clause_ = into_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.into_clause) } // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; inline int SelectStmt::_internal_target_list_size() const { return _impl_.target_list_.size(); } inline int SelectStmt::target_list_size() const { return _internal_target_list_size(); } inline void SelectStmt::clear_target_list() { _impl_.target_list_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_target_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.target_list) return _impl_.target_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SelectStmt::mutable_target_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.target_list) return &_impl_.target_list_; } inline const ::pg_query::Node& SelectStmt::_internal_target_list(int index) const { return _impl_.target_list_.Get(index); } inline const ::pg_query::Node& SelectStmt::target_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.target_list) return _internal_target_list(index); } inline ::pg_query::Node* SelectStmt::_internal_add_target_list() { return _impl_.target_list_.Add(); } inline ::pg_query::Node* SelectStmt::add_target_list() { ::pg_query::Node* _add = _internal_add_target_list(); // @@protoc_insertion_point(field_add:pg_query.SelectStmt.target_list) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SelectStmt::target_list() const { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.target_list) return _impl_.target_list_; } // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; inline int SelectStmt::_internal_from_clause_size() const { return _impl_.from_clause_.size(); } inline int SelectStmt::from_clause_size() const { return _internal_from_clause_size(); } inline void SelectStmt::clear_from_clause() { _impl_.from_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_from_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.from_clause) return _impl_.from_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SelectStmt::mutable_from_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.from_clause) return &_impl_.from_clause_; } inline const ::pg_query::Node& SelectStmt::_internal_from_clause(int index) const { return _impl_.from_clause_.Get(index); } inline const ::pg_query::Node& SelectStmt::from_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.from_clause) return _internal_from_clause(index); } inline ::pg_query::Node* SelectStmt::_internal_add_from_clause() { return _impl_.from_clause_.Add(); } inline ::pg_query::Node* SelectStmt::add_from_clause() { ::pg_query::Node* _add = _internal_add_from_clause(); // @@protoc_insertion_point(field_add:pg_query.SelectStmt.from_clause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SelectStmt::from_clause() const { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.from_clause) return _impl_.from_clause_; } // .pg_query.Node where_clause = 5 [json_name = "whereClause"]; inline bool SelectStmt::_internal_has_where_clause() const { return this != internal_default_instance() && _impl_.where_clause_ != nullptr; } inline bool SelectStmt::has_where_clause() const { return _internal_has_where_clause(); } inline void SelectStmt::clear_where_clause() { if (GetArenaForAllocation() == nullptr && _impl_.where_clause_ != nullptr) { delete _impl_.where_clause_; } _impl_.where_clause_ = nullptr; } inline const ::pg_query::Node& SelectStmt::_internal_where_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.where_clause) return _internal_where_clause(); } inline void SelectStmt::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.where_clause) } inline ::pg_query::Node* SelectStmt::release_where_clause() { ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SelectStmt::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.SelectStmt.where_clause) ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* SelectStmt::_internal_mutable_where_clause() { if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.where_clause_ = p; } return _impl_.where_clause_; } inline ::pg_query::Node* SelectStmt::mutable_where_clause() { ::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* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } _impl_.where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.where_clause) } // repeated .pg_query.Node group_clause = 6 [json_name = "groupClause"]; inline int SelectStmt::_internal_group_clause_size() const { return _impl_.group_clause_.size(); } inline int SelectStmt::group_clause_size() const { return _internal_group_clause_size(); } inline void SelectStmt::clear_group_clause() { _impl_.group_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_group_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.group_clause) return _impl_.group_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SelectStmt::mutable_group_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.group_clause) return &_impl_.group_clause_; } inline const ::pg_query::Node& SelectStmt::_internal_group_clause(int index) const { return _impl_.group_clause_.Get(index); } inline const ::pg_query::Node& SelectStmt::group_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.group_clause) return _internal_group_clause(index); } inline ::pg_query::Node* SelectStmt::_internal_add_group_clause() { return _impl_.group_clause_.Add(); } inline ::pg_query::Node* SelectStmt::add_group_clause() { ::pg_query::Node* _add = _internal_add_group_clause(); // @@protoc_insertion_point(field_add:pg_query.SelectStmt.group_clause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SelectStmt::group_clause() const { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.group_clause) return _impl_.group_clause_; } // bool group_distinct = 7 [json_name = "groupDistinct"]; inline void SelectStmt::clear_group_distinct() { _impl_.group_distinct_ = false; } inline bool SelectStmt::_internal_group_distinct() const { return _impl_.group_distinct_; } inline bool SelectStmt::group_distinct() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.group_distinct) return _internal_group_distinct(); } inline void SelectStmt::_internal_set_group_distinct(bool value) { _impl_.group_distinct_ = value; } inline void SelectStmt::set_group_distinct(bool value) { _internal_set_group_distinct(value); // @@protoc_insertion_point(field_set:pg_query.SelectStmt.group_distinct) } // .pg_query.Node having_clause = 8 [json_name = "havingClause"]; inline bool SelectStmt::_internal_has_having_clause() const { return this != internal_default_instance() && _impl_.having_clause_ != nullptr; } inline bool SelectStmt::has_having_clause() const { return _internal_has_having_clause(); } inline void SelectStmt::clear_having_clause() { if (GetArenaForAllocation() == nullptr && _impl_.having_clause_ != nullptr) { delete _impl_.having_clause_; } _impl_.having_clause_ = nullptr; } inline const ::pg_query::Node& SelectStmt::_internal_having_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.having_clause) return _internal_having_clause(); } inline void SelectStmt::unsafe_arena_set_allocated_having_clause( ::pg_query::Node* having_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.having_clause_); } _impl_.having_clause_ = having_clause; if (having_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.having_clause) } inline ::pg_query::Node* SelectStmt::release_having_clause() { ::pg_query::Node* temp = _impl_.having_clause_; _impl_.having_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SelectStmt::unsafe_arena_release_having_clause() { // @@protoc_insertion_point(field_release:pg_query.SelectStmt.having_clause) ::pg_query::Node* temp = _impl_.having_clause_; _impl_.having_clause_ = nullptr; return temp; } inline ::pg_query::Node* SelectStmt::_internal_mutable_having_clause() { if (_impl_.having_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.having_clause_ = p; } return _impl_.having_clause_; } inline ::pg_query::Node* SelectStmt::mutable_having_clause() { ::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* having_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.having_clause_; } if (having_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(having_clause); if (message_arena != submessage_arena) { having_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, having_clause, submessage_arena); } } else { } _impl_.having_clause_ = having_clause; // @@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 _impl_.window_clause_.size(); } inline int SelectStmt::window_clause_size() const { return _internal_window_clause_size(); } inline void SelectStmt::clear_window_clause() { _impl_.window_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_window_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.window_clause) return _impl_.window_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SelectStmt::mutable_window_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.window_clause) return &_impl_.window_clause_; } inline const ::pg_query::Node& SelectStmt::_internal_window_clause(int index) const { return _impl_.window_clause_.Get(index); } inline const ::pg_query::Node& SelectStmt::window_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.window_clause) return _internal_window_clause(index); } inline ::pg_query::Node* SelectStmt::_internal_add_window_clause() { return _impl_.window_clause_.Add(); } inline ::pg_query::Node* SelectStmt::add_window_clause() { ::pg_query::Node* _add = _internal_add_window_clause(); // @@protoc_insertion_point(field_add:pg_query.SelectStmt.window_clause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SelectStmt::window_clause() const { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.window_clause) return _impl_.window_clause_; } // repeated .pg_query.Node values_lists = 10 [json_name = "valuesLists"]; inline int SelectStmt::_internal_values_lists_size() const { return _impl_.values_lists_.size(); } inline int SelectStmt::values_lists_size() const { return _internal_values_lists_size(); } inline void SelectStmt::clear_values_lists() { _impl_.values_lists_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_values_lists(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.values_lists) return _impl_.values_lists_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SelectStmt::mutable_values_lists() { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.values_lists) return &_impl_.values_lists_; } inline const ::pg_query::Node& SelectStmt::_internal_values_lists(int index) const { return _impl_.values_lists_.Get(index); } inline const ::pg_query::Node& SelectStmt::values_lists(int index) const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.values_lists) return _internal_values_lists(index); } inline ::pg_query::Node* SelectStmt::_internal_add_values_lists() { return _impl_.values_lists_.Add(); } inline ::pg_query::Node* SelectStmt::add_values_lists() { ::pg_query::Node* _add = _internal_add_values_lists(); // @@protoc_insertion_point(field_add:pg_query.SelectStmt.values_lists) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SelectStmt::values_lists() const { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.values_lists) return _impl_.values_lists_; } // repeated .pg_query.Node sort_clause = 11 [json_name = "sortClause"]; inline int SelectStmt::_internal_sort_clause_size() const { return _impl_.sort_clause_.size(); } inline int SelectStmt::sort_clause_size() const { return _internal_sort_clause_size(); } inline void SelectStmt::clear_sort_clause() { _impl_.sort_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_sort_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.sort_clause) return _impl_.sort_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SelectStmt::mutable_sort_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.sort_clause) return &_impl_.sort_clause_; } inline const ::pg_query::Node& SelectStmt::_internal_sort_clause(int index) const { return _impl_.sort_clause_.Get(index); } inline const ::pg_query::Node& SelectStmt::sort_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.sort_clause) return _internal_sort_clause(index); } inline ::pg_query::Node* SelectStmt::_internal_add_sort_clause() { return _impl_.sort_clause_.Add(); } inline ::pg_query::Node* SelectStmt::add_sort_clause() { ::pg_query::Node* _add = _internal_add_sort_clause(); // @@protoc_insertion_point(field_add:pg_query.SelectStmt.sort_clause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SelectStmt::sort_clause() const { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.sort_clause) return _impl_.sort_clause_; } // .pg_query.Node limit_offset = 12 [json_name = "limitOffset"]; inline bool SelectStmt::_internal_has_limit_offset() const { return this != internal_default_instance() && _impl_.limit_offset_ != nullptr; } inline bool SelectStmt::has_limit_offset() const { return _internal_has_limit_offset(); } inline void SelectStmt::clear_limit_offset() { if (GetArenaForAllocation() == nullptr && _impl_.limit_offset_ != nullptr) { delete _impl_.limit_offset_; } _impl_.limit_offset_ = nullptr; } inline const ::pg_query::Node& SelectStmt::_internal_limit_offset() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.limit_offset) return _internal_limit_offset(); } inline void SelectStmt::unsafe_arena_set_allocated_limit_offset( ::pg_query::Node* limit_offset) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.limit_offset_); } _impl_.limit_offset_ = limit_offset; if (limit_offset) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.limit_offset) } inline ::pg_query::Node* SelectStmt::release_limit_offset() { ::pg_query::Node* temp = _impl_.limit_offset_; _impl_.limit_offset_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SelectStmt::unsafe_arena_release_limit_offset() { // @@protoc_insertion_point(field_release:pg_query.SelectStmt.limit_offset) ::pg_query::Node* temp = _impl_.limit_offset_; _impl_.limit_offset_ = nullptr; return temp; } inline ::pg_query::Node* SelectStmt::_internal_mutable_limit_offset() { if (_impl_.limit_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.limit_offset_ = p; } return _impl_.limit_offset_; } inline ::pg_query::Node* SelectStmt::mutable_limit_offset() { ::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* limit_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.limit_offset_; } if (limit_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(limit_offset); if (message_arena != submessage_arena) { limit_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, limit_offset, submessage_arena); } } else { } _impl_.limit_offset_ = limit_offset; // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.limit_offset) } // .pg_query.Node limit_count = 13 [json_name = "limitCount"]; inline bool SelectStmt::_internal_has_limit_count() const { return this != internal_default_instance() && _impl_.limit_count_ != nullptr; } inline bool SelectStmt::has_limit_count() const { return _internal_has_limit_count(); } inline void SelectStmt::clear_limit_count() { if (GetArenaForAllocation() == nullptr && _impl_.limit_count_ != nullptr) { delete _impl_.limit_count_; } _impl_.limit_count_ = nullptr; } inline const ::pg_query::Node& SelectStmt::_internal_limit_count() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.limit_count) return _internal_limit_count(); } inline void SelectStmt::unsafe_arena_set_allocated_limit_count( ::pg_query::Node* limit_count) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.limit_count_); } _impl_.limit_count_ = limit_count; if (limit_count) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.limit_count) } inline ::pg_query::Node* SelectStmt::release_limit_count() { ::pg_query::Node* temp = _impl_.limit_count_; _impl_.limit_count_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SelectStmt::unsafe_arena_release_limit_count() { // @@protoc_insertion_point(field_release:pg_query.SelectStmt.limit_count) ::pg_query::Node* temp = _impl_.limit_count_; _impl_.limit_count_ = nullptr; return temp; } inline ::pg_query::Node* SelectStmt::_internal_mutable_limit_count() { if (_impl_.limit_count_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.limit_count_ = p; } return _impl_.limit_count_; } inline ::pg_query::Node* SelectStmt::mutable_limit_count() { ::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* limit_count) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.limit_count_; } if (limit_count) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(limit_count); if (message_arena != submessage_arena) { limit_count = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, limit_count, submessage_arena); } } else { } _impl_.limit_count_ = limit_count; // @@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() { _impl_.limit_option_ = 0; } inline ::pg_query::LimitOption SelectStmt::_internal_limit_option() const { return static_cast< ::pg_query::LimitOption >(_impl_.limit_option_); } inline ::pg_query::LimitOption SelectStmt::limit_option() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.limit_option) return _internal_limit_option(); } inline void SelectStmt::_internal_set_limit_option(::pg_query::LimitOption value) { _impl_.limit_option_ = value; } inline void SelectStmt::set_limit_option(::pg_query::LimitOption value) { _internal_set_limit_option(value); // @@protoc_insertion_point(field_set:pg_query.SelectStmt.limit_option) } // repeated .pg_query.Node locking_clause = 15 [json_name = "lockingClause"]; inline int SelectStmt::_internal_locking_clause_size() const { return _impl_.locking_clause_.size(); } inline int SelectStmt::locking_clause_size() const { return _internal_locking_clause_size(); } inline void SelectStmt::clear_locking_clause() { _impl_.locking_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_locking_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.locking_clause) return _impl_.locking_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SelectStmt::mutable_locking_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.locking_clause) return &_impl_.locking_clause_; } inline const ::pg_query::Node& SelectStmt::_internal_locking_clause(int index) const { return _impl_.locking_clause_.Get(index); } inline const ::pg_query::Node& SelectStmt::locking_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.locking_clause) return _internal_locking_clause(index); } inline ::pg_query::Node* SelectStmt::_internal_add_locking_clause() { return _impl_.locking_clause_.Add(); } inline ::pg_query::Node* SelectStmt::add_locking_clause() { ::pg_query::Node* _add = _internal_add_locking_clause(); // @@protoc_insertion_point(field_add:pg_query.SelectStmt.locking_clause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SelectStmt::locking_clause() const { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.locking_clause) return _impl_.locking_clause_; } // .pg_query.WithClause with_clause = 16 [json_name = "withClause"]; inline bool SelectStmt::_internal_has_with_clause() const { return this != internal_default_instance() && _impl_.with_clause_ != nullptr; } inline bool SelectStmt::has_with_clause() const { return _internal_has_with_clause(); } inline void SelectStmt::clear_with_clause() { if (GetArenaForAllocation() == nullptr && _impl_.with_clause_ != nullptr) { delete _impl_.with_clause_; } _impl_.with_clause_ = nullptr; } inline const ::pg_query::WithClause& SelectStmt::_internal_with_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.with_clause) return _internal_with_clause(); } inline void SelectStmt::unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.with_clause_); } _impl_.with_clause_ = with_clause; if (with_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.with_clause) } inline ::pg_query::WithClause* SelectStmt::release_with_clause() { ::pg_query::WithClause* temp = _impl_.with_clause_; _impl_.with_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::WithClause* SelectStmt::unsafe_arena_release_with_clause() { // @@protoc_insertion_point(field_release:pg_query.SelectStmt.with_clause) ::pg_query::WithClause* temp = _impl_.with_clause_; _impl_.with_clause_ = nullptr; return temp; } inline ::pg_query::WithClause* SelectStmt::_internal_mutable_with_clause() { if (_impl_.with_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArenaForAllocation()); _impl_.with_clause_ = p; } return _impl_.with_clause_; } inline ::pg_query::WithClause* SelectStmt::mutable_with_clause() { ::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* with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.with_clause_; } if (with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(with_clause); if (message_arena != submessage_arena) { with_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, with_clause, submessage_arena); } } else { } _impl_.with_clause_ = with_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.with_clause) } // .pg_query.SetOperation op = 17 [json_name = "op"]; inline void SelectStmt::clear_op() { _impl_.op_ = 0; } inline ::pg_query::SetOperation SelectStmt::_internal_op() const { return static_cast< ::pg_query::SetOperation >(_impl_.op_); } inline ::pg_query::SetOperation SelectStmt::op() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.op) return _internal_op(); } inline void SelectStmt::_internal_set_op(::pg_query::SetOperation value) { _impl_.op_ = value; } inline void SelectStmt::set_op(::pg_query::SetOperation value) { _internal_set_op(value); // @@protoc_insertion_point(field_set:pg_query.SelectStmt.op) } // bool all = 18 [json_name = "all"]; inline void SelectStmt::clear_all() { _impl_.all_ = false; } inline bool SelectStmt::_internal_all() const { return _impl_.all_; } inline bool SelectStmt::all() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.all) return _internal_all(); } inline void SelectStmt::_internal_set_all(bool value) { _impl_.all_ = value; } inline void SelectStmt::set_all(bool value) { _internal_set_all(value); // @@protoc_insertion_point(field_set:pg_query.SelectStmt.all) } // .pg_query.SelectStmt larg = 19 [json_name = "larg"]; inline bool SelectStmt::_internal_has_larg() const { return this != internal_default_instance() && _impl_.larg_ != nullptr; } inline bool SelectStmt::has_larg() const { return _internal_has_larg(); } inline void SelectStmt::clear_larg() { if (GetArenaForAllocation() == nullptr && _impl_.larg_ != nullptr) { delete _impl_.larg_; } _impl_.larg_ = nullptr; } inline const ::pg_query::SelectStmt& SelectStmt::_internal_larg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.larg) return _internal_larg(); } inline void SelectStmt::unsafe_arena_set_allocated_larg( ::pg_query::SelectStmt* larg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.larg_); } _impl_.larg_ = larg; if (larg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.larg) } inline ::pg_query::SelectStmt* SelectStmt::release_larg() { ::pg_query::SelectStmt* temp = _impl_.larg_; _impl_.larg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::SelectStmt* SelectStmt::unsafe_arena_release_larg() { // @@protoc_insertion_point(field_release:pg_query.SelectStmt.larg) ::pg_query::SelectStmt* temp = _impl_.larg_; _impl_.larg_ = nullptr; return temp; } inline ::pg_query::SelectStmt* SelectStmt::_internal_mutable_larg() { if (_impl_.larg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::SelectStmt>(GetArenaForAllocation()); _impl_.larg_ = p; } return _impl_.larg_; } inline ::pg_query::SelectStmt* SelectStmt::mutable_larg() { ::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* larg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.larg_; } if (larg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(larg); if (message_arena != submessage_arena) { larg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, larg, submessage_arena); } } else { } _impl_.larg_ = larg; // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.larg) } // .pg_query.SelectStmt rarg = 20 [json_name = "rarg"]; inline bool SelectStmt::_internal_has_rarg() const { return this != internal_default_instance() && _impl_.rarg_ != nullptr; } inline bool SelectStmt::has_rarg() const { return _internal_has_rarg(); } inline void SelectStmt::clear_rarg() { if (GetArenaForAllocation() == nullptr && _impl_.rarg_ != nullptr) { delete _impl_.rarg_; } _impl_.rarg_ = nullptr; } inline const ::pg_query::SelectStmt& SelectStmt::_internal_rarg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.rarg) return _internal_rarg(); } inline void SelectStmt::unsafe_arena_set_allocated_rarg( ::pg_query::SelectStmt* rarg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.rarg_); } _impl_.rarg_ = rarg; if (rarg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.rarg) } inline ::pg_query::SelectStmt* SelectStmt::release_rarg() { ::pg_query::SelectStmt* temp = _impl_.rarg_; _impl_.rarg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::SelectStmt* SelectStmt::unsafe_arena_release_rarg() { // @@protoc_insertion_point(field_release:pg_query.SelectStmt.rarg) ::pg_query::SelectStmt* temp = _impl_.rarg_; _impl_.rarg_ = nullptr; return temp; } inline ::pg_query::SelectStmt* SelectStmt::_internal_mutable_rarg() { if (_impl_.rarg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::SelectStmt>(GetArenaForAllocation()); _impl_.rarg_ = p; } return _impl_.rarg_; } inline ::pg_query::SelectStmt* SelectStmt::mutable_rarg() { ::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* rarg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.rarg_; } if (rarg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(rarg); if (message_arena != submessage_arena) { rarg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, rarg, submessage_arena); } } else { } _impl_.rarg_ = rarg; // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.rarg) } // ------------------------------------------------------------------- // ReturnStmt // .pg_query.Node returnval = 1 [json_name = "returnval"]; inline bool ReturnStmt::_internal_has_returnval() const { return this != internal_default_instance() && _impl_.returnval_ != nullptr; } inline bool ReturnStmt::has_returnval() const { return _internal_has_returnval(); } inline void ReturnStmt::clear_returnval() { if (GetArenaForAllocation() == nullptr && _impl_.returnval_ != nullptr) { delete _impl_.returnval_; } _impl_.returnval_ = nullptr; } inline const ::pg_query::Node& ReturnStmt::_internal_returnval() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ReturnStmt.returnval) return _internal_returnval(); } inline void ReturnStmt::unsafe_arena_set_allocated_returnval( ::pg_query::Node* returnval) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.returnval_); } _impl_.returnval_ = returnval; if (returnval) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ReturnStmt.returnval) } inline ::pg_query::Node* ReturnStmt::release_returnval() { ::pg_query::Node* temp = _impl_.returnval_; _impl_.returnval_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* ReturnStmt::unsafe_arena_release_returnval() { // @@protoc_insertion_point(field_release:pg_query.ReturnStmt.returnval) ::pg_query::Node* temp = _impl_.returnval_; _impl_.returnval_ = nullptr; return temp; } inline ::pg_query::Node* ReturnStmt::_internal_mutable_returnval() { if (_impl_.returnval_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.returnval_ = p; } return _impl_.returnval_; } inline ::pg_query::Node* ReturnStmt::mutable_returnval() { ::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* returnval) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.returnval_; } if (returnval) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(returnval); if (message_arena != submessage_arena) { returnval = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, returnval, submessage_arena); } } else { } _impl_.returnval_ = returnval; // @@protoc_insertion_point(field_set_allocated:pg_query.ReturnStmt.returnval) } // ------------------------------------------------------------------- // PLAssignStmt // string name = 1 [json_name = "name"]; inline void PLAssignStmt::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& PLAssignStmt::name() const { // @@protoc_insertion_point(field_get:pg_query.PLAssignStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void PLAssignStmt::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.PLAssignStmt.name) } inline std::string* PLAssignStmt::mutable_name() { 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 { return _impl_.name_.Get(); } inline void PLAssignStmt::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* PLAssignStmt::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* PLAssignStmt::release_name() { // @@protoc_insertion_point(field_release:pg_query.PLAssignStmt.name) return _impl_.name_.Release(); } inline void PLAssignStmt::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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 _impl_.indirection_.size(); } inline int PLAssignStmt::indirection_size() const { return _internal_indirection_size(); } inline void PLAssignStmt::clear_indirection() { _impl_.indirection_.Clear(); } inline ::pg_query::Node* PLAssignStmt::mutable_indirection(int index) { // @@protoc_insertion_point(field_mutable:pg_query.PLAssignStmt.indirection) return _impl_.indirection_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* PLAssignStmt::mutable_indirection() { // @@protoc_insertion_point(field_mutable_list:pg_query.PLAssignStmt.indirection) return &_impl_.indirection_; } inline const ::pg_query::Node& PLAssignStmt::_internal_indirection(int index) const { return _impl_.indirection_.Get(index); } inline const ::pg_query::Node& PLAssignStmt::indirection(int index) const { // @@protoc_insertion_point(field_get:pg_query.PLAssignStmt.indirection) return _internal_indirection(index); } inline ::pg_query::Node* PLAssignStmt::_internal_add_indirection() { return _impl_.indirection_.Add(); } inline ::pg_query::Node* PLAssignStmt::add_indirection() { ::pg_query::Node* _add = _internal_add_indirection(); // @@protoc_insertion_point(field_add:pg_query.PLAssignStmt.indirection) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& PLAssignStmt::indirection() const { // @@protoc_insertion_point(field_list:pg_query.PLAssignStmt.indirection) return _impl_.indirection_; } // int32 nnames = 3 [json_name = "nnames"]; inline void PLAssignStmt::clear_nnames() { _impl_.nnames_ = 0; } inline int32_t PLAssignStmt::_internal_nnames() const { return _impl_.nnames_; } inline int32_t PLAssignStmt::nnames() const { // @@protoc_insertion_point(field_get:pg_query.PLAssignStmt.nnames) return _internal_nnames(); } inline void PLAssignStmt::_internal_set_nnames(int32_t value) { _impl_.nnames_ = value; } inline void PLAssignStmt::set_nnames(int32_t value) { _internal_set_nnames(value); // @@protoc_insertion_point(field_set:pg_query.PLAssignStmt.nnames) } // .pg_query.SelectStmt val = 4 [json_name = "val"]; inline bool PLAssignStmt::_internal_has_val() const { return this != internal_default_instance() && _impl_.val_ != nullptr; } inline bool PLAssignStmt::has_val() const { return _internal_has_val(); } inline void PLAssignStmt::clear_val() { if (GetArenaForAllocation() == nullptr && _impl_.val_ != nullptr) { delete _impl_.val_; } _impl_.val_ = nullptr; } inline const ::pg_query::SelectStmt& PLAssignStmt::_internal_val() const { 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 { // @@protoc_insertion_point(field_get:pg_query.PLAssignStmt.val) return _internal_val(); } inline void PLAssignStmt::unsafe_arena_set_allocated_val( ::pg_query::SelectStmt* val) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.val_); } _impl_.val_ = val; if (val) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PLAssignStmt.val) } inline ::pg_query::SelectStmt* PLAssignStmt::release_val() { ::pg_query::SelectStmt* temp = _impl_.val_; _impl_.val_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::SelectStmt* PLAssignStmt::unsafe_arena_release_val() { // @@protoc_insertion_point(field_release:pg_query.PLAssignStmt.val) ::pg_query::SelectStmt* temp = _impl_.val_; _impl_.val_ = nullptr; return temp; } inline ::pg_query::SelectStmt* PLAssignStmt::_internal_mutable_val() { if (_impl_.val_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::SelectStmt>(GetArenaForAllocation()); _impl_.val_ = p; } return _impl_.val_; } inline ::pg_query::SelectStmt* PLAssignStmt::mutable_val() { ::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* val) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.val_; } if (val) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(val); if (message_arena != submessage_arena) { val = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, val, submessage_arena); } } else { } _impl_.val_ = val; // @@protoc_insertion_point(field_set_allocated:pg_query.PLAssignStmt.val) } // int32 location = 5 [json_name = "location"]; inline void PLAssignStmt::clear_location() { _impl_.location_ = 0; } inline int32_t PLAssignStmt::_internal_location() const { return _impl_.location_; } inline int32_t PLAssignStmt::location() const { // @@protoc_insertion_point(field_get:pg_query.PLAssignStmt.location) return _internal_location(); } inline void PLAssignStmt::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void PLAssignStmt::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.PLAssignStmt.location) } // ------------------------------------------------------------------- // AlterTableStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool AlterTableStmt::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool AlterTableStmt::has_relation() const { return _internal_has_relation(); } inline void AlterTableStmt::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& AlterTableStmt::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterTableStmt.relation) return _internal_relation(); } inline void AlterTableStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterTableStmt.relation) } inline ::pg_query::RangeVar* AlterTableStmt::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* AlterTableStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.AlterTableStmt.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterTableStmt::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* AlterTableStmt::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableStmt.relation) } // repeated .pg_query.Node cmds = 2 [json_name = "cmds"]; inline int AlterTableStmt::_internal_cmds_size() const { return _impl_.cmds_.size(); } inline int AlterTableStmt::cmds_size() const { return _internal_cmds_size(); } inline void AlterTableStmt::clear_cmds() { _impl_.cmds_.Clear(); } inline ::pg_query::Node* AlterTableStmt::mutable_cmds(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTableStmt.cmds) return _impl_.cmds_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTableStmt::mutable_cmds() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTableStmt.cmds) return &_impl_.cmds_; } inline const ::pg_query::Node& AlterTableStmt::_internal_cmds(int index) const { return _impl_.cmds_.Get(index); } inline const ::pg_query::Node& AlterTableStmt::cmds(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTableStmt.cmds) return _internal_cmds(index); } inline ::pg_query::Node* AlterTableStmt::_internal_add_cmds() { return _impl_.cmds_.Add(); } inline ::pg_query::Node* AlterTableStmt::add_cmds() { ::pg_query::Node* _add = _internal_add_cmds(); // @@protoc_insertion_point(field_add:pg_query.AlterTableStmt.cmds) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTableStmt::cmds() const { // @@protoc_insertion_point(field_list:pg_query.AlterTableStmt.cmds) return _impl_.cmds_; } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; inline void AlterTableStmt::clear_objtype() { _impl_.objtype_ = 0; } inline ::pg_query::ObjectType AlterTableStmt::_internal_objtype() const { return static_cast< ::pg_query::ObjectType >(_impl_.objtype_); } inline ::pg_query::ObjectType AlterTableStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableStmt.objtype) return _internal_objtype(); } inline void AlterTableStmt::_internal_set_objtype(::pg_query::ObjectType value) { _impl_.objtype_ = value; } inline void AlterTableStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableStmt.objtype) } // bool missing_ok = 4 [json_name = "missing_ok"]; inline void AlterTableStmt::clear_missing_ok() { _impl_.missing_ok_ = false; } inline bool AlterTableStmt::_internal_missing_ok() const { return _impl_.missing_ok_; } inline bool AlterTableStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableStmt.missing_ok) return _internal_missing_ok(); } inline void AlterTableStmt::_internal_set_missing_ok(bool value) { _impl_.missing_ok_ = value; } inline void AlterTableStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableStmt.missing_ok) } // ------------------------------------------------------------------- // AlterTableCmd // .pg_query.AlterTableType subtype = 1 [json_name = "subtype"]; inline void AlterTableCmd::clear_subtype() { _impl_.subtype_ = 0; } inline ::pg_query::AlterTableType AlterTableCmd::_internal_subtype() const { return static_cast< ::pg_query::AlterTableType >(_impl_.subtype_); } inline ::pg_query::AlterTableType AlterTableCmd::subtype() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.subtype) return _internal_subtype(); } inline void AlterTableCmd::_internal_set_subtype(::pg_query::AlterTableType value) { _impl_.subtype_ = value; } inline void AlterTableCmd::set_subtype(::pg_query::AlterTableType value) { _internal_set_subtype(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.subtype) } // string name = 2 [json_name = "name"]; inline void AlterTableCmd::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& AlterTableCmd::name() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void AlterTableCmd::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.name) } inline std::string* AlterTableCmd::mutable_name() { 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 { return _impl_.name_.Get(); } inline void AlterTableCmd::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* AlterTableCmd::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* AlterTableCmd::release_name() { // @@protoc_insertion_point(field_release:pg_query.AlterTableCmd.name) return _impl_.name_.Release(); } inline void AlterTableCmd::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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() { _impl_.num_ = 0; } inline int32_t AlterTableCmd::_internal_num() const { return _impl_.num_; } inline int32_t AlterTableCmd::num() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.num) return _internal_num(); } inline void AlterTableCmd::_internal_set_num(int32_t value) { _impl_.num_ = value; } inline void AlterTableCmd::set_num(int32_t value) { _internal_set_num(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.num) } // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; inline bool AlterTableCmd::_internal_has_newowner() const { return this != internal_default_instance() && _impl_.newowner_ != nullptr; } inline bool AlterTableCmd::has_newowner() const { return _internal_has_newowner(); } inline void AlterTableCmd::clear_newowner() { if (GetArenaForAllocation() == nullptr && _impl_.newowner_ != nullptr) { delete _impl_.newowner_; } _impl_.newowner_ = nullptr; } inline const ::pg_query::RoleSpec& AlterTableCmd::_internal_newowner() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.newowner) return _internal_newowner(); } inline void AlterTableCmd::unsafe_arena_set_allocated_newowner( ::pg_query::RoleSpec* newowner) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.newowner_); } _impl_.newowner_ = newowner; if (newowner) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterTableCmd.newowner) } inline ::pg_query::RoleSpec* AlterTableCmd::release_newowner() { ::pg_query::RoleSpec* temp = _impl_.newowner_; _impl_.newowner_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RoleSpec* AlterTableCmd::unsafe_arena_release_newowner() { // @@protoc_insertion_point(field_release:pg_query.AlterTableCmd.newowner) ::pg_query::RoleSpec* temp = _impl_.newowner_; _impl_.newowner_ = nullptr; return temp; } inline ::pg_query::RoleSpec* AlterTableCmd::_internal_mutable_newowner() { if (_impl_.newowner_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArenaForAllocation()); _impl_.newowner_ = p; } return _impl_.newowner_; } inline ::pg_query::RoleSpec* AlterTableCmd::mutable_newowner() { ::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* newowner) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.newowner_; } if (newowner) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(newowner); if (message_arena != submessage_arena) { newowner = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, newowner, submessage_arena); } } else { } _impl_.newowner_ = newowner; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableCmd.newowner) } // .pg_query.Node def = 5 [json_name = "def"]; inline bool AlterTableCmd::_internal_has_def() const { return this != internal_default_instance() && _impl_.def_ != nullptr; } inline bool AlterTableCmd::has_def() const { return _internal_has_def(); } inline void AlterTableCmd::clear_def() { if (GetArenaForAllocation() == nullptr && _impl_.def_ != nullptr) { delete _impl_.def_; } _impl_.def_ = nullptr; } inline const ::pg_query::Node& AlterTableCmd::_internal_def() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.def) return _internal_def(); } inline void AlterTableCmd::unsafe_arena_set_allocated_def( ::pg_query::Node* def) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.def_); } _impl_.def_ = def; if (def) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterTableCmd.def) } inline ::pg_query::Node* AlterTableCmd::release_def() { ::pg_query::Node* temp = _impl_.def_; _impl_.def_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* AlterTableCmd::unsafe_arena_release_def() { // @@protoc_insertion_point(field_release:pg_query.AlterTableCmd.def) ::pg_query::Node* temp = _impl_.def_; _impl_.def_ = nullptr; return temp; } inline ::pg_query::Node* AlterTableCmd::_internal_mutable_def() { if (_impl_.def_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.def_ = p; } return _impl_.def_; } inline ::pg_query::Node* AlterTableCmd::mutable_def() { ::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* def) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.def_; } if (def) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(def); if (message_arena != submessage_arena) { def = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, def, submessage_arena); } } else { } _impl_.def_ = def; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableCmd.def) } // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; inline void AlterTableCmd::clear_behavior() { _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior AlterTableCmd::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(_impl_.behavior_); } inline ::pg_query::DropBehavior AlterTableCmd::behavior() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.behavior) return _internal_behavior(); } inline void AlterTableCmd::_internal_set_behavior(::pg_query::DropBehavior value) { _impl_.behavior_ = value; } inline void AlterTableCmd::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.behavior) } // bool missing_ok = 7 [json_name = "missing_ok"]; inline void AlterTableCmd::clear_missing_ok() { _impl_.missing_ok_ = false; } inline bool AlterTableCmd::_internal_missing_ok() const { return _impl_.missing_ok_; } inline bool AlterTableCmd::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.missing_ok) return _internal_missing_ok(); } inline void AlterTableCmd::_internal_set_missing_ok(bool value) { _impl_.missing_ok_ = value; } inline void AlterTableCmd::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.missing_ok) } // bool recurse = 8 [json_name = "recurse"]; inline void AlterTableCmd::clear_recurse() { _impl_.recurse_ = false; } inline bool AlterTableCmd::_internal_recurse() const { return _impl_.recurse_; } inline bool AlterTableCmd::recurse() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.recurse) return _internal_recurse(); } inline void AlterTableCmd::_internal_set_recurse(bool value) { _impl_.recurse_ = value; } inline void AlterTableCmd::set_recurse(bool value) { _internal_set_recurse(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.recurse) } // ------------------------------------------------------------------- // AlterDomainStmt // string subtype = 1 [json_name = "subtype"]; inline void AlterDomainStmt::clear_subtype() { _impl_.subtype_.ClearToEmpty(); } inline const std::string& AlterDomainStmt::subtype() const { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.subtype) return _internal_subtype(); } template inline PROTOBUF_ALWAYS_INLINE void AlterDomainStmt::set_subtype(ArgT0&& arg0, ArgT... args) { _impl_.subtype_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterDomainStmt.subtype) } inline std::string* AlterDomainStmt::mutable_subtype() { 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 { return _impl_.subtype_.Get(); } inline void AlterDomainStmt::_internal_set_subtype(const std::string& value) { _impl_.subtype_.Set(value, GetArenaForAllocation()); } inline std::string* AlterDomainStmt::_internal_mutable_subtype() { return _impl_.subtype_.Mutable(GetArenaForAllocation()); } inline std::string* AlterDomainStmt::release_subtype() { // @@protoc_insertion_point(field_release:pg_query.AlterDomainStmt.subtype) return _impl_.subtype_.Release(); } inline void AlterDomainStmt::set_allocated_subtype(std::string* subtype) { if (subtype != nullptr) { } else { } _impl_.subtype_.SetAllocated(subtype, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.subtype_.IsDefault()) { _impl_.subtype_.Set("", GetArenaForAllocation()); } #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 _impl_.type_name_.size(); } inline int AlterDomainStmt::type_name_size() const { return _internal_type_name_size(); } inline void AlterDomainStmt::clear_type_name() { _impl_.type_name_.Clear(); } inline ::pg_query::Node* AlterDomainStmt::mutable_type_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterDomainStmt.type_name) return _impl_.type_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterDomainStmt::mutable_type_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterDomainStmt.type_name) return &_impl_.type_name_; } inline const ::pg_query::Node& AlterDomainStmt::_internal_type_name(int index) const { return _impl_.type_name_.Get(index); } inline const ::pg_query::Node& AlterDomainStmt::type_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.type_name) return _internal_type_name(index); } inline ::pg_query::Node* AlterDomainStmt::_internal_add_type_name() { return _impl_.type_name_.Add(); } inline ::pg_query::Node* AlterDomainStmt::add_type_name() { ::pg_query::Node* _add = _internal_add_type_name(); // @@protoc_insertion_point(field_add:pg_query.AlterDomainStmt.type_name) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterDomainStmt::type_name() const { // @@protoc_insertion_point(field_list:pg_query.AlterDomainStmt.type_name) return _impl_.type_name_; } // string name = 3 [json_name = "name"]; inline void AlterDomainStmt::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& AlterDomainStmt::name() const { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void AlterDomainStmt::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterDomainStmt.name) } inline std::string* AlterDomainStmt::mutable_name() { 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 { return _impl_.name_.Get(); } inline void AlterDomainStmt::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* AlterDomainStmt::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* AlterDomainStmt::release_name() { // @@protoc_insertion_point(field_release:pg_query.AlterDomainStmt.name) return _impl_.name_.Release(); } inline void AlterDomainStmt::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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::_internal_has_def() const { return this != internal_default_instance() && _impl_.def_ != nullptr; } inline bool AlterDomainStmt::has_def() const { return _internal_has_def(); } inline void AlterDomainStmt::clear_def() { if (GetArenaForAllocation() == nullptr && _impl_.def_ != nullptr) { delete _impl_.def_; } _impl_.def_ = nullptr; } inline const ::pg_query::Node& AlterDomainStmt::_internal_def() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.def) return _internal_def(); } inline void AlterDomainStmt::unsafe_arena_set_allocated_def( ::pg_query::Node* def) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.def_); } _impl_.def_ = def; if (def) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterDomainStmt.def) } inline ::pg_query::Node* AlterDomainStmt::release_def() { ::pg_query::Node* temp = _impl_.def_; _impl_.def_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* AlterDomainStmt::unsafe_arena_release_def() { // @@protoc_insertion_point(field_release:pg_query.AlterDomainStmt.def) ::pg_query::Node* temp = _impl_.def_; _impl_.def_ = nullptr; return temp; } inline ::pg_query::Node* AlterDomainStmt::_internal_mutable_def() { if (_impl_.def_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.def_ = p; } return _impl_.def_; } inline ::pg_query::Node* AlterDomainStmt::mutable_def() { ::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* def) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.def_; } if (def) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(def); if (message_arena != submessage_arena) { def = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, def, submessage_arena); } } else { } _impl_.def_ = def; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDomainStmt.def) } // .pg_query.DropBehavior behavior = 5 [json_name = "behavior"]; inline void AlterDomainStmt::clear_behavior() { _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior AlterDomainStmt::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(_impl_.behavior_); } inline ::pg_query::DropBehavior AlterDomainStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.behavior) return _internal_behavior(); } inline void AlterDomainStmt::_internal_set_behavior(::pg_query::DropBehavior value) { _impl_.behavior_ = value; } inline void AlterDomainStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.AlterDomainStmt.behavior) } // bool missing_ok = 6 [json_name = "missing_ok"]; inline void AlterDomainStmt::clear_missing_ok() { _impl_.missing_ok_ = false; } inline bool AlterDomainStmt::_internal_missing_ok() const { return _impl_.missing_ok_; } inline bool AlterDomainStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.missing_ok) return _internal_missing_ok(); } inline void AlterDomainStmt::_internal_set_missing_ok(bool value) { _impl_.missing_ok_ = value; } inline void AlterDomainStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterDomainStmt.missing_ok) } // ------------------------------------------------------------------- // SetOperationStmt // .pg_query.SetOperation op = 1 [json_name = "op"]; inline void SetOperationStmt::clear_op() { _impl_.op_ = 0; } inline ::pg_query::SetOperation SetOperationStmt::_internal_op() const { return static_cast< ::pg_query::SetOperation >(_impl_.op_); } inline ::pg_query::SetOperation SetOperationStmt::op() const { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.op) return _internal_op(); } inline void SetOperationStmt::_internal_set_op(::pg_query::SetOperation value) { _impl_.op_ = value; } inline void SetOperationStmt::set_op(::pg_query::SetOperation value) { _internal_set_op(value); // @@protoc_insertion_point(field_set:pg_query.SetOperationStmt.op) } // bool all = 2 [json_name = "all"]; inline void SetOperationStmt::clear_all() { _impl_.all_ = false; } inline bool SetOperationStmt::_internal_all() const { return _impl_.all_; } inline bool SetOperationStmt::all() const { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.all) return _internal_all(); } inline void SetOperationStmt::_internal_set_all(bool value) { _impl_.all_ = value; } inline void SetOperationStmt::set_all(bool value) { _internal_set_all(value); // @@protoc_insertion_point(field_set:pg_query.SetOperationStmt.all) } // .pg_query.Node larg = 3 [json_name = "larg"]; inline bool SetOperationStmt::_internal_has_larg() const { return this != internal_default_instance() && _impl_.larg_ != nullptr; } inline bool SetOperationStmt::has_larg() const { return _internal_has_larg(); } inline void SetOperationStmt::clear_larg() { if (GetArenaForAllocation() == nullptr && _impl_.larg_ != nullptr) { delete _impl_.larg_; } _impl_.larg_ = nullptr; } inline const ::pg_query::Node& SetOperationStmt::_internal_larg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.larg) return _internal_larg(); } inline void SetOperationStmt::unsafe_arena_set_allocated_larg( ::pg_query::Node* larg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.larg_); } _impl_.larg_ = larg; if (larg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SetOperationStmt.larg) } inline ::pg_query::Node* SetOperationStmt::release_larg() { ::pg_query::Node* temp = _impl_.larg_; _impl_.larg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SetOperationStmt::unsafe_arena_release_larg() { // @@protoc_insertion_point(field_release:pg_query.SetOperationStmt.larg) ::pg_query::Node* temp = _impl_.larg_; _impl_.larg_ = nullptr; return temp; } inline ::pg_query::Node* SetOperationStmt::_internal_mutable_larg() { if (_impl_.larg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.larg_ = p; } return _impl_.larg_; } inline ::pg_query::Node* SetOperationStmt::mutable_larg() { ::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* larg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.larg_; } if (larg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(larg); if (message_arena != submessage_arena) { larg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, larg, submessage_arena); } } else { } _impl_.larg_ = larg; // @@protoc_insertion_point(field_set_allocated:pg_query.SetOperationStmt.larg) } // .pg_query.Node rarg = 4 [json_name = "rarg"]; inline bool SetOperationStmt::_internal_has_rarg() const { return this != internal_default_instance() && _impl_.rarg_ != nullptr; } inline bool SetOperationStmt::has_rarg() const { return _internal_has_rarg(); } inline void SetOperationStmt::clear_rarg() { if (GetArenaForAllocation() == nullptr && _impl_.rarg_ != nullptr) { delete _impl_.rarg_; } _impl_.rarg_ = nullptr; } inline const ::pg_query::Node& SetOperationStmt::_internal_rarg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.rarg) return _internal_rarg(); } inline void SetOperationStmt::unsafe_arena_set_allocated_rarg( ::pg_query::Node* rarg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.rarg_); } _impl_.rarg_ = rarg; if (rarg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SetOperationStmt.rarg) } inline ::pg_query::Node* SetOperationStmt::release_rarg() { ::pg_query::Node* temp = _impl_.rarg_; _impl_.rarg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SetOperationStmt::unsafe_arena_release_rarg() { // @@protoc_insertion_point(field_release:pg_query.SetOperationStmt.rarg) ::pg_query::Node* temp = _impl_.rarg_; _impl_.rarg_ = nullptr; return temp; } inline ::pg_query::Node* SetOperationStmt::_internal_mutable_rarg() { if (_impl_.rarg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.rarg_ = p; } return _impl_.rarg_; } inline ::pg_query::Node* SetOperationStmt::mutable_rarg() { ::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* rarg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.rarg_; } if (rarg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(rarg); if (message_arena != submessage_arena) { rarg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, rarg, submessage_arena); } } else { } _impl_.rarg_ = rarg; // @@protoc_insertion_point(field_set_allocated:pg_query.SetOperationStmt.rarg) } // repeated .pg_query.Node col_types = 5 [json_name = "colTypes"]; inline int SetOperationStmt::_internal_col_types_size() const { return _impl_.col_types_.size(); } inline int SetOperationStmt::col_types_size() const { return _internal_col_types_size(); } inline void SetOperationStmt::clear_col_types() { _impl_.col_types_.Clear(); } inline ::pg_query::Node* SetOperationStmt::mutable_col_types(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.col_types) return _impl_.col_types_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SetOperationStmt::mutable_col_types() { // @@protoc_insertion_point(field_mutable_list:pg_query.SetOperationStmt.col_types) return &_impl_.col_types_; } inline const ::pg_query::Node& SetOperationStmt::_internal_col_types(int index) const { return _impl_.col_types_.Get(index); } inline const ::pg_query::Node& SetOperationStmt::col_types(int index) const { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.col_types) return _internal_col_types(index); } inline ::pg_query::Node* SetOperationStmt::_internal_add_col_types() { return _impl_.col_types_.Add(); } inline ::pg_query::Node* SetOperationStmt::add_col_types() { ::pg_query::Node* _add = _internal_add_col_types(); // @@protoc_insertion_point(field_add:pg_query.SetOperationStmt.col_types) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SetOperationStmt::col_types() const { // @@protoc_insertion_point(field_list:pg_query.SetOperationStmt.col_types) return _impl_.col_types_; } // repeated .pg_query.Node col_typmods = 6 [json_name = "colTypmods"]; inline int SetOperationStmt::_internal_col_typmods_size() const { return _impl_.col_typmods_.size(); } inline int SetOperationStmt::col_typmods_size() const { return _internal_col_typmods_size(); } inline void SetOperationStmt::clear_col_typmods() { _impl_.col_typmods_.Clear(); } inline ::pg_query::Node* SetOperationStmt::mutable_col_typmods(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.col_typmods) return _impl_.col_typmods_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SetOperationStmt::mutable_col_typmods() { // @@protoc_insertion_point(field_mutable_list:pg_query.SetOperationStmt.col_typmods) return &_impl_.col_typmods_; } inline const ::pg_query::Node& SetOperationStmt::_internal_col_typmods(int index) const { return _impl_.col_typmods_.Get(index); } inline const ::pg_query::Node& SetOperationStmt::col_typmods(int index) const { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.col_typmods) return _internal_col_typmods(index); } inline ::pg_query::Node* SetOperationStmt::_internal_add_col_typmods() { return _impl_.col_typmods_.Add(); } inline ::pg_query::Node* SetOperationStmt::add_col_typmods() { ::pg_query::Node* _add = _internal_add_col_typmods(); // @@protoc_insertion_point(field_add:pg_query.SetOperationStmt.col_typmods) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SetOperationStmt::col_typmods() const { // @@protoc_insertion_point(field_list:pg_query.SetOperationStmt.col_typmods) return _impl_.col_typmods_; } // repeated .pg_query.Node col_collations = 7 [json_name = "colCollations"]; inline int SetOperationStmt::_internal_col_collations_size() const { return _impl_.col_collations_.size(); } inline int SetOperationStmt::col_collations_size() const { return _internal_col_collations_size(); } inline void SetOperationStmt::clear_col_collations() { _impl_.col_collations_.Clear(); } inline ::pg_query::Node* SetOperationStmt::mutable_col_collations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.col_collations) return _impl_.col_collations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SetOperationStmt::mutable_col_collations() { // @@protoc_insertion_point(field_mutable_list:pg_query.SetOperationStmt.col_collations) return &_impl_.col_collations_; } inline const ::pg_query::Node& SetOperationStmt::_internal_col_collations(int index) const { return _impl_.col_collations_.Get(index); } inline const ::pg_query::Node& SetOperationStmt::col_collations(int index) const { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.col_collations) return _internal_col_collations(index); } inline ::pg_query::Node* SetOperationStmt::_internal_add_col_collations() { return _impl_.col_collations_.Add(); } inline ::pg_query::Node* SetOperationStmt::add_col_collations() { ::pg_query::Node* _add = _internal_add_col_collations(); // @@protoc_insertion_point(field_add:pg_query.SetOperationStmt.col_collations) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SetOperationStmt::col_collations() const { // @@protoc_insertion_point(field_list:pg_query.SetOperationStmt.col_collations) return _impl_.col_collations_; } // repeated .pg_query.Node group_clauses = 8 [json_name = "groupClauses"]; inline int SetOperationStmt::_internal_group_clauses_size() const { return _impl_.group_clauses_.size(); } inline int SetOperationStmt::group_clauses_size() const { return _internal_group_clauses_size(); } inline void SetOperationStmt::clear_group_clauses() { _impl_.group_clauses_.Clear(); } inline ::pg_query::Node* SetOperationStmt::mutable_group_clauses(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.group_clauses) return _impl_.group_clauses_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SetOperationStmt::mutable_group_clauses() { // @@protoc_insertion_point(field_mutable_list:pg_query.SetOperationStmt.group_clauses) return &_impl_.group_clauses_; } inline const ::pg_query::Node& SetOperationStmt::_internal_group_clauses(int index) const { return _impl_.group_clauses_.Get(index); } inline const ::pg_query::Node& SetOperationStmt::group_clauses(int index) const { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.group_clauses) return _internal_group_clauses(index); } inline ::pg_query::Node* SetOperationStmt::_internal_add_group_clauses() { return _impl_.group_clauses_.Add(); } inline ::pg_query::Node* SetOperationStmt::add_group_clauses() { ::pg_query::Node* _add = _internal_add_group_clauses(); // @@protoc_insertion_point(field_add:pg_query.SetOperationStmt.group_clauses) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SetOperationStmt::group_clauses() const { // @@protoc_insertion_point(field_list:pg_query.SetOperationStmt.group_clauses) return _impl_.group_clauses_; } // ------------------------------------------------------------------- // GrantStmt // bool is_grant = 1 [json_name = "is_grant"]; inline void GrantStmt::clear_is_grant() { _impl_.is_grant_ = false; } inline bool GrantStmt::_internal_is_grant() const { return _impl_.is_grant_; } inline bool GrantStmt::is_grant() const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.is_grant) return _internal_is_grant(); } inline void GrantStmt::_internal_set_is_grant(bool value) { _impl_.is_grant_ = value; } inline void GrantStmt::set_is_grant(bool value) { _internal_set_is_grant(value); // @@protoc_insertion_point(field_set:pg_query.GrantStmt.is_grant) } // .pg_query.GrantTargetType targtype = 2 [json_name = "targtype"]; inline void GrantStmt::clear_targtype() { _impl_.targtype_ = 0; } inline ::pg_query::GrantTargetType GrantStmt::_internal_targtype() const { return static_cast< ::pg_query::GrantTargetType >(_impl_.targtype_); } inline ::pg_query::GrantTargetType GrantStmt::targtype() const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.targtype) return _internal_targtype(); } inline void GrantStmt::_internal_set_targtype(::pg_query::GrantTargetType value) { _impl_.targtype_ = value; } inline void GrantStmt::set_targtype(::pg_query::GrantTargetType value) { _internal_set_targtype(value); // @@protoc_insertion_point(field_set:pg_query.GrantStmt.targtype) } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; inline void GrantStmt::clear_objtype() { _impl_.objtype_ = 0; } inline ::pg_query::ObjectType GrantStmt::_internal_objtype() const { return static_cast< ::pg_query::ObjectType >(_impl_.objtype_); } inline ::pg_query::ObjectType GrantStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.objtype) return _internal_objtype(); } inline void GrantStmt::_internal_set_objtype(::pg_query::ObjectType value) { _impl_.objtype_ = value; } inline void GrantStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.GrantStmt.objtype) } // repeated .pg_query.Node objects = 4 [json_name = "objects"]; inline int GrantStmt::_internal_objects_size() const { return _impl_.objects_.size(); } inline int GrantStmt::objects_size() const { return _internal_objects_size(); } inline void GrantStmt::clear_objects() { _impl_.objects_.Clear(); } inline ::pg_query::Node* GrantStmt::mutable_objects(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GrantStmt.objects) return _impl_.objects_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GrantStmt::mutable_objects() { // @@protoc_insertion_point(field_mutable_list:pg_query.GrantStmt.objects) return &_impl_.objects_; } inline const ::pg_query::Node& GrantStmt::_internal_objects(int index) const { return _impl_.objects_.Get(index); } inline const ::pg_query::Node& GrantStmt::objects(int index) const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.objects) return _internal_objects(index); } inline ::pg_query::Node* GrantStmt::_internal_add_objects() { return _impl_.objects_.Add(); } inline ::pg_query::Node* GrantStmt::add_objects() { ::pg_query::Node* _add = _internal_add_objects(); // @@protoc_insertion_point(field_add:pg_query.GrantStmt.objects) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GrantStmt::objects() const { // @@protoc_insertion_point(field_list:pg_query.GrantStmt.objects) return _impl_.objects_; } // repeated .pg_query.Node privileges = 5 [json_name = "privileges"]; inline int GrantStmt::_internal_privileges_size() const { return _impl_.privileges_.size(); } inline int GrantStmt::privileges_size() const { return _internal_privileges_size(); } inline void GrantStmt::clear_privileges() { _impl_.privileges_.Clear(); } inline ::pg_query::Node* GrantStmt::mutable_privileges(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GrantStmt.privileges) return _impl_.privileges_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GrantStmt::mutable_privileges() { // @@protoc_insertion_point(field_mutable_list:pg_query.GrantStmt.privileges) return &_impl_.privileges_; } inline const ::pg_query::Node& GrantStmt::_internal_privileges(int index) const { return _impl_.privileges_.Get(index); } inline const ::pg_query::Node& GrantStmt::privileges(int index) const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.privileges) return _internal_privileges(index); } inline ::pg_query::Node* GrantStmt::_internal_add_privileges() { return _impl_.privileges_.Add(); } inline ::pg_query::Node* GrantStmt::add_privileges() { ::pg_query::Node* _add = _internal_add_privileges(); // @@protoc_insertion_point(field_add:pg_query.GrantStmt.privileges) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GrantStmt::privileges() const { // @@protoc_insertion_point(field_list:pg_query.GrantStmt.privileges) return _impl_.privileges_; } // repeated .pg_query.Node grantees = 6 [json_name = "grantees"]; inline int GrantStmt::_internal_grantees_size() const { return _impl_.grantees_.size(); } inline int GrantStmt::grantees_size() const { return _internal_grantees_size(); } inline void GrantStmt::clear_grantees() { _impl_.grantees_.Clear(); } inline ::pg_query::Node* GrantStmt::mutable_grantees(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GrantStmt.grantees) return _impl_.grantees_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GrantStmt::mutable_grantees() { // @@protoc_insertion_point(field_mutable_list:pg_query.GrantStmt.grantees) return &_impl_.grantees_; } inline const ::pg_query::Node& GrantStmt::_internal_grantees(int index) const { return _impl_.grantees_.Get(index); } inline const ::pg_query::Node& GrantStmt::grantees(int index) const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.grantees) return _internal_grantees(index); } inline ::pg_query::Node* GrantStmt::_internal_add_grantees() { return _impl_.grantees_.Add(); } inline ::pg_query::Node* GrantStmt::add_grantees() { ::pg_query::Node* _add = _internal_add_grantees(); // @@protoc_insertion_point(field_add:pg_query.GrantStmt.grantees) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GrantStmt::grantees() const { // @@protoc_insertion_point(field_list:pg_query.GrantStmt.grantees) return _impl_.grantees_; } // bool grant_option = 7 [json_name = "grant_option"]; inline void GrantStmt::clear_grant_option() { _impl_.grant_option_ = false; } inline bool GrantStmt::_internal_grant_option() const { return _impl_.grant_option_; } inline bool GrantStmt::grant_option() const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.grant_option) return _internal_grant_option(); } inline void GrantStmt::_internal_set_grant_option(bool value) { _impl_.grant_option_ = value; } inline void GrantStmt::set_grant_option(bool value) { _internal_set_grant_option(value); // @@protoc_insertion_point(field_set:pg_query.GrantStmt.grant_option) } // .pg_query.RoleSpec grantor = 8 [json_name = "grantor"]; inline bool GrantStmt::_internal_has_grantor() const { return this != internal_default_instance() && _impl_.grantor_ != nullptr; } inline bool GrantStmt::has_grantor() const { return _internal_has_grantor(); } inline void GrantStmt::clear_grantor() { if (GetArenaForAllocation() == nullptr && _impl_.grantor_ != nullptr) { delete _impl_.grantor_; } _impl_.grantor_ = nullptr; } inline const ::pg_query::RoleSpec& GrantStmt::_internal_grantor() const { 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 { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.grantor) return _internal_grantor(); } inline void GrantStmt::unsafe_arena_set_allocated_grantor( ::pg_query::RoleSpec* grantor) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.grantor_); } _impl_.grantor_ = grantor; if (grantor) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.GrantStmt.grantor) } inline ::pg_query::RoleSpec* GrantStmt::release_grantor() { ::pg_query::RoleSpec* temp = _impl_.grantor_; _impl_.grantor_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RoleSpec* GrantStmt::unsafe_arena_release_grantor() { // @@protoc_insertion_point(field_release:pg_query.GrantStmt.grantor) ::pg_query::RoleSpec* temp = _impl_.grantor_; _impl_.grantor_ = nullptr; return temp; } inline ::pg_query::RoleSpec* GrantStmt::_internal_mutable_grantor() { if (_impl_.grantor_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArenaForAllocation()); _impl_.grantor_ = p; } return _impl_.grantor_; } inline ::pg_query::RoleSpec* GrantStmt::mutable_grantor() { ::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* grantor) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.grantor_; } if (grantor) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(grantor); if (message_arena != submessage_arena) { grantor = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, grantor, submessage_arena); } } else { } _impl_.grantor_ = grantor; // @@protoc_insertion_point(field_set_allocated:pg_query.GrantStmt.grantor) } // .pg_query.DropBehavior behavior = 9 [json_name = "behavior"]; inline void GrantStmt::clear_behavior() { _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior GrantStmt::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(_impl_.behavior_); } inline ::pg_query::DropBehavior GrantStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.behavior) return _internal_behavior(); } inline void GrantStmt::_internal_set_behavior(::pg_query::DropBehavior value) { _impl_.behavior_ = value; } inline void GrantStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.GrantStmt.behavior) } // ------------------------------------------------------------------- // GrantRoleStmt // repeated .pg_query.Node granted_roles = 1 [json_name = "granted_roles"]; inline int GrantRoleStmt::_internal_granted_roles_size() const { return _impl_.granted_roles_.size(); } inline int GrantRoleStmt::granted_roles_size() const { return _internal_granted_roles_size(); } inline void GrantRoleStmt::clear_granted_roles() { _impl_.granted_roles_.Clear(); } inline ::pg_query::Node* GrantRoleStmt::mutable_granted_roles(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GrantRoleStmt.granted_roles) return _impl_.granted_roles_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GrantRoleStmt::mutable_granted_roles() { // @@protoc_insertion_point(field_mutable_list:pg_query.GrantRoleStmt.granted_roles) return &_impl_.granted_roles_; } inline const ::pg_query::Node& GrantRoleStmt::_internal_granted_roles(int index) const { return _impl_.granted_roles_.Get(index); } inline const ::pg_query::Node& GrantRoleStmt::granted_roles(int index) const { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.granted_roles) return _internal_granted_roles(index); } inline ::pg_query::Node* GrantRoleStmt::_internal_add_granted_roles() { return _impl_.granted_roles_.Add(); } inline ::pg_query::Node* GrantRoleStmt::add_granted_roles() { ::pg_query::Node* _add = _internal_add_granted_roles(); // @@protoc_insertion_point(field_add:pg_query.GrantRoleStmt.granted_roles) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GrantRoleStmt::granted_roles() const { // @@protoc_insertion_point(field_list:pg_query.GrantRoleStmt.granted_roles) return _impl_.granted_roles_; } // repeated .pg_query.Node grantee_roles = 2 [json_name = "grantee_roles"]; inline int GrantRoleStmt::_internal_grantee_roles_size() const { return _impl_.grantee_roles_.size(); } inline int GrantRoleStmt::grantee_roles_size() const { return _internal_grantee_roles_size(); } inline void GrantRoleStmt::clear_grantee_roles() { _impl_.grantee_roles_.Clear(); } inline ::pg_query::Node* GrantRoleStmt::mutable_grantee_roles(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GrantRoleStmt.grantee_roles) return _impl_.grantee_roles_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GrantRoleStmt::mutable_grantee_roles() { // @@protoc_insertion_point(field_mutable_list:pg_query.GrantRoleStmt.grantee_roles) return &_impl_.grantee_roles_; } inline const ::pg_query::Node& GrantRoleStmt::_internal_grantee_roles(int index) const { return _impl_.grantee_roles_.Get(index); } inline const ::pg_query::Node& GrantRoleStmt::grantee_roles(int index) const { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.grantee_roles) return _internal_grantee_roles(index); } inline ::pg_query::Node* GrantRoleStmt::_internal_add_grantee_roles() { return _impl_.grantee_roles_.Add(); } inline ::pg_query::Node* GrantRoleStmt::add_grantee_roles() { ::pg_query::Node* _add = _internal_add_grantee_roles(); // @@protoc_insertion_point(field_add:pg_query.GrantRoleStmt.grantee_roles) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GrantRoleStmt::grantee_roles() const { // @@protoc_insertion_point(field_list:pg_query.GrantRoleStmt.grantee_roles) return _impl_.grantee_roles_; } // bool is_grant = 3 [json_name = "is_grant"]; inline void GrantRoleStmt::clear_is_grant() { _impl_.is_grant_ = false; } inline bool GrantRoleStmt::_internal_is_grant() const { return _impl_.is_grant_; } inline bool GrantRoleStmt::is_grant() const { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.is_grant) return _internal_is_grant(); } inline void GrantRoleStmt::_internal_set_is_grant(bool value) { _impl_.is_grant_ = value; } inline void GrantRoleStmt::set_is_grant(bool value) { _internal_set_is_grant(value); // @@protoc_insertion_point(field_set:pg_query.GrantRoleStmt.is_grant) } // bool admin_opt = 4 [json_name = "admin_opt"]; inline void GrantRoleStmt::clear_admin_opt() { _impl_.admin_opt_ = false; } inline bool GrantRoleStmt::_internal_admin_opt() const { return _impl_.admin_opt_; } inline bool GrantRoleStmt::admin_opt() const { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.admin_opt) return _internal_admin_opt(); } inline void GrantRoleStmt::_internal_set_admin_opt(bool value) { _impl_.admin_opt_ = value; } inline void GrantRoleStmt::set_admin_opt(bool value) { _internal_set_admin_opt(value); // @@protoc_insertion_point(field_set:pg_query.GrantRoleStmt.admin_opt) } // .pg_query.RoleSpec grantor = 5 [json_name = "grantor"]; inline bool GrantRoleStmt::_internal_has_grantor() const { return this != internal_default_instance() && _impl_.grantor_ != nullptr; } inline bool GrantRoleStmt::has_grantor() const { return _internal_has_grantor(); } inline void GrantRoleStmt::clear_grantor() { if (GetArenaForAllocation() == nullptr && _impl_.grantor_ != nullptr) { delete _impl_.grantor_; } _impl_.grantor_ = nullptr; } inline const ::pg_query::RoleSpec& GrantRoleStmt::_internal_grantor() const { 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 { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.grantor) return _internal_grantor(); } inline void GrantRoleStmt::unsafe_arena_set_allocated_grantor( ::pg_query::RoleSpec* grantor) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.grantor_); } _impl_.grantor_ = grantor; if (grantor) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.GrantRoleStmt.grantor) } inline ::pg_query::RoleSpec* GrantRoleStmt::release_grantor() { ::pg_query::RoleSpec* temp = _impl_.grantor_; _impl_.grantor_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RoleSpec* GrantRoleStmt::unsafe_arena_release_grantor() { // @@protoc_insertion_point(field_release:pg_query.GrantRoleStmt.grantor) ::pg_query::RoleSpec* temp = _impl_.grantor_; _impl_.grantor_ = nullptr; return temp; } inline ::pg_query::RoleSpec* GrantRoleStmt::_internal_mutable_grantor() { if (_impl_.grantor_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArenaForAllocation()); _impl_.grantor_ = p; } return _impl_.grantor_; } inline ::pg_query::RoleSpec* GrantRoleStmt::mutable_grantor() { ::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* grantor) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.grantor_; } if (grantor) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(grantor); if (message_arena != submessage_arena) { grantor = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, grantor, submessage_arena); } } else { } _impl_.grantor_ = grantor; // @@protoc_insertion_point(field_set_allocated:pg_query.GrantRoleStmt.grantor) } // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; inline void GrantRoleStmt::clear_behavior() { _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior GrantRoleStmt::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(_impl_.behavior_); } inline ::pg_query::DropBehavior GrantRoleStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.behavior) return _internal_behavior(); } inline void GrantRoleStmt::_internal_set_behavior(::pg_query::DropBehavior value) { _impl_.behavior_ = value; } inline void GrantRoleStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.GrantRoleStmt.behavior) } // ------------------------------------------------------------------- // AlterDefaultPrivilegesStmt // repeated .pg_query.Node options = 1 [json_name = "options"]; inline int AlterDefaultPrivilegesStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int AlterDefaultPrivilegesStmt::options_size() const { return _internal_options_size(); } inline void AlterDefaultPrivilegesStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* AlterDefaultPrivilegesStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterDefaultPrivilegesStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterDefaultPrivilegesStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterDefaultPrivilegesStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& AlterDefaultPrivilegesStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& AlterDefaultPrivilegesStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterDefaultPrivilegesStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterDefaultPrivilegesStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* AlterDefaultPrivilegesStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.AlterDefaultPrivilegesStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterDefaultPrivilegesStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterDefaultPrivilegesStmt.options) return _impl_.options_; } // .pg_query.GrantStmt action = 2 [json_name = "action"]; inline bool AlterDefaultPrivilegesStmt::_internal_has_action() const { return this != internal_default_instance() && _impl_.action_ != nullptr; } inline bool AlterDefaultPrivilegesStmt::has_action() const { return _internal_has_action(); } inline void AlterDefaultPrivilegesStmt::clear_action() { if (GetArenaForAllocation() == nullptr && _impl_.action_ != nullptr) { delete _impl_.action_; } _impl_.action_ = nullptr; } inline const ::pg_query::GrantStmt& AlterDefaultPrivilegesStmt::_internal_action() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterDefaultPrivilegesStmt.action) return _internal_action(); } inline void AlterDefaultPrivilegesStmt::unsafe_arena_set_allocated_action( ::pg_query::GrantStmt* action) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.action_); } _impl_.action_ = action; if (action) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterDefaultPrivilegesStmt.action) } inline ::pg_query::GrantStmt* AlterDefaultPrivilegesStmt::release_action() { ::pg_query::GrantStmt* temp = _impl_.action_; _impl_.action_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::GrantStmt* AlterDefaultPrivilegesStmt::unsafe_arena_release_action() { // @@protoc_insertion_point(field_release:pg_query.AlterDefaultPrivilegesStmt.action) ::pg_query::GrantStmt* temp = _impl_.action_; _impl_.action_ = nullptr; return temp; } inline ::pg_query::GrantStmt* AlterDefaultPrivilegesStmt::_internal_mutable_action() { if (_impl_.action_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::GrantStmt>(GetArenaForAllocation()); _impl_.action_ = p; } return _impl_.action_; } inline ::pg_query::GrantStmt* AlterDefaultPrivilegesStmt::mutable_action() { ::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* action) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.action_; } if (action) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(action); if (message_arena != submessage_arena) { action = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, action, submessage_arena); } } else { } _impl_.action_ = action; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDefaultPrivilegesStmt.action) } // ------------------------------------------------------------------- // ClosePortalStmt // string portalname = 1 [json_name = "portalname"]; inline void ClosePortalStmt::clear_portalname() { _impl_.portalname_.ClearToEmpty(); } inline const std::string& ClosePortalStmt::portalname() const { // @@protoc_insertion_point(field_get:pg_query.ClosePortalStmt.portalname) return _internal_portalname(); } template inline PROTOBUF_ALWAYS_INLINE void ClosePortalStmt::set_portalname(ArgT0&& arg0, ArgT... args) { _impl_.portalname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.ClosePortalStmt.portalname) } inline std::string* ClosePortalStmt::mutable_portalname() { 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 { return _impl_.portalname_.Get(); } inline void ClosePortalStmt::_internal_set_portalname(const std::string& value) { _impl_.portalname_.Set(value, GetArenaForAllocation()); } inline std::string* ClosePortalStmt::_internal_mutable_portalname() { return _impl_.portalname_.Mutable(GetArenaForAllocation()); } inline std::string* ClosePortalStmt::release_portalname() { // @@protoc_insertion_point(field_release:pg_query.ClosePortalStmt.portalname) return _impl_.portalname_.Release(); } inline void ClosePortalStmt::set_allocated_portalname(std::string* portalname) { if (portalname != nullptr) { } else { } _impl_.portalname_.SetAllocated(portalname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.portalname_.IsDefault()) { _impl_.portalname_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.ClosePortalStmt.portalname) } // ------------------------------------------------------------------- // ClusterStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool ClusterStmt::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool ClusterStmt::has_relation() const { return _internal_has_relation(); } inline void ClusterStmt::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& ClusterStmt::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ClusterStmt.relation) return _internal_relation(); } inline void ClusterStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ClusterStmt.relation) } inline ::pg_query::RangeVar* ClusterStmt::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* ClusterStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.ClusterStmt.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* ClusterStmt::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* ClusterStmt::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.ClusterStmt.relation) } // string indexname = 2 [json_name = "indexname"]; inline void ClusterStmt::clear_indexname() { _impl_.indexname_.ClearToEmpty(); } inline const std::string& ClusterStmt::indexname() const { // @@protoc_insertion_point(field_get:pg_query.ClusterStmt.indexname) return _internal_indexname(); } template inline PROTOBUF_ALWAYS_INLINE void ClusterStmt::set_indexname(ArgT0&& arg0, ArgT... args) { _impl_.indexname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.ClusterStmt.indexname) } inline std::string* ClusterStmt::mutable_indexname() { 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 { return _impl_.indexname_.Get(); } inline void ClusterStmt::_internal_set_indexname(const std::string& value) { _impl_.indexname_.Set(value, GetArenaForAllocation()); } inline std::string* ClusterStmt::_internal_mutable_indexname() { return _impl_.indexname_.Mutable(GetArenaForAllocation()); } inline std::string* ClusterStmt::release_indexname() { // @@protoc_insertion_point(field_release:pg_query.ClusterStmt.indexname) return _impl_.indexname_.Release(); } inline void ClusterStmt::set_allocated_indexname(std::string* indexname) { if (indexname != nullptr) { } else { } _impl_.indexname_.SetAllocated(indexname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.indexname_.IsDefault()) { _impl_.indexname_.Set("", GetArenaForAllocation()); } #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 _impl_.params_.size(); } inline int ClusterStmt::params_size() const { return _internal_params_size(); } inline void ClusterStmt::clear_params() { _impl_.params_.Clear(); } inline ::pg_query::Node* ClusterStmt::mutable_params(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ClusterStmt.params) return _impl_.params_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ClusterStmt::mutable_params() { // @@protoc_insertion_point(field_mutable_list:pg_query.ClusterStmt.params) return &_impl_.params_; } inline const ::pg_query::Node& ClusterStmt::_internal_params(int index) const { return _impl_.params_.Get(index); } inline const ::pg_query::Node& ClusterStmt::params(int index) const { // @@protoc_insertion_point(field_get:pg_query.ClusterStmt.params) return _internal_params(index); } inline ::pg_query::Node* ClusterStmt::_internal_add_params() { return _impl_.params_.Add(); } inline ::pg_query::Node* ClusterStmt::add_params() { ::pg_query::Node* _add = _internal_add_params(); // @@protoc_insertion_point(field_add:pg_query.ClusterStmt.params) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ClusterStmt::params() const { // @@protoc_insertion_point(field_list:pg_query.ClusterStmt.params) return _impl_.params_; } // ------------------------------------------------------------------- // CopyStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool CopyStmt::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool CopyStmt::has_relation() const { return _internal_has_relation(); } inline void CopyStmt::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& CopyStmt::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.relation) return _internal_relation(); } inline void CopyStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CopyStmt.relation) } inline ::pg_query::RangeVar* CopyStmt::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* CopyStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.CopyStmt.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* CopyStmt::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* CopyStmt::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.CopyStmt.relation) } // .pg_query.Node query = 2 [json_name = "query"]; inline bool CopyStmt::_internal_has_query() const { return this != internal_default_instance() && _impl_.query_ != nullptr; } inline bool CopyStmt::has_query() const { return _internal_has_query(); } inline void CopyStmt::clear_query() { if (GetArenaForAllocation() == nullptr && _impl_.query_ != nullptr) { delete _impl_.query_; } _impl_.query_ = nullptr; } inline const ::pg_query::Node& CopyStmt::_internal_query() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.query) return _internal_query(); } inline void CopyStmt::unsafe_arena_set_allocated_query( ::pg_query::Node* query) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.query_); } _impl_.query_ = query; if (query) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CopyStmt.query) } inline ::pg_query::Node* CopyStmt::release_query() { ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CopyStmt::unsafe_arena_release_query() { // @@protoc_insertion_point(field_release:pg_query.CopyStmt.query) ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; return temp; } inline ::pg_query::Node* CopyStmt::_internal_mutable_query() { if (_impl_.query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.query_ = p; } return _impl_.query_; } inline ::pg_query::Node* CopyStmt::mutable_query() { ::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* query) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.query_; } if (query) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(query); if (message_arena != submessage_arena) { query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, query, submessage_arena); } } else { } _impl_.query_ = query; // @@protoc_insertion_point(field_set_allocated:pg_query.CopyStmt.query) } // repeated .pg_query.Node attlist = 3 [json_name = "attlist"]; inline int CopyStmt::_internal_attlist_size() const { return _impl_.attlist_.size(); } inline int CopyStmt::attlist_size() const { return _internal_attlist_size(); } inline void CopyStmt::clear_attlist() { _impl_.attlist_.Clear(); } inline ::pg_query::Node* CopyStmt::mutable_attlist(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.attlist) return _impl_.attlist_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CopyStmt::mutable_attlist() { // @@protoc_insertion_point(field_mutable_list:pg_query.CopyStmt.attlist) return &_impl_.attlist_; } inline const ::pg_query::Node& CopyStmt::_internal_attlist(int index) const { return _impl_.attlist_.Get(index); } inline const ::pg_query::Node& CopyStmt::attlist(int index) const { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.attlist) return _internal_attlist(index); } inline ::pg_query::Node* CopyStmt::_internal_add_attlist() { return _impl_.attlist_.Add(); } inline ::pg_query::Node* CopyStmt::add_attlist() { ::pg_query::Node* _add = _internal_add_attlist(); // @@protoc_insertion_point(field_add:pg_query.CopyStmt.attlist) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CopyStmt::attlist() const { // @@protoc_insertion_point(field_list:pg_query.CopyStmt.attlist) return _impl_.attlist_; } // bool is_from = 4 [json_name = "is_from"]; inline void CopyStmt::clear_is_from() { _impl_.is_from_ = false; } inline bool CopyStmt::_internal_is_from() const { return _impl_.is_from_; } inline bool CopyStmt::is_from() const { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.is_from) return _internal_is_from(); } inline void CopyStmt::_internal_set_is_from(bool value) { _impl_.is_from_ = value; } inline void CopyStmt::set_is_from(bool value) { _internal_set_is_from(value); // @@protoc_insertion_point(field_set:pg_query.CopyStmt.is_from) } // bool is_program = 5 [json_name = "is_program"]; inline void CopyStmt::clear_is_program() { _impl_.is_program_ = false; } inline bool CopyStmt::_internal_is_program() const { return _impl_.is_program_; } inline bool CopyStmt::is_program() const { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.is_program) return _internal_is_program(); } inline void CopyStmt::_internal_set_is_program(bool value) { _impl_.is_program_ = value; } inline void CopyStmt::set_is_program(bool value) { _internal_set_is_program(value); // @@protoc_insertion_point(field_set:pg_query.CopyStmt.is_program) } // string filename = 6 [json_name = "filename"]; inline void CopyStmt::clear_filename() { _impl_.filename_.ClearToEmpty(); } inline const std::string& CopyStmt::filename() const { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.filename) return _internal_filename(); } template inline PROTOBUF_ALWAYS_INLINE void CopyStmt::set_filename(ArgT0&& arg0, ArgT... args) { _impl_.filename_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CopyStmt.filename) } inline std::string* CopyStmt::mutable_filename() { 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 { return _impl_.filename_.Get(); } inline void CopyStmt::_internal_set_filename(const std::string& value) { _impl_.filename_.Set(value, GetArenaForAllocation()); } inline std::string* CopyStmt::_internal_mutable_filename() { return _impl_.filename_.Mutable(GetArenaForAllocation()); } inline std::string* CopyStmt::release_filename() { // @@protoc_insertion_point(field_release:pg_query.CopyStmt.filename) return _impl_.filename_.Release(); } inline void CopyStmt::set_allocated_filename(std::string* filename) { if (filename != nullptr) { } else { } _impl_.filename_.SetAllocated(filename, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.filename_.IsDefault()) { _impl_.filename_.Set("", GetArenaForAllocation()); } #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 _impl_.options_.size(); } inline int CopyStmt::options_size() const { return _internal_options_size(); } inline void CopyStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* CopyStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CopyStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CopyStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& CopyStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& CopyStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.options) return _internal_options(index); } inline ::pg_query::Node* CopyStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* CopyStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.CopyStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CopyStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CopyStmt.options) return _impl_.options_; } // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; inline bool CopyStmt::_internal_has_where_clause() const { return this != internal_default_instance() && _impl_.where_clause_ != nullptr; } inline bool CopyStmt::has_where_clause() const { return _internal_has_where_clause(); } inline void CopyStmt::clear_where_clause() { if (GetArenaForAllocation() == nullptr && _impl_.where_clause_ != nullptr) { delete _impl_.where_clause_; } _impl_.where_clause_ = nullptr; } inline const ::pg_query::Node& CopyStmt::_internal_where_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.where_clause) return _internal_where_clause(); } inline void CopyStmt::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CopyStmt.where_clause) } inline ::pg_query::Node* CopyStmt::release_where_clause() { ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CopyStmt::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.CopyStmt.where_clause) ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* CopyStmt::_internal_mutable_where_clause() { if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.where_clause_ = p; } return _impl_.where_clause_; } inline ::pg_query::Node* CopyStmt::mutable_where_clause() { ::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* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } _impl_.where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.CopyStmt.where_clause) } // ------------------------------------------------------------------- // CreateStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool CreateStmt::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool CreateStmt::has_relation() const { return _internal_has_relation(); } inline void CreateStmt::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& CreateStmt::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.relation) return _internal_relation(); } inline void CreateStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateStmt.relation) } inline ::pg_query::RangeVar* CreateStmt::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* CreateStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.CreateStmt.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* CreateStmt::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* CreateStmt::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.relation) } // repeated .pg_query.Node table_elts = 2 [json_name = "tableElts"]; inline int CreateStmt::_internal_table_elts_size() const { return _impl_.table_elts_.size(); } inline int CreateStmt::table_elts_size() const { return _internal_table_elts_size(); } inline void CreateStmt::clear_table_elts() { _impl_.table_elts_.Clear(); } inline ::pg_query::Node* CreateStmt::mutable_table_elts(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.table_elts) return _impl_.table_elts_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateStmt::mutable_table_elts() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStmt.table_elts) return &_impl_.table_elts_; } inline const ::pg_query::Node& CreateStmt::_internal_table_elts(int index) const { return _impl_.table_elts_.Get(index); } inline const ::pg_query::Node& CreateStmt::table_elts(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.table_elts) return _internal_table_elts(index); } inline ::pg_query::Node* CreateStmt::_internal_add_table_elts() { return _impl_.table_elts_.Add(); } inline ::pg_query::Node* CreateStmt::add_table_elts() { ::pg_query::Node* _add = _internal_add_table_elts(); // @@protoc_insertion_point(field_add:pg_query.CreateStmt.table_elts) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateStmt::table_elts() const { // @@protoc_insertion_point(field_list:pg_query.CreateStmt.table_elts) return _impl_.table_elts_; } // repeated .pg_query.Node inh_relations = 3 [json_name = "inhRelations"]; inline int CreateStmt::_internal_inh_relations_size() const { return _impl_.inh_relations_.size(); } inline int CreateStmt::inh_relations_size() const { return _internal_inh_relations_size(); } inline void CreateStmt::clear_inh_relations() { _impl_.inh_relations_.Clear(); } inline ::pg_query::Node* CreateStmt::mutable_inh_relations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.inh_relations) return _impl_.inh_relations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateStmt::mutable_inh_relations() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStmt.inh_relations) return &_impl_.inh_relations_; } inline const ::pg_query::Node& CreateStmt::_internal_inh_relations(int index) const { return _impl_.inh_relations_.Get(index); } inline const ::pg_query::Node& CreateStmt::inh_relations(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.inh_relations) return _internal_inh_relations(index); } inline ::pg_query::Node* CreateStmt::_internal_add_inh_relations() { return _impl_.inh_relations_.Add(); } inline ::pg_query::Node* CreateStmt::add_inh_relations() { ::pg_query::Node* _add = _internal_add_inh_relations(); // @@protoc_insertion_point(field_add:pg_query.CreateStmt.inh_relations) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateStmt::inh_relations() const { // @@protoc_insertion_point(field_list:pg_query.CreateStmt.inh_relations) return _impl_.inh_relations_; } // .pg_query.PartitionBoundSpec partbound = 4 [json_name = "partbound"]; inline bool CreateStmt::_internal_has_partbound() const { return this != internal_default_instance() && _impl_.partbound_ != nullptr; } inline bool CreateStmt::has_partbound() const { return _internal_has_partbound(); } inline void CreateStmt::clear_partbound() { if (GetArenaForAllocation() == nullptr && _impl_.partbound_ != nullptr) { delete _impl_.partbound_; } _impl_.partbound_ = nullptr; } inline const ::pg_query::PartitionBoundSpec& CreateStmt::_internal_partbound() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.partbound) return _internal_partbound(); } inline void CreateStmt::unsafe_arena_set_allocated_partbound( ::pg_query::PartitionBoundSpec* partbound) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.partbound_); } _impl_.partbound_ = partbound; if (partbound) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateStmt.partbound) } inline ::pg_query::PartitionBoundSpec* CreateStmt::release_partbound() { ::pg_query::PartitionBoundSpec* temp = _impl_.partbound_; _impl_.partbound_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::PartitionBoundSpec* CreateStmt::unsafe_arena_release_partbound() { // @@protoc_insertion_point(field_release:pg_query.CreateStmt.partbound) ::pg_query::PartitionBoundSpec* temp = _impl_.partbound_; _impl_.partbound_ = nullptr; return temp; } inline ::pg_query::PartitionBoundSpec* CreateStmt::_internal_mutable_partbound() { if (_impl_.partbound_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::PartitionBoundSpec>(GetArenaForAllocation()); _impl_.partbound_ = p; } return _impl_.partbound_; } inline ::pg_query::PartitionBoundSpec* CreateStmt::mutable_partbound() { ::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* partbound) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.partbound_; } if (partbound) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(partbound); if (message_arena != submessage_arena) { partbound = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, partbound, submessage_arena); } } else { } _impl_.partbound_ = partbound; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.partbound) } // .pg_query.PartitionSpec partspec = 5 [json_name = "partspec"]; inline bool CreateStmt::_internal_has_partspec() const { return this != internal_default_instance() && _impl_.partspec_ != nullptr; } inline bool CreateStmt::has_partspec() const { return _internal_has_partspec(); } inline void CreateStmt::clear_partspec() { if (GetArenaForAllocation() == nullptr && _impl_.partspec_ != nullptr) { delete _impl_.partspec_; } _impl_.partspec_ = nullptr; } inline const ::pg_query::PartitionSpec& CreateStmt::_internal_partspec() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.partspec) return _internal_partspec(); } inline void CreateStmt::unsafe_arena_set_allocated_partspec( ::pg_query::PartitionSpec* partspec) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.partspec_); } _impl_.partspec_ = partspec; if (partspec) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateStmt.partspec) } inline ::pg_query::PartitionSpec* CreateStmt::release_partspec() { ::pg_query::PartitionSpec* temp = _impl_.partspec_; _impl_.partspec_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::PartitionSpec* CreateStmt::unsafe_arena_release_partspec() { // @@protoc_insertion_point(field_release:pg_query.CreateStmt.partspec) ::pg_query::PartitionSpec* temp = _impl_.partspec_; _impl_.partspec_ = nullptr; return temp; } inline ::pg_query::PartitionSpec* CreateStmt::_internal_mutable_partspec() { if (_impl_.partspec_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::PartitionSpec>(GetArenaForAllocation()); _impl_.partspec_ = p; } return _impl_.partspec_; } inline ::pg_query::PartitionSpec* CreateStmt::mutable_partspec() { ::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* partspec) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.partspec_; } if (partspec) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(partspec); if (message_arena != submessage_arena) { partspec = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, partspec, submessage_arena); } } else { } _impl_.partspec_ = partspec; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.partspec) } // .pg_query.TypeName of_typename = 6 [json_name = "ofTypename"]; inline bool CreateStmt::_internal_has_of_typename() const { return this != internal_default_instance() && _impl_.of_typename_ != nullptr; } inline bool CreateStmt::has_of_typename() const { return _internal_has_of_typename(); } inline void CreateStmt::clear_of_typename() { if (GetArenaForAllocation() == nullptr && _impl_.of_typename_ != nullptr) { delete _impl_.of_typename_; } _impl_.of_typename_ = nullptr; } inline const ::pg_query::TypeName& CreateStmt::_internal_of_typename() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.of_typename) return _internal_of_typename(); } inline void CreateStmt::unsafe_arena_set_allocated_of_typename( ::pg_query::TypeName* of_typename) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.of_typename_); } _impl_.of_typename_ = of_typename; if (of_typename) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateStmt.of_typename) } inline ::pg_query::TypeName* CreateStmt::release_of_typename() { ::pg_query::TypeName* temp = _impl_.of_typename_; _impl_.of_typename_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::TypeName* CreateStmt::unsafe_arena_release_of_typename() { // @@protoc_insertion_point(field_release:pg_query.CreateStmt.of_typename) ::pg_query::TypeName* temp = _impl_.of_typename_; _impl_.of_typename_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateStmt::_internal_mutable_of_typename() { if (_impl_.of_typename_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArenaForAllocation()); _impl_.of_typename_ = p; } return _impl_.of_typename_; } inline ::pg_query::TypeName* CreateStmt::mutable_of_typename() { ::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* of_typename) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.of_typename_; } if (of_typename) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(of_typename); if (message_arena != submessage_arena) { of_typename = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, of_typename, submessage_arena); } } else { } _impl_.of_typename_ = of_typename; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.of_typename) } // repeated .pg_query.Node constraints = 7 [json_name = "constraints"]; inline int CreateStmt::_internal_constraints_size() const { return _impl_.constraints_.size(); } inline int CreateStmt::constraints_size() const { return _internal_constraints_size(); } inline void CreateStmt::clear_constraints() { _impl_.constraints_.Clear(); } inline ::pg_query::Node* CreateStmt::mutable_constraints(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.constraints) return _impl_.constraints_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateStmt::mutable_constraints() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStmt.constraints) return &_impl_.constraints_; } inline const ::pg_query::Node& CreateStmt::_internal_constraints(int index) const { return _impl_.constraints_.Get(index); } inline const ::pg_query::Node& CreateStmt::constraints(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.constraints) return _internal_constraints(index); } inline ::pg_query::Node* CreateStmt::_internal_add_constraints() { return _impl_.constraints_.Add(); } inline ::pg_query::Node* CreateStmt::add_constraints() { ::pg_query::Node* _add = _internal_add_constraints(); // @@protoc_insertion_point(field_add:pg_query.CreateStmt.constraints) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateStmt::constraints() const { // @@protoc_insertion_point(field_list:pg_query.CreateStmt.constraints) return _impl_.constraints_; } // repeated .pg_query.Node options = 8 [json_name = "options"]; inline int CreateStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int CreateStmt::options_size() const { return _internal_options_size(); } inline void CreateStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* CreateStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& CreateStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& CreateStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* CreateStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.CreateStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateStmt.options) return _impl_.options_; } // .pg_query.OnCommitAction oncommit = 9 [json_name = "oncommit"]; inline void CreateStmt::clear_oncommit() { _impl_.oncommit_ = 0; } inline ::pg_query::OnCommitAction CreateStmt::_internal_oncommit() const { return static_cast< ::pg_query::OnCommitAction >(_impl_.oncommit_); } inline ::pg_query::OnCommitAction CreateStmt::oncommit() const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.oncommit) return _internal_oncommit(); } inline void CreateStmt::_internal_set_oncommit(::pg_query::OnCommitAction value) { _impl_.oncommit_ = value; } inline void CreateStmt::set_oncommit(::pg_query::OnCommitAction value) { _internal_set_oncommit(value); // @@protoc_insertion_point(field_set:pg_query.CreateStmt.oncommit) } // string tablespacename = 10 [json_name = "tablespacename"]; inline void CreateStmt::clear_tablespacename() { _impl_.tablespacename_.ClearToEmpty(); } inline const std::string& CreateStmt::tablespacename() const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.tablespacename) return _internal_tablespacename(); } template inline PROTOBUF_ALWAYS_INLINE void CreateStmt::set_tablespacename(ArgT0&& arg0, ArgT... args) { _impl_.tablespacename_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateStmt.tablespacename) } inline std::string* CreateStmt::mutable_tablespacename() { 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 { return _impl_.tablespacename_.Get(); } inline void CreateStmt::_internal_set_tablespacename(const std::string& value) { _impl_.tablespacename_.Set(value, GetArenaForAllocation()); } inline std::string* CreateStmt::_internal_mutable_tablespacename() { return _impl_.tablespacename_.Mutable(GetArenaForAllocation()); } inline std::string* CreateStmt::release_tablespacename() { // @@protoc_insertion_point(field_release:pg_query.CreateStmt.tablespacename) return _impl_.tablespacename_.Release(); } inline void CreateStmt::set_allocated_tablespacename(std::string* tablespacename) { if (tablespacename != nullptr) { } else { } _impl_.tablespacename_.SetAllocated(tablespacename, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.tablespacename_.IsDefault()) { _impl_.tablespacename_.Set("", GetArenaForAllocation()); } #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() { _impl_.access_method_.ClearToEmpty(); } inline const std::string& CreateStmt::access_method() const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.access_method) return _internal_access_method(); } template inline PROTOBUF_ALWAYS_INLINE void CreateStmt::set_access_method(ArgT0&& arg0, ArgT... args) { _impl_.access_method_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateStmt.access_method) } inline std::string* CreateStmt::mutable_access_method() { 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 { return _impl_.access_method_.Get(); } inline void CreateStmt::_internal_set_access_method(const std::string& value) { _impl_.access_method_.Set(value, GetArenaForAllocation()); } inline std::string* CreateStmt::_internal_mutable_access_method() { return _impl_.access_method_.Mutable(GetArenaForAllocation()); } inline std::string* CreateStmt::release_access_method() { // @@protoc_insertion_point(field_release:pg_query.CreateStmt.access_method) return _impl_.access_method_.Release(); } inline void CreateStmt::set_allocated_access_method(std::string* access_method) { if (access_method != nullptr) { } else { } _impl_.access_method_.SetAllocated(access_method, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.access_method_.IsDefault()) { _impl_.access_method_.Set("", GetArenaForAllocation()); } #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() { _impl_.if_not_exists_ = false; } inline bool CreateStmt::_internal_if_not_exists() const { return _impl_.if_not_exists_; } inline bool CreateStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.if_not_exists) return _internal_if_not_exists(); } inline void CreateStmt::_internal_set_if_not_exists(bool value) { _impl_.if_not_exists_ = value; } inline void CreateStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateStmt.if_not_exists) } // ------------------------------------------------------------------- // DefineStmt // .pg_query.ObjectType kind = 1 [json_name = "kind"]; inline void DefineStmt::clear_kind() { _impl_.kind_ = 0; } inline ::pg_query::ObjectType DefineStmt::_internal_kind() const { return static_cast< ::pg_query::ObjectType >(_impl_.kind_); } inline ::pg_query::ObjectType DefineStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.kind) return _internal_kind(); } inline void DefineStmt::_internal_set_kind(::pg_query::ObjectType value) { _impl_.kind_ = value; } inline void DefineStmt::set_kind(::pg_query::ObjectType value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.DefineStmt.kind) } // bool oldstyle = 2 [json_name = "oldstyle"]; inline void DefineStmt::clear_oldstyle() { _impl_.oldstyle_ = false; } inline bool DefineStmt::_internal_oldstyle() const { return _impl_.oldstyle_; } inline bool DefineStmt::oldstyle() const { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.oldstyle) return _internal_oldstyle(); } inline void DefineStmt::_internal_set_oldstyle(bool value) { _impl_.oldstyle_ = value; } inline void DefineStmt::set_oldstyle(bool value) { _internal_set_oldstyle(value); // @@protoc_insertion_point(field_set:pg_query.DefineStmt.oldstyle) } // repeated .pg_query.Node defnames = 3 [json_name = "defnames"]; inline int DefineStmt::_internal_defnames_size() const { return _impl_.defnames_.size(); } inline int DefineStmt::defnames_size() const { return _internal_defnames_size(); } inline void DefineStmt::clear_defnames() { _impl_.defnames_.Clear(); } inline ::pg_query::Node* DefineStmt::mutable_defnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DefineStmt.defnames) return _impl_.defnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DefineStmt::mutable_defnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.DefineStmt.defnames) return &_impl_.defnames_; } inline const ::pg_query::Node& DefineStmt::_internal_defnames(int index) const { return _impl_.defnames_.Get(index); } inline const ::pg_query::Node& DefineStmt::defnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.defnames) return _internal_defnames(index); } inline ::pg_query::Node* DefineStmt::_internal_add_defnames() { return _impl_.defnames_.Add(); } inline ::pg_query::Node* DefineStmt::add_defnames() { ::pg_query::Node* _add = _internal_add_defnames(); // @@protoc_insertion_point(field_add:pg_query.DefineStmt.defnames) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DefineStmt::defnames() const { // @@protoc_insertion_point(field_list:pg_query.DefineStmt.defnames) return _impl_.defnames_; } // repeated .pg_query.Node args = 4 [json_name = "args"]; inline int DefineStmt::_internal_args_size() const { return _impl_.args_.size(); } inline int DefineStmt::args_size() const { return _internal_args_size(); } inline void DefineStmt::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* DefineStmt::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DefineStmt.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DefineStmt::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.DefineStmt.args) return &_impl_.args_; } inline const ::pg_query::Node& DefineStmt::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& DefineStmt::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.args) return _internal_args(index); } inline ::pg_query::Node* DefineStmt::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* DefineStmt::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.DefineStmt.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DefineStmt::args() const { // @@protoc_insertion_point(field_list:pg_query.DefineStmt.args) return _impl_.args_; } // repeated .pg_query.Node definition = 5 [json_name = "definition"]; inline int DefineStmt::_internal_definition_size() const { return _impl_.definition_.size(); } inline int DefineStmt::definition_size() const { return _internal_definition_size(); } inline void DefineStmt::clear_definition() { _impl_.definition_.Clear(); } inline ::pg_query::Node* DefineStmt::mutable_definition(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DefineStmt.definition) return _impl_.definition_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DefineStmt::mutable_definition() { // @@protoc_insertion_point(field_mutable_list:pg_query.DefineStmt.definition) return &_impl_.definition_; } inline const ::pg_query::Node& DefineStmt::_internal_definition(int index) const { return _impl_.definition_.Get(index); } inline const ::pg_query::Node& DefineStmt::definition(int index) const { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.definition) return _internal_definition(index); } inline ::pg_query::Node* DefineStmt::_internal_add_definition() { return _impl_.definition_.Add(); } inline ::pg_query::Node* DefineStmt::add_definition() { ::pg_query::Node* _add = _internal_add_definition(); // @@protoc_insertion_point(field_add:pg_query.DefineStmt.definition) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DefineStmt::definition() const { // @@protoc_insertion_point(field_list:pg_query.DefineStmt.definition) return _impl_.definition_; } // bool if_not_exists = 6 [json_name = "if_not_exists"]; inline void DefineStmt::clear_if_not_exists() { _impl_.if_not_exists_ = false; } inline bool DefineStmt::_internal_if_not_exists() const { return _impl_.if_not_exists_; } inline bool DefineStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.if_not_exists) return _internal_if_not_exists(); } inline void DefineStmt::_internal_set_if_not_exists(bool value) { _impl_.if_not_exists_ = value; } inline void DefineStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.DefineStmt.if_not_exists) } // bool replace = 7 [json_name = "replace"]; inline void DefineStmt::clear_replace() { _impl_.replace_ = false; } inline bool DefineStmt::_internal_replace() const { return _impl_.replace_; } inline bool DefineStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.replace) return _internal_replace(); } inline void DefineStmt::_internal_set_replace(bool value) { _impl_.replace_ = value; } inline void DefineStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.DefineStmt.replace) } // ------------------------------------------------------------------- // DropStmt // repeated .pg_query.Node objects = 1 [json_name = "objects"]; inline int DropStmt::_internal_objects_size() const { return _impl_.objects_.size(); } inline int DropStmt::objects_size() const { return _internal_objects_size(); } inline void DropStmt::clear_objects() { _impl_.objects_.Clear(); } inline ::pg_query::Node* DropStmt::mutable_objects(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DropStmt.objects) return _impl_.objects_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DropStmt::mutable_objects() { // @@protoc_insertion_point(field_mutable_list:pg_query.DropStmt.objects) return &_impl_.objects_; } inline const ::pg_query::Node& DropStmt::_internal_objects(int index) const { return _impl_.objects_.Get(index); } inline const ::pg_query::Node& DropStmt::objects(int index) const { // @@protoc_insertion_point(field_get:pg_query.DropStmt.objects) return _internal_objects(index); } inline ::pg_query::Node* DropStmt::_internal_add_objects() { return _impl_.objects_.Add(); } inline ::pg_query::Node* DropStmt::add_objects() { ::pg_query::Node* _add = _internal_add_objects(); // @@protoc_insertion_point(field_add:pg_query.DropStmt.objects) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DropStmt::objects() const { // @@protoc_insertion_point(field_list:pg_query.DropStmt.objects) return _impl_.objects_; } // .pg_query.ObjectType remove_type = 2 [json_name = "removeType"]; inline void DropStmt::clear_remove_type() { _impl_.remove_type_ = 0; } inline ::pg_query::ObjectType DropStmt::_internal_remove_type() const { return static_cast< ::pg_query::ObjectType >(_impl_.remove_type_); } inline ::pg_query::ObjectType DropStmt::remove_type() const { // @@protoc_insertion_point(field_get:pg_query.DropStmt.remove_type) return _internal_remove_type(); } inline void DropStmt::_internal_set_remove_type(::pg_query::ObjectType value) { _impl_.remove_type_ = value; } inline void DropStmt::set_remove_type(::pg_query::ObjectType value) { _internal_set_remove_type(value); // @@protoc_insertion_point(field_set:pg_query.DropStmt.remove_type) } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; inline void DropStmt::clear_behavior() { _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior DropStmt::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(_impl_.behavior_); } inline ::pg_query::DropBehavior DropStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.DropStmt.behavior) return _internal_behavior(); } inline void DropStmt::_internal_set_behavior(::pg_query::DropBehavior value) { _impl_.behavior_ = value; } inline void DropStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.DropStmt.behavior) } // bool missing_ok = 4 [json_name = "missing_ok"]; inline void DropStmt::clear_missing_ok() { _impl_.missing_ok_ = false; } inline bool DropStmt::_internal_missing_ok() const { return _impl_.missing_ok_; } inline bool DropStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropStmt.missing_ok) return _internal_missing_ok(); } inline void DropStmt::_internal_set_missing_ok(bool value) { _impl_.missing_ok_ = value; } inline void DropStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropStmt.missing_ok) } // bool concurrent = 5 [json_name = "concurrent"]; inline void DropStmt::clear_concurrent() { _impl_.concurrent_ = false; } inline bool DropStmt::_internal_concurrent() const { return _impl_.concurrent_; } inline bool DropStmt::concurrent() const { // @@protoc_insertion_point(field_get:pg_query.DropStmt.concurrent) return _internal_concurrent(); } inline void DropStmt::_internal_set_concurrent(bool value) { _impl_.concurrent_ = value; } inline void DropStmt::set_concurrent(bool value) { _internal_set_concurrent(value); // @@protoc_insertion_point(field_set:pg_query.DropStmt.concurrent) } // ------------------------------------------------------------------- // TruncateStmt // repeated .pg_query.Node relations = 1 [json_name = "relations"]; inline int TruncateStmt::_internal_relations_size() const { return _impl_.relations_.size(); } inline int TruncateStmt::relations_size() const { return _internal_relations_size(); } inline void TruncateStmt::clear_relations() { _impl_.relations_.Clear(); } inline ::pg_query::Node* TruncateStmt::mutable_relations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TruncateStmt.relations) return _impl_.relations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TruncateStmt::mutable_relations() { // @@protoc_insertion_point(field_mutable_list:pg_query.TruncateStmt.relations) return &_impl_.relations_; } inline const ::pg_query::Node& TruncateStmt::_internal_relations(int index) const { return _impl_.relations_.Get(index); } inline const ::pg_query::Node& TruncateStmt::relations(int index) const { // @@protoc_insertion_point(field_get:pg_query.TruncateStmt.relations) return _internal_relations(index); } inline ::pg_query::Node* TruncateStmt::_internal_add_relations() { return _impl_.relations_.Add(); } inline ::pg_query::Node* TruncateStmt::add_relations() { ::pg_query::Node* _add = _internal_add_relations(); // @@protoc_insertion_point(field_add:pg_query.TruncateStmt.relations) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TruncateStmt::relations() const { // @@protoc_insertion_point(field_list:pg_query.TruncateStmt.relations) return _impl_.relations_; } // bool restart_seqs = 2 [json_name = "restart_seqs"]; inline void TruncateStmt::clear_restart_seqs() { _impl_.restart_seqs_ = false; } inline bool TruncateStmt::_internal_restart_seqs() const { return _impl_.restart_seqs_; } inline bool TruncateStmt::restart_seqs() const { // @@protoc_insertion_point(field_get:pg_query.TruncateStmt.restart_seqs) return _internal_restart_seqs(); } inline void TruncateStmt::_internal_set_restart_seqs(bool value) { _impl_.restart_seqs_ = value; } inline void TruncateStmt::set_restart_seqs(bool value) { _internal_set_restart_seqs(value); // @@protoc_insertion_point(field_set:pg_query.TruncateStmt.restart_seqs) } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; inline void TruncateStmt::clear_behavior() { _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior TruncateStmt::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(_impl_.behavior_); } inline ::pg_query::DropBehavior TruncateStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.TruncateStmt.behavior) return _internal_behavior(); } inline void TruncateStmt::_internal_set_behavior(::pg_query::DropBehavior value) { _impl_.behavior_ = value; } inline void TruncateStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.TruncateStmt.behavior) } // ------------------------------------------------------------------- // CommentStmt // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; inline void CommentStmt::clear_objtype() { _impl_.objtype_ = 0; } inline ::pg_query::ObjectType CommentStmt::_internal_objtype() const { return static_cast< ::pg_query::ObjectType >(_impl_.objtype_); } inline ::pg_query::ObjectType CommentStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.CommentStmt.objtype) return _internal_objtype(); } inline void CommentStmt::_internal_set_objtype(::pg_query::ObjectType value) { _impl_.objtype_ = value; } inline void CommentStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.CommentStmt.objtype) } // .pg_query.Node object = 2 [json_name = "object"]; inline bool CommentStmt::_internal_has_object() const { return this != internal_default_instance() && _impl_.object_ != nullptr; } inline bool CommentStmt::has_object() const { return _internal_has_object(); } inline void CommentStmt::clear_object() { if (GetArenaForAllocation() == nullptr && _impl_.object_ != nullptr) { delete _impl_.object_; } _impl_.object_ = nullptr; } inline const ::pg_query::Node& CommentStmt::_internal_object() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CommentStmt.object) return _internal_object(); } inline void CommentStmt::unsafe_arena_set_allocated_object( ::pg_query::Node* object) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.object_); } _impl_.object_ = object; if (object) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CommentStmt.object) } inline ::pg_query::Node* CommentStmt::release_object() { ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CommentStmt::unsafe_arena_release_object() { // @@protoc_insertion_point(field_release:pg_query.CommentStmt.object) ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; return temp; } inline ::pg_query::Node* CommentStmt::_internal_mutable_object() { if (_impl_.object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.object_ = p; } return _impl_.object_; } inline ::pg_query::Node* CommentStmt::mutable_object() { ::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* object) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.object_; } if (object) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(object); if (message_arena != submessage_arena) { object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, object, submessage_arena); } } else { } _impl_.object_ = object; // @@protoc_insertion_point(field_set_allocated:pg_query.CommentStmt.object) } // string comment = 3 [json_name = "comment"]; inline void CommentStmt::clear_comment() { _impl_.comment_.ClearToEmpty(); } inline const std::string& CommentStmt::comment() const { // @@protoc_insertion_point(field_get:pg_query.CommentStmt.comment) return _internal_comment(); } template inline PROTOBUF_ALWAYS_INLINE void CommentStmt::set_comment(ArgT0&& arg0, ArgT... args) { _impl_.comment_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CommentStmt.comment) } inline std::string* CommentStmt::mutable_comment() { 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 { return _impl_.comment_.Get(); } inline void CommentStmt::_internal_set_comment(const std::string& value) { _impl_.comment_.Set(value, GetArenaForAllocation()); } inline std::string* CommentStmt::_internal_mutable_comment() { return _impl_.comment_.Mutable(GetArenaForAllocation()); } inline std::string* CommentStmt::release_comment() { // @@protoc_insertion_point(field_release:pg_query.CommentStmt.comment) return _impl_.comment_.Release(); } inline void CommentStmt::set_allocated_comment(std::string* comment) { if (comment != nullptr) { } else { } _impl_.comment_.SetAllocated(comment, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.comment_.IsDefault()) { _impl_.comment_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CommentStmt.comment) } // ------------------------------------------------------------------- // FetchStmt // .pg_query.FetchDirection direction = 1 [json_name = "direction"]; inline void FetchStmt::clear_direction() { _impl_.direction_ = 0; } inline ::pg_query::FetchDirection FetchStmt::_internal_direction() const { return static_cast< ::pg_query::FetchDirection >(_impl_.direction_); } inline ::pg_query::FetchDirection FetchStmt::direction() const { // @@protoc_insertion_point(field_get:pg_query.FetchStmt.direction) return _internal_direction(); } inline void FetchStmt::_internal_set_direction(::pg_query::FetchDirection value) { _impl_.direction_ = value; } inline void FetchStmt::set_direction(::pg_query::FetchDirection value) { _internal_set_direction(value); // @@protoc_insertion_point(field_set:pg_query.FetchStmt.direction) } // int64 how_many = 2 [json_name = "howMany"]; inline void FetchStmt::clear_how_many() { _impl_.how_many_ = int64_t{0}; } inline int64_t FetchStmt::_internal_how_many() const { return _impl_.how_many_; } inline int64_t FetchStmt::how_many() const { // @@protoc_insertion_point(field_get:pg_query.FetchStmt.how_many) return _internal_how_many(); } inline void FetchStmt::_internal_set_how_many(int64_t value) { _impl_.how_many_ = value; } inline void FetchStmt::set_how_many(int64_t value) { _internal_set_how_many(value); // @@protoc_insertion_point(field_set:pg_query.FetchStmt.how_many) } // string portalname = 3 [json_name = "portalname"]; inline void FetchStmt::clear_portalname() { _impl_.portalname_.ClearToEmpty(); } inline const std::string& FetchStmt::portalname() const { // @@protoc_insertion_point(field_get:pg_query.FetchStmt.portalname) return _internal_portalname(); } template inline PROTOBUF_ALWAYS_INLINE void FetchStmt::set_portalname(ArgT0&& arg0, ArgT... args) { _impl_.portalname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.FetchStmt.portalname) } inline std::string* FetchStmt::mutable_portalname() { 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 { return _impl_.portalname_.Get(); } inline void FetchStmt::_internal_set_portalname(const std::string& value) { _impl_.portalname_.Set(value, GetArenaForAllocation()); } inline std::string* FetchStmt::_internal_mutable_portalname() { return _impl_.portalname_.Mutable(GetArenaForAllocation()); } inline std::string* FetchStmt::release_portalname() { // @@protoc_insertion_point(field_release:pg_query.FetchStmt.portalname) return _impl_.portalname_.Release(); } inline void FetchStmt::set_allocated_portalname(std::string* portalname) { if (portalname != nullptr) { } else { } _impl_.portalname_.SetAllocated(portalname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.portalname_.IsDefault()) { _impl_.portalname_.Set("", GetArenaForAllocation()); } #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() { _impl_.ismove_ = false; } inline bool FetchStmt::_internal_ismove() const { return _impl_.ismove_; } inline bool FetchStmt::ismove() const { // @@protoc_insertion_point(field_get:pg_query.FetchStmt.ismove) return _internal_ismove(); } inline void FetchStmt::_internal_set_ismove(bool value) { _impl_.ismove_ = value; } inline void FetchStmt::set_ismove(bool value) { _internal_set_ismove(value); // @@protoc_insertion_point(field_set:pg_query.FetchStmt.ismove) } // ------------------------------------------------------------------- // IndexStmt // string idxname = 1 [json_name = "idxname"]; inline void IndexStmt::clear_idxname() { _impl_.idxname_.ClearToEmpty(); } inline const std::string& IndexStmt::idxname() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.idxname) return _internal_idxname(); } template inline PROTOBUF_ALWAYS_INLINE void IndexStmt::set_idxname(ArgT0&& arg0, ArgT... args) { _impl_.idxname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.idxname) } inline std::string* IndexStmt::mutable_idxname() { 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 { return _impl_.idxname_.Get(); } inline void IndexStmt::_internal_set_idxname(const std::string& value) { _impl_.idxname_.Set(value, GetArenaForAllocation()); } inline std::string* IndexStmt::_internal_mutable_idxname() { return _impl_.idxname_.Mutable(GetArenaForAllocation()); } inline std::string* IndexStmt::release_idxname() { // @@protoc_insertion_point(field_release:pg_query.IndexStmt.idxname) return _impl_.idxname_.Release(); } inline void IndexStmt::set_allocated_idxname(std::string* idxname) { if (idxname != nullptr) { } else { } _impl_.idxname_.SetAllocated(idxname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.idxname_.IsDefault()) { _impl_.idxname_.Set("", GetArenaForAllocation()); } #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::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool IndexStmt::has_relation() const { return _internal_has_relation(); } inline void IndexStmt::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& IndexStmt::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.relation) return _internal_relation(); } inline void IndexStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IndexStmt.relation) } inline ::pg_query::RangeVar* IndexStmt::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* IndexStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.IndexStmt.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* IndexStmt::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* IndexStmt::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.relation) } // string access_method = 3 [json_name = "accessMethod"]; inline void IndexStmt::clear_access_method() { _impl_.access_method_.ClearToEmpty(); } inline const std::string& IndexStmt::access_method() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.access_method) return _internal_access_method(); } template inline PROTOBUF_ALWAYS_INLINE void IndexStmt::set_access_method(ArgT0&& arg0, ArgT... args) { _impl_.access_method_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.access_method) } inline std::string* IndexStmt::mutable_access_method() { 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 { return _impl_.access_method_.Get(); } inline void IndexStmt::_internal_set_access_method(const std::string& value) { _impl_.access_method_.Set(value, GetArenaForAllocation()); } inline std::string* IndexStmt::_internal_mutable_access_method() { return _impl_.access_method_.Mutable(GetArenaForAllocation()); } inline std::string* IndexStmt::release_access_method() { // @@protoc_insertion_point(field_release:pg_query.IndexStmt.access_method) return _impl_.access_method_.Release(); } inline void IndexStmt::set_allocated_access_method(std::string* access_method) { if (access_method != nullptr) { } else { } _impl_.access_method_.SetAllocated(access_method, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.access_method_.IsDefault()) { _impl_.access_method_.Set("", GetArenaForAllocation()); } #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() { _impl_.table_space_.ClearToEmpty(); } inline const std::string& IndexStmt::table_space() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.table_space) return _internal_table_space(); } template inline PROTOBUF_ALWAYS_INLINE void IndexStmt::set_table_space(ArgT0&& arg0, ArgT... args) { _impl_.table_space_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.table_space) } inline std::string* IndexStmt::mutable_table_space() { 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 { return _impl_.table_space_.Get(); } inline void IndexStmt::_internal_set_table_space(const std::string& value) { _impl_.table_space_.Set(value, GetArenaForAllocation()); } inline std::string* IndexStmt::_internal_mutable_table_space() { return _impl_.table_space_.Mutable(GetArenaForAllocation()); } inline std::string* IndexStmt::release_table_space() { // @@protoc_insertion_point(field_release:pg_query.IndexStmt.table_space) return _impl_.table_space_.Release(); } inline void IndexStmt::set_allocated_table_space(std::string* table_space) { if (table_space != nullptr) { } else { } _impl_.table_space_.SetAllocated(table_space, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.table_space_.IsDefault()) { _impl_.table_space_.Set("", GetArenaForAllocation()); } #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 _impl_.index_params_.size(); } inline int IndexStmt::index_params_size() const { return _internal_index_params_size(); } inline void IndexStmt::clear_index_params() { _impl_.index_params_.Clear(); } inline ::pg_query::Node* IndexStmt::mutable_index_params(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.index_params) return _impl_.index_params_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IndexStmt::mutable_index_params() { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexStmt.index_params) return &_impl_.index_params_; } inline const ::pg_query::Node& IndexStmt::_internal_index_params(int index) const { return _impl_.index_params_.Get(index); } inline const ::pg_query::Node& IndexStmt::index_params(int index) const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.index_params) return _internal_index_params(index); } inline ::pg_query::Node* IndexStmt::_internal_add_index_params() { return _impl_.index_params_.Add(); } inline ::pg_query::Node* IndexStmt::add_index_params() { ::pg_query::Node* _add = _internal_add_index_params(); // @@protoc_insertion_point(field_add:pg_query.IndexStmt.index_params) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IndexStmt::index_params() const { // @@protoc_insertion_point(field_list:pg_query.IndexStmt.index_params) 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 _impl_.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() { _impl_.index_including_params_.Clear(); } inline ::pg_query::Node* IndexStmt::mutable_index_including_params(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.index_including_params) return _impl_.index_including_params_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IndexStmt::mutable_index_including_params() { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexStmt.index_including_params) return &_impl_.index_including_params_; } inline const ::pg_query::Node& IndexStmt::_internal_index_including_params(int index) const { return _impl_.index_including_params_.Get(index); } inline const ::pg_query::Node& IndexStmt::index_including_params(int index) const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.index_including_params) return _internal_index_including_params(index); } inline ::pg_query::Node* IndexStmt::_internal_add_index_including_params() { return _impl_.index_including_params_.Add(); } inline ::pg_query::Node* IndexStmt::add_index_including_params() { ::pg_query::Node* _add = _internal_add_index_including_params(); // @@protoc_insertion_point(field_add:pg_query.IndexStmt.index_including_params) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IndexStmt::index_including_params() const { // @@protoc_insertion_point(field_list:pg_query.IndexStmt.index_including_params) return _impl_.index_including_params_; } // repeated .pg_query.Node options = 7 [json_name = "options"]; inline int IndexStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int IndexStmt::options_size() const { return _internal_options_size(); } inline void IndexStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* IndexStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IndexStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& IndexStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& IndexStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.options) return _internal_options(index); } inline ::pg_query::Node* IndexStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* IndexStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.IndexStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IndexStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.IndexStmt.options) return _impl_.options_; } // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; inline bool IndexStmt::_internal_has_where_clause() const { return this != internal_default_instance() && _impl_.where_clause_ != nullptr; } inline bool IndexStmt::has_where_clause() const { return _internal_has_where_clause(); } inline void IndexStmt::clear_where_clause() { if (GetArenaForAllocation() == nullptr && _impl_.where_clause_ != nullptr) { delete _impl_.where_clause_; } _impl_.where_clause_ = nullptr; } inline const ::pg_query::Node& IndexStmt::_internal_where_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.where_clause) return _internal_where_clause(); } inline void IndexStmt::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IndexStmt.where_clause) } inline ::pg_query::Node* IndexStmt::release_where_clause() { ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* IndexStmt::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.IndexStmt.where_clause) ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* IndexStmt::_internal_mutable_where_clause() { if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.where_clause_ = p; } return _impl_.where_clause_; } inline ::pg_query::Node* IndexStmt::mutable_where_clause() { ::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* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } _impl_.where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.where_clause) } // repeated .pg_query.Node exclude_op_names = 9 [json_name = "excludeOpNames"]; inline int IndexStmt::_internal_exclude_op_names_size() const { return _impl_.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() { _impl_.exclude_op_names_.Clear(); } inline ::pg_query::Node* IndexStmt::mutable_exclude_op_names(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.exclude_op_names) return _impl_.exclude_op_names_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IndexStmt::mutable_exclude_op_names() { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexStmt.exclude_op_names) return &_impl_.exclude_op_names_; } inline const ::pg_query::Node& IndexStmt::_internal_exclude_op_names(int index) const { return _impl_.exclude_op_names_.Get(index); } inline const ::pg_query::Node& IndexStmt::exclude_op_names(int index) const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.exclude_op_names) return _internal_exclude_op_names(index); } inline ::pg_query::Node* IndexStmt::_internal_add_exclude_op_names() { return _impl_.exclude_op_names_.Add(); } inline ::pg_query::Node* IndexStmt::add_exclude_op_names() { ::pg_query::Node* _add = _internal_add_exclude_op_names(); // @@protoc_insertion_point(field_add:pg_query.IndexStmt.exclude_op_names) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IndexStmt::exclude_op_names() const { // @@protoc_insertion_point(field_list:pg_query.IndexStmt.exclude_op_names) return _impl_.exclude_op_names_; } // string idxcomment = 10 [json_name = "idxcomment"]; inline void IndexStmt::clear_idxcomment() { _impl_.idxcomment_.ClearToEmpty(); } inline const std::string& IndexStmt::idxcomment() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.idxcomment) return _internal_idxcomment(); } template inline PROTOBUF_ALWAYS_INLINE void IndexStmt::set_idxcomment(ArgT0&& arg0, ArgT... args) { _impl_.idxcomment_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.idxcomment) } inline std::string* IndexStmt::mutable_idxcomment() { 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 { return _impl_.idxcomment_.Get(); } inline void IndexStmt::_internal_set_idxcomment(const std::string& value) { _impl_.idxcomment_.Set(value, GetArenaForAllocation()); } inline std::string* IndexStmt::_internal_mutable_idxcomment() { return _impl_.idxcomment_.Mutable(GetArenaForAllocation()); } inline std::string* IndexStmt::release_idxcomment() { // @@protoc_insertion_point(field_release:pg_query.IndexStmt.idxcomment) return _impl_.idxcomment_.Release(); } inline void IndexStmt::set_allocated_idxcomment(std::string* idxcomment) { if (idxcomment != nullptr) { } else { } _impl_.idxcomment_.SetAllocated(idxcomment, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.idxcomment_.IsDefault()) { _impl_.idxcomment_.Set("", GetArenaForAllocation()); } #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() { _impl_.index_oid_ = 0u; } inline uint32_t IndexStmt::_internal_index_oid() const { return _impl_.index_oid_; } inline uint32_t IndexStmt::index_oid() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.index_oid) return _internal_index_oid(); } inline void IndexStmt::_internal_set_index_oid(uint32_t value) { _impl_.index_oid_ = value; } inline void IndexStmt::set_index_oid(uint32_t value) { _internal_set_index_oid(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.index_oid) } // uint32 old_node = 12 [json_name = "oldNode"]; inline void IndexStmt::clear_old_node() { _impl_.old_node_ = 0u; } inline uint32_t IndexStmt::_internal_old_node() const { return _impl_.old_node_; } inline uint32_t IndexStmt::old_node() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.old_node) return _internal_old_node(); } inline void IndexStmt::_internal_set_old_node(uint32_t value) { _impl_.old_node_ = value; } inline void IndexStmt::set_old_node(uint32_t value) { _internal_set_old_node(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.old_node) } // uint32 old_create_subid = 13 [json_name = "oldCreateSubid"]; inline void IndexStmt::clear_old_create_subid() { _impl_.old_create_subid_ = 0u; } inline uint32_t IndexStmt::_internal_old_create_subid() const { return _impl_.old_create_subid_; } 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::_internal_set_old_create_subid(uint32_t value) { _impl_.old_create_subid_ = value; } 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) } // uint32 old_first_relfilenode_subid = 14 [json_name = "oldFirstRelfilenodeSubid"]; inline void IndexStmt::clear_old_first_relfilenode_subid() { _impl_.old_first_relfilenode_subid_ = 0u; } inline uint32_t IndexStmt::_internal_old_first_relfilenode_subid() const { return _impl_.old_first_relfilenode_subid_; } inline uint32_t IndexStmt::old_first_relfilenode_subid() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.old_first_relfilenode_subid) return _internal_old_first_relfilenode_subid(); } inline void IndexStmt::_internal_set_old_first_relfilenode_subid(uint32_t value) { _impl_.old_first_relfilenode_subid_ = value; } inline void IndexStmt::set_old_first_relfilenode_subid(uint32_t value) { _internal_set_old_first_relfilenode_subid(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.old_first_relfilenode_subid) } // bool unique = 15 [json_name = "unique"]; inline void IndexStmt::clear_unique() { _impl_.unique_ = false; } inline bool IndexStmt::_internal_unique() const { return _impl_.unique_; } inline bool IndexStmt::unique() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.unique) return _internal_unique(); } inline void IndexStmt::_internal_set_unique(bool value) { _impl_.unique_ = value; } inline void IndexStmt::set_unique(bool value) { _internal_set_unique(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.unique) } // bool nulls_not_distinct = 16 [json_name = "nulls_not_distinct"]; inline void IndexStmt::clear_nulls_not_distinct() { _impl_.nulls_not_distinct_ = false; } inline bool IndexStmt::_internal_nulls_not_distinct() const { return _impl_.nulls_not_distinct_; } 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::_internal_set_nulls_not_distinct(bool value) { _impl_.nulls_not_distinct_ = value; } 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) } // bool primary = 17 [json_name = "primary"]; inline void IndexStmt::clear_primary() { _impl_.primary_ = false; } inline bool IndexStmt::_internal_primary() const { return _impl_.primary_; } inline bool IndexStmt::primary() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.primary) return _internal_primary(); } inline void IndexStmt::_internal_set_primary(bool value) { _impl_.primary_ = value; } inline void IndexStmt::set_primary(bool value) { _internal_set_primary(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.primary) } // bool isconstraint = 18 [json_name = "isconstraint"]; inline void IndexStmt::clear_isconstraint() { _impl_.isconstraint_ = false; } inline bool IndexStmt::_internal_isconstraint() const { return _impl_.isconstraint_; } inline bool IndexStmt::isconstraint() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.isconstraint) return _internal_isconstraint(); } inline void IndexStmt::_internal_set_isconstraint(bool value) { _impl_.isconstraint_ = value; } inline void IndexStmt::set_isconstraint(bool value) { _internal_set_isconstraint(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.isconstraint) } // bool deferrable = 19 [json_name = "deferrable"]; inline void IndexStmt::clear_deferrable() { _impl_.deferrable_ = false; } inline bool IndexStmt::_internal_deferrable() const { return _impl_.deferrable_; } inline bool IndexStmt::deferrable() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.deferrable) return _internal_deferrable(); } inline void IndexStmt::_internal_set_deferrable(bool value) { _impl_.deferrable_ = value; } inline void IndexStmt::set_deferrable(bool value) { _internal_set_deferrable(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.deferrable) } // bool initdeferred = 20 [json_name = "initdeferred"]; inline void IndexStmt::clear_initdeferred() { _impl_.initdeferred_ = false; } inline bool IndexStmt::_internal_initdeferred() const { return _impl_.initdeferred_; } inline bool IndexStmt::initdeferred() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.initdeferred) return _internal_initdeferred(); } inline void IndexStmt::_internal_set_initdeferred(bool value) { _impl_.initdeferred_ = value; } inline void IndexStmt::set_initdeferred(bool value) { _internal_set_initdeferred(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.initdeferred) } // bool transformed = 21 [json_name = "transformed"]; inline void IndexStmt::clear_transformed() { _impl_.transformed_ = false; } inline bool IndexStmt::_internal_transformed() const { return _impl_.transformed_; } inline bool IndexStmt::transformed() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.transformed) return _internal_transformed(); } inline void IndexStmt::_internal_set_transformed(bool value) { _impl_.transformed_ = value; } inline void IndexStmt::set_transformed(bool value) { _internal_set_transformed(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.transformed) } // bool concurrent = 22 [json_name = "concurrent"]; inline void IndexStmt::clear_concurrent() { _impl_.concurrent_ = false; } inline bool IndexStmt::_internal_concurrent() const { return _impl_.concurrent_; } inline bool IndexStmt::concurrent() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.concurrent) return _internal_concurrent(); } inline void IndexStmt::_internal_set_concurrent(bool value) { _impl_.concurrent_ = value; } inline void IndexStmt::set_concurrent(bool value) { _internal_set_concurrent(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.concurrent) } // bool if_not_exists = 23 [json_name = "if_not_exists"]; inline void IndexStmt::clear_if_not_exists() { _impl_.if_not_exists_ = false; } inline bool IndexStmt::_internal_if_not_exists() const { return _impl_.if_not_exists_; } inline bool IndexStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.if_not_exists) return _internal_if_not_exists(); } inline void IndexStmt::_internal_set_if_not_exists(bool value) { _impl_.if_not_exists_ = value; } inline void IndexStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.if_not_exists) } // bool reset_default_tblspc = 24 [json_name = "reset_default_tblspc"]; inline void IndexStmt::clear_reset_default_tblspc() { _impl_.reset_default_tblspc_ = false; } inline bool IndexStmt::_internal_reset_default_tblspc() const { return _impl_.reset_default_tblspc_; } inline bool IndexStmt::reset_default_tblspc() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.reset_default_tblspc) return _internal_reset_default_tblspc(); } inline void IndexStmt::_internal_set_reset_default_tblspc(bool value) { _impl_.reset_default_tblspc_ = value; } inline void IndexStmt::set_reset_default_tblspc(bool value) { _internal_set_reset_default_tblspc(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.reset_default_tblspc) } // ------------------------------------------------------------------- // CreateFunctionStmt // bool is_procedure = 1 [json_name = "is_procedure"]; inline void CreateFunctionStmt::clear_is_procedure() { _impl_.is_procedure_ = false; } inline bool CreateFunctionStmt::_internal_is_procedure() const { return _impl_.is_procedure_; } inline bool CreateFunctionStmt::is_procedure() const { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.is_procedure) return _internal_is_procedure(); } inline void CreateFunctionStmt::_internal_set_is_procedure(bool value) { _impl_.is_procedure_ = value; } inline void CreateFunctionStmt::set_is_procedure(bool value) { _internal_set_is_procedure(value); // @@protoc_insertion_point(field_set:pg_query.CreateFunctionStmt.is_procedure) } // bool replace = 2 [json_name = "replace"]; inline void CreateFunctionStmt::clear_replace() { _impl_.replace_ = false; } inline bool CreateFunctionStmt::_internal_replace() const { return _impl_.replace_; } inline bool CreateFunctionStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.replace) return _internal_replace(); } inline void CreateFunctionStmt::_internal_set_replace(bool value) { _impl_.replace_ = value; } inline void CreateFunctionStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.CreateFunctionStmt.replace) } // repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; inline int CreateFunctionStmt::_internal_funcname_size() const { return _impl_.funcname_.size(); } inline int CreateFunctionStmt::funcname_size() const { return _internal_funcname_size(); } inline void CreateFunctionStmt::clear_funcname() { _impl_.funcname_.Clear(); } inline ::pg_query::Node* CreateFunctionStmt::mutable_funcname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateFunctionStmt.funcname) return _impl_.funcname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateFunctionStmt::mutable_funcname() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFunctionStmt.funcname) return &_impl_.funcname_; } inline const ::pg_query::Node& CreateFunctionStmt::_internal_funcname(int index) const { return _impl_.funcname_.Get(index); } inline const ::pg_query::Node& CreateFunctionStmt::funcname(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.funcname) return _internal_funcname(index); } inline ::pg_query::Node* CreateFunctionStmt::_internal_add_funcname() { return _impl_.funcname_.Add(); } inline ::pg_query::Node* CreateFunctionStmt::add_funcname() { ::pg_query::Node* _add = _internal_add_funcname(); // @@protoc_insertion_point(field_add:pg_query.CreateFunctionStmt.funcname) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateFunctionStmt::funcname() const { // @@protoc_insertion_point(field_list:pg_query.CreateFunctionStmt.funcname) return _impl_.funcname_; } // repeated .pg_query.Node parameters = 4 [json_name = "parameters"]; inline int CreateFunctionStmt::_internal_parameters_size() const { return _impl_.parameters_.size(); } inline int CreateFunctionStmt::parameters_size() const { return _internal_parameters_size(); } inline void CreateFunctionStmt::clear_parameters() { _impl_.parameters_.Clear(); } inline ::pg_query::Node* CreateFunctionStmt::mutable_parameters(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateFunctionStmt.parameters) return _impl_.parameters_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateFunctionStmt::mutable_parameters() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFunctionStmt.parameters) return &_impl_.parameters_; } inline const ::pg_query::Node& CreateFunctionStmt::_internal_parameters(int index) const { return _impl_.parameters_.Get(index); } inline const ::pg_query::Node& CreateFunctionStmt::parameters(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.parameters) return _internal_parameters(index); } inline ::pg_query::Node* CreateFunctionStmt::_internal_add_parameters() { return _impl_.parameters_.Add(); } inline ::pg_query::Node* CreateFunctionStmt::add_parameters() { ::pg_query::Node* _add = _internal_add_parameters(); // @@protoc_insertion_point(field_add:pg_query.CreateFunctionStmt.parameters) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateFunctionStmt::parameters() const { // @@protoc_insertion_point(field_list:pg_query.CreateFunctionStmt.parameters) return _impl_.parameters_; } // .pg_query.TypeName return_type = 5 [json_name = "returnType"]; inline bool CreateFunctionStmt::_internal_has_return_type() const { return this != internal_default_instance() && _impl_.return_type_ != nullptr; } inline bool CreateFunctionStmt::has_return_type() const { return _internal_has_return_type(); } inline void CreateFunctionStmt::clear_return_type() { if (GetArenaForAllocation() == nullptr && _impl_.return_type_ != nullptr) { delete _impl_.return_type_; } _impl_.return_type_ = nullptr; } inline const ::pg_query::TypeName& CreateFunctionStmt::_internal_return_type() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.return_type) return _internal_return_type(); } inline void CreateFunctionStmt::unsafe_arena_set_allocated_return_type( ::pg_query::TypeName* return_type) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.return_type_); } _impl_.return_type_ = return_type; if (return_type) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateFunctionStmt.return_type) } inline ::pg_query::TypeName* CreateFunctionStmt::release_return_type() { ::pg_query::TypeName* temp = _impl_.return_type_; _impl_.return_type_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::TypeName* CreateFunctionStmt::unsafe_arena_release_return_type() { // @@protoc_insertion_point(field_release:pg_query.CreateFunctionStmt.return_type) ::pg_query::TypeName* temp = _impl_.return_type_; _impl_.return_type_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateFunctionStmt::_internal_mutable_return_type() { if (_impl_.return_type_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArenaForAllocation()); _impl_.return_type_ = p; } return _impl_.return_type_; } inline ::pg_query::TypeName* CreateFunctionStmt::mutable_return_type() { ::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* return_type) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.return_type_; } if (return_type) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(return_type); if (message_arena != submessage_arena) { return_type = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, return_type, submessage_arena); } } else { } _impl_.return_type_ = return_type; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateFunctionStmt.return_type) } // repeated .pg_query.Node options = 6 [json_name = "options"]; inline int CreateFunctionStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int CreateFunctionStmt::options_size() const { return _internal_options_size(); } inline void CreateFunctionStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* CreateFunctionStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateFunctionStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateFunctionStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFunctionStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& CreateFunctionStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& CreateFunctionStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateFunctionStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* CreateFunctionStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.CreateFunctionStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateFunctionStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateFunctionStmt.options) return _impl_.options_; } // .pg_query.Node sql_body = 7 [json_name = "sql_body"]; inline bool CreateFunctionStmt::_internal_has_sql_body() const { return this != internal_default_instance() && _impl_.sql_body_ != nullptr; } inline bool CreateFunctionStmt::has_sql_body() const { return _internal_has_sql_body(); } inline void CreateFunctionStmt::clear_sql_body() { if (GetArenaForAllocation() == nullptr && _impl_.sql_body_ != nullptr) { delete _impl_.sql_body_; } _impl_.sql_body_ = nullptr; } inline const ::pg_query::Node& CreateFunctionStmt::_internal_sql_body() const { 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 { // @@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* sql_body) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.sql_body_); } _impl_.sql_body_ = sql_body; if (sql_body) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateFunctionStmt.sql_body) } inline ::pg_query::Node* CreateFunctionStmt::release_sql_body() { ::pg_query::Node* temp = _impl_.sql_body_; _impl_.sql_body_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CreateFunctionStmt::unsafe_arena_release_sql_body() { // @@protoc_insertion_point(field_release:pg_query.CreateFunctionStmt.sql_body) ::pg_query::Node* temp = _impl_.sql_body_; _impl_.sql_body_ = nullptr; return temp; } inline ::pg_query::Node* CreateFunctionStmt::_internal_mutable_sql_body() { if (_impl_.sql_body_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.sql_body_ = p; } return _impl_.sql_body_; } inline ::pg_query::Node* CreateFunctionStmt::mutable_sql_body() { ::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* sql_body) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.sql_body_; } if (sql_body) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(sql_body); if (message_arena != submessage_arena) { sql_body = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, sql_body, submessage_arena); } } else { } _impl_.sql_body_ = sql_body; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateFunctionStmt.sql_body) } // ------------------------------------------------------------------- // AlterFunctionStmt // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; inline void AlterFunctionStmt::clear_objtype() { _impl_.objtype_ = 0; } inline ::pg_query::ObjectType AlterFunctionStmt::_internal_objtype() const { return static_cast< ::pg_query::ObjectType >(_impl_.objtype_); } inline ::pg_query::ObjectType AlterFunctionStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.AlterFunctionStmt.objtype) return _internal_objtype(); } inline void AlterFunctionStmt::_internal_set_objtype(::pg_query::ObjectType value) { _impl_.objtype_ = value; } inline void AlterFunctionStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.AlterFunctionStmt.objtype) } // .pg_query.ObjectWithArgs func = 2 [json_name = "func"]; inline bool AlterFunctionStmt::_internal_has_func() const { return this != internal_default_instance() && _impl_.func_ != nullptr; } inline bool AlterFunctionStmt::has_func() const { return _internal_has_func(); } inline void AlterFunctionStmt::clear_func() { if (GetArenaForAllocation() == nullptr && _impl_.func_ != nullptr) { delete _impl_.func_; } _impl_.func_ = nullptr; } inline const ::pg_query::ObjectWithArgs& AlterFunctionStmt::_internal_func() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterFunctionStmt.func) return _internal_func(); } inline void AlterFunctionStmt::unsafe_arena_set_allocated_func( ::pg_query::ObjectWithArgs* func) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.func_); } _impl_.func_ = func; if (func) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterFunctionStmt.func) } inline ::pg_query::ObjectWithArgs* AlterFunctionStmt::release_func() { ::pg_query::ObjectWithArgs* temp = _impl_.func_; _impl_.func_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::ObjectWithArgs* AlterFunctionStmt::unsafe_arena_release_func() { // @@protoc_insertion_point(field_release:pg_query.AlterFunctionStmt.func) ::pg_query::ObjectWithArgs* temp = _impl_.func_; _impl_.func_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* AlterFunctionStmt::_internal_mutable_func() { if (_impl_.func_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArenaForAllocation()); _impl_.func_ = p; } return _impl_.func_; } inline ::pg_query::ObjectWithArgs* AlterFunctionStmt::mutable_func() { ::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* func) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.func_; } if (func) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(func); if (message_arena != submessage_arena) { func = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, func, submessage_arena); } } else { } _impl_.func_ = func; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterFunctionStmt.func) } // repeated .pg_query.Node actions = 3 [json_name = "actions"]; inline int AlterFunctionStmt::_internal_actions_size() const { return _impl_.actions_.size(); } inline int AlterFunctionStmt::actions_size() const { return _internal_actions_size(); } inline void AlterFunctionStmt::clear_actions() { _impl_.actions_.Clear(); } inline ::pg_query::Node* AlterFunctionStmt::mutable_actions(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterFunctionStmt.actions) return _impl_.actions_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterFunctionStmt::mutable_actions() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterFunctionStmt.actions) return &_impl_.actions_; } inline const ::pg_query::Node& AlterFunctionStmt::_internal_actions(int index) const { return _impl_.actions_.Get(index); } inline const ::pg_query::Node& AlterFunctionStmt::actions(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterFunctionStmt.actions) return _internal_actions(index); } inline ::pg_query::Node* AlterFunctionStmt::_internal_add_actions() { return _impl_.actions_.Add(); } inline ::pg_query::Node* AlterFunctionStmt::add_actions() { ::pg_query::Node* _add = _internal_add_actions(); // @@protoc_insertion_point(field_add:pg_query.AlterFunctionStmt.actions) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterFunctionStmt::actions() const { // @@protoc_insertion_point(field_list:pg_query.AlterFunctionStmt.actions) return _impl_.actions_; } // ------------------------------------------------------------------- // DoStmt // repeated .pg_query.Node args = 1 [json_name = "args"]; inline int DoStmt::_internal_args_size() const { return _impl_.args_.size(); } inline int DoStmt::args_size() const { return _internal_args_size(); } inline void DoStmt::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* DoStmt::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DoStmt.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DoStmt::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.DoStmt.args) return &_impl_.args_; } inline const ::pg_query::Node& DoStmt::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& DoStmt::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.DoStmt.args) return _internal_args(index); } inline ::pg_query::Node* DoStmt::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* DoStmt::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.DoStmt.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DoStmt::args() const { // @@protoc_insertion_point(field_list:pg_query.DoStmt.args) return _impl_.args_; } // ------------------------------------------------------------------- // RenameStmt // .pg_query.ObjectType rename_type = 1 [json_name = "renameType"]; inline void RenameStmt::clear_rename_type() { _impl_.rename_type_ = 0; } inline ::pg_query::ObjectType RenameStmt::_internal_rename_type() const { return static_cast< ::pg_query::ObjectType >(_impl_.rename_type_); } inline ::pg_query::ObjectType RenameStmt::rename_type() const { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.rename_type) return _internal_rename_type(); } inline void RenameStmt::_internal_set_rename_type(::pg_query::ObjectType value) { _impl_.rename_type_ = value; } inline void RenameStmt::set_rename_type(::pg_query::ObjectType value) { _internal_set_rename_type(value); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.rename_type) } // .pg_query.ObjectType relation_type = 2 [json_name = "relationType"]; inline void RenameStmt::clear_relation_type() { _impl_.relation_type_ = 0; } inline ::pg_query::ObjectType RenameStmt::_internal_relation_type() const { return static_cast< ::pg_query::ObjectType >(_impl_.relation_type_); } inline ::pg_query::ObjectType RenameStmt::relation_type() const { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.relation_type) return _internal_relation_type(); } inline void RenameStmt::_internal_set_relation_type(::pg_query::ObjectType value) { _impl_.relation_type_ = value; } inline void RenameStmt::set_relation_type(::pg_query::ObjectType value) { _internal_set_relation_type(value); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.relation_type) } // .pg_query.RangeVar relation = 3 [json_name = "relation"]; inline bool RenameStmt::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool RenameStmt::has_relation() const { return _internal_has_relation(); } inline void RenameStmt::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& RenameStmt::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.relation) return _internal_relation(); } inline void RenameStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RenameStmt.relation) } inline ::pg_query::RangeVar* RenameStmt::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* RenameStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.RenameStmt.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* RenameStmt::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* RenameStmt::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.RenameStmt.relation) } // .pg_query.Node object = 4 [json_name = "object"]; inline bool RenameStmt::_internal_has_object() const { return this != internal_default_instance() && _impl_.object_ != nullptr; } inline bool RenameStmt::has_object() const { return _internal_has_object(); } inline void RenameStmt::clear_object() { if (GetArenaForAllocation() == nullptr && _impl_.object_ != nullptr) { delete _impl_.object_; } _impl_.object_ = nullptr; } inline const ::pg_query::Node& RenameStmt::_internal_object() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.object) return _internal_object(); } inline void RenameStmt::unsafe_arena_set_allocated_object( ::pg_query::Node* object) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.object_); } _impl_.object_ = object; if (object) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RenameStmt.object) } inline ::pg_query::Node* RenameStmt::release_object() { ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* RenameStmt::unsafe_arena_release_object() { // @@protoc_insertion_point(field_release:pg_query.RenameStmt.object) ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; return temp; } inline ::pg_query::Node* RenameStmt::_internal_mutable_object() { if (_impl_.object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.object_ = p; } return _impl_.object_; } inline ::pg_query::Node* RenameStmt::mutable_object() { ::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* object) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.object_; } if (object) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(object); if (message_arena != submessage_arena) { object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, object, submessage_arena); } } else { } _impl_.object_ = object; // @@protoc_insertion_point(field_set_allocated:pg_query.RenameStmt.object) } // string subname = 5 [json_name = "subname"]; inline void RenameStmt::clear_subname() { _impl_.subname_.ClearToEmpty(); } inline const std::string& RenameStmt::subname() const { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.subname) return _internal_subname(); } template inline PROTOBUF_ALWAYS_INLINE void RenameStmt::set_subname(ArgT0&& arg0, ArgT... args) { _impl_.subname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.subname) } inline std::string* RenameStmt::mutable_subname() { 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 { return _impl_.subname_.Get(); } inline void RenameStmt::_internal_set_subname(const std::string& value) { _impl_.subname_.Set(value, GetArenaForAllocation()); } inline std::string* RenameStmt::_internal_mutable_subname() { return _impl_.subname_.Mutable(GetArenaForAllocation()); } inline std::string* RenameStmt::release_subname() { // @@protoc_insertion_point(field_release:pg_query.RenameStmt.subname) return _impl_.subname_.Release(); } inline void RenameStmt::set_allocated_subname(std::string* subname) { if (subname != nullptr) { } else { } _impl_.subname_.SetAllocated(subname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.subname_.IsDefault()) { _impl_.subname_.Set("", GetArenaForAllocation()); } #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() { _impl_.newname_.ClearToEmpty(); } inline const std::string& RenameStmt::newname() const { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.newname) return _internal_newname(); } template inline PROTOBUF_ALWAYS_INLINE void RenameStmt::set_newname(ArgT0&& arg0, ArgT... args) { _impl_.newname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.newname) } inline std::string* RenameStmt::mutable_newname() { 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 { return _impl_.newname_.Get(); } inline void RenameStmt::_internal_set_newname(const std::string& value) { _impl_.newname_.Set(value, GetArenaForAllocation()); } inline std::string* RenameStmt::_internal_mutable_newname() { return _impl_.newname_.Mutable(GetArenaForAllocation()); } inline std::string* RenameStmt::release_newname() { // @@protoc_insertion_point(field_release:pg_query.RenameStmt.newname) return _impl_.newname_.Release(); } inline void RenameStmt::set_allocated_newname(std::string* newname) { if (newname != nullptr) { } else { } _impl_.newname_.SetAllocated(newname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.newname_.IsDefault()) { _impl_.newname_.Set("", GetArenaForAllocation()); } #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() { _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior RenameStmt::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(_impl_.behavior_); } inline ::pg_query::DropBehavior RenameStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.behavior) return _internal_behavior(); } inline void RenameStmt::_internal_set_behavior(::pg_query::DropBehavior value) { _impl_.behavior_ = value; } inline void RenameStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.behavior) } // bool missing_ok = 8 [json_name = "missing_ok"]; inline void RenameStmt::clear_missing_ok() { _impl_.missing_ok_ = false; } inline bool RenameStmt::_internal_missing_ok() const { return _impl_.missing_ok_; } inline bool RenameStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.missing_ok) return _internal_missing_ok(); } inline void RenameStmt::_internal_set_missing_ok(bool value) { _impl_.missing_ok_ = value; } inline void RenameStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.missing_ok) } // ------------------------------------------------------------------- // RuleStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool RuleStmt::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool RuleStmt::has_relation() const { return _internal_has_relation(); } inline void RuleStmt::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& RuleStmt::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.relation) return _internal_relation(); } inline void RuleStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RuleStmt.relation) } inline ::pg_query::RangeVar* RuleStmt::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* RuleStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.RuleStmt.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* RuleStmt::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* RuleStmt::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.RuleStmt.relation) } // string rulename = 2 [json_name = "rulename"]; inline void RuleStmt::clear_rulename() { _impl_.rulename_.ClearToEmpty(); } inline const std::string& RuleStmt::rulename() const { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.rulename) return _internal_rulename(); } template inline PROTOBUF_ALWAYS_INLINE void RuleStmt::set_rulename(ArgT0&& arg0, ArgT... args) { _impl_.rulename_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.RuleStmt.rulename) } inline std::string* RuleStmt::mutable_rulename() { 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 { return _impl_.rulename_.Get(); } inline void RuleStmt::_internal_set_rulename(const std::string& value) { _impl_.rulename_.Set(value, GetArenaForAllocation()); } inline std::string* RuleStmt::_internal_mutable_rulename() { return _impl_.rulename_.Mutable(GetArenaForAllocation()); } inline std::string* RuleStmt::release_rulename() { // @@protoc_insertion_point(field_release:pg_query.RuleStmt.rulename) return _impl_.rulename_.Release(); } inline void RuleStmt::set_allocated_rulename(std::string* rulename) { if (rulename != nullptr) { } else { } _impl_.rulename_.SetAllocated(rulename, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.rulename_.IsDefault()) { _impl_.rulename_.Set("", GetArenaForAllocation()); } #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::_internal_has_where_clause() const { return this != internal_default_instance() && _impl_.where_clause_ != nullptr; } inline bool RuleStmt::has_where_clause() const { return _internal_has_where_clause(); } inline void RuleStmt::clear_where_clause() { if (GetArenaForAllocation() == nullptr && _impl_.where_clause_ != nullptr) { delete _impl_.where_clause_; } _impl_.where_clause_ = nullptr; } inline const ::pg_query::Node& RuleStmt::_internal_where_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.where_clause) return _internal_where_clause(); } inline void RuleStmt::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RuleStmt.where_clause) } inline ::pg_query::Node* RuleStmt::release_where_clause() { ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* RuleStmt::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.RuleStmt.where_clause) ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* RuleStmt::_internal_mutable_where_clause() { if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.where_clause_ = p; } return _impl_.where_clause_; } inline ::pg_query::Node* RuleStmt::mutable_where_clause() { ::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* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } _impl_.where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.RuleStmt.where_clause) } // .pg_query.CmdType event = 4 [json_name = "event"]; inline void RuleStmt::clear_event() { _impl_.event_ = 0; } inline ::pg_query::CmdType RuleStmt::_internal_event() const { return static_cast< ::pg_query::CmdType >(_impl_.event_); } inline ::pg_query::CmdType RuleStmt::event() const { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.event) return _internal_event(); } inline void RuleStmt::_internal_set_event(::pg_query::CmdType value) { _impl_.event_ = value; } inline void RuleStmt::set_event(::pg_query::CmdType value) { _internal_set_event(value); // @@protoc_insertion_point(field_set:pg_query.RuleStmt.event) } // bool instead = 5 [json_name = "instead"]; inline void RuleStmt::clear_instead() { _impl_.instead_ = false; } inline bool RuleStmt::_internal_instead() const { return _impl_.instead_; } inline bool RuleStmt::instead() const { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.instead) return _internal_instead(); } inline void RuleStmt::_internal_set_instead(bool value) { _impl_.instead_ = value; } inline void RuleStmt::set_instead(bool value) { _internal_set_instead(value); // @@protoc_insertion_point(field_set:pg_query.RuleStmt.instead) } // repeated .pg_query.Node actions = 6 [json_name = "actions"]; inline int RuleStmt::_internal_actions_size() const { return _impl_.actions_.size(); } inline int RuleStmt::actions_size() const { return _internal_actions_size(); } inline void RuleStmt::clear_actions() { _impl_.actions_.Clear(); } inline ::pg_query::Node* RuleStmt::mutable_actions(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RuleStmt.actions) return _impl_.actions_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RuleStmt::mutable_actions() { // @@protoc_insertion_point(field_mutable_list:pg_query.RuleStmt.actions) return &_impl_.actions_; } inline const ::pg_query::Node& RuleStmt::_internal_actions(int index) const { return _impl_.actions_.Get(index); } inline const ::pg_query::Node& RuleStmt::actions(int index) const { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.actions) return _internal_actions(index); } inline ::pg_query::Node* RuleStmt::_internal_add_actions() { return _impl_.actions_.Add(); } inline ::pg_query::Node* RuleStmt::add_actions() { ::pg_query::Node* _add = _internal_add_actions(); // @@protoc_insertion_point(field_add:pg_query.RuleStmt.actions) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RuleStmt::actions() const { // @@protoc_insertion_point(field_list:pg_query.RuleStmt.actions) return _impl_.actions_; } // bool replace = 7 [json_name = "replace"]; inline void RuleStmt::clear_replace() { _impl_.replace_ = false; } inline bool RuleStmt::_internal_replace() const { return _impl_.replace_; } inline bool RuleStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.replace) return _internal_replace(); } inline void RuleStmt::_internal_set_replace(bool value) { _impl_.replace_ = value; } inline void RuleStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.RuleStmt.replace) } // ------------------------------------------------------------------- // NotifyStmt // string conditionname = 1 [json_name = "conditionname"]; inline void NotifyStmt::clear_conditionname() { _impl_.conditionname_.ClearToEmpty(); } inline const std::string& NotifyStmt::conditionname() const { // @@protoc_insertion_point(field_get:pg_query.NotifyStmt.conditionname) return _internal_conditionname(); } template inline PROTOBUF_ALWAYS_INLINE void NotifyStmt::set_conditionname(ArgT0&& arg0, ArgT... args) { _impl_.conditionname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.NotifyStmt.conditionname) } inline std::string* NotifyStmt::mutable_conditionname() { 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 { return _impl_.conditionname_.Get(); } inline void NotifyStmt::_internal_set_conditionname(const std::string& value) { _impl_.conditionname_.Set(value, GetArenaForAllocation()); } inline std::string* NotifyStmt::_internal_mutable_conditionname() { return _impl_.conditionname_.Mutable(GetArenaForAllocation()); } inline std::string* NotifyStmt::release_conditionname() { // @@protoc_insertion_point(field_release:pg_query.NotifyStmt.conditionname) return _impl_.conditionname_.Release(); } inline void NotifyStmt::set_allocated_conditionname(std::string* conditionname) { if (conditionname != nullptr) { } else { } _impl_.conditionname_.SetAllocated(conditionname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.conditionname_.IsDefault()) { _impl_.conditionname_.Set("", GetArenaForAllocation()); } #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() { _impl_.payload_.ClearToEmpty(); } inline const std::string& NotifyStmt::payload() const { // @@protoc_insertion_point(field_get:pg_query.NotifyStmt.payload) return _internal_payload(); } template inline PROTOBUF_ALWAYS_INLINE void NotifyStmt::set_payload(ArgT0&& arg0, ArgT... args) { _impl_.payload_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.NotifyStmt.payload) } inline std::string* NotifyStmt::mutable_payload() { 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 { return _impl_.payload_.Get(); } inline void NotifyStmt::_internal_set_payload(const std::string& value) { _impl_.payload_.Set(value, GetArenaForAllocation()); } inline std::string* NotifyStmt::_internal_mutable_payload() { return _impl_.payload_.Mutable(GetArenaForAllocation()); } inline std::string* NotifyStmt::release_payload() { // @@protoc_insertion_point(field_release:pg_query.NotifyStmt.payload) return _impl_.payload_.Release(); } inline void NotifyStmt::set_allocated_payload(std::string* payload) { if (payload != nullptr) { } else { } _impl_.payload_.SetAllocated(payload, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.payload_.IsDefault()) { _impl_.payload_.Set("", GetArenaForAllocation()); } #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() { _impl_.conditionname_.ClearToEmpty(); } inline const std::string& ListenStmt::conditionname() const { // @@protoc_insertion_point(field_get:pg_query.ListenStmt.conditionname) return _internal_conditionname(); } template inline PROTOBUF_ALWAYS_INLINE void ListenStmt::set_conditionname(ArgT0&& arg0, ArgT... args) { _impl_.conditionname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.ListenStmt.conditionname) } inline std::string* ListenStmt::mutable_conditionname() { 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 { return _impl_.conditionname_.Get(); } inline void ListenStmt::_internal_set_conditionname(const std::string& value) { _impl_.conditionname_.Set(value, GetArenaForAllocation()); } inline std::string* ListenStmt::_internal_mutable_conditionname() { return _impl_.conditionname_.Mutable(GetArenaForAllocation()); } inline std::string* ListenStmt::release_conditionname() { // @@protoc_insertion_point(field_release:pg_query.ListenStmt.conditionname) return _impl_.conditionname_.Release(); } inline void ListenStmt::set_allocated_conditionname(std::string* conditionname) { if (conditionname != nullptr) { } else { } _impl_.conditionname_.SetAllocated(conditionname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.conditionname_.IsDefault()) { _impl_.conditionname_.Set("", GetArenaForAllocation()); } #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() { _impl_.conditionname_.ClearToEmpty(); } inline const std::string& UnlistenStmt::conditionname() const { // @@protoc_insertion_point(field_get:pg_query.UnlistenStmt.conditionname) return _internal_conditionname(); } template inline PROTOBUF_ALWAYS_INLINE void UnlistenStmt::set_conditionname(ArgT0&& arg0, ArgT... args) { _impl_.conditionname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.UnlistenStmt.conditionname) } inline std::string* UnlistenStmt::mutable_conditionname() { 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 { return _impl_.conditionname_.Get(); } inline void UnlistenStmt::_internal_set_conditionname(const std::string& value) { _impl_.conditionname_.Set(value, GetArenaForAllocation()); } inline std::string* UnlistenStmt::_internal_mutable_conditionname() { return _impl_.conditionname_.Mutable(GetArenaForAllocation()); } inline std::string* UnlistenStmt::release_conditionname() { // @@protoc_insertion_point(field_release:pg_query.UnlistenStmt.conditionname) return _impl_.conditionname_.Release(); } inline void UnlistenStmt::set_allocated_conditionname(std::string* conditionname) { if (conditionname != nullptr) { } else { } _impl_.conditionname_.SetAllocated(conditionname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.conditionname_.IsDefault()) { _impl_.conditionname_.Set("", GetArenaForAllocation()); } #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() { _impl_.kind_ = 0; } inline ::pg_query::TransactionStmtKind TransactionStmt::_internal_kind() const { return static_cast< ::pg_query::TransactionStmtKind >(_impl_.kind_); } inline ::pg_query::TransactionStmtKind TransactionStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.kind) return _internal_kind(); } inline void TransactionStmt::_internal_set_kind(::pg_query::TransactionStmtKind value) { _impl_.kind_ = value; } inline void TransactionStmt::set_kind(::pg_query::TransactionStmtKind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.TransactionStmt.kind) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int TransactionStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int TransactionStmt::options_size() const { return _internal_options_size(); } inline void TransactionStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* TransactionStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TransactionStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TransactionStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.TransactionStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& TransactionStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& TransactionStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.options) return _internal_options(index); } inline ::pg_query::Node* TransactionStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* TransactionStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.TransactionStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TransactionStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.TransactionStmt.options) return _impl_.options_; } // string savepoint_name = 3 [json_name = "savepoint_name"]; inline void TransactionStmt::clear_savepoint_name() { _impl_.savepoint_name_.ClearToEmpty(); } inline const std::string& TransactionStmt::savepoint_name() const { // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.savepoint_name) return _internal_savepoint_name(); } template inline PROTOBUF_ALWAYS_INLINE void TransactionStmt::set_savepoint_name(ArgT0&& arg0, ArgT... args) { _impl_.savepoint_name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.TransactionStmt.savepoint_name) } inline std::string* TransactionStmt::mutable_savepoint_name() { 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 { return _impl_.savepoint_name_.Get(); } inline void TransactionStmt::_internal_set_savepoint_name(const std::string& value) { _impl_.savepoint_name_.Set(value, GetArenaForAllocation()); } inline std::string* TransactionStmt::_internal_mutable_savepoint_name() { return _impl_.savepoint_name_.Mutable(GetArenaForAllocation()); } inline std::string* TransactionStmt::release_savepoint_name() { // @@protoc_insertion_point(field_release:pg_query.TransactionStmt.savepoint_name) return _impl_.savepoint_name_.Release(); } inline void TransactionStmt::set_allocated_savepoint_name(std::string* savepoint_name) { if (savepoint_name != nullptr) { } else { } _impl_.savepoint_name_.SetAllocated(savepoint_name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.savepoint_name_.IsDefault()) { _impl_.savepoint_name_.Set("", GetArenaForAllocation()); } #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() { _impl_.gid_.ClearToEmpty(); } inline const std::string& TransactionStmt::gid() const { // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.gid) return _internal_gid(); } template inline PROTOBUF_ALWAYS_INLINE void TransactionStmt::set_gid(ArgT0&& arg0, ArgT... args) { _impl_.gid_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.TransactionStmt.gid) } inline std::string* TransactionStmt::mutable_gid() { 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 { return _impl_.gid_.Get(); } inline void TransactionStmt::_internal_set_gid(const std::string& value) { _impl_.gid_.Set(value, GetArenaForAllocation()); } inline std::string* TransactionStmt::_internal_mutable_gid() { return _impl_.gid_.Mutable(GetArenaForAllocation()); } inline std::string* TransactionStmt::release_gid() { // @@protoc_insertion_point(field_release:pg_query.TransactionStmt.gid) return _impl_.gid_.Release(); } inline void TransactionStmt::set_allocated_gid(std::string* gid) { if (gid != nullptr) { } else { } _impl_.gid_.SetAllocated(gid, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.gid_.IsDefault()) { _impl_.gid_.Set("", GetArenaForAllocation()); } #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() { _impl_.chain_ = false; } inline bool TransactionStmt::_internal_chain() const { return _impl_.chain_; } inline bool TransactionStmt::chain() const { // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.chain) return _internal_chain(); } inline void TransactionStmt::_internal_set_chain(bool value) { _impl_.chain_ = value; } inline void TransactionStmt::set_chain(bool value) { _internal_set_chain(value); // @@protoc_insertion_point(field_set:pg_query.TransactionStmt.chain) } // ------------------------------------------------------------------- // ViewStmt // .pg_query.RangeVar view = 1 [json_name = "view"]; inline bool ViewStmt::_internal_has_view() const { return this != internal_default_instance() && _impl_.view_ != nullptr; } inline bool ViewStmt::has_view() const { return _internal_has_view(); } inline void ViewStmt::clear_view() { if (GetArenaForAllocation() == nullptr && _impl_.view_ != nullptr) { delete _impl_.view_; } _impl_.view_ = nullptr; } inline const ::pg_query::RangeVar& ViewStmt::_internal_view() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ViewStmt.view) return _internal_view(); } inline void ViewStmt::unsafe_arena_set_allocated_view( ::pg_query::RangeVar* view) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.view_); } _impl_.view_ = view; if (view) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ViewStmt.view) } inline ::pg_query::RangeVar* ViewStmt::release_view() { ::pg_query::RangeVar* temp = _impl_.view_; _impl_.view_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* ViewStmt::unsafe_arena_release_view() { // @@protoc_insertion_point(field_release:pg_query.ViewStmt.view) ::pg_query::RangeVar* temp = _impl_.view_; _impl_.view_ = nullptr; return temp; } inline ::pg_query::RangeVar* ViewStmt::_internal_mutable_view() { if (_impl_.view_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.view_ = p; } return _impl_.view_; } inline ::pg_query::RangeVar* ViewStmt::mutable_view() { ::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* view) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.view_; } if (view) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(view); if (message_arena != submessage_arena) { view = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, view, submessage_arena); } } else { } _impl_.view_ = view; // @@protoc_insertion_point(field_set_allocated:pg_query.ViewStmt.view) } // repeated .pg_query.Node aliases = 2 [json_name = "aliases"]; inline int ViewStmt::_internal_aliases_size() const { return _impl_.aliases_.size(); } inline int ViewStmt::aliases_size() const { return _internal_aliases_size(); } inline void ViewStmt::clear_aliases() { _impl_.aliases_.Clear(); } inline ::pg_query::Node* ViewStmt::mutable_aliases(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ViewStmt.aliases) return _impl_.aliases_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ViewStmt::mutable_aliases() { // @@protoc_insertion_point(field_mutable_list:pg_query.ViewStmt.aliases) return &_impl_.aliases_; } inline const ::pg_query::Node& ViewStmt::_internal_aliases(int index) const { return _impl_.aliases_.Get(index); } inline const ::pg_query::Node& ViewStmt::aliases(int index) const { // @@protoc_insertion_point(field_get:pg_query.ViewStmt.aliases) return _internal_aliases(index); } inline ::pg_query::Node* ViewStmt::_internal_add_aliases() { return _impl_.aliases_.Add(); } inline ::pg_query::Node* ViewStmt::add_aliases() { ::pg_query::Node* _add = _internal_add_aliases(); // @@protoc_insertion_point(field_add:pg_query.ViewStmt.aliases) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ViewStmt::aliases() const { // @@protoc_insertion_point(field_list:pg_query.ViewStmt.aliases) return _impl_.aliases_; } // .pg_query.Node query = 3 [json_name = "query"]; inline bool ViewStmt::_internal_has_query() const { return this != internal_default_instance() && _impl_.query_ != nullptr; } inline bool ViewStmt::has_query() const { return _internal_has_query(); } inline void ViewStmt::clear_query() { if (GetArenaForAllocation() == nullptr && _impl_.query_ != nullptr) { delete _impl_.query_; } _impl_.query_ = nullptr; } inline const ::pg_query::Node& ViewStmt::_internal_query() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ViewStmt.query) return _internal_query(); } inline void ViewStmt::unsafe_arena_set_allocated_query( ::pg_query::Node* query) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.query_); } _impl_.query_ = query; if (query) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ViewStmt.query) } inline ::pg_query::Node* ViewStmt::release_query() { ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* ViewStmt::unsafe_arena_release_query() { // @@protoc_insertion_point(field_release:pg_query.ViewStmt.query) ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; return temp; } inline ::pg_query::Node* ViewStmt::_internal_mutable_query() { if (_impl_.query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.query_ = p; } return _impl_.query_; } inline ::pg_query::Node* ViewStmt::mutable_query() { ::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* query) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.query_; } if (query) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(query); if (message_arena != submessage_arena) { query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, query, submessage_arena); } } else { } _impl_.query_ = query; // @@protoc_insertion_point(field_set_allocated:pg_query.ViewStmt.query) } // bool replace = 4 [json_name = "replace"]; inline void ViewStmt::clear_replace() { _impl_.replace_ = false; } inline bool ViewStmt::_internal_replace() const { return _impl_.replace_; } inline bool ViewStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.ViewStmt.replace) return _internal_replace(); } inline void ViewStmt::_internal_set_replace(bool value) { _impl_.replace_ = value; } inline void ViewStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.ViewStmt.replace) } // repeated .pg_query.Node options = 5 [json_name = "options"]; inline int ViewStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int ViewStmt::options_size() const { return _internal_options_size(); } inline void ViewStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* ViewStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ViewStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ViewStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.ViewStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& ViewStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& ViewStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.ViewStmt.options) return _internal_options(index); } inline ::pg_query::Node* ViewStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* ViewStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.ViewStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ViewStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.ViewStmt.options) return _impl_.options_; } // .pg_query.ViewCheckOption with_check_option = 6 [json_name = "withCheckOption"]; inline void ViewStmt::clear_with_check_option() { _impl_.with_check_option_ = 0; } inline ::pg_query::ViewCheckOption ViewStmt::_internal_with_check_option() const { return static_cast< ::pg_query::ViewCheckOption >(_impl_.with_check_option_); } inline ::pg_query::ViewCheckOption ViewStmt::with_check_option() const { // @@protoc_insertion_point(field_get:pg_query.ViewStmt.with_check_option) return _internal_with_check_option(); } inline void ViewStmt::_internal_set_with_check_option(::pg_query::ViewCheckOption value) { _impl_.with_check_option_ = value; } inline void ViewStmt::set_with_check_option(::pg_query::ViewCheckOption value) { _internal_set_with_check_option(value); // @@protoc_insertion_point(field_set:pg_query.ViewStmt.with_check_option) } // ------------------------------------------------------------------- // LoadStmt // string filename = 1 [json_name = "filename"]; inline void LoadStmt::clear_filename() { _impl_.filename_.ClearToEmpty(); } inline const std::string& LoadStmt::filename() const { // @@protoc_insertion_point(field_get:pg_query.LoadStmt.filename) return _internal_filename(); } template inline PROTOBUF_ALWAYS_INLINE void LoadStmt::set_filename(ArgT0&& arg0, ArgT... args) { _impl_.filename_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.LoadStmt.filename) } inline std::string* LoadStmt::mutable_filename() { 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 { return _impl_.filename_.Get(); } inline void LoadStmt::_internal_set_filename(const std::string& value) { _impl_.filename_.Set(value, GetArenaForAllocation()); } inline std::string* LoadStmt::_internal_mutable_filename() { return _impl_.filename_.Mutable(GetArenaForAllocation()); } inline std::string* LoadStmt::release_filename() { // @@protoc_insertion_point(field_release:pg_query.LoadStmt.filename) return _impl_.filename_.Release(); } inline void LoadStmt::set_allocated_filename(std::string* filename) { if (filename != nullptr) { } else { } _impl_.filename_.SetAllocated(filename, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.filename_.IsDefault()) { _impl_.filename_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.LoadStmt.filename) } // ------------------------------------------------------------------- // CreateDomainStmt // repeated .pg_query.Node domainname = 1 [json_name = "domainname"]; inline int CreateDomainStmt::_internal_domainname_size() const { return _impl_.domainname_.size(); } inline int CreateDomainStmt::domainname_size() const { return _internal_domainname_size(); } inline void CreateDomainStmt::clear_domainname() { _impl_.domainname_.Clear(); } inline ::pg_query::Node* CreateDomainStmt::mutable_domainname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateDomainStmt.domainname) return _impl_.domainname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateDomainStmt::mutable_domainname() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateDomainStmt.domainname) return &_impl_.domainname_; } inline const ::pg_query::Node& CreateDomainStmt::_internal_domainname(int index) const { return _impl_.domainname_.Get(index); } inline const ::pg_query::Node& CreateDomainStmt::domainname(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateDomainStmt.domainname) return _internal_domainname(index); } inline ::pg_query::Node* CreateDomainStmt::_internal_add_domainname() { return _impl_.domainname_.Add(); } inline ::pg_query::Node* CreateDomainStmt::add_domainname() { ::pg_query::Node* _add = _internal_add_domainname(); // @@protoc_insertion_point(field_add:pg_query.CreateDomainStmt.domainname) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateDomainStmt::domainname() const { // @@protoc_insertion_point(field_list:pg_query.CreateDomainStmt.domainname) return _impl_.domainname_; } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; inline bool CreateDomainStmt::_internal_has_type_name() const { return this != internal_default_instance() && _impl_.type_name_ != nullptr; } inline bool CreateDomainStmt::has_type_name() const { return _internal_has_type_name(); } inline void CreateDomainStmt::clear_type_name() { if (GetArenaForAllocation() == nullptr && _impl_.type_name_ != nullptr) { delete _impl_.type_name_; } _impl_.type_name_ = nullptr; } inline const ::pg_query::TypeName& CreateDomainStmt::_internal_type_name() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateDomainStmt.type_name) return _internal_type_name(); } inline void CreateDomainStmt::unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.type_name_); } _impl_.type_name_ = type_name; if (type_name) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateDomainStmt.type_name) } inline ::pg_query::TypeName* CreateDomainStmt::release_type_name() { ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::TypeName* CreateDomainStmt::unsafe_arena_release_type_name() { // @@protoc_insertion_point(field_release:pg_query.CreateDomainStmt.type_name) ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateDomainStmt::_internal_mutable_type_name() { if (_impl_.type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArenaForAllocation()); _impl_.type_name_ = p; } return _impl_.type_name_; } inline ::pg_query::TypeName* CreateDomainStmt::mutable_type_name() { ::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* type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.type_name_; } if (type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(type_name); if (message_arena != submessage_arena) { type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, type_name, submessage_arena); } } else { } _impl_.type_name_ = type_name; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateDomainStmt.type_name) } // .pg_query.CollateClause coll_clause = 3 [json_name = "collClause"]; inline bool CreateDomainStmt::_internal_has_coll_clause() const { return this != internal_default_instance() && _impl_.coll_clause_ != nullptr; } inline bool CreateDomainStmt::has_coll_clause() const { return _internal_has_coll_clause(); } inline void CreateDomainStmt::clear_coll_clause() { if (GetArenaForAllocation() == nullptr && _impl_.coll_clause_ != nullptr) { delete _impl_.coll_clause_; } _impl_.coll_clause_ = nullptr; } inline const ::pg_query::CollateClause& CreateDomainStmt::_internal_coll_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateDomainStmt.coll_clause) return _internal_coll_clause(); } inline void CreateDomainStmt::unsafe_arena_set_allocated_coll_clause( ::pg_query::CollateClause* coll_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.coll_clause_); } _impl_.coll_clause_ = coll_clause; if (coll_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateDomainStmt.coll_clause) } inline ::pg_query::CollateClause* CreateDomainStmt::release_coll_clause() { ::pg_query::CollateClause* temp = _impl_.coll_clause_; _impl_.coll_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::CollateClause* CreateDomainStmt::unsafe_arena_release_coll_clause() { // @@protoc_insertion_point(field_release:pg_query.CreateDomainStmt.coll_clause) ::pg_query::CollateClause* temp = _impl_.coll_clause_; _impl_.coll_clause_ = nullptr; return temp; } inline ::pg_query::CollateClause* CreateDomainStmt::_internal_mutable_coll_clause() { if (_impl_.coll_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::CollateClause>(GetArenaForAllocation()); _impl_.coll_clause_ = p; } return _impl_.coll_clause_; } inline ::pg_query::CollateClause* CreateDomainStmt::mutable_coll_clause() { ::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* coll_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.coll_clause_; } if (coll_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(coll_clause); if (message_arena != submessage_arena) { coll_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, coll_clause, submessage_arena); } } else { } _impl_.coll_clause_ = coll_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateDomainStmt.coll_clause) } // repeated .pg_query.Node constraints = 4 [json_name = "constraints"]; inline int CreateDomainStmt::_internal_constraints_size() const { return _impl_.constraints_.size(); } inline int CreateDomainStmt::constraints_size() const { return _internal_constraints_size(); } inline void CreateDomainStmt::clear_constraints() { _impl_.constraints_.Clear(); } inline ::pg_query::Node* CreateDomainStmt::mutable_constraints(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateDomainStmt.constraints) return _impl_.constraints_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateDomainStmt::mutable_constraints() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateDomainStmt.constraints) return &_impl_.constraints_; } inline const ::pg_query::Node& CreateDomainStmt::_internal_constraints(int index) const { return _impl_.constraints_.Get(index); } inline const ::pg_query::Node& CreateDomainStmt::constraints(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateDomainStmt.constraints) return _internal_constraints(index); } inline ::pg_query::Node* CreateDomainStmt::_internal_add_constraints() { return _impl_.constraints_.Add(); } inline ::pg_query::Node* CreateDomainStmt::add_constraints() { ::pg_query::Node* _add = _internal_add_constraints(); // @@protoc_insertion_point(field_add:pg_query.CreateDomainStmt.constraints) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateDomainStmt::constraints() const { // @@protoc_insertion_point(field_list:pg_query.CreateDomainStmt.constraints) return _impl_.constraints_; } // ------------------------------------------------------------------- // CreatedbStmt // string dbname = 1 [json_name = "dbname"]; inline void CreatedbStmt::clear_dbname() { _impl_.dbname_.ClearToEmpty(); } inline const std::string& CreatedbStmt::dbname() const { // @@protoc_insertion_point(field_get:pg_query.CreatedbStmt.dbname) return _internal_dbname(); } template inline PROTOBUF_ALWAYS_INLINE void CreatedbStmt::set_dbname(ArgT0&& arg0, ArgT... args) { _impl_.dbname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreatedbStmt.dbname) } inline std::string* CreatedbStmt::mutable_dbname() { 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 { return _impl_.dbname_.Get(); } inline void CreatedbStmt::_internal_set_dbname(const std::string& value) { _impl_.dbname_.Set(value, GetArenaForAllocation()); } inline std::string* CreatedbStmt::_internal_mutable_dbname() { return _impl_.dbname_.Mutable(GetArenaForAllocation()); } inline std::string* CreatedbStmt::release_dbname() { // @@protoc_insertion_point(field_release:pg_query.CreatedbStmt.dbname) return _impl_.dbname_.Release(); } inline void CreatedbStmt::set_allocated_dbname(std::string* dbname) { if (dbname != nullptr) { } else { } _impl_.dbname_.SetAllocated(dbname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.dbname_.IsDefault()) { _impl_.dbname_.Set("", GetArenaForAllocation()); } #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 _impl_.options_.size(); } inline int CreatedbStmt::options_size() const { return _internal_options_size(); } inline void CreatedbStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* CreatedbStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreatedbStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreatedbStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatedbStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& CreatedbStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& CreatedbStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreatedbStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreatedbStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* CreatedbStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.CreatedbStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreatedbStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreatedbStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // DropdbStmt // string dbname = 1 [json_name = "dbname"]; inline void DropdbStmt::clear_dbname() { _impl_.dbname_.ClearToEmpty(); } inline const std::string& DropdbStmt::dbname() const { // @@protoc_insertion_point(field_get:pg_query.DropdbStmt.dbname) return _internal_dbname(); } template inline PROTOBUF_ALWAYS_INLINE void DropdbStmt::set_dbname(ArgT0&& arg0, ArgT... args) { _impl_.dbname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.DropdbStmt.dbname) } inline std::string* DropdbStmt::mutable_dbname() { 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 { return _impl_.dbname_.Get(); } inline void DropdbStmt::_internal_set_dbname(const std::string& value) { _impl_.dbname_.Set(value, GetArenaForAllocation()); } inline std::string* DropdbStmt::_internal_mutable_dbname() { return _impl_.dbname_.Mutable(GetArenaForAllocation()); } inline std::string* DropdbStmt::release_dbname() { // @@protoc_insertion_point(field_release:pg_query.DropdbStmt.dbname) return _impl_.dbname_.Release(); } inline void DropdbStmt::set_allocated_dbname(std::string* dbname) { if (dbname != nullptr) { } else { } _impl_.dbname_.SetAllocated(dbname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.dbname_.IsDefault()) { _impl_.dbname_.Set("", GetArenaForAllocation()); } #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() { _impl_.missing_ok_ = false; } inline bool DropdbStmt::_internal_missing_ok() const { return _impl_.missing_ok_; } inline bool DropdbStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropdbStmt.missing_ok) return _internal_missing_ok(); } inline void DropdbStmt::_internal_set_missing_ok(bool value) { _impl_.missing_ok_ = value; } inline void DropdbStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropdbStmt.missing_ok) } // repeated .pg_query.Node options = 3 [json_name = "options"]; inline int DropdbStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int DropdbStmt::options_size() const { return _internal_options_size(); } inline void DropdbStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* DropdbStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DropdbStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DropdbStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.DropdbStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& DropdbStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& DropdbStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.DropdbStmt.options) return _internal_options(index); } inline ::pg_query::Node* DropdbStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* DropdbStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.DropdbStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DropdbStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.DropdbStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // VacuumStmt // repeated .pg_query.Node options = 1 [json_name = "options"]; inline int VacuumStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int VacuumStmt::options_size() const { return _internal_options_size(); } inline void VacuumStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* VacuumStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.VacuumStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* VacuumStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.VacuumStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& VacuumStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& VacuumStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.VacuumStmt.options) return _internal_options(index); } inline ::pg_query::Node* VacuumStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* VacuumStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.VacuumStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& VacuumStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.VacuumStmt.options) return _impl_.options_; } // repeated .pg_query.Node rels = 2 [json_name = "rels"]; inline int VacuumStmt::_internal_rels_size() const { return _impl_.rels_.size(); } inline int VacuumStmt::rels_size() const { return _internal_rels_size(); } inline void VacuumStmt::clear_rels() { _impl_.rels_.Clear(); } inline ::pg_query::Node* VacuumStmt::mutable_rels(int index) { // @@protoc_insertion_point(field_mutable:pg_query.VacuumStmt.rels) return _impl_.rels_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* VacuumStmt::mutable_rels() { // @@protoc_insertion_point(field_mutable_list:pg_query.VacuumStmt.rels) return &_impl_.rels_; } inline const ::pg_query::Node& VacuumStmt::_internal_rels(int index) const { return _impl_.rels_.Get(index); } inline const ::pg_query::Node& VacuumStmt::rels(int index) const { // @@protoc_insertion_point(field_get:pg_query.VacuumStmt.rels) return _internal_rels(index); } inline ::pg_query::Node* VacuumStmt::_internal_add_rels() { return _impl_.rels_.Add(); } inline ::pg_query::Node* VacuumStmt::add_rels() { ::pg_query::Node* _add = _internal_add_rels(); // @@protoc_insertion_point(field_add:pg_query.VacuumStmt.rels) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& VacuumStmt::rels() const { // @@protoc_insertion_point(field_list:pg_query.VacuumStmt.rels) return _impl_.rels_; } // bool is_vacuumcmd = 3 [json_name = "is_vacuumcmd"]; inline void VacuumStmt::clear_is_vacuumcmd() { _impl_.is_vacuumcmd_ = false; } inline bool VacuumStmt::_internal_is_vacuumcmd() const { return _impl_.is_vacuumcmd_; } inline bool VacuumStmt::is_vacuumcmd() const { // @@protoc_insertion_point(field_get:pg_query.VacuumStmt.is_vacuumcmd) return _internal_is_vacuumcmd(); } inline void VacuumStmt::_internal_set_is_vacuumcmd(bool value) { _impl_.is_vacuumcmd_ = value; } inline void VacuumStmt::set_is_vacuumcmd(bool value) { _internal_set_is_vacuumcmd(value); // @@protoc_insertion_point(field_set:pg_query.VacuumStmt.is_vacuumcmd) } // ------------------------------------------------------------------- // ExplainStmt // .pg_query.Node query = 1 [json_name = "query"]; inline bool ExplainStmt::_internal_has_query() const { return this != internal_default_instance() && _impl_.query_ != nullptr; } inline bool ExplainStmt::has_query() const { return _internal_has_query(); } inline void ExplainStmt::clear_query() { if (GetArenaForAllocation() == nullptr && _impl_.query_ != nullptr) { delete _impl_.query_; } _impl_.query_ = nullptr; } inline const ::pg_query::Node& ExplainStmt::_internal_query() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ExplainStmt.query) return _internal_query(); } inline void ExplainStmt::unsafe_arena_set_allocated_query( ::pg_query::Node* query) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.query_); } _impl_.query_ = query; if (query) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ExplainStmt.query) } inline ::pg_query::Node* ExplainStmt::release_query() { ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* ExplainStmt::unsafe_arena_release_query() { // @@protoc_insertion_point(field_release:pg_query.ExplainStmt.query) ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; return temp; } inline ::pg_query::Node* ExplainStmt::_internal_mutable_query() { if (_impl_.query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.query_ = p; } return _impl_.query_; } inline ::pg_query::Node* ExplainStmt::mutable_query() { ::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* query) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.query_; } if (query) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(query); if (message_arena != submessage_arena) { query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, query, submessage_arena); } } else { } _impl_.query_ = query; // @@protoc_insertion_point(field_set_allocated:pg_query.ExplainStmt.query) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int ExplainStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int ExplainStmt::options_size() const { return _internal_options_size(); } inline void ExplainStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* ExplainStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ExplainStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ExplainStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.ExplainStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& ExplainStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& ExplainStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.ExplainStmt.options) return _internal_options(index); } inline ::pg_query::Node* ExplainStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* ExplainStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.ExplainStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ExplainStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.ExplainStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // CreateTableAsStmt // .pg_query.Node query = 1 [json_name = "query"]; inline bool CreateTableAsStmt::_internal_has_query() const { return this != internal_default_instance() && _impl_.query_ != nullptr; } inline bool CreateTableAsStmt::has_query() const { return _internal_has_query(); } inline void CreateTableAsStmt::clear_query() { if (GetArenaForAllocation() == nullptr && _impl_.query_ != nullptr) { delete _impl_.query_; } _impl_.query_ = nullptr; } inline const ::pg_query::Node& CreateTableAsStmt::_internal_query() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.query) return _internal_query(); } inline void CreateTableAsStmt::unsafe_arena_set_allocated_query( ::pg_query::Node* query) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.query_); } _impl_.query_ = query; if (query) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTableAsStmt.query) } inline ::pg_query::Node* CreateTableAsStmt::release_query() { ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CreateTableAsStmt::unsafe_arena_release_query() { // @@protoc_insertion_point(field_release:pg_query.CreateTableAsStmt.query) ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; return temp; } inline ::pg_query::Node* CreateTableAsStmt::_internal_mutable_query() { if (_impl_.query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.query_ = p; } return _impl_.query_; } inline ::pg_query::Node* CreateTableAsStmt::mutable_query() { ::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* query) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.query_; } if (query) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(query); if (message_arena != submessage_arena) { query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, query, submessage_arena); } } else { } _impl_.query_ = query; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTableAsStmt.query) } // .pg_query.IntoClause into = 2 [json_name = "into"]; inline bool CreateTableAsStmt::_internal_has_into() const { return this != internal_default_instance() && _impl_.into_ != nullptr; } inline bool CreateTableAsStmt::has_into() const { return _internal_has_into(); } inline void CreateTableAsStmt::clear_into() { if (GetArenaForAllocation() == nullptr && _impl_.into_ != nullptr) { delete _impl_.into_; } _impl_.into_ = nullptr; } inline const ::pg_query::IntoClause& CreateTableAsStmt::_internal_into() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.into) return _internal_into(); } inline void CreateTableAsStmt::unsafe_arena_set_allocated_into( ::pg_query::IntoClause* into) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.into_); } _impl_.into_ = into; if (into) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTableAsStmt.into) } inline ::pg_query::IntoClause* CreateTableAsStmt::release_into() { ::pg_query::IntoClause* temp = _impl_.into_; _impl_.into_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::IntoClause* CreateTableAsStmt::unsafe_arena_release_into() { // @@protoc_insertion_point(field_release:pg_query.CreateTableAsStmt.into) ::pg_query::IntoClause* temp = _impl_.into_; _impl_.into_ = nullptr; return temp; } inline ::pg_query::IntoClause* CreateTableAsStmt::_internal_mutable_into() { if (_impl_.into_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::IntoClause>(GetArenaForAllocation()); _impl_.into_ = p; } return _impl_.into_; } inline ::pg_query::IntoClause* CreateTableAsStmt::mutable_into() { ::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* into) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.into_; } if (into) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(into); if (message_arena != submessage_arena) { into = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, into, submessage_arena); } } else { } _impl_.into_ = into; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTableAsStmt.into) } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; inline void CreateTableAsStmt::clear_objtype() { _impl_.objtype_ = 0; } inline ::pg_query::ObjectType CreateTableAsStmt::_internal_objtype() const { return static_cast< ::pg_query::ObjectType >(_impl_.objtype_); } inline ::pg_query::ObjectType CreateTableAsStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.objtype) return _internal_objtype(); } inline void CreateTableAsStmt::_internal_set_objtype(::pg_query::ObjectType value) { _impl_.objtype_ = value; } inline void CreateTableAsStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.CreateTableAsStmt.objtype) } // bool is_select_into = 4 [json_name = "is_select_into"]; inline void CreateTableAsStmt::clear_is_select_into() { _impl_.is_select_into_ = false; } inline bool CreateTableAsStmt::_internal_is_select_into() const { return _impl_.is_select_into_; } inline bool CreateTableAsStmt::is_select_into() const { // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.is_select_into) return _internal_is_select_into(); } inline void CreateTableAsStmt::_internal_set_is_select_into(bool value) { _impl_.is_select_into_ = value; } inline void CreateTableAsStmt::set_is_select_into(bool value) { _internal_set_is_select_into(value); // @@protoc_insertion_point(field_set:pg_query.CreateTableAsStmt.is_select_into) } // bool if_not_exists = 5 [json_name = "if_not_exists"]; inline void CreateTableAsStmt::clear_if_not_exists() { _impl_.if_not_exists_ = false; } inline bool CreateTableAsStmt::_internal_if_not_exists() const { return _impl_.if_not_exists_; } inline bool CreateTableAsStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.if_not_exists) return _internal_if_not_exists(); } inline void CreateTableAsStmt::_internal_set_if_not_exists(bool value) { _impl_.if_not_exists_ = value; } inline void CreateTableAsStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateTableAsStmt.if_not_exists) } // ------------------------------------------------------------------- // CreateSeqStmt // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; inline bool CreateSeqStmt::_internal_has_sequence() const { return this != internal_default_instance() && _impl_.sequence_ != nullptr; } inline bool CreateSeqStmt::has_sequence() const { return _internal_has_sequence(); } inline void CreateSeqStmt::clear_sequence() { if (GetArenaForAllocation() == nullptr && _impl_.sequence_ != nullptr) { delete _impl_.sequence_; } _impl_.sequence_ = nullptr; } inline const ::pg_query::RangeVar& CreateSeqStmt::_internal_sequence() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.sequence) return _internal_sequence(); } inline void CreateSeqStmt::unsafe_arena_set_allocated_sequence( ::pg_query::RangeVar* sequence) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.sequence_); } _impl_.sequence_ = sequence; if (sequence) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateSeqStmt.sequence) } inline ::pg_query::RangeVar* CreateSeqStmt::release_sequence() { ::pg_query::RangeVar* temp = _impl_.sequence_; _impl_.sequence_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* CreateSeqStmt::unsafe_arena_release_sequence() { // @@protoc_insertion_point(field_release:pg_query.CreateSeqStmt.sequence) ::pg_query::RangeVar* temp = _impl_.sequence_; _impl_.sequence_ = nullptr; return temp; } inline ::pg_query::RangeVar* CreateSeqStmt::_internal_mutable_sequence() { if (_impl_.sequence_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.sequence_ = p; } return _impl_.sequence_; } inline ::pg_query::RangeVar* CreateSeqStmt::mutable_sequence() { ::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* sequence) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.sequence_; } if (sequence) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(sequence); if (message_arena != submessage_arena) { sequence = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, sequence, submessage_arena); } } else { } _impl_.sequence_ = sequence; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateSeqStmt.sequence) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int CreateSeqStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int CreateSeqStmt::options_size() const { return _internal_options_size(); } inline void CreateSeqStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* CreateSeqStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateSeqStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateSeqStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateSeqStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& CreateSeqStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& CreateSeqStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateSeqStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* CreateSeqStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.CreateSeqStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateSeqStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateSeqStmt.options) return _impl_.options_; } // uint32 owner_id = 3 [json_name = "ownerId"]; inline void CreateSeqStmt::clear_owner_id() { _impl_.owner_id_ = 0u; } inline uint32_t CreateSeqStmt::_internal_owner_id() const { return _impl_.owner_id_; } inline uint32_t CreateSeqStmt::owner_id() const { // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.owner_id) return _internal_owner_id(); } inline void CreateSeqStmt::_internal_set_owner_id(uint32_t value) { _impl_.owner_id_ = value; } inline void CreateSeqStmt::set_owner_id(uint32_t value) { _internal_set_owner_id(value); // @@protoc_insertion_point(field_set:pg_query.CreateSeqStmt.owner_id) } // bool for_identity = 4 [json_name = "for_identity"]; inline void CreateSeqStmt::clear_for_identity() { _impl_.for_identity_ = false; } inline bool CreateSeqStmt::_internal_for_identity() const { return _impl_.for_identity_; } inline bool CreateSeqStmt::for_identity() const { // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.for_identity) return _internal_for_identity(); } inline void CreateSeqStmt::_internal_set_for_identity(bool value) { _impl_.for_identity_ = value; } inline void CreateSeqStmt::set_for_identity(bool value) { _internal_set_for_identity(value); // @@protoc_insertion_point(field_set:pg_query.CreateSeqStmt.for_identity) } // bool if_not_exists = 5 [json_name = "if_not_exists"]; inline void CreateSeqStmt::clear_if_not_exists() { _impl_.if_not_exists_ = false; } inline bool CreateSeqStmt::_internal_if_not_exists() const { return _impl_.if_not_exists_; } inline bool CreateSeqStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.if_not_exists) return _internal_if_not_exists(); } inline void CreateSeqStmt::_internal_set_if_not_exists(bool value) { _impl_.if_not_exists_ = value; } inline void CreateSeqStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateSeqStmt.if_not_exists) } // ------------------------------------------------------------------- // AlterSeqStmt // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; inline bool AlterSeqStmt::_internal_has_sequence() const { return this != internal_default_instance() && _impl_.sequence_ != nullptr; } inline bool AlterSeqStmt::has_sequence() const { return _internal_has_sequence(); } inline void AlterSeqStmt::clear_sequence() { if (GetArenaForAllocation() == nullptr && _impl_.sequence_ != nullptr) { delete _impl_.sequence_; } _impl_.sequence_ = nullptr; } inline const ::pg_query::RangeVar& AlterSeqStmt::_internal_sequence() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterSeqStmt.sequence) return _internal_sequence(); } inline void AlterSeqStmt::unsafe_arena_set_allocated_sequence( ::pg_query::RangeVar* sequence) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.sequence_); } _impl_.sequence_ = sequence; if (sequence) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterSeqStmt.sequence) } inline ::pg_query::RangeVar* AlterSeqStmt::release_sequence() { ::pg_query::RangeVar* temp = _impl_.sequence_; _impl_.sequence_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* AlterSeqStmt::unsafe_arena_release_sequence() { // @@protoc_insertion_point(field_release:pg_query.AlterSeqStmt.sequence) ::pg_query::RangeVar* temp = _impl_.sequence_; _impl_.sequence_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterSeqStmt::_internal_mutable_sequence() { if (_impl_.sequence_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.sequence_ = p; } return _impl_.sequence_; } inline ::pg_query::RangeVar* AlterSeqStmt::mutable_sequence() { ::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* sequence) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.sequence_; } if (sequence) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(sequence); if (message_arena != submessage_arena) { sequence = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, sequence, submessage_arena); } } else { } _impl_.sequence_ = sequence; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterSeqStmt.sequence) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int AlterSeqStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int AlterSeqStmt::options_size() const { return _internal_options_size(); } inline void AlterSeqStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* AlterSeqStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterSeqStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterSeqStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterSeqStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& AlterSeqStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& AlterSeqStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterSeqStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterSeqStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* AlterSeqStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.AlterSeqStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterSeqStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterSeqStmt.options) return _impl_.options_; } // bool for_identity = 3 [json_name = "for_identity"]; inline void AlterSeqStmt::clear_for_identity() { _impl_.for_identity_ = false; } inline bool AlterSeqStmt::_internal_for_identity() const { return _impl_.for_identity_; } inline bool AlterSeqStmt::for_identity() const { // @@protoc_insertion_point(field_get:pg_query.AlterSeqStmt.for_identity) return _internal_for_identity(); } inline void AlterSeqStmt::_internal_set_for_identity(bool value) { _impl_.for_identity_ = value; } inline void AlterSeqStmt::set_for_identity(bool value) { _internal_set_for_identity(value); // @@protoc_insertion_point(field_set:pg_query.AlterSeqStmt.for_identity) } // bool missing_ok = 4 [json_name = "missing_ok"]; inline void AlterSeqStmt::clear_missing_ok() { _impl_.missing_ok_ = false; } inline bool AlterSeqStmt::_internal_missing_ok() const { return _impl_.missing_ok_; } inline bool AlterSeqStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterSeqStmt.missing_ok) return _internal_missing_ok(); } inline void AlterSeqStmt::_internal_set_missing_ok(bool value) { _impl_.missing_ok_ = value; } inline void AlterSeqStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterSeqStmt.missing_ok) } // ------------------------------------------------------------------- // VariableSetStmt // .pg_query.VariableSetKind kind = 1 [json_name = "kind"]; inline void VariableSetStmt::clear_kind() { _impl_.kind_ = 0; } inline ::pg_query::VariableSetKind VariableSetStmt::_internal_kind() const { return static_cast< ::pg_query::VariableSetKind >(_impl_.kind_); } inline ::pg_query::VariableSetKind VariableSetStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.VariableSetStmt.kind) return _internal_kind(); } inline void VariableSetStmt::_internal_set_kind(::pg_query::VariableSetKind value) { _impl_.kind_ = value; } inline void VariableSetStmt::set_kind(::pg_query::VariableSetKind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.VariableSetStmt.kind) } // string name = 2 [json_name = "name"]; inline void VariableSetStmt::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& VariableSetStmt::name() const { // @@protoc_insertion_point(field_get:pg_query.VariableSetStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void VariableSetStmt::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.VariableSetStmt.name) } inline std::string* VariableSetStmt::mutable_name() { 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 { return _impl_.name_.Get(); } inline void VariableSetStmt::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* VariableSetStmt::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* VariableSetStmt::release_name() { // @@protoc_insertion_point(field_release:pg_query.VariableSetStmt.name) return _impl_.name_.Release(); } inline void VariableSetStmt::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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 _impl_.args_.size(); } inline int VariableSetStmt::args_size() const { return _internal_args_size(); } inline void VariableSetStmt::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* VariableSetStmt::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.VariableSetStmt.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* VariableSetStmt::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.VariableSetStmt.args) return &_impl_.args_; } inline const ::pg_query::Node& VariableSetStmt::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& VariableSetStmt::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.VariableSetStmt.args) return _internal_args(index); } inline ::pg_query::Node* VariableSetStmt::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* VariableSetStmt::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.VariableSetStmt.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& VariableSetStmt::args() const { // @@protoc_insertion_point(field_list:pg_query.VariableSetStmt.args) return _impl_.args_; } // bool is_local = 4 [json_name = "is_local"]; inline void VariableSetStmt::clear_is_local() { _impl_.is_local_ = false; } inline bool VariableSetStmt::_internal_is_local() const { return _impl_.is_local_; } inline bool VariableSetStmt::is_local() const { // @@protoc_insertion_point(field_get:pg_query.VariableSetStmt.is_local) return _internal_is_local(); } inline void VariableSetStmt::_internal_set_is_local(bool value) { _impl_.is_local_ = value; } inline void VariableSetStmt::set_is_local(bool value) { _internal_set_is_local(value); // @@protoc_insertion_point(field_set:pg_query.VariableSetStmt.is_local) } // ------------------------------------------------------------------- // VariableShowStmt // string name = 1 [json_name = "name"]; inline void VariableShowStmt::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& VariableShowStmt::name() const { // @@protoc_insertion_point(field_get:pg_query.VariableShowStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void VariableShowStmt::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.VariableShowStmt.name) } inline std::string* VariableShowStmt::mutable_name() { 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 { return _impl_.name_.Get(); } inline void VariableShowStmt::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* VariableShowStmt::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* VariableShowStmt::release_name() { // @@protoc_insertion_point(field_release:pg_query.VariableShowStmt.name) return _impl_.name_.Release(); } inline void VariableShowStmt::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.VariableShowStmt.name) } // ------------------------------------------------------------------- // DiscardStmt // .pg_query.DiscardMode target = 1 [json_name = "target"]; inline void DiscardStmt::clear_target() { _impl_.target_ = 0; } inline ::pg_query::DiscardMode DiscardStmt::_internal_target() const { return static_cast< ::pg_query::DiscardMode >(_impl_.target_); } inline ::pg_query::DiscardMode DiscardStmt::target() const { // @@protoc_insertion_point(field_get:pg_query.DiscardStmt.target) return _internal_target(); } inline void DiscardStmt::_internal_set_target(::pg_query::DiscardMode value) { _impl_.target_ = value; } inline void DiscardStmt::set_target(::pg_query::DiscardMode value) { _internal_set_target(value); // @@protoc_insertion_point(field_set:pg_query.DiscardStmt.target) } // ------------------------------------------------------------------- // CreateTrigStmt // bool replace = 1 [json_name = "replace"]; inline void CreateTrigStmt::clear_replace() { _impl_.replace_ = false; } inline bool CreateTrigStmt::_internal_replace() const { return _impl_.replace_; } inline bool CreateTrigStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.replace) return _internal_replace(); } inline void CreateTrigStmt::_internal_set_replace(bool value) { _impl_.replace_ = value; } inline void CreateTrigStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.replace) } // bool isconstraint = 2 [json_name = "isconstraint"]; inline void CreateTrigStmt::clear_isconstraint() { _impl_.isconstraint_ = false; } inline bool CreateTrigStmt::_internal_isconstraint() const { return _impl_.isconstraint_; } inline bool CreateTrigStmt::isconstraint() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.isconstraint) return _internal_isconstraint(); } inline void CreateTrigStmt::_internal_set_isconstraint(bool value) { _impl_.isconstraint_ = value; } inline void CreateTrigStmt::set_isconstraint(bool value) { _internal_set_isconstraint(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.isconstraint) } // string trigname = 3 [json_name = "trigname"]; inline void CreateTrigStmt::clear_trigname() { _impl_.trigname_.ClearToEmpty(); } inline const std::string& CreateTrigStmt::trigname() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.trigname) return _internal_trigname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateTrigStmt::set_trigname(ArgT0&& arg0, ArgT... args) { _impl_.trigname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.trigname) } inline std::string* CreateTrigStmt::mutable_trigname() { 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 { return _impl_.trigname_.Get(); } inline void CreateTrigStmt::_internal_set_trigname(const std::string& value) { _impl_.trigname_.Set(value, GetArenaForAllocation()); } inline std::string* CreateTrigStmt::_internal_mutable_trigname() { return _impl_.trigname_.Mutable(GetArenaForAllocation()); } inline std::string* CreateTrigStmt::release_trigname() { // @@protoc_insertion_point(field_release:pg_query.CreateTrigStmt.trigname) return _impl_.trigname_.Release(); } inline void CreateTrigStmt::set_allocated_trigname(std::string* trigname) { if (trigname != nullptr) { } else { } _impl_.trigname_.SetAllocated(trigname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.trigname_.IsDefault()) { _impl_.trigname_.Set("", GetArenaForAllocation()); } #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::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool CreateTrigStmt::has_relation() const { return _internal_has_relation(); } inline void CreateTrigStmt::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& CreateTrigStmt::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.relation) return _internal_relation(); } inline void CreateTrigStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTrigStmt.relation) } inline ::pg_query::RangeVar* CreateTrigStmt::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* CreateTrigStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.CreateTrigStmt.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* CreateTrigStmt::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* CreateTrigStmt::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@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 _impl_.funcname_.size(); } inline int CreateTrigStmt::funcname_size() const { return _internal_funcname_size(); } inline void CreateTrigStmt::clear_funcname() { _impl_.funcname_.Clear(); } inline ::pg_query::Node* CreateTrigStmt::mutable_funcname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.funcname) return _impl_.funcname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateTrigStmt::mutable_funcname() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTrigStmt.funcname) return &_impl_.funcname_; } inline const ::pg_query::Node& CreateTrigStmt::_internal_funcname(int index) const { return _impl_.funcname_.Get(index); } inline const ::pg_query::Node& CreateTrigStmt::funcname(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.funcname) return _internal_funcname(index); } inline ::pg_query::Node* CreateTrigStmt::_internal_add_funcname() { return _impl_.funcname_.Add(); } inline ::pg_query::Node* CreateTrigStmt::add_funcname() { ::pg_query::Node* _add = _internal_add_funcname(); // @@protoc_insertion_point(field_add:pg_query.CreateTrigStmt.funcname) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateTrigStmt::funcname() const { // @@protoc_insertion_point(field_list:pg_query.CreateTrigStmt.funcname) return _impl_.funcname_; } // repeated .pg_query.Node args = 6 [json_name = "args"]; inline int CreateTrigStmt::_internal_args_size() const { return _impl_.args_.size(); } inline int CreateTrigStmt::args_size() const { return _internal_args_size(); } inline void CreateTrigStmt::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* CreateTrigStmt::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateTrigStmt::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTrigStmt.args) return &_impl_.args_; } inline const ::pg_query::Node& CreateTrigStmt::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& CreateTrigStmt::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.args) return _internal_args(index); } inline ::pg_query::Node* CreateTrigStmt::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* CreateTrigStmt::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.CreateTrigStmt.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateTrigStmt::args() const { // @@protoc_insertion_point(field_list:pg_query.CreateTrigStmt.args) return _impl_.args_; } // bool row = 7 [json_name = "row"]; inline void CreateTrigStmt::clear_row() { _impl_.row_ = false; } inline bool CreateTrigStmt::_internal_row() const { return _impl_.row_; } inline bool CreateTrigStmt::row() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.row) return _internal_row(); } inline void CreateTrigStmt::_internal_set_row(bool value) { _impl_.row_ = value; } inline void CreateTrigStmt::set_row(bool value) { _internal_set_row(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.row) } // int32 timing = 8 [json_name = "timing"]; inline void CreateTrigStmt::clear_timing() { _impl_.timing_ = 0; } inline int32_t CreateTrigStmt::_internal_timing() const { return _impl_.timing_; } inline int32_t CreateTrigStmt::timing() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.timing) return _internal_timing(); } inline void CreateTrigStmt::_internal_set_timing(int32_t value) { _impl_.timing_ = value; } inline void CreateTrigStmt::set_timing(int32_t value) { _internal_set_timing(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.timing) } // int32 events = 9 [json_name = "events"]; inline void CreateTrigStmt::clear_events() { _impl_.events_ = 0; } inline int32_t CreateTrigStmt::_internal_events() const { return _impl_.events_; } inline int32_t CreateTrigStmt::events() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.events) return _internal_events(); } inline void CreateTrigStmt::_internal_set_events(int32_t value) { _impl_.events_ = value; } inline void CreateTrigStmt::set_events(int32_t value) { _internal_set_events(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.events) } // repeated .pg_query.Node columns = 10 [json_name = "columns"]; inline int CreateTrigStmt::_internal_columns_size() const { return _impl_.columns_.size(); } inline int CreateTrigStmt::columns_size() const { return _internal_columns_size(); } inline void CreateTrigStmt::clear_columns() { _impl_.columns_.Clear(); } inline ::pg_query::Node* CreateTrigStmt::mutable_columns(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.columns) return _impl_.columns_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateTrigStmt::mutable_columns() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTrigStmt.columns) return &_impl_.columns_; } inline const ::pg_query::Node& CreateTrigStmt::_internal_columns(int index) const { return _impl_.columns_.Get(index); } inline const ::pg_query::Node& CreateTrigStmt::columns(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.columns) return _internal_columns(index); } inline ::pg_query::Node* CreateTrigStmt::_internal_add_columns() { return _impl_.columns_.Add(); } inline ::pg_query::Node* CreateTrigStmt::add_columns() { ::pg_query::Node* _add = _internal_add_columns(); // @@protoc_insertion_point(field_add:pg_query.CreateTrigStmt.columns) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateTrigStmt::columns() const { // @@protoc_insertion_point(field_list:pg_query.CreateTrigStmt.columns) return _impl_.columns_; } // .pg_query.Node when_clause = 11 [json_name = "whenClause"]; inline bool CreateTrigStmt::_internal_has_when_clause() const { return this != internal_default_instance() && _impl_.when_clause_ != nullptr; } inline bool CreateTrigStmt::has_when_clause() const { return _internal_has_when_clause(); } inline void CreateTrigStmt::clear_when_clause() { if (GetArenaForAllocation() == nullptr && _impl_.when_clause_ != nullptr) { delete _impl_.when_clause_; } _impl_.when_clause_ = nullptr; } inline const ::pg_query::Node& CreateTrigStmt::_internal_when_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.when_clause) return _internal_when_clause(); } inline void CreateTrigStmt::unsafe_arena_set_allocated_when_clause( ::pg_query::Node* when_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.when_clause_); } _impl_.when_clause_ = when_clause; if (when_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTrigStmt.when_clause) } inline ::pg_query::Node* CreateTrigStmt::release_when_clause() { ::pg_query::Node* temp = _impl_.when_clause_; _impl_.when_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CreateTrigStmt::unsafe_arena_release_when_clause() { // @@protoc_insertion_point(field_release:pg_query.CreateTrigStmt.when_clause) ::pg_query::Node* temp = _impl_.when_clause_; _impl_.when_clause_ = nullptr; return temp; } inline ::pg_query::Node* CreateTrigStmt::_internal_mutable_when_clause() { if (_impl_.when_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.when_clause_ = p; } return _impl_.when_clause_; } inline ::pg_query::Node* CreateTrigStmt::mutable_when_clause() { ::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* when_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.when_clause_; } if (when_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(when_clause); if (message_arena != submessage_arena) { when_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, when_clause, submessage_arena); } } else { } _impl_.when_clause_ = when_clause; // @@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 _impl_.transition_rels_.size(); } inline int CreateTrigStmt::transition_rels_size() const { return _internal_transition_rels_size(); } inline void CreateTrigStmt::clear_transition_rels() { _impl_.transition_rels_.Clear(); } inline ::pg_query::Node* CreateTrigStmt::mutable_transition_rels(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.transition_rels) return _impl_.transition_rels_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateTrigStmt::mutable_transition_rels() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTrigStmt.transition_rels) return &_impl_.transition_rels_; } inline const ::pg_query::Node& CreateTrigStmt::_internal_transition_rels(int index) const { return _impl_.transition_rels_.Get(index); } inline const ::pg_query::Node& CreateTrigStmt::transition_rels(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.transition_rels) return _internal_transition_rels(index); } inline ::pg_query::Node* CreateTrigStmt::_internal_add_transition_rels() { return _impl_.transition_rels_.Add(); } inline ::pg_query::Node* CreateTrigStmt::add_transition_rels() { ::pg_query::Node* _add = _internal_add_transition_rels(); // @@protoc_insertion_point(field_add:pg_query.CreateTrigStmt.transition_rels) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateTrigStmt::transition_rels() const { // @@protoc_insertion_point(field_list:pg_query.CreateTrigStmt.transition_rels) return _impl_.transition_rels_; } // bool deferrable = 13 [json_name = "deferrable"]; inline void CreateTrigStmt::clear_deferrable() { _impl_.deferrable_ = false; } inline bool CreateTrigStmt::_internal_deferrable() const { return _impl_.deferrable_; } inline bool CreateTrigStmt::deferrable() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.deferrable) return _internal_deferrable(); } inline void CreateTrigStmt::_internal_set_deferrable(bool value) { _impl_.deferrable_ = value; } inline void CreateTrigStmt::set_deferrable(bool value) { _internal_set_deferrable(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.deferrable) } // bool initdeferred = 14 [json_name = "initdeferred"]; inline void CreateTrigStmt::clear_initdeferred() { _impl_.initdeferred_ = false; } inline bool CreateTrigStmt::_internal_initdeferred() const { return _impl_.initdeferred_; } inline bool CreateTrigStmt::initdeferred() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.initdeferred) return _internal_initdeferred(); } inline void CreateTrigStmt::_internal_set_initdeferred(bool value) { _impl_.initdeferred_ = value; } inline void CreateTrigStmt::set_initdeferred(bool value) { _internal_set_initdeferred(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.initdeferred) } // .pg_query.RangeVar constrrel = 15 [json_name = "constrrel"]; inline bool CreateTrigStmt::_internal_has_constrrel() const { return this != internal_default_instance() && _impl_.constrrel_ != nullptr; } inline bool CreateTrigStmt::has_constrrel() const { return _internal_has_constrrel(); } inline void CreateTrigStmt::clear_constrrel() { if (GetArenaForAllocation() == nullptr && _impl_.constrrel_ != nullptr) { delete _impl_.constrrel_; } _impl_.constrrel_ = nullptr; } inline const ::pg_query::RangeVar& CreateTrigStmt::_internal_constrrel() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.constrrel) return _internal_constrrel(); } inline void CreateTrigStmt::unsafe_arena_set_allocated_constrrel( ::pg_query::RangeVar* constrrel) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.constrrel_); } _impl_.constrrel_ = constrrel; if (constrrel) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTrigStmt.constrrel) } inline ::pg_query::RangeVar* CreateTrigStmt::release_constrrel() { ::pg_query::RangeVar* temp = _impl_.constrrel_; _impl_.constrrel_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* CreateTrigStmt::unsafe_arena_release_constrrel() { // @@protoc_insertion_point(field_release:pg_query.CreateTrigStmt.constrrel) ::pg_query::RangeVar* temp = _impl_.constrrel_; _impl_.constrrel_ = nullptr; return temp; } inline ::pg_query::RangeVar* CreateTrigStmt::_internal_mutable_constrrel() { if (_impl_.constrrel_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.constrrel_ = p; } return _impl_.constrrel_; } inline ::pg_query::RangeVar* CreateTrigStmt::mutable_constrrel() { ::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* constrrel) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.constrrel_; } if (constrrel) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(constrrel); if (message_arena != submessage_arena) { constrrel = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, constrrel, submessage_arena); } } else { } _impl_.constrrel_ = constrrel; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTrigStmt.constrrel) } // ------------------------------------------------------------------- // CreatePLangStmt // bool replace = 1 [json_name = "replace"]; inline void CreatePLangStmt::clear_replace() { _impl_.replace_ = false; } inline bool CreatePLangStmt::_internal_replace() const { return _impl_.replace_; } inline bool CreatePLangStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.replace) return _internal_replace(); } inline void CreatePLangStmt::_internal_set_replace(bool value) { _impl_.replace_ = value; } inline void CreatePLangStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.CreatePLangStmt.replace) } // string plname = 2 [json_name = "plname"]; inline void CreatePLangStmt::clear_plname() { _impl_.plname_.ClearToEmpty(); } inline const std::string& CreatePLangStmt::plname() const { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.plname) return _internal_plname(); } template inline PROTOBUF_ALWAYS_INLINE void CreatePLangStmt::set_plname(ArgT0&& arg0, ArgT... args) { _impl_.plname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreatePLangStmt.plname) } inline std::string* CreatePLangStmt::mutable_plname() { 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 { return _impl_.plname_.Get(); } inline void CreatePLangStmt::_internal_set_plname(const std::string& value) { _impl_.plname_.Set(value, GetArenaForAllocation()); } inline std::string* CreatePLangStmt::_internal_mutable_plname() { return _impl_.plname_.Mutable(GetArenaForAllocation()); } inline std::string* CreatePLangStmt::release_plname() { // @@protoc_insertion_point(field_release:pg_query.CreatePLangStmt.plname) return _impl_.plname_.Release(); } inline void CreatePLangStmt::set_allocated_plname(std::string* plname) { if (plname != nullptr) { } else { } _impl_.plname_.SetAllocated(plname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.plname_.IsDefault()) { _impl_.plname_.Set("", GetArenaForAllocation()); } #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 _impl_.plhandler_.size(); } inline int CreatePLangStmt::plhandler_size() const { return _internal_plhandler_size(); } inline void CreatePLangStmt::clear_plhandler() { _impl_.plhandler_.Clear(); } inline ::pg_query::Node* CreatePLangStmt::mutable_plhandler(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreatePLangStmt.plhandler) return _impl_.plhandler_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreatePLangStmt::mutable_plhandler() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePLangStmt.plhandler) return &_impl_.plhandler_; } inline const ::pg_query::Node& CreatePLangStmt::_internal_plhandler(int index) const { return _impl_.plhandler_.Get(index); } inline const ::pg_query::Node& CreatePLangStmt::plhandler(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.plhandler) return _internal_plhandler(index); } inline ::pg_query::Node* CreatePLangStmt::_internal_add_plhandler() { return _impl_.plhandler_.Add(); } inline ::pg_query::Node* CreatePLangStmt::add_plhandler() { ::pg_query::Node* _add = _internal_add_plhandler(); // @@protoc_insertion_point(field_add:pg_query.CreatePLangStmt.plhandler) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreatePLangStmt::plhandler() const { // @@protoc_insertion_point(field_list:pg_query.CreatePLangStmt.plhandler) return _impl_.plhandler_; } // repeated .pg_query.Node plinline = 4 [json_name = "plinline"]; inline int CreatePLangStmt::_internal_plinline_size() const { return _impl_.plinline_.size(); } inline int CreatePLangStmt::plinline_size() const { return _internal_plinline_size(); } inline void CreatePLangStmt::clear_plinline() { _impl_.plinline_.Clear(); } inline ::pg_query::Node* CreatePLangStmt::mutable_plinline(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreatePLangStmt.plinline) return _impl_.plinline_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreatePLangStmt::mutable_plinline() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePLangStmt.plinline) return &_impl_.plinline_; } inline const ::pg_query::Node& CreatePLangStmt::_internal_plinline(int index) const { return _impl_.plinline_.Get(index); } inline const ::pg_query::Node& CreatePLangStmt::plinline(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.plinline) return _internal_plinline(index); } inline ::pg_query::Node* CreatePLangStmt::_internal_add_plinline() { return _impl_.plinline_.Add(); } inline ::pg_query::Node* CreatePLangStmt::add_plinline() { ::pg_query::Node* _add = _internal_add_plinline(); // @@protoc_insertion_point(field_add:pg_query.CreatePLangStmt.plinline) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreatePLangStmt::plinline() const { // @@protoc_insertion_point(field_list:pg_query.CreatePLangStmt.plinline) return _impl_.plinline_; } // repeated .pg_query.Node plvalidator = 5 [json_name = "plvalidator"]; inline int CreatePLangStmt::_internal_plvalidator_size() const { return _impl_.plvalidator_.size(); } inline int CreatePLangStmt::plvalidator_size() const { return _internal_plvalidator_size(); } inline void CreatePLangStmt::clear_plvalidator() { _impl_.plvalidator_.Clear(); } inline ::pg_query::Node* CreatePLangStmt::mutable_plvalidator(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreatePLangStmt.plvalidator) return _impl_.plvalidator_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreatePLangStmt::mutable_plvalidator() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePLangStmt.plvalidator) return &_impl_.plvalidator_; } inline const ::pg_query::Node& CreatePLangStmt::_internal_plvalidator(int index) const { return _impl_.plvalidator_.Get(index); } inline const ::pg_query::Node& CreatePLangStmt::plvalidator(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.plvalidator) return _internal_plvalidator(index); } inline ::pg_query::Node* CreatePLangStmt::_internal_add_plvalidator() { return _impl_.plvalidator_.Add(); } inline ::pg_query::Node* CreatePLangStmt::add_plvalidator() { ::pg_query::Node* _add = _internal_add_plvalidator(); // @@protoc_insertion_point(field_add:pg_query.CreatePLangStmt.plvalidator) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreatePLangStmt::plvalidator() const { // @@protoc_insertion_point(field_list:pg_query.CreatePLangStmt.plvalidator) return _impl_.plvalidator_; } // bool pltrusted = 6 [json_name = "pltrusted"]; inline void CreatePLangStmt::clear_pltrusted() { _impl_.pltrusted_ = false; } inline bool CreatePLangStmt::_internal_pltrusted() const { return _impl_.pltrusted_; } inline bool CreatePLangStmt::pltrusted() const { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.pltrusted) return _internal_pltrusted(); } inline void CreatePLangStmt::_internal_set_pltrusted(bool value) { _impl_.pltrusted_ = value; } inline void CreatePLangStmt::set_pltrusted(bool value) { _internal_set_pltrusted(value); // @@protoc_insertion_point(field_set:pg_query.CreatePLangStmt.pltrusted) } // ------------------------------------------------------------------- // CreateRoleStmt // .pg_query.RoleStmtType stmt_type = 1 [json_name = "stmt_type"]; inline void CreateRoleStmt::clear_stmt_type() { _impl_.stmt_type_ = 0; } inline ::pg_query::RoleStmtType CreateRoleStmt::_internal_stmt_type() const { return static_cast< ::pg_query::RoleStmtType >(_impl_.stmt_type_); } inline ::pg_query::RoleStmtType CreateRoleStmt::stmt_type() const { // @@protoc_insertion_point(field_get:pg_query.CreateRoleStmt.stmt_type) return _internal_stmt_type(); } inline void CreateRoleStmt::_internal_set_stmt_type(::pg_query::RoleStmtType value) { _impl_.stmt_type_ = value; } inline void CreateRoleStmt::set_stmt_type(::pg_query::RoleStmtType value) { _internal_set_stmt_type(value); // @@protoc_insertion_point(field_set:pg_query.CreateRoleStmt.stmt_type) } // string role = 2 [json_name = "role"]; inline void CreateRoleStmt::clear_role() { _impl_.role_.ClearToEmpty(); } inline const std::string& CreateRoleStmt::role() const { // @@protoc_insertion_point(field_get:pg_query.CreateRoleStmt.role) return _internal_role(); } template inline PROTOBUF_ALWAYS_INLINE void CreateRoleStmt::set_role(ArgT0&& arg0, ArgT... args) { _impl_.role_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateRoleStmt.role) } inline std::string* CreateRoleStmt::mutable_role() { 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 { return _impl_.role_.Get(); } inline void CreateRoleStmt::_internal_set_role(const std::string& value) { _impl_.role_.Set(value, GetArenaForAllocation()); } inline std::string* CreateRoleStmt::_internal_mutable_role() { return _impl_.role_.Mutable(GetArenaForAllocation()); } inline std::string* CreateRoleStmt::release_role() { // @@protoc_insertion_point(field_release:pg_query.CreateRoleStmt.role) return _impl_.role_.Release(); } inline void CreateRoleStmt::set_allocated_role(std::string* role) { if (role != nullptr) { } else { } _impl_.role_.SetAllocated(role, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.role_.IsDefault()) { _impl_.role_.Set("", GetArenaForAllocation()); } #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 _impl_.options_.size(); } inline int CreateRoleStmt::options_size() const { return _internal_options_size(); } inline void CreateRoleStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* CreateRoleStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateRoleStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateRoleStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateRoleStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& CreateRoleStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& CreateRoleStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateRoleStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateRoleStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* CreateRoleStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.CreateRoleStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateRoleStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateRoleStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // AlterRoleStmt // .pg_query.RoleSpec role = 1 [json_name = "role"]; inline bool AlterRoleStmt::_internal_has_role() const { return this != internal_default_instance() && _impl_.role_ != nullptr; } inline bool AlterRoleStmt::has_role() const { return _internal_has_role(); } inline void AlterRoleStmt::clear_role() { if (GetArenaForAllocation() == nullptr && _impl_.role_ != nullptr) { delete _impl_.role_; } _impl_.role_ = nullptr; } inline const ::pg_query::RoleSpec& AlterRoleStmt::_internal_role() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterRoleStmt.role) return _internal_role(); } inline void AlterRoleStmt::unsafe_arena_set_allocated_role( ::pg_query::RoleSpec* role) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.role_); } _impl_.role_ = role; if (role) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterRoleStmt.role) } inline ::pg_query::RoleSpec* AlterRoleStmt::release_role() { ::pg_query::RoleSpec* temp = _impl_.role_; _impl_.role_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RoleSpec* AlterRoleStmt::unsafe_arena_release_role() { // @@protoc_insertion_point(field_release:pg_query.AlterRoleStmt.role) ::pg_query::RoleSpec* temp = _impl_.role_; _impl_.role_ = nullptr; return temp; } inline ::pg_query::RoleSpec* AlterRoleStmt::_internal_mutable_role() { if (_impl_.role_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArenaForAllocation()); _impl_.role_ = p; } return _impl_.role_; } inline ::pg_query::RoleSpec* AlterRoleStmt::mutable_role() { ::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* role) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.role_; } if (role) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(role); if (message_arena != submessage_arena) { role = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, role, submessage_arena); } } else { } _impl_.role_ = role; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterRoleStmt.role) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int AlterRoleStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int AlterRoleStmt::options_size() const { return _internal_options_size(); } inline void AlterRoleStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* AlterRoleStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterRoleStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterRoleStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterRoleStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& AlterRoleStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& AlterRoleStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterRoleStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterRoleStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* AlterRoleStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.AlterRoleStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterRoleStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterRoleStmt.options) return _impl_.options_; } // int32 action = 3 [json_name = "action"]; inline void AlterRoleStmt::clear_action() { _impl_.action_ = 0; } inline int32_t AlterRoleStmt::_internal_action() const { return _impl_.action_; } inline int32_t AlterRoleStmt::action() const { // @@protoc_insertion_point(field_get:pg_query.AlterRoleStmt.action) return _internal_action(); } inline void AlterRoleStmt::_internal_set_action(int32_t value) { _impl_.action_ = value; } inline void AlterRoleStmt::set_action(int32_t value) { _internal_set_action(value); // @@protoc_insertion_point(field_set:pg_query.AlterRoleStmt.action) } // ------------------------------------------------------------------- // DropRoleStmt // repeated .pg_query.Node roles = 1 [json_name = "roles"]; inline int DropRoleStmt::_internal_roles_size() const { return _impl_.roles_.size(); } inline int DropRoleStmt::roles_size() const { return _internal_roles_size(); } inline void DropRoleStmt::clear_roles() { _impl_.roles_.Clear(); } inline ::pg_query::Node* DropRoleStmt::mutable_roles(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DropRoleStmt.roles) return _impl_.roles_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DropRoleStmt::mutable_roles() { // @@protoc_insertion_point(field_mutable_list:pg_query.DropRoleStmt.roles) return &_impl_.roles_; } inline const ::pg_query::Node& DropRoleStmt::_internal_roles(int index) const { return _impl_.roles_.Get(index); } inline const ::pg_query::Node& DropRoleStmt::roles(int index) const { // @@protoc_insertion_point(field_get:pg_query.DropRoleStmt.roles) return _internal_roles(index); } inline ::pg_query::Node* DropRoleStmt::_internal_add_roles() { return _impl_.roles_.Add(); } inline ::pg_query::Node* DropRoleStmt::add_roles() { ::pg_query::Node* _add = _internal_add_roles(); // @@protoc_insertion_point(field_add:pg_query.DropRoleStmt.roles) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DropRoleStmt::roles() const { // @@protoc_insertion_point(field_list:pg_query.DropRoleStmt.roles) return _impl_.roles_; } // bool missing_ok = 2 [json_name = "missing_ok"]; inline void DropRoleStmt::clear_missing_ok() { _impl_.missing_ok_ = false; } inline bool DropRoleStmt::_internal_missing_ok() const { return _impl_.missing_ok_; } inline bool DropRoleStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropRoleStmt.missing_ok) return _internal_missing_ok(); } inline void DropRoleStmt::_internal_set_missing_ok(bool value) { _impl_.missing_ok_ = value; } inline void DropRoleStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropRoleStmt.missing_ok) } // ------------------------------------------------------------------- // LockStmt // repeated .pg_query.Node relations = 1 [json_name = "relations"]; inline int LockStmt::_internal_relations_size() const { return _impl_.relations_.size(); } inline int LockStmt::relations_size() const { return _internal_relations_size(); } inline void LockStmt::clear_relations() { _impl_.relations_.Clear(); } inline ::pg_query::Node* LockStmt::mutable_relations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.LockStmt.relations) return _impl_.relations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* LockStmt::mutable_relations() { // @@protoc_insertion_point(field_mutable_list:pg_query.LockStmt.relations) return &_impl_.relations_; } inline const ::pg_query::Node& LockStmt::_internal_relations(int index) const { return _impl_.relations_.Get(index); } inline const ::pg_query::Node& LockStmt::relations(int index) const { // @@protoc_insertion_point(field_get:pg_query.LockStmt.relations) return _internal_relations(index); } inline ::pg_query::Node* LockStmt::_internal_add_relations() { return _impl_.relations_.Add(); } inline ::pg_query::Node* LockStmt::add_relations() { ::pg_query::Node* _add = _internal_add_relations(); // @@protoc_insertion_point(field_add:pg_query.LockStmt.relations) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& LockStmt::relations() const { // @@protoc_insertion_point(field_list:pg_query.LockStmt.relations) return _impl_.relations_; } // int32 mode = 2 [json_name = "mode"]; inline void LockStmt::clear_mode() { _impl_.mode_ = 0; } inline int32_t LockStmt::_internal_mode() const { return _impl_.mode_; } inline int32_t LockStmt::mode() const { // @@protoc_insertion_point(field_get:pg_query.LockStmt.mode) return _internal_mode(); } inline void LockStmt::_internal_set_mode(int32_t value) { _impl_.mode_ = value; } inline void LockStmt::set_mode(int32_t value) { _internal_set_mode(value); // @@protoc_insertion_point(field_set:pg_query.LockStmt.mode) } // bool nowait = 3 [json_name = "nowait"]; inline void LockStmt::clear_nowait() { _impl_.nowait_ = false; } inline bool LockStmt::_internal_nowait() const { return _impl_.nowait_; } inline bool LockStmt::nowait() const { // @@protoc_insertion_point(field_get:pg_query.LockStmt.nowait) return _internal_nowait(); } inline void LockStmt::_internal_set_nowait(bool value) { _impl_.nowait_ = value; } inline void LockStmt::set_nowait(bool value) { _internal_set_nowait(value); // @@protoc_insertion_point(field_set:pg_query.LockStmt.nowait) } // ------------------------------------------------------------------- // ConstraintsSetStmt // repeated .pg_query.Node constraints = 1 [json_name = "constraints"]; inline int ConstraintsSetStmt::_internal_constraints_size() const { return _impl_.constraints_.size(); } inline int ConstraintsSetStmt::constraints_size() const { return _internal_constraints_size(); } inline void ConstraintsSetStmt::clear_constraints() { _impl_.constraints_.Clear(); } inline ::pg_query::Node* ConstraintsSetStmt::mutable_constraints(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ConstraintsSetStmt.constraints) return _impl_.constraints_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ConstraintsSetStmt::mutable_constraints() { // @@protoc_insertion_point(field_mutable_list:pg_query.ConstraintsSetStmt.constraints) return &_impl_.constraints_; } inline const ::pg_query::Node& ConstraintsSetStmt::_internal_constraints(int index) const { return _impl_.constraints_.Get(index); } inline const ::pg_query::Node& ConstraintsSetStmt::constraints(int index) const { // @@protoc_insertion_point(field_get:pg_query.ConstraintsSetStmt.constraints) return _internal_constraints(index); } inline ::pg_query::Node* ConstraintsSetStmt::_internal_add_constraints() { return _impl_.constraints_.Add(); } inline ::pg_query::Node* ConstraintsSetStmt::add_constraints() { ::pg_query::Node* _add = _internal_add_constraints(); // @@protoc_insertion_point(field_add:pg_query.ConstraintsSetStmt.constraints) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ConstraintsSetStmt::constraints() const { // @@protoc_insertion_point(field_list:pg_query.ConstraintsSetStmt.constraints) return _impl_.constraints_; } // bool deferred = 2 [json_name = "deferred"]; inline void ConstraintsSetStmt::clear_deferred() { _impl_.deferred_ = false; } inline bool ConstraintsSetStmt::_internal_deferred() const { return _impl_.deferred_; } inline bool ConstraintsSetStmt::deferred() const { // @@protoc_insertion_point(field_get:pg_query.ConstraintsSetStmt.deferred) return _internal_deferred(); } inline void ConstraintsSetStmt::_internal_set_deferred(bool value) { _impl_.deferred_ = value; } inline void ConstraintsSetStmt::set_deferred(bool value) { _internal_set_deferred(value); // @@protoc_insertion_point(field_set:pg_query.ConstraintsSetStmt.deferred) } // ------------------------------------------------------------------- // ReindexStmt // .pg_query.ReindexObjectType kind = 1 [json_name = "kind"]; inline void ReindexStmt::clear_kind() { _impl_.kind_ = 0; } inline ::pg_query::ReindexObjectType ReindexStmt::_internal_kind() const { return static_cast< ::pg_query::ReindexObjectType >(_impl_.kind_); } inline ::pg_query::ReindexObjectType ReindexStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.kind) return _internal_kind(); } inline void ReindexStmt::_internal_set_kind(::pg_query::ReindexObjectType value) { _impl_.kind_ = value; } inline void ReindexStmt::set_kind(::pg_query::ReindexObjectType value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.ReindexStmt.kind) } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; inline bool ReindexStmt::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool ReindexStmt::has_relation() const { return _internal_has_relation(); } inline void ReindexStmt::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& ReindexStmt::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.relation) return _internal_relation(); } inline void ReindexStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ReindexStmt.relation) } inline ::pg_query::RangeVar* ReindexStmt::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* ReindexStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.ReindexStmt.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* ReindexStmt::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* ReindexStmt::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.ReindexStmt.relation) } // string name = 3 [json_name = "name"]; inline void ReindexStmt::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& ReindexStmt::name() const { // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void ReindexStmt::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.ReindexStmt.name) } inline std::string* ReindexStmt::mutable_name() { 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 { return _impl_.name_.Get(); } inline void ReindexStmt::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* ReindexStmt::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* ReindexStmt::release_name() { // @@protoc_insertion_point(field_release:pg_query.ReindexStmt.name) return _impl_.name_.Release(); } inline void ReindexStmt::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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 _impl_.params_.size(); } inline int ReindexStmt::params_size() const { return _internal_params_size(); } inline void ReindexStmt::clear_params() { _impl_.params_.Clear(); } inline ::pg_query::Node* ReindexStmt::mutable_params(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ReindexStmt.params) return _impl_.params_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ReindexStmt::mutable_params() { // @@protoc_insertion_point(field_mutable_list:pg_query.ReindexStmt.params) return &_impl_.params_; } inline const ::pg_query::Node& ReindexStmt::_internal_params(int index) const { return _impl_.params_.Get(index); } inline const ::pg_query::Node& ReindexStmt::params(int index) const { // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.params) return _internal_params(index); } inline ::pg_query::Node* ReindexStmt::_internal_add_params() { return _impl_.params_.Add(); } inline ::pg_query::Node* ReindexStmt::add_params() { ::pg_query::Node* _add = _internal_add_params(); // @@protoc_insertion_point(field_add:pg_query.ReindexStmt.params) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ReindexStmt::params() const { // @@protoc_insertion_point(field_list:pg_query.ReindexStmt.params) return _impl_.params_; } // ------------------------------------------------------------------- // CheckPointStmt // ------------------------------------------------------------------- // CreateSchemaStmt // string schemaname = 1 [json_name = "schemaname"]; inline void CreateSchemaStmt::clear_schemaname() { _impl_.schemaname_.ClearToEmpty(); } inline const std::string& CreateSchemaStmt::schemaname() const { // @@protoc_insertion_point(field_get:pg_query.CreateSchemaStmt.schemaname) return _internal_schemaname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateSchemaStmt::set_schemaname(ArgT0&& arg0, ArgT... args) { _impl_.schemaname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateSchemaStmt.schemaname) } inline std::string* CreateSchemaStmt::mutable_schemaname() { 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 { return _impl_.schemaname_.Get(); } inline void CreateSchemaStmt::_internal_set_schemaname(const std::string& value) { _impl_.schemaname_.Set(value, GetArenaForAllocation()); } inline std::string* CreateSchemaStmt::_internal_mutable_schemaname() { return _impl_.schemaname_.Mutable(GetArenaForAllocation()); } inline std::string* CreateSchemaStmt::release_schemaname() { // @@protoc_insertion_point(field_release:pg_query.CreateSchemaStmt.schemaname) return _impl_.schemaname_.Release(); } inline void CreateSchemaStmt::set_allocated_schemaname(std::string* schemaname) { if (schemaname != nullptr) { } else { } _impl_.schemaname_.SetAllocated(schemaname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.schemaname_.IsDefault()) { _impl_.schemaname_.Set("", GetArenaForAllocation()); } #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::_internal_has_authrole() const { return this != internal_default_instance() && _impl_.authrole_ != nullptr; } inline bool CreateSchemaStmt::has_authrole() const { return _internal_has_authrole(); } inline void CreateSchemaStmt::clear_authrole() { if (GetArenaForAllocation() == nullptr && _impl_.authrole_ != nullptr) { delete _impl_.authrole_; } _impl_.authrole_ = nullptr; } inline const ::pg_query::RoleSpec& CreateSchemaStmt::_internal_authrole() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateSchemaStmt.authrole) return _internal_authrole(); } inline void CreateSchemaStmt::unsafe_arena_set_allocated_authrole( ::pg_query::RoleSpec* authrole) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.authrole_); } _impl_.authrole_ = authrole; if (authrole) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateSchemaStmt.authrole) } inline ::pg_query::RoleSpec* CreateSchemaStmt::release_authrole() { ::pg_query::RoleSpec* temp = _impl_.authrole_; _impl_.authrole_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RoleSpec* CreateSchemaStmt::unsafe_arena_release_authrole() { // @@protoc_insertion_point(field_release:pg_query.CreateSchemaStmt.authrole) ::pg_query::RoleSpec* temp = _impl_.authrole_; _impl_.authrole_ = nullptr; return temp; } inline ::pg_query::RoleSpec* CreateSchemaStmt::_internal_mutable_authrole() { if (_impl_.authrole_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArenaForAllocation()); _impl_.authrole_ = p; } return _impl_.authrole_; } inline ::pg_query::RoleSpec* CreateSchemaStmt::mutable_authrole() { ::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* authrole) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.authrole_; } if (authrole) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(authrole); if (message_arena != submessage_arena) { authrole = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, authrole, submessage_arena); } } else { } _impl_.authrole_ = authrole; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateSchemaStmt.authrole) } // repeated .pg_query.Node schema_elts = 3 [json_name = "schemaElts"]; inline int CreateSchemaStmt::_internal_schema_elts_size() const { return _impl_.schema_elts_.size(); } inline int CreateSchemaStmt::schema_elts_size() const { return _internal_schema_elts_size(); } inline void CreateSchemaStmt::clear_schema_elts() { _impl_.schema_elts_.Clear(); } inline ::pg_query::Node* CreateSchemaStmt::mutable_schema_elts(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateSchemaStmt.schema_elts) return _impl_.schema_elts_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateSchemaStmt::mutable_schema_elts() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateSchemaStmt.schema_elts) return &_impl_.schema_elts_; } inline const ::pg_query::Node& CreateSchemaStmt::_internal_schema_elts(int index) const { return _impl_.schema_elts_.Get(index); } inline const ::pg_query::Node& CreateSchemaStmt::schema_elts(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateSchemaStmt.schema_elts) return _internal_schema_elts(index); } inline ::pg_query::Node* CreateSchemaStmt::_internal_add_schema_elts() { return _impl_.schema_elts_.Add(); } inline ::pg_query::Node* CreateSchemaStmt::add_schema_elts() { ::pg_query::Node* _add = _internal_add_schema_elts(); // @@protoc_insertion_point(field_add:pg_query.CreateSchemaStmt.schema_elts) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateSchemaStmt::schema_elts() const { // @@protoc_insertion_point(field_list:pg_query.CreateSchemaStmt.schema_elts) return _impl_.schema_elts_; } // bool if_not_exists = 4 [json_name = "if_not_exists"]; inline void CreateSchemaStmt::clear_if_not_exists() { _impl_.if_not_exists_ = false; } inline bool CreateSchemaStmt::_internal_if_not_exists() const { return _impl_.if_not_exists_; } inline bool CreateSchemaStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.CreateSchemaStmt.if_not_exists) return _internal_if_not_exists(); } inline void CreateSchemaStmt::_internal_set_if_not_exists(bool value) { _impl_.if_not_exists_ = value; } inline void CreateSchemaStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateSchemaStmt.if_not_exists) } // ------------------------------------------------------------------- // AlterDatabaseStmt // string dbname = 1 [json_name = "dbname"]; inline void AlterDatabaseStmt::clear_dbname() { _impl_.dbname_.ClearToEmpty(); } inline const std::string& AlterDatabaseStmt::dbname() const { // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseStmt.dbname) return _internal_dbname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterDatabaseStmt::set_dbname(ArgT0&& arg0, ArgT... args) { _impl_.dbname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterDatabaseStmt.dbname) } inline std::string* AlterDatabaseStmt::mutable_dbname() { 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 { return _impl_.dbname_.Get(); } inline void AlterDatabaseStmt::_internal_set_dbname(const std::string& value) { _impl_.dbname_.Set(value, GetArenaForAllocation()); } inline std::string* AlterDatabaseStmt::_internal_mutable_dbname() { return _impl_.dbname_.Mutable(GetArenaForAllocation()); } inline std::string* AlterDatabaseStmt::release_dbname() { // @@protoc_insertion_point(field_release:pg_query.AlterDatabaseStmt.dbname) return _impl_.dbname_.Release(); } inline void AlterDatabaseStmt::set_allocated_dbname(std::string* dbname) { if (dbname != nullptr) { } else { } _impl_.dbname_.SetAllocated(dbname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.dbname_.IsDefault()) { _impl_.dbname_.Set("", GetArenaForAllocation()); } #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 _impl_.options_.size(); } inline int AlterDatabaseStmt::options_size() const { return _internal_options_size(); } inline void AlterDatabaseStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* AlterDatabaseStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterDatabaseStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterDatabaseStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterDatabaseStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& AlterDatabaseStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& AlterDatabaseStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterDatabaseStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* AlterDatabaseStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.AlterDatabaseStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterDatabaseStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterDatabaseStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // AlterDatabaseRefreshCollStmt // string dbname = 1 [json_name = "dbname"]; inline void AlterDatabaseRefreshCollStmt::clear_dbname() { _impl_.dbname_.ClearToEmpty(); } inline const std::string& AlterDatabaseRefreshCollStmt::dbname() const { // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseRefreshCollStmt.dbname) return _internal_dbname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterDatabaseRefreshCollStmt::set_dbname(ArgT0&& arg0, ArgT... args) { _impl_.dbname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterDatabaseRefreshCollStmt.dbname) } inline std::string* AlterDatabaseRefreshCollStmt::mutable_dbname() { 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 { return _impl_.dbname_.Get(); } inline void AlterDatabaseRefreshCollStmt::_internal_set_dbname(const std::string& value) { _impl_.dbname_.Set(value, GetArenaForAllocation()); } inline std::string* AlterDatabaseRefreshCollStmt::_internal_mutable_dbname() { return _impl_.dbname_.Mutable(GetArenaForAllocation()); } inline std::string* AlterDatabaseRefreshCollStmt::release_dbname() { // @@protoc_insertion_point(field_release:pg_query.AlterDatabaseRefreshCollStmt.dbname) return _impl_.dbname_.Release(); } inline void AlterDatabaseRefreshCollStmt::set_allocated_dbname(std::string* dbname) { if (dbname != nullptr) { } else { } _impl_.dbname_.SetAllocated(dbname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.dbname_.IsDefault()) { _impl_.dbname_.Set("", GetArenaForAllocation()); } #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() { _impl_.dbname_.ClearToEmpty(); } inline const std::string& AlterDatabaseSetStmt::dbname() const { // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseSetStmt.dbname) return _internal_dbname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterDatabaseSetStmt::set_dbname(ArgT0&& arg0, ArgT... args) { _impl_.dbname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterDatabaseSetStmt.dbname) } inline std::string* AlterDatabaseSetStmt::mutable_dbname() { 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 { return _impl_.dbname_.Get(); } inline void AlterDatabaseSetStmt::_internal_set_dbname(const std::string& value) { _impl_.dbname_.Set(value, GetArenaForAllocation()); } inline std::string* AlterDatabaseSetStmt::_internal_mutable_dbname() { return _impl_.dbname_.Mutable(GetArenaForAllocation()); } inline std::string* AlterDatabaseSetStmt::release_dbname() { // @@protoc_insertion_point(field_release:pg_query.AlterDatabaseSetStmt.dbname) return _impl_.dbname_.Release(); } inline void AlterDatabaseSetStmt::set_allocated_dbname(std::string* dbname) { if (dbname != nullptr) { } else { } _impl_.dbname_.SetAllocated(dbname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.dbname_.IsDefault()) { _impl_.dbname_.Set("", GetArenaForAllocation()); } #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::_internal_has_setstmt() const { return this != internal_default_instance() && _impl_.setstmt_ != nullptr; } inline bool AlterDatabaseSetStmt::has_setstmt() const { return _internal_has_setstmt(); } inline void AlterDatabaseSetStmt::clear_setstmt() { if (GetArenaForAllocation() == nullptr && _impl_.setstmt_ != nullptr) { delete _impl_.setstmt_; } _impl_.setstmt_ = nullptr; } inline const ::pg_query::VariableSetStmt& AlterDatabaseSetStmt::_internal_setstmt() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseSetStmt.setstmt) return _internal_setstmt(); } inline void AlterDatabaseSetStmt::unsafe_arena_set_allocated_setstmt( ::pg_query::VariableSetStmt* setstmt) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.setstmt_); } _impl_.setstmt_ = setstmt; if (setstmt) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterDatabaseSetStmt.setstmt) } inline ::pg_query::VariableSetStmt* AlterDatabaseSetStmt::release_setstmt() { ::pg_query::VariableSetStmt* temp = _impl_.setstmt_; _impl_.setstmt_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::VariableSetStmt* AlterDatabaseSetStmt::unsafe_arena_release_setstmt() { // @@protoc_insertion_point(field_release:pg_query.AlterDatabaseSetStmt.setstmt) ::pg_query::VariableSetStmt* temp = _impl_.setstmt_; _impl_.setstmt_ = nullptr; return temp; } inline ::pg_query::VariableSetStmt* AlterDatabaseSetStmt::_internal_mutable_setstmt() { if (_impl_.setstmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::VariableSetStmt>(GetArenaForAllocation()); _impl_.setstmt_ = p; } return _impl_.setstmt_; } inline ::pg_query::VariableSetStmt* AlterDatabaseSetStmt::mutable_setstmt() { ::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* setstmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.setstmt_; } if (setstmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(setstmt); if (message_arena != submessage_arena) { setstmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, setstmt, submessage_arena); } } else { } _impl_.setstmt_ = setstmt; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDatabaseSetStmt.setstmt) } // ------------------------------------------------------------------- // AlterRoleSetStmt // .pg_query.RoleSpec role = 1 [json_name = "role"]; inline bool AlterRoleSetStmt::_internal_has_role() const { return this != internal_default_instance() && _impl_.role_ != nullptr; } inline bool AlterRoleSetStmt::has_role() const { return _internal_has_role(); } inline void AlterRoleSetStmt::clear_role() { if (GetArenaForAllocation() == nullptr && _impl_.role_ != nullptr) { delete _impl_.role_; } _impl_.role_ = nullptr; } inline const ::pg_query::RoleSpec& AlterRoleSetStmt::_internal_role() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterRoleSetStmt.role) return _internal_role(); } inline void AlterRoleSetStmt::unsafe_arena_set_allocated_role( ::pg_query::RoleSpec* role) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.role_); } _impl_.role_ = role; if (role) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterRoleSetStmt.role) } inline ::pg_query::RoleSpec* AlterRoleSetStmt::release_role() { ::pg_query::RoleSpec* temp = _impl_.role_; _impl_.role_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RoleSpec* AlterRoleSetStmt::unsafe_arena_release_role() { // @@protoc_insertion_point(field_release:pg_query.AlterRoleSetStmt.role) ::pg_query::RoleSpec* temp = _impl_.role_; _impl_.role_ = nullptr; return temp; } inline ::pg_query::RoleSpec* AlterRoleSetStmt::_internal_mutable_role() { if (_impl_.role_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArenaForAllocation()); _impl_.role_ = p; } return _impl_.role_; } inline ::pg_query::RoleSpec* AlterRoleSetStmt::mutable_role() { ::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* role) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.role_; } if (role) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(role); if (message_arena != submessage_arena) { role = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, role, submessage_arena); } } else { } _impl_.role_ = role; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterRoleSetStmt.role) } // string database = 2 [json_name = "database"]; inline void AlterRoleSetStmt::clear_database() { _impl_.database_.ClearToEmpty(); } inline const std::string& AlterRoleSetStmt::database() const { // @@protoc_insertion_point(field_get:pg_query.AlterRoleSetStmt.database) return _internal_database(); } template inline PROTOBUF_ALWAYS_INLINE void AlterRoleSetStmt::set_database(ArgT0&& arg0, ArgT... args) { _impl_.database_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterRoleSetStmt.database) } inline std::string* AlterRoleSetStmt::mutable_database() { 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 { return _impl_.database_.Get(); } inline void AlterRoleSetStmt::_internal_set_database(const std::string& value) { _impl_.database_.Set(value, GetArenaForAllocation()); } inline std::string* AlterRoleSetStmt::_internal_mutable_database() { return _impl_.database_.Mutable(GetArenaForAllocation()); } inline std::string* AlterRoleSetStmt::release_database() { // @@protoc_insertion_point(field_release:pg_query.AlterRoleSetStmt.database) return _impl_.database_.Release(); } inline void AlterRoleSetStmt::set_allocated_database(std::string* database) { if (database != nullptr) { } else { } _impl_.database_.SetAllocated(database, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.database_.IsDefault()) { _impl_.database_.Set("", GetArenaForAllocation()); } #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::_internal_has_setstmt() const { return this != internal_default_instance() && _impl_.setstmt_ != nullptr; } inline bool AlterRoleSetStmt::has_setstmt() const { return _internal_has_setstmt(); } inline void AlterRoleSetStmt::clear_setstmt() { if (GetArenaForAllocation() == nullptr && _impl_.setstmt_ != nullptr) { delete _impl_.setstmt_; } _impl_.setstmt_ = nullptr; } inline const ::pg_query::VariableSetStmt& AlterRoleSetStmt::_internal_setstmt() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterRoleSetStmt.setstmt) return _internal_setstmt(); } inline void AlterRoleSetStmt::unsafe_arena_set_allocated_setstmt( ::pg_query::VariableSetStmt* setstmt) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.setstmt_); } _impl_.setstmt_ = setstmt; if (setstmt) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterRoleSetStmt.setstmt) } inline ::pg_query::VariableSetStmt* AlterRoleSetStmt::release_setstmt() { ::pg_query::VariableSetStmt* temp = _impl_.setstmt_; _impl_.setstmt_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::VariableSetStmt* AlterRoleSetStmt::unsafe_arena_release_setstmt() { // @@protoc_insertion_point(field_release:pg_query.AlterRoleSetStmt.setstmt) ::pg_query::VariableSetStmt* temp = _impl_.setstmt_; _impl_.setstmt_ = nullptr; return temp; } inline ::pg_query::VariableSetStmt* AlterRoleSetStmt::_internal_mutable_setstmt() { if (_impl_.setstmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::VariableSetStmt>(GetArenaForAllocation()); _impl_.setstmt_ = p; } return _impl_.setstmt_; } inline ::pg_query::VariableSetStmt* AlterRoleSetStmt::mutable_setstmt() { ::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* setstmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.setstmt_; } if (setstmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(setstmt); if (message_arena != submessage_arena) { setstmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, setstmt, submessage_arena); } } else { } _impl_.setstmt_ = setstmt; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterRoleSetStmt.setstmt) } // ------------------------------------------------------------------- // CreateConversionStmt // repeated .pg_query.Node conversion_name = 1 [json_name = "conversion_name"]; inline int CreateConversionStmt::_internal_conversion_name_size() const { return _impl_.conversion_name_.size(); } inline int CreateConversionStmt::conversion_name_size() const { return _internal_conversion_name_size(); } inline void CreateConversionStmt::clear_conversion_name() { _impl_.conversion_name_.Clear(); } inline ::pg_query::Node* CreateConversionStmt::mutable_conversion_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateConversionStmt.conversion_name) return _impl_.conversion_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateConversionStmt::mutable_conversion_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateConversionStmt.conversion_name) return &_impl_.conversion_name_; } inline const ::pg_query::Node& CreateConversionStmt::_internal_conversion_name(int index) const { return _impl_.conversion_name_.Get(index); } inline const ::pg_query::Node& CreateConversionStmt::conversion_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.conversion_name) return _internal_conversion_name(index); } inline ::pg_query::Node* CreateConversionStmt::_internal_add_conversion_name() { return _impl_.conversion_name_.Add(); } inline ::pg_query::Node* CreateConversionStmt::add_conversion_name() { ::pg_query::Node* _add = _internal_add_conversion_name(); // @@protoc_insertion_point(field_add:pg_query.CreateConversionStmt.conversion_name) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateConversionStmt::conversion_name() const { // @@protoc_insertion_point(field_list:pg_query.CreateConversionStmt.conversion_name) return _impl_.conversion_name_; } // string for_encoding_name = 2 [json_name = "for_encoding_name"]; inline void CreateConversionStmt::clear_for_encoding_name() { _impl_.for_encoding_name_.ClearToEmpty(); } inline const std::string& CreateConversionStmt::for_encoding_name() const { // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.for_encoding_name) return _internal_for_encoding_name(); } template inline PROTOBUF_ALWAYS_INLINE void CreateConversionStmt::set_for_encoding_name(ArgT0&& arg0, ArgT... args) { _impl_.for_encoding_name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateConversionStmt.for_encoding_name) } inline std::string* CreateConversionStmt::mutable_for_encoding_name() { 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 { return _impl_.for_encoding_name_.Get(); } inline void CreateConversionStmt::_internal_set_for_encoding_name(const std::string& value) { _impl_.for_encoding_name_.Set(value, GetArenaForAllocation()); } inline std::string* CreateConversionStmt::_internal_mutable_for_encoding_name() { return _impl_.for_encoding_name_.Mutable(GetArenaForAllocation()); } inline std::string* CreateConversionStmt::release_for_encoding_name() { // @@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* for_encoding_name) { if (for_encoding_name != nullptr) { } else { } _impl_.for_encoding_name_.SetAllocated(for_encoding_name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.for_encoding_name_.IsDefault()) { _impl_.for_encoding_name_.Set("", GetArenaForAllocation()); } #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() { _impl_.to_encoding_name_.ClearToEmpty(); } inline const std::string& CreateConversionStmt::to_encoding_name() const { // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.to_encoding_name) return _internal_to_encoding_name(); } template inline PROTOBUF_ALWAYS_INLINE void CreateConversionStmt::set_to_encoding_name(ArgT0&& arg0, ArgT... args) { _impl_.to_encoding_name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateConversionStmt.to_encoding_name) } inline std::string* CreateConversionStmt::mutable_to_encoding_name() { 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 { return _impl_.to_encoding_name_.Get(); } inline void CreateConversionStmt::_internal_set_to_encoding_name(const std::string& value) { _impl_.to_encoding_name_.Set(value, GetArenaForAllocation()); } inline std::string* CreateConversionStmt::_internal_mutable_to_encoding_name() { return _impl_.to_encoding_name_.Mutable(GetArenaForAllocation()); } inline std::string* CreateConversionStmt::release_to_encoding_name() { // @@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* to_encoding_name) { if (to_encoding_name != nullptr) { } else { } _impl_.to_encoding_name_.SetAllocated(to_encoding_name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.to_encoding_name_.IsDefault()) { _impl_.to_encoding_name_.Set("", GetArenaForAllocation()); } #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 _impl_.func_name_.size(); } inline int CreateConversionStmt::func_name_size() const { return _internal_func_name_size(); } inline void CreateConversionStmt::clear_func_name() { _impl_.func_name_.Clear(); } inline ::pg_query::Node* CreateConversionStmt::mutable_func_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateConversionStmt.func_name) return _impl_.func_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateConversionStmt::mutable_func_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateConversionStmt.func_name) return &_impl_.func_name_; } inline const ::pg_query::Node& CreateConversionStmt::_internal_func_name(int index) const { return _impl_.func_name_.Get(index); } inline const ::pg_query::Node& CreateConversionStmt::func_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.func_name) return _internal_func_name(index); } inline ::pg_query::Node* CreateConversionStmt::_internal_add_func_name() { return _impl_.func_name_.Add(); } inline ::pg_query::Node* CreateConversionStmt::add_func_name() { ::pg_query::Node* _add = _internal_add_func_name(); // @@protoc_insertion_point(field_add:pg_query.CreateConversionStmt.func_name) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateConversionStmt::func_name() const { // @@protoc_insertion_point(field_list:pg_query.CreateConversionStmt.func_name) return _impl_.func_name_; } // bool def = 5 [json_name = "def"]; inline void CreateConversionStmt::clear_def() { _impl_.def_ = false; } inline bool CreateConversionStmt::_internal_def() const { return _impl_.def_; } inline bool CreateConversionStmt::def() const { // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.def) return _internal_def(); } inline void CreateConversionStmt::_internal_set_def(bool value) { _impl_.def_ = value; } inline void CreateConversionStmt::set_def(bool value) { _internal_set_def(value); // @@protoc_insertion_point(field_set:pg_query.CreateConversionStmt.def) } // ------------------------------------------------------------------- // CreateCastStmt // .pg_query.TypeName sourcetype = 1 [json_name = "sourcetype"]; inline bool CreateCastStmt::_internal_has_sourcetype() const { return this != internal_default_instance() && _impl_.sourcetype_ != nullptr; } inline bool CreateCastStmt::has_sourcetype() const { return _internal_has_sourcetype(); } inline void CreateCastStmt::clear_sourcetype() { if (GetArenaForAllocation() == nullptr && _impl_.sourcetype_ != nullptr) { delete _impl_.sourcetype_; } _impl_.sourcetype_ = nullptr; } inline const ::pg_query::TypeName& CreateCastStmt::_internal_sourcetype() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.sourcetype) return _internal_sourcetype(); } inline void CreateCastStmt::unsafe_arena_set_allocated_sourcetype( ::pg_query::TypeName* sourcetype) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.sourcetype_); } _impl_.sourcetype_ = sourcetype; if (sourcetype) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateCastStmt.sourcetype) } inline ::pg_query::TypeName* CreateCastStmt::release_sourcetype() { ::pg_query::TypeName* temp = _impl_.sourcetype_; _impl_.sourcetype_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::TypeName* CreateCastStmt::unsafe_arena_release_sourcetype() { // @@protoc_insertion_point(field_release:pg_query.CreateCastStmt.sourcetype) ::pg_query::TypeName* temp = _impl_.sourcetype_; _impl_.sourcetype_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateCastStmt::_internal_mutable_sourcetype() { if (_impl_.sourcetype_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArenaForAllocation()); _impl_.sourcetype_ = p; } return _impl_.sourcetype_; } inline ::pg_query::TypeName* CreateCastStmt::mutable_sourcetype() { ::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* sourcetype) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.sourcetype_; } if (sourcetype) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(sourcetype); if (message_arena != submessage_arena) { sourcetype = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, sourcetype, submessage_arena); } } else { } _impl_.sourcetype_ = sourcetype; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateCastStmt.sourcetype) } // .pg_query.TypeName targettype = 2 [json_name = "targettype"]; inline bool CreateCastStmt::_internal_has_targettype() const { return this != internal_default_instance() && _impl_.targettype_ != nullptr; } inline bool CreateCastStmt::has_targettype() const { return _internal_has_targettype(); } inline void CreateCastStmt::clear_targettype() { if (GetArenaForAllocation() == nullptr && _impl_.targettype_ != nullptr) { delete _impl_.targettype_; } _impl_.targettype_ = nullptr; } inline const ::pg_query::TypeName& CreateCastStmt::_internal_targettype() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.targettype) return _internal_targettype(); } inline void CreateCastStmt::unsafe_arena_set_allocated_targettype( ::pg_query::TypeName* targettype) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.targettype_); } _impl_.targettype_ = targettype; if (targettype) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateCastStmt.targettype) } inline ::pg_query::TypeName* CreateCastStmt::release_targettype() { ::pg_query::TypeName* temp = _impl_.targettype_; _impl_.targettype_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::TypeName* CreateCastStmt::unsafe_arena_release_targettype() { // @@protoc_insertion_point(field_release:pg_query.CreateCastStmt.targettype) ::pg_query::TypeName* temp = _impl_.targettype_; _impl_.targettype_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateCastStmt::_internal_mutable_targettype() { if (_impl_.targettype_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArenaForAllocation()); _impl_.targettype_ = p; } return _impl_.targettype_; } inline ::pg_query::TypeName* CreateCastStmt::mutable_targettype() { ::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* targettype) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.targettype_; } if (targettype) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(targettype); if (message_arena != submessage_arena) { targettype = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, targettype, submessage_arena); } } else { } _impl_.targettype_ = targettype; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateCastStmt.targettype) } // .pg_query.ObjectWithArgs func = 3 [json_name = "func"]; inline bool CreateCastStmt::_internal_has_func() const { return this != internal_default_instance() && _impl_.func_ != nullptr; } inline bool CreateCastStmt::has_func() const { return _internal_has_func(); } inline void CreateCastStmt::clear_func() { if (GetArenaForAllocation() == nullptr && _impl_.func_ != nullptr) { delete _impl_.func_; } _impl_.func_ = nullptr; } inline const ::pg_query::ObjectWithArgs& CreateCastStmt::_internal_func() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.func) return _internal_func(); } inline void CreateCastStmt::unsafe_arena_set_allocated_func( ::pg_query::ObjectWithArgs* func) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.func_); } _impl_.func_ = func; if (func) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateCastStmt.func) } inline ::pg_query::ObjectWithArgs* CreateCastStmt::release_func() { ::pg_query::ObjectWithArgs* temp = _impl_.func_; _impl_.func_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::ObjectWithArgs* CreateCastStmt::unsafe_arena_release_func() { // @@protoc_insertion_point(field_release:pg_query.CreateCastStmt.func) ::pg_query::ObjectWithArgs* temp = _impl_.func_; _impl_.func_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* CreateCastStmt::_internal_mutable_func() { if (_impl_.func_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArenaForAllocation()); _impl_.func_ = p; } return _impl_.func_; } inline ::pg_query::ObjectWithArgs* CreateCastStmt::mutable_func() { ::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* func) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.func_; } if (func) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(func); if (message_arena != submessage_arena) { func = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, func, submessage_arena); } } else { } _impl_.func_ = func; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateCastStmt.func) } // .pg_query.CoercionContext context = 4 [json_name = "context"]; inline void CreateCastStmt::clear_context() { _impl_.context_ = 0; } inline ::pg_query::CoercionContext CreateCastStmt::_internal_context() const { return static_cast< ::pg_query::CoercionContext >(_impl_.context_); } inline ::pg_query::CoercionContext CreateCastStmt::context() const { // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.context) return _internal_context(); } inline void CreateCastStmt::_internal_set_context(::pg_query::CoercionContext value) { _impl_.context_ = value; } inline void CreateCastStmt::set_context(::pg_query::CoercionContext value) { _internal_set_context(value); // @@protoc_insertion_point(field_set:pg_query.CreateCastStmt.context) } // bool inout = 5 [json_name = "inout"]; inline void CreateCastStmt::clear_inout() { _impl_.inout_ = false; } inline bool CreateCastStmt::_internal_inout() const { return _impl_.inout_; } inline bool CreateCastStmt::inout() const { // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.inout) return _internal_inout(); } inline void CreateCastStmt::_internal_set_inout(bool value) { _impl_.inout_ = value; } inline void CreateCastStmt::set_inout(bool value) { _internal_set_inout(value); // @@protoc_insertion_point(field_set:pg_query.CreateCastStmt.inout) } // ------------------------------------------------------------------- // CreateOpClassStmt // repeated .pg_query.Node opclassname = 1 [json_name = "opclassname"]; inline int CreateOpClassStmt::_internal_opclassname_size() const { return _impl_.opclassname_.size(); } inline int CreateOpClassStmt::opclassname_size() const { return _internal_opclassname_size(); } inline void CreateOpClassStmt::clear_opclassname() { _impl_.opclassname_.Clear(); } inline ::pg_query::Node* CreateOpClassStmt::mutable_opclassname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.opclassname) return _impl_.opclassname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateOpClassStmt::mutable_opclassname() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassStmt.opclassname) return &_impl_.opclassname_; } inline const ::pg_query::Node& CreateOpClassStmt::_internal_opclassname(int index) const { return _impl_.opclassname_.Get(index); } inline const ::pg_query::Node& CreateOpClassStmt::opclassname(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.opclassname) return _internal_opclassname(index); } inline ::pg_query::Node* CreateOpClassStmt::_internal_add_opclassname() { return _impl_.opclassname_.Add(); } inline ::pg_query::Node* CreateOpClassStmt::add_opclassname() { ::pg_query::Node* _add = _internal_add_opclassname(); // @@protoc_insertion_point(field_add:pg_query.CreateOpClassStmt.opclassname) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateOpClassStmt::opclassname() const { // @@protoc_insertion_point(field_list:pg_query.CreateOpClassStmt.opclassname) return _impl_.opclassname_; } // repeated .pg_query.Node opfamilyname = 2 [json_name = "opfamilyname"]; inline int CreateOpClassStmt::_internal_opfamilyname_size() const { return _impl_.opfamilyname_.size(); } inline int CreateOpClassStmt::opfamilyname_size() const { return _internal_opfamilyname_size(); } inline void CreateOpClassStmt::clear_opfamilyname() { _impl_.opfamilyname_.Clear(); } inline ::pg_query::Node* CreateOpClassStmt::mutable_opfamilyname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.opfamilyname) return _impl_.opfamilyname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateOpClassStmt::mutable_opfamilyname() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassStmt.opfamilyname) return &_impl_.opfamilyname_; } inline const ::pg_query::Node& CreateOpClassStmt::_internal_opfamilyname(int index) const { return _impl_.opfamilyname_.Get(index); } inline const ::pg_query::Node& CreateOpClassStmt::opfamilyname(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.opfamilyname) return _internal_opfamilyname(index); } inline ::pg_query::Node* CreateOpClassStmt::_internal_add_opfamilyname() { return _impl_.opfamilyname_.Add(); } inline ::pg_query::Node* CreateOpClassStmt::add_opfamilyname() { ::pg_query::Node* _add = _internal_add_opfamilyname(); // @@protoc_insertion_point(field_add:pg_query.CreateOpClassStmt.opfamilyname) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateOpClassStmt::opfamilyname() const { // @@protoc_insertion_point(field_list:pg_query.CreateOpClassStmt.opfamilyname) return _impl_.opfamilyname_; } // string amname = 3 [json_name = "amname"]; inline void CreateOpClassStmt::clear_amname() { _impl_.amname_.ClearToEmpty(); } inline const std::string& CreateOpClassStmt::amname() const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.amname) return _internal_amname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateOpClassStmt::set_amname(ArgT0&& arg0, ArgT... args) { _impl_.amname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateOpClassStmt.amname) } inline std::string* CreateOpClassStmt::mutable_amname() { 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 { return _impl_.amname_.Get(); } inline void CreateOpClassStmt::_internal_set_amname(const std::string& value) { _impl_.amname_.Set(value, GetArenaForAllocation()); } inline std::string* CreateOpClassStmt::_internal_mutable_amname() { return _impl_.amname_.Mutable(GetArenaForAllocation()); } inline std::string* CreateOpClassStmt::release_amname() { // @@protoc_insertion_point(field_release:pg_query.CreateOpClassStmt.amname) return _impl_.amname_.Release(); } inline void CreateOpClassStmt::set_allocated_amname(std::string* amname) { if (amname != nullptr) { } else { } _impl_.amname_.SetAllocated(amname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.amname_.IsDefault()) { _impl_.amname_.Set("", GetArenaForAllocation()); } #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::_internal_has_datatype() const { return this != internal_default_instance() && _impl_.datatype_ != nullptr; } inline bool CreateOpClassStmt::has_datatype() const { return _internal_has_datatype(); } inline void CreateOpClassStmt::clear_datatype() { if (GetArenaForAllocation() == nullptr && _impl_.datatype_ != nullptr) { delete _impl_.datatype_; } _impl_.datatype_ = nullptr; } inline const ::pg_query::TypeName& CreateOpClassStmt::_internal_datatype() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.datatype) return _internal_datatype(); } inline void CreateOpClassStmt::unsafe_arena_set_allocated_datatype( ::pg_query::TypeName* datatype) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.datatype_); } _impl_.datatype_ = datatype; if (datatype) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateOpClassStmt.datatype) } inline ::pg_query::TypeName* CreateOpClassStmt::release_datatype() { ::pg_query::TypeName* temp = _impl_.datatype_; _impl_.datatype_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::TypeName* CreateOpClassStmt::unsafe_arena_release_datatype() { // @@protoc_insertion_point(field_release:pg_query.CreateOpClassStmt.datatype) ::pg_query::TypeName* temp = _impl_.datatype_; _impl_.datatype_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateOpClassStmt::_internal_mutable_datatype() { if (_impl_.datatype_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArenaForAllocation()); _impl_.datatype_ = p; } return _impl_.datatype_; } inline ::pg_query::TypeName* CreateOpClassStmt::mutable_datatype() { ::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* datatype) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.datatype_; } if (datatype) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(datatype); if (message_arena != submessage_arena) { datatype = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, datatype, submessage_arena); } } else { } _impl_.datatype_ = datatype; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateOpClassStmt.datatype) } // repeated .pg_query.Node items = 5 [json_name = "items"]; inline int CreateOpClassStmt::_internal_items_size() const { return _impl_.items_.size(); } inline int CreateOpClassStmt::items_size() const { return _internal_items_size(); } inline void CreateOpClassStmt::clear_items() { _impl_.items_.Clear(); } inline ::pg_query::Node* CreateOpClassStmt::mutable_items(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.items) return _impl_.items_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateOpClassStmt::mutable_items() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassStmt.items) return &_impl_.items_; } inline const ::pg_query::Node& CreateOpClassStmt::_internal_items(int index) const { return _impl_.items_.Get(index); } inline const ::pg_query::Node& CreateOpClassStmt::items(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.items) return _internal_items(index); } inline ::pg_query::Node* CreateOpClassStmt::_internal_add_items() { return _impl_.items_.Add(); } inline ::pg_query::Node* CreateOpClassStmt::add_items() { ::pg_query::Node* _add = _internal_add_items(); // @@protoc_insertion_point(field_add:pg_query.CreateOpClassStmt.items) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateOpClassStmt::items() const { // @@protoc_insertion_point(field_list:pg_query.CreateOpClassStmt.items) return _impl_.items_; } // bool is_default = 6 [json_name = "isDefault"]; inline void CreateOpClassStmt::clear_is_default() { _impl_.is_default_ = false; } inline bool CreateOpClassStmt::_internal_is_default() const { return _impl_.is_default_; } inline bool CreateOpClassStmt::is_default() const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.is_default) return _internal_is_default(); } inline void CreateOpClassStmt::_internal_set_is_default(bool value) { _impl_.is_default_ = value; } inline void CreateOpClassStmt::set_is_default(bool value) { _internal_set_is_default(value); // @@protoc_insertion_point(field_set:pg_query.CreateOpClassStmt.is_default) } // ------------------------------------------------------------------- // CreateOpFamilyStmt // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; inline int CreateOpFamilyStmt::_internal_opfamilyname_size() const { return _impl_.opfamilyname_.size(); } inline int CreateOpFamilyStmt::opfamilyname_size() const { return _internal_opfamilyname_size(); } inline void CreateOpFamilyStmt::clear_opfamilyname() { _impl_.opfamilyname_.Clear(); } inline ::pg_query::Node* CreateOpFamilyStmt::mutable_opfamilyname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpFamilyStmt.opfamilyname) return _impl_.opfamilyname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateOpFamilyStmt::mutable_opfamilyname() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpFamilyStmt.opfamilyname) return &_impl_.opfamilyname_; } inline const ::pg_query::Node& CreateOpFamilyStmt::_internal_opfamilyname(int index) const { return _impl_.opfamilyname_.Get(index); } inline const ::pg_query::Node& CreateOpFamilyStmt::opfamilyname(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateOpFamilyStmt.opfamilyname) return _internal_opfamilyname(index); } inline ::pg_query::Node* CreateOpFamilyStmt::_internal_add_opfamilyname() { return _impl_.opfamilyname_.Add(); } inline ::pg_query::Node* CreateOpFamilyStmt::add_opfamilyname() { ::pg_query::Node* _add = _internal_add_opfamilyname(); // @@protoc_insertion_point(field_add:pg_query.CreateOpFamilyStmt.opfamilyname) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateOpFamilyStmt::opfamilyname() const { // @@protoc_insertion_point(field_list:pg_query.CreateOpFamilyStmt.opfamilyname) return _impl_.opfamilyname_; } // string amname = 2 [json_name = "amname"]; inline void CreateOpFamilyStmt::clear_amname() { _impl_.amname_.ClearToEmpty(); } inline const std::string& CreateOpFamilyStmt::amname() const { // @@protoc_insertion_point(field_get:pg_query.CreateOpFamilyStmt.amname) return _internal_amname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateOpFamilyStmt::set_amname(ArgT0&& arg0, ArgT... args) { _impl_.amname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateOpFamilyStmt.amname) } inline std::string* CreateOpFamilyStmt::mutable_amname() { 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 { return _impl_.amname_.Get(); } inline void CreateOpFamilyStmt::_internal_set_amname(const std::string& value) { _impl_.amname_.Set(value, GetArenaForAllocation()); } inline std::string* CreateOpFamilyStmt::_internal_mutable_amname() { return _impl_.amname_.Mutable(GetArenaForAllocation()); } inline std::string* CreateOpFamilyStmt::release_amname() { // @@protoc_insertion_point(field_release:pg_query.CreateOpFamilyStmt.amname) return _impl_.amname_.Release(); } inline void CreateOpFamilyStmt::set_allocated_amname(std::string* amname) { if (amname != nullptr) { } else { } _impl_.amname_.SetAllocated(amname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.amname_.IsDefault()) { _impl_.amname_.Set("", GetArenaForAllocation()); } #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 _impl_.opfamilyname_.size(); } inline int AlterOpFamilyStmt::opfamilyname_size() const { return _internal_opfamilyname_size(); } inline void AlterOpFamilyStmt::clear_opfamilyname() { _impl_.opfamilyname_.Clear(); } inline ::pg_query::Node* AlterOpFamilyStmt::mutable_opfamilyname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterOpFamilyStmt.opfamilyname) return _impl_.opfamilyname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterOpFamilyStmt::mutable_opfamilyname() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterOpFamilyStmt.opfamilyname) return &_impl_.opfamilyname_; } inline const ::pg_query::Node& AlterOpFamilyStmt::_internal_opfamilyname(int index) const { return _impl_.opfamilyname_.Get(index); } inline const ::pg_query::Node& AlterOpFamilyStmt::opfamilyname(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterOpFamilyStmt.opfamilyname) return _internal_opfamilyname(index); } inline ::pg_query::Node* AlterOpFamilyStmt::_internal_add_opfamilyname() { return _impl_.opfamilyname_.Add(); } inline ::pg_query::Node* AlterOpFamilyStmt::add_opfamilyname() { ::pg_query::Node* _add = _internal_add_opfamilyname(); // @@protoc_insertion_point(field_add:pg_query.AlterOpFamilyStmt.opfamilyname) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterOpFamilyStmt::opfamilyname() const { // @@protoc_insertion_point(field_list:pg_query.AlterOpFamilyStmt.opfamilyname) return _impl_.opfamilyname_; } // string amname = 2 [json_name = "amname"]; inline void AlterOpFamilyStmt::clear_amname() { _impl_.amname_.ClearToEmpty(); } inline const std::string& AlterOpFamilyStmt::amname() const { // @@protoc_insertion_point(field_get:pg_query.AlterOpFamilyStmt.amname) return _internal_amname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterOpFamilyStmt::set_amname(ArgT0&& arg0, ArgT... args) { _impl_.amname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterOpFamilyStmt.amname) } inline std::string* AlterOpFamilyStmt::mutable_amname() { 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 { return _impl_.amname_.Get(); } inline void AlterOpFamilyStmt::_internal_set_amname(const std::string& value) { _impl_.amname_.Set(value, GetArenaForAllocation()); } inline std::string* AlterOpFamilyStmt::_internal_mutable_amname() { return _impl_.amname_.Mutable(GetArenaForAllocation()); } inline std::string* AlterOpFamilyStmt::release_amname() { // @@protoc_insertion_point(field_release:pg_query.AlterOpFamilyStmt.amname) return _impl_.amname_.Release(); } inline void AlterOpFamilyStmt::set_allocated_amname(std::string* amname) { if (amname != nullptr) { } else { } _impl_.amname_.SetAllocated(amname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.amname_.IsDefault()) { _impl_.amname_.Set("", GetArenaForAllocation()); } #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() { _impl_.is_drop_ = false; } inline bool AlterOpFamilyStmt::_internal_is_drop() const { return _impl_.is_drop_; } inline bool AlterOpFamilyStmt::is_drop() const { // @@protoc_insertion_point(field_get:pg_query.AlterOpFamilyStmt.is_drop) return _internal_is_drop(); } inline void AlterOpFamilyStmt::_internal_set_is_drop(bool value) { _impl_.is_drop_ = value; } inline void AlterOpFamilyStmt::set_is_drop(bool value) { _internal_set_is_drop(value); // @@protoc_insertion_point(field_set:pg_query.AlterOpFamilyStmt.is_drop) } // repeated .pg_query.Node items = 4 [json_name = "items"]; inline int AlterOpFamilyStmt::_internal_items_size() const { return _impl_.items_.size(); } inline int AlterOpFamilyStmt::items_size() const { return _internal_items_size(); } inline void AlterOpFamilyStmt::clear_items() { _impl_.items_.Clear(); } inline ::pg_query::Node* AlterOpFamilyStmt::mutable_items(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterOpFamilyStmt.items) return _impl_.items_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterOpFamilyStmt::mutable_items() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterOpFamilyStmt.items) return &_impl_.items_; } inline const ::pg_query::Node& AlterOpFamilyStmt::_internal_items(int index) const { return _impl_.items_.Get(index); } inline const ::pg_query::Node& AlterOpFamilyStmt::items(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterOpFamilyStmt.items) return _internal_items(index); } inline ::pg_query::Node* AlterOpFamilyStmt::_internal_add_items() { return _impl_.items_.Add(); } inline ::pg_query::Node* AlterOpFamilyStmt::add_items() { ::pg_query::Node* _add = _internal_add_items(); // @@protoc_insertion_point(field_add:pg_query.AlterOpFamilyStmt.items) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterOpFamilyStmt::items() const { // @@protoc_insertion_point(field_list:pg_query.AlterOpFamilyStmt.items) return _impl_.items_; } // ------------------------------------------------------------------- // PrepareStmt // string name = 1 [json_name = "name"]; inline void PrepareStmt::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& PrepareStmt::name() const { // @@protoc_insertion_point(field_get:pg_query.PrepareStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void PrepareStmt::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.PrepareStmt.name) } inline std::string* PrepareStmt::mutable_name() { 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 { return _impl_.name_.Get(); } inline void PrepareStmt::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* PrepareStmt::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* PrepareStmt::release_name() { // @@protoc_insertion_point(field_release:pg_query.PrepareStmt.name) return _impl_.name_.Release(); } inline void PrepareStmt::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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 _impl_.argtypes_.size(); } inline int PrepareStmt::argtypes_size() const { return _internal_argtypes_size(); } inline void PrepareStmt::clear_argtypes() { _impl_.argtypes_.Clear(); } inline ::pg_query::Node* PrepareStmt::mutable_argtypes(int index) { // @@protoc_insertion_point(field_mutable:pg_query.PrepareStmt.argtypes) return _impl_.argtypes_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* PrepareStmt::mutable_argtypes() { // @@protoc_insertion_point(field_mutable_list:pg_query.PrepareStmt.argtypes) return &_impl_.argtypes_; } inline const ::pg_query::Node& PrepareStmt::_internal_argtypes(int index) const { return _impl_.argtypes_.Get(index); } inline const ::pg_query::Node& PrepareStmt::argtypes(int index) const { // @@protoc_insertion_point(field_get:pg_query.PrepareStmt.argtypes) return _internal_argtypes(index); } inline ::pg_query::Node* PrepareStmt::_internal_add_argtypes() { return _impl_.argtypes_.Add(); } inline ::pg_query::Node* PrepareStmt::add_argtypes() { ::pg_query::Node* _add = _internal_add_argtypes(); // @@protoc_insertion_point(field_add:pg_query.PrepareStmt.argtypes) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& PrepareStmt::argtypes() const { // @@protoc_insertion_point(field_list:pg_query.PrepareStmt.argtypes) return _impl_.argtypes_; } // .pg_query.Node query = 3 [json_name = "query"]; inline bool PrepareStmt::_internal_has_query() const { return this != internal_default_instance() && _impl_.query_ != nullptr; } inline bool PrepareStmt::has_query() const { return _internal_has_query(); } inline void PrepareStmt::clear_query() { if (GetArenaForAllocation() == nullptr && _impl_.query_ != nullptr) { delete _impl_.query_; } _impl_.query_ = nullptr; } inline const ::pg_query::Node& PrepareStmt::_internal_query() const { 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 { // @@protoc_insertion_point(field_get:pg_query.PrepareStmt.query) return _internal_query(); } inline void PrepareStmt::unsafe_arena_set_allocated_query( ::pg_query::Node* query) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.query_); } _impl_.query_ = query; if (query) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PrepareStmt.query) } inline ::pg_query::Node* PrepareStmt::release_query() { ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* PrepareStmt::unsafe_arena_release_query() { // @@protoc_insertion_point(field_release:pg_query.PrepareStmt.query) ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; return temp; } inline ::pg_query::Node* PrepareStmt::_internal_mutable_query() { if (_impl_.query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.query_ = p; } return _impl_.query_; } inline ::pg_query::Node* PrepareStmt::mutable_query() { ::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* query) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.query_; } if (query) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(query); if (message_arena != submessage_arena) { query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, query, submessage_arena); } } else { } _impl_.query_ = query; // @@protoc_insertion_point(field_set_allocated:pg_query.PrepareStmt.query) } // ------------------------------------------------------------------- // ExecuteStmt // string name = 1 [json_name = "name"]; inline void ExecuteStmt::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& ExecuteStmt::name() const { // @@protoc_insertion_point(field_get:pg_query.ExecuteStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void ExecuteStmt::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.ExecuteStmt.name) } inline std::string* ExecuteStmt::mutable_name() { 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 { return _impl_.name_.Get(); } inline void ExecuteStmt::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* ExecuteStmt::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* ExecuteStmt::release_name() { // @@protoc_insertion_point(field_release:pg_query.ExecuteStmt.name) return _impl_.name_.Release(); } inline void ExecuteStmt::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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 _impl_.params_.size(); } inline int ExecuteStmt::params_size() const { return _internal_params_size(); } inline void ExecuteStmt::clear_params() { _impl_.params_.Clear(); } inline ::pg_query::Node* ExecuteStmt::mutable_params(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ExecuteStmt.params) return _impl_.params_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ExecuteStmt::mutable_params() { // @@protoc_insertion_point(field_mutable_list:pg_query.ExecuteStmt.params) return &_impl_.params_; } inline const ::pg_query::Node& ExecuteStmt::_internal_params(int index) const { return _impl_.params_.Get(index); } inline const ::pg_query::Node& ExecuteStmt::params(int index) const { // @@protoc_insertion_point(field_get:pg_query.ExecuteStmt.params) return _internal_params(index); } inline ::pg_query::Node* ExecuteStmt::_internal_add_params() { return _impl_.params_.Add(); } inline ::pg_query::Node* ExecuteStmt::add_params() { ::pg_query::Node* _add = _internal_add_params(); // @@protoc_insertion_point(field_add:pg_query.ExecuteStmt.params) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ExecuteStmt::params() const { // @@protoc_insertion_point(field_list:pg_query.ExecuteStmt.params) return _impl_.params_; } // ------------------------------------------------------------------- // DeallocateStmt // string name = 1 [json_name = "name"]; inline void DeallocateStmt::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& DeallocateStmt::name() const { // @@protoc_insertion_point(field_get:pg_query.DeallocateStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void DeallocateStmt::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.DeallocateStmt.name) } inline std::string* DeallocateStmt::mutable_name() { 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 { return _impl_.name_.Get(); } inline void DeallocateStmt::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* DeallocateStmt::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* DeallocateStmt::release_name() { // @@protoc_insertion_point(field_release:pg_query.DeallocateStmt.name) return _impl_.name_.Release(); } inline void DeallocateStmt::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.DeallocateStmt.name) } // ------------------------------------------------------------------- // DeclareCursorStmt // string portalname = 1 [json_name = "portalname"]; inline void DeclareCursorStmt::clear_portalname() { _impl_.portalname_.ClearToEmpty(); } inline const std::string& DeclareCursorStmt::portalname() const { // @@protoc_insertion_point(field_get:pg_query.DeclareCursorStmt.portalname) return _internal_portalname(); } template inline PROTOBUF_ALWAYS_INLINE void DeclareCursorStmt::set_portalname(ArgT0&& arg0, ArgT... args) { _impl_.portalname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.DeclareCursorStmt.portalname) } inline std::string* DeclareCursorStmt::mutable_portalname() { 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 { return _impl_.portalname_.Get(); } inline void DeclareCursorStmt::_internal_set_portalname(const std::string& value) { _impl_.portalname_.Set(value, GetArenaForAllocation()); } inline std::string* DeclareCursorStmt::_internal_mutable_portalname() { return _impl_.portalname_.Mutable(GetArenaForAllocation()); } inline std::string* DeclareCursorStmt::release_portalname() { // @@protoc_insertion_point(field_release:pg_query.DeclareCursorStmt.portalname) return _impl_.portalname_.Release(); } inline void DeclareCursorStmt::set_allocated_portalname(std::string* portalname) { if (portalname != nullptr) { } else { } _impl_.portalname_.SetAllocated(portalname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.portalname_.IsDefault()) { _impl_.portalname_.Set("", GetArenaForAllocation()); } #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() { _impl_.options_ = 0; } inline int32_t DeclareCursorStmt::_internal_options() const { return _impl_.options_; } inline int32_t DeclareCursorStmt::options() const { // @@protoc_insertion_point(field_get:pg_query.DeclareCursorStmt.options) return _internal_options(); } inline void DeclareCursorStmt::_internal_set_options(int32_t value) { _impl_.options_ = value; } inline void DeclareCursorStmt::set_options(int32_t value) { _internal_set_options(value); // @@protoc_insertion_point(field_set:pg_query.DeclareCursorStmt.options) } // .pg_query.Node query = 3 [json_name = "query"]; inline bool DeclareCursorStmt::_internal_has_query() const { return this != internal_default_instance() && _impl_.query_ != nullptr; } inline bool DeclareCursorStmt::has_query() const { return _internal_has_query(); } inline void DeclareCursorStmt::clear_query() { if (GetArenaForAllocation() == nullptr && _impl_.query_ != nullptr) { delete _impl_.query_; } _impl_.query_ = nullptr; } inline const ::pg_query::Node& DeclareCursorStmt::_internal_query() const { 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 { // @@protoc_insertion_point(field_get:pg_query.DeclareCursorStmt.query) return _internal_query(); } inline void DeclareCursorStmt::unsafe_arena_set_allocated_query( ::pg_query::Node* query) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.query_); } _impl_.query_ = query; if (query) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DeclareCursorStmt.query) } inline ::pg_query::Node* DeclareCursorStmt::release_query() { ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* DeclareCursorStmt::unsafe_arena_release_query() { // @@protoc_insertion_point(field_release:pg_query.DeclareCursorStmt.query) ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; return temp; } inline ::pg_query::Node* DeclareCursorStmt::_internal_mutable_query() { if (_impl_.query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.query_ = p; } return _impl_.query_; } inline ::pg_query::Node* DeclareCursorStmt::mutable_query() { ::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* query) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.query_; } if (query) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(query); if (message_arena != submessage_arena) { query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, query, submessage_arena); } } else { } _impl_.query_ = query; // @@protoc_insertion_point(field_set_allocated:pg_query.DeclareCursorStmt.query) } // ------------------------------------------------------------------- // CreateTableSpaceStmt // string tablespacename = 1 [json_name = "tablespacename"]; inline void CreateTableSpaceStmt::clear_tablespacename() { _impl_.tablespacename_.ClearToEmpty(); } inline const std::string& CreateTableSpaceStmt::tablespacename() const { // @@protoc_insertion_point(field_get:pg_query.CreateTableSpaceStmt.tablespacename) return _internal_tablespacename(); } template inline PROTOBUF_ALWAYS_INLINE void CreateTableSpaceStmt::set_tablespacename(ArgT0&& arg0, ArgT... args) { _impl_.tablespacename_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateTableSpaceStmt.tablespacename) } inline std::string* CreateTableSpaceStmt::mutable_tablespacename() { 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 { return _impl_.tablespacename_.Get(); } inline void CreateTableSpaceStmt::_internal_set_tablespacename(const std::string& value) { _impl_.tablespacename_.Set(value, GetArenaForAllocation()); } inline std::string* CreateTableSpaceStmt::_internal_mutable_tablespacename() { return _impl_.tablespacename_.Mutable(GetArenaForAllocation()); } inline std::string* CreateTableSpaceStmt::release_tablespacename() { // @@protoc_insertion_point(field_release:pg_query.CreateTableSpaceStmt.tablespacename) return _impl_.tablespacename_.Release(); } inline void CreateTableSpaceStmt::set_allocated_tablespacename(std::string* tablespacename) { if (tablespacename != nullptr) { } else { } _impl_.tablespacename_.SetAllocated(tablespacename, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.tablespacename_.IsDefault()) { _impl_.tablespacename_.Set("", GetArenaForAllocation()); } #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::_internal_has_owner() const { return this != internal_default_instance() && _impl_.owner_ != nullptr; } inline bool CreateTableSpaceStmt::has_owner() const { return _internal_has_owner(); } inline void CreateTableSpaceStmt::clear_owner() { if (GetArenaForAllocation() == nullptr && _impl_.owner_ != nullptr) { delete _impl_.owner_; } _impl_.owner_ = nullptr; } inline const ::pg_query::RoleSpec& CreateTableSpaceStmt::_internal_owner() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateTableSpaceStmt.owner) return _internal_owner(); } inline void CreateTableSpaceStmt::unsafe_arena_set_allocated_owner( ::pg_query::RoleSpec* owner) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.owner_); } _impl_.owner_ = owner; if (owner) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTableSpaceStmt.owner) } inline ::pg_query::RoleSpec* CreateTableSpaceStmt::release_owner() { ::pg_query::RoleSpec* temp = _impl_.owner_; _impl_.owner_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RoleSpec* CreateTableSpaceStmt::unsafe_arena_release_owner() { // @@protoc_insertion_point(field_release:pg_query.CreateTableSpaceStmt.owner) ::pg_query::RoleSpec* temp = _impl_.owner_; _impl_.owner_ = nullptr; return temp; } inline ::pg_query::RoleSpec* CreateTableSpaceStmt::_internal_mutable_owner() { if (_impl_.owner_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArenaForAllocation()); _impl_.owner_ = p; } return _impl_.owner_; } inline ::pg_query::RoleSpec* CreateTableSpaceStmt::mutable_owner() { ::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* owner) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.owner_; } if (owner) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(owner); if (message_arena != submessage_arena) { owner = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, owner, submessage_arena); } } else { } _impl_.owner_ = owner; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTableSpaceStmt.owner) } // string location = 3 [json_name = "location"]; inline void CreateTableSpaceStmt::clear_location() { _impl_.location_.ClearToEmpty(); } inline const std::string& CreateTableSpaceStmt::location() const { // @@protoc_insertion_point(field_get:pg_query.CreateTableSpaceStmt.location) return _internal_location(); } template inline PROTOBUF_ALWAYS_INLINE void CreateTableSpaceStmt::set_location(ArgT0&& arg0, ArgT... args) { _impl_.location_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateTableSpaceStmt.location) } inline std::string* CreateTableSpaceStmt::mutable_location() { 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 { return _impl_.location_.Get(); } inline void CreateTableSpaceStmt::_internal_set_location(const std::string& value) { _impl_.location_.Set(value, GetArenaForAllocation()); } inline std::string* CreateTableSpaceStmt::_internal_mutable_location() { return _impl_.location_.Mutable(GetArenaForAllocation()); } inline std::string* CreateTableSpaceStmt::release_location() { // @@protoc_insertion_point(field_release:pg_query.CreateTableSpaceStmt.location) return _impl_.location_.Release(); } inline void CreateTableSpaceStmt::set_allocated_location(std::string* location) { if (location != nullptr) { } else { } _impl_.location_.SetAllocated(location, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.location_.IsDefault()) { _impl_.location_.Set("", GetArenaForAllocation()); } #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 _impl_.options_.size(); } inline int CreateTableSpaceStmt::options_size() const { return _internal_options_size(); } inline void CreateTableSpaceStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* CreateTableSpaceStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateTableSpaceStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateTableSpaceStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTableSpaceStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& CreateTableSpaceStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& CreateTableSpaceStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateTableSpaceStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateTableSpaceStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* CreateTableSpaceStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.CreateTableSpaceStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateTableSpaceStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateTableSpaceStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // DropTableSpaceStmt // string tablespacename = 1 [json_name = "tablespacename"]; inline void DropTableSpaceStmt::clear_tablespacename() { _impl_.tablespacename_.ClearToEmpty(); } inline const std::string& DropTableSpaceStmt::tablespacename() const { // @@protoc_insertion_point(field_get:pg_query.DropTableSpaceStmt.tablespacename) return _internal_tablespacename(); } template inline PROTOBUF_ALWAYS_INLINE void DropTableSpaceStmt::set_tablespacename(ArgT0&& arg0, ArgT... args) { _impl_.tablespacename_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.DropTableSpaceStmt.tablespacename) } inline std::string* DropTableSpaceStmt::mutable_tablespacename() { 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 { return _impl_.tablespacename_.Get(); } inline void DropTableSpaceStmt::_internal_set_tablespacename(const std::string& value) { _impl_.tablespacename_.Set(value, GetArenaForAllocation()); } inline std::string* DropTableSpaceStmt::_internal_mutable_tablespacename() { return _impl_.tablespacename_.Mutable(GetArenaForAllocation()); } inline std::string* DropTableSpaceStmt::release_tablespacename() { // @@protoc_insertion_point(field_release:pg_query.DropTableSpaceStmt.tablespacename) return _impl_.tablespacename_.Release(); } inline void DropTableSpaceStmt::set_allocated_tablespacename(std::string* tablespacename) { if (tablespacename != nullptr) { } else { } _impl_.tablespacename_.SetAllocated(tablespacename, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.tablespacename_.IsDefault()) { _impl_.tablespacename_.Set("", GetArenaForAllocation()); } #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() { _impl_.missing_ok_ = false; } inline bool DropTableSpaceStmt::_internal_missing_ok() const { return _impl_.missing_ok_; } inline bool DropTableSpaceStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropTableSpaceStmt.missing_ok) return _internal_missing_ok(); } inline void DropTableSpaceStmt::_internal_set_missing_ok(bool value) { _impl_.missing_ok_ = value; } inline void DropTableSpaceStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropTableSpaceStmt.missing_ok) } // ------------------------------------------------------------------- // AlterObjectDependsStmt // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; inline void AlterObjectDependsStmt::clear_object_type() { _impl_.object_type_ = 0; } inline ::pg_query::ObjectType AlterObjectDependsStmt::_internal_object_type() const { return static_cast< ::pg_query::ObjectType >(_impl_.object_type_); } inline ::pg_query::ObjectType AlterObjectDependsStmt::object_type() const { // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.object_type) return _internal_object_type(); } inline void AlterObjectDependsStmt::_internal_set_object_type(::pg_query::ObjectType value) { _impl_.object_type_ = value; } inline void AlterObjectDependsStmt::set_object_type(::pg_query::ObjectType value) { _internal_set_object_type(value); // @@protoc_insertion_point(field_set:pg_query.AlterObjectDependsStmt.object_type) } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; inline bool AlterObjectDependsStmt::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool AlterObjectDependsStmt::has_relation() const { return _internal_has_relation(); } inline void AlterObjectDependsStmt::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& AlterObjectDependsStmt::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.relation) return _internal_relation(); } inline void AlterObjectDependsStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectDependsStmt.relation) } inline ::pg_query::RangeVar* AlterObjectDependsStmt::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* AlterObjectDependsStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.AlterObjectDependsStmt.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterObjectDependsStmt::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* AlterObjectDependsStmt::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectDependsStmt.relation) } // .pg_query.Node object = 3 [json_name = "object"]; inline bool AlterObjectDependsStmt::_internal_has_object() const { return this != internal_default_instance() && _impl_.object_ != nullptr; } inline bool AlterObjectDependsStmt::has_object() const { return _internal_has_object(); } inline void AlterObjectDependsStmt::clear_object() { if (GetArenaForAllocation() == nullptr && _impl_.object_ != nullptr) { delete _impl_.object_; } _impl_.object_ = nullptr; } inline const ::pg_query::Node& AlterObjectDependsStmt::_internal_object() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.object) return _internal_object(); } inline void AlterObjectDependsStmt::unsafe_arena_set_allocated_object( ::pg_query::Node* object) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.object_); } _impl_.object_ = object; if (object) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectDependsStmt.object) } inline ::pg_query::Node* AlterObjectDependsStmt::release_object() { ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* AlterObjectDependsStmt::unsafe_arena_release_object() { // @@protoc_insertion_point(field_release:pg_query.AlterObjectDependsStmt.object) ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; return temp; } inline ::pg_query::Node* AlterObjectDependsStmt::_internal_mutable_object() { if (_impl_.object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.object_ = p; } return _impl_.object_; } inline ::pg_query::Node* AlterObjectDependsStmt::mutable_object() { ::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* object) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.object_; } if (object) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(object); if (message_arena != submessage_arena) { object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, object, submessage_arena); } } else { } _impl_.object_ = object; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectDependsStmt.object) } // .pg_query.String extname = 4 [json_name = "extname"]; inline bool AlterObjectDependsStmt::_internal_has_extname() const { return this != internal_default_instance() && _impl_.extname_ != nullptr; } inline bool AlterObjectDependsStmt::has_extname() const { return _internal_has_extname(); } inline void AlterObjectDependsStmt::clear_extname() { if (GetArenaForAllocation() == nullptr && _impl_.extname_ != nullptr) { delete _impl_.extname_; } _impl_.extname_ = nullptr; } inline const ::pg_query::String& AlterObjectDependsStmt::_internal_extname() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.extname) return _internal_extname(); } inline void AlterObjectDependsStmt::unsafe_arena_set_allocated_extname( ::pg_query::String* extname) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.extname_); } _impl_.extname_ = extname; if (extname) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectDependsStmt.extname) } inline ::pg_query::String* AlterObjectDependsStmt::release_extname() { ::pg_query::String* temp = _impl_.extname_; _impl_.extname_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::String* AlterObjectDependsStmt::unsafe_arena_release_extname() { // @@protoc_insertion_point(field_release:pg_query.AlterObjectDependsStmt.extname) ::pg_query::String* temp = _impl_.extname_; _impl_.extname_ = nullptr; return temp; } inline ::pg_query::String* AlterObjectDependsStmt::_internal_mutable_extname() { if (_impl_.extname_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::String>(GetArenaForAllocation()); _impl_.extname_ = p; } return _impl_.extname_; } inline ::pg_query::String* AlterObjectDependsStmt::mutable_extname() { ::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* extname) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.extname_; } if (extname) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(extname); if (message_arena != submessage_arena) { extname = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, extname, submessage_arena); } } else { } _impl_.extname_ = extname; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectDependsStmt.extname) } // bool remove = 5 [json_name = "remove"]; inline void AlterObjectDependsStmt::clear_remove() { _impl_.remove_ = false; } inline bool AlterObjectDependsStmt::_internal_remove() const { return _impl_.remove_; } inline bool AlterObjectDependsStmt::remove() const { // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.remove) return _internal_remove(); } inline void AlterObjectDependsStmt::_internal_set_remove(bool value) { _impl_.remove_ = value; } inline void AlterObjectDependsStmt::set_remove(bool value) { _internal_set_remove(value); // @@protoc_insertion_point(field_set:pg_query.AlterObjectDependsStmt.remove) } // ------------------------------------------------------------------- // AlterObjectSchemaStmt // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; inline void AlterObjectSchemaStmt::clear_object_type() { _impl_.object_type_ = 0; } inline ::pg_query::ObjectType AlterObjectSchemaStmt::_internal_object_type() const { return static_cast< ::pg_query::ObjectType >(_impl_.object_type_); } inline ::pg_query::ObjectType AlterObjectSchemaStmt::object_type() const { // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.object_type) return _internal_object_type(); } inline void AlterObjectSchemaStmt::_internal_set_object_type(::pg_query::ObjectType value) { _impl_.object_type_ = value; } inline void AlterObjectSchemaStmt::set_object_type(::pg_query::ObjectType value) { _internal_set_object_type(value); // @@protoc_insertion_point(field_set:pg_query.AlterObjectSchemaStmt.object_type) } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; inline bool AlterObjectSchemaStmt::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool AlterObjectSchemaStmt::has_relation() const { return _internal_has_relation(); } inline void AlterObjectSchemaStmt::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& AlterObjectSchemaStmt::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.relation) return _internal_relation(); } inline void AlterObjectSchemaStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectSchemaStmt.relation) } inline ::pg_query::RangeVar* AlterObjectSchemaStmt::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* AlterObjectSchemaStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.AlterObjectSchemaStmt.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterObjectSchemaStmt::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* AlterObjectSchemaStmt::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectSchemaStmt.relation) } // .pg_query.Node object = 3 [json_name = "object"]; inline bool AlterObjectSchemaStmt::_internal_has_object() const { return this != internal_default_instance() && _impl_.object_ != nullptr; } inline bool AlterObjectSchemaStmt::has_object() const { return _internal_has_object(); } inline void AlterObjectSchemaStmt::clear_object() { if (GetArenaForAllocation() == nullptr && _impl_.object_ != nullptr) { delete _impl_.object_; } _impl_.object_ = nullptr; } inline const ::pg_query::Node& AlterObjectSchemaStmt::_internal_object() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.object) return _internal_object(); } inline void AlterObjectSchemaStmt::unsafe_arena_set_allocated_object( ::pg_query::Node* object) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.object_); } _impl_.object_ = object; if (object) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectSchemaStmt.object) } inline ::pg_query::Node* AlterObjectSchemaStmt::release_object() { ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* AlterObjectSchemaStmt::unsafe_arena_release_object() { // @@protoc_insertion_point(field_release:pg_query.AlterObjectSchemaStmt.object) ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; return temp; } inline ::pg_query::Node* AlterObjectSchemaStmt::_internal_mutable_object() { if (_impl_.object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.object_ = p; } return _impl_.object_; } inline ::pg_query::Node* AlterObjectSchemaStmt::mutable_object() { ::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* object) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.object_; } if (object) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(object); if (message_arena != submessage_arena) { object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, object, submessage_arena); } } else { } _impl_.object_ = object; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectSchemaStmt.object) } // string newschema = 4 [json_name = "newschema"]; inline void AlterObjectSchemaStmt::clear_newschema() { _impl_.newschema_.ClearToEmpty(); } inline const std::string& AlterObjectSchemaStmt::newschema() const { // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.newschema) return _internal_newschema(); } template inline PROTOBUF_ALWAYS_INLINE void AlterObjectSchemaStmt::set_newschema(ArgT0&& arg0, ArgT... args) { _impl_.newschema_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterObjectSchemaStmt.newschema) } inline std::string* AlterObjectSchemaStmt::mutable_newschema() { 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 { return _impl_.newschema_.Get(); } inline void AlterObjectSchemaStmt::_internal_set_newschema(const std::string& value) { _impl_.newschema_.Set(value, GetArenaForAllocation()); } inline std::string* AlterObjectSchemaStmt::_internal_mutable_newschema() { return _impl_.newschema_.Mutable(GetArenaForAllocation()); } inline std::string* AlterObjectSchemaStmt::release_newschema() { // @@protoc_insertion_point(field_release:pg_query.AlterObjectSchemaStmt.newschema) return _impl_.newschema_.Release(); } inline void AlterObjectSchemaStmt::set_allocated_newschema(std::string* newschema) { if (newschema != nullptr) { } else { } _impl_.newschema_.SetAllocated(newschema, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.newschema_.IsDefault()) { _impl_.newschema_.Set("", GetArenaForAllocation()); } #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() { _impl_.missing_ok_ = false; } inline bool AlterObjectSchemaStmt::_internal_missing_ok() const { return _impl_.missing_ok_; } inline bool AlterObjectSchemaStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.missing_ok) return _internal_missing_ok(); } inline void AlterObjectSchemaStmt::_internal_set_missing_ok(bool value) { _impl_.missing_ok_ = value; } inline void AlterObjectSchemaStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterObjectSchemaStmt.missing_ok) } // ------------------------------------------------------------------- // AlterOwnerStmt // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; inline void AlterOwnerStmt::clear_object_type() { _impl_.object_type_ = 0; } inline ::pg_query::ObjectType AlterOwnerStmt::_internal_object_type() const { return static_cast< ::pg_query::ObjectType >(_impl_.object_type_); } inline ::pg_query::ObjectType AlterOwnerStmt::object_type() const { // @@protoc_insertion_point(field_get:pg_query.AlterOwnerStmt.object_type) return _internal_object_type(); } inline void AlterOwnerStmt::_internal_set_object_type(::pg_query::ObjectType value) { _impl_.object_type_ = value; } inline void AlterOwnerStmt::set_object_type(::pg_query::ObjectType value) { _internal_set_object_type(value); // @@protoc_insertion_point(field_set:pg_query.AlterOwnerStmt.object_type) } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; inline bool AlterOwnerStmt::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool AlterOwnerStmt::has_relation() const { return _internal_has_relation(); } inline void AlterOwnerStmt::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& AlterOwnerStmt::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterOwnerStmt.relation) return _internal_relation(); } inline void AlterOwnerStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterOwnerStmt.relation) } inline ::pg_query::RangeVar* AlterOwnerStmt::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* AlterOwnerStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.AlterOwnerStmt.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterOwnerStmt::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* AlterOwnerStmt::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOwnerStmt.relation) } // .pg_query.Node object = 3 [json_name = "object"]; inline bool AlterOwnerStmt::_internal_has_object() const { return this != internal_default_instance() && _impl_.object_ != nullptr; } inline bool AlterOwnerStmt::has_object() const { return _internal_has_object(); } inline void AlterOwnerStmt::clear_object() { if (GetArenaForAllocation() == nullptr && _impl_.object_ != nullptr) { delete _impl_.object_; } _impl_.object_ = nullptr; } inline const ::pg_query::Node& AlterOwnerStmt::_internal_object() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterOwnerStmt.object) return _internal_object(); } inline void AlterOwnerStmt::unsafe_arena_set_allocated_object( ::pg_query::Node* object) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.object_); } _impl_.object_ = object; if (object) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterOwnerStmt.object) } inline ::pg_query::Node* AlterOwnerStmt::release_object() { ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* AlterOwnerStmt::unsafe_arena_release_object() { // @@protoc_insertion_point(field_release:pg_query.AlterOwnerStmt.object) ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; return temp; } inline ::pg_query::Node* AlterOwnerStmt::_internal_mutable_object() { if (_impl_.object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.object_ = p; } return _impl_.object_; } inline ::pg_query::Node* AlterOwnerStmt::mutable_object() { ::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* object) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.object_; } if (object) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(object); if (message_arena != submessage_arena) { object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, object, submessage_arena); } } else { } _impl_.object_ = object; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOwnerStmt.object) } // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; inline bool AlterOwnerStmt::_internal_has_newowner() const { return this != internal_default_instance() && _impl_.newowner_ != nullptr; } inline bool AlterOwnerStmt::has_newowner() const { return _internal_has_newowner(); } inline void AlterOwnerStmt::clear_newowner() { if (GetArenaForAllocation() == nullptr && _impl_.newowner_ != nullptr) { delete _impl_.newowner_; } _impl_.newowner_ = nullptr; } inline const ::pg_query::RoleSpec& AlterOwnerStmt::_internal_newowner() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterOwnerStmt.newowner) return _internal_newowner(); } inline void AlterOwnerStmt::unsafe_arena_set_allocated_newowner( ::pg_query::RoleSpec* newowner) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.newowner_); } _impl_.newowner_ = newowner; if (newowner) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterOwnerStmt.newowner) } inline ::pg_query::RoleSpec* AlterOwnerStmt::release_newowner() { ::pg_query::RoleSpec* temp = _impl_.newowner_; _impl_.newowner_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RoleSpec* AlterOwnerStmt::unsafe_arena_release_newowner() { // @@protoc_insertion_point(field_release:pg_query.AlterOwnerStmt.newowner) ::pg_query::RoleSpec* temp = _impl_.newowner_; _impl_.newowner_ = nullptr; return temp; } inline ::pg_query::RoleSpec* AlterOwnerStmt::_internal_mutable_newowner() { if (_impl_.newowner_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArenaForAllocation()); _impl_.newowner_ = p; } return _impl_.newowner_; } inline ::pg_query::RoleSpec* AlterOwnerStmt::mutable_newowner() { ::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* newowner) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.newowner_; } if (newowner) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(newowner); if (message_arena != submessage_arena) { newowner = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, newowner, submessage_arena); } } else { } _impl_.newowner_ = newowner; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOwnerStmt.newowner) } // ------------------------------------------------------------------- // AlterOperatorStmt // .pg_query.ObjectWithArgs opername = 1 [json_name = "opername"]; inline bool AlterOperatorStmt::_internal_has_opername() const { return this != internal_default_instance() && _impl_.opername_ != nullptr; } inline bool AlterOperatorStmt::has_opername() const { return _internal_has_opername(); } inline void AlterOperatorStmt::clear_opername() { if (GetArenaForAllocation() == nullptr && _impl_.opername_ != nullptr) { delete _impl_.opername_; } _impl_.opername_ = nullptr; } inline const ::pg_query::ObjectWithArgs& AlterOperatorStmt::_internal_opername() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterOperatorStmt.opername) return _internal_opername(); } inline void AlterOperatorStmt::unsafe_arena_set_allocated_opername( ::pg_query::ObjectWithArgs* opername) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.opername_); } _impl_.opername_ = opername; if (opername) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterOperatorStmt.opername) } inline ::pg_query::ObjectWithArgs* AlterOperatorStmt::release_opername() { ::pg_query::ObjectWithArgs* temp = _impl_.opername_; _impl_.opername_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::ObjectWithArgs* AlterOperatorStmt::unsafe_arena_release_opername() { // @@protoc_insertion_point(field_release:pg_query.AlterOperatorStmt.opername) ::pg_query::ObjectWithArgs* temp = _impl_.opername_; _impl_.opername_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* AlterOperatorStmt::_internal_mutable_opername() { if (_impl_.opername_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArenaForAllocation()); _impl_.opername_ = p; } return _impl_.opername_; } inline ::pg_query::ObjectWithArgs* AlterOperatorStmt::mutable_opername() { ::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* opername) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.opername_; } if (opername) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(opername); if (message_arena != submessage_arena) { opername = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, opername, submessage_arena); } } else { } _impl_.opername_ = opername; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOperatorStmt.opername) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int AlterOperatorStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int AlterOperatorStmt::options_size() const { return _internal_options_size(); } inline void AlterOperatorStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* AlterOperatorStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterOperatorStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterOperatorStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterOperatorStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& AlterOperatorStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& AlterOperatorStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterOperatorStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterOperatorStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* AlterOperatorStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.AlterOperatorStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterOperatorStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterOperatorStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // AlterTypeStmt // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; inline int AlterTypeStmt::_internal_type_name_size() const { return _impl_.type_name_.size(); } inline int AlterTypeStmt::type_name_size() const { return _internal_type_name_size(); } inline void AlterTypeStmt::clear_type_name() { _impl_.type_name_.Clear(); } inline ::pg_query::Node* AlterTypeStmt::mutable_type_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTypeStmt.type_name) return _impl_.type_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTypeStmt::mutable_type_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTypeStmt.type_name) return &_impl_.type_name_; } inline const ::pg_query::Node& AlterTypeStmt::_internal_type_name(int index) const { return _impl_.type_name_.Get(index); } inline const ::pg_query::Node& AlterTypeStmt::type_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTypeStmt.type_name) return _internal_type_name(index); } inline ::pg_query::Node* AlterTypeStmt::_internal_add_type_name() { return _impl_.type_name_.Add(); } inline ::pg_query::Node* AlterTypeStmt::add_type_name() { ::pg_query::Node* _add = _internal_add_type_name(); // @@protoc_insertion_point(field_add:pg_query.AlterTypeStmt.type_name) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTypeStmt::type_name() const { // @@protoc_insertion_point(field_list:pg_query.AlterTypeStmt.type_name) return _impl_.type_name_; } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int AlterTypeStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int AlterTypeStmt::options_size() const { return _internal_options_size(); } inline void AlterTypeStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* AlterTypeStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTypeStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTypeStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTypeStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& AlterTypeStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& AlterTypeStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTypeStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterTypeStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* AlterTypeStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.AlterTypeStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTypeStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterTypeStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // DropOwnedStmt // repeated .pg_query.Node roles = 1 [json_name = "roles"]; inline int DropOwnedStmt::_internal_roles_size() const { return _impl_.roles_.size(); } inline int DropOwnedStmt::roles_size() const { return _internal_roles_size(); } inline void DropOwnedStmt::clear_roles() { _impl_.roles_.Clear(); } inline ::pg_query::Node* DropOwnedStmt::mutable_roles(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DropOwnedStmt.roles) return _impl_.roles_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DropOwnedStmt::mutable_roles() { // @@protoc_insertion_point(field_mutable_list:pg_query.DropOwnedStmt.roles) return &_impl_.roles_; } inline const ::pg_query::Node& DropOwnedStmt::_internal_roles(int index) const { return _impl_.roles_.Get(index); } inline const ::pg_query::Node& DropOwnedStmt::roles(int index) const { // @@protoc_insertion_point(field_get:pg_query.DropOwnedStmt.roles) return _internal_roles(index); } inline ::pg_query::Node* DropOwnedStmt::_internal_add_roles() { return _impl_.roles_.Add(); } inline ::pg_query::Node* DropOwnedStmt::add_roles() { ::pg_query::Node* _add = _internal_add_roles(); // @@protoc_insertion_point(field_add:pg_query.DropOwnedStmt.roles) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DropOwnedStmt::roles() const { // @@protoc_insertion_point(field_list:pg_query.DropOwnedStmt.roles) return _impl_.roles_; } // .pg_query.DropBehavior behavior = 2 [json_name = "behavior"]; inline void DropOwnedStmt::clear_behavior() { _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior DropOwnedStmt::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(_impl_.behavior_); } inline ::pg_query::DropBehavior DropOwnedStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.DropOwnedStmt.behavior) return _internal_behavior(); } inline void DropOwnedStmt::_internal_set_behavior(::pg_query::DropBehavior value) { _impl_.behavior_ = value; } inline void DropOwnedStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.DropOwnedStmt.behavior) } // ------------------------------------------------------------------- // ReassignOwnedStmt // repeated .pg_query.Node roles = 1 [json_name = "roles"]; inline int ReassignOwnedStmt::_internal_roles_size() const { return _impl_.roles_.size(); } inline int ReassignOwnedStmt::roles_size() const { return _internal_roles_size(); } inline void ReassignOwnedStmt::clear_roles() { _impl_.roles_.Clear(); } inline ::pg_query::Node* ReassignOwnedStmt::mutable_roles(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ReassignOwnedStmt.roles) return _impl_.roles_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ReassignOwnedStmt::mutable_roles() { // @@protoc_insertion_point(field_mutable_list:pg_query.ReassignOwnedStmt.roles) return &_impl_.roles_; } inline const ::pg_query::Node& ReassignOwnedStmt::_internal_roles(int index) const { return _impl_.roles_.Get(index); } inline const ::pg_query::Node& ReassignOwnedStmt::roles(int index) const { // @@protoc_insertion_point(field_get:pg_query.ReassignOwnedStmt.roles) return _internal_roles(index); } inline ::pg_query::Node* ReassignOwnedStmt::_internal_add_roles() { return _impl_.roles_.Add(); } inline ::pg_query::Node* ReassignOwnedStmt::add_roles() { ::pg_query::Node* _add = _internal_add_roles(); // @@protoc_insertion_point(field_add:pg_query.ReassignOwnedStmt.roles) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ReassignOwnedStmt::roles() const { // @@protoc_insertion_point(field_list:pg_query.ReassignOwnedStmt.roles) return _impl_.roles_; } // .pg_query.RoleSpec newrole = 2 [json_name = "newrole"]; inline bool ReassignOwnedStmt::_internal_has_newrole() const { return this != internal_default_instance() && _impl_.newrole_ != nullptr; } inline bool ReassignOwnedStmt::has_newrole() const { return _internal_has_newrole(); } inline void ReassignOwnedStmt::clear_newrole() { if (GetArenaForAllocation() == nullptr && _impl_.newrole_ != nullptr) { delete _impl_.newrole_; } _impl_.newrole_ = nullptr; } inline const ::pg_query::RoleSpec& ReassignOwnedStmt::_internal_newrole() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ReassignOwnedStmt.newrole) return _internal_newrole(); } inline void ReassignOwnedStmt::unsafe_arena_set_allocated_newrole( ::pg_query::RoleSpec* newrole) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.newrole_); } _impl_.newrole_ = newrole; if (newrole) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ReassignOwnedStmt.newrole) } inline ::pg_query::RoleSpec* ReassignOwnedStmt::release_newrole() { ::pg_query::RoleSpec* temp = _impl_.newrole_; _impl_.newrole_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RoleSpec* ReassignOwnedStmt::unsafe_arena_release_newrole() { // @@protoc_insertion_point(field_release:pg_query.ReassignOwnedStmt.newrole) ::pg_query::RoleSpec* temp = _impl_.newrole_; _impl_.newrole_ = nullptr; return temp; } inline ::pg_query::RoleSpec* ReassignOwnedStmt::_internal_mutable_newrole() { if (_impl_.newrole_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArenaForAllocation()); _impl_.newrole_ = p; } return _impl_.newrole_; } inline ::pg_query::RoleSpec* ReassignOwnedStmt::mutable_newrole() { ::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* newrole) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.newrole_; } if (newrole) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(newrole); if (message_arena != submessage_arena) { newrole = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, newrole, submessage_arena); } } else { } _impl_.newrole_ = newrole; // @@protoc_insertion_point(field_set_allocated:pg_query.ReassignOwnedStmt.newrole) } // ------------------------------------------------------------------- // CompositeTypeStmt // .pg_query.RangeVar typevar = 1 [json_name = "typevar"]; inline bool CompositeTypeStmt::_internal_has_typevar() const { return this != internal_default_instance() && _impl_.typevar_ != nullptr; } inline bool CompositeTypeStmt::has_typevar() const { return _internal_has_typevar(); } inline void CompositeTypeStmt::clear_typevar() { if (GetArenaForAllocation() == nullptr && _impl_.typevar_ != nullptr) { delete _impl_.typevar_; } _impl_.typevar_ = nullptr; } inline const ::pg_query::RangeVar& CompositeTypeStmt::_internal_typevar() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CompositeTypeStmt.typevar) return _internal_typevar(); } inline void CompositeTypeStmt::unsafe_arena_set_allocated_typevar( ::pg_query::RangeVar* typevar) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.typevar_); } _impl_.typevar_ = typevar; if (typevar) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CompositeTypeStmt.typevar) } inline ::pg_query::RangeVar* CompositeTypeStmt::release_typevar() { ::pg_query::RangeVar* temp = _impl_.typevar_; _impl_.typevar_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* CompositeTypeStmt::unsafe_arena_release_typevar() { // @@protoc_insertion_point(field_release:pg_query.CompositeTypeStmt.typevar) ::pg_query::RangeVar* temp = _impl_.typevar_; _impl_.typevar_ = nullptr; return temp; } inline ::pg_query::RangeVar* CompositeTypeStmt::_internal_mutable_typevar() { if (_impl_.typevar_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.typevar_ = p; } return _impl_.typevar_; } inline ::pg_query::RangeVar* CompositeTypeStmt::mutable_typevar() { ::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* typevar) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.typevar_; } if (typevar) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(typevar); if (message_arena != submessage_arena) { typevar = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, typevar, submessage_arena); } } else { } _impl_.typevar_ = typevar; // @@protoc_insertion_point(field_set_allocated:pg_query.CompositeTypeStmt.typevar) } // repeated .pg_query.Node coldeflist = 2 [json_name = "coldeflist"]; inline int CompositeTypeStmt::_internal_coldeflist_size() const { return _impl_.coldeflist_.size(); } inline int CompositeTypeStmt::coldeflist_size() const { return _internal_coldeflist_size(); } inline void CompositeTypeStmt::clear_coldeflist() { _impl_.coldeflist_.Clear(); } inline ::pg_query::Node* CompositeTypeStmt::mutable_coldeflist(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CompositeTypeStmt.coldeflist) return _impl_.coldeflist_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CompositeTypeStmt::mutable_coldeflist() { // @@protoc_insertion_point(field_mutable_list:pg_query.CompositeTypeStmt.coldeflist) return &_impl_.coldeflist_; } inline const ::pg_query::Node& CompositeTypeStmt::_internal_coldeflist(int index) const { return _impl_.coldeflist_.Get(index); } inline const ::pg_query::Node& CompositeTypeStmt::coldeflist(int index) const { // @@protoc_insertion_point(field_get:pg_query.CompositeTypeStmt.coldeflist) return _internal_coldeflist(index); } inline ::pg_query::Node* CompositeTypeStmt::_internal_add_coldeflist() { return _impl_.coldeflist_.Add(); } inline ::pg_query::Node* CompositeTypeStmt::add_coldeflist() { ::pg_query::Node* _add = _internal_add_coldeflist(); // @@protoc_insertion_point(field_add:pg_query.CompositeTypeStmt.coldeflist) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CompositeTypeStmt::coldeflist() const { // @@protoc_insertion_point(field_list:pg_query.CompositeTypeStmt.coldeflist) return _impl_.coldeflist_; } // ------------------------------------------------------------------- // CreateEnumStmt // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; inline int CreateEnumStmt::_internal_type_name_size() const { return _impl_.type_name_.size(); } inline int CreateEnumStmt::type_name_size() const { return _internal_type_name_size(); } inline void CreateEnumStmt::clear_type_name() { _impl_.type_name_.Clear(); } inline ::pg_query::Node* CreateEnumStmt::mutable_type_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateEnumStmt.type_name) return _impl_.type_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateEnumStmt::mutable_type_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateEnumStmt.type_name) return &_impl_.type_name_; } inline const ::pg_query::Node& CreateEnumStmt::_internal_type_name(int index) const { return _impl_.type_name_.Get(index); } inline const ::pg_query::Node& CreateEnumStmt::type_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateEnumStmt.type_name) return _internal_type_name(index); } inline ::pg_query::Node* CreateEnumStmt::_internal_add_type_name() { return _impl_.type_name_.Add(); } inline ::pg_query::Node* CreateEnumStmt::add_type_name() { ::pg_query::Node* _add = _internal_add_type_name(); // @@protoc_insertion_point(field_add:pg_query.CreateEnumStmt.type_name) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateEnumStmt::type_name() const { // @@protoc_insertion_point(field_list:pg_query.CreateEnumStmt.type_name) return _impl_.type_name_; } // repeated .pg_query.Node vals = 2 [json_name = "vals"]; inline int CreateEnumStmt::_internal_vals_size() const { return _impl_.vals_.size(); } inline int CreateEnumStmt::vals_size() const { return _internal_vals_size(); } inline void CreateEnumStmt::clear_vals() { _impl_.vals_.Clear(); } inline ::pg_query::Node* CreateEnumStmt::mutable_vals(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateEnumStmt.vals) return _impl_.vals_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateEnumStmt::mutable_vals() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateEnumStmt.vals) return &_impl_.vals_; } inline const ::pg_query::Node& CreateEnumStmt::_internal_vals(int index) const { return _impl_.vals_.Get(index); } inline const ::pg_query::Node& CreateEnumStmt::vals(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateEnumStmt.vals) return _internal_vals(index); } inline ::pg_query::Node* CreateEnumStmt::_internal_add_vals() { return _impl_.vals_.Add(); } inline ::pg_query::Node* CreateEnumStmt::add_vals() { ::pg_query::Node* _add = _internal_add_vals(); // @@protoc_insertion_point(field_add:pg_query.CreateEnumStmt.vals) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateEnumStmt::vals() const { // @@protoc_insertion_point(field_list:pg_query.CreateEnumStmt.vals) return _impl_.vals_; } // ------------------------------------------------------------------- // CreateRangeStmt // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; inline int CreateRangeStmt::_internal_type_name_size() const { return _impl_.type_name_.size(); } inline int CreateRangeStmt::type_name_size() const { return _internal_type_name_size(); } inline void CreateRangeStmt::clear_type_name() { _impl_.type_name_.Clear(); } inline ::pg_query::Node* CreateRangeStmt::mutable_type_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateRangeStmt.type_name) return _impl_.type_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateRangeStmt::mutable_type_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateRangeStmt.type_name) return &_impl_.type_name_; } inline const ::pg_query::Node& CreateRangeStmt::_internal_type_name(int index) const { return _impl_.type_name_.Get(index); } inline const ::pg_query::Node& CreateRangeStmt::type_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateRangeStmt.type_name) return _internal_type_name(index); } inline ::pg_query::Node* CreateRangeStmt::_internal_add_type_name() { return _impl_.type_name_.Add(); } inline ::pg_query::Node* CreateRangeStmt::add_type_name() { ::pg_query::Node* _add = _internal_add_type_name(); // @@protoc_insertion_point(field_add:pg_query.CreateRangeStmt.type_name) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateRangeStmt::type_name() const { // @@protoc_insertion_point(field_list:pg_query.CreateRangeStmt.type_name) return _impl_.type_name_; } // repeated .pg_query.Node params = 2 [json_name = "params"]; inline int CreateRangeStmt::_internal_params_size() const { return _impl_.params_.size(); } inline int CreateRangeStmt::params_size() const { return _internal_params_size(); } inline void CreateRangeStmt::clear_params() { _impl_.params_.Clear(); } inline ::pg_query::Node* CreateRangeStmt::mutable_params(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateRangeStmt.params) return _impl_.params_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateRangeStmt::mutable_params() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateRangeStmt.params) return &_impl_.params_; } inline const ::pg_query::Node& CreateRangeStmt::_internal_params(int index) const { return _impl_.params_.Get(index); } inline const ::pg_query::Node& CreateRangeStmt::params(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateRangeStmt.params) return _internal_params(index); } inline ::pg_query::Node* CreateRangeStmt::_internal_add_params() { return _impl_.params_.Add(); } inline ::pg_query::Node* CreateRangeStmt::add_params() { ::pg_query::Node* _add = _internal_add_params(); // @@protoc_insertion_point(field_add:pg_query.CreateRangeStmt.params) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateRangeStmt::params() const { // @@protoc_insertion_point(field_list:pg_query.CreateRangeStmt.params) return _impl_.params_; } // ------------------------------------------------------------------- // AlterEnumStmt // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; inline int AlterEnumStmt::_internal_type_name_size() const { return _impl_.type_name_.size(); } inline int AlterEnumStmt::type_name_size() const { return _internal_type_name_size(); } inline void AlterEnumStmt::clear_type_name() { _impl_.type_name_.Clear(); } inline ::pg_query::Node* AlterEnumStmt::mutable_type_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterEnumStmt.type_name) return _impl_.type_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterEnumStmt::mutable_type_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterEnumStmt.type_name) return &_impl_.type_name_; } inline const ::pg_query::Node& AlterEnumStmt::_internal_type_name(int index) const { return _impl_.type_name_.Get(index); } inline const ::pg_query::Node& AlterEnumStmt::type_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.type_name) return _internal_type_name(index); } inline ::pg_query::Node* AlterEnumStmt::_internal_add_type_name() { return _impl_.type_name_.Add(); } inline ::pg_query::Node* AlterEnumStmt::add_type_name() { ::pg_query::Node* _add = _internal_add_type_name(); // @@protoc_insertion_point(field_add:pg_query.AlterEnumStmt.type_name) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterEnumStmt::type_name() const { // @@protoc_insertion_point(field_list:pg_query.AlterEnumStmt.type_name) return _impl_.type_name_; } // string old_val = 2 [json_name = "oldVal"]; inline void AlterEnumStmt::clear_old_val() { _impl_.old_val_.ClearToEmpty(); } inline const std::string& AlterEnumStmt::old_val() const { // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.old_val) return _internal_old_val(); } template inline PROTOBUF_ALWAYS_INLINE void AlterEnumStmt::set_old_val(ArgT0&& arg0, ArgT... args) { _impl_.old_val_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.old_val) } inline std::string* AlterEnumStmt::mutable_old_val() { 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 { return _impl_.old_val_.Get(); } inline void AlterEnumStmt::_internal_set_old_val(const std::string& value) { _impl_.old_val_.Set(value, GetArenaForAllocation()); } inline std::string* AlterEnumStmt::_internal_mutable_old_val() { return _impl_.old_val_.Mutable(GetArenaForAllocation()); } inline std::string* AlterEnumStmt::release_old_val() { // @@protoc_insertion_point(field_release:pg_query.AlterEnumStmt.old_val) return _impl_.old_val_.Release(); } inline void AlterEnumStmt::set_allocated_old_val(std::string* old_val) { if (old_val != nullptr) { } else { } _impl_.old_val_.SetAllocated(old_val, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.old_val_.IsDefault()) { _impl_.old_val_.Set("", GetArenaForAllocation()); } #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() { _impl_.new_val_.ClearToEmpty(); } inline const std::string& AlterEnumStmt::new_val() const { // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.new_val) return _internal_new_val(); } template inline PROTOBUF_ALWAYS_INLINE void AlterEnumStmt::set_new_val(ArgT0&& arg0, ArgT... args) { _impl_.new_val_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.new_val) } inline std::string* AlterEnumStmt::mutable_new_val() { 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 { return _impl_.new_val_.Get(); } inline void AlterEnumStmt::_internal_set_new_val(const std::string& value) { _impl_.new_val_.Set(value, GetArenaForAllocation()); } inline std::string* AlterEnumStmt::_internal_mutable_new_val() { return _impl_.new_val_.Mutable(GetArenaForAllocation()); } inline std::string* AlterEnumStmt::release_new_val() { // @@protoc_insertion_point(field_release:pg_query.AlterEnumStmt.new_val) return _impl_.new_val_.Release(); } inline void AlterEnumStmt::set_allocated_new_val(std::string* new_val) { if (new_val != nullptr) { } else { } _impl_.new_val_.SetAllocated(new_val, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.new_val_.IsDefault()) { _impl_.new_val_.Set("", GetArenaForAllocation()); } #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() { _impl_.new_val_neighbor_.ClearToEmpty(); } inline const std::string& AlterEnumStmt::new_val_neighbor() const { // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.new_val_neighbor) return _internal_new_val_neighbor(); } template inline PROTOBUF_ALWAYS_INLINE void AlterEnumStmt::set_new_val_neighbor(ArgT0&& arg0, ArgT... args) { _impl_.new_val_neighbor_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.new_val_neighbor) } inline std::string* AlterEnumStmt::mutable_new_val_neighbor() { 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 { return _impl_.new_val_neighbor_.Get(); } inline void AlterEnumStmt::_internal_set_new_val_neighbor(const std::string& value) { _impl_.new_val_neighbor_.Set(value, GetArenaForAllocation()); } inline std::string* AlterEnumStmt::_internal_mutable_new_val_neighbor() { return _impl_.new_val_neighbor_.Mutable(GetArenaForAllocation()); } inline std::string* AlterEnumStmt::release_new_val_neighbor() { // @@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* new_val_neighbor) { if (new_val_neighbor != nullptr) { } else { } _impl_.new_val_neighbor_.SetAllocated(new_val_neighbor, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.new_val_neighbor_.IsDefault()) { _impl_.new_val_neighbor_.Set("", GetArenaForAllocation()); } #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() { _impl_.new_val_is_after_ = false; } inline bool AlterEnumStmt::_internal_new_val_is_after() const { return _impl_.new_val_is_after_; } inline bool AlterEnumStmt::new_val_is_after() const { // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.new_val_is_after) return _internal_new_val_is_after(); } inline void AlterEnumStmt::_internal_set_new_val_is_after(bool value) { _impl_.new_val_is_after_ = value; } inline void AlterEnumStmt::set_new_val_is_after(bool value) { _internal_set_new_val_is_after(value); // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.new_val_is_after) } // bool skip_if_new_val_exists = 6 [json_name = "skipIfNewValExists"]; inline void AlterEnumStmt::clear_skip_if_new_val_exists() { _impl_.skip_if_new_val_exists_ = false; } inline bool AlterEnumStmt::_internal_skip_if_new_val_exists() const { return _impl_.skip_if_new_val_exists_; } inline bool AlterEnumStmt::skip_if_new_val_exists() const { // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.skip_if_new_val_exists) return _internal_skip_if_new_val_exists(); } inline void AlterEnumStmt::_internal_set_skip_if_new_val_exists(bool value) { _impl_.skip_if_new_val_exists_ = value; } inline void AlterEnumStmt::set_skip_if_new_val_exists(bool value) { _internal_set_skip_if_new_val_exists(value); // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.skip_if_new_val_exists) } // ------------------------------------------------------------------- // AlterTSDictionaryStmt // repeated .pg_query.Node dictname = 1 [json_name = "dictname"]; inline int AlterTSDictionaryStmt::_internal_dictname_size() const { return _impl_.dictname_.size(); } inline int AlterTSDictionaryStmt::dictname_size() const { return _internal_dictname_size(); } inline void AlterTSDictionaryStmt::clear_dictname() { _impl_.dictname_.Clear(); } inline ::pg_query::Node* AlterTSDictionaryStmt::mutable_dictname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTSDictionaryStmt.dictname) return _impl_.dictname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTSDictionaryStmt::mutable_dictname() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSDictionaryStmt.dictname) return &_impl_.dictname_; } inline const ::pg_query::Node& AlterTSDictionaryStmt::_internal_dictname(int index) const { return _impl_.dictname_.Get(index); } inline const ::pg_query::Node& AlterTSDictionaryStmt::dictname(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTSDictionaryStmt.dictname) return _internal_dictname(index); } inline ::pg_query::Node* AlterTSDictionaryStmt::_internal_add_dictname() { return _impl_.dictname_.Add(); } inline ::pg_query::Node* AlterTSDictionaryStmt::add_dictname() { ::pg_query::Node* _add = _internal_add_dictname(); // @@protoc_insertion_point(field_add:pg_query.AlterTSDictionaryStmt.dictname) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTSDictionaryStmt::dictname() const { // @@protoc_insertion_point(field_list:pg_query.AlterTSDictionaryStmt.dictname) return _impl_.dictname_; } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int AlterTSDictionaryStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int AlterTSDictionaryStmt::options_size() const { return _internal_options_size(); } inline void AlterTSDictionaryStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* AlterTSDictionaryStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTSDictionaryStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTSDictionaryStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSDictionaryStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& AlterTSDictionaryStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& AlterTSDictionaryStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTSDictionaryStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterTSDictionaryStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* AlterTSDictionaryStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.AlterTSDictionaryStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTSDictionaryStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterTSDictionaryStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // AlterTSConfigurationStmt // .pg_query.AlterTSConfigType kind = 1 [json_name = "kind"]; inline void AlterTSConfigurationStmt::clear_kind() { _impl_.kind_ = 0; } inline ::pg_query::AlterTSConfigType AlterTSConfigurationStmt::_internal_kind() const { return static_cast< ::pg_query::AlterTSConfigType >(_impl_.kind_); } inline ::pg_query::AlterTSConfigType AlterTSConfigurationStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.kind) return _internal_kind(); } inline void AlterTSConfigurationStmt::_internal_set_kind(::pg_query::AlterTSConfigType value) { _impl_.kind_ = value; } inline void AlterTSConfigurationStmt::set_kind(::pg_query::AlterTSConfigType value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.AlterTSConfigurationStmt.kind) } // repeated .pg_query.Node cfgname = 2 [json_name = "cfgname"]; inline int AlterTSConfigurationStmt::_internal_cfgname_size() const { return _impl_.cfgname_.size(); } inline int AlterTSConfigurationStmt::cfgname_size() const { return _internal_cfgname_size(); } inline void AlterTSConfigurationStmt::clear_cfgname() { _impl_.cfgname_.Clear(); } inline ::pg_query::Node* AlterTSConfigurationStmt::mutable_cfgname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTSConfigurationStmt.cfgname) return _impl_.cfgname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTSConfigurationStmt::mutable_cfgname() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSConfigurationStmt.cfgname) return &_impl_.cfgname_; } inline const ::pg_query::Node& AlterTSConfigurationStmt::_internal_cfgname(int index) const { return _impl_.cfgname_.Get(index); } inline const ::pg_query::Node& AlterTSConfigurationStmt::cfgname(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.cfgname) return _internal_cfgname(index); } inline ::pg_query::Node* AlterTSConfigurationStmt::_internal_add_cfgname() { return _impl_.cfgname_.Add(); } inline ::pg_query::Node* AlterTSConfigurationStmt::add_cfgname() { ::pg_query::Node* _add = _internal_add_cfgname(); // @@protoc_insertion_point(field_add:pg_query.AlterTSConfigurationStmt.cfgname) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTSConfigurationStmt::cfgname() const { // @@protoc_insertion_point(field_list:pg_query.AlterTSConfigurationStmt.cfgname) return _impl_.cfgname_; } // repeated .pg_query.Node tokentype = 3 [json_name = "tokentype"]; inline int AlterTSConfigurationStmt::_internal_tokentype_size() const { return _impl_.tokentype_.size(); } inline int AlterTSConfigurationStmt::tokentype_size() const { return _internal_tokentype_size(); } inline void AlterTSConfigurationStmt::clear_tokentype() { _impl_.tokentype_.Clear(); } inline ::pg_query::Node* AlterTSConfigurationStmt::mutable_tokentype(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTSConfigurationStmt.tokentype) return _impl_.tokentype_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTSConfigurationStmt::mutable_tokentype() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSConfigurationStmt.tokentype) return &_impl_.tokentype_; } inline const ::pg_query::Node& AlterTSConfigurationStmt::_internal_tokentype(int index) const { return _impl_.tokentype_.Get(index); } inline const ::pg_query::Node& AlterTSConfigurationStmt::tokentype(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.tokentype) return _internal_tokentype(index); } inline ::pg_query::Node* AlterTSConfigurationStmt::_internal_add_tokentype() { return _impl_.tokentype_.Add(); } inline ::pg_query::Node* AlterTSConfigurationStmt::add_tokentype() { ::pg_query::Node* _add = _internal_add_tokentype(); // @@protoc_insertion_point(field_add:pg_query.AlterTSConfigurationStmt.tokentype) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTSConfigurationStmt::tokentype() const { // @@protoc_insertion_point(field_list:pg_query.AlterTSConfigurationStmt.tokentype) return _impl_.tokentype_; } // repeated .pg_query.Node dicts = 4 [json_name = "dicts"]; inline int AlterTSConfigurationStmt::_internal_dicts_size() const { return _impl_.dicts_.size(); } inline int AlterTSConfigurationStmt::dicts_size() const { return _internal_dicts_size(); } inline void AlterTSConfigurationStmt::clear_dicts() { _impl_.dicts_.Clear(); } inline ::pg_query::Node* AlterTSConfigurationStmt::mutable_dicts(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTSConfigurationStmt.dicts) return _impl_.dicts_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTSConfigurationStmt::mutable_dicts() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSConfigurationStmt.dicts) return &_impl_.dicts_; } inline const ::pg_query::Node& AlterTSConfigurationStmt::_internal_dicts(int index) const { return _impl_.dicts_.Get(index); } inline const ::pg_query::Node& AlterTSConfigurationStmt::dicts(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.dicts) return _internal_dicts(index); } inline ::pg_query::Node* AlterTSConfigurationStmt::_internal_add_dicts() { return _impl_.dicts_.Add(); } inline ::pg_query::Node* AlterTSConfigurationStmt::add_dicts() { ::pg_query::Node* _add = _internal_add_dicts(); // @@protoc_insertion_point(field_add:pg_query.AlterTSConfigurationStmt.dicts) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTSConfigurationStmt::dicts() const { // @@protoc_insertion_point(field_list:pg_query.AlterTSConfigurationStmt.dicts) return _impl_.dicts_; } // bool override = 5 [json_name = "override"]; inline void AlterTSConfigurationStmt::clear_override() { _impl_.override_ = false; } inline bool AlterTSConfigurationStmt::_internal_override() const { return _impl_.override_; } inline bool AlterTSConfigurationStmt::override() const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.override) return _internal_override(); } inline void AlterTSConfigurationStmt::_internal_set_override(bool value) { _impl_.override_ = value; } inline void AlterTSConfigurationStmt::set_override(bool value) { _internal_set_override(value); // @@protoc_insertion_point(field_set:pg_query.AlterTSConfigurationStmt.override) } // bool replace = 6 [json_name = "replace"]; inline void AlterTSConfigurationStmt::clear_replace() { _impl_.replace_ = false; } inline bool AlterTSConfigurationStmt::_internal_replace() const { return _impl_.replace_; } inline bool AlterTSConfigurationStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.replace) return _internal_replace(); } inline void AlterTSConfigurationStmt::_internal_set_replace(bool value) { _impl_.replace_ = value; } inline void AlterTSConfigurationStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.AlterTSConfigurationStmt.replace) } // bool missing_ok = 7 [json_name = "missing_ok"]; inline void AlterTSConfigurationStmt::clear_missing_ok() { _impl_.missing_ok_ = false; } inline bool AlterTSConfigurationStmt::_internal_missing_ok() const { return _impl_.missing_ok_; } inline bool AlterTSConfigurationStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.missing_ok) return _internal_missing_ok(); } inline void AlterTSConfigurationStmt::_internal_set_missing_ok(bool value) { _impl_.missing_ok_ = value; } inline void AlterTSConfigurationStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterTSConfigurationStmt.missing_ok) } // ------------------------------------------------------------------- // CreateFdwStmt // string fdwname = 1 [json_name = "fdwname"]; inline void CreateFdwStmt::clear_fdwname() { _impl_.fdwname_.ClearToEmpty(); } inline const std::string& CreateFdwStmt::fdwname() const { // @@protoc_insertion_point(field_get:pg_query.CreateFdwStmt.fdwname) return _internal_fdwname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateFdwStmt::set_fdwname(ArgT0&& arg0, ArgT... args) { _impl_.fdwname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateFdwStmt.fdwname) } inline std::string* CreateFdwStmt::mutable_fdwname() { 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 { return _impl_.fdwname_.Get(); } inline void CreateFdwStmt::_internal_set_fdwname(const std::string& value) { _impl_.fdwname_.Set(value, GetArenaForAllocation()); } inline std::string* CreateFdwStmt::_internal_mutable_fdwname() { return _impl_.fdwname_.Mutable(GetArenaForAllocation()); } inline std::string* CreateFdwStmt::release_fdwname() { // @@protoc_insertion_point(field_release:pg_query.CreateFdwStmt.fdwname) return _impl_.fdwname_.Release(); } inline void CreateFdwStmt::set_allocated_fdwname(std::string* fdwname) { if (fdwname != nullptr) { } else { } _impl_.fdwname_.SetAllocated(fdwname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.fdwname_.IsDefault()) { _impl_.fdwname_.Set("", GetArenaForAllocation()); } #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 _impl_.func_options_.size(); } inline int CreateFdwStmt::func_options_size() const { return _internal_func_options_size(); } inline void CreateFdwStmt::clear_func_options() { _impl_.func_options_.Clear(); } inline ::pg_query::Node* CreateFdwStmt::mutable_func_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateFdwStmt.func_options) return _impl_.func_options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateFdwStmt::mutable_func_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFdwStmt.func_options) return &_impl_.func_options_; } inline const ::pg_query::Node& CreateFdwStmt::_internal_func_options(int index) const { return _impl_.func_options_.Get(index); } inline const ::pg_query::Node& CreateFdwStmt::func_options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateFdwStmt.func_options) return _internal_func_options(index); } inline ::pg_query::Node* CreateFdwStmt::_internal_add_func_options() { return _impl_.func_options_.Add(); } inline ::pg_query::Node* CreateFdwStmt::add_func_options() { ::pg_query::Node* _add = _internal_add_func_options(); // @@protoc_insertion_point(field_add:pg_query.CreateFdwStmt.func_options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateFdwStmt::func_options() const { // @@protoc_insertion_point(field_list:pg_query.CreateFdwStmt.func_options) return _impl_.func_options_; } // repeated .pg_query.Node options = 3 [json_name = "options"]; inline int CreateFdwStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int CreateFdwStmt::options_size() const { return _internal_options_size(); } inline void CreateFdwStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* CreateFdwStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateFdwStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateFdwStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFdwStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& CreateFdwStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& CreateFdwStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateFdwStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateFdwStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* CreateFdwStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.CreateFdwStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateFdwStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateFdwStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // AlterFdwStmt // string fdwname = 1 [json_name = "fdwname"]; inline void AlterFdwStmt::clear_fdwname() { _impl_.fdwname_.ClearToEmpty(); } inline const std::string& AlterFdwStmt::fdwname() const { // @@protoc_insertion_point(field_get:pg_query.AlterFdwStmt.fdwname) return _internal_fdwname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterFdwStmt::set_fdwname(ArgT0&& arg0, ArgT... args) { _impl_.fdwname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterFdwStmt.fdwname) } inline std::string* AlterFdwStmt::mutable_fdwname() { 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 { return _impl_.fdwname_.Get(); } inline void AlterFdwStmt::_internal_set_fdwname(const std::string& value) { _impl_.fdwname_.Set(value, GetArenaForAllocation()); } inline std::string* AlterFdwStmt::_internal_mutable_fdwname() { return _impl_.fdwname_.Mutable(GetArenaForAllocation()); } inline std::string* AlterFdwStmt::release_fdwname() { // @@protoc_insertion_point(field_release:pg_query.AlterFdwStmt.fdwname) return _impl_.fdwname_.Release(); } inline void AlterFdwStmt::set_allocated_fdwname(std::string* fdwname) { if (fdwname != nullptr) { } else { } _impl_.fdwname_.SetAllocated(fdwname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.fdwname_.IsDefault()) { _impl_.fdwname_.Set("", GetArenaForAllocation()); } #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 _impl_.func_options_.size(); } inline int AlterFdwStmt::func_options_size() const { return _internal_func_options_size(); } inline void AlterFdwStmt::clear_func_options() { _impl_.func_options_.Clear(); } inline ::pg_query::Node* AlterFdwStmt::mutable_func_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterFdwStmt.func_options) return _impl_.func_options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterFdwStmt::mutable_func_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterFdwStmt.func_options) return &_impl_.func_options_; } inline const ::pg_query::Node& AlterFdwStmt::_internal_func_options(int index) const { return _impl_.func_options_.Get(index); } inline const ::pg_query::Node& AlterFdwStmt::func_options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterFdwStmt.func_options) return _internal_func_options(index); } inline ::pg_query::Node* AlterFdwStmt::_internal_add_func_options() { return _impl_.func_options_.Add(); } inline ::pg_query::Node* AlterFdwStmt::add_func_options() { ::pg_query::Node* _add = _internal_add_func_options(); // @@protoc_insertion_point(field_add:pg_query.AlterFdwStmt.func_options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterFdwStmt::func_options() const { // @@protoc_insertion_point(field_list:pg_query.AlterFdwStmt.func_options) return _impl_.func_options_; } // repeated .pg_query.Node options = 3 [json_name = "options"]; inline int AlterFdwStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int AlterFdwStmt::options_size() const { return _internal_options_size(); } inline void AlterFdwStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* AlterFdwStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterFdwStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterFdwStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterFdwStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& AlterFdwStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& AlterFdwStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterFdwStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterFdwStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* AlterFdwStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.AlterFdwStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterFdwStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterFdwStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // CreateForeignServerStmt // string servername = 1 [json_name = "servername"]; inline void CreateForeignServerStmt::clear_servername() { _impl_.servername_.ClearToEmpty(); } inline const std::string& CreateForeignServerStmt::servername() const { // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.servername) return _internal_servername(); } template inline PROTOBUF_ALWAYS_INLINE void CreateForeignServerStmt::set_servername(ArgT0&& arg0, ArgT... args) { _impl_.servername_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.servername) } inline std::string* CreateForeignServerStmt::mutable_servername() { 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 { return _impl_.servername_.Get(); } inline void CreateForeignServerStmt::_internal_set_servername(const std::string& value) { _impl_.servername_.Set(value, GetArenaForAllocation()); } inline std::string* CreateForeignServerStmt::_internal_mutable_servername() { return _impl_.servername_.Mutable(GetArenaForAllocation()); } inline std::string* CreateForeignServerStmt::release_servername() { // @@protoc_insertion_point(field_release:pg_query.CreateForeignServerStmt.servername) return _impl_.servername_.Release(); } inline void CreateForeignServerStmt::set_allocated_servername(std::string* servername) { if (servername != nullptr) { } else { } _impl_.servername_.SetAllocated(servername, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.servername_.IsDefault()) { _impl_.servername_.Set("", GetArenaForAllocation()); } #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() { _impl_.servertype_.ClearToEmpty(); } inline const std::string& CreateForeignServerStmt::servertype() const { // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.servertype) return _internal_servertype(); } template inline PROTOBUF_ALWAYS_INLINE void CreateForeignServerStmt::set_servertype(ArgT0&& arg0, ArgT... args) { _impl_.servertype_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.servertype) } inline std::string* CreateForeignServerStmt::mutable_servertype() { 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 { return _impl_.servertype_.Get(); } inline void CreateForeignServerStmt::_internal_set_servertype(const std::string& value) { _impl_.servertype_.Set(value, GetArenaForAllocation()); } inline std::string* CreateForeignServerStmt::_internal_mutable_servertype() { return _impl_.servertype_.Mutable(GetArenaForAllocation()); } inline std::string* CreateForeignServerStmt::release_servertype() { // @@protoc_insertion_point(field_release:pg_query.CreateForeignServerStmt.servertype) return _impl_.servertype_.Release(); } inline void CreateForeignServerStmt::set_allocated_servertype(std::string* servertype) { if (servertype != nullptr) { } else { } _impl_.servertype_.SetAllocated(servertype, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.servertype_.IsDefault()) { _impl_.servertype_.Set("", GetArenaForAllocation()); } #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() { _impl_.version_.ClearToEmpty(); } inline const std::string& CreateForeignServerStmt::version() const { // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.version) return _internal_version(); } template inline PROTOBUF_ALWAYS_INLINE void CreateForeignServerStmt::set_version(ArgT0&& arg0, ArgT... args) { _impl_.version_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.version) } inline std::string* CreateForeignServerStmt::mutable_version() { 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 { return _impl_.version_.Get(); } inline void CreateForeignServerStmt::_internal_set_version(const std::string& value) { _impl_.version_.Set(value, GetArenaForAllocation()); } inline std::string* CreateForeignServerStmt::_internal_mutable_version() { return _impl_.version_.Mutable(GetArenaForAllocation()); } inline std::string* CreateForeignServerStmt::release_version() { // @@protoc_insertion_point(field_release:pg_query.CreateForeignServerStmt.version) return _impl_.version_.Release(); } inline void CreateForeignServerStmt::set_allocated_version(std::string* version) { if (version != nullptr) { } else { } _impl_.version_.SetAllocated(version, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.version_.IsDefault()) { _impl_.version_.Set("", GetArenaForAllocation()); } #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() { _impl_.fdwname_.ClearToEmpty(); } inline const std::string& CreateForeignServerStmt::fdwname() const { // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.fdwname) return _internal_fdwname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateForeignServerStmt::set_fdwname(ArgT0&& arg0, ArgT... args) { _impl_.fdwname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.fdwname) } inline std::string* CreateForeignServerStmt::mutable_fdwname() { 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 { return _impl_.fdwname_.Get(); } inline void CreateForeignServerStmt::_internal_set_fdwname(const std::string& value) { _impl_.fdwname_.Set(value, GetArenaForAllocation()); } inline std::string* CreateForeignServerStmt::_internal_mutable_fdwname() { return _impl_.fdwname_.Mutable(GetArenaForAllocation()); } inline std::string* CreateForeignServerStmt::release_fdwname() { // @@protoc_insertion_point(field_release:pg_query.CreateForeignServerStmt.fdwname) return _impl_.fdwname_.Release(); } inline void CreateForeignServerStmt::set_allocated_fdwname(std::string* fdwname) { if (fdwname != nullptr) { } else { } _impl_.fdwname_.SetAllocated(fdwname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.fdwname_.IsDefault()) { _impl_.fdwname_.Set("", GetArenaForAllocation()); } #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() { _impl_.if_not_exists_ = false; } inline bool CreateForeignServerStmt::_internal_if_not_exists() const { return _impl_.if_not_exists_; } inline bool CreateForeignServerStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.if_not_exists) return _internal_if_not_exists(); } inline void CreateForeignServerStmt::_internal_set_if_not_exists(bool value) { _impl_.if_not_exists_ = value; } inline void CreateForeignServerStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.if_not_exists) } // repeated .pg_query.Node options = 6 [json_name = "options"]; inline int CreateForeignServerStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int CreateForeignServerStmt::options_size() const { return _internal_options_size(); } inline void CreateForeignServerStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* CreateForeignServerStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignServerStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateForeignServerStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateForeignServerStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& CreateForeignServerStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& CreateForeignServerStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateForeignServerStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* CreateForeignServerStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.CreateForeignServerStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateForeignServerStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateForeignServerStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // AlterForeignServerStmt // string servername = 1 [json_name = "servername"]; inline void AlterForeignServerStmt::clear_servername() { _impl_.servername_.ClearToEmpty(); } inline const std::string& AlterForeignServerStmt::servername() const { // @@protoc_insertion_point(field_get:pg_query.AlterForeignServerStmt.servername) return _internal_servername(); } template inline PROTOBUF_ALWAYS_INLINE void AlterForeignServerStmt::set_servername(ArgT0&& arg0, ArgT... args) { _impl_.servername_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterForeignServerStmt.servername) } inline std::string* AlterForeignServerStmt::mutable_servername() { 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 { return _impl_.servername_.Get(); } inline void AlterForeignServerStmt::_internal_set_servername(const std::string& value) { _impl_.servername_.Set(value, GetArenaForAllocation()); } inline std::string* AlterForeignServerStmt::_internal_mutable_servername() { return _impl_.servername_.Mutable(GetArenaForAllocation()); } inline std::string* AlterForeignServerStmt::release_servername() { // @@protoc_insertion_point(field_release:pg_query.AlterForeignServerStmt.servername) return _impl_.servername_.Release(); } inline void AlterForeignServerStmt::set_allocated_servername(std::string* servername) { if (servername != nullptr) { } else { } _impl_.servername_.SetAllocated(servername, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.servername_.IsDefault()) { _impl_.servername_.Set("", GetArenaForAllocation()); } #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() { _impl_.version_.ClearToEmpty(); } inline const std::string& AlterForeignServerStmt::version() const { // @@protoc_insertion_point(field_get:pg_query.AlterForeignServerStmt.version) return _internal_version(); } template inline PROTOBUF_ALWAYS_INLINE void AlterForeignServerStmt::set_version(ArgT0&& arg0, ArgT... args) { _impl_.version_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterForeignServerStmt.version) } inline std::string* AlterForeignServerStmt::mutable_version() { 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 { return _impl_.version_.Get(); } inline void AlterForeignServerStmt::_internal_set_version(const std::string& value) { _impl_.version_.Set(value, GetArenaForAllocation()); } inline std::string* AlterForeignServerStmt::_internal_mutable_version() { return _impl_.version_.Mutable(GetArenaForAllocation()); } inline std::string* AlterForeignServerStmt::release_version() { // @@protoc_insertion_point(field_release:pg_query.AlterForeignServerStmt.version) return _impl_.version_.Release(); } inline void AlterForeignServerStmt::set_allocated_version(std::string* version) { if (version != nullptr) { } else { } _impl_.version_.SetAllocated(version, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.version_.IsDefault()) { _impl_.version_.Set("", GetArenaForAllocation()); } #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 _impl_.options_.size(); } inline int AlterForeignServerStmt::options_size() const { return _internal_options_size(); } inline void AlterForeignServerStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* AlterForeignServerStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterForeignServerStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterForeignServerStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterForeignServerStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& AlterForeignServerStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& AlterForeignServerStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterForeignServerStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterForeignServerStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* AlterForeignServerStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.AlterForeignServerStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterForeignServerStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterForeignServerStmt.options) return _impl_.options_; } // bool has_version = 4 [json_name = "has_version"]; inline void AlterForeignServerStmt::clear_has_version() { _impl_.has_version_ = false; } inline bool AlterForeignServerStmt::_internal_has_version() const { return _impl_.has_version_; } inline bool AlterForeignServerStmt::has_version() const { // @@protoc_insertion_point(field_get:pg_query.AlterForeignServerStmt.has_version) return _internal_has_version(); } inline void AlterForeignServerStmt::_internal_set_has_version(bool value) { _impl_.has_version_ = value; } inline void AlterForeignServerStmt::set_has_version(bool value) { _internal_set_has_version(value); // @@protoc_insertion_point(field_set:pg_query.AlterForeignServerStmt.has_version) } // ------------------------------------------------------------------- // CreateUserMappingStmt // .pg_query.RoleSpec user = 1 [json_name = "user"]; inline bool CreateUserMappingStmt::_internal_has_user() const { return this != internal_default_instance() && _impl_.user_ != nullptr; } inline bool CreateUserMappingStmt::has_user() const { return _internal_has_user(); } inline void CreateUserMappingStmt::clear_user() { if (GetArenaForAllocation() == nullptr && _impl_.user_ != nullptr) { delete _impl_.user_; } _impl_.user_ = nullptr; } inline const ::pg_query::RoleSpec& CreateUserMappingStmt::_internal_user() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateUserMappingStmt.user) return _internal_user(); } inline void CreateUserMappingStmt::unsafe_arena_set_allocated_user( ::pg_query::RoleSpec* user) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.user_); } _impl_.user_ = user; if (user) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateUserMappingStmt.user) } inline ::pg_query::RoleSpec* CreateUserMappingStmt::release_user() { ::pg_query::RoleSpec* temp = _impl_.user_; _impl_.user_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RoleSpec* CreateUserMappingStmt::unsafe_arena_release_user() { // @@protoc_insertion_point(field_release:pg_query.CreateUserMappingStmt.user) ::pg_query::RoleSpec* temp = _impl_.user_; _impl_.user_ = nullptr; return temp; } inline ::pg_query::RoleSpec* CreateUserMappingStmt::_internal_mutable_user() { if (_impl_.user_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArenaForAllocation()); _impl_.user_ = p; } return _impl_.user_; } inline ::pg_query::RoleSpec* CreateUserMappingStmt::mutable_user() { ::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* user) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.user_; } if (user) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(user); if (message_arena != submessage_arena) { user = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, user, submessage_arena); } } else { } _impl_.user_ = user; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateUserMappingStmt.user) } // string servername = 2 [json_name = "servername"]; inline void CreateUserMappingStmt::clear_servername() { _impl_.servername_.ClearToEmpty(); } inline const std::string& CreateUserMappingStmt::servername() const { // @@protoc_insertion_point(field_get:pg_query.CreateUserMappingStmt.servername) return _internal_servername(); } template inline PROTOBUF_ALWAYS_INLINE void CreateUserMappingStmt::set_servername(ArgT0&& arg0, ArgT... args) { _impl_.servername_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateUserMappingStmt.servername) } inline std::string* CreateUserMappingStmt::mutable_servername() { 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 { return _impl_.servername_.Get(); } inline void CreateUserMappingStmt::_internal_set_servername(const std::string& value) { _impl_.servername_.Set(value, GetArenaForAllocation()); } inline std::string* CreateUserMappingStmt::_internal_mutable_servername() { return _impl_.servername_.Mutable(GetArenaForAllocation()); } inline std::string* CreateUserMappingStmt::release_servername() { // @@protoc_insertion_point(field_release:pg_query.CreateUserMappingStmt.servername) return _impl_.servername_.Release(); } inline void CreateUserMappingStmt::set_allocated_servername(std::string* servername) { if (servername != nullptr) { } else { } _impl_.servername_.SetAllocated(servername, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.servername_.IsDefault()) { _impl_.servername_.Set("", GetArenaForAllocation()); } #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() { _impl_.if_not_exists_ = false; } inline bool CreateUserMappingStmt::_internal_if_not_exists() const { return _impl_.if_not_exists_; } inline bool CreateUserMappingStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.CreateUserMappingStmt.if_not_exists) return _internal_if_not_exists(); } inline void CreateUserMappingStmt::_internal_set_if_not_exists(bool value) { _impl_.if_not_exists_ = value; } inline void CreateUserMappingStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateUserMappingStmt.if_not_exists) } // repeated .pg_query.Node options = 4 [json_name = "options"]; inline int CreateUserMappingStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int CreateUserMappingStmt::options_size() const { return _internal_options_size(); } inline void CreateUserMappingStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* CreateUserMappingStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateUserMappingStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateUserMappingStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateUserMappingStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& CreateUserMappingStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& CreateUserMappingStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateUserMappingStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateUserMappingStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* CreateUserMappingStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.CreateUserMappingStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateUserMappingStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateUserMappingStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // AlterUserMappingStmt // .pg_query.RoleSpec user = 1 [json_name = "user"]; inline bool AlterUserMappingStmt::_internal_has_user() const { return this != internal_default_instance() && _impl_.user_ != nullptr; } inline bool AlterUserMappingStmt::has_user() const { return _internal_has_user(); } inline void AlterUserMappingStmt::clear_user() { if (GetArenaForAllocation() == nullptr && _impl_.user_ != nullptr) { delete _impl_.user_; } _impl_.user_ = nullptr; } inline const ::pg_query::RoleSpec& AlterUserMappingStmt::_internal_user() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterUserMappingStmt.user) return _internal_user(); } inline void AlterUserMappingStmt::unsafe_arena_set_allocated_user( ::pg_query::RoleSpec* user) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.user_); } _impl_.user_ = user; if (user) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterUserMappingStmt.user) } inline ::pg_query::RoleSpec* AlterUserMappingStmt::release_user() { ::pg_query::RoleSpec* temp = _impl_.user_; _impl_.user_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RoleSpec* AlterUserMappingStmt::unsafe_arena_release_user() { // @@protoc_insertion_point(field_release:pg_query.AlterUserMappingStmt.user) ::pg_query::RoleSpec* temp = _impl_.user_; _impl_.user_ = nullptr; return temp; } inline ::pg_query::RoleSpec* AlterUserMappingStmt::_internal_mutable_user() { if (_impl_.user_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArenaForAllocation()); _impl_.user_ = p; } return _impl_.user_; } inline ::pg_query::RoleSpec* AlterUserMappingStmt::mutable_user() { ::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* user) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.user_; } if (user) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(user); if (message_arena != submessage_arena) { user = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, user, submessage_arena); } } else { } _impl_.user_ = user; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterUserMappingStmt.user) } // string servername = 2 [json_name = "servername"]; inline void AlterUserMappingStmt::clear_servername() { _impl_.servername_.ClearToEmpty(); } inline const std::string& AlterUserMappingStmt::servername() const { // @@protoc_insertion_point(field_get:pg_query.AlterUserMappingStmt.servername) return _internal_servername(); } template inline PROTOBUF_ALWAYS_INLINE void AlterUserMappingStmt::set_servername(ArgT0&& arg0, ArgT... args) { _impl_.servername_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterUserMappingStmt.servername) } inline std::string* AlterUserMappingStmt::mutable_servername() { 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 { return _impl_.servername_.Get(); } inline void AlterUserMappingStmt::_internal_set_servername(const std::string& value) { _impl_.servername_.Set(value, GetArenaForAllocation()); } inline std::string* AlterUserMappingStmt::_internal_mutable_servername() { return _impl_.servername_.Mutable(GetArenaForAllocation()); } inline std::string* AlterUserMappingStmt::release_servername() { // @@protoc_insertion_point(field_release:pg_query.AlterUserMappingStmt.servername) return _impl_.servername_.Release(); } inline void AlterUserMappingStmt::set_allocated_servername(std::string* servername) { if (servername != nullptr) { } else { } _impl_.servername_.SetAllocated(servername, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.servername_.IsDefault()) { _impl_.servername_.Set("", GetArenaForAllocation()); } #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 _impl_.options_.size(); } inline int AlterUserMappingStmt::options_size() const { return _internal_options_size(); } inline void AlterUserMappingStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* AlterUserMappingStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterUserMappingStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterUserMappingStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterUserMappingStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& AlterUserMappingStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& AlterUserMappingStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterUserMappingStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterUserMappingStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* AlterUserMappingStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.AlterUserMappingStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterUserMappingStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterUserMappingStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // DropUserMappingStmt // .pg_query.RoleSpec user = 1 [json_name = "user"]; inline bool DropUserMappingStmt::_internal_has_user() const { return this != internal_default_instance() && _impl_.user_ != nullptr; } inline bool DropUserMappingStmt::has_user() const { return _internal_has_user(); } inline void DropUserMappingStmt::clear_user() { if (GetArenaForAllocation() == nullptr && _impl_.user_ != nullptr) { delete _impl_.user_; } _impl_.user_ = nullptr; } inline const ::pg_query::RoleSpec& DropUserMappingStmt::_internal_user() const { 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 { // @@protoc_insertion_point(field_get:pg_query.DropUserMappingStmt.user) return _internal_user(); } inline void DropUserMappingStmt::unsafe_arena_set_allocated_user( ::pg_query::RoleSpec* user) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.user_); } _impl_.user_ = user; if (user) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DropUserMappingStmt.user) } inline ::pg_query::RoleSpec* DropUserMappingStmt::release_user() { ::pg_query::RoleSpec* temp = _impl_.user_; _impl_.user_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RoleSpec* DropUserMappingStmt::unsafe_arena_release_user() { // @@protoc_insertion_point(field_release:pg_query.DropUserMappingStmt.user) ::pg_query::RoleSpec* temp = _impl_.user_; _impl_.user_ = nullptr; return temp; } inline ::pg_query::RoleSpec* DropUserMappingStmt::_internal_mutable_user() { if (_impl_.user_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArenaForAllocation()); _impl_.user_ = p; } return _impl_.user_; } inline ::pg_query::RoleSpec* DropUserMappingStmt::mutable_user() { ::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* user) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.user_; } if (user) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(user); if (message_arena != submessage_arena) { user = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, user, submessage_arena); } } else { } _impl_.user_ = user; // @@protoc_insertion_point(field_set_allocated:pg_query.DropUserMappingStmt.user) } // string servername = 2 [json_name = "servername"]; inline void DropUserMappingStmt::clear_servername() { _impl_.servername_.ClearToEmpty(); } inline const std::string& DropUserMappingStmt::servername() const { // @@protoc_insertion_point(field_get:pg_query.DropUserMappingStmt.servername) return _internal_servername(); } template inline PROTOBUF_ALWAYS_INLINE void DropUserMappingStmt::set_servername(ArgT0&& arg0, ArgT... args) { _impl_.servername_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.DropUserMappingStmt.servername) } inline std::string* DropUserMappingStmt::mutable_servername() { 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 { return _impl_.servername_.Get(); } inline void DropUserMappingStmt::_internal_set_servername(const std::string& value) { _impl_.servername_.Set(value, GetArenaForAllocation()); } inline std::string* DropUserMappingStmt::_internal_mutable_servername() { return _impl_.servername_.Mutable(GetArenaForAllocation()); } inline std::string* DropUserMappingStmt::release_servername() { // @@protoc_insertion_point(field_release:pg_query.DropUserMappingStmt.servername) return _impl_.servername_.Release(); } inline void DropUserMappingStmt::set_allocated_servername(std::string* servername) { if (servername != nullptr) { } else { } _impl_.servername_.SetAllocated(servername, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.servername_.IsDefault()) { _impl_.servername_.Set("", GetArenaForAllocation()); } #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() { _impl_.missing_ok_ = false; } inline bool DropUserMappingStmt::_internal_missing_ok() const { return _impl_.missing_ok_; } inline bool DropUserMappingStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropUserMappingStmt.missing_ok) return _internal_missing_ok(); } inline void DropUserMappingStmt::_internal_set_missing_ok(bool value) { _impl_.missing_ok_ = value; } inline void DropUserMappingStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropUserMappingStmt.missing_ok) } // ------------------------------------------------------------------- // AlterTableSpaceOptionsStmt // string tablespacename = 1 [json_name = "tablespacename"]; inline void AlterTableSpaceOptionsStmt::clear_tablespacename() { _impl_.tablespacename_.ClearToEmpty(); } inline const std::string& AlterTableSpaceOptionsStmt::tablespacename() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableSpaceOptionsStmt.tablespacename) return _internal_tablespacename(); } template inline PROTOBUF_ALWAYS_INLINE void AlterTableSpaceOptionsStmt::set_tablespacename(ArgT0&& arg0, ArgT... args) { _impl_.tablespacename_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterTableSpaceOptionsStmt.tablespacename) } inline std::string* AlterTableSpaceOptionsStmt::mutable_tablespacename() { 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 { return _impl_.tablespacename_.Get(); } inline void AlterTableSpaceOptionsStmt::_internal_set_tablespacename(const std::string& value) { _impl_.tablespacename_.Set(value, GetArenaForAllocation()); } inline std::string* AlterTableSpaceOptionsStmt::_internal_mutable_tablespacename() { return _impl_.tablespacename_.Mutable(GetArenaForAllocation()); } inline std::string* AlterTableSpaceOptionsStmt::release_tablespacename() { // @@protoc_insertion_point(field_release:pg_query.AlterTableSpaceOptionsStmt.tablespacename) return _impl_.tablespacename_.Release(); } inline void AlterTableSpaceOptionsStmt::set_allocated_tablespacename(std::string* tablespacename) { if (tablespacename != nullptr) { } else { } _impl_.tablespacename_.SetAllocated(tablespacename, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.tablespacename_.IsDefault()) { _impl_.tablespacename_.Set("", GetArenaForAllocation()); } #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 _impl_.options_.size(); } inline int AlterTableSpaceOptionsStmt::options_size() const { return _internal_options_size(); } inline void AlterTableSpaceOptionsStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* AlterTableSpaceOptionsStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTableSpaceOptionsStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTableSpaceOptionsStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTableSpaceOptionsStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& AlterTableSpaceOptionsStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& AlterTableSpaceOptionsStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTableSpaceOptionsStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterTableSpaceOptionsStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* AlterTableSpaceOptionsStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.AlterTableSpaceOptionsStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTableSpaceOptionsStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterTableSpaceOptionsStmt.options) return _impl_.options_; } // bool is_reset = 3 [json_name = "isReset"]; inline void AlterTableSpaceOptionsStmt::clear_is_reset() { _impl_.is_reset_ = false; } inline bool AlterTableSpaceOptionsStmt::_internal_is_reset() const { return _impl_.is_reset_; } inline bool AlterTableSpaceOptionsStmt::is_reset() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableSpaceOptionsStmt.is_reset) return _internal_is_reset(); } inline void AlterTableSpaceOptionsStmt::_internal_set_is_reset(bool value) { _impl_.is_reset_ = value; } inline void AlterTableSpaceOptionsStmt::set_is_reset(bool value) { _internal_set_is_reset(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableSpaceOptionsStmt.is_reset) } // ------------------------------------------------------------------- // AlterTableMoveAllStmt // string orig_tablespacename = 1 [json_name = "orig_tablespacename"]; inline void AlterTableMoveAllStmt::clear_orig_tablespacename() { _impl_.orig_tablespacename_.ClearToEmpty(); } inline const std::string& AlterTableMoveAllStmt::orig_tablespacename() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.orig_tablespacename) return _internal_orig_tablespacename(); } template inline PROTOBUF_ALWAYS_INLINE void AlterTableMoveAllStmt::set_orig_tablespacename(ArgT0&& arg0, ArgT... args) { _impl_.orig_tablespacename_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterTableMoveAllStmt.orig_tablespacename) } inline std::string* AlterTableMoveAllStmt::mutable_orig_tablespacename() { 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 { return _impl_.orig_tablespacename_.Get(); } inline void AlterTableMoveAllStmt::_internal_set_orig_tablespacename(const std::string& value) { _impl_.orig_tablespacename_.Set(value, GetArenaForAllocation()); } inline std::string* AlterTableMoveAllStmt::_internal_mutable_orig_tablespacename() { return _impl_.orig_tablespacename_.Mutable(GetArenaForAllocation()); } inline std::string* AlterTableMoveAllStmt::release_orig_tablespacename() { // @@protoc_insertion_point(field_release:pg_query.AlterTableMoveAllStmt.orig_tablespacename) return _impl_.orig_tablespacename_.Release(); } inline void AlterTableMoveAllStmt::set_allocated_orig_tablespacename(std::string* orig_tablespacename) { if (orig_tablespacename != nullptr) { } else { } _impl_.orig_tablespacename_.SetAllocated(orig_tablespacename, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.orig_tablespacename_.IsDefault()) { _impl_.orig_tablespacename_.Set("", GetArenaForAllocation()); } #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() { _impl_.objtype_ = 0; } inline ::pg_query::ObjectType AlterTableMoveAllStmt::_internal_objtype() const { return static_cast< ::pg_query::ObjectType >(_impl_.objtype_); } inline ::pg_query::ObjectType AlterTableMoveAllStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.objtype) return _internal_objtype(); } inline void AlterTableMoveAllStmt::_internal_set_objtype(::pg_query::ObjectType value) { _impl_.objtype_ = value; } inline void AlterTableMoveAllStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableMoveAllStmt.objtype) } // repeated .pg_query.Node roles = 3 [json_name = "roles"]; inline int AlterTableMoveAllStmt::_internal_roles_size() const { return _impl_.roles_.size(); } inline int AlterTableMoveAllStmt::roles_size() const { return _internal_roles_size(); } inline void AlterTableMoveAllStmt::clear_roles() { _impl_.roles_.Clear(); } inline ::pg_query::Node* AlterTableMoveAllStmt::mutable_roles(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTableMoveAllStmt.roles) return _impl_.roles_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTableMoveAllStmt::mutable_roles() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTableMoveAllStmt.roles) return &_impl_.roles_; } inline const ::pg_query::Node& AlterTableMoveAllStmt::_internal_roles(int index) const { return _impl_.roles_.Get(index); } inline const ::pg_query::Node& AlterTableMoveAllStmt::roles(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.roles) return _internal_roles(index); } inline ::pg_query::Node* AlterTableMoveAllStmt::_internal_add_roles() { return _impl_.roles_.Add(); } inline ::pg_query::Node* AlterTableMoveAllStmt::add_roles() { ::pg_query::Node* _add = _internal_add_roles(); // @@protoc_insertion_point(field_add:pg_query.AlterTableMoveAllStmt.roles) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTableMoveAllStmt::roles() const { // @@protoc_insertion_point(field_list:pg_query.AlterTableMoveAllStmt.roles) return _impl_.roles_; } // string new_tablespacename = 4 [json_name = "new_tablespacename"]; inline void AlterTableMoveAllStmt::clear_new_tablespacename() { _impl_.new_tablespacename_.ClearToEmpty(); } inline const std::string& AlterTableMoveAllStmt::new_tablespacename() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.new_tablespacename) return _internal_new_tablespacename(); } template inline PROTOBUF_ALWAYS_INLINE void AlterTableMoveAllStmt::set_new_tablespacename(ArgT0&& arg0, ArgT... args) { _impl_.new_tablespacename_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterTableMoveAllStmt.new_tablespacename) } inline std::string* AlterTableMoveAllStmt::mutable_new_tablespacename() { 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 { return _impl_.new_tablespacename_.Get(); } inline void AlterTableMoveAllStmt::_internal_set_new_tablespacename(const std::string& value) { _impl_.new_tablespacename_.Set(value, GetArenaForAllocation()); } inline std::string* AlterTableMoveAllStmt::_internal_mutable_new_tablespacename() { return _impl_.new_tablespacename_.Mutable(GetArenaForAllocation()); } inline std::string* AlterTableMoveAllStmt::release_new_tablespacename() { // @@protoc_insertion_point(field_release:pg_query.AlterTableMoveAllStmt.new_tablespacename) return _impl_.new_tablespacename_.Release(); } inline void AlterTableMoveAllStmt::set_allocated_new_tablespacename(std::string* new_tablespacename) { if (new_tablespacename != nullptr) { } else { } _impl_.new_tablespacename_.SetAllocated(new_tablespacename, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.new_tablespacename_.IsDefault()) { _impl_.new_tablespacename_.Set("", GetArenaForAllocation()); } #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() { _impl_.nowait_ = false; } inline bool AlterTableMoveAllStmt::_internal_nowait() const { return _impl_.nowait_; } inline bool AlterTableMoveAllStmt::nowait() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.nowait) return _internal_nowait(); } inline void AlterTableMoveAllStmt::_internal_set_nowait(bool value) { _impl_.nowait_ = value; } inline void AlterTableMoveAllStmt::set_nowait(bool value) { _internal_set_nowait(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableMoveAllStmt.nowait) } // ------------------------------------------------------------------- // SecLabelStmt // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; inline void SecLabelStmt::clear_objtype() { _impl_.objtype_ = 0; } inline ::pg_query::ObjectType SecLabelStmt::_internal_objtype() const { return static_cast< ::pg_query::ObjectType >(_impl_.objtype_); } inline ::pg_query::ObjectType SecLabelStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.SecLabelStmt.objtype) return _internal_objtype(); } inline void SecLabelStmt::_internal_set_objtype(::pg_query::ObjectType value) { _impl_.objtype_ = value; } inline void SecLabelStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.SecLabelStmt.objtype) } // .pg_query.Node object = 2 [json_name = "object"]; inline bool SecLabelStmt::_internal_has_object() const { return this != internal_default_instance() && _impl_.object_ != nullptr; } inline bool SecLabelStmt::has_object() const { return _internal_has_object(); } inline void SecLabelStmt::clear_object() { if (GetArenaForAllocation() == nullptr && _impl_.object_ != nullptr) { delete _impl_.object_; } _impl_.object_ = nullptr; } inline const ::pg_query::Node& SecLabelStmt::_internal_object() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SecLabelStmt.object) return _internal_object(); } inline void SecLabelStmt::unsafe_arena_set_allocated_object( ::pg_query::Node* object) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.object_); } _impl_.object_ = object; if (object) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SecLabelStmt.object) } inline ::pg_query::Node* SecLabelStmt::release_object() { ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SecLabelStmt::unsafe_arena_release_object() { // @@protoc_insertion_point(field_release:pg_query.SecLabelStmt.object) ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; return temp; } inline ::pg_query::Node* SecLabelStmt::_internal_mutable_object() { if (_impl_.object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.object_ = p; } return _impl_.object_; } inline ::pg_query::Node* SecLabelStmt::mutable_object() { ::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* object) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.object_; } if (object) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(object); if (message_arena != submessage_arena) { object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, object, submessage_arena); } } else { } _impl_.object_ = object; // @@protoc_insertion_point(field_set_allocated:pg_query.SecLabelStmt.object) } // string provider = 3 [json_name = "provider"]; inline void SecLabelStmt::clear_provider() { _impl_.provider_.ClearToEmpty(); } inline const std::string& SecLabelStmt::provider() const { // @@protoc_insertion_point(field_get:pg_query.SecLabelStmt.provider) return _internal_provider(); } template inline PROTOBUF_ALWAYS_INLINE void SecLabelStmt::set_provider(ArgT0&& arg0, ArgT... args) { _impl_.provider_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.SecLabelStmt.provider) } inline std::string* SecLabelStmt::mutable_provider() { 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 { return _impl_.provider_.Get(); } inline void SecLabelStmt::_internal_set_provider(const std::string& value) { _impl_.provider_.Set(value, GetArenaForAllocation()); } inline std::string* SecLabelStmt::_internal_mutable_provider() { return _impl_.provider_.Mutable(GetArenaForAllocation()); } inline std::string* SecLabelStmt::release_provider() { // @@protoc_insertion_point(field_release:pg_query.SecLabelStmt.provider) return _impl_.provider_.Release(); } inline void SecLabelStmt::set_allocated_provider(std::string* provider) { if (provider != nullptr) { } else { } _impl_.provider_.SetAllocated(provider, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.provider_.IsDefault()) { _impl_.provider_.Set("", GetArenaForAllocation()); } #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() { _impl_.label_.ClearToEmpty(); } inline const std::string& SecLabelStmt::label() const { // @@protoc_insertion_point(field_get:pg_query.SecLabelStmt.label) return _internal_label(); } template inline PROTOBUF_ALWAYS_INLINE void SecLabelStmt::set_label(ArgT0&& arg0, ArgT... args) { _impl_.label_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.SecLabelStmt.label) } inline std::string* SecLabelStmt::mutable_label() { 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 { return _impl_.label_.Get(); } inline void SecLabelStmt::_internal_set_label(const std::string& value) { _impl_.label_.Set(value, GetArenaForAllocation()); } inline std::string* SecLabelStmt::_internal_mutable_label() { return _impl_.label_.Mutable(GetArenaForAllocation()); } inline std::string* SecLabelStmt::release_label() { // @@protoc_insertion_point(field_release:pg_query.SecLabelStmt.label) return _impl_.label_.Release(); } inline void SecLabelStmt::set_allocated_label(std::string* label) { if (label != nullptr) { } else { } _impl_.label_.SetAllocated(label, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.label_.IsDefault()) { _impl_.label_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.SecLabelStmt.label) } // ------------------------------------------------------------------- // CreateForeignTableStmt // .pg_query.CreateStmt base_stmt = 1 [json_name = "base"]; inline bool CreateForeignTableStmt::_internal_has_base_stmt() const { return this != internal_default_instance() && _impl_.base_stmt_ != nullptr; } inline bool CreateForeignTableStmt::has_base_stmt() const { return _internal_has_base_stmt(); } inline void CreateForeignTableStmt::clear_base_stmt() { if (GetArenaForAllocation() == nullptr && _impl_.base_stmt_ != nullptr) { delete _impl_.base_stmt_; } _impl_.base_stmt_ = nullptr; } inline const ::pg_query::CreateStmt& CreateForeignTableStmt::_internal_base_stmt() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateForeignTableStmt.base_stmt) return _internal_base_stmt(); } inline void CreateForeignTableStmt::unsafe_arena_set_allocated_base_stmt( ::pg_query::CreateStmt* base_stmt) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.base_stmt_); } _impl_.base_stmt_ = base_stmt; if (base_stmt) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateForeignTableStmt.base_stmt) } inline ::pg_query::CreateStmt* CreateForeignTableStmt::release_base_stmt() { ::pg_query::CreateStmt* temp = _impl_.base_stmt_; _impl_.base_stmt_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::CreateStmt* CreateForeignTableStmt::unsafe_arena_release_base_stmt() { // @@protoc_insertion_point(field_release:pg_query.CreateForeignTableStmt.base_stmt) ::pg_query::CreateStmt* temp = _impl_.base_stmt_; _impl_.base_stmt_ = nullptr; return temp; } inline ::pg_query::CreateStmt* CreateForeignTableStmt::_internal_mutable_base_stmt() { if (_impl_.base_stmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::CreateStmt>(GetArenaForAllocation()); _impl_.base_stmt_ = p; } return _impl_.base_stmt_; } inline ::pg_query::CreateStmt* CreateForeignTableStmt::mutable_base_stmt() { ::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* base_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.base_stmt_; } if (base_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(base_stmt); if (message_arena != submessage_arena) { base_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, base_stmt, submessage_arena); } } else { } _impl_.base_stmt_ = base_stmt; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateForeignTableStmt.base_stmt) } // string servername = 2 [json_name = "servername"]; inline void CreateForeignTableStmt::clear_servername() { _impl_.servername_.ClearToEmpty(); } inline const std::string& CreateForeignTableStmt::servername() const { // @@protoc_insertion_point(field_get:pg_query.CreateForeignTableStmt.servername) return _internal_servername(); } template inline PROTOBUF_ALWAYS_INLINE void CreateForeignTableStmt::set_servername(ArgT0&& arg0, ArgT... args) { _impl_.servername_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateForeignTableStmt.servername) } inline std::string* CreateForeignTableStmt::mutable_servername() { 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 { return _impl_.servername_.Get(); } inline void CreateForeignTableStmt::_internal_set_servername(const std::string& value) { _impl_.servername_.Set(value, GetArenaForAllocation()); } inline std::string* CreateForeignTableStmt::_internal_mutable_servername() { return _impl_.servername_.Mutable(GetArenaForAllocation()); } inline std::string* CreateForeignTableStmt::release_servername() { // @@protoc_insertion_point(field_release:pg_query.CreateForeignTableStmt.servername) return _impl_.servername_.Release(); } inline void CreateForeignTableStmt::set_allocated_servername(std::string* servername) { if (servername != nullptr) { } else { } _impl_.servername_.SetAllocated(servername, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.servername_.IsDefault()) { _impl_.servername_.Set("", GetArenaForAllocation()); } #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 _impl_.options_.size(); } inline int CreateForeignTableStmt::options_size() const { return _internal_options_size(); } inline void CreateForeignTableStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* CreateForeignTableStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignTableStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateForeignTableStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateForeignTableStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& CreateForeignTableStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& CreateForeignTableStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateForeignTableStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateForeignTableStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* CreateForeignTableStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.CreateForeignTableStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateForeignTableStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateForeignTableStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // ImportForeignSchemaStmt // string server_name = 1 [json_name = "server_name"]; inline void ImportForeignSchemaStmt::clear_server_name() { _impl_.server_name_.ClearToEmpty(); } inline const std::string& ImportForeignSchemaStmt::server_name() const { // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.server_name) return _internal_server_name(); } template inline PROTOBUF_ALWAYS_INLINE void ImportForeignSchemaStmt::set_server_name(ArgT0&& arg0, ArgT... args) { _impl_.server_name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.ImportForeignSchemaStmt.server_name) } inline std::string* ImportForeignSchemaStmt::mutable_server_name() { 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 { return _impl_.server_name_.Get(); } inline void ImportForeignSchemaStmt::_internal_set_server_name(const std::string& value) { _impl_.server_name_.Set(value, GetArenaForAllocation()); } inline std::string* ImportForeignSchemaStmt::_internal_mutable_server_name() { return _impl_.server_name_.Mutable(GetArenaForAllocation()); } inline std::string* ImportForeignSchemaStmt::release_server_name() { // @@protoc_insertion_point(field_release:pg_query.ImportForeignSchemaStmt.server_name) return _impl_.server_name_.Release(); } inline void ImportForeignSchemaStmt::set_allocated_server_name(std::string* server_name) { if (server_name != nullptr) { } else { } _impl_.server_name_.SetAllocated(server_name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.server_name_.IsDefault()) { _impl_.server_name_.Set("", GetArenaForAllocation()); } #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() { _impl_.remote_schema_.ClearToEmpty(); } inline const std::string& ImportForeignSchemaStmt::remote_schema() const { // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.remote_schema) return _internal_remote_schema(); } template inline PROTOBUF_ALWAYS_INLINE void ImportForeignSchemaStmt::set_remote_schema(ArgT0&& arg0, ArgT... args) { _impl_.remote_schema_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.ImportForeignSchemaStmt.remote_schema) } inline std::string* ImportForeignSchemaStmt::mutable_remote_schema() { 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 { return _impl_.remote_schema_.Get(); } inline void ImportForeignSchemaStmt::_internal_set_remote_schema(const std::string& value) { _impl_.remote_schema_.Set(value, GetArenaForAllocation()); } inline std::string* ImportForeignSchemaStmt::_internal_mutable_remote_schema() { return _impl_.remote_schema_.Mutable(GetArenaForAllocation()); } inline std::string* ImportForeignSchemaStmt::release_remote_schema() { // @@protoc_insertion_point(field_release:pg_query.ImportForeignSchemaStmt.remote_schema) return _impl_.remote_schema_.Release(); } inline void ImportForeignSchemaStmt::set_allocated_remote_schema(std::string* remote_schema) { if (remote_schema != nullptr) { } else { } _impl_.remote_schema_.SetAllocated(remote_schema, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.remote_schema_.IsDefault()) { _impl_.remote_schema_.Set("", GetArenaForAllocation()); } #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() { _impl_.local_schema_.ClearToEmpty(); } inline const std::string& ImportForeignSchemaStmt::local_schema() const { // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.local_schema) return _internal_local_schema(); } template inline PROTOBUF_ALWAYS_INLINE void ImportForeignSchemaStmt::set_local_schema(ArgT0&& arg0, ArgT... args) { _impl_.local_schema_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.ImportForeignSchemaStmt.local_schema) } inline std::string* ImportForeignSchemaStmt::mutable_local_schema() { 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 { return _impl_.local_schema_.Get(); } inline void ImportForeignSchemaStmt::_internal_set_local_schema(const std::string& value) { _impl_.local_schema_.Set(value, GetArenaForAllocation()); } inline std::string* ImportForeignSchemaStmt::_internal_mutable_local_schema() { return _impl_.local_schema_.Mutable(GetArenaForAllocation()); } inline std::string* ImportForeignSchemaStmt::release_local_schema() { // @@protoc_insertion_point(field_release:pg_query.ImportForeignSchemaStmt.local_schema) return _impl_.local_schema_.Release(); } inline void ImportForeignSchemaStmt::set_allocated_local_schema(std::string* local_schema) { if (local_schema != nullptr) { } else { } _impl_.local_schema_.SetAllocated(local_schema, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.local_schema_.IsDefault()) { _impl_.local_schema_.Set("", GetArenaForAllocation()); } #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() { _impl_.list_type_ = 0; } inline ::pg_query::ImportForeignSchemaType ImportForeignSchemaStmt::_internal_list_type() const { return static_cast< ::pg_query::ImportForeignSchemaType >(_impl_.list_type_); } inline ::pg_query::ImportForeignSchemaType ImportForeignSchemaStmt::list_type() const { // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.list_type) return _internal_list_type(); } inline void ImportForeignSchemaStmt::_internal_set_list_type(::pg_query::ImportForeignSchemaType value) { _impl_.list_type_ = value; } inline void ImportForeignSchemaStmt::set_list_type(::pg_query::ImportForeignSchemaType value) { _internal_set_list_type(value); // @@protoc_insertion_point(field_set:pg_query.ImportForeignSchemaStmt.list_type) } // repeated .pg_query.Node table_list = 5 [json_name = "table_list"]; inline int ImportForeignSchemaStmt::_internal_table_list_size() const { return _impl_.table_list_.size(); } inline int ImportForeignSchemaStmt::table_list_size() const { return _internal_table_list_size(); } inline void ImportForeignSchemaStmt::clear_table_list() { _impl_.table_list_.Clear(); } inline ::pg_query::Node* ImportForeignSchemaStmt::mutable_table_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ImportForeignSchemaStmt.table_list) return _impl_.table_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ImportForeignSchemaStmt::mutable_table_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.ImportForeignSchemaStmt.table_list) return &_impl_.table_list_; } inline const ::pg_query::Node& ImportForeignSchemaStmt::_internal_table_list(int index) const { return _impl_.table_list_.Get(index); } inline const ::pg_query::Node& ImportForeignSchemaStmt::table_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.table_list) return _internal_table_list(index); } inline ::pg_query::Node* ImportForeignSchemaStmt::_internal_add_table_list() { return _impl_.table_list_.Add(); } inline ::pg_query::Node* ImportForeignSchemaStmt::add_table_list() { ::pg_query::Node* _add = _internal_add_table_list(); // @@protoc_insertion_point(field_add:pg_query.ImportForeignSchemaStmt.table_list) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ImportForeignSchemaStmt::table_list() const { // @@protoc_insertion_point(field_list:pg_query.ImportForeignSchemaStmt.table_list) return _impl_.table_list_; } // repeated .pg_query.Node options = 6 [json_name = "options"]; inline int ImportForeignSchemaStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int ImportForeignSchemaStmt::options_size() const { return _internal_options_size(); } inline void ImportForeignSchemaStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* ImportForeignSchemaStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ImportForeignSchemaStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ImportForeignSchemaStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.ImportForeignSchemaStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& ImportForeignSchemaStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& ImportForeignSchemaStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.options) return _internal_options(index); } inline ::pg_query::Node* ImportForeignSchemaStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* ImportForeignSchemaStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.ImportForeignSchemaStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ImportForeignSchemaStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.ImportForeignSchemaStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // CreateExtensionStmt // string extname = 1 [json_name = "extname"]; inline void CreateExtensionStmt::clear_extname() { _impl_.extname_.ClearToEmpty(); } inline const std::string& CreateExtensionStmt::extname() const { // @@protoc_insertion_point(field_get:pg_query.CreateExtensionStmt.extname) return _internal_extname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateExtensionStmt::set_extname(ArgT0&& arg0, ArgT... args) { _impl_.extname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateExtensionStmt.extname) } inline std::string* CreateExtensionStmt::mutable_extname() { 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 { return _impl_.extname_.Get(); } inline void CreateExtensionStmt::_internal_set_extname(const std::string& value) { _impl_.extname_.Set(value, GetArenaForAllocation()); } inline std::string* CreateExtensionStmt::_internal_mutable_extname() { return _impl_.extname_.Mutable(GetArenaForAllocation()); } inline std::string* CreateExtensionStmt::release_extname() { // @@protoc_insertion_point(field_release:pg_query.CreateExtensionStmt.extname) return _impl_.extname_.Release(); } inline void CreateExtensionStmt::set_allocated_extname(std::string* extname) { if (extname != nullptr) { } else { } _impl_.extname_.SetAllocated(extname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.extname_.IsDefault()) { _impl_.extname_.Set("", GetArenaForAllocation()); } #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() { _impl_.if_not_exists_ = false; } inline bool CreateExtensionStmt::_internal_if_not_exists() const { return _impl_.if_not_exists_; } inline bool CreateExtensionStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.CreateExtensionStmt.if_not_exists) return _internal_if_not_exists(); } inline void CreateExtensionStmt::_internal_set_if_not_exists(bool value) { _impl_.if_not_exists_ = value; } inline void CreateExtensionStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateExtensionStmt.if_not_exists) } // repeated .pg_query.Node options = 3 [json_name = "options"]; inline int CreateExtensionStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int CreateExtensionStmt::options_size() const { return _internal_options_size(); } inline void CreateExtensionStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* CreateExtensionStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateExtensionStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateExtensionStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateExtensionStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& CreateExtensionStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& CreateExtensionStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateExtensionStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateExtensionStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* CreateExtensionStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.CreateExtensionStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateExtensionStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateExtensionStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // AlterExtensionStmt // string extname = 1 [json_name = "extname"]; inline void AlterExtensionStmt::clear_extname() { _impl_.extname_.ClearToEmpty(); } inline const std::string& AlterExtensionStmt::extname() const { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionStmt.extname) return _internal_extname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterExtensionStmt::set_extname(ArgT0&& arg0, ArgT... args) { _impl_.extname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterExtensionStmt.extname) } inline std::string* AlterExtensionStmt::mutable_extname() { 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 { return _impl_.extname_.Get(); } inline void AlterExtensionStmt::_internal_set_extname(const std::string& value) { _impl_.extname_.Set(value, GetArenaForAllocation()); } inline std::string* AlterExtensionStmt::_internal_mutable_extname() { return _impl_.extname_.Mutable(GetArenaForAllocation()); } inline std::string* AlterExtensionStmt::release_extname() { // @@protoc_insertion_point(field_release:pg_query.AlterExtensionStmt.extname) return _impl_.extname_.Release(); } inline void AlterExtensionStmt::set_allocated_extname(std::string* extname) { if (extname != nullptr) { } else { } _impl_.extname_.SetAllocated(extname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.extname_.IsDefault()) { _impl_.extname_.Set("", GetArenaForAllocation()); } #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 _impl_.options_.size(); } inline int AlterExtensionStmt::options_size() const { return _internal_options_size(); } inline void AlterExtensionStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* AlterExtensionStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterExtensionStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterExtensionStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterExtensionStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& AlterExtensionStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& AlterExtensionStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterExtensionStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* AlterExtensionStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.AlterExtensionStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterExtensionStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterExtensionStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // AlterExtensionContentsStmt // string extname = 1 [json_name = "extname"]; inline void AlterExtensionContentsStmt::clear_extname() { _impl_.extname_.ClearToEmpty(); } inline const std::string& AlterExtensionContentsStmt::extname() const { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionContentsStmt.extname) return _internal_extname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterExtensionContentsStmt::set_extname(ArgT0&& arg0, ArgT... args) { _impl_.extname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterExtensionContentsStmt.extname) } inline std::string* AlterExtensionContentsStmt::mutable_extname() { 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 { return _impl_.extname_.Get(); } inline void AlterExtensionContentsStmt::_internal_set_extname(const std::string& value) { _impl_.extname_.Set(value, GetArenaForAllocation()); } inline std::string* AlterExtensionContentsStmt::_internal_mutable_extname() { return _impl_.extname_.Mutable(GetArenaForAllocation()); } inline std::string* AlterExtensionContentsStmt::release_extname() { // @@protoc_insertion_point(field_release:pg_query.AlterExtensionContentsStmt.extname) return _impl_.extname_.Release(); } inline void AlterExtensionContentsStmt::set_allocated_extname(std::string* extname) { if (extname != nullptr) { } else { } _impl_.extname_.SetAllocated(extname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.extname_.IsDefault()) { _impl_.extname_.Set("", GetArenaForAllocation()); } #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() { _impl_.action_ = 0; } inline int32_t AlterExtensionContentsStmt::_internal_action() const { return _impl_.action_; } inline int32_t AlterExtensionContentsStmt::action() const { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionContentsStmt.action) return _internal_action(); } inline void AlterExtensionContentsStmt::_internal_set_action(int32_t value) { _impl_.action_ = value; } inline void AlterExtensionContentsStmt::set_action(int32_t value) { _internal_set_action(value); // @@protoc_insertion_point(field_set:pg_query.AlterExtensionContentsStmt.action) } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; inline void AlterExtensionContentsStmt::clear_objtype() { _impl_.objtype_ = 0; } inline ::pg_query::ObjectType AlterExtensionContentsStmt::_internal_objtype() const { return static_cast< ::pg_query::ObjectType >(_impl_.objtype_); } inline ::pg_query::ObjectType AlterExtensionContentsStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionContentsStmt.objtype) return _internal_objtype(); } inline void AlterExtensionContentsStmt::_internal_set_objtype(::pg_query::ObjectType value) { _impl_.objtype_ = value; } inline void AlterExtensionContentsStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.AlterExtensionContentsStmt.objtype) } // .pg_query.Node object = 4 [json_name = "object"]; inline bool AlterExtensionContentsStmt::_internal_has_object() const { return this != internal_default_instance() && _impl_.object_ != nullptr; } inline bool AlterExtensionContentsStmt::has_object() const { return _internal_has_object(); } inline void AlterExtensionContentsStmt::clear_object() { if (GetArenaForAllocation() == nullptr && _impl_.object_ != nullptr) { delete _impl_.object_; } _impl_.object_ = nullptr; } inline const ::pg_query::Node& AlterExtensionContentsStmt::_internal_object() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionContentsStmt.object) return _internal_object(); } inline void AlterExtensionContentsStmt::unsafe_arena_set_allocated_object( ::pg_query::Node* object) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.object_); } _impl_.object_ = object; if (object) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterExtensionContentsStmt.object) } inline ::pg_query::Node* AlterExtensionContentsStmt::release_object() { ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* AlterExtensionContentsStmt::unsafe_arena_release_object() { // @@protoc_insertion_point(field_release:pg_query.AlterExtensionContentsStmt.object) ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; return temp; } inline ::pg_query::Node* AlterExtensionContentsStmt::_internal_mutable_object() { if (_impl_.object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.object_ = p; } return _impl_.object_; } inline ::pg_query::Node* AlterExtensionContentsStmt::mutable_object() { ::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* object) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.object_; } if (object) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(object); if (message_arena != submessage_arena) { object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, object, submessage_arena); } } else { } _impl_.object_ = object; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterExtensionContentsStmt.object) } // ------------------------------------------------------------------- // CreateEventTrigStmt // string trigname = 1 [json_name = "trigname"]; inline void CreateEventTrigStmt::clear_trigname() { _impl_.trigname_.ClearToEmpty(); } inline const std::string& CreateEventTrigStmt::trigname() const { // @@protoc_insertion_point(field_get:pg_query.CreateEventTrigStmt.trigname) return _internal_trigname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateEventTrigStmt::set_trigname(ArgT0&& arg0, ArgT... args) { _impl_.trigname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateEventTrigStmt.trigname) } inline std::string* CreateEventTrigStmt::mutable_trigname() { 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 { return _impl_.trigname_.Get(); } inline void CreateEventTrigStmt::_internal_set_trigname(const std::string& value) { _impl_.trigname_.Set(value, GetArenaForAllocation()); } inline std::string* CreateEventTrigStmt::_internal_mutable_trigname() { return _impl_.trigname_.Mutable(GetArenaForAllocation()); } inline std::string* CreateEventTrigStmt::release_trigname() { // @@protoc_insertion_point(field_release:pg_query.CreateEventTrigStmt.trigname) return _impl_.trigname_.Release(); } inline void CreateEventTrigStmt::set_allocated_trigname(std::string* trigname) { if (trigname != nullptr) { } else { } _impl_.trigname_.SetAllocated(trigname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.trigname_.IsDefault()) { _impl_.trigname_.Set("", GetArenaForAllocation()); } #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() { _impl_.eventname_.ClearToEmpty(); } inline const std::string& CreateEventTrigStmt::eventname() const { // @@protoc_insertion_point(field_get:pg_query.CreateEventTrigStmt.eventname) return _internal_eventname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateEventTrigStmt::set_eventname(ArgT0&& arg0, ArgT... args) { _impl_.eventname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateEventTrigStmt.eventname) } inline std::string* CreateEventTrigStmt::mutable_eventname() { 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 { return _impl_.eventname_.Get(); } inline void CreateEventTrigStmt::_internal_set_eventname(const std::string& value) { _impl_.eventname_.Set(value, GetArenaForAllocation()); } inline std::string* CreateEventTrigStmt::_internal_mutable_eventname() { return _impl_.eventname_.Mutable(GetArenaForAllocation()); } inline std::string* CreateEventTrigStmt::release_eventname() { // @@protoc_insertion_point(field_release:pg_query.CreateEventTrigStmt.eventname) return _impl_.eventname_.Release(); } inline void CreateEventTrigStmt::set_allocated_eventname(std::string* eventname) { if (eventname != nullptr) { } else { } _impl_.eventname_.SetAllocated(eventname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.eventname_.IsDefault()) { _impl_.eventname_.Set("", GetArenaForAllocation()); } #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 _impl_.whenclause_.size(); } inline int CreateEventTrigStmt::whenclause_size() const { return _internal_whenclause_size(); } inline void CreateEventTrigStmt::clear_whenclause() { _impl_.whenclause_.Clear(); } inline ::pg_query::Node* CreateEventTrigStmt::mutable_whenclause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateEventTrigStmt.whenclause) return _impl_.whenclause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateEventTrigStmt::mutable_whenclause() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateEventTrigStmt.whenclause) return &_impl_.whenclause_; } inline const ::pg_query::Node& CreateEventTrigStmt::_internal_whenclause(int index) const { return _impl_.whenclause_.Get(index); } inline const ::pg_query::Node& CreateEventTrigStmt::whenclause(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateEventTrigStmt.whenclause) return _internal_whenclause(index); } inline ::pg_query::Node* CreateEventTrigStmt::_internal_add_whenclause() { return _impl_.whenclause_.Add(); } inline ::pg_query::Node* CreateEventTrigStmt::add_whenclause() { ::pg_query::Node* _add = _internal_add_whenclause(); // @@protoc_insertion_point(field_add:pg_query.CreateEventTrigStmt.whenclause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateEventTrigStmt::whenclause() const { // @@protoc_insertion_point(field_list:pg_query.CreateEventTrigStmt.whenclause) return _impl_.whenclause_; } // repeated .pg_query.Node funcname = 4 [json_name = "funcname"]; inline int CreateEventTrigStmt::_internal_funcname_size() const { return _impl_.funcname_.size(); } inline int CreateEventTrigStmt::funcname_size() const { return _internal_funcname_size(); } inline void CreateEventTrigStmt::clear_funcname() { _impl_.funcname_.Clear(); } inline ::pg_query::Node* CreateEventTrigStmt::mutable_funcname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateEventTrigStmt.funcname) return _impl_.funcname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateEventTrigStmt::mutable_funcname() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateEventTrigStmt.funcname) return &_impl_.funcname_; } inline const ::pg_query::Node& CreateEventTrigStmt::_internal_funcname(int index) const { return _impl_.funcname_.Get(index); } inline const ::pg_query::Node& CreateEventTrigStmt::funcname(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateEventTrigStmt.funcname) return _internal_funcname(index); } inline ::pg_query::Node* CreateEventTrigStmt::_internal_add_funcname() { return _impl_.funcname_.Add(); } inline ::pg_query::Node* CreateEventTrigStmt::add_funcname() { ::pg_query::Node* _add = _internal_add_funcname(); // @@protoc_insertion_point(field_add:pg_query.CreateEventTrigStmt.funcname) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateEventTrigStmt::funcname() const { // @@protoc_insertion_point(field_list:pg_query.CreateEventTrigStmt.funcname) return _impl_.funcname_; } // ------------------------------------------------------------------- // AlterEventTrigStmt // string trigname = 1 [json_name = "trigname"]; inline void AlterEventTrigStmt::clear_trigname() { _impl_.trigname_.ClearToEmpty(); } inline const std::string& AlterEventTrigStmt::trigname() const { // @@protoc_insertion_point(field_get:pg_query.AlterEventTrigStmt.trigname) return _internal_trigname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterEventTrigStmt::set_trigname(ArgT0&& arg0, ArgT... args) { _impl_.trigname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterEventTrigStmt.trigname) } inline std::string* AlterEventTrigStmt::mutable_trigname() { 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 { return _impl_.trigname_.Get(); } inline void AlterEventTrigStmt::_internal_set_trigname(const std::string& value) { _impl_.trigname_.Set(value, GetArenaForAllocation()); } inline std::string* AlterEventTrigStmt::_internal_mutable_trigname() { return _impl_.trigname_.Mutable(GetArenaForAllocation()); } inline std::string* AlterEventTrigStmt::release_trigname() { // @@protoc_insertion_point(field_release:pg_query.AlterEventTrigStmt.trigname) return _impl_.trigname_.Release(); } inline void AlterEventTrigStmt::set_allocated_trigname(std::string* trigname) { if (trigname != nullptr) { } else { } _impl_.trigname_.SetAllocated(trigname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.trigname_.IsDefault()) { _impl_.trigname_.Set("", GetArenaForAllocation()); } #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() { _impl_.tgenabled_.ClearToEmpty(); } inline const std::string& AlterEventTrigStmt::tgenabled() const { // @@protoc_insertion_point(field_get:pg_query.AlterEventTrigStmt.tgenabled) return _internal_tgenabled(); } template inline PROTOBUF_ALWAYS_INLINE void AlterEventTrigStmt::set_tgenabled(ArgT0&& arg0, ArgT... args) { _impl_.tgenabled_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterEventTrigStmt.tgenabled) } inline std::string* AlterEventTrigStmt::mutable_tgenabled() { 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 { return _impl_.tgenabled_.Get(); } inline void AlterEventTrigStmt::_internal_set_tgenabled(const std::string& value) { _impl_.tgenabled_.Set(value, GetArenaForAllocation()); } inline std::string* AlterEventTrigStmt::_internal_mutable_tgenabled() { return _impl_.tgenabled_.Mutable(GetArenaForAllocation()); } inline std::string* AlterEventTrigStmt::release_tgenabled() { // @@protoc_insertion_point(field_release:pg_query.AlterEventTrigStmt.tgenabled) return _impl_.tgenabled_.Release(); } inline void AlterEventTrigStmt::set_allocated_tgenabled(std::string* tgenabled) { if (tgenabled != nullptr) { } else { } _impl_.tgenabled_.SetAllocated(tgenabled, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.tgenabled_.IsDefault()) { _impl_.tgenabled_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.AlterEventTrigStmt.tgenabled) } // ------------------------------------------------------------------- // RefreshMatViewStmt // bool concurrent = 1 [json_name = "concurrent"]; inline void RefreshMatViewStmt::clear_concurrent() { _impl_.concurrent_ = false; } inline bool RefreshMatViewStmt::_internal_concurrent() const { return _impl_.concurrent_; } inline bool RefreshMatViewStmt::concurrent() const { // @@protoc_insertion_point(field_get:pg_query.RefreshMatViewStmt.concurrent) return _internal_concurrent(); } inline void RefreshMatViewStmt::_internal_set_concurrent(bool value) { _impl_.concurrent_ = value; } inline void RefreshMatViewStmt::set_concurrent(bool value) { _internal_set_concurrent(value); // @@protoc_insertion_point(field_set:pg_query.RefreshMatViewStmt.concurrent) } // bool skip_data = 2 [json_name = "skipData"]; inline void RefreshMatViewStmt::clear_skip_data() { _impl_.skip_data_ = false; } inline bool RefreshMatViewStmt::_internal_skip_data() const { return _impl_.skip_data_; } inline bool RefreshMatViewStmt::skip_data() const { // @@protoc_insertion_point(field_get:pg_query.RefreshMatViewStmt.skip_data) return _internal_skip_data(); } inline void RefreshMatViewStmt::_internal_set_skip_data(bool value) { _impl_.skip_data_ = value; } inline void RefreshMatViewStmt::set_skip_data(bool value) { _internal_set_skip_data(value); // @@protoc_insertion_point(field_set:pg_query.RefreshMatViewStmt.skip_data) } // .pg_query.RangeVar relation = 3 [json_name = "relation"]; inline bool RefreshMatViewStmt::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool RefreshMatViewStmt::has_relation() const { return _internal_has_relation(); } inline void RefreshMatViewStmt::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& RefreshMatViewStmt::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RefreshMatViewStmt.relation) return _internal_relation(); } inline void RefreshMatViewStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RefreshMatViewStmt.relation) } inline ::pg_query::RangeVar* RefreshMatViewStmt::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* RefreshMatViewStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.RefreshMatViewStmt.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* RefreshMatViewStmt::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* RefreshMatViewStmt::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.RefreshMatViewStmt.relation) } // ------------------------------------------------------------------- // ReplicaIdentityStmt // string identity_type = 1 [json_name = "identity_type"]; inline void ReplicaIdentityStmt::clear_identity_type() { _impl_.identity_type_.ClearToEmpty(); } inline const std::string& ReplicaIdentityStmt::identity_type() const { // @@protoc_insertion_point(field_get:pg_query.ReplicaIdentityStmt.identity_type) return _internal_identity_type(); } template inline PROTOBUF_ALWAYS_INLINE void ReplicaIdentityStmt::set_identity_type(ArgT0&& arg0, ArgT... args) { _impl_.identity_type_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.ReplicaIdentityStmt.identity_type) } inline std::string* ReplicaIdentityStmt::mutable_identity_type() { 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 { return _impl_.identity_type_.Get(); } inline void ReplicaIdentityStmt::_internal_set_identity_type(const std::string& value) { _impl_.identity_type_.Set(value, GetArenaForAllocation()); } inline std::string* ReplicaIdentityStmt::_internal_mutable_identity_type() { return _impl_.identity_type_.Mutable(GetArenaForAllocation()); } inline std::string* ReplicaIdentityStmt::release_identity_type() { // @@protoc_insertion_point(field_release:pg_query.ReplicaIdentityStmt.identity_type) return _impl_.identity_type_.Release(); } inline void ReplicaIdentityStmt::set_allocated_identity_type(std::string* identity_type) { if (identity_type != nullptr) { } else { } _impl_.identity_type_.SetAllocated(identity_type, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.identity_type_.IsDefault()) { _impl_.identity_type_.Set("", GetArenaForAllocation()); } #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() { _impl_.name_.ClearToEmpty(); } inline const std::string& ReplicaIdentityStmt::name() const { // @@protoc_insertion_point(field_get:pg_query.ReplicaIdentityStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void ReplicaIdentityStmt::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.ReplicaIdentityStmt.name) } inline std::string* ReplicaIdentityStmt::mutable_name() { 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 { return _impl_.name_.Get(); } inline void ReplicaIdentityStmt::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* ReplicaIdentityStmt::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* ReplicaIdentityStmt::release_name() { // @@protoc_insertion_point(field_release:pg_query.ReplicaIdentityStmt.name) return _impl_.name_.Release(); } inline void ReplicaIdentityStmt::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.ReplicaIdentityStmt.name) } // ------------------------------------------------------------------- // AlterSystemStmt // .pg_query.VariableSetStmt setstmt = 1 [json_name = "setstmt"]; inline bool AlterSystemStmt::_internal_has_setstmt() const { return this != internal_default_instance() && _impl_.setstmt_ != nullptr; } inline bool AlterSystemStmt::has_setstmt() const { return _internal_has_setstmt(); } inline void AlterSystemStmt::clear_setstmt() { if (GetArenaForAllocation() == nullptr && _impl_.setstmt_ != nullptr) { delete _impl_.setstmt_; } _impl_.setstmt_ = nullptr; } inline const ::pg_query::VariableSetStmt& AlterSystemStmt::_internal_setstmt() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterSystemStmt.setstmt) return _internal_setstmt(); } inline void AlterSystemStmt::unsafe_arena_set_allocated_setstmt( ::pg_query::VariableSetStmt* setstmt) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.setstmt_); } _impl_.setstmt_ = setstmt; if (setstmt) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterSystemStmt.setstmt) } inline ::pg_query::VariableSetStmt* AlterSystemStmt::release_setstmt() { ::pg_query::VariableSetStmt* temp = _impl_.setstmt_; _impl_.setstmt_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::VariableSetStmt* AlterSystemStmt::unsafe_arena_release_setstmt() { // @@protoc_insertion_point(field_release:pg_query.AlterSystemStmt.setstmt) ::pg_query::VariableSetStmt* temp = _impl_.setstmt_; _impl_.setstmt_ = nullptr; return temp; } inline ::pg_query::VariableSetStmt* AlterSystemStmt::_internal_mutable_setstmt() { if (_impl_.setstmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::VariableSetStmt>(GetArenaForAllocation()); _impl_.setstmt_ = p; } return _impl_.setstmt_; } inline ::pg_query::VariableSetStmt* AlterSystemStmt::mutable_setstmt() { ::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* setstmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.setstmt_; } if (setstmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(setstmt); if (message_arena != submessage_arena) { setstmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, setstmt, submessage_arena); } } else { } _impl_.setstmt_ = setstmt; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterSystemStmt.setstmt) } // ------------------------------------------------------------------- // CreatePolicyStmt // string policy_name = 1 [json_name = "policy_name"]; inline void CreatePolicyStmt::clear_policy_name() { _impl_.policy_name_.ClearToEmpty(); } inline const std::string& CreatePolicyStmt::policy_name() const { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.policy_name) return _internal_policy_name(); } template inline PROTOBUF_ALWAYS_INLINE void CreatePolicyStmt::set_policy_name(ArgT0&& arg0, ArgT... args) { _impl_.policy_name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreatePolicyStmt.policy_name) } inline std::string* CreatePolicyStmt::mutable_policy_name() { 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 { return _impl_.policy_name_.Get(); } inline void CreatePolicyStmt::_internal_set_policy_name(const std::string& value) { _impl_.policy_name_.Set(value, GetArenaForAllocation()); } inline std::string* CreatePolicyStmt::_internal_mutable_policy_name() { return _impl_.policy_name_.Mutable(GetArenaForAllocation()); } inline std::string* CreatePolicyStmt::release_policy_name() { // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.policy_name) return _impl_.policy_name_.Release(); } inline void CreatePolicyStmt::set_allocated_policy_name(std::string* policy_name) { if (policy_name != nullptr) { } else { } _impl_.policy_name_.SetAllocated(policy_name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.policy_name_.IsDefault()) { _impl_.policy_name_.Set("", GetArenaForAllocation()); } #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::_internal_has_table() const { return this != internal_default_instance() && _impl_.table_ != nullptr; } inline bool CreatePolicyStmt::has_table() const { return _internal_has_table(); } inline void CreatePolicyStmt::clear_table() { if (GetArenaForAllocation() == nullptr && _impl_.table_ != nullptr) { delete _impl_.table_; } _impl_.table_ = nullptr; } inline const ::pg_query::RangeVar& CreatePolicyStmt::_internal_table() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.table) return _internal_table(); } inline void CreatePolicyStmt::unsafe_arena_set_allocated_table( ::pg_query::RangeVar* table) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.table_); } _impl_.table_ = table; if (table) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreatePolicyStmt.table) } inline ::pg_query::RangeVar* CreatePolicyStmt::release_table() { ::pg_query::RangeVar* temp = _impl_.table_; _impl_.table_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* CreatePolicyStmt::unsafe_arena_release_table() { // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.table) ::pg_query::RangeVar* temp = _impl_.table_; _impl_.table_ = nullptr; return temp; } inline ::pg_query::RangeVar* CreatePolicyStmt::_internal_mutable_table() { if (_impl_.table_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.table_ = p; } return _impl_.table_; } inline ::pg_query::RangeVar* CreatePolicyStmt::mutable_table() { ::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* table) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.table_; } if (table) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(table); if (message_arena != submessage_arena) { table = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, table, submessage_arena); } } else { } _impl_.table_ = table; // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePolicyStmt.table) } // string cmd_name = 3 [json_name = "cmd_name"]; inline void CreatePolicyStmt::clear_cmd_name() { _impl_.cmd_name_.ClearToEmpty(); } inline const std::string& CreatePolicyStmt::cmd_name() const { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.cmd_name) return _internal_cmd_name(); } template inline PROTOBUF_ALWAYS_INLINE void CreatePolicyStmt::set_cmd_name(ArgT0&& arg0, ArgT... args) { _impl_.cmd_name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreatePolicyStmt.cmd_name) } inline std::string* CreatePolicyStmt::mutable_cmd_name() { 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 { return _impl_.cmd_name_.Get(); } inline void CreatePolicyStmt::_internal_set_cmd_name(const std::string& value) { _impl_.cmd_name_.Set(value, GetArenaForAllocation()); } inline std::string* CreatePolicyStmt::_internal_mutable_cmd_name() { return _impl_.cmd_name_.Mutable(GetArenaForAllocation()); } inline std::string* CreatePolicyStmt::release_cmd_name() { // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.cmd_name) return _impl_.cmd_name_.Release(); } inline void CreatePolicyStmt::set_allocated_cmd_name(std::string* cmd_name) { if (cmd_name != nullptr) { } else { } _impl_.cmd_name_.SetAllocated(cmd_name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.cmd_name_.IsDefault()) { _impl_.cmd_name_.Set("", GetArenaForAllocation()); } #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() { _impl_.permissive_ = false; } inline bool CreatePolicyStmt::_internal_permissive() const { return _impl_.permissive_; } inline bool CreatePolicyStmt::permissive() const { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.permissive) return _internal_permissive(); } inline void CreatePolicyStmt::_internal_set_permissive(bool value) { _impl_.permissive_ = value; } inline void CreatePolicyStmt::set_permissive(bool value) { _internal_set_permissive(value); // @@protoc_insertion_point(field_set:pg_query.CreatePolicyStmt.permissive) } // repeated .pg_query.Node roles = 5 [json_name = "roles"]; inline int CreatePolicyStmt::_internal_roles_size() const { return _impl_.roles_.size(); } inline int CreatePolicyStmt::roles_size() const { return _internal_roles_size(); } inline void CreatePolicyStmt::clear_roles() { _impl_.roles_.Clear(); } inline ::pg_query::Node* CreatePolicyStmt::mutable_roles(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.roles) return _impl_.roles_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreatePolicyStmt::mutable_roles() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePolicyStmt.roles) return &_impl_.roles_; } inline const ::pg_query::Node& CreatePolicyStmt::_internal_roles(int index) const { return _impl_.roles_.Get(index); } inline const ::pg_query::Node& CreatePolicyStmt::roles(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.roles) return _internal_roles(index); } inline ::pg_query::Node* CreatePolicyStmt::_internal_add_roles() { return _impl_.roles_.Add(); } inline ::pg_query::Node* CreatePolicyStmt::add_roles() { ::pg_query::Node* _add = _internal_add_roles(); // @@protoc_insertion_point(field_add:pg_query.CreatePolicyStmt.roles) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreatePolicyStmt::roles() const { // @@protoc_insertion_point(field_list:pg_query.CreatePolicyStmt.roles) return _impl_.roles_; } // .pg_query.Node qual = 6 [json_name = "qual"]; inline bool CreatePolicyStmt::_internal_has_qual() const { return this != internal_default_instance() && _impl_.qual_ != nullptr; } inline bool CreatePolicyStmt::has_qual() const { return _internal_has_qual(); } inline void CreatePolicyStmt::clear_qual() { if (GetArenaForAllocation() == nullptr && _impl_.qual_ != nullptr) { delete _impl_.qual_; } _impl_.qual_ = nullptr; } inline const ::pg_query::Node& CreatePolicyStmt::_internal_qual() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.qual) return _internal_qual(); } inline void CreatePolicyStmt::unsafe_arena_set_allocated_qual( ::pg_query::Node* qual) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.qual_); } _impl_.qual_ = qual; if (qual) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreatePolicyStmt.qual) } inline ::pg_query::Node* CreatePolicyStmt::release_qual() { ::pg_query::Node* temp = _impl_.qual_; _impl_.qual_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CreatePolicyStmt::unsafe_arena_release_qual() { // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.qual) ::pg_query::Node* temp = _impl_.qual_; _impl_.qual_ = nullptr; return temp; } inline ::pg_query::Node* CreatePolicyStmt::_internal_mutable_qual() { if (_impl_.qual_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.qual_ = p; } return _impl_.qual_; } inline ::pg_query::Node* CreatePolicyStmt::mutable_qual() { ::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* qual) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.qual_; } if (qual) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(qual); if (message_arena != submessage_arena) { qual = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, qual, submessage_arena); } } else { } _impl_.qual_ = qual; // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePolicyStmt.qual) } // .pg_query.Node with_check = 7 [json_name = "with_check"]; inline bool CreatePolicyStmt::_internal_has_with_check() const { return this != internal_default_instance() && _impl_.with_check_ != nullptr; } inline bool CreatePolicyStmt::has_with_check() const { return _internal_has_with_check(); } inline void CreatePolicyStmt::clear_with_check() { if (GetArenaForAllocation() == nullptr && _impl_.with_check_ != nullptr) { delete _impl_.with_check_; } _impl_.with_check_ = nullptr; } inline const ::pg_query::Node& CreatePolicyStmt::_internal_with_check() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.with_check) return _internal_with_check(); } inline void CreatePolicyStmt::unsafe_arena_set_allocated_with_check( ::pg_query::Node* with_check) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.with_check_); } _impl_.with_check_ = with_check; if (with_check) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreatePolicyStmt.with_check) } inline ::pg_query::Node* CreatePolicyStmt::release_with_check() { ::pg_query::Node* temp = _impl_.with_check_; _impl_.with_check_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CreatePolicyStmt::unsafe_arena_release_with_check() { // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.with_check) ::pg_query::Node* temp = _impl_.with_check_; _impl_.with_check_ = nullptr; return temp; } inline ::pg_query::Node* CreatePolicyStmt::_internal_mutable_with_check() { if (_impl_.with_check_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.with_check_ = p; } return _impl_.with_check_; } inline ::pg_query::Node* CreatePolicyStmt::mutable_with_check() { ::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* with_check) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.with_check_; } if (with_check) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(with_check); if (message_arena != submessage_arena) { with_check = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, with_check, submessage_arena); } } else { } _impl_.with_check_ = with_check; // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePolicyStmt.with_check) } // ------------------------------------------------------------------- // AlterPolicyStmt // string policy_name = 1 [json_name = "policy_name"]; inline void AlterPolicyStmt::clear_policy_name() { _impl_.policy_name_.ClearToEmpty(); } inline const std::string& AlterPolicyStmt::policy_name() const { // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.policy_name) return _internal_policy_name(); } template inline PROTOBUF_ALWAYS_INLINE void AlterPolicyStmt::set_policy_name(ArgT0&& arg0, ArgT... args) { _impl_.policy_name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterPolicyStmt.policy_name) } inline std::string* AlterPolicyStmt::mutable_policy_name() { 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 { return _impl_.policy_name_.Get(); } inline void AlterPolicyStmt::_internal_set_policy_name(const std::string& value) { _impl_.policy_name_.Set(value, GetArenaForAllocation()); } inline std::string* AlterPolicyStmt::_internal_mutable_policy_name() { return _impl_.policy_name_.Mutable(GetArenaForAllocation()); } inline std::string* AlterPolicyStmt::release_policy_name() { // @@protoc_insertion_point(field_release:pg_query.AlterPolicyStmt.policy_name) return _impl_.policy_name_.Release(); } inline void AlterPolicyStmt::set_allocated_policy_name(std::string* policy_name) { if (policy_name != nullptr) { } else { } _impl_.policy_name_.SetAllocated(policy_name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.policy_name_.IsDefault()) { _impl_.policy_name_.Set("", GetArenaForAllocation()); } #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::_internal_has_table() const { return this != internal_default_instance() && _impl_.table_ != nullptr; } inline bool AlterPolicyStmt::has_table() const { return _internal_has_table(); } inline void AlterPolicyStmt::clear_table() { if (GetArenaForAllocation() == nullptr && _impl_.table_ != nullptr) { delete _impl_.table_; } _impl_.table_ = nullptr; } inline const ::pg_query::RangeVar& AlterPolicyStmt::_internal_table() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.table) return _internal_table(); } inline void AlterPolicyStmt::unsafe_arena_set_allocated_table( ::pg_query::RangeVar* table) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.table_); } _impl_.table_ = table; if (table) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterPolicyStmt.table) } inline ::pg_query::RangeVar* AlterPolicyStmt::release_table() { ::pg_query::RangeVar* temp = _impl_.table_; _impl_.table_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* AlterPolicyStmt::unsafe_arena_release_table() { // @@protoc_insertion_point(field_release:pg_query.AlterPolicyStmt.table) ::pg_query::RangeVar* temp = _impl_.table_; _impl_.table_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterPolicyStmt::_internal_mutable_table() { if (_impl_.table_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.table_ = p; } return _impl_.table_; } inline ::pg_query::RangeVar* AlterPolicyStmt::mutable_table() { ::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* table) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.table_; } if (table) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(table); if (message_arena != submessage_arena) { table = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, table, submessage_arena); } } else { } _impl_.table_ = table; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterPolicyStmt.table) } // repeated .pg_query.Node roles = 3 [json_name = "roles"]; inline int AlterPolicyStmt::_internal_roles_size() const { return _impl_.roles_.size(); } inline int AlterPolicyStmt::roles_size() const { return _internal_roles_size(); } inline void AlterPolicyStmt::clear_roles() { _impl_.roles_.Clear(); } inline ::pg_query::Node* AlterPolicyStmt::mutable_roles(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterPolicyStmt.roles) return _impl_.roles_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterPolicyStmt::mutable_roles() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterPolicyStmt.roles) return &_impl_.roles_; } inline const ::pg_query::Node& AlterPolicyStmt::_internal_roles(int index) const { return _impl_.roles_.Get(index); } inline const ::pg_query::Node& AlterPolicyStmt::roles(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.roles) return _internal_roles(index); } inline ::pg_query::Node* AlterPolicyStmt::_internal_add_roles() { return _impl_.roles_.Add(); } inline ::pg_query::Node* AlterPolicyStmt::add_roles() { ::pg_query::Node* _add = _internal_add_roles(); // @@protoc_insertion_point(field_add:pg_query.AlterPolicyStmt.roles) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterPolicyStmt::roles() const { // @@protoc_insertion_point(field_list:pg_query.AlterPolicyStmt.roles) return _impl_.roles_; } // .pg_query.Node qual = 4 [json_name = "qual"]; inline bool AlterPolicyStmt::_internal_has_qual() const { return this != internal_default_instance() && _impl_.qual_ != nullptr; } inline bool AlterPolicyStmt::has_qual() const { return _internal_has_qual(); } inline void AlterPolicyStmt::clear_qual() { if (GetArenaForAllocation() == nullptr && _impl_.qual_ != nullptr) { delete _impl_.qual_; } _impl_.qual_ = nullptr; } inline const ::pg_query::Node& AlterPolicyStmt::_internal_qual() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.qual) return _internal_qual(); } inline void AlterPolicyStmt::unsafe_arena_set_allocated_qual( ::pg_query::Node* qual) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.qual_); } _impl_.qual_ = qual; if (qual) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterPolicyStmt.qual) } inline ::pg_query::Node* AlterPolicyStmt::release_qual() { ::pg_query::Node* temp = _impl_.qual_; _impl_.qual_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* AlterPolicyStmt::unsafe_arena_release_qual() { // @@protoc_insertion_point(field_release:pg_query.AlterPolicyStmt.qual) ::pg_query::Node* temp = _impl_.qual_; _impl_.qual_ = nullptr; return temp; } inline ::pg_query::Node* AlterPolicyStmt::_internal_mutable_qual() { if (_impl_.qual_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.qual_ = p; } return _impl_.qual_; } inline ::pg_query::Node* AlterPolicyStmt::mutable_qual() { ::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* qual) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.qual_; } if (qual) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(qual); if (message_arena != submessage_arena) { qual = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, qual, submessage_arena); } } else { } _impl_.qual_ = qual; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterPolicyStmt.qual) } // .pg_query.Node with_check = 5 [json_name = "with_check"]; inline bool AlterPolicyStmt::_internal_has_with_check() const { return this != internal_default_instance() && _impl_.with_check_ != nullptr; } inline bool AlterPolicyStmt::has_with_check() const { return _internal_has_with_check(); } inline void AlterPolicyStmt::clear_with_check() { if (GetArenaForAllocation() == nullptr && _impl_.with_check_ != nullptr) { delete _impl_.with_check_; } _impl_.with_check_ = nullptr; } inline const ::pg_query::Node& AlterPolicyStmt::_internal_with_check() const { 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 { // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.with_check) return _internal_with_check(); } inline void AlterPolicyStmt::unsafe_arena_set_allocated_with_check( ::pg_query::Node* with_check) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.with_check_); } _impl_.with_check_ = with_check; if (with_check) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterPolicyStmt.with_check) } inline ::pg_query::Node* AlterPolicyStmt::release_with_check() { ::pg_query::Node* temp = _impl_.with_check_; _impl_.with_check_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* AlterPolicyStmt::unsafe_arena_release_with_check() { // @@protoc_insertion_point(field_release:pg_query.AlterPolicyStmt.with_check) ::pg_query::Node* temp = _impl_.with_check_; _impl_.with_check_ = nullptr; return temp; } inline ::pg_query::Node* AlterPolicyStmt::_internal_mutable_with_check() { if (_impl_.with_check_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.with_check_ = p; } return _impl_.with_check_; } inline ::pg_query::Node* AlterPolicyStmt::mutable_with_check() { ::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* with_check) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.with_check_; } if (with_check) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(with_check); if (message_arena != submessage_arena) { with_check = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, with_check, submessage_arena); } } else { } _impl_.with_check_ = with_check; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterPolicyStmt.with_check) } // ------------------------------------------------------------------- // CreateTransformStmt // bool replace = 1 [json_name = "replace"]; inline void CreateTransformStmt::clear_replace() { _impl_.replace_ = false; } inline bool CreateTransformStmt::_internal_replace() const { return _impl_.replace_; } inline bool CreateTransformStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.replace) return _internal_replace(); } inline void CreateTransformStmt::_internal_set_replace(bool value) { _impl_.replace_ = value; } inline void CreateTransformStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.CreateTransformStmt.replace) } // .pg_query.TypeName type_name = 2 [json_name = "type_name"]; inline bool CreateTransformStmt::_internal_has_type_name() const { return this != internal_default_instance() && _impl_.type_name_ != nullptr; } inline bool CreateTransformStmt::has_type_name() const { return _internal_has_type_name(); } inline void CreateTransformStmt::clear_type_name() { if (GetArenaForAllocation() == nullptr && _impl_.type_name_ != nullptr) { delete _impl_.type_name_; } _impl_.type_name_ = nullptr; } inline const ::pg_query::TypeName& CreateTransformStmt::_internal_type_name() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.type_name) return _internal_type_name(); } inline void CreateTransformStmt::unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.type_name_); } _impl_.type_name_ = type_name; if (type_name) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTransformStmt.type_name) } inline ::pg_query::TypeName* CreateTransformStmt::release_type_name() { ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::TypeName* CreateTransformStmt::unsafe_arena_release_type_name() { // @@protoc_insertion_point(field_release:pg_query.CreateTransformStmt.type_name) ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateTransformStmt::_internal_mutable_type_name() { if (_impl_.type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArenaForAllocation()); _impl_.type_name_ = p; } return _impl_.type_name_; } inline ::pg_query::TypeName* CreateTransformStmt::mutable_type_name() { ::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* type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.type_name_; } if (type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(type_name); if (message_arena != submessage_arena) { type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, type_name, submessage_arena); } } else { } _impl_.type_name_ = type_name; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTransformStmt.type_name) } // string lang = 3 [json_name = "lang"]; inline void CreateTransformStmt::clear_lang() { _impl_.lang_.ClearToEmpty(); } inline const std::string& CreateTransformStmt::lang() const { // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.lang) return _internal_lang(); } template inline PROTOBUF_ALWAYS_INLINE void CreateTransformStmt::set_lang(ArgT0&& arg0, ArgT... args) { _impl_.lang_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateTransformStmt.lang) } inline std::string* CreateTransformStmt::mutable_lang() { 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 { return _impl_.lang_.Get(); } inline void CreateTransformStmt::_internal_set_lang(const std::string& value) { _impl_.lang_.Set(value, GetArenaForAllocation()); } inline std::string* CreateTransformStmt::_internal_mutable_lang() { return _impl_.lang_.Mutable(GetArenaForAllocation()); } inline std::string* CreateTransformStmt::release_lang() { // @@protoc_insertion_point(field_release:pg_query.CreateTransformStmt.lang) return _impl_.lang_.Release(); } inline void CreateTransformStmt::set_allocated_lang(std::string* lang) { if (lang != nullptr) { } else { } _impl_.lang_.SetAllocated(lang, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.lang_.IsDefault()) { _impl_.lang_.Set("", GetArenaForAllocation()); } #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::_internal_has_fromsql() const { return this != internal_default_instance() && _impl_.fromsql_ != nullptr; } inline bool CreateTransformStmt::has_fromsql() const { return _internal_has_fromsql(); } inline void CreateTransformStmt::clear_fromsql() { if (GetArenaForAllocation() == nullptr && _impl_.fromsql_ != nullptr) { delete _impl_.fromsql_; } _impl_.fromsql_ = nullptr; } inline const ::pg_query::ObjectWithArgs& CreateTransformStmt::_internal_fromsql() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.fromsql) return _internal_fromsql(); } inline void CreateTransformStmt::unsafe_arena_set_allocated_fromsql( ::pg_query::ObjectWithArgs* fromsql) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.fromsql_); } _impl_.fromsql_ = fromsql; if (fromsql) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTransformStmt.fromsql) } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::release_fromsql() { ::pg_query::ObjectWithArgs* temp = _impl_.fromsql_; _impl_.fromsql_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::unsafe_arena_release_fromsql() { // @@protoc_insertion_point(field_release:pg_query.CreateTransformStmt.fromsql) ::pg_query::ObjectWithArgs* temp = _impl_.fromsql_; _impl_.fromsql_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::_internal_mutable_fromsql() { if (_impl_.fromsql_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArenaForAllocation()); _impl_.fromsql_ = p; } return _impl_.fromsql_; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::mutable_fromsql() { ::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* fromsql) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.fromsql_; } if (fromsql) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(fromsql); if (message_arena != submessage_arena) { fromsql = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, fromsql, submessage_arena); } } else { } _impl_.fromsql_ = fromsql; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTransformStmt.fromsql) } // .pg_query.ObjectWithArgs tosql = 5 [json_name = "tosql"]; inline bool CreateTransformStmt::_internal_has_tosql() const { return this != internal_default_instance() && _impl_.tosql_ != nullptr; } inline bool CreateTransformStmt::has_tosql() const { return _internal_has_tosql(); } inline void CreateTransformStmt::clear_tosql() { if (GetArenaForAllocation() == nullptr && _impl_.tosql_ != nullptr) { delete _impl_.tosql_; } _impl_.tosql_ = nullptr; } inline const ::pg_query::ObjectWithArgs& CreateTransformStmt::_internal_tosql() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.tosql) return _internal_tosql(); } inline void CreateTransformStmt::unsafe_arena_set_allocated_tosql( ::pg_query::ObjectWithArgs* tosql) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.tosql_); } _impl_.tosql_ = tosql; if (tosql) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTransformStmt.tosql) } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::release_tosql() { ::pg_query::ObjectWithArgs* temp = _impl_.tosql_; _impl_.tosql_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::unsafe_arena_release_tosql() { // @@protoc_insertion_point(field_release:pg_query.CreateTransformStmt.tosql) ::pg_query::ObjectWithArgs* temp = _impl_.tosql_; _impl_.tosql_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::_internal_mutable_tosql() { if (_impl_.tosql_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArenaForAllocation()); _impl_.tosql_ = p; } return _impl_.tosql_; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::mutable_tosql() { ::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* tosql) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.tosql_; } if (tosql) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(tosql); if (message_arena != submessage_arena) { tosql = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, tosql, submessage_arena); } } else { } _impl_.tosql_ = tosql; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTransformStmt.tosql) } // ------------------------------------------------------------------- // CreateAmStmt // string amname = 1 [json_name = "amname"]; inline void CreateAmStmt::clear_amname() { _impl_.amname_.ClearToEmpty(); } inline const std::string& CreateAmStmt::amname() const { // @@protoc_insertion_point(field_get:pg_query.CreateAmStmt.amname) return _internal_amname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateAmStmt::set_amname(ArgT0&& arg0, ArgT... args) { _impl_.amname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateAmStmt.amname) } inline std::string* CreateAmStmt::mutable_amname() { 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 { return _impl_.amname_.Get(); } inline void CreateAmStmt::_internal_set_amname(const std::string& value) { _impl_.amname_.Set(value, GetArenaForAllocation()); } inline std::string* CreateAmStmt::_internal_mutable_amname() { return _impl_.amname_.Mutable(GetArenaForAllocation()); } inline std::string* CreateAmStmt::release_amname() { // @@protoc_insertion_point(field_release:pg_query.CreateAmStmt.amname) return _impl_.amname_.Release(); } inline void CreateAmStmt::set_allocated_amname(std::string* amname) { if (amname != nullptr) { } else { } _impl_.amname_.SetAllocated(amname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.amname_.IsDefault()) { _impl_.amname_.Set("", GetArenaForAllocation()); } #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 _impl_.handler_name_.size(); } inline int CreateAmStmt::handler_name_size() const { return _internal_handler_name_size(); } inline void CreateAmStmt::clear_handler_name() { _impl_.handler_name_.Clear(); } inline ::pg_query::Node* CreateAmStmt::mutable_handler_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateAmStmt.handler_name) return _impl_.handler_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateAmStmt::mutable_handler_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateAmStmt.handler_name) return &_impl_.handler_name_; } inline const ::pg_query::Node& CreateAmStmt::_internal_handler_name(int index) const { return _impl_.handler_name_.Get(index); } inline const ::pg_query::Node& CreateAmStmt::handler_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateAmStmt.handler_name) return _internal_handler_name(index); } inline ::pg_query::Node* CreateAmStmt::_internal_add_handler_name() { return _impl_.handler_name_.Add(); } inline ::pg_query::Node* CreateAmStmt::add_handler_name() { ::pg_query::Node* _add = _internal_add_handler_name(); // @@protoc_insertion_point(field_add:pg_query.CreateAmStmt.handler_name) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateAmStmt::handler_name() const { // @@protoc_insertion_point(field_list:pg_query.CreateAmStmt.handler_name) return _impl_.handler_name_; } // string amtype = 3 [json_name = "amtype"]; inline void CreateAmStmt::clear_amtype() { _impl_.amtype_.ClearToEmpty(); } inline const std::string& CreateAmStmt::amtype() const { // @@protoc_insertion_point(field_get:pg_query.CreateAmStmt.amtype) return _internal_amtype(); } template inline PROTOBUF_ALWAYS_INLINE void CreateAmStmt::set_amtype(ArgT0&& arg0, ArgT... args) { _impl_.amtype_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateAmStmt.amtype) } inline std::string* CreateAmStmt::mutable_amtype() { 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 { return _impl_.amtype_.Get(); } inline void CreateAmStmt::_internal_set_amtype(const std::string& value) { _impl_.amtype_.Set(value, GetArenaForAllocation()); } inline std::string* CreateAmStmt::_internal_mutable_amtype() { return _impl_.amtype_.Mutable(GetArenaForAllocation()); } inline std::string* CreateAmStmt::release_amtype() { // @@protoc_insertion_point(field_release:pg_query.CreateAmStmt.amtype) return _impl_.amtype_.Release(); } inline void CreateAmStmt::set_allocated_amtype(std::string* amtype) { if (amtype != nullptr) { } else { } _impl_.amtype_.SetAllocated(amtype, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.amtype_.IsDefault()) { _impl_.amtype_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CreateAmStmt.amtype) } // ------------------------------------------------------------------- // CreatePublicationStmt // string pubname = 1 [json_name = "pubname"]; inline void CreatePublicationStmt::clear_pubname() { _impl_.pubname_.ClearToEmpty(); } inline const std::string& CreatePublicationStmt::pubname() const { // @@protoc_insertion_point(field_get:pg_query.CreatePublicationStmt.pubname) return _internal_pubname(); } template inline PROTOBUF_ALWAYS_INLINE void CreatePublicationStmt::set_pubname(ArgT0&& arg0, ArgT... args) { _impl_.pubname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreatePublicationStmt.pubname) } inline std::string* CreatePublicationStmt::mutable_pubname() { 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 { return _impl_.pubname_.Get(); } inline void CreatePublicationStmt::_internal_set_pubname(const std::string& value) { _impl_.pubname_.Set(value, GetArenaForAllocation()); } inline std::string* CreatePublicationStmt::_internal_mutable_pubname() { return _impl_.pubname_.Mutable(GetArenaForAllocation()); } inline std::string* CreatePublicationStmt::release_pubname() { // @@protoc_insertion_point(field_release:pg_query.CreatePublicationStmt.pubname) return _impl_.pubname_.Release(); } inline void CreatePublicationStmt::set_allocated_pubname(std::string* pubname) { if (pubname != nullptr) { } else { } _impl_.pubname_.SetAllocated(pubname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.pubname_.IsDefault()) { _impl_.pubname_.Set("", GetArenaForAllocation()); } #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 _impl_.options_.size(); } inline int CreatePublicationStmt::options_size() const { return _internal_options_size(); } inline void CreatePublicationStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* CreatePublicationStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreatePublicationStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreatePublicationStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePublicationStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& CreatePublicationStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& CreatePublicationStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreatePublicationStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreatePublicationStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* CreatePublicationStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.CreatePublicationStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreatePublicationStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreatePublicationStmt.options) return _impl_.options_; } // repeated .pg_query.Node pubobjects = 3 [json_name = "pubobjects"]; inline int CreatePublicationStmt::_internal_pubobjects_size() const { return _impl_.pubobjects_.size(); } inline int CreatePublicationStmt::pubobjects_size() const { return _internal_pubobjects_size(); } inline void CreatePublicationStmt::clear_pubobjects() { _impl_.pubobjects_.Clear(); } inline ::pg_query::Node* CreatePublicationStmt::mutable_pubobjects(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreatePublicationStmt.pubobjects) return _impl_.pubobjects_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreatePublicationStmt::mutable_pubobjects() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePublicationStmt.pubobjects) return &_impl_.pubobjects_; } inline const ::pg_query::Node& CreatePublicationStmt::_internal_pubobjects(int index) const { return _impl_.pubobjects_.Get(index); } inline const ::pg_query::Node& CreatePublicationStmt::pubobjects(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreatePublicationStmt.pubobjects) return _internal_pubobjects(index); } inline ::pg_query::Node* CreatePublicationStmt::_internal_add_pubobjects() { return _impl_.pubobjects_.Add(); } inline ::pg_query::Node* CreatePublicationStmt::add_pubobjects() { ::pg_query::Node* _add = _internal_add_pubobjects(); // @@protoc_insertion_point(field_add:pg_query.CreatePublicationStmt.pubobjects) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreatePublicationStmt::pubobjects() const { // @@protoc_insertion_point(field_list:pg_query.CreatePublicationStmt.pubobjects) return _impl_.pubobjects_; } // bool for_all_tables = 4 [json_name = "for_all_tables"]; inline void CreatePublicationStmt::clear_for_all_tables() { _impl_.for_all_tables_ = false; } inline bool CreatePublicationStmt::_internal_for_all_tables() const { return _impl_.for_all_tables_; } inline bool CreatePublicationStmt::for_all_tables() const { // @@protoc_insertion_point(field_get:pg_query.CreatePublicationStmt.for_all_tables) return _internal_for_all_tables(); } inline void CreatePublicationStmt::_internal_set_for_all_tables(bool value) { _impl_.for_all_tables_ = value; } inline void CreatePublicationStmt::set_for_all_tables(bool value) { _internal_set_for_all_tables(value); // @@protoc_insertion_point(field_set:pg_query.CreatePublicationStmt.for_all_tables) } // ------------------------------------------------------------------- // AlterPublicationStmt // string pubname = 1 [json_name = "pubname"]; inline void AlterPublicationStmt::clear_pubname() { _impl_.pubname_.ClearToEmpty(); } inline const std::string& AlterPublicationStmt::pubname() const { // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.pubname) return _internal_pubname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterPublicationStmt::set_pubname(ArgT0&& arg0, ArgT... args) { _impl_.pubname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterPublicationStmt.pubname) } inline std::string* AlterPublicationStmt::mutable_pubname() { 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 { return _impl_.pubname_.Get(); } inline void AlterPublicationStmt::_internal_set_pubname(const std::string& value) { _impl_.pubname_.Set(value, GetArenaForAllocation()); } inline std::string* AlterPublicationStmt::_internal_mutable_pubname() { return _impl_.pubname_.Mutable(GetArenaForAllocation()); } inline std::string* AlterPublicationStmt::release_pubname() { // @@protoc_insertion_point(field_release:pg_query.AlterPublicationStmt.pubname) return _impl_.pubname_.Release(); } inline void AlterPublicationStmt::set_allocated_pubname(std::string* pubname) { if (pubname != nullptr) { } else { } _impl_.pubname_.SetAllocated(pubname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.pubname_.IsDefault()) { _impl_.pubname_.Set("", GetArenaForAllocation()); } #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 _impl_.options_.size(); } inline int AlterPublicationStmt::options_size() const { return _internal_options_size(); } inline void AlterPublicationStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* AlterPublicationStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterPublicationStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterPublicationStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterPublicationStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& AlterPublicationStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& AlterPublicationStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterPublicationStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* AlterPublicationStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.AlterPublicationStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterPublicationStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterPublicationStmt.options) return _impl_.options_; } // repeated .pg_query.Node pubobjects = 3 [json_name = "pubobjects"]; inline int AlterPublicationStmt::_internal_pubobjects_size() const { return _impl_.pubobjects_.size(); } inline int AlterPublicationStmt::pubobjects_size() const { return _internal_pubobjects_size(); } inline void AlterPublicationStmt::clear_pubobjects() { _impl_.pubobjects_.Clear(); } inline ::pg_query::Node* AlterPublicationStmt::mutable_pubobjects(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterPublicationStmt.pubobjects) return _impl_.pubobjects_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterPublicationStmt::mutable_pubobjects() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterPublicationStmt.pubobjects) return &_impl_.pubobjects_; } inline const ::pg_query::Node& AlterPublicationStmt::_internal_pubobjects(int index) const { return _impl_.pubobjects_.Get(index); } inline const ::pg_query::Node& AlterPublicationStmt::pubobjects(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.pubobjects) return _internal_pubobjects(index); } inline ::pg_query::Node* AlterPublicationStmt::_internal_add_pubobjects() { return _impl_.pubobjects_.Add(); } inline ::pg_query::Node* AlterPublicationStmt::add_pubobjects() { ::pg_query::Node* _add = _internal_add_pubobjects(); // @@protoc_insertion_point(field_add:pg_query.AlterPublicationStmt.pubobjects) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterPublicationStmt::pubobjects() const { // @@protoc_insertion_point(field_list:pg_query.AlterPublicationStmt.pubobjects) return _impl_.pubobjects_; } // bool for_all_tables = 4 [json_name = "for_all_tables"]; inline void AlterPublicationStmt::clear_for_all_tables() { _impl_.for_all_tables_ = false; } inline bool AlterPublicationStmt::_internal_for_all_tables() const { return _impl_.for_all_tables_; } inline bool AlterPublicationStmt::for_all_tables() const { // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.for_all_tables) return _internal_for_all_tables(); } inline void AlterPublicationStmt::_internal_set_for_all_tables(bool value) { _impl_.for_all_tables_ = value; } inline void AlterPublicationStmt::set_for_all_tables(bool value) { _internal_set_for_all_tables(value); // @@protoc_insertion_point(field_set:pg_query.AlterPublicationStmt.for_all_tables) } // .pg_query.AlterPublicationAction action = 5 [json_name = "action"]; inline void AlterPublicationStmt::clear_action() { _impl_.action_ = 0; } inline ::pg_query::AlterPublicationAction AlterPublicationStmt::_internal_action() const { return static_cast< ::pg_query::AlterPublicationAction >(_impl_.action_); } inline ::pg_query::AlterPublicationAction AlterPublicationStmt::action() const { // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.action) return _internal_action(); } inline void AlterPublicationStmt::_internal_set_action(::pg_query::AlterPublicationAction value) { _impl_.action_ = value; } inline void AlterPublicationStmt::set_action(::pg_query::AlterPublicationAction value) { _internal_set_action(value); // @@protoc_insertion_point(field_set:pg_query.AlterPublicationStmt.action) } // ------------------------------------------------------------------- // CreateSubscriptionStmt // string subname = 1 [json_name = "subname"]; inline void CreateSubscriptionStmt::clear_subname() { _impl_.subname_.ClearToEmpty(); } inline const std::string& CreateSubscriptionStmt::subname() const { // @@protoc_insertion_point(field_get:pg_query.CreateSubscriptionStmt.subname) return _internal_subname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateSubscriptionStmt::set_subname(ArgT0&& arg0, ArgT... args) { _impl_.subname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateSubscriptionStmt.subname) } inline std::string* CreateSubscriptionStmt::mutable_subname() { 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 { return _impl_.subname_.Get(); } inline void CreateSubscriptionStmt::_internal_set_subname(const std::string& value) { _impl_.subname_.Set(value, GetArenaForAllocation()); } inline std::string* CreateSubscriptionStmt::_internal_mutable_subname() { return _impl_.subname_.Mutable(GetArenaForAllocation()); } inline std::string* CreateSubscriptionStmt::release_subname() { // @@protoc_insertion_point(field_release:pg_query.CreateSubscriptionStmt.subname) return _impl_.subname_.Release(); } inline void CreateSubscriptionStmt::set_allocated_subname(std::string* subname) { if (subname != nullptr) { } else { } _impl_.subname_.SetAllocated(subname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.subname_.IsDefault()) { _impl_.subname_.Set("", GetArenaForAllocation()); } #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() { _impl_.conninfo_.ClearToEmpty(); } inline const std::string& CreateSubscriptionStmt::conninfo() const { // @@protoc_insertion_point(field_get:pg_query.CreateSubscriptionStmt.conninfo) return _internal_conninfo(); } template inline PROTOBUF_ALWAYS_INLINE void CreateSubscriptionStmt::set_conninfo(ArgT0&& arg0, ArgT... args) { _impl_.conninfo_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateSubscriptionStmt.conninfo) } inline std::string* CreateSubscriptionStmt::mutable_conninfo() { 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 { return _impl_.conninfo_.Get(); } inline void CreateSubscriptionStmt::_internal_set_conninfo(const std::string& value) { _impl_.conninfo_.Set(value, GetArenaForAllocation()); } inline std::string* CreateSubscriptionStmt::_internal_mutable_conninfo() { return _impl_.conninfo_.Mutable(GetArenaForAllocation()); } inline std::string* CreateSubscriptionStmt::release_conninfo() { // @@protoc_insertion_point(field_release:pg_query.CreateSubscriptionStmt.conninfo) return _impl_.conninfo_.Release(); } inline void CreateSubscriptionStmt::set_allocated_conninfo(std::string* conninfo) { if (conninfo != nullptr) { } else { } _impl_.conninfo_.SetAllocated(conninfo, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.conninfo_.IsDefault()) { _impl_.conninfo_.Set("", GetArenaForAllocation()); } #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 _impl_.publication_.size(); } inline int CreateSubscriptionStmt::publication_size() const { return _internal_publication_size(); } inline void CreateSubscriptionStmt::clear_publication() { _impl_.publication_.Clear(); } inline ::pg_query::Node* CreateSubscriptionStmt::mutable_publication(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateSubscriptionStmt.publication) return _impl_.publication_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateSubscriptionStmt::mutable_publication() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateSubscriptionStmt.publication) return &_impl_.publication_; } inline const ::pg_query::Node& CreateSubscriptionStmt::_internal_publication(int index) const { return _impl_.publication_.Get(index); } inline const ::pg_query::Node& CreateSubscriptionStmt::publication(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateSubscriptionStmt.publication) return _internal_publication(index); } inline ::pg_query::Node* CreateSubscriptionStmt::_internal_add_publication() { return _impl_.publication_.Add(); } inline ::pg_query::Node* CreateSubscriptionStmt::add_publication() { ::pg_query::Node* _add = _internal_add_publication(); // @@protoc_insertion_point(field_add:pg_query.CreateSubscriptionStmt.publication) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateSubscriptionStmt::publication() const { // @@protoc_insertion_point(field_list:pg_query.CreateSubscriptionStmt.publication) return _impl_.publication_; } // repeated .pg_query.Node options = 4 [json_name = "options"]; inline int CreateSubscriptionStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int CreateSubscriptionStmt::options_size() const { return _internal_options_size(); } inline void CreateSubscriptionStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* CreateSubscriptionStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateSubscriptionStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateSubscriptionStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateSubscriptionStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& CreateSubscriptionStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& CreateSubscriptionStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateSubscriptionStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateSubscriptionStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* CreateSubscriptionStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.CreateSubscriptionStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateSubscriptionStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateSubscriptionStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // AlterSubscriptionStmt // .pg_query.AlterSubscriptionType kind = 1 [json_name = "kind"]; inline void AlterSubscriptionStmt::clear_kind() { _impl_.kind_ = 0; } inline ::pg_query::AlterSubscriptionType AlterSubscriptionStmt::_internal_kind() const { return static_cast< ::pg_query::AlterSubscriptionType >(_impl_.kind_); } inline ::pg_query::AlterSubscriptionType AlterSubscriptionStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.kind) return _internal_kind(); } inline void AlterSubscriptionStmt::_internal_set_kind(::pg_query::AlterSubscriptionType value) { _impl_.kind_ = value; } inline void AlterSubscriptionStmt::set_kind(::pg_query::AlterSubscriptionType value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.AlterSubscriptionStmt.kind) } // string subname = 2 [json_name = "subname"]; inline void AlterSubscriptionStmt::clear_subname() { _impl_.subname_.ClearToEmpty(); } inline const std::string& AlterSubscriptionStmt::subname() const { // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.subname) return _internal_subname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterSubscriptionStmt::set_subname(ArgT0&& arg0, ArgT... args) { _impl_.subname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterSubscriptionStmt.subname) } inline std::string* AlterSubscriptionStmt::mutable_subname() { 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 { return _impl_.subname_.Get(); } inline void AlterSubscriptionStmt::_internal_set_subname(const std::string& value) { _impl_.subname_.Set(value, GetArenaForAllocation()); } inline std::string* AlterSubscriptionStmt::_internal_mutable_subname() { return _impl_.subname_.Mutable(GetArenaForAllocation()); } inline std::string* AlterSubscriptionStmt::release_subname() { // @@protoc_insertion_point(field_release:pg_query.AlterSubscriptionStmt.subname) return _impl_.subname_.Release(); } inline void AlterSubscriptionStmt::set_allocated_subname(std::string* subname) { if (subname != nullptr) { } else { } _impl_.subname_.SetAllocated(subname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.subname_.IsDefault()) { _impl_.subname_.Set("", GetArenaForAllocation()); } #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() { _impl_.conninfo_.ClearToEmpty(); } inline const std::string& AlterSubscriptionStmt::conninfo() const { // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.conninfo) return _internal_conninfo(); } template inline PROTOBUF_ALWAYS_INLINE void AlterSubscriptionStmt::set_conninfo(ArgT0&& arg0, ArgT... args) { _impl_.conninfo_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AlterSubscriptionStmt.conninfo) } inline std::string* AlterSubscriptionStmt::mutable_conninfo() { 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 { return _impl_.conninfo_.Get(); } inline void AlterSubscriptionStmt::_internal_set_conninfo(const std::string& value) { _impl_.conninfo_.Set(value, GetArenaForAllocation()); } inline std::string* AlterSubscriptionStmt::_internal_mutable_conninfo() { return _impl_.conninfo_.Mutable(GetArenaForAllocation()); } inline std::string* AlterSubscriptionStmt::release_conninfo() { // @@protoc_insertion_point(field_release:pg_query.AlterSubscriptionStmt.conninfo) return _impl_.conninfo_.Release(); } inline void AlterSubscriptionStmt::set_allocated_conninfo(std::string* conninfo) { if (conninfo != nullptr) { } else { } _impl_.conninfo_.SetAllocated(conninfo, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.conninfo_.IsDefault()) { _impl_.conninfo_.Set("", GetArenaForAllocation()); } #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 _impl_.publication_.size(); } inline int AlterSubscriptionStmt::publication_size() const { return _internal_publication_size(); } inline void AlterSubscriptionStmt::clear_publication() { _impl_.publication_.Clear(); } inline ::pg_query::Node* AlterSubscriptionStmt::mutable_publication(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterSubscriptionStmt.publication) return _impl_.publication_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterSubscriptionStmt::mutable_publication() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterSubscriptionStmt.publication) return &_impl_.publication_; } inline const ::pg_query::Node& AlterSubscriptionStmt::_internal_publication(int index) const { return _impl_.publication_.Get(index); } inline const ::pg_query::Node& AlterSubscriptionStmt::publication(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.publication) return _internal_publication(index); } inline ::pg_query::Node* AlterSubscriptionStmt::_internal_add_publication() { return _impl_.publication_.Add(); } inline ::pg_query::Node* AlterSubscriptionStmt::add_publication() { ::pg_query::Node* _add = _internal_add_publication(); // @@protoc_insertion_point(field_add:pg_query.AlterSubscriptionStmt.publication) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterSubscriptionStmt::publication() const { // @@protoc_insertion_point(field_list:pg_query.AlterSubscriptionStmt.publication) return _impl_.publication_; } // repeated .pg_query.Node options = 5 [json_name = "options"]; inline int AlterSubscriptionStmt::_internal_options_size() const { return _impl_.options_.size(); } inline int AlterSubscriptionStmt::options_size() const { return _internal_options_size(); } inline void AlterSubscriptionStmt::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* AlterSubscriptionStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterSubscriptionStmt.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterSubscriptionStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterSubscriptionStmt.options) return &_impl_.options_; } inline const ::pg_query::Node& AlterSubscriptionStmt::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& AlterSubscriptionStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterSubscriptionStmt::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* AlterSubscriptionStmt::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.AlterSubscriptionStmt.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterSubscriptionStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterSubscriptionStmt.options) return _impl_.options_; } // ------------------------------------------------------------------- // DropSubscriptionStmt // string subname = 1 [json_name = "subname"]; inline void DropSubscriptionStmt::clear_subname() { _impl_.subname_.ClearToEmpty(); } inline const std::string& DropSubscriptionStmt::subname() const { // @@protoc_insertion_point(field_get:pg_query.DropSubscriptionStmt.subname) return _internal_subname(); } template inline PROTOBUF_ALWAYS_INLINE void DropSubscriptionStmt::set_subname(ArgT0&& arg0, ArgT... args) { _impl_.subname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.DropSubscriptionStmt.subname) } inline std::string* DropSubscriptionStmt::mutable_subname() { 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 { return _impl_.subname_.Get(); } inline void DropSubscriptionStmt::_internal_set_subname(const std::string& value) { _impl_.subname_.Set(value, GetArenaForAllocation()); } inline std::string* DropSubscriptionStmt::_internal_mutable_subname() { return _impl_.subname_.Mutable(GetArenaForAllocation()); } inline std::string* DropSubscriptionStmt::release_subname() { // @@protoc_insertion_point(field_release:pg_query.DropSubscriptionStmt.subname) return _impl_.subname_.Release(); } inline void DropSubscriptionStmt::set_allocated_subname(std::string* subname) { if (subname != nullptr) { } else { } _impl_.subname_.SetAllocated(subname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.subname_.IsDefault()) { _impl_.subname_.Set("", GetArenaForAllocation()); } #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() { _impl_.missing_ok_ = false; } inline bool DropSubscriptionStmt::_internal_missing_ok() const { return _impl_.missing_ok_; } inline bool DropSubscriptionStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropSubscriptionStmt.missing_ok) return _internal_missing_ok(); } inline void DropSubscriptionStmt::_internal_set_missing_ok(bool value) { _impl_.missing_ok_ = value; } inline void DropSubscriptionStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropSubscriptionStmt.missing_ok) } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; inline void DropSubscriptionStmt::clear_behavior() { _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior DropSubscriptionStmt::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(_impl_.behavior_); } inline ::pg_query::DropBehavior DropSubscriptionStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.DropSubscriptionStmt.behavior) return _internal_behavior(); } inline void DropSubscriptionStmt::_internal_set_behavior(::pg_query::DropBehavior value) { _impl_.behavior_ = value; } inline void DropSubscriptionStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.DropSubscriptionStmt.behavior) } // ------------------------------------------------------------------- // CreateStatsStmt // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; inline int CreateStatsStmt::_internal_defnames_size() const { return _impl_.defnames_.size(); } inline int CreateStatsStmt::defnames_size() const { return _internal_defnames_size(); } inline void CreateStatsStmt::clear_defnames() { _impl_.defnames_.Clear(); } inline ::pg_query::Node* CreateStatsStmt::mutable_defnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.defnames) return _impl_.defnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateStatsStmt::mutable_defnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStatsStmt.defnames) return &_impl_.defnames_; } inline const ::pg_query::Node& CreateStatsStmt::_internal_defnames(int index) const { return _impl_.defnames_.Get(index); } inline const ::pg_query::Node& CreateStatsStmt::defnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.defnames) return _internal_defnames(index); } inline ::pg_query::Node* CreateStatsStmt::_internal_add_defnames() { return _impl_.defnames_.Add(); } inline ::pg_query::Node* CreateStatsStmt::add_defnames() { ::pg_query::Node* _add = _internal_add_defnames(); // @@protoc_insertion_point(field_add:pg_query.CreateStatsStmt.defnames) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateStatsStmt::defnames() const { // @@protoc_insertion_point(field_list:pg_query.CreateStatsStmt.defnames) return _impl_.defnames_; } // repeated .pg_query.Node stat_types = 2 [json_name = "stat_types"]; inline int CreateStatsStmt::_internal_stat_types_size() const { return _impl_.stat_types_.size(); } inline int CreateStatsStmt::stat_types_size() const { return _internal_stat_types_size(); } inline void CreateStatsStmt::clear_stat_types() { _impl_.stat_types_.Clear(); } inline ::pg_query::Node* CreateStatsStmt::mutable_stat_types(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.stat_types) return _impl_.stat_types_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateStatsStmt::mutable_stat_types() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStatsStmt.stat_types) return &_impl_.stat_types_; } inline const ::pg_query::Node& CreateStatsStmt::_internal_stat_types(int index) const { return _impl_.stat_types_.Get(index); } inline const ::pg_query::Node& CreateStatsStmt::stat_types(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.stat_types) return _internal_stat_types(index); } inline ::pg_query::Node* CreateStatsStmt::_internal_add_stat_types() { return _impl_.stat_types_.Add(); } inline ::pg_query::Node* CreateStatsStmt::add_stat_types() { ::pg_query::Node* _add = _internal_add_stat_types(); // @@protoc_insertion_point(field_add:pg_query.CreateStatsStmt.stat_types) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateStatsStmt::stat_types() const { // @@protoc_insertion_point(field_list:pg_query.CreateStatsStmt.stat_types) return _impl_.stat_types_; } // repeated .pg_query.Node exprs = 3 [json_name = "exprs"]; inline int CreateStatsStmt::_internal_exprs_size() const { return _impl_.exprs_.size(); } inline int CreateStatsStmt::exprs_size() const { return _internal_exprs_size(); } inline void CreateStatsStmt::clear_exprs() { _impl_.exprs_.Clear(); } inline ::pg_query::Node* CreateStatsStmt::mutable_exprs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.exprs) return _impl_.exprs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateStatsStmt::mutable_exprs() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStatsStmt.exprs) return &_impl_.exprs_; } inline const ::pg_query::Node& CreateStatsStmt::_internal_exprs(int index) const { return _impl_.exprs_.Get(index); } inline const ::pg_query::Node& CreateStatsStmt::exprs(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.exprs) return _internal_exprs(index); } inline ::pg_query::Node* CreateStatsStmt::_internal_add_exprs() { return _impl_.exprs_.Add(); } inline ::pg_query::Node* CreateStatsStmt::add_exprs() { ::pg_query::Node* _add = _internal_add_exprs(); // @@protoc_insertion_point(field_add:pg_query.CreateStatsStmt.exprs) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateStatsStmt::exprs() const { // @@protoc_insertion_point(field_list:pg_query.CreateStatsStmt.exprs) return _impl_.exprs_; } // repeated .pg_query.Node relations = 4 [json_name = "relations"]; inline int CreateStatsStmt::_internal_relations_size() const { return _impl_.relations_.size(); } inline int CreateStatsStmt::relations_size() const { return _internal_relations_size(); } inline void CreateStatsStmt::clear_relations() { _impl_.relations_.Clear(); } inline ::pg_query::Node* CreateStatsStmt::mutable_relations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.relations) return _impl_.relations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateStatsStmt::mutable_relations() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStatsStmt.relations) return &_impl_.relations_; } inline const ::pg_query::Node& CreateStatsStmt::_internal_relations(int index) const { return _impl_.relations_.Get(index); } inline const ::pg_query::Node& CreateStatsStmt::relations(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.relations) return _internal_relations(index); } inline ::pg_query::Node* CreateStatsStmt::_internal_add_relations() { return _impl_.relations_.Add(); } inline ::pg_query::Node* CreateStatsStmt::add_relations() { ::pg_query::Node* _add = _internal_add_relations(); // @@protoc_insertion_point(field_add:pg_query.CreateStatsStmt.relations) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateStatsStmt::relations() const { // @@protoc_insertion_point(field_list:pg_query.CreateStatsStmt.relations) return _impl_.relations_; } // string stxcomment = 5 [json_name = "stxcomment"]; inline void CreateStatsStmt::clear_stxcomment() { _impl_.stxcomment_.ClearToEmpty(); } inline const std::string& CreateStatsStmt::stxcomment() const { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.stxcomment) return _internal_stxcomment(); } template inline PROTOBUF_ALWAYS_INLINE void CreateStatsStmt::set_stxcomment(ArgT0&& arg0, ArgT... args) { _impl_.stxcomment_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CreateStatsStmt.stxcomment) } inline std::string* CreateStatsStmt::mutable_stxcomment() { 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 { return _impl_.stxcomment_.Get(); } inline void CreateStatsStmt::_internal_set_stxcomment(const std::string& value) { _impl_.stxcomment_.Set(value, GetArenaForAllocation()); } inline std::string* CreateStatsStmt::_internal_mutable_stxcomment() { return _impl_.stxcomment_.Mutable(GetArenaForAllocation()); } inline std::string* CreateStatsStmt::release_stxcomment() { // @@protoc_insertion_point(field_release:pg_query.CreateStatsStmt.stxcomment) return _impl_.stxcomment_.Release(); } inline void CreateStatsStmt::set_allocated_stxcomment(std::string* stxcomment) { if (stxcomment != nullptr) { } else { } _impl_.stxcomment_.SetAllocated(stxcomment, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.stxcomment_.IsDefault()) { _impl_.stxcomment_.Set("", GetArenaForAllocation()); } #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() { _impl_.transformed_ = false; } inline bool CreateStatsStmt::_internal_transformed() const { return _impl_.transformed_; } inline bool CreateStatsStmt::transformed() const { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.transformed) return _internal_transformed(); } inline void CreateStatsStmt::_internal_set_transformed(bool value) { _impl_.transformed_ = value; } inline void CreateStatsStmt::set_transformed(bool value) { _internal_set_transformed(value); // @@protoc_insertion_point(field_set:pg_query.CreateStatsStmt.transformed) } // bool if_not_exists = 7 [json_name = "if_not_exists"]; inline void CreateStatsStmt::clear_if_not_exists() { _impl_.if_not_exists_ = false; } inline bool CreateStatsStmt::_internal_if_not_exists() const { return _impl_.if_not_exists_; } inline bool CreateStatsStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.if_not_exists) return _internal_if_not_exists(); } inline void CreateStatsStmt::_internal_set_if_not_exists(bool value) { _impl_.if_not_exists_ = value; } inline void CreateStatsStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateStatsStmt.if_not_exists) } // ------------------------------------------------------------------- // AlterCollationStmt // repeated .pg_query.Node collname = 1 [json_name = "collname"]; inline int AlterCollationStmt::_internal_collname_size() const { return _impl_.collname_.size(); } inline int AlterCollationStmt::collname_size() const { return _internal_collname_size(); } inline void AlterCollationStmt::clear_collname() { _impl_.collname_.Clear(); } inline ::pg_query::Node* AlterCollationStmt::mutable_collname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterCollationStmt.collname) return _impl_.collname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterCollationStmt::mutable_collname() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterCollationStmt.collname) return &_impl_.collname_; } inline const ::pg_query::Node& AlterCollationStmt::_internal_collname(int index) const { return _impl_.collname_.Get(index); } inline const ::pg_query::Node& AlterCollationStmt::collname(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterCollationStmt.collname) return _internal_collname(index); } inline ::pg_query::Node* AlterCollationStmt::_internal_add_collname() { return _impl_.collname_.Add(); } inline ::pg_query::Node* AlterCollationStmt::add_collname() { ::pg_query::Node* _add = _internal_add_collname(); // @@protoc_insertion_point(field_add:pg_query.AlterCollationStmt.collname) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterCollationStmt::collname() const { // @@protoc_insertion_point(field_list:pg_query.AlterCollationStmt.collname) return _impl_.collname_; } // ------------------------------------------------------------------- // CallStmt // .pg_query.FuncCall funccall = 1 [json_name = "funccall"]; inline bool CallStmt::_internal_has_funccall() const { return this != internal_default_instance() && _impl_.funccall_ != nullptr; } inline bool CallStmt::has_funccall() const { return _internal_has_funccall(); } inline void CallStmt::clear_funccall() { if (GetArenaForAllocation() == nullptr && _impl_.funccall_ != nullptr) { delete _impl_.funccall_; } _impl_.funccall_ = nullptr; } inline const ::pg_query::FuncCall& CallStmt::_internal_funccall() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CallStmt.funccall) return _internal_funccall(); } inline void CallStmt::unsafe_arena_set_allocated_funccall( ::pg_query::FuncCall* funccall) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.funccall_); } _impl_.funccall_ = funccall; if (funccall) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CallStmt.funccall) } inline ::pg_query::FuncCall* CallStmt::release_funccall() { ::pg_query::FuncCall* temp = _impl_.funccall_; _impl_.funccall_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::FuncCall* CallStmt::unsafe_arena_release_funccall() { // @@protoc_insertion_point(field_release:pg_query.CallStmt.funccall) ::pg_query::FuncCall* temp = _impl_.funccall_; _impl_.funccall_ = nullptr; return temp; } inline ::pg_query::FuncCall* CallStmt::_internal_mutable_funccall() { if (_impl_.funccall_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::FuncCall>(GetArenaForAllocation()); _impl_.funccall_ = p; } return _impl_.funccall_; } inline ::pg_query::FuncCall* CallStmt::mutable_funccall() { ::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* funccall) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.funccall_; } if (funccall) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(funccall); if (message_arena != submessage_arena) { funccall = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, funccall, submessage_arena); } } else { } _impl_.funccall_ = funccall; // @@protoc_insertion_point(field_set_allocated:pg_query.CallStmt.funccall) } // .pg_query.FuncExpr funcexpr = 2 [json_name = "funcexpr"]; inline bool CallStmt::_internal_has_funcexpr() const { return this != internal_default_instance() && _impl_.funcexpr_ != nullptr; } inline bool CallStmt::has_funcexpr() const { return _internal_has_funcexpr(); } inline void CallStmt::clear_funcexpr() { if (GetArenaForAllocation() == nullptr && _impl_.funcexpr_ != nullptr) { delete _impl_.funcexpr_; } _impl_.funcexpr_ = nullptr; } inline const ::pg_query::FuncExpr& CallStmt::_internal_funcexpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CallStmt.funcexpr) return _internal_funcexpr(); } inline void CallStmt::unsafe_arena_set_allocated_funcexpr( ::pg_query::FuncExpr* funcexpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.funcexpr_); } _impl_.funcexpr_ = funcexpr; if (funcexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CallStmt.funcexpr) } inline ::pg_query::FuncExpr* CallStmt::release_funcexpr() { ::pg_query::FuncExpr* temp = _impl_.funcexpr_; _impl_.funcexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::FuncExpr* CallStmt::unsafe_arena_release_funcexpr() { // @@protoc_insertion_point(field_release:pg_query.CallStmt.funcexpr) ::pg_query::FuncExpr* temp = _impl_.funcexpr_; _impl_.funcexpr_ = nullptr; return temp; } inline ::pg_query::FuncExpr* CallStmt::_internal_mutable_funcexpr() { if (_impl_.funcexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::FuncExpr>(GetArenaForAllocation()); _impl_.funcexpr_ = p; } return _impl_.funcexpr_; } inline ::pg_query::FuncExpr* CallStmt::mutable_funcexpr() { ::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* funcexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.funcexpr_; } if (funcexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(funcexpr); if (message_arena != submessage_arena) { funcexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, funcexpr, submessage_arena); } } else { } _impl_.funcexpr_ = funcexpr; // @@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 _impl_.outargs_.size(); } inline int CallStmt::outargs_size() const { return _internal_outargs_size(); } inline void CallStmt::clear_outargs() { _impl_.outargs_.Clear(); } inline ::pg_query::Node* CallStmt::mutable_outargs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CallStmt.outargs) return _impl_.outargs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CallStmt::mutable_outargs() { // @@protoc_insertion_point(field_mutable_list:pg_query.CallStmt.outargs) return &_impl_.outargs_; } inline const ::pg_query::Node& CallStmt::_internal_outargs(int index) const { return _impl_.outargs_.Get(index); } inline const ::pg_query::Node& CallStmt::outargs(int index) const { // @@protoc_insertion_point(field_get:pg_query.CallStmt.outargs) return _internal_outargs(index); } inline ::pg_query::Node* CallStmt::_internal_add_outargs() { return _impl_.outargs_.Add(); } inline ::pg_query::Node* CallStmt::add_outargs() { ::pg_query::Node* _add = _internal_add_outargs(); // @@protoc_insertion_point(field_add:pg_query.CallStmt.outargs) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CallStmt::outargs() const { // @@protoc_insertion_point(field_list:pg_query.CallStmt.outargs) return _impl_.outargs_; } // ------------------------------------------------------------------- // AlterStatsStmt // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; inline int AlterStatsStmt::_internal_defnames_size() const { return _impl_.defnames_.size(); } inline int AlterStatsStmt::defnames_size() const { return _internal_defnames_size(); } inline void AlterStatsStmt::clear_defnames() { _impl_.defnames_.Clear(); } inline ::pg_query::Node* AlterStatsStmt::mutable_defnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterStatsStmt.defnames) return _impl_.defnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterStatsStmt::mutable_defnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterStatsStmt.defnames) return &_impl_.defnames_; } inline const ::pg_query::Node& AlterStatsStmt::_internal_defnames(int index) const { return _impl_.defnames_.Get(index); } inline const ::pg_query::Node& AlterStatsStmt::defnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterStatsStmt.defnames) return _internal_defnames(index); } inline ::pg_query::Node* AlterStatsStmt::_internal_add_defnames() { return _impl_.defnames_.Add(); } inline ::pg_query::Node* AlterStatsStmt::add_defnames() { ::pg_query::Node* _add = _internal_add_defnames(); // @@protoc_insertion_point(field_add:pg_query.AlterStatsStmt.defnames) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterStatsStmt::defnames() const { // @@protoc_insertion_point(field_list:pg_query.AlterStatsStmt.defnames) return _impl_.defnames_; } // int32 stxstattarget = 2 [json_name = "stxstattarget"]; inline void AlterStatsStmt::clear_stxstattarget() { _impl_.stxstattarget_ = 0; } inline int32_t AlterStatsStmt::_internal_stxstattarget() const { return _impl_.stxstattarget_; } inline int32_t AlterStatsStmt::stxstattarget() const { // @@protoc_insertion_point(field_get:pg_query.AlterStatsStmt.stxstattarget) return _internal_stxstattarget(); } inline void AlterStatsStmt::_internal_set_stxstattarget(int32_t value) { _impl_.stxstattarget_ = value; } inline void AlterStatsStmt::set_stxstattarget(int32_t value) { _internal_set_stxstattarget(value); // @@protoc_insertion_point(field_set:pg_query.AlterStatsStmt.stxstattarget) } // bool missing_ok = 3 [json_name = "missing_ok"]; inline void AlterStatsStmt::clear_missing_ok() { _impl_.missing_ok_ = false; } inline bool AlterStatsStmt::_internal_missing_ok() const { return _impl_.missing_ok_; } inline bool AlterStatsStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterStatsStmt.missing_ok) return _internal_missing_ok(); } inline void AlterStatsStmt::_internal_set_missing_ok(bool value) { _impl_.missing_ok_ = value; } inline void AlterStatsStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterStatsStmt.missing_ok) } // ------------------------------------------------------------------- // A_Expr // .pg_query.A_Expr_Kind kind = 1 [json_name = "kind"]; inline void A_Expr::clear_kind() { _impl_.kind_ = 0; } inline ::pg_query::A_Expr_Kind A_Expr::_internal_kind() const { return static_cast< ::pg_query::A_Expr_Kind >(_impl_.kind_); } inline ::pg_query::A_Expr_Kind A_Expr::kind() const { // @@protoc_insertion_point(field_get:pg_query.A_Expr.kind) return _internal_kind(); } inline void A_Expr::_internal_set_kind(::pg_query::A_Expr_Kind value) { _impl_.kind_ = value; } inline void A_Expr::set_kind(::pg_query::A_Expr_Kind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.A_Expr.kind) } // repeated .pg_query.Node name = 2 [json_name = "name"]; inline int A_Expr::_internal_name_size() const { return _impl_.name_.size(); } inline int A_Expr::name_size() const { return _internal_name_size(); } inline void A_Expr::clear_name() { _impl_.name_.Clear(); } inline ::pg_query::Node* A_Expr::mutable_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.A_Expr.name) return _impl_.name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* A_Expr::mutable_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.A_Expr.name) return &_impl_.name_; } inline const ::pg_query::Node& A_Expr::_internal_name(int index) const { return _impl_.name_.Get(index); } inline const ::pg_query::Node& A_Expr::name(int index) const { // @@protoc_insertion_point(field_get:pg_query.A_Expr.name) return _internal_name(index); } inline ::pg_query::Node* A_Expr::_internal_add_name() { return _impl_.name_.Add(); } inline ::pg_query::Node* A_Expr::add_name() { ::pg_query::Node* _add = _internal_add_name(); // @@protoc_insertion_point(field_add:pg_query.A_Expr.name) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& A_Expr::name() const { // @@protoc_insertion_point(field_list:pg_query.A_Expr.name) return _impl_.name_; } // .pg_query.Node lexpr = 3 [json_name = "lexpr"]; inline bool A_Expr::_internal_has_lexpr() const { return this != internal_default_instance() && _impl_.lexpr_ != nullptr; } inline bool A_Expr::has_lexpr() const { return _internal_has_lexpr(); } inline void A_Expr::clear_lexpr() { if (GetArenaForAllocation() == nullptr && _impl_.lexpr_ != nullptr) { delete _impl_.lexpr_; } _impl_.lexpr_ = nullptr; } inline const ::pg_query::Node& A_Expr::_internal_lexpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.A_Expr.lexpr) return _internal_lexpr(); } inline void A_Expr::unsafe_arena_set_allocated_lexpr( ::pg_query::Node* lexpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.lexpr_); } _impl_.lexpr_ = lexpr; if (lexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Expr.lexpr) } inline ::pg_query::Node* A_Expr::release_lexpr() { ::pg_query::Node* temp = _impl_.lexpr_; _impl_.lexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* A_Expr::unsafe_arena_release_lexpr() { // @@protoc_insertion_point(field_release:pg_query.A_Expr.lexpr) ::pg_query::Node* temp = _impl_.lexpr_; _impl_.lexpr_ = nullptr; return temp; } inline ::pg_query::Node* A_Expr::_internal_mutable_lexpr() { if (_impl_.lexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.lexpr_ = p; } return _impl_.lexpr_; } inline ::pg_query::Node* A_Expr::mutable_lexpr() { ::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* lexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.lexpr_; } if (lexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(lexpr); if (message_arena != submessage_arena) { lexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, lexpr, submessage_arena); } } else { } _impl_.lexpr_ = lexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.A_Expr.lexpr) } // .pg_query.Node rexpr = 4 [json_name = "rexpr"]; inline bool A_Expr::_internal_has_rexpr() const { return this != internal_default_instance() && _impl_.rexpr_ != nullptr; } inline bool A_Expr::has_rexpr() const { return _internal_has_rexpr(); } inline void A_Expr::clear_rexpr() { if (GetArenaForAllocation() == nullptr && _impl_.rexpr_ != nullptr) { delete _impl_.rexpr_; } _impl_.rexpr_ = nullptr; } inline const ::pg_query::Node& A_Expr::_internal_rexpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.A_Expr.rexpr) return _internal_rexpr(); } inline void A_Expr::unsafe_arena_set_allocated_rexpr( ::pg_query::Node* rexpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.rexpr_); } _impl_.rexpr_ = rexpr; if (rexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Expr.rexpr) } inline ::pg_query::Node* A_Expr::release_rexpr() { ::pg_query::Node* temp = _impl_.rexpr_; _impl_.rexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* A_Expr::unsafe_arena_release_rexpr() { // @@protoc_insertion_point(field_release:pg_query.A_Expr.rexpr) ::pg_query::Node* temp = _impl_.rexpr_; _impl_.rexpr_ = nullptr; return temp; } inline ::pg_query::Node* A_Expr::_internal_mutable_rexpr() { if (_impl_.rexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.rexpr_ = p; } return _impl_.rexpr_; } inline ::pg_query::Node* A_Expr::mutable_rexpr() { ::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* rexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.rexpr_; } if (rexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(rexpr); if (message_arena != submessage_arena) { rexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, rexpr, submessage_arena); } } else { } _impl_.rexpr_ = rexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.A_Expr.rexpr) } // int32 location = 5 [json_name = "location"]; inline void A_Expr::clear_location() { _impl_.location_ = 0; } inline int32_t A_Expr::_internal_location() const { return _impl_.location_; } inline int32_t A_Expr::location() const { // @@protoc_insertion_point(field_get:pg_query.A_Expr.location) return _internal_location(); } inline void A_Expr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void A_Expr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.A_Expr.location) } // ------------------------------------------------------------------- // ColumnRef // repeated .pg_query.Node fields = 1 [json_name = "fields"]; inline int ColumnRef::_internal_fields_size() const { return _impl_.fields_.size(); } inline int ColumnRef::fields_size() const { return _internal_fields_size(); } inline void ColumnRef::clear_fields() { _impl_.fields_.Clear(); } inline ::pg_query::Node* ColumnRef::mutable_fields(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ColumnRef.fields) return _impl_.fields_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ColumnRef::mutable_fields() { // @@protoc_insertion_point(field_mutable_list:pg_query.ColumnRef.fields) return &_impl_.fields_; } inline const ::pg_query::Node& ColumnRef::_internal_fields(int index) const { return _impl_.fields_.Get(index); } inline const ::pg_query::Node& ColumnRef::fields(int index) const { // @@protoc_insertion_point(field_get:pg_query.ColumnRef.fields) return _internal_fields(index); } inline ::pg_query::Node* ColumnRef::_internal_add_fields() { return _impl_.fields_.Add(); } inline ::pg_query::Node* ColumnRef::add_fields() { ::pg_query::Node* _add = _internal_add_fields(); // @@protoc_insertion_point(field_add:pg_query.ColumnRef.fields) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ColumnRef::fields() const { // @@protoc_insertion_point(field_list:pg_query.ColumnRef.fields) return _impl_.fields_; } // int32 location = 2 [json_name = "location"]; inline void ColumnRef::clear_location() { _impl_.location_ = 0; } inline int32_t ColumnRef::_internal_location() const { return _impl_.location_; } inline int32_t ColumnRef::location() const { // @@protoc_insertion_point(field_get:pg_query.ColumnRef.location) return _internal_location(); } inline void ColumnRef::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void ColumnRef::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ColumnRef.location) } // ------------------------------------------------------------------- // ParamRef // int32 number = 1 [json_name = "number"]; inline void ParamRef::clear_number() { _impl_.number_ = 0; } inline int32_t ParamRef::_internal_number() const { return _impl_.number_; } inline int32_t ParamRef::number() const { // @@protoc_insertion_point(field_get:pg_query.ParamRef.number) return _internal_number(); } inline void ParamRef::_internal_set_number(int32_t value) { _impl_.number_ = value; } inline void ParamRef::set_number(int32_t value) { _internal_set_number(value); // @@protoc_insertion_point(field_set:pg_query.ParamRef.number) } // int32 location = 2 [json_name = "location"]; inline void ParamRef::clear_location() { _impl_.location_ = 0; } inline int32_t ParamRef::_internal_location() const { return _impl_.location_; } inline int32_t ParamRef::location() const { // @@protoc_insertion_point(field_get:pg_query.ParamRef.location) return _internal_location(); } inline void ParamRef::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void ParamRef::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ParamRef.location) } // ------------------------------------------------------------------- // FuncCall // repeated .pg_query.Node funcname = 1 [json_name = "funcname"]; inline int FuncCall::_internal_funcname_size() const { return _impl_.funcname_.size(); } inline int FuncCall::funcname_size() const { return _internal_funcname_size(); } inline void FuncCall::clear_funcname() { _impl_.funcname_.Clear(); } inline ::pg_query::Node* FuncCall::mutable_funcname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.funcname) return _impl_.funcname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* FuncCall::mutable_funcname() { // @@protoc_insertion_point(field_mutable_list:pg_query.FuncCall.funcname) return &_impl_.funcname_; } inline const ::pg_query::Node& FuncCall::_internal_funcname(int index) const { return _impl_.funcname_.Get(index); } inline const ::pg_query::Node& FuncCall::funcname(int index) const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.funcname) return _internal_funcname(index); } inline ::pg_query::Node* FuncCall::_internal_add_funcname() { return _impl_.funcname_.Add(); } inline ::pg_query::Node* FuncCall::add_funcname() { ::pg_query::Node* _add = _internal_add_funcname(); // @@protoc_insertion_point(field_add:pg_query.FuncCall.funcname) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& FuncCall::funcname() const { // @@protoc_insertion_point(field_list:pg_query.FuncCall.funcname) return _impl_.funcname_; } // repeated .pg_query.Node args = 2 [json_name = "args"]; inline int FuncCall::_internal_args_size() const { return _impl_.args_.size(); } inline int FuncCall::args_size() const { return _internal_args_size(); } inline void FuncCall::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* FuncCall::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* FuncCall::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.FuncCall.args) return &_impl_.args_; } inline const ::pg_query::Node& FuncCall::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& FuncCall::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.args) return _internal_args(index); } inline ::pg_query::Node* FuncCall::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* FuncCall::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.FuncCall.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& FuncCall::args() const { // @@protoc_insertion_point(field_list:pg_query.FuncCall.args) return _impl_.args_; } // repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; inline int FuncCall::_internal_agg_order_size() const { return _impl_.agg_order_.size(); } inline int FuncCall::agg_order_size() const { return _internal_agg_order_size(); } inline void FuncCall::clear_agg_order() { _impl_.agg_order_.Clear(); } inline ::pg_query::Node* FuncCall::mutable_agg_order(int index) { // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.agg_order) return _impl_.agg_order_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* FuncCall::mutable_agg_order() { // @@protoc_insertion_point(field_mutable_list:pg_query.FuncCall.agg_order) return &_impl_.agg_order_; } inline const ::pg_query::Node& FuncCall::_internal_agg_order(int index) const { return _impl_.agg_order_.Get(index); } inline const ::pg_query::Node& FuncCall::agg_order(int index) const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_order) return _internal_agg_order(index); } inline ::pg_query::Node* FuncCall::_internal_add_agg_order() { return _impl_.agg_order_.Add(); } inline ::pg_query::Node* FuncCall::add_agg_order() { ::pg_query::Node* _add = _internal_add_agg_order(); // @@protoc_insertion_point(field_add:pg_query.FuncCall.agg_order) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& FuncCall::agg_order() const { // @@protoc_insertion_point(field_list:pg_query.FuncCall.agg_order) return _impl_.agg_order_; } // .pg_query.Node agg_filter = 4 [json_name = "agg_filter"]; inline bool FuncCall::_internal_has_agg_filter() const { return this != internal_default_instance() && _impl_.agg_filter_ != nullptr; } inline bool FuncCall::has_agg_filter() const { return _internal_has_agg_filter(); } inline void FuncCall::clear_agg_filter() { if (GetArenaForAllocation() == nullptr && _impl_.agg_filter_ != nullptr) { delete _impl_.agg_filter_; } _impl_.agg_filter_ = nullptr; } inline const ::pg_query::Node& FuncCall::_internal_agg_filter() const { 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 { // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_filter) return _internal_agg_filter(); } inline void FuncCall::unsafe_arena_set_allocated_agg_filter( ::pg_query::Node* agg_filter) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.agg_filter_); } _impl_.agg_filter_ = agg_filter; if (agg_filter) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FuncCall.agg_filter) } inline ::pg_query::Node* FuncCall::release_agg_filter() { ::pg_query::Node* temp = _impl_.agg_filter_; _impl_.agg_filter_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* FuncCall::unsafe_arena_release_agg_filter() { // @@protoc_insertion_point(field_release:pg_query.FuncCall.agg_filter) ::pg_query::Node* temp = _impl_.agg_filter_; _impl_.agg_filter_ = nullptr; return temp; } inline ::pg_query::Node* FuncCall::_internal_mutable_agg_filter() { if (_impl_.agg_filter_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.agg_filter_ = p; } return _impl_.agg_filter_; } inline ::pg_query::Node* FuncCall::mutable_agg_filter() { ::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* agg_filter) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.agg_filter_; } if (agg_filter) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(agg_filter); if (message_arena != submessage_arena) { agg_filter = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, agg_filter, submessage_arena); } } else { } _impl_.agg_filter_ = agg_filter; // @@protoc_insertion_point(field_set_allocated:pg_query.FuncCall.agg_filter) } // .pg_query.WindowDef over = 5 [json_name = "over"]; inline bool FuncCall::_internal_has_over() const { return this != internal_default_instance() && _impl_.over_ != nullptr; } inline bool FuncCall::has_over() const { return _internal_has_over(); } inline void FuncCall::clear_over() { if (GetArenaForAllocation() == nullptr && _impl_.over_ != nullptr) { delete _impl_.over_; } _impl_.over_ = nullptr; } inline const ::pg_query::WindowDef& FuncCall::_internal_over() const { 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 { // @@protoc_insertion_point(field_get:pg_query.FuncCall.over) return _internal_over(); } inline void FuncCall::unsafe_arena_set_allocated_over( ::pg_query::WindowDef* over) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.over_); } _impl_.over_ = over; if (over) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FuncCall.over) } inline ::pg_query::WindowDef* FuncCall::release_over() { ::pg_query::WindowDef* temp = _impl_.over_; _impl_.over_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::WindowDef* FuncCall::unsafe_arena_release_over() { // @@protoc_insertion_point(field_release:pg_query.FuncCall.over) ::pg_query::WindowDef* temp = _impl_.over_; _impl_.over_ = nullptr; return temp; } inline ::pg_query::WindowDef* FuncCall::_internal_mutable_over() { if (_impl_.over_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WindowDef>(GetArenaForAllocation()); _impl_.over_ = p; } return _impl_.over_; } inline ::pg_query::WindowDef* FuncCall::mutable_over() { ::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* over) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.over_; } if (over) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(over); if (message_arena != submessage_arena) { over = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, over, submessage_arena); } } else { } _impl_.over_ = over; // @@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() { _impl_.agg_within_group_ = false; } inline bool FuncCall::_internal_agg_within_group() const { return _impl_.agg_within_group_; } inline bool FuncCall::agg_within_group() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_within_group) return _internal_agg_within_group(); } inline void FuncCall::_internal_set_agg_within_group(bool value) { _impl_.agg_within_group_ = value; } inline void FuncCall::set_agg_within_group(bool value) { _internal_set_agg_within_group(value); // @@protoc_insertion_point(field_set:pg_query.FuncCall.agg_within_group) } // bool agg_star = 7 [json_name = "agg_star"]; inline void FuncCall::clear_agg_star() { _impl_.agg_star_ = false; } inline bool FuncCall::_internal_agg_star() const { return _impl_.agg_star_; } inline bool FuncCall::agg_star() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_star) return _internal_agg_star(); } inline void FuncCall::_internal_set_agg_star(bool value) { _impl_.agg_star_ = value; } inline void FuncCall::set_agg_star(bool value) { _internal_set_agg_star(value); // @@protoc_insertion_point(field_set:pg_query.FuncCall.agg_star) } // bool agg_distinct = 8 [json_name = "agg_distinct"]; inline void FuncCall::clear_agg_distinct() { _impl_.agg_distinct_ = false; } inline bool FuncCall::_internal_agg_distinct() const { return _impl_.agg_distinct_; } inline bool FuncCall::agg_distinct() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_distinct) return _internal_agg_distinct(); } inline void FuncCall::_internal_set_agg_distinct(bool value) { _impl_.agg_distinct_ = value; } inline void FuncCall::set_agg_distinct(bool value) { _internal_set_agg_distinct(value); // @@protoc_insertion_point(field_set:pg_query.FuncCall.agg_distinct) } // bool func_variadic = 9 [json_name = "func_variadic"]; inline void FuncCall::clear_func_variadic() { _impl_.func_variadic_ = false; } inline bool FuncCall::_internal_func_variadic() const { return _impl_.func_variadic_; } inline bool FuncCall::func_variadic() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.func_variadic) return _internal_func_variadic(); } inline void FuncCall::_internal_set_func_variadic(bool value) { _impl_.func_variadic_ = value; } inline void FuncCall::set_func_variadic(bool value) { _internal_set_func_variadic(value); // @@protoc_insertion_point(field_set:pg_query.FuncCall.func_variadic) } // .pg_query.CoercionForm funcformat = 10 [json_name = "funcformat"]; inline void FuncCall::clear_funcformat() { _impl_.funcformat_ = 0; } inline ::pg_query::CoercionForm FuncCall::_internal_funcformat() const { return static_cast< ::pg_query::CoercionForm >(_impl_.funcformat_); } inline ::pg_query::CoercionForm FuncCall::funcformat() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.funcformat) return _internal_funcformat(); } inline void FuncCall::_internal_set_funcformat(::pg_query::CoercionForm value) { _impl_.funcformat_ = value; } inline void FuncCall::set_funcformat(::pg_query::CoercionForm value) { _internal_set_funcformat(value); // @@protoc_insertion_point(field_set:pg_query.FuncCall.funcformat) } // int32 location = 11 [json_name = "location"]; inline void FuncCall::clear_location() { _impl_.location_ = 0; } inline int32_t FuncCall::_internal_location() const { return _impl_.location_; } inline int32_t FuncCall::location() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.location) return _internal_location(); } inline void FuncCall::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void FuncCall::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.FuncCall.location) } // ------------------------------------------------------------------- // A_Star // ------------------------------------------------------------------- // A_Indices // bool is_slice = 1 [json_name = "is_slice"]; inline void A_Indices::clear_is_slice() { _impl_.is_slice_ = false; } inline bool A_Indices::_internal_is_slice() const { return _impl_.is_slice_; } inline bool A_Indices::is_slice() const { // @@protoc_insertion_point(field_get:pg_query.A_Indices.is_slice) return _internal_is_slice(); } inline void A_Indices::_internal_set_is_slice(bool value) { _impl_.is_slice_ = value; } inline void A_Indices::set_is_slice(bool value) { _internal_set_is_slice(value); // @@protoc_insertion_point(field_set:pg_query.A_Indices.is_slice) } // .pg_query.Node lidx = 2 [json_name = "lidx"]; inline bool A_Indices::_internal_has_lidx() const { return this != internal_default_instance() && _impl_.lidx_ != nullptr; } inline bool A_Indices::has_lidx() const { return _internal_has_lidx(); } inline void A_Indices::clear_lidx() { if (GetArenaForAllocation() == nullptr && _impl_.lidx_ != nullptr) { delete _impl_.lidx_; } _impl_.lidx_ = nullptr; } inline const ::pg_query::Node& A_Indices::_internal_lidx() const { 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 { // @@protoc_insertion_point(field_get:pg_query.A_Indices.lidx) return _internal_lidx(); } inline void A_Indices::unsafe_arena_set_allocated_lidx( ::pg_query::Node* lidx) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.lidx_); } _impl_.lidx_ = lidx; if (lidx) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Indices.lidx) } inline ::pg_query::Node* A_Indices::release_lidx() { ::pg_query::Node* temp = _impl_.lidx_; _impl_.lidx_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* A_Indices::unsafe_arena_release_lidx() { // @@protoc_insertion_point(field_release:pg_query.A_Indices.lidx) ::pg_query::Node* temp = _impl_.lidx_; _impl_.lidx_ = nullptr; return temp; } inline ::pg_query::Node* A_Indices::_internal_mutable_lidx() { if (_impl_.lidx_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.lidx_ = p; } return _impl_.lidx_; } inline ::pg_query::Node* A_Indices::mutable_lidx() { ::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* lidx) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.lidx_; } if (lidx) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(lidx); if (message_arena != submessage_arena) { lidx = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, lidx, submessage_arena); } } else { } _impl_.lidx_ = lidx; // @@protoc_insertion_point(field_set_allocated:pg_query.A_Indices.lidx) } // .pg_query.Node uidx = 3 [json_name = "uidx"]; inline bool A_Indices::_internal_has_uidx() const { return this != internal_default_instance() && _impl_.uidx_ != nullptr; } inline bool A_Indices::has_uidx() const { return _internal_has_uidx(); } inline void A_Indices::clear_uidx() { if (GetArenaForAllocation() == nullptr && _impl_.uidx_ != nullptr) { delete _impl_.uidx_; } _impl_.uidx_ = nullptr; } inline const ::pg_query::Node& A_Indices::_internal_uidx() const { 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 { // @@protoc_insertion_point(field_get:pg_query.A_Indices.uidx) return _internal_uidx(); } inline void A_Indices::unsafe_arena_set_allocated_uidx( ::pg_query::Node* uidx) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.uidx_); } _impl_.uidx_ = uidx; if (uidx) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Indices.uidx) } inline ::pg_query::Node* A_Indices::release_uidx() { ::pg_query::Node* temp = _impl_.uidx_; _impl_.uidx_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* A_Indices::unsafe_arena_release_uidx() { // @@protoc_insertion_point(field_release:pg_query.A_Indices.uidx) ::pg_query::Node* temp = _impl_.uidx_; _impl_.uidx_ = nullptr; return temp; } inline ::pg_query::Node* A_Indices::_internal_mutable_uidx() { if (_impl_.uidx_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.uidx_ = p; } return _impl_.uidx_; } inline ::pg_query::Node* A_Indices::mutable_uidx() { ::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* uidx) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.uidx_; } if (uidx) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(uidx); if (message_arena != submessage_arena) { uidx = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, uidx, submessage_arena); } } else { } _impl_.uidx_ = uidx; // @@protoc_insertion_point(field_set_allocated:pg_query.A_Indices.uidx) } // ------------------------------------------------------------------- // A_Indirection // .pg_query.Node arg = 1 [json_name = "arg"]; inline bool A_Indirection::_internal_has_arg() const { return this != internal_default_instance() && _impl_.arg_ != nullptr; } inline bool A_Indirection::has_arg() const { return _internal_has_arg(); } inline void A_Indirection::clear_arg() { if (GetArenaForAllocation() == nullptr && _impl_.arg_ != nullptr) { delete _impl_.arg_; } _impl_.arg_ = nullptr; } inline const ::pg_query::Node& A_Indirection::_internal_arg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.A_Indirection.arg) return _internal_arg(); } inline void A_Indirection::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arg_); } _impl_.arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Indirection.arg) } inline ::pg_query::Node* A_Indirection::release_arg() { ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* A_Indirection::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.A_Indirection.arg) ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* A_Indirection::_internal_mutable_arg() { if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.arg_ = p; } return _impl_.arg_; } inline ::pg_query::Node* A_Indirection::mutable_arg() { ::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* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } _impl_.arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.A_Indirection.arg) } // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; inline int A_Indirection::_internal_indirection_size() const { return _impl_.indirection_.size(); } inline int A_Indirection::indirection_size() const { return _internal_indirection_size(); } inline void A_Indirection::clear_indirection() { _impl_.indirection_.Clear(); } inline ::pg_query::Node* A_Indirection::mutable_indirection(int index) { // @@protoc_insertion_point(field_mutable:pg_query.A_Indirection.indirection) return _impl_.indirection_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* A_Indirection::mutable_indirection() { // @@protoc_insertion_point(field_mutable_list:pg_query.A_Indirection.indirection) return &_impl_.indirection_; } inline const ::pg_query::Node& A_Indirection::_internal_indirection(int index) const { return _impl_.indirection_.Get(index); } inline const ::pg_query::Node& A_Indirection::indirection(int index) const { // @@protoc_insertion_point(field_get:pg_query.A_Indirection.indirection) return _internal_indirection(index); } inline ::pg_query::Node* A_Indirection::_internal_add_indirection() { return _impl_.indirection_.Add(); } inline ::pg_query::Node* A_Indirection::add_indirection() { ::pg_query::Node* _add = _internal_add_indirection(); // @@protoc_insertion_point(field_add:pg_query.A_Indirection.indirection) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& A_Indirection::indirection() const { // @@protoc_insertion_point(field_list:pg_query.A_Indirection.indirection) return _impl_.indirection_; } // ------------------------------------------------------------------- // A_ArrayExpr // repeated .pg_query.Node elements = 1 [json_name = "elements"]; inline int A_ArrayExpr::_internal_elements_size() const { return _impl_.elements_.size(); } inline int A_ArrayExpr::elements_size() const { return _internal_elements_size(); } inline void A_ArrayExpr::clear_elements() { _impl_.elements_.Clear(); } inline ::pg_query::Node* A_ArrayExpr::mutable_elements(int index) { // @@protoc_insertion_point(field_mutable:pg_query.A_ArrayExpr.elements) return _impl_.elements_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* A_ArrayExpr::mutable_elements() { // @@protoc_insertion_point(field_mutable_list:pg_query.A_ArrayExpr.elements) return &_impl_.elements_; } inline const ::pg_query::Node& A_ArrayExpr::_internal_elements(int index) const { return _impl_.elements_.Get(index); } inline const ::pg_query::Node& A_ArrayExpr::elements(int index) const { // @@protoc_insertion_point(field_get:pg_query.A_ArrayExpr.elements) return _internal_elements(index); } inline ::pg_query::Node* A_ArrayExpr::_internal_add_elements() { return _impl_.elements_.Add(); } inline ::pg_query::Node* A_ArrayExpr::add_elements() { ::pg_query::Node* _add = _internal_add_elements(); // @@protoc_insertion_point(field_add:pg_query.A_ArrayExpr.elements) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& A_ArrayExpr::elements() const { // @@protoc_insertion_point(field_list:pg_query.A_ArrayExpr.elements) return _impl_.elements_; } // int32 location = 2 [json_name = "location"]; inline void A_ArrayExpr::clear_location() { _impl_.location_ = 0; } inline int32_t A_ArrayExpr::_internal_location() const { return _impl_.location_; } inline int32_t A_ArrayExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.A_ArrayExpr.location) return _internal_location(); } inline void A_ArrayExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void A_ArrayExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.A_ArrayExpr.location) } // ------------------------------------------------------------------- // ResTarget // string name = 1 [json_name = "name"]; inline void ResTarget::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& ResTarget::name() const { // @@protoc_insertion_point(field_get:pg_query.ResTarget.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void ResTarget::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.ResTarget.name) } inline std::string* ResTarget::mutable_name() { 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 { return _impl_.name_.Get(); } inline void ResTarget::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* ResTarget::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* ResTarget::release_name() { // @@protoc_insertion_point(field_release:pg_query.ResTarget.name) return _impl_.name_.Release(); } inline void ResTarget::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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 _impl_.indirection_.size(); } inline int ResTarget::indirection_size() const { return _internal_indirection_size(); } inline void ResTarget::clear_indirection() { _impl_.indirection_.Clear(); } inline ::pg_query::Node* ResTarget::mutable_indirection(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ResTarget.indirection) return _impl_.indirection_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ResTarget::mutable_indirection() { // @@protoc_insertion_point(field_mutable_list:pg_query.ResTarget.indirection) return &_impl_.indirection_; } inline const ::pg_query::Node& ResTarget::_internal_indirection(int index) const { return _impl_.indirection_.Get(index); } inline const ::pg_query::Node& ResTarget::indirection(int index) const { // @@protoc_insertion_point(field_get:pg_query.ResTarget.indirection) return _internal_indirection(index); } inline ::pg_query::Node* ResTarget::_internal_add_indirection() { return _impl_.indirection_.Add(); } inline ::pg_query::Node* ResTarget::add_indirection() { ::pg_query::Node* _add = _internal_add_indirection(); // @@protoc_insertion_point(field_add:pg_query.ResTarget.indirection) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ResTarget::indirection() const { // @@protoc_insertion_point(field_list:pg_query.ResTarget.indirection) return _impl_.indirection_; } // .pg_query.Node val = 3 [json_name = "val"]; inline bool ResTarget::_internal_has_val() const { return this != internal_default_instance() && _impl_.val_ != nullptr; } inline bool ResTarget::has_val() const { return _internal_has_val(); } inline void ResTarget::clear_val() { if (GetArenaForAllocation() == nullptr && _impl_.val_ != nullptr) { delete _impl_.val_; } _impl_.val_ = nullptr; } inline const ::pg_query::Node& ResTarget::_internal_val() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ResTarget.val) return _internal_val(); } inline void ResTarget::unsafe_arena_set_allocated_val( ::pg_query::Node* val) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.val_); } _impl_.val_ = val; if (val) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ResTarget.val) } inline ::pg_query::Node* ResTarget::release_val() { ::pg_query::Node* temp = _impl_.val_; _impl_.val_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* ResTarget::unsafe_arena_release_val() { // @@protoc_insertion_point(field_release:pg_query.ResTarget.val) ::pg_query::Node* temp = _impl_.val_; _impl_.val_ = nullptr; return temp; } inline ::pg_query::Node* ResTarget::_internal_mutable_val() { if (_impl_.val_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.val_ = p; } return _impl_.val_; } inline ::pg_query::Node* ResTarget::mutable_val() { ::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* val) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.val_; } if (val) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(val); if (message_arena != submessage_arena) { val = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, val, submessage_arena); } } else { } _impl_.val_ = val; // @@protoc_insertion_point(field_set_allocated:pg_query.ResTarget.val) } // int32 location = 4 [json_name = "location"]; inline void ResTarget::clear_location() { _impl_.location_ = 0; } inline int32_t ResTarget::_internal_location() const { return _impl_.location_; } inline int32_t ResTarget::location() const { // @@protoc_insertion_point(field_get:pg_query.ResTarget.location) return _internal_location(); } inline void ResTarget::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void ResTarget::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ResTarget.location) } // ------------------------------------------------------------------- // MultiAssignRef // .pg_query.Node source = 1 [json_name = "source"]; inline bool MultiAssignRef::_internal_has_source() const { return this != internal_default_instance() && _impl_.source_ != nullptr; } inline bool MultiAssignRef::has_source() const { return _internal_has_source(); } inline void MultiAssignRef::clear_source() { if (GetArenaForAllocation() == nullptr && _impl_.source_ != nullptr) { delete _impl_.source_; } _impl_.source_ = nullptr; } inline const ::pg_query::Node& MultiAssignRef::_internal_source() const { 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 { // @@protoc_insertion_point(field_get:pg_query.MultiAssignRef.source) return _internal_source(); } inline void MultiAssignRef::unsafe_arena_set_allocated_source( ::pg_query::Node* source) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.source_); } _impl_.source_ = source; if (source) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MultiAssignRef.source) } inline ::pg_query::Node* MultiAssignRef::release_source() { ::pg_query::Node* temp = _impl_.source_; _impl_.source_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* MultiAssignRef::unsafe_arena_release_source() { // @@protoc_insertion_point(field_release:pg_query.MultiAssignRef.source) ::pg_query::Node* temp = _impl_.source_; _impl_.source_ = nullptr; return temp; } inline ::pg_query::Node* MultiAssignRef::_internal_mutable_source() { if (_impl_.source_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.source_ = p; } return _impl_.source_; } inline ::pg_query::Node* MultiAssignRef::mutable_source() { ::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* source) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.source_; } if (source) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(source); if (message_arena != submessage_arena) { source = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, source, submessage_arena); } } else { } _impl_.source_ = source; // @@protoc_insertion_point(field_set_allocated:pg_query.MultiAssignRef.source) } // int32 colno = 2 [json_name = "colno"]; inline void MultiAssignRef::clear_colno() { _impl_.colno_ = 0; } inline int32_t MultiAssignRef::_internal_colno() const { return _impl_.colno_; } inline int32_t MultiAssignRef::colno() const { // @@protoc_insertion_point(field_get:pg_query.MultiAssignRef.colno) return _internal_colno(); } inline void MultiAssignRef::_internal_set_colno(int32_t value) { _impl_.colno_ = value; } inline void MultiAssignRef::set_colno(int32_t value) { _internal_set_colno(value); // @@protoc_insertion_point(field_set:pg_query.MultiAssignRef.colno) } // int32 ncolumns = 3 [json_name = "ncolumns"]; inline void MultiAssignRef::clear_ncolumns() { _impl_.ncolumns_ = 0; } inline int32_t MultiAssignRef::_internal_ncolumns() const { return _impl_.ncolumns_; } inline int32_t MultiAssignRef::ncolumns() const { // @@protoc_insertion_point(field_get:pg_query.MultiAssignRef.ncolumns) return _internal_ncolumns(); } inline void MultiAssignRef::_internal_set_ncolumns(int32_t value) { _impl_.ncolumns_ = value; } inline void MultiAssignRef::set_ncolumns(int32_t value) { _internal_set_ncolumns(value); // @@protoc_insertion_point(field_set:pg_query.MultiAssignRef.ncolumns) } // ------------------------------------------------------------------- // TypeCast // .pg_query.Node arg = 1 [json_name = "arg"]; inline bool TypeCast::_internal_has_arg() const { return this != internal_default_instance() && _impl_.arg_ != nullptr; } inline bool TypeCast::has_arg() const { return _internal_has_arg(); } inline void TypeCast::clear_arg() { if (GetArenaForAllocation() == nullptr && _impl_.arg_ != nullptr) { delete _impl_.arg_; } _impl_.arg_ = nullptr; } inline const ::pg_query::Node& TypeCast::_internal_arg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.TypeCast.arg) return _internal_arg(); } inline void TypeCast::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arg_); } _impl_.arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TypeCast.arg) } inline ::pg_query::Node* TypeCast::release_arg() { ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* TypeCast::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.TypeCast.arg) ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* TypeCast::_internal_mutable_arg() { if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.arg_ = p; } return _impl_.arg_; } inline ::pg_query::Node* TypeCast::mutable_arg() { ::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* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } _impl_.arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.TypeCast.arg) } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; inline bool TypeCast::_internal_has_type_name() const { return this != internal_default_instance() && _impl_.type_name_ != nullptr; } inline bool TypeCast::has_type_name() const { return _internal_has_type_name(); } inline void TypeCast::clear_type_name() { if (GetArenaForAllocation() == nullptr && _impl_.type_name_ != nullptr) { delete _impl_.type_name_; } _impl_.type_name_ = nullptr; } inline const ::pg_query::TypeName& TypeCast::_internal_type_name() const { 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 { // @@protoc_insertion_point(field_get:pg_query.TypeCast.type_name) return _internal_type_name(); } inline void TypeCast::unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.type_name_); } _impl_.type_name_ = type_name; if (type_name) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TypeCast.type_name) } inline ::pg_query::TypeName* TypeCast::release_type_name() { ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::TypeName* TypeCast::unsafe_arena_release_type_name() { // @@protoc_insertion_point(field_release:pg_query.TypeCast.type_name) ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* TypeCast::_internal_mutable_type_name() { if (_impl_.type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArenaForAllocation()); _impl_.type_name_ = p; } return _impl_.type_name_; } inline ::pg_query::TypeName* TypeCast::mutable_type_name() { ::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* type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.type_name_; } if (type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(type_name); if (message_arena != submessage_arena) { type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, type_name, submessage_arena); } } else { } _impl_.type_name_ = type_name; // @@protoc_insertion_point(field_set_allocated:pg_query.TypeCast.type_name) } // int32 location = 3 [json_name = "location"]; inline void TypeCast::clear_location() { _impl_.location_ = 0; } inline int32_t TypeCast::_internal_location() const { return _impl_.location_; } inline int32_t TypeCast::location() const { // @@protoc_insertion_point(field_get:pg_query.TypeCast.location) return _internal_location(); } inline void TypeCast::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void TypeCast::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.TypeCast.location) } // ------------------------------------------------------------------- // CollateClause // .pg_query.Node arg = 1 [json_name = "arg"]; inline bool CollateClause::_internal_has_arg() const { return this != internal_default_instance() && _impl_.arg_ != nullptr; } inline bool CollateClause::has_arg() const { return _internal_has_arg(); } inline void CollateClause::clear_arg() { if (GetArenaForAllocation() == nullptr && _impl_.arg_ != nullptr) { delete _impl_.arg_; } _impl_.arg_ = nullptr; } inline const ::pg_query::Node& CollateClause::_internal_arg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CollateClause.arg) return _internal_arg(); } inline void CollateClause::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arg_); } _impl_.arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CollateClause.arg) } inline ::pg_query::Node* CollateClause::release_arg() { ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CollateClause::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.CollateClause.arg) ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* CollateClause::_internal_mutable_arg() { if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.arg_ = p; } return _impl_.arg_; } inline ::pg_query::Node* CollateClause::mutable_arg() { ::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* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } _impl_.arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.CollateClause.arg) } // repeated .pg_query.Node collname = 2 [json_name = "collname"]; inline int CollateClause::_internal_collname_size() const { return _impl_.collname_.size(); } inline int CollateClause::collname_size() const { return _internal_collname_size(); } inline void CollateClause::clear_collname() { _impl_.collname_.Clear(); } inline ::pg_query::Node* CollateClause::mutable_collname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CollateClause.collname) return _impl_.collname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CollateClause::mutable_collname() { // @@protoc_insertion_point(field_mutable_list:pg_query.CollateClause.collname) return &_impl_.collname_; } inline const ::pg_query::Node& CollateClause::_internal_collname(int index) const { return _impl_.collname_.Get(index); } inline const ::pg_query::Node& CollateClause::collname(int index) const { // @@protoc_insertion_point(field_get:pg_query.CollateClause.collname) return _internal_collname(index); } inline ::pg_query::Node* CollateClause::_internal_add_collname() { return _impl_.collname_.Add(); } inline ::pg_query::Node* CollateClause::add_collname() { ::pg_query::Node* _add = _internal_add_collname(); // @@protoc_insertion_point(field_add:pg_query.CollateClause.collname) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CollateClause::collname() const { // @@protoc_insertion_point(field_list:pg_query.CollateClause.collname) return _impl_.collname_; } // int32 location = 3 [json_name = "location"]; inline void CollateClause::clear_location() { _impl_.location_ = 0; } inline int32_t CollateClause::_internal_location() const { return _impl_.location_; } inline int32_t CollateClause::location() const { // @@protoc_insertion_point(field_get:pg_query.CollateClause.location) return _internal_location(); } inline void CollateClause::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void CollateClause::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CollateClause.location) } // ------------------------------------------------------------------- // SortBy // .pg_query.Node node = 1 [json_name = "node"]; inline bool SortBy::_internal_has_node() const { return this != internal_default_instance() && _impl_.node_ != nullptr; } inline bool SortBy::has_node() const { return _internal_has_node(); } inline void SortBy::clear_node() { if (GetArenaForAllocation() == nullptr && _impl_.node_ != nullptr) { delete _impl_.node_; } _impl_.node_ = nullptr; } inline const ::pg_query::Node& SortBy::_internal_node() const { 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 { // @@protoc_insertion_point(field_get:pg_query.SortBy.node) return _internal_node(); } inline void SortBy::unsafe_arena_set_allocated_node( ::pg_query::Node* node) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.node_); } _impl_.node_ = node; if (node) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SortBy.node) } inline ::pg_query::Node* SortBy::release_node() { ::pg_query::Node* temp = _impl_.node_; _impl_.node_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* SortBy::unsafe_arena_release_node() { // @@protoc_insertion_point(field_release:pg_query.SortBy.node) ::pg_query::Node* temp = _impl_.node_; _impl_.node_ = nullptr; return temp; } inline ::pg_query::Node* SortBy::_internal_mutable_node() { if (_impl_.node_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.node_ = p; } return _impl_.node_; } inline ::pg_query::Node* SortBy::mutable_node() { ::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* node) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.node_; } if (node) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(node); if (message_arena != submessage_arena) { node = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, node, submessage_arena); } } else { } _impl_.node_ = node; // @@protoc_insertion_point(field_set_allocated:pg_query.SortBy.node) } // .pg_query.SortByDir sortby_dir = 2 [json_name = "sortby_dir"]; inline void SortBy::clear_sortby_dir() { _impl_.sortby_dir_ = 0; } inline ::pg_query::SortByDir SortBy::_internal_sortby_dir() const { return static_cast< ::pg_query::SortByDir >(_impl_.sortby_dir_); } inline ::pg_query::SortByDir SortBy::sortby_dir() const { // @@protoc_insertion_point(field_get:pg_query.SortBy.sortby_dir) return _internal_sortby_dir(); } inline void SortBy::_internal_set_sortby_dir(::pg_query::SortByDir value) { _impl_.sortby_dir_ = value; } inline void SortBy::set_sortby_dir(::pg_query::SortByDir value) { _internal_set_sortby_dir(value); // @@protoc_insertion_point(field_set:pg_query.SortBy.sortby_dir) } // .pg_query.SortByNulls sortby_nulls = 3 [json_name = "sortby_nulls"]; inline void SortBy::clear_sortby_nulls() { _impl_.sortby_nulls_ = 0; } inline ::pg_query::SortByNulls SortBy::_internal_sortby_nulls() const { return static_cast< ::pg_query::SortByNulls >(_impl_.sortby_nulls_); } inline ::pg_query::SortByNulls SortBy::sortby_nulls() const { // @@protoc_insertion_point(field_get:pg_query.SortBy.sortby_nulls) return _internal_sortby_nulls(); } inline void SortBy::_internal_set_sortby_nulls(::pg_query::SortByNulls value) { _impl_.sortby_nulls_ = value; } inline void SortBy::set_sortby_nulls(::pg_query::SortByNulls value) { _internal_set_sortby_nulls(value); // @@protoc_insertion_point(field_set:pg_query.SortBy.sortby_nulls) } // repeated .pg_query.Node use_op = 4 [json_name = "useOp"]; inline int SortBy::_internal_use_op_size() const { return _impl_.use_op_.size(); } inline int SortBy::use_op_size() const { return _internal_use_op_size(); } inline void SortBy::clear_use_op() { _impl_.use_op_.Clear(); } inline ::pg_query::Node* SortBy::mutable_use_op(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SortBy.use_op) return _impl_.use_op_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SortBy::mutable_use_op() { // @@protoc_insertion_point(field_mutable_list:pg_query.SortBy.use_op) return &_impl_.use_op_; } inline const ::pg_query::Node& SortBy::_internal_use_op(int index) const { return _impl_.use_op_.Get(index); } inline const ::pg_query::Node& SortBy::use_op(int index) const { // @@protoc_insertion_point(field_get:pg_query.SortBy.use_op) return _internal_use_op(index); } inline ::pg_query::Node* SortBy::_internal_add_use_op() { return _impl_.use_op_.Add(); } inline ::pg_query::Node* SortBy::add_use_op() { ::pg_query::Node* _add = _internal_add_use_op(); // @@protoc_insertion_point(field_add:pg_query.SortBy.use_op) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SortBy::use_op() const { // @@protoc_insertion_point(field_list:pg_query.SortBy.use_op) return _impl_.use_op_; } // int32 location = 5 [json_name = "location"]; inline void SortBy::clear_location() { _impl_.location_ = 0; } inline int32_t SortBy::_internal_location() const { return _impl_.location_; } inline int32_t SortBy::location() const { // @@protoc_insertion_point(field_get:pg_query.SortBy.location) return _internal_location(); } inline void SortBy::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void SortBy::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.SortBy.location) } // ------------------------------------------------------------------- // WindowDef // string name = 1 [json_name = "name"]; inline void WindowDef::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& WindowDef::name() const { // @@protoc_insertion_point(field_get:pg_query.WindowDef.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void WindowDef::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.WindowDef.name) } inline std::string* WindowDef::mutable_name() { 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 { return _impl_.name_.Get(); } inline void WindowDef::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* WindowDef::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* WindowDef::release_name() { // @@protoc_insertion_point(field_release:pg_query.WindowDef.name) return _impl_.name_.Release(); } inline void WindowDef::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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() { _impl_.refname_.ClearToEmpty(); } inline const std::string& WindowDef::refname() const { // @@protoc_insertion_point(field_get:pg_query.WindowDef.refname) return _internal_refname(); } template inline PROTOBUF_ALWAYS_INLINE void WindowDef::set_refname(ArgT0&& arg0, ArgT... args) { _impl_.refname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.WindowDef.refname) } inline std::string* WindowDef::mutable_refname() { 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 { return _impl_.refname_.Get(); } inline void WindowDef::_internal_set_refname(const std::string& value) { _impl_.refname_.Set(value, GetArenaForAllocation()); } inline std::string* WindowDef::_internal_mutable_refname() { return _impl_.refname_.Mutable(GetArenaForAllocation()); } inline std::string* WindowDef::release_refname() { // @@protoc_insertion_point(field_release:pg_query.WindowDef.refname) return _impl_.refname_.Release(); } inline void WindowDef::set_allocated_refname(std::string* refname) { if (refname != nullptr) { } else { } _impl_.refname_.SetAllocated(refname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.refname_.IsDefault()) { _impl_.refname_.Set("", GetArenaForAllocation()); } #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 _impl_.partition_clause_.size(); } inline int WindowDef::partition_clause_size() const { return _internal_partition_clause_size(); } inline void WindowDef::clear_partition_clause() { _impl_.partition_clause_.Clear(); } inline ::pg_query::Node* WindowDef::mutable_partition_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.partition_clause) return _impl_.partition_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* WindowDef::mutable_partition_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.WindowDef.partition_clause) return &_impl_.partition_clause_; } inline const ::pg_query::Node& WindowDef::_internal_partition_clause(int index) const { return _impl_.partition_clause_.Get(index); } inline const ::pg_query::Node& WindowDef::partition_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.WindowDef.partition_clause) return _internal_partition_clause(index); } inline ::pg_query::Node* WindowDef::_internal_add_partition_clause() { return _impl_.partition_clause_.Add(); } inline ::pg_query::Node* WindowDef::add_partition_clause() { ::pg_query::Node* _add = _internal_add_partition_clause(); // @@protoc_insertion_point(field_add:pg_query.WindowDef.partition_clause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& WindowDef::partition_clause() const { // @@protoc_insertion_point(field_list:pg_query.WindowDef.partition_clause) return _impl_.partition_clause_; } // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; inline int WindowDef::_internal_order_clause_size() const { return _impl_.order_clause_.size(); } inline int WindowDef::order_clause_size() const { return _internal_order_clause_size(); } inline void WindowDef::clear_order_clause() { _impl_.order_clause_.Clear(); } inline ::pg_query::Node* WindowDef::mutable_order_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.order_clause) return _impl_.order_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* WindowDef::mutable_order_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.WindowDef.order_clause) return &_impl_.order_clause_; } inline const ::pg_query::Node& WindowDef::_internal_order_clause(int index) const { return _impl_.order_clause_.Get(index); } inline const ::pg_query::Node& WindowDef::order_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.WindowDef.order_clause) return _internal_order_clause(index); } inline ::pg_query::Node* WindowDef::_internal_add_order_clause() { return _impl_.order_clause_.Add(); } inline ::pg_query::Node* WindowDef::add_order_clause() { ::pg_query::Node* _add = _internal_add_order_clause(); // @@protoc_insertion_point(field_add:pg_query.WindowDef.order_clause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& WindowDef::order_clause() const { // @@protoc_insertion_point(field_list:pg_query.WindowDef.order_clause) return _impl_.order_clause_; } // int32 frame_options = 5 [json_name = "frameOptions"]; inline void WindowDef::clear_frame_options() { _impl_.frame_options_ = 0; } inline int32_t WindowDef::_internal_frame_options() const { return _impl_.frame_options_; } inline int32_t WindowDef::frame_options() const { // @@protoc_insertion_point(field_get:pg_query.WindowDef.frame_options) return _internal_frame_options(); } inline void WindowDef::_internal_set_frame_options(int32_t value) { _impl_.frame_options_ = value; } inline void WindowDef::set_frame_options(int32_t value) { _internal_set_frame_options(value); // @@protoc_insertion_point(field_set:pg_query.WindowDef.frame_options) } // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; inline bool WindowDef::_internal_has_start_offset() const { return this != internal_default_instance() && _impl_.start_offset_ != nullptr; } inline bool WindowDef::has_start_offset() const { return _internal_has_start_offset(); } inline void WindowDef::clear_start_offset() { if (GetArenaForAllocation() == nullptr && _impl_.start_offset_ != nullptr) { delete _impl_.start_offset_; } _impl_.start_offset_ = nullptr; } inline const ::pg_query::Node& WindowDef::_internal_start_offset() const { 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 { // @@protoc_insertion_point(field_get:pg_query.WindowDef.start_offset) return _internal_start_offset(); } inline void WindowDef::unsafe_arena_set_allocated_start_offset( ::pg_query::Node* start_offset) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.start_offset_); } _impl_.start_offset_ = start_offset; if (start_offset) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowDef.start_offset) } inline ::pg_query::Node* WindowDef::release_start_offset() { ::pg_query::Node* temp = _impl_.start_offset_; _impl_.start_offset_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* WindowDef::unsafe_arena_release_start_offset() { // @@protoc_insertion_point(field_release:pg_query.WindowDef.start_offset) ::pg_query::Node* temp = _impl_.start_offset_; _impl_.start_offset_ = nullptr; return temp; } inline ::pg_query::Node* WindowDef::_internal_mutable_start_offset() { if (_impl_.start_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.start_offset_ = p; } return _impl_.start_offset_; } inline ::pg_query::Node* WindowDef::mutable_start_offset() { ::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* start_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.start_offset_; } if (start_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(start_offset); if (message_arena != submessage_arena) { start_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, start_offset, submessage_arena); } } else { } _impl_.start_offset_ = start_offset; // @@protoc_insertion_point(field_set_allocated:pg_query.WindowDef.start_offset) } // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; inline bool WindowDef::_internal_has_end_offset() const { return this != internal_default_instance() && _impl_.end_offset_ != nullptr; } inline bool WindowDef::has_end_offset() const { return _internal_has_end_offset(); } inline void WindowDef::clear_end_offset() { if (GetArenaForAllocation() == nullptr && _impl_.end_offset_ != nullptr) { delete _impl_.end_offset_; } _impl_.end_offset_ = nullptr; } inline const ::pg_query::Node& WindowDef::_internal_end_offset() const { 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 { // @@protoc_insertion_point(field_get:pg_query.WindowDef.end_offset) return _internal_end_offset(); } inline void WindowDef::unsafe_arena_set_allocated_end_offset( ::pg_query::Node* end_offset) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.end_offset_); } _impl_.end_offset_ = end_offset; if (end_offset) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowDef.end_offset) } inline ::pg_query::Node* WindowDef::release_end_offset() { ::pg_query::Node* temp = _impl_.end_offset_; _impl_.end_offset_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* WindowDef::unsafe_arena_release_end_offset() { // @@protoc_insertion_point(field_release:pg_query.WindowDef.end_offset) ::pg_query::Node* temp = _impl_.end_offset_; _impl_.end_offset_ = nullptr; return temp; } inline ::pg_query::Node* WindowDef::_internal_mutable_end_offset() { if (_impl_.end_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.end_offset_ = p; } return _impl_.end_offset_; } inline ::pg_query::Node* WindowDef::mutable_end_offset() { ::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* end_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.end_offset_; } if (end_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(end_offset); if (message_arena != submessage_arena) { end_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, end_offset, submessage_arena); } } else { } _impl_.end_offset_ = end_offset; // @@protoc_insertion_point(field_set_allocated:pg_query.WindowDef.end_offset) } // int32 location = 8 [json_name = "location"]; inline void WindowDef::clear_location() { _impl_.location_ = 0; } inline int32_t WindowDef::_internal_location() const { return _impl_.location_; } inline int32_t WindowDef::location() const { // @@protoc_insertion_point(field_get:pg_query.WindowDef.location) return _internal_location(); } inline void WindowDef::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void WindowDef::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.WindowDef.location) } // ------------------------------------------------------------------- // RangeSubselect // bool lateral = 1 [json_name = "lateral"]; inline void RangeSubselect::clear_lateral() { _impl_.lateral_ = false; } inline bool RangeSubselect::_internal_lateral() const { return _impl_.lateral_; } inline bool RangeSubselect::lateral() const { // @@protoc_insertion_point(field_get:pg_query.RangeSubselect.lateral) return _internal_lateral(); } inline void RangeSubselect::_internal_set_lateral(bool value) { _impl_.lateral_ = value; } inline void RangeSubselect::set_lateral(bool value) { _internal_set_lateral(value); // @@protoc_insertion_point(field_set:pg_query.RangeSubselect.lateral) } // .pg_query.Node subquery = 2 [json_name = "subquery"]; inline bool RangeSubselect::_internal_has_subquery() const { return this != internal_default_instance() && _impl_.subquery_ != nullptr; } inline bool RangeSubselect::has_subquery() const { return _internal_has_subquery(); } inline void RangeSubselect::clear_subquery() { if (GetArenaForAllocation() == nullptr && _impl_.subquery_ != nullptr) { delete _impl_.subquery_; } _impl_.subquery_ = nullptr; } inline const ::pg_query::Node& RangeSubselect::_internal_subquery() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeSubselect.subquery) return _internal_subquery(); } inline void RangeSubselect::unsafe_arena_set_allocated_subquery( ::pg_query::Node* subquery) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.subquery_); } _impl_.subquery_ = subquery; if (subquery) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeSubselect.subquery) } inline ::pg_query::Node* RangeSubselect::release_subquery() { ::pg_query::Node* temp = _impl_.subquery_; _impl_.subquery_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* RangeSubselect::unsafe_arena_release_subquery() { // @@protoc_insertion_point(field_release:pg_query.RangeSubselect.subquery) ::pg_query::Node* temp = _impl_.subquery_; _impl_.subquery_ = nullptr; return temp; } inline ::pg_query::Node* RangeSubselect::_internal_mutable_subquery() { if (_impl_.subquery_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.subquery_ = p; } return _impl_.subquery_; } inline ::pg_query::Node* RangeSubselect::mutable_subquery() { ::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* subquery) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.subquery_; } if (subquery) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(subquery); if (message_arena != submessage_arena) { subquery = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, subquery, submessage_arena); } } else { } _impl_.subquery_ = subquery; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeSubselect.subquery) } // .pg_query.Alias alias = 3 [json_name = "alias"]; inline bool RangeSubselect::_internal_has_alias() const { return this != internal_default_instance() && _impl_.alias_ != nullptr; } inline bool RangeSubselect::has_alias() const { return _internal_has_alias(); } inline void RangeSubselect::clear_alias() { if (GetArenaForAllocation() == nullptr && _impl_.alias_ != nullptr) { delete _impl_.alias_; } _impl_.alias_ = nullptr; } inline const ::pg_query::Alias& RangeSubselect::_internal_alias() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeSubselect.alias) return _internal_alias(); } inline void RangeSubselect::unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.alias_); } _impl_.alias_ = alias; if (alias) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeSubselect.alias) } inline ::pg_query::Alias* RangeSubselect::release_alias() { ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Alias* RangeSubselect::unsafe_arena_release_alias() { // @@protoc_insertion_point(field_release:pg_query.RangeSubselect.alias) ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; return temp; } inline ::pg_query::Alias* RangeSubselect::_internal_mutable_alias() { if (_impl_.alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArenaForAllocation()); _impl_.alias_ = p; } return _impl_.alias_; } inline ::pg_query::Alias* RangeSubselect::mutable_alias() { ::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* alias) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.alias_; } if (alias) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(alias); if (message_arena != submessage_arena) { alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alias, submessage_arena); } } else { } _impl_.alias_ = alias; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeSubselect.alias) } // ------------------------------------------------------------------- // RangeFunction // bool lateral = 1 [json_name = "lateral"]; inline void RangeFunction::clear_lateral() { _impl_.lateral_ = false; } inline bool RangeFunction::_internal_lateral() const { return _impl_.lateral_; } inline bool RangeFunction::lateral() const { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.lateral) return _internal_lateral(); } inline void RangeFunction::_internal_set_lateral(bool value) { _impl_.lateral_ = value; } inline void RangeFunction::set_lateral(bool value) { _internal_set_lateral(value); // @@protoc_insertion_point(field_set:pg_query.RangeFunction.lateral) } // bool ordinality = 2 [json_name = "ordinality"]; inline void RangeFunction::clear_ordinality() { _impl_.ordinality_ = false; } inline bool RangeFunction::_internal_ordinality() const { return _impl_.ordinality_; } inline bool RangeFunction::ordinality() const { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.ordinality) return _internal_ordinality(); } inline void RangeFunction::_internal_set_ordinality(bool value) { _impl_.ordinality_ = value; } inline void RangeFunction::set_ordinality(bool value) { _internal_set_ordinality(value); // @@protoc_insertion_point(field_set:pg_query.RangeFunction.ordinality) } // bool is_rowsfrom = 3 [json_name = "is_rowsfrom"]; inline void RangeFunction::clear_is_rowsfrom() { _impl_.is_rowsfrom_ = false; } inline bool RangeFunction::_internal_is_rowsfrom() const { return _impl_.is_rowsfrom_; } inline bool RangeFunction::is_rowsfrom() const { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.is_rowsfrom) return _internal_is_rowsfrom(); } inline void RangeFunction::_internal_set_is_rowsfrom(bool value) { _impl_.is_rowsfrom_ = value; } inline void RangeFunction::set_is_rowsfrom(bool value) { _internal_set_is_rowsfrom(value); // @@protoc_insertion_point(field_set:pg_query.RangeFunction.is_rowsfrom) } // repeated .pg_query.Node functions = 4 [json_name = "functions"]; inline int RangeFunction::_internal_functions_size() const { return _impl_.functions_.size(); } inline int RangeFunction::functions_size() const { return _internal_functions_size(); } inline void RangeFunction::clear_functions() { _impl_.functions_.Clear(); } inline ::pg_query::Node* RangeFunction::mutable_functions(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeFunction.functions) return _impl_.functions_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeFunction::mutable_functions() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeFunction.functions) return &_impl_.functions_; } inline const ::pg_query::Node& RangeFunction::_internal_functions(int index) const { return _impl_.functions_.Get(index); } inline const ::pg_query::Node& RangeFunction::functions(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.functions) return _internal_functions(index); } inline ::pg_query::Node* RangeFunction::_internal_add_functions() { return _impl_.functions_.Add(); } inline ::pg_query::Node* RangeFunction::add_functions() { ::pg_query::Node* _add = _internal_add_functions(); // @@protoc_insertion_point(field_add:pg_query.RangeFunction.functions) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeFunction::functions() const { // @@protoc_insertion_point(field_list:pg_query.RangeFunction.functions) return _impl_.functions_; } // .pg_query.Alias alias = 5 [json_name = "alias"]; inline bool RangeFunction::_internal_has_alias() const { return this != internal_default_instance() && _impl_.alias_ != nullptr; } inline bool RangeFunction::has_alias() const { return _internal_has_alias(); } inline void RangeFunction::clear_alias() { if (GetArenaForAllocation() == nullptr && _impl_.alias_ != nullptr) { delete _impl_.alias_; } _impl_.alias_ = nullptr; } inline const ::pg_query::Alias& RangeFunction::_internal_alias() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.alias) return _internal_alias(); } inline void RangeFunction::unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.alias_); } _impl_.alias_ = alias; if (alias) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeFunction.alias) } inline ::pg_query::Alias* RangeFunction::release_alias() { ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Alias* RangeFunction::unsafe_arena_release_alias() { // @@protoc_insertion_point(field_release:pg_query.RangeFunction.alias) ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; return temp; } inline ::pg_query::Alias* RangeFunction::_internal_mutable_alias() { if (_impl_.alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArenaForAllocation()); _impl_.alias_ = p; } return _impl_.alias_; } inline ::pg_query::Alias* RangeFunction::mutable_alias() { ::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* alias) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.alias_; } if (alias) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(alias); if (message_arena != submessage_arena) { alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alias, submessage_arena); } } else { } _impl_.alias_ = alias; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeFunction.alias) } // repeated .pg_query.Node coldeflist = 6 [json_name = "coldeflist"]; inline int RangeFunction::_internal_coldeflist_size() const { return _impl_.coldeflist_.size(); } inline int RangeFunction::coldeflist_size() const { return _internal_coldeflist_size(); } inline void RangeFunction::clear_coldeflist() { _impl_.coldeflist_.Clear(); } inline ::pg_query::Node* RangeFunction::mutable_coldeflist(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeFunction.coldeflist) return _impl_.coldeflist_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeFunction::mutable_coldeflist() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeFunction.coldeflist) return &_impl_.coldeflist_; } inline const ::pg_query::Node& RangeFunction::_internal_coldeflist(int index) const { return _impl_.coldeflist_.Get(index); } inline const ::pg_query::Node& RangeFunction::coldeflist(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.coldeflist) return _internal_coldeflist(index); } inline ::pg_query::Node* RangeFunction::_internal_add_coldeflist() { return _impl_.coldeflist_.Add(); } inline ::pg_query::Node* RangeFunction::add_coldeflist() { ::pg_query::Node* _add = _internal_add_coldeflist(); // @@protoc_insertion_point(field_add:pg_query.RangeFunction.coldeflist) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeFunction::coldeflist() const { // @@protoc_insertion_point(field_list:pg_query.RangeFunction.coldeflist) return _impl_.coldeflist_; } // ------------------------------------------------------------------- // RangeTableSample // .pg_query.Node relation = 1 [json_name = "relation"]; inline bool RangeTableSample::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool RangeTableSample::has_relation() const { return _internal_has_relation(); } inline void RangeTableSample::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::Node& RangeTableSample::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.relation) return _internal_relation(); } inline void RangeTableSample::unsafe_arena_set_allocated_relation( ::pg_query::Node* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableSample.relation) } inline ::pg_query::Node* RangeTableSample::release_relation() { ::pg_query::Node* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* RangeTableSample::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.RangeTableSample.relation) ::pg_query::Node* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableSample::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::Node* RangeTableSample::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableSample.relation) } // repeated .pg_query.Node method = 2 [json_name = "method"]; inline int RangeTableSample::_internal_method_size() const { return _impl_.method_.size(); } inline int RangeTableSample::method_size() const { return _internal_method_size(); } inline void RangeTableSample::clear_method() { _impl_.method_.Clear(); } inline ::pg_query::Node* RangeTableSample::mutable_method(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableSample.method) return _impl_.method_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTableSample::mutable_method() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTableSample.method) return &_impl_.method_; } inline const ::pg_query::Node& RangeTableSample::_internal_method(int index) const { return _impl_.method_.Get(index); } inline const ::pg_query::Node& RangeTableSample::method(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.method) return _internal_method(index); } inline ::pg_query::Node* RangeTableSample::_internal_add_method() { return _impl_.method_.Add(); } inline ::pg_query::Node* RangeTableSample::add_method() { ::pg_query::Node* _add = _internal_add_method(); // @@protoc_insertion_point(field_add:pg_query.RangeTableSample.method) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTableSample::method() const { // @@protoc_insertion_point(field_list:pg_query.RangeTableSample.method) return _impl_.method_; } // repeated .pg_query.Node args = 3 [json_name = "args"]; inline int RangeTableSample::_internal_args_size() const { return _impl_.args_.size(); } inline int RangeTableSample::args_size() const { return _internal_args_size(); } inline void RangeTableSample::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* RangeTableSample::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableSample.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTableSample::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTableSample.args) return &_impl_.args_; } inline const ::pg_query::Node& RangeTableSample::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& RangeTableSample::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.args) return _internal_args(index); } inline ::pg_query::Node* RangeTableSample::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* RangeTableSample::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.RangeTableSample.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTableSample::args() const { // @@protoc_insertion_point(field_list:pg_query.RangeTableSample.args) return _impl_.args_; } // .pg_query.Node repeatable = 4 [json_name = "repeatable"]; inline bool RangeTableSample::_internal_has_repeatable() const { return this != internal_default_instance() && _impl_.repeatable_ != nullptr; } inline bool RangeTableSample::has_repeatable() const { return _internal_has_repeatable(); } inline void RangeTableSample::clear_repeatable() { if (GetArenaForAllocation() == nullptr && _impl_.repeatable_ != nullptr) { delete _impl_.repeatable_; } _impl_.repeatable_ = nullptr; } inline const ::pg_query::Node& RangeTableSample::_internal_repeatable() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.repeatable) return _internal_repeatable(); } inline void RangeTableSample::unsafe_arena_set_allocated_repeatable( ::pg_query::Node* repeatable) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.repeatable_); } _impl_.repeatable_ = repeatable; if (repeatable) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableSample.repeatable) } inline ::pg_query::Node* RangeTableSample::release_repeatable() { ::pg_query::Node* temp = _impl_.repeatable_; _impl_.repeatable_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* RangeTableSample::unsafe_arena_release_repeatable() { // @@protoc_insertion_point(field_release:pg_query.RangeTableSample.repeatable) ::pg_query::Node* temp = _impl_.repeatable_; _impl_.repeatable_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableSample::_internal_mutable_repeatable() { if (_impl_.repeatable_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.repeatable_ = p; } return _impl_.repeatable_; } inline ::pg_query::Node* RangeTableSample::mutable_repeatable() { ::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* repeatable) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.repeatable_; } if (repeatable) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(repeatable); if (message_arena != submessage_arena) { repeatable = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, repeatable, submessage_arena); } } else { } _impl_.repeatable_ = repeatable; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableSample.repeatable) } // int32 location = 5 [json_name = "location"]; inline void RangeTableSample::clear_location() { _impl_.location_ = 0; } inline int32_t RangeTableSample::_internal_location() const { return _impl_.location_; } inline int32_t RangeTableSample::location() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.location) return _internal_location(); } inline void RangeTableSample::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void RangeTableSample::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableSample.location) } // ------------------------------------------------------------------- // RangeTableFunc // bool lateral = 1 [json_name = "lateral"]; inline void RangeTableFunc::clear_lateral() { _impl_.lateral_ = false; } inline bool RangeTableFunc::_internal_lateral() const { return _impl_.lateral_; } inline bool RangeTableFunc::lateral() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.lateral) return _internal_lateral(); } inline void RangeTableFunc::_internal_set_lateral(bool value) { _impl_.lateral_ = value; } inline void RangeTableFunc::set_lateral(bool value) { _internal_set_lateral(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableFunc.lateral) } // .pg_query.Node docexpr = 2 [json_name = "docexpr"]; inline bool RangeTableFunc::_internal_has_docexpr() const { return this != internal_default_instance() && _impl_.docexpr_ != nullptr; } inline bool RangeTableFunc::has_docexpr() const { return _internal_has_docexpr(); } inline void RangeTableFunc::clear_docexpr() { if (GetArenaForAllocation() == nullptr && _impl_.docexpr_ != nullptr) { delete _impl_.docexpr_; } _impl_.docexpr_ = nullptr; } inline const ::pg_query::Node& RangeTableFunc::_internal_docexpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.docexpr) return _internal_docexpr(); } inline void RangeTableFunc::unsafe_arena_set_allocated_docexpr( ::pg_query::Node* docexpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.docexpr_); } _impl_.docexpr_ = docexpr; if (docexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFunc.docexpr) } inline ::pg_query::Node* RangeTableFunc::release_docexpr() { ::pg_query::Node* temp = _impl_.docexpr_; _impl_.docexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* RangeTableFunc::unsafe_arena_release_docexpr() { // @@protoc_insertion_point(field_release:pg_query.RangeTableFunc.docexpr) ::pg_query::Node* temp = _impl_.docexpr_; _impl_.docexpr_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableFunc::_internal_mutable_docexpr() { if (_impl_.docexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.docexpr_ = p; } return _impl_.docexpr_; } inline ::pg_query::Node* RangeTableFunc::mutable_docexpr() { ::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* docexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.docexpr_; } if (docexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(docexpr); if (message_arena != submessage_arena) { docexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, docexpr, submessage_arena); } } else { } _impl_.docexpr_ = docexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFunc.docexpr) } // .pg_query.Node rowexpr = 3 [json_name = "rowexpr"]; inline bool RangeTableFunc::_internal_has_rowexpr() const { return this != internal_default_instance() && _impl_.rowexpr_ != nullptr; } inline bool RangeTableFunc::has_rowexpr() const { return _internal_has_rowexpr(); } inline void RangeTableFunc::clear_rowexpr() { if (GetArenaForAllocation() == nullptr && _impl_.rowexpr_ != nullptr) { delete _impl_.rowexpr_; } _impl_.rowexpr_ = nullptr; } inline const ::pg_query::Node& RangeTableFunc::_internal_rowexpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.rowexpr) return _internal_rowexpr(); } inline void RangeTableFunc::unsafe_arena_set_allocated_rowexpr( ::pg_query::Node* rowexpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.rowexpr_); } _impl_.rowexpr_ = rowexpr; if (rowexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFunc.rowexpr) } inline ::pg_query::Node* RangeTableFunc::release_rowexpr() { ::pg_query::Node* temp = _impl_.rowexpr_; _impl_.rowexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* RangeTableFunc::unsafe_arena_release_rowexpr() { // @@protoc_insertion_point(field_release:pg_query.RangeTableFunc.rowexpr) ::pg_query::Node* temp = _impl_.rowexpr_; _impl_.rowexpr_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableFunc::_internal_mutable_rowexpr() { if (_impl_.rowexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.rowexpr_ = p; } return _impl_.rowexpr_; } inline ::pg_query::Node* RangeTableFunc::mutable_rowexpr() { ::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* rowexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.rowexpr_; } if (rowexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(rowexpr); if (message_arena != submessage_arena) { rowexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, rowexpr, submessage_arena); } } else { } _impl_.rowexpr_ = rowexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFunc.rowexpr) } // repeated .pg_query.Node namespaces = 4 [json_name = "namespaces"]; inline int RangeTableFunc::_internal_namespaces_size() const { return _impl_.namespaces_.size(); } inline int RangeTableFunc::namespaces_size() const { return _internal_namespaces_size(); } inline void RangeTableFunc::clear_namespaces() { _impl_.namespaces_.Clear(); } inline ::pg_query::Node* RangeTableFunc::mutable_namespaces(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFunc.namespaces) return _impl_.namespaces_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTableFunc::mutable_namespaces() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTableFunc.namespaces) return &_impl_.namespaces_; } inline const ::pg_query::Node& RangeTableFunc::_internal_namespaces(int index) const { return _impl_.namespaces_.Get(index); } inline const ::pg_query::Node& RangeTableFunc::namespaces(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.namespaces) return _internal_namespaces(index); } inline ::pg_query::Node* RangeTableFunc::_internal_add_namespaces() { return _impl_.namespaces_.Add(); } inline ::pg_query::Node* RangeTableFunc::add_namespaces() { ::pg_query::Node* _add = _internal_add_namespaces(); // @@protoc_insertion_point(field_add:pg_query.RangeTableFunc.namespaces) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTableFunc::namespaces() const { // @@protoc_insertion_point(field_list:pg_query.RangeTableFunc.namespaces) return _impl_.namespaces_; } // repeated .pg_query.Node columns = 5 [json_name = "columns"]; inline int RangeTableFunc::_internal_columns_size() const { return _impl_.columns_.size(); } inline int RangeTableFunc::columns_size() const { return _internal_columns_size(); } inline void RangeTableFunc::clear_columns() { _impl_.columns_.Clear(); } inline ::pg_query::Node* RangeTableFunc::mutable_columns(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFunc.columns) return _impl_.columns_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTableFunc::mutable_columns() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTableFunc.columns) return &_impl_.columns_; } inline const ::pg_query::Node& RangeTableFunc::_internal_columns(int index) const { return _impl_.columns_.Get(index); } inline const ::pg_query::Node& RangeTableFunc::columns(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.columns) return _internal_columns(index); } inline ::pg_query::Node* RangeTableFunc::_internal_add_columns() { return _impl_.columns_.Add(); } inline ::pg_query::Node* RangeTableFunc::add_columns() { ::pg_query::Node* _add = _internal_add_columns(); // @@protoc_insertion_point(field_add:pg_query.RangeTableFunc.columns) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTableFunc::columns() const { // @@protoc_insertion_point(field_list:pg_query.RangeTableFunc.columns) return _impl_.columns_; } // .pg_query.Alias alias = 6 [json_name = "alias"]; inline bool RangeTableFunc::_internal_has_alias() const { return this != internal_default_instance() && _impl_.alias_ != nullptr; } inline bool RangeTableFunc::has_alias() const { return _internal_has_alias(); } inline void RangeTableFunc::clear_alias() { if (GetArenaForAllocation() == nullptr && _impl_.alias_ != nullptr) { delete _impl_.alias_; } _impl_.alias_ = nullptr; } inline const ::pg_query::Alias& RangeTableFunc::_internal_alias() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.alias) return _internal_alias(); } inline void RangeTableFunc::unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.alias_); } _impl_.alias_ = alias; if (alias) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFunc.alias) } inline ::pg_query::Alias* RangeTableFunc::release_alias() { ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Alias* RangeTableFunc::unsafe_arena_release_alias() { // @@protoc_insertion_point(field_release:pg_query.RangeTableFunc.alias) ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; return temp; } inline ::pg_query::Alias* RangeTableFunc::_internal_mutable_alias() { if (_impl_.alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArenaForAllocation()); _impl_.alias_ = p; } return _impl_.alias_; } inline ::pg_query::Alias* RangeTableFunc::mutable_alias() { ::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* alias) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.alias_; } if (alias) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(alias); if (message_arena != submessage_arena) { alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alias, submessage_arena); } } else { } _impl_.alias_ = alias; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFunc.alias) } // int32 location = 7 [json_name = "location"]; inline void RangeTableFunc::clear_location() { _impl_.location_ = 0; } inline int32_t RangeTableFunc::_internal_location() const { return _impl_.location_; } inline int32_t RangeTableFunc::location() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.location) return _internal_location(); } inline void RangeTableFunc::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void RangeTableFunc::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableFunc.location) } // ------------------------------------------------------------------- // RangeTableFuncCol // string colname = 1 [json_name = "colname"]; inline void RangeTableFuncCol::clear_colname() { _impl_.colname_.ClearToEmpty(); } inline const std::string& RangeTableFuncCol::colname() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.colname) return _internal_colname(); } template inline PROTOBUF_ALWAYS_INLINE void RangeTableFuncCol::set_colname(ArgT0&& arg0, ArgT... args) { _impl_.colname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.RangeTableFuncCol.colname) } inline std::string* RangeTableFuncCol::mutable_colname() { 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 { return _impl_.colname_.Get(); } inline void RangeTableFuncCol::_internal_set_colname(const std::string& value) { _impl_.colname_.Set(value, GetArenaForAllocation()); } inline std::string* RangeTableFuncCol::_internal_mutable_colname() { return _impl_.colname_.Mutable(GetArenaForAllocation()); } inline std::string* RangeTableFuncCol::release_colname() { // @@protoc_insertion_point(field_release:pg_query.RangeTableFuncCol.colname) return _impl_.colname_.Release(); } inline void RangeTableFuncCol::set_allocated_colname(std::string* colname) { if (colname != nullptr) { } else { } _impl_.colname_.SetAllocated(colname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.colname_.IsDefault()) { _impl_.colname_.Set("", GetArenaForAllocation()); } #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::_internal_has_type_name() const { return this != internal_default_instance() && _impl_.type_name_ != nullptr; } inline bool RangeTableFuncCol::has_type_name() const { return _internal_has_type_name(); } inline void RangeTableFuncCol::clear_type_name() { if (GetArenaForAllocation() == nullptr && _impl_.type_name_ != nullptr) { delete _impl_.type_name_; } _impl_.type_name_ = nullptr; } inline const ::pg_query::TypeName& RangeTableFuncCol::_internal_type_name() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.type_name) return _internal_type_name(); } inline void RangeTableFuncCol::unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.type_name_); } _impl_.type_name_ = type_name; if (type_name) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFuncCol.type_name) } inline ::pg_query::TypeName* RangeTableFuncCol::release_type_name() { ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::TypeName* RangeTableFuncCol::unsafe_arena_release_type_name() { // @@protoc_insertion_point(field_release:pg_query.RangeTableFuncCol.type_name) ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* RangeTableFuncCol::_internal_mutable_type_name() { if (_impl_.type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArenaForAllocation()); _impl_.type_name_ = p; } return _impl_.type_name_; } inline ::pg_query::TypeName* RangeTableFuncCol::mutable_type_name() { ::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* type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.type_name_; } if (type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(type_name); if (message_arena != submessage_arena) { type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, type_name, submessage_arena); } } else { } _impl_.type_name_ = type_name; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFuncCol.type_name) } // bool for_ordinality = 3 [json_name = "for_ordinality"]; inline void RangeTableFuncCol::clear_for_ordinality() { _impl_.for_ordinality_ = false; } inline bool RangeTableFuncCol::_internal_for_ordinality() const { return _impl_.for_ordinality_; } inline bool RangeTableFuncCol::for_ordinality() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.for_ordinality) return _internal_for_ordinality(); } inline void RangeTableFuncCol::_internal_set_for_ordinality(bool value) { _impl_.for_ordinality_ = value; } inline void RangeTableFuncCol::set_for_ordinality(bool value) { _internal_set_for_ordinality(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableFuncCol.for_ordinality) } // bool is_not_null = 4 [json_name = "is_not_null"]; inline void RangeTableFuncCol::clear_is_not_null() { _impl_.is_not_null_ = false; } inline bool RangeTableFuncCol::_internal_is_not_null() const { return _impl_.is_not_null_; } inline bool RangeTableFuncCol::is_not_null() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.is_not_null) return _internal_is_not_null(); } inline void RangeTableFuncCol::_internal_set_is_not_null(bool value) { _impl_.is_not_null_ = value; } inline void RangeTableFuncCol::set_is_not_null(bool value) { _internal_set_is_not_null(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableFuncCol.is_not_null) } // .pg_query.Node colexpr = 5 [json_name = "colexpr"]; inline bool RangeTableFuncCol::_internal_has_colexpr() const { return this != internal_default_instance() && _impl_.colexpr_ != nullptr; } inline bool RangeTableFuncCol::has_colexpr() const { return _internal_has_colexpr(); } inline void RangeTableFuncCol::clear_colexpr() { if (GetArenaForAllocation() == nullptr && _impl_.colexpr_ != nullptr) { delete _impl_.colexpr_; } _impl_.colexpr_ = nullptr; } inline const ::pg_query::Node& RangeTableFuncCol::_internal_colexpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.colexpr) return _internal_colexpr(); } inline void RangeTableFuncCol::unsafe_arena_set_allocated_colexpr( ::pg_query::Node* colexpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.colexpr_); } _impl_.colexpr_ = colexpr; if (colexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFuncCol.colexpr) } inline ::pg_query::Node* RangeTableFuncCol::release_colexpr() { ::pg_query::Node* temp = _impl_.colexpr_; _impl_.colexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* RangeTableFuncCol::unsafe_arena_release_colexpr() { // @@protoc_insertion_point(field_release:pg_query.RangeTableFuncCol.colexpr) ::pg_query::Node* temp = _impl_.colexpr_; _impl_.colexpr_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableFuncCol::_internal_mutable_colexpr() { if (_impl_.colexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.colexpr_ = p; } return _impl_.colexpr_; } inline ::pg_query::Node* RangeTableFuncCol::mutable_colexpr() { ::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* colexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.colexpr_; } if (colexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(colexpr); if (message_arena != submessage_arena) { colexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, colexpr, submessage_arena); } } else { } _impl_.colexpr_ = colexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFuncCol.colexpr) } // .pg_query.Node coldefexpr = 6 [json_name = "coldefexpr"]; inline bool RangeTableFuncCol::_internal_has_coldefexpr() const { return this != internal_default_instance() && _impl_.coldefexpr_ != nullptr; } inline bool RangeTableFuncCol::has_coldefexpr() const { return _internal_has_coldefexpr(); } inline void RangeTableFuncCol::clear_coldefexpr() { if (GetArenaForAllocation() == nullptr && _impl_.coldefexpr_ != nullptr) { delete _impl_.coldefexpr_; } _impl_.coldefexpr_ = nullptr; } inline const ::pg_query::Node& RangeTableFuncCol::_internal_coldefexpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.coldefexpr) return _internal_coldefexpr(); } inline void RangeTableFuncCol::unsafe_arena_set_allocated_coldefexpr( ::pg_query::Node* coldefexpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.coldefexpr_); } _impl_.coldefexpr_ = coldefexpr; if (coldefexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFuncCol.coldefexpr) } inline ::pg_query::Node* RangeTableFuncCol::release_coldefexpr() { ::pg_query::Node* temp = _impl_.coldefexpr_; _impl_.coldefexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* RangeTableFuncCol::unsafe_arena_release_coldefexpr() { // @@protoc_insertion_point(field_release:pg_query.RangeTableFuncCol.coldefexpr) ::pg_query::Node* temp = _impl_.coldefexpr_; _impl_.coldefexpr_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableFuncCol::_internal_mutable_coldefexpr() { if (_impl_.coldefexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.coldefexpr_ = p; } return _impl_.coldefexpr_; } inline ::pg_query::Node* RangeTableFuncCol::mutable_coldefexpr() { ::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* coldefexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.coldefexpr_; } if (coldefexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(coldefexpr); if (message_arena != submessage_arena) { coldefexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, coldefexpr, submessage_arena); } } else { } _impl_.coldefexpr_ = coldefexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFuncCol.coldefexpr) } // int32 location = 7 [json_name = "location"]; inline void RangeTableFuncCol::clear_location() { _impl_.location_ = 0; } inline int32_t RangeTableFuncCol::_internal_location() const { return _impl_.location_; } inline int32_t RangeTableFuncCol::location() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.location) return _internal_location(); } inline void RangeTableFuncCol::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void RangeTableFuncCol::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableFuncCol.location) } // ------------------------------------------------------------------- // TypeName // repeated .pg_query.Node names = 1 [json_name = "names"]; inline int TypeName::_internal_names_size() const { return _impl_.names_.size(); } inline int TypeName::names_size() const { return _internal_names_size(); } inline void TypeName::clear_names() { _impl_.names_.Clear(); } inline ::pg_query::Node* TypeName::mutable_names(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TypeName.names) return _impl_.names_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TypeName::mutable_names() { // @@protoc_insertion_point(field_mutable_list:pg_query.TypeName.names) return &_impl_.names_; } inline const ::pg_query::Node& TypeName::_internal_names(int index) const { return _impl_.names_.Get(index); } inline const ::pg_query::Node& TypeName::names(int index) const { // @@protoc_insertion_point(field_get:pg_query.TypeName.names) return _internal_names(index); } inline ::pg_query::Node* TypeName::_internal_add_names() { return _impl_.names_.Add(); } inline ::pg_query::Node* TypeName::add_names() { ::pg_query::Node* _add = _internal_add_names(); // @@protoc_insertion_point(field_add:pg_query.TypeName.names) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TypeName::names() const { // @@protoc_insertion_point(field_list:pg_query.TypeName.names) return _impl_.names_; } // uint32 type_oid = 2 [json_name = "typeOid"]; inline void TypeName::clear_type_oid() { _impl_.type_oid_ = 0u; } inline uint32_t TypeName::_internal_type_oid() const { return _impl_.type_oid_; } inline uint32_t TypeName::type_oid() const { // @@protoc_insertion_point(field_get:pg_query.TypeName.type_oid) return _internal_type_oid(); } inline void TypeName::_internal_set_type_oid(uint32_t value) { _impl_.type_oid_ = value; } inline void TypeName::set_type_oid(uint32_t value) { _internal_set_type_oid(value); // @@protoc_insertion_point(field_set:pg_query.TypeName.type_oid) } // bool setof = 3 [json_name = "setof"]; inline void TypeName::clear_setof() { _impl_.setof_ = false; } inline bool TypeName::_internal_setof() const { return _impl_.setof_; } inline bool TypeName::setof() const { // @@protoc_insertion_point(field_get:pg_query.TypeName.setof) return _internal_setof(); } inline void TypeName::_internal_set_setof(bool value) { _impl_.setof_ = value; } inline void TypeName::set_setof(bool value) { _internal_set_setof(value); // @@protoc_insertion_point(field_set:pg_query.TypeName.setof) } // bool pct_type = 4 [json_name = "pct_type"]; inline void TypeName::clear_pct_type() { _impl_.pct_type_ = false; } inline bool TypeName::_internal_pct_type() const { return _impl_.pct_type_; } inline bool TypeName::pct_type() const { // @@protoc_insertion_point(field_get:pg_query.TypeName.pct_type) return _internal_pct_type(); } inline void TypeName::_internal_set_pct_type(bool value) { _impl_.pct_type_ = value; } inline void TypeName::set_pct_type(bool value) { _internal_set_pct_type(value); // @@protoc_insertion_point(field_set:pg_query.TypeName.pct_type) } // repeated .pg_query.Node typmods = 5 [json_name = "typmods"]; inline int TypeName::_internal_typmods_size() const { return _impl_.typmods_.size(); } inline int TypeName::typmods_size() const { return _internal_typmods_size(); } inline void TypeName::clear_typmods() { _impl_.typmods_.Clear(); } inline ::pg_query::Node* TypeName::mutable_typmods(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TypeName.typmods) return _impl_.typmods_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TypeName::mutable_typmods() { // @@protoc_insertion_point(field_mutable_list:pg_query.TypeName.typmods) return &_impl_.typmods_; } inline const ::pg_query::Node& TypeName::_internal_typmods(int index) const { return _impl_.typmods_.Get(index); } inline const ::pg_query::Node& TypeName::typmods(int index) const { // @@protoc_insertion_point(field_get:pg_query.TypeName.typmods) return _internal_typmods(index); } inline ::pg_query::Node* TypeName::_internal_add_typmods() { return _impl_.typmods_.Add(); } inline ::pg_query::Node* TypeName::add_typmods() { ::pg_query::Node* _add = _internal_add_typmods(); // @@protoc_insertion_point(field_add:pg_query.TypeName.typmods) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TypeName::typmods() const { // @@protoc_insertion_point(field_list:pg_query.TypeName.typmods) return _impl_.typmods_; } // int32 typemod = 6 [json_name = "typemod"]; inline void TypeName::clear_typemod() { _impl_.typemod_ = 0; } inline int32_t TypeName::_internal_typemod() const { return _impl_.typemod_; } inline int32_t TypeName::typemod() const { // @@protoc_insertion_point(field_get:pg_query.TypeName.typemod) return _internal_typemod(); } inline void TypeName::_internal_set_typemod(int32_t value) { _impl_.typemod_ = value; } inline void TypeName::set_typemod(int32_t value) { _internal_set_typemod(value); // @@protoc_insertion_point(field_set:pg_query.TypeName.typemod) } // repeated .pg_query.Node array_bounds = 7 [json_name = "arrayBounds"]; inline int TypeName::_internal_array_bounds_size() const { return _impl_.array_bounds_.size(); } inline int TypeName::array_bounds_size() const { return _internal_array_bounds_size(); } inline void TypeName::clear_array_bounds() { _impl_.array_bounds_.Clear(); } inline ::pg_query::Node* TypeName::mutable_array_bounds(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TypeName.array_bounds) return _impl_.array_bounds_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TypeName::mutable_array_bounds() { // @@protoc_insertion_point(field_mutable_list:pg_query.TypeName.array_bounds) return &_impl_.array_bounds_; } inline const ::pg_query::Node& TypeName::_internal_array_bounds(int index) const { return _impl_.array_bounds_.Get(index); } inline const ::pg_query::Node& TypeName::array_bounds(int index) const { // @@protoc_insertion_point(field_get:pg_query.TypeName.array_bounds) return _internal_array_bounds(index); } inline ::pg_query::Node* TypeName::_internal_add_array_bounds() { return _impl_.array_bounds_.Add(); } inline ::pg_query::Node* TypeName::add_array_bounds() { ::pg_query::Node* _add = _internal_add_array_bounds(); // @@protoc_insertion_point(field_add:pg_query.TypeName.array_bounds) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TypeName::array_bounds() const { // @@protoc_insertion_point(field_list:pg_query.TypeName.array_bounds) return _impl_.array_bounds_; } // int32 location = 8 [json_name = "location"]; inline void TypeName::clear_location() { _impl_.location_ = 0; } inline int32_t TypeName::_internal_location() const { return _impl_.location_; } inline int32_t TypeName::location() const { // @@protoc_insertion_point(field_get:pg_query.TypeName.location) return _internal_location(); } inline void TypeName::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void TypeName::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.TypeName.location) } // ------------------------------------------------------------------- // ColumnDef // string colname = 1 [json_name = "colname"]; inline void ColumnDef::clear_colname() { _impl_.colname_.ClearToEmpty(); } inline const std::string& ColumnDef::colname() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.colname) return _internal_colname(); } template inline PROTOBUF_ALWAYS_INLINE void ColumnDef::set_colname(ArgT0&& arg0, ArgT... args) { _impl_.colname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.colname) } inline std::string* ColumnDef::mutable_colname() { 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 { return _impl_.colname_.Get(); } inline void ColumnDef::_internal_set_colname(const std::string& value) { _impl_.colname_.Set(value, GetArenaForAllocation()); } inline std::string* ColumnDef::_internal_mutable_colname() { return _impl_.colname_.Mutable(GetArenaForAllocation()); } inline std::string* ColumnDef::release_colname() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.colname) return _impl_.colname_.Release(); } inline void ColumnDef::set_allocated_colname(std::string* colname) { if (colname != nullptr) { } else { } _impl_.colname_.SetAllocated(colname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.colname_.IsDefault()) { _impl_.colname_.Set("", GetArenaForAllocation()); } #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::_internal_has_type_name() const { return this != internal_default_instance() && _impl_.type_name_ != nullptr; } inline bool ColumnDef::has_type_name() const { return _internal_has_type_name(); } inline void ColumnDef::clear_type_name() { if (GetArenaForAllocation() == nullptr && _impl_.type_name_ != nullptr) { delete _impl_.type_name_; } _impl_.type_name_ = nullptr; } inline const ::pg_query::TypeName& ColumnDef::_internal_type_name() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.type_name) return _internal_type_name(); } inline void ColumnDef::unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.type_name_); } _impl_.type_name_ = type_name; if (type_name) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.type_name) } inline ::pg_query::TypeName* ColumnDef::release_type_name() { ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::TypeName* ColumnDef::unsafe_arena_release_type_name() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.type_name) ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* ColumnDef::_internal_mutable_type_name() { if (_impl_.type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArenaForAllocation()); _impl_.type_name_ = p; } return _impl_.type_name_; } inline ::pg_query::TypeName* ColumnDef::mutable_type_name() { ::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* type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.type_name_; } if (type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(type_name); if (message_arena != submessage_arena) { type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, type_name, submessage_arena); } } else { } _impl_.type_name_ = type_name; // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.type_name) } // string compression = 3 [json_name = "compression"]; inline void ColumnDef::clear_compression() { _impl_.compression_.ClearToEmpty(); } inline const std::string& ColumnDef::compression() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.compression) return _internal_compression(); } template inline PROTOBUF_ALWAYS_INLINE void ColumnDef::set_compression(ArgT0&& arg0, ArgT... args) { _impl_.compression_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.compression) } inline std::string* ColumnDef::mutable_compression() { 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 { return _impl_.compression_.Get(); } inline void ColumnDef::_internal_set_compression(const std::string& value) { _impl_.compression_.Set(value, GetArenaForAllocation()); } inline std::string* ColumnDef::_internal_mutable_compression() { return _impl_.compression_.Mutable(GetArenaForAllocation()); } inline std::string* ColumnDef::release_compression() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.compression) return _impl_.compression_.Release(); } inline void ColumnDef::set_allocated_compression(std::string* compression) { if (compression != nullptr) { } else { } _impl_.compression_.SetAllocated(compression, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.compression_.IsDefault()) { _impl_.compression_.Set("", GetArenaForAllocation()); } #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() { _impl_.inhcount_ = 0; } inline int32_t ColumnDef::_internal_inhcount() const { return _impl_.inhcount_; } inline int32_t ColumnDef::inhcount() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.inhcount) return _internal_inhcount(); } inline void ColumnDef::_internal_set_inhcount(int32_t value) { _impl_.inhcount_ = value; } inline void ColumnDef::set_inhcount(int32_t value) { _internal_set_inhcount(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.inhcount) } // bool is_local = 5 [json_name = "is_local"]; inline void ColumnDef::clear_is_local() { _impl_.is_local_ = false; } inline bool ColumnDef::_internal_is_local() const { return _impl_.is_local_; } inline bool ColumnDef::is_local() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.is_local) return _internal_is_local(); } inline void ColumnDef::_internal_set_is_local(bool value) { _impl_.is_local_ = value; } inline void ColumnDef::set_is_local(bool value) { _internal_set_is_local(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.is_local) } // bool is_not_null = 6 [json_name = "is_not_null"]; inline void ColumnDef::clear_is_not_null() { _impl_.is_not_null_ = false; } inline bool ColumnDef::_internal_is_not_null() const { return _impl_.is_not_null_; } inline bool ColumnDef::is_not_null() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.is_not_null) return _internal_is_not_null(); } inline void ColumnDef::_internal_set_is_not_null(bool value) { _impl_.is_not_null_ = value; } inline void ColumnDef::set_is_not_null(bool value) { _internal_set_is_not_null(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.is_not_null) } // bool is_from_type = 7 [json_name = "is_from_type"]; inline void ColumnDef::clear_is_from_type() { _impl_.is_from_type_ = false; } inline bool ColumnDef::_internal_is_from_type() const { return _impl_.is_from_type_; } inline bool ColumnDef::is_from_type() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.is_from_type) return _internal_is_from_type(); } inline void ColumnDef::_internal_set_is_from_type(bool value) { _impl_.is_from_type_ = value; } inline void ColumnDef::set_is_from_type(bool value) { _internal_set_is_from_type(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.is_from_type) } // string storage = 8 [json_name = "storage"]; inline void ColumnDef::clear_storage() { _impl_.storage_.ClearToEmpty(); } inline const std::string& ColumnDef::storage() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.storage) return _internal_storage(); } template inline PROTOBUF_ALWAYS_INLINE void ColumnDef::set_storage(ArgT0&& arg0, ArgT... args) { _impl_.storage_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.storage) } inline std::string* ColumnDef::mutable_storage() { 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 { return _impl_.storage_.Get(); } inline void ColumnDef::_internal_set_storage(const std::string& value) { _impl_.storage_.Set(value, GetArenaForAllocation()); } inline std::string* ColumnDef::_internal_mutable_storage() { return _impl_.storage_.Mutable(GetArenaForAllocation()); } inline std::string* ColumnDef::release_storage() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.storage) return _impl_.storage_.Release(); } inline void ColumnDef::set_allocated_storage(std::string* storage) { if (storage != nullptr) { } else { } _impl_.storage_.SetAllocated(storage, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.storage_.IsDefault()) { _impl_.storage_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.storage) } // .pg_query.Node raw_default = 9 [json_name = "raw_default"]; inline bool ColumnDef::_internal_has_raw_default() const { return this != internal_default_instance() && _impl_.raw_default_ != nullptr; } inline bool ColumnDef::has_raw_default() const { return _internal_has_raw_default(); } inline void ColumnDef::clear_raw_default() { if (GetArenaForAllocation() == nullptr && _impl_.raw_default_ != nullptr) { delete _impl_.raw_default_; } _impl_.raw_default_ = nullptr; } inline const ::pg_query::Node& ColumnDef::_internal_raw_default() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.raw_default) return _internal_raw_default(); } inline void ColumnDef::unsafe_arena_set_allocated_raw_default( ::pg_query::Node* raw_default) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.raw_default_); } _impl_.raw_default_ = raw_default; if (raw_default) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.raw_default) } inline ::pg_query::Node* ColumnDef::release_raw_default() { ::pg_query::Node* temp = _impl_.raw_default_; _impl_.raw_default_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* ColumnDef::unsafe_arena_release_raw_default() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.raw_default) ::pg_query::Node* temp = _impl_.raw_default_; _impl_.raw_default_ = nullptr; return temp; } inline ::pg_query::Node* ColumnDef::_internal_mutable_raw_default() { if (_impl_.raw_default_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.raw_default_ = p; } return _impl_.raw_default_; } inline ::pg_query::Node* ColumnDef::mutable_raw_default() { ::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* raw_default) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.raw_default_; } if (raw_default) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(raw_default); if (message_arena != submessage_arena) { raw_default = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, raw_default, submessage_arena); } } else { } _impl_.raw_default_ = raw_default; // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.raw_default) } // .pg_query.Node cooked_default = 10 [json_name = "cooked_default"]; inline bool ColumnDef::_internal_has_cooked_default() const { return this != internal_default_instance() && _impl_.cooked_default_ != nullptr; } inline bool ColumnDef::has_cooked_default() const { return _internal_has_cooked_default(); } inline void ColumnDef::clear_cooked_default() { if (GetArenaForAllocation() == nullptr && _impl_.cooked_default_ != nullptr) { delete _impl_.cooked_default_; } _impl_.cooked_default_ = nullptr; } inline const ::pg_query::Node& ColumnDef::_internal_cooked_default() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.cooked_default) return _internal_cooked_default(); } inline void ColumnDef::unsafe_arena_set_allocated_cooked_default( ::pg_query::Node* cooked_default) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.cooked_default_); } _impl_.cooked_default_ = cooked_default; if (cooked_default) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.cooked_default) } inline ::pg_query::Node* ColumnDef::release_cooked_default() { ::pg_query::Node* temp = _impl_.cooked_default_; _impl_.cooked_default_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* ColumnDef::unsafe_arena_release_cooked_default() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.cooked_default) ::pg_query::Node* temp = _impl_.cooked_default_; _impl_.cooked_default_ = nullptr; return temp; } inline ::pg_query::Node* ColumnDef::_internal_mutable_cooked_default() { if (_impl_.cooked_default_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.cooked_default_ = p; } return _impl_.cooked_default_; } inline ::pg_query::Node* ColumnDef::mutable_cooked_default() { ::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* cooked_default) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.cooked_default_; } if (cooked_default) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(cooked_default); if (message_arena != submessage_arena) { cooked_default = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, cooked_default, submessage_arena); } } else { } _impl_.cooked_default_ = cooked_default; // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.cooked_default) } // string identity = 11 [json_name = "identity"]; inline void ColumnDef::clear_identity() { _impl_.identity_.ClearToEmpty(); } inline const std::string& ColumnDef::identity() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.identity) return _internal_identity(); } template inline PROTOBUF_ALWAYS_INLINE void ColumnDef::set_identity(ArgT0&& arg0, ArgT... args) { _impl_.identity_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.identity) } inline std::string* ColumnDef::mutable_identity() { 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 { return _impl_.identity_.Get(); } inline void ColumnDef::_internal_set_identity(const std::string& value) { _impl_.identity_.Set(value, GetArenaForAllocation()); } inline std::string* ColumnDef::_internal_mutable_identity() { return _impl_.identity_.Mutable(GetArenaForAllocation()); } inline std::string* ColumnDef::release_identity() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.identity) return _impl_.identity_.Release(); } inline void ColumnDef::set_allocated_identity(std::string* identity) { if (identity != nullptr) { } else { } _impl_.identity_.SetAllocated(identity, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.identity_.IsDefault()) { _impl_.identity_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.identity) } // .pg_query.RangeVar identity_sequence = 12 [json_name = "identitySequence"]; inline bool ColumnDef::_internal_has_identity_sequence() const { return this != internal_default_instance() && _impl_.identity_sequence_ != nullptr; } inline bool ColumnDef::has_identity_sequence() const { return _internal_has_identity_sequence(); } inline void ColumnDef::clear_identity_sequence() { if (GetArenaForAllocation() == nullptr && _impl_.identity_sequence_ != nullptr) { delete _impl_.identity_sequence_; } _impl_.identity_sequence_ = nullptr; } inline const ::pg_query::RangeVar& ColumnDef::_internal_identity_sequence() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.identity_sequence) return _internal_identity_sequence(); } inline void ColumnDef::unsafe_arena_set_allocated_identity_sequence( ::pg_query::RangeVar* identity_sequence) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.identity_sequence_); } _impl_.identity_sequence_ = identity_sequence; if (identity_sequence) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.identity_sequence) } inline ::pg_query::RangeVar* ColumnDef::release_identity_sequence() { ::pg_query::RangeVar* temp = _impl_.identity_sequence_; _impl_.identity_sequence_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* ColumnDef::unsafe_arena_release_identity_sequence() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.identity_sequence) ::pg_query::RangeVar* temp = _impl_.identity_sequence_; _impl_.identity_sequence_ = nullptr; return temp; } inline ::pg_query::RangeVar* ColumnDef::_internal_mutable_identity_sequence() { if (_impl_.identity_sequence_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.identity_sequence_ = p; } return _impl_.identity_sequence_; } inline ::pg_query::RangeVar* ColumnDef::mutable_identity_sequence() { ::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* identity_sequence) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.identity_sequence_; } if (identity_sequence) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(identity_sequence); if (message_arena != submessage_arena) { identity_sequence = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, identity_sequence, submessage_arena); } } else { } _impl_.identity_sequence_ = identity_sequence; // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.identity_sequence) } // string generated = 13 [json_name = "generated"]; inline void ColumnDef::clear_generated() { _impl_.generated_.ClearToEmpty(); } inline const std::string& ColumnDef::generated() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.generated) return _internal_generated(); } template inline PROTOBUF_ALWAYS_INLINE void ColumnDef::set_generated(ArgT0&& arg0, ArgT... args) { _impl_.generated_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.generated) } inline std::string* ColumnDef::mutable_generated() { 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 { return _impl_.generated_.Get(); } inline void ColumnDef::_internal_set_generated(const std::string& value) { _impl_.generated_.Set(value, GetArenaForAllocation()); } inline std::string* ColumnDef::_internal_mutable_generated() { return _impl_.generated_.Mutable(GetArenaForAllocation()); } inline std::string* ColumnDef::release_generated() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.generated) return _impl_.generated_.Release(); } inline void ColumnDef::set_allocated_generated(std::string* generated) { if (generated != nullptr) { } else { } _impl_.generated_.SetAllocated(generated, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.generated_.IsDefault()) { _impl_.generated_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.generated) } // .pg_query.CollateClause coll_clause = 14 [json_name = "collClause"]; inline bool ColumnDef::_internal_has_coll_clause() const { return this != internal_default_instance() && _impl_.coll_clause_ != nullptr; } inline bool ColumnDef::has_coll_clause() const { return _internal_has_coll_clause(); } inline void ColumnDef::clear_coll_clause() { if (GetArenaForAllocation() == nullptr && _impl_.coll_clause_ != nullptr) { delete _impl_.coll_clause_; } _impl_.coll_clause_ = nullptr; } inline const ::pg_query::CollateClause& ColumnDef::_internal_coll_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.coll_clause) return _internal_coll_clause(); } inline void ColumnDef::unsafe_arena_set_allocated_coll_clause( ::pg_query::CollateClause* coll_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.coll_clause_); } _impl_.coll_clause_ = coll_clause; if (coll_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.coll_clause) } inline ::pg_query::CollateClause* ColumnDef::release_coll_clause() { ::pg_query::CollateClause* temp = _impl_.coll_clause_; _impl_.coll_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::CollateClause* ColumnDef::unsafe_arena_release_coll_clause() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.coll_clause) ::pg_query::CollateClause* temp = _impl_.coll_clause_; _impl_.coll_clause_ = nullptr; return temp; } inline ::pg_query::CollateClause* ColumnDef::_internal_mutable_coll_clause() { if (_impl_.coll_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::CollateClause>(GetArenaForAllocation()); _impl_.coll_clause_ = p; } return _impl_.coll_clause_; } inline ::pg_query::CollateClause* ColumnDef::mutable_coll_clause() { ::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* coll_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.coll_clause_; } if (coll_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(coll_clause); if (message_arena != submessage_arena) { coll_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, coll_clause, submessage_arena); } } else { } _impl_.coll_clause_ = coll_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.coll_clause) } // uint32 coll_oid = 15 [json_name = "collOid"]; inline void ColumnDef::clear_coll_oid() { _impl_.coll_oid_ = 0u; } inline uint32_t ColumnDef::_internal_coll_oid() const { return _impl_.coll_oid_; } inline uint32_t ColumnDef::coll_oid() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.coll_oid) return _internal_coll_oid(); } inline void ColumnDef::_internal_set_coll_oid(uint32_t value) { _impl_.coll_oid_ = value; } inline void ColumnDef::set_coll_oid(uint32_t value) { _internal_set_coll_oid(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.coll_oid) } // repeated .pg_query.Node constraints = 16 [json_name = "constraints"]; inline int ColumnDef::_internal_constraints_size() const { return _impl_.constraints_.size(); } inline int ColumnDef::constraints_size() const { return _internal_constraints_size(); } inline void ColumnDef::clear_constraints() { _impl_.constraints_.Clear(); } inline ::pg_query::Node* ColumnDef::mutable_constraints(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.constraints) return _impl_.constraints_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ColumnDef::mutable_constraints() { // @@protoc_insertion_point(field_mutable_list:pg_query.ColumnDef.constraints) return &_impl_.constraints_; } inline const ::pg_query::Node& ColumnDef::_internal_constraints(int index) const { return _impl_.constraints_.Get(index); } inline const ::pg_query::Node& ColumnDef::constraints(int index) const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.constraints) return _internal_constraints(index); } inline ::pg_query::Node* ColumnDef::_internal_add_constraints() { return _impl_.constraints_.Add(); } inline ::pg_query::Node* ColumnDef::add_constraints() { ::pg_query::Node* _add = _internal_add_constraints(); // @@protoc_insertion_point(field_add:pg_query.ColumnDef.constraints) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ColumnDef::constraints() const { // @@protoc_insertion_point(field_list:pg_query.ColumnDef.constraints) return _impl_.constraints_; } // repeated .pg_query.Node fdwoptions = 17 [json_name = "fdwoptions"]; inline int ColumnDef::_internal_fdwoptions_size() const { return _impl_.fdwoptions_.size(); } inline int ColumnDef::fdwoptions_size() const { return _internal_fdwoptions_size(); } inline void ColumnDef::clear_fdwoptions() { _impl_.fdwoptions_.Clear(); } inline ::pg_query::Node* ColumnDef::mutable_fdwoptions(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.fdwoptions) return _impl_.fdwoptions_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ColumnDef::mutable_fdwoptions() { // @@protoc_insertion_point(field_mutable_list:pg_query.ColumnDef.fdwoptions) return &_impl_.fdwoptions_; } inline const ::pg_query::Node& ColumnDef::_internal_fdwoptions(int index) const { return _impl_.fdwoptions_.Get(index); } inline const ::pg_query::Node& ColumnDef::fdwoptions(int index) const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.fdwoptions) return _internal_fdwoptions(index); } inline ::pg_query::Node* ColumnDef::_internal_add_fdwoptions() { return _impl_.fdwoptions_.Add(); } inline ::pg_query::Node* ColumnDef::add_fdwoptions() { ::pg_query::Node* _add = _internal_add_fdwoptions(); // @@protoc_insertion_point(field_add:pg_query.ColumnDef.fdwoptions) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ColumnDef::fdwoptions() const { // @@protoc_insertion_point(field_list:pg_query.ColumnDef.fdwoptions) return _impl_.fdwoptions_; } // int32 location = 18 [json_name = "location"]; inline void ColumnDef::clear_location() { _impl_.location_ = 0; } inline int32_t ColumnDef::_internal_location() const { return _impl_.location_; } inline int32_t ColumnDef::location() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.location) return _internal_location(); } inline void ColumnDef::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void ColumnDef::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.location) } // ------------------------------------------------------------------- // IndexElem // string name = 1 [json_name = "name"]; inline void IndexElem::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& IndexElem::name() const { // @@protoc_insertion_point(field_get:pg_query.IndexElem.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void IndexElem::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.IndexElem.name) } inline std::string* IndexElem::mutable_name() { 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 { return _impl_.name_.Get(); } inline void IndexElem::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* IndexElem::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* IndexElem::release_name() { // @@protoc_insertion_point(field_release:pg_query.IndexElem.name) return _impl_.name_.Release(); } inline void IndexElem::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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::_internal_has_expr() const { return this != internal_default_instance() && _impl_.expr_ != nullptr; } inline bool IndexElem::has_expr() const { return _internal_has_expr(); } inline void IndexElem::clear_expr() { if (GetArenaForAllocation() == nullptr && _impl_.expr_ != nullptr) { delete _impl_.expr_; } _impl_.expr_ = nullptr; } inline const ::pg_query::Node& IndexElem::_internal_expr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.IndexElem.expr) return _internal_expr(); } inline void IndexElem::unsafe_arena_set_allocated_expr( ::pg_query::Node* expr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.expr_); } _impl_.expr_ = expr; if (expr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IndexElem.expr) } inline ::pg_query::Node* IndexElem::release_expr() { ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* IndexElem::unsafe_arena_release_expr() { // @@protoc_insertion_point(field_release:pg_query.IndexElem.expr) ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::Node* IndexElem::_internal_mutable_expr() { if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.expr_ = p; } return _impl_.expr_; } inline ::pg_query::Node* IndexElem::mutable_expr() { ::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* expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.expr_; } if (expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(expr); if (message_arena != submessage_arena) { expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, expr, submessage_arena); } } else { } _impl_.expr_ = expr; // @@protoc_insertion_point(field_set_allocated:pg_query.IndexElem.expr) } // string indexcolname = 3 [json_name = "indexcolname"]; inline void IndexElem::clear_indexcolname() { _impl_.indexcolname_.ClearToEmpty(); } inline const std::string& IndexElem::indexcolname() const { // @@protoc_insertion_point(field_get:pg_query.IndexElem.indexcolname) return _internal_indexcolname(); } template inline PROTOBUF_ALWAYS_INLINE void IndexElem::set_indexcolname(ArgT0&& arg0, ArgT... args) { _impl_.indexcolname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.IndexElem.indexcolname) } inline std::string* IndexElem::mutable_indexcolname() { 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 { return _impl_.indexcolname_.Get(); } inline void IndexElem::_internal_set_indexcolname(const std::string& value) { _impl_.indexcolname_.Set(value, GetArenaForAllocation()); } inline std::string* IndexElem::_internal_mutable_indexcolname() { return _impl_.indexcolname_.Mutable(GetArenaForAllocation()); } inline std::string* IndexElem::release_indexcolname() { // @@protoc_insertion_point(field_release:pg_query.IndexElem.indexcolname) return _impl_.indexcolname_.Release(); } inline void IndexElem::set_allocated_indexcolname(std::string* indexcolname) { if (indexcolname != nullptr) { } else { } _impl_.indexcolname_.SetAllocated(indexcolname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.indexcolname_.IsDefault()) { _impl_.indexcolname_.Set("", GetArenaForAllocation()); } #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 _impl_.collation_.size(); } inline int IndexElem::collation_size() const { return _internal_collation_size(); } inline void IndexElem::clear_collation() { _impl_.collation_.Clear(); } inline ::pg_query::Node* IndexElem::mutable_collation(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.collation) return _impl_.collation_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IndexElem::mutable_collation() { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexElem.collation) return &_impl_.collation_; } inline const ::pg_query::Node& IndexElem::_internal_collation(int index) const { return _impl_.collation_.Get(index); } inline const ::pg_query::Node& IndexElem::collation(int index) const { // @@protoc_insertion_point(field_get:pg_query.IndexElem.collation) return _internal_collation(index); } inline ::pg_query::Node* IndexElem::_internal_add_collation() { return _impl_.collation_.Add(); } inline ::pg_query::Node* IndexElem::add_collation() { ::pg_query::Node* _add = _internal_add_collation(); // @@protoc_insertion_point(field_add:pg_query.IndexElem.collation) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IndexElem::collation() const { // @@protoc_insertion_point(field_list:pg_query.IndexElem.collation) return _impl_.collation_; } // repeated .pg_query.Node opclass = 5 [json_name = "opclass"]; inline int IndexElem::_internal_opclass_size() const { return _impl_.opclass_.size(); } inline int IndexElem::opclass_size() const { return _internal_opclass_size(); } inline void IndexElem::clear_opclass() { _impl_.opclass_.Clear(); } inline ::pg_query::Node* IndexElem::mutable_opclass(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.opclass) return _impl_.opclass_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IndexElem::mutable_opclass() { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexElem.opclass) return &_impl_.opclass_; } inline const ::pg_query::Node& IndexElem::_internal_opclass(int index) const { return _impl_.opclass_.Get(index); } inline const ::pg_query::Node& IndexElem::opclass(int index) const { // @@protoc_insertion_point(field_get:pg_query.IndexElem.opclass) return _internal_opclass(index); } inline ::pg_query::Node* IndexElem::_internal_add_opclass() { return _impl_.opclass_.Add(); } inline ::pg_query::Node* IndexElem::add_opclass() { ::pg_query::Node* _add = _internal_add_opclass(); // @@protoc_insertion_point(field_add:pg_query.IndexElem.opclass) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IndexElem::opclass() const { // @@protoc_insertion_point(field_list:pg_query.IndexElem.opclass) return _impl_.opclass_; } // repeated .pg_query.Node opclassopts = 6 [json_name = "opclassopts"]; inline int IndexElem::_internal_opclassopts_size() const { return _impl_.opclassopts_.size(); } inline int IndexElem::opclassopts_size() const { return _internal_opclassopts_size(); } inline void IndexElem::clear_opclassopts() { _impl_.opclassopts_.Clear(); } inline ::pg_query::Node* IndexElem::mutable_opclassopts(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.opclassopts) return _impl_.opclassopts_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IndexElem::mutable_opclassopts() { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexElem.opclassopts) return &_impl_.opclassopts_; } inline const ::pg_query::Node& IndexElem::_internal_opclassopts(int index) const { return _impl_.opclassopts_.Get(index); } inline const ::pg_query::Node& IndexElem::opclassopts(int index) const { // @@protoc_insertion_point(field_get:pg_query.IndexElem.opclassopts) return _internal_opclassopts(index); } inline ::pg_query::Node* IndexElem::_internal_add_opclassopts() { return _impl_.opclassopts_.Add(); } inline ::pg_query::Node* IndexElem::add_opclassopts() { ::pg_query::Node* _add = _internal_add_opclassopts(); // @@protoc_insertion_point(field_add:pg_query.IndexElem.opclassopts) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IndexElem::opclassopts() const { // @@protoc_insertion_point(field_list:pg_query.IndexElem.opclassopts) return _impl_.opclassopts_; } // .pg_query.SortByDir ordering = 7 [json_name = "ordering"]; inline void IndexElem::clear_ordering() { _impl_.ordering_ = 0; } inline ::pg_query::SortByDir IndexElem::_internal_ordering() const { return static_cast< ::pg_query::SortByDir >(_impl_.ordering_); } inline ::pg_query::SortByDir IndexElem::ordering() const { // @@protoc_insertion_point(field_get:pg_query.IndexElem.ordering) return _internal_ordering(); } inline void IndexElem::_internal_set_ordering(::pg_query::SortByDir value) { _impl_.ordering_ = value; } inline void IndexElem::set_ordering(::pg_query::SortByDir value) { _internal_set_ordering(value); // @@protoc_insertion_point(field_set:pg_query.IndexElem.ordering) } // .pg_query.SortByNulls nulls_ordering = 8 [json_name = "nulls_ordering"]; inline void IndexElem::clear_nulls_ordering() { _impl_.nulls_ordering_ = 0; } inline ::pg_query::SortByNulls IndexElem::_internal_nulls_ordering() const { return static_cast< ::pg_query::SortByNulls >(_impl_.nulls_ordering_); } inline ::pg_query::SortByNulls IndexElem::nulls_ordering() const { // @@protoc_insertion_point(field_get:pg_query.IndexElem.nulls_ordering) return _internal_nulls_ordering(); } inline void IndexElem::_internal_set_nulls_ordering(::pg_query::SortByNulls value) { _impl_.nulls_ordering_ = value; } inline void IndexElem::set_nulls_ordering(::pg_query::SortByNulls value) { _internal_set_nulls_ordering(value); // @@protoc_insertion_point(field_set:pg_query.IndexElem.nulls_ordering) } // ------------------------------------------------------------------- // StatsElem // string name = 1 [json_name = "name"]; inline void StatsElem::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& StatsElem::name() const { // @@protoc_insertion_point(field_get:pg_query.StatsElem.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void StatsElem::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.StatsElem.name) } inline std::string* StatsElem::mutable_name() { 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 { return _impl_.name_.Get(); } inline void StatsElem::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* StatsElem::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* StatsElem::release_name() { // @@protoc_insertion_point(field_release:pg_query.StatsElem.name) return _impl_.name_.Release(); } inline void StatsElem::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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::_internal_has_expr() const { return this != internal_default_instance() && _impl_.expr_ != nullptr; } inline bool StatsElem::has_expr() const { return _internal_has_expr(); } inline void StatsElem::clear_expr() { if (GetArenaForAllocation() == nullptr && _impl_.expr_ != nullptr) { delete _impl_.expr_; } _impl_.expr_ = nullptr; } inline const ::pg_query::Node& StatsElem::_internal_expr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.StatsElem.expr) return _internal_expr(); } inline void StatsElem::unsafe_arena_set_allocated_expr( ::pg_query::Node* expr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.expr_); } _impl_.expr_ = expr; if (expr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.StatsElem.expr) } inline ::pg_query::Node* StatsElem::release_expr() { ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* StatsElem::unsafe_arena_release_expr() { // @@protoc_insertion_point(field_release:pg_query.StatsElem.expr) ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::Node* StatsElem::_internal_mutable_expr() { if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.expr_ = p; } return _impl_.expr_; } inline ::pg_query::Node* StatsElem::mutable_expr() { ::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* expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.expr_; } if (expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(expr); if (message_arena != submessage_arena) { expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, expr, submessage_arena); } } else { } _impl_.expr_ = expr; // @@protoc_insertion_point(field_set_allocated:pg_query.StatsElem.expr) } // ------------------------------------------------------------------- // Constraint // .pg_query.ConstrType contype = 1 [json_name = "contype"]; inline void Constraint::clear_contype() { _impl_.contype_ = 0; } inline ::pg_query::ConstrType Constraint::_internal_contype() const { return static_cast< ::pg_query::ConstrType >(_impl_.contype_); } inline ::pg_query::ConstrType Constraint::contype() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.contype) return _internal_contype(); } inline void Constraint::_internal_set_contype(::pg_query::ConstrType value) { _impl_.contype_ = value; } inline void Constraint::set_contype(::pg_query::ConstrType value) { _internal_set_contype(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.contype) } // string conname = 2 [json_name = "conname"]; inline void Constraint::clear_conname() { _impl_.conname_.ClearToEmpty(); } inline const std::string& Constraint::conname() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.conname) return _internal_conname(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_conname(ArgT0&& arg0, ArgT... args) { _impl_.conname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.Constraint.conname) } inline std::string* Constraint::mutable_conname() { 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 { return _impl_.conname_.Get(); } inline void Constraint::_internal_set_conname(const std::string& value) { _impl_.conname_.Set(value, GetArenaForAllocation()); } inline std::string* Constraint::_internal_mutable_conname() { return _impl_.conname_.Mutable(GetArenaForAllocation()); } inline std::string* Constraint::release_conname() { // @@protoc_insertion_point(field_release:pg_query.Constraint.conname) return _impl_.conname_.Release(); } inline void Constraint::set_allocated_conname(std::string* conname) { if (conname != nullptr) { } else { } _impl_.conname_.SetAllocated(conname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.conname_.IsDefault()) { _impl_.conname_.Set("", GetArenaForAllocation()); } #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() { _impl_.deferrable_ = false; } inline bool Constraint::_internal_deferrable() const { return _impl_.deferrable_; } inline bool Constraint::deferrable() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.deferrable) return _internal_deferrable(); } inline void Constraint::_internal_set_deferrable(bool value) { _impl_.deferrable_ = value; } inline void Constraint::set_deferrable(bool value) { _internal_set_deferrable(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.deferrable) } // bool initdeferred = 4 [json_name = "initdeferred"]; inline void Constraint::clear_initdeferred() { _impl_.initdeferred_ = false; } inline bool Constraint::_internal_initdeferred() const { return _impl_.initdeferred_; } inline bool Constraint::initdeferred() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.initdeferred) return _internal_initdeferred(); } inline void Constraint::_internal_set_initdeferred(bool value) { _impl_.initdeferred_ = value; } inline void Constraint::set_initdeferred(bool value) { _internal_set_initdeferred(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.initdeferred) } // int32 location = 5 [json_name = "location"]; inline void Constraint::clear_location() { _impl_.location_ = 0; } inline int32_t Constraint::_internal_location() const { return _impl_.location_; } inline int32_t Constraint::location() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.location) return _internal_location(); } inline void Constraint::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void Constraint::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.location) } // bool is_no_inherit = 6 [json_name = "is_no_inherit"]; inline void Constraint::clear_is_no_inherit() { _impl_.is_no_inherit_ = false; } inline bool Constraint::_internal_is_no_inherit() const { return _impl_.is_no_inherit_; } inline bool Constraint::is_no_inherit() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.is_no_inherit) return _internal_is_no_inherit(); } inline void Constraint::_internal_set_is_no_inherit(bool value) { _impl_.is_no_inherit_ = value; } inline void Constraint::set_is_no_inherit(bool value) { _internal_set_is_no_inherit(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.is_no_inherit) } // .pg_query.Node raw_expr = 7 [json_name = "raw_expr"]; inline bool Constraint::_internal_has_raw_expr() const { return this != internal_default_instance() && _impl_.raw_expr_ != nullptr; } inline bool Constraint::has_raw_expr() const { return _internal_has_raw_expr(); } inline void Constraint::clear_raw_expr() { if (GetArenaForAllocation() == nullptr && _impl_.raw_expr_ != nullptr) { delete _impl_.raw_expr_; } _impl_.raw_expr_ = nullptr; } inline const ::pg_query::Node& Constraint::_internal_raw_expr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.Constraint.raw_expr) return _internal_raw_expr(); } inline void Constraint::unsafe_arena_set_allocated_raw_expr( ::pg_query::Node* raw_expr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.raw_expr_); } _impl_.raw_expr_ = raw_expr; if (raw_expr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Constraint.raw_expr) } inline ::pg_query::Node* Constraint::release_raw_expr() { ::pg_query::Node* temp = _impl_.raw_expr_; _impl_.raw_expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* Constraint::unsafe_arena_release_raw_expr() { // @@protoc_insertion_point(field_release:pg_query.Constraint.raw_expr) ::pg_query::Node* temp = _impl_.raw_expr_; _impl_.raw_expr_ = nullptr; return temp; } inline ::pg_query::Node* Constraint::_internal_mutable_raw_expr() { if (_impl_.raw_expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.raw_expr_ = p; } return _impl_.raw_expr_; } inline ::pg_query::Node* Constraint::mutable_raw_expr() { ::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* raw_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.raw_expr_; } if (raw_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(raw_expr); if (message_arena != submessage_arena) { raw_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, raw_expr, submessage_arena); } } else { } _impl_.raw_expr_ = raw_expr; // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.raw_expr) } // string cooked_expr = 8 [json_name = "cooked_expr"]; inline void Constraint::clear_cooked_expr() { _impl_.cooked_expr_.ClearToEmpty(); } inline const std::string& Constraint::cooked_expr() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.cooked_expr) return _internal_cooked_expr(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_cooked_expr(ArgT0&& arg0, ArgT... args) { _impl_.cooked_expr_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.Constraint.cooked_expr) } inline std::string* Constraint::mutable_cooked_expr() { 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 { return _impl_.cooked_expr_.Get(); } inline void Constraint::_internal_set_cooked_expr(const std::string& value) { _impl_.cooked_expr_.Set(value, GetArenaForAllocation()); } inline std::string* Constraint::_internal_mutable_cooked_expr() { return _impl_.cooked_expr_.Mutable(GetArenaForAllocation()); } inline std::string* Constraint::release_cooked_expr() { // @@protoc_insertion_point(field_release:pg_query.Constraint.cooked_expr) return _impl_.cooked_expr_.Release(); } inline void Constraint::set_allocated_cooked_expr(std::string* cooked_expr) { if (cooked_expr != nullptr) { } else { } _impl_.cooked_expr_.SetAllocated(cooked_expr, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.cooked_expr_.IsDefault()) { _impl_.cooked_expr_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.cooked_expr) } // string generated_when = 9 [json_name = "generated_when"]; inline void Constraint::clear_generated_when() { _impl_.generated_when_.ClearToEmpty(); } inline const std::string& Constraint::generated_when() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.generated_when) return _internal_generated_when(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_generated_when(ArgT0&& arg0, ArgT... args) { _impl_.generated_when_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.Constraint.generated_when) } inline std::string* Constraint::mutable_generated_when() { 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 { return _impl_.generated_when_.Get(); } inline void Constraint::_internal_set_generated_when(const std::string& value) { _impl_.generated_when_.Set(value, GetArenaForAllocation()); } inline std::string* Constraint::_internal_mutable_generated_when() { return _impl_.generated_when_.Mutable(GetArenaForAllocation()); } inline std::string* Constraint::release_generated_when() { // @@protoc_insertion_point(field_release:pg_query.Constraint.generated_when) return _impl_.generated_when_.Release(); } inline void Constraint::set_allocated_generated_when(std::string* generated_when) { if (generated_when != nullptr) { } else { } _impl_.generated_when_.SetAllocated(generated_when, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.generated_when_.IsDefault()) { _impl_.generated_when_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.generated_when) } // bool nulls_not_distinct = 10 [json_name = "nulls_not_distinct"]; inline void Constraint::clear_nulls_not_distinct() { _impl_.nulls_not_distinct_ = false; } inline bool Constraint::_internal_nulls_not_distinct() const { return _impl_.nulls_not_distinct_; } 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::_internal_set_nulls_not_distinct(bool value) { _impl_.nulls_not_distinct_ = value; } 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) } // repeated .pg_query.Node keys = 11 [json_name = "keys"]; inline int Constraint::_internal_keys_size() const { return _impl_.keys_.size(); } inline int Constraint::keys_size() const { return _internal_keys_size(); } inline void Constraint::clear_keys() { _impl_.keys_.Clear(); } inline ::pg_query::Node* Constraint::mutable_keys(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.keys) return _impl_.keys_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Constraint::mutable_keys() { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.keys) return &_impl_.keys_; } inline const ::pg_query::Node& Constraint::_internal_keys(int index) const { return _impl_.keys_.Get(index); } inline const ::pg_query::Node& Constraint::keys(int index) const { // @@protoc_insertion_point(field_get:pg_query.Constraint.keys) return _internal_keys(index); } inline ::pg_query::Node* Constraint::_internal_add_keys() { return _impl_.keys_.Add(); } inline ::pg_query::Node* Constraint::add_keys() { ::pg_query::Node* _add = _internal_add_keys(); // @@protoc_insertion_point(field_add:pg_query.Constraint.keys) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Constraint::keys() const { // @@protoc_insertion_point(field_list:pg_query.Constraint.keys) return _impl_.keys_; } // repeated .pg_query.Node including = 12 [json_name = "including"]; inline int Constraint::_internal_including_size() const { return _impl_.including_.size(); } inline int Constraint::including_size() const { return _internal_including_size(); } inline void Constraint::clear_including() { _impl_.including_.Clear(); } inline ::pg_query::Node* Constraint::mutable_including(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.including) return _impl_.including_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Constraint::mutable_including() { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.including) return &_impl_.including_; } inline const ::pg_query::Node& Constraint::_internal_including(int index) const { return _impl_.including_.Get(index); } inline const ::pg_query::Node& Constraint::including(int index) const { // @@protoc_insertion_point(field_get:pg_query.Constraint.including) return _internal_including(index); } inline ::pg_query::Node* Constraint::_internal_add_including() { return _impl_.including_.Add(); } inline ::pg_query::Node* Constraint::add_including() { ::pg_query::Node* _add = _internal_add_including(); // @@protoc_insertion_point(field_add:pg_query.Constraint.including) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Constraint::including() const { // @@protoc_insertion_point(field_list:pg_query.Constraint.including) return _impl_.including_; } // repeated .pg_query.Node exclusions = 13 [json_name = "exclusions"]; inline int Constraint::_internal_exclusions_size() const { return _impl_.exclusions_.size(); } inline int Constraint::exclusions_size() const { return _internal_exclusions_size(); } inline void Constraint::clear_exclusions() { _impl_.exclusions_.Clear(); } inline ::pg_query::Node* Constraint::mutable_exclusions(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.exclusions) return _impl_.exclusions_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Constraint::mutable_exclusions() { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.exclusions) return &_impl_.exclusions_; } inline const ::pg_query::Node& Constraint::_internal_exclusions(int index) const { return _impl_.exclusions_.Get(index); } inline const ::pg_query::Node& Constraint::exclusions(int index) const { // @@protoc_insertion_point(field_get:pg_query.Constraint.exclusions) return _internal_exclusions(index); } inline ::pg_query::Node* Constraint::_internal_add_exclusions() { return _impl_.exclusions_.Add(); } inline ::pg_query::Node* Constraint::add_exclusions() { ::pg_query::Node* _add = _internal_add_exclusions(); // @@protoc_insertion_point(field_add:pg_query.Constraint.exclusions) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Constraint::exclusions() const { // @@protoc_insertion_point(field_list:pg_query.Constraint.exclusions) return _impl_.exclusions_; } // repeated .pg_query.Node options = 14 [json_name = "options"]; inline int Constraint::_internal_options_size() const { return _impl_.options_.size(); } inline int Constraint::options_size() const { return _internal_options_size(); } inline void Constraint::clear_options() { _impl_.options_.Clear(); } inline ::pg_query::Node* Constraint::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.options) return _impl_.options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Constraint::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.options) return &_impl_.options_; } inline const ::pg_query::Node& Constraint::_internal_options(int index) const { return _impl_.options_.Get(index); } inline const ::pg_query::Node& Constraint::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.Constraint.options) return _internal_options(index); } inline ::pg_query::Node* Constraint::_internal_add_options() { return _impl_.options_.Add(); } inline ::pg_query::Node* Constraint::add_options() { ::pg_query::Node* _add = _internal_add_options(); // @@protoc_insertion_point(field_add:pg_query.Constraint.options) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Constraint::options() const { // @@protoc_insertion_point(field_list:pg_query.Constraint.options) return _impl_.options_; } // string indexname = 15 [json_name = "indexname"]; inline void Constraint::clear_indexname() { _impl_.indexname_.ClearToEmpty(); } inline const std::string& Constraint::indexname() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.indexname) return _internal_indexname(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_indexname(ArgT0&& arg0, ArgT... args) { _impl_.indexname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.Constraint.indexname) } inline std::string* Constraint::mutable_indexname() { 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 { return _impl_.indexname_.Get(); } inline void Constraint::_internal_set_indexname(const std::string& value) { _impl_.indexname_.Set(value, GetArenaForAllocation()); } inline std::string* Constraint::_internal_mutable_indexname() { return _impl_.indexname_.Mutable(GetArenaForAllocation()); } inline std::string* Constraint::release_indexname() { // @@protoc_insertion_point(field_release:pg_query.Constraint.indexname) return _impl_.indexname_.Release(); } inline void Constraint::set_allocated_indexname(std::string* indexname) { if (indexname != nullptr) { } else { } _impl_.indexname_.SetAllocated(indexname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.indexname_.IsDefault()) { _impl_.indexname_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.indexname) } // string indexspace = 16 [json_name = "indexspace"]; inline void Constraint::clear_indexspace() { _impl_.indexspace_.ClearToEmpty(); } inline const std::string& Constraint::indexspace() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.indexspace) return _internal_indexspace(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_indexspace(ArgT0&& arg0, ArgT... args) { _impl_.indexspace_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.Constraint.indexspace) } inline std::string* Constraint::mutable_indexspace() { 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 { return _impl_.indexspace_.Get(); } inline void Constraint::_internal_set_indexspace(const std::string& value) { _impl_.indexspace_.Set(value, GetArenaForAllocation()); } inline std::string* Constraint::_internal_mutable_indexspace() { return _impl_.indexspace_.Mutable(GetArenaForAllocation()); } inline std::string* Constraint::release_indexspace() { // @@protoc_insertion_point(field_release:pg_query.Constraint.indexspace) return _impl_.indexspace_.Release(); } inline void Constraint::set_allocated_indexspace(std::string* indexspace) { if (indexspace != nullptr) { } else { } _impl_.indexspace_.SetAllocated(indexspace, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.indexspace_.IsDefault()) { _impl_.indexspace_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.indexspace) } // bool reset_default_tblspc = 17 [json_name = "reset_default_tblspc"]; inline void Constraint::clear_reset_default_tblspc() { _impl_.reset_default_tblspc_ = false; } inline bool Constraint::_internal_reset_default_tblspc() const { return _impl_.reset_default_tblspc_; } inline bool Constraint::reset_default_tblspc() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.reset_default_tblspc) return _internal_reset_default_tblspc(); } inline void Constraint::_internal_set_reset_default_tblspc(bool value) { _impl_.reset_default_tblspc_ = value; } inline void Constraint::set_reset_default_tblspc(bool value) { _internal_set_reset_default_tblspc(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.reset_default_tblspc) } // string access_method = 18 [json_name = "access_method"]; inline void Constraint::clear_access_method() { _impl_.access_method_.ClearToEmpty(); } inline const std::string& Constraint::access_method() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.access_method) return _internal_access_method(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_access_method(ArgT0&& arg0, ArgT... args) { _impl_.access_method_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.Constraint.access_method) } inline std::string* Constraint::mutable_access_method() { 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 { return _impl_.access_method_.Get(); } inline void Constraint::_internal_set_access_method(const std::string& value) { _impl_.access_method_.Set(value, GetArenaForAllocation()); } inline std::string* Constraint::_internal_mutable_access_method() { return _impl_.access_method_.Mutable(GetArenaForAllocation()); } inline std::string* Constraint::release_access_method() { // @@protoc_insertion_point(field_release:pg_query.Constraint.access_method) return _impl_.access_method_.Release(); } inline void Constraint::set_allocated_access_method(std::string* access_method) { if (access_method != nullptr) { } else { } _impl_.access_method_.SetAllocated(access_method, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.access_method_.IsDefault()) { _impl_.access_method_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.access_method) } // .pg_query.Node where_clause = 19 [json_name = "where_clause"]; inline bool Constraint::_internal_has_where_clause() const { return this != internal_default_instance() && _impl_.where_clause_ != nullptr; } inline bool Constraint::has_where_clause() const { return _internal_has_where_clause(); } inline void Constraint::clear_where_clause() { if (GetArenaForAllocation() == nullptr && _impl_.where_clause_ != nullptr) { delete _impl_.where_clause_; } _impl_.where_clause_ = nullptr; } inline const ::pg_query::Node& Constraint::_internal_where_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.Constraint.where_clause) return _internal_where_clause(); } inline void Constraint::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Constraint.where_clause) } inline ::pg_query::Node* Constraint::release_where_clause() { ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* Constraint::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.Constraint.where_clause) ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* Constraint::_internal_mutable_where_clause() { if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.where_clause_ = p; } return _impl_.where_clause_; } inline ::pg_query::Node* Constraint::mutable_where_clause() { ::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* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } _impl_.where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.where_clause) } // .pg_query.RangeVar pktable = 20 [json_name = "pktable"]; inline bool Constraint::_internal_has_pktable() const { return this != internal_default_instance() && _impl_.pktable_ != nullptr; } inline bool Constraint::has_pktable() const { return _internal_has_pktable(); } inline void Constraint::clear_pktable() { if (GetArenaForAllocation() == nullptr && _impl_.pktable_ != nullptr) { delete _impl_.pktable_; } _impl_.pktable_ = nullptr; } inline const ::pg_query::RangeVar& Constraint::_internal_pktable() const { 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 { // @@protoc_insertion_point(field_get:pg_query.Constraint.pktable) return _internal_pktable(); } inline void Constraint::unsafe_arena_set_allocated_pktable( ::pg_query::RangeVar* pktable) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.pktable_); } _impl_.pktable_ = pktable; if (pktable) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Constraint.pktable) } inline ::pg_query::RangeVar* Constraint::release_pktable() { ::pg_query::RangeVar* temp = _impl_.pktable_; _impl_.pktable_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* Constraint::unsafe_arena_release_pktable() { // @@protoc_insertion_point(field_release:pg_query.Constraint.pktable) ::pg_query::RangeVar* temp = _impl_.pktable_; _impl_.pktable_ = nullptr; return temp; } inline ::pg_query::RangeVar* Constraint::_internal_mutable_pktable() { if (_impl_.pktable_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.pktable_ = p; } return _impl_.pktable_; } inline ::pg_query::RangeVar* Constraint::mutable_pktable() { ::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* pktable) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.pktable_; } if (pktable) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(pktable); if (message_arena != submessage_arena) { pktable = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, pktable, submessage_arena); } } else { } _impl_.pktable_ = pktable; // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.pktable) } // repeated .pg_query.Node fk_attrs = 21 [json_name = "fk_attrs"]; inline int Constraint::_internal_fk_attrs_size() const { return _impl_.fk_attrs_.size(); } inline int Constraint::fk_attrs_size() const { return _internal_fk_attrs_size(); } inline void Constraint::clear_fk_attrs() { _impl_.fk_attrs_.Clear(); } inline ::pg_query::Node* Constraint::mutable_fk_attrs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.fk_attrs) return _impl_.fk_attrs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Constraint::mutable_fk_attrs() { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.fk_attrs) return &_impl_.fk_attrs_; } inline const ::pg_query::Node& Constraint::_internal_fk_attrs(int index) const { return _impl_.fk_attrs_.Get(index); } inline const ::pg_query::Node& Constraint::fk_attrs(int index) const { // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_attrs) return _internal_fk_attrs(index); } inline ::pg_query::Node* Constraint::_internal_add_fk_attrs() { return _impl_.fk_attrs_.Add(); } inline ::pg_query::Node* Constraint::add_fk_attrs() { ::pg_query::Node* _add = _internal_add_fk_attrs(); // @@protoc_insertion_point(field_add:pg_query.Constraint.fk_attrs) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Constraint::fk_attrs() const { // @@protoc_insertion_point(field_list:pg_query.Constraint.fk_attrs) return _impl_.fk_attrs_; } // repeated .pg_query.Node pk_attrs = 22 [json_name = "pk_attrs"]; inline int Constraint::_internal_pk_attrs_size() const { return _impl_.pk_attrs_.size(); } inline int Constraint::pk_attrs_size() const { return _internal_pk_attrs_size(); } inline void Constraint::clear_pk_attrs() { _impl_.pk_attrs_.Clear(); } inline ::pg_query::Node* Constraint::mutable_pk_attrs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.pk_attrs) return _impl_.pk_attrs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Constraint::mutable_pk_attrs() { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.pk_attrs) return &_impl_.pk_attrs_; } inline const ::pg_query::Node& Constraint::_internal_pk_attrs(int index) const { return _impl_.pk_attrs_.Get(index); } inline const ::pg_query::Node& Constraint::pk_attrs(int index) const { // @@protoc_insertion_point(field_get:pg_query.Constraint.pk_attrs) return _internal_pk_attrs(index); } inline ::pg_query::Node* Constraint::_internal_add_pk_attrs() { return _impl_.pk_attrs_.Add(); } inline ::pg_query::Node* Constraint::add_pk_attrs() { ::pg_query::Node* _add = _internal_add_pk_attrs(); // @@protoc_insertion_point(field_add:pg_query.Constraint.pk_attrs) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Constraint::pk_attrs() const { // @@protoc_insertion_point(field_list:pg_query.Constraint.pk_attrs) return _impl_.pk_attrs_; } // string fk_matchtype = 23 [json_name = "fk_matchtype"]; inline void Constraint::clear_fk_matchtype() { _impl_.fk_matchtype_.ClearToEmpty(); } inline const std::string& Constraint::fk_matchtype() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_matchtype) return _internal_fk_matchtype(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_fk_matchtype(ArgT0&& arg0, ArgT... args) { _impl_.fk_matchtype_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.Constraint.fk_matchtype) } inline std::string* Constraint::mutable_fk_matchtype() { 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 { return _impl_.fk_matchtype_.Get(); } inline void Constraint::_internal_set_fk_matchtype(const std::string& value) { _impl_.fk_matchtype_.Set(value, GetArenaForAllocation()); } inline std::string* Constraint::_internal_mutable_fk_matchtype() { return _impl_.fk_matchtype_.Mutable(GetArenaForAllocation()); } inline std::string* Constraint::release_fk_matchtype() { // @@protoc_insertion_point(field_release:pg_query.Constraint.fk_matchtype) return _impl_.fk_matchtype_.Release(); } inline void Constraint::set_allocated_fk_matchtype(std::string* fk_matchtype) { if (fk_matchtype != nullptr) { } else { } _impl_.fk_matchtype_.SetAllocated(fk_matchtype, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.fk_matchtype_.IsDefault()) { _impl_.fk_matchtype_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.fk_matchtype) } // string fk_upd_action = 24 [json_name = "fk_upd_action"]; inline void Constraint::clear_fk_upd_action() { _impl_.fk_upd_action_.ClearToEmpty(); } inline const std::string& Constraint::fk_upd_action() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_upd_action) return _internal_fk_upd_action(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_fk_upd_action(ArgT0&& arg0, ArgT... args) { _impl_.fk_upd_action_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.Constraint.fk_upd_action) } inline std::string* Constraint::mutable_fk_upd_action() { 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 { return _impl_.fk_upd_action_.Get(); } inline void Constraint::_internal_set_fk_upd_action(const std::string& value) { _impl_.fk_upd_action_.Set(value, GetArenaForAllocation()); } inline std::string* Constraint::_internal_mutable_fk_upd_action() { return _impl_.fk_upd_action_.Mutable(GetArenaForAllocation()); } inline std::string* Constraint::release_fk_upd_action() { // @@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* fk_upd_action) { if (fk_upd_action != nullptr) { } else { } _impl_.fk_upd_action_.SetAllocated(fk_upd_action, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.fk_upd_action_.IsDefault()) { _impl_.fk_upd_action_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.fk_upd_action) } // string fk_del_action = 25 [json_name = "fk_del_action"]; inline void Constraint::clear_fk_del_action() { _impl_.fk_del_action_.ClearToEmpty(); } inline const std::string& Constraint::fk_del_action() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_del_action) return _internal_fk_del_action(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_fk_del_action(ArgT0&& arg0, ArgT... args) { _impl_.fk_del_action_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.Constraint.fk_del_action) } inline std::string* Constraint::mutable_fk_del_action() { 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 { return _impl_.fk_del_action_.Get(); } inline void Constraint::_internal_set_fk_del_action(const std::string& value) { _impl_.fk_del_action_.Set(value, GetArenaForAllocation()); } inline std::string* Constraint::_internal_mutable_fk_del_action() { return _impl_.fk_del_action_.Mutable(GetArenaForAllocation()); } inline std::string* Constraint::release_fk_del_action() { // @@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* fk_del_action) { if (fk_del_action != nullptr) { } else { } _impl_.fk_del_action_.SetAllocated(fk_del_action, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.fk_del_action_.IsDefault()) { _impl_.fk_del_action_.Set("", GetArenaForAllocation()); } #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 = 26 [json_name = "fk_del_set_cols"]; inline int Constraint::_internal_fk_del_set_cols_size() const { return _impl_.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() { _impl_.fk_del_set_cols_.Clear(); } inline ::pg_query::Node* Constraint::mutable_fk_del_set_cols(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.fk_del_set_cols) return _impl_.fk_del_set_cols_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Constraint::mutable_fk_del_set_cols() { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.fk_del_set_cols) return &_impl_.fk_del_set_cols_; } inline const ::pg_query::Node& Constraint::_internal_fk_del_set_cols(int index) const { return _impl_.fk_del_set_cols_.Get(index); } inline const ::pg_query::Node& Constraint::fk_del_set_cols(int index) const { // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_del_set_cols) return _internal_fk_del_set_cols(index); } inline ::pg_query::Node* Constraint::_internal_add_fk_del_set_cols() { return _impl_.fk_del_set_cols_.Add(); } inline ::pg_query::Node* Constraint::add_fk_del_set_cols() { ::pg_query::Node* _add = _internal_add_fk_del_set_cols(); // @@protoc_insertion_point(field_add:pg_query.Constraint.fk_del_set_cols) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Constraint::fk_del_set_cols() const { // @@protoc_insertion_point(field_list:pg_query.Constraint.fk_del_set_cols) return _impl_.fk_del_set_cols_; } // repeated .pg_query.Node old_conpfeqop = 27 [json_name = "old_conpfeqop"]; inline int Constraint::_internal_old_conpfeqop_size() const { return _impl_.old_conpfeqop_.size(); } inline int Constraint::old_conpfeqop_size() const { return _internal_old_conpfeqop_size(); } inline void Constraint::clear_old_conpfeqop() { _impl_.old_conpfeqop_.Clear(); } inline ::pg_query::Node* Constraint::mutable_old_conpfeqop(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.old_conpfeqop) return _impl_.old_conpfeqop_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Constraint::mutable_old_conpfeqop() { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.old_conpfeqop) return &_impl_.old_conpfeqop_; } inline const ::pg_query::Node& Constraint::_internal_old_conpfeqop(int index) const { return _impl_.old_conpfeqop_.Get(index); } inline const ::pg_query::Node& Constraint::old_conpfeqop(int index) const { // @@protoc_insertion_point(field_get:pg_query.Constraint.old_conpfeqop) return _internal_old_conpfeqop(index); } inline ::pg_query::Node* Constraint::_internal_add_old_conpfeqop() { return _impl_.old_conpfeqop_.Add(); } inline ::pg_query::Node* Constraint::add_old_conpfeqop() { ::pg_query::Node* _add = _internal_add_old_conpfeqop(); // @@protoc_insertion_point(field_add:pg_query.Constraint.old_conpfeqop) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Constraint::old_conpfeqop() const { // @@protoc_insertion_point(field_list:pg_query.Constraint.old_conpfeqop) return _impl_.old_conpfeqop_; } // uint32 old_pktable_oid = 28 [json_name = "old_pktable_oid"]; inline void Constraint::clear_old_pktable_oid() { _impl_.old_pktable_oid_ = 0u; } inline uint32_t Constraint::_internal_old_pktable_oid() const { return _impl_.old_pktable_oid_; } 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::_internal_set_old_pktable_oid(uint32_t value) { _impl_.old_pktable_oid_ = value; } 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) } // bool skip_validation = 29 [json_name = "skip_validation"]; inline void Constraint::clear_skip_validation() { _impl_.skip_validation_ = false; } inline bool Constraint::_internal_skip_validation() const { return _impl_.skip_validation_; } inline bool Constraint::skip_validation() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.skip_validation) return _internal_skip_validation(); } inline void Constraint::_internal_set_skip_validation(bool value) { _impl_.skip_validation_ = value; } inline void Constraint::set_skip_validation(bool value) { _internal_set_skip_validation(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.skip_validation) } // bool initially_valid = 30 [json_name = "initially_valid"]; inline void Constraint::clear_initially_valid() { _impl_.initially_valid_ = false; } inline bool Constraint::_internal_initially_valid() const { return _impl_.initially_valid_; } inline bool Constraint::initially_valid() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.initially_valid) return _internal_initially_valid(); } inline void Constraint::_internal_set_initially_valid(bool value) { _impl_.initially_valid_ = value; } inline void Constraint::set_initially_valid(bool value) { _internal_set_initially_valid(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.initially_valid) } // ------------------------------------------------------------------- // DefElem // string defnamespace = 1 [json_name = "defnamespace"]; inline void DefElem::clear_defnamespace() { _impl_.defnamespace_.ClearToEmpty(); } inline const std::string& DefElem::defnamespace() const { // @@protoc_insertion_point(field_get:pg_query.DefElem.defnamespace) return _internal_defnamespace(); } template inline PROTOBUF_ALWAYS_INLINE void DefElem::set_defnamespace(ArgT0&& arg0, ArgT... args) { _impl_.defnamespace_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.DefElem.defnamespace) } inline std::string* DefElem::mutable_defnamespace() { 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 { return _impl_.defnamespace_.Get(); } inline void DefElem::_internal_set_defnamespace(const std::string& value) { _impl_.defnamespace_.Set(value, GetArenaForAllocation()); } inline std::string* DefElem::_internal_mutable_defnamespace() { return _impl_.defnamespace_.Mutable(GetArenaForAllocation()); } inline std::string* DefElem::release_defnamespace() { // @@protoc_insertion_point(field_release:pg_query.DefElem.defnamespace) return _impl_.defnamespace_.Release(); } inline void DefElem::set_allocated_defnamespace(std::string* defnamespace) { if (defnamespace != nullptr) { } else { } _impl_.defnamespace_.SetAllocated(defnamespace, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.defnamespace_.IsDefault()) { _impl_.defnamespace_.Set("", GetArenaForAllocation()); } #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() { _impl_.defname_.ClearToEmpty(); } inline const std::string& DefElem::defname() const { // @@protoc_insertion_point(field_get:pg_query.DefElem.defname) return _internal_defname(); } template inline PROTOBUF_ALWAYS_INLINE void DefElem::set_defname(ArgT0&& arg0, ArgT... args) { _impl_.defname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.DefElem.defname) } inline std::string* DefElem::mutable_defname() { 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 { return _impl_.defname_.Get(); } inline void DefElem::_internal_set_defname(const std::string& value) { _impl_.defname_.Set(value, GetArenaForAllocation()); } inline std::string* DefElem::_internal_mutable_defname() { return _impl_.defname_.Mutable(GetArenaForAllocation()); } inline std::string* DefElem::release_defname() { // @@protoc_insertion_point(field_release:pg_query.DefElem.defname) return _impl_.defname_.Release(); } inline void DefElem::set_allocated_defname(std::string* defname) { if (defname != nullptr) { } else { } _impl_.defname_.SetAllocated(defname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.defname_.IsDefault()) { _impl_.defname_.Set("", GetArenaForAllocation()); } #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::_internal_has_arg() const { return this != internal_default_instance() && _impl_.arg_ != nullptr; } inline bool DefElem::has_arg() const { return _internal_has_arg(); } inline void DefElem::clear_arg() { if (GetArenaForAllocation() == nullptr && _impl_.arg_ != nullptr) { delete _impl_.arg_; } _impl_.arg_ = nullptr; } inline const ::pg_query::Node& DefElem::_internal_arg() const { 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 { // @@protoc_insertion_point(field_get:pg_query.DefElem.arg) return _internal_arg(); } inline void DefElem::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arg_); } _impl_.arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DefElem.arg) } inline ::pg_query::Node* DefElem::release_arg() { ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* DefElem::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.DefElem.arg) ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* DefElem::_internal_mutable_arg() { if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.arg_ = p; } return _impl_.arg_; } inline ::pg_query::Node* DefElem::mutable_arg() { ::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* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } _impl_.arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.DefElem.arg) } // .pg_query.DefElemAction defaction = 4 [json_name = "defaction"]; inline void DefElem::clear_defaction() { _impl_.defaction_ = 0; } inline ::pg_query::DefElemAction DefElem::_internal_defaction() const { return static_cast< ::pg_query::DefElemAction >(_impl_.defaction_); } inline ::pg_query::DefElemAction DefElem::defaction() const { // @@protoc_insertion_point(field_get:pg_query.DefElem.defaction) return _internal_defaction(); } inline void DefElem::_internal_set_defaction(::pg_query::DefElemAction value) { _impl_.defaction_ = value; } inline void DefElem::set_defaction(::pg_query::DefElemAction value) { _internal_set_defaction(value); // @@protoc_insertion_point(field_set:pg_query.DefElem.defaction) } // int32 location = 5 [json_name = "location"]; inline void DefElem::clear_location() { _impl_.location_ = 0; } inline int32_t DefElem::_internal_location() const { return _impl_.location_; } inline int32_t DefElem::location() const { // @@protoc_insertion_point(field_get:pg_query.DefElem.location) return _internal_location(); } inline void DefElem::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void DefElem::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.DefElem.location) } // ------------------------------------------------------------------- // RangeTblEntry // .pg_query.RTEKind rtekind = 1 [json_name = "rtekind"]; inline void RangeTblEntry::clear_rtekind() { _impl_.rtekind_ = 0; } inline ::pg_query::RTEKind RangeTblEntry::_internal_rtekind() const { return static_cast< ::pg_query::RTEKind >(_impl_.rtekind_); } inline ::pg_query::RTEKind RangeTblEntry::rtekind() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.rtekind) return _internal_rtekind(); } inline void RangeTblEntry::_internal_set_rtekind(::pg_query::RTEKind value) { _impl_.rtekind_ = value; } inline void RangeTblEntry::set_rtekind(::pg_query::RTEKind value) { _internal_set_rtekind(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.rtekind) } // uint32 relid = 2 [json_name = "relid"]; inline void RangeTblEntry::clear_relid() { _impl_.relid_ = 0u; } inline uint32_t RangeTblEntry::_internal_relid() const { return _impl_.relid_; } inline uint32_t RangeTblEntry::relid() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.relid) return _internal_relid(); } inline void RangeTblEntry::_internal_set_relid(uint32_t value) { _impl_.relid_ = value; } inline void RangeTblEntry::set_relid(uint32_t value) { _internal_set_relid(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.relid) } // string relkind = 3 [json_name = "relkind"]; inline void RangeTblEntry::clear_relkind() { _impl_.relkind_.ClearToEmpty(); } inline const std::string& RangeTblEntry::relkind() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.relkind) return _internal_relkind(); } template inline PROTOBUF_ALWAYS_INLINE void RangeTblEntry::set_relkind(ArgT0&& arg0, ArgT... args) { _impl_.relkind_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.relkind) } inline std::string* RangeTblEntry::mutable_relkind() { 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 { return _impl_.relkind_.Get(); } inline void RangeTblEntry::_internal_set_relkind(const std::string& value) { _impl_.relkind_.Set(value, GetArenaForAllocation()); } inline std::string* RangeTblEntry::_internal_mutable_relkind() { return _impl_.relkind_.Mutable(GetArenaForAllocation()); } inline std::string* RangeTblEntry::release_relkind() { // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.relkind) return _impl_.relkind_.Release(); } inline void RangeTblEntry::set_allocated_relkind(std::string* relkind) { if (relkind != nullptr) { } else { } _impl_.relkind_.SetAllocated(relkind, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.relkind_.IsDefault()) { _impl_.relkind_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.relkind) } // int32 rellockmode = 4 [json_name = "rellockmode"]; inline void RangeTblEntry::clear_rellockmode() { _impl_.rellockmode_ = 0; } inline int32_t RangeTblEntry::_internal_rellockmode() const { return _impl_.rellockmode_; } inline int32_t RangeTblEntry::rellockmode() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.rellockmode) return _internal_rellockmode(); } inline void RangeTblEntry::_internal_set_rellockmode(int32_t value) { _impl_.rellockmode_ = value; } inline void RangeTblEntry::set_rellockmode(int32_t value) { _internal_set_rellockmode(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.rellockmode) } // .pg_query.TableSampleClause tablesample = 5 [json_name = "tablesample"]; inline bool RangeTblEntry::_internal_has_tablesample() const { return this != internal_default_instance() && _impl_.tablesample_ != nullptr; } inline bool RangeTblEntry::has_tablesample() const { return _internal_has_tablesample(); } inline void RangeTblEntry::clear_tablesample() { if (GetArenaForAllocation() == nullptr && _impl_.tablesample_ != nullptr) { delete _impl_.tablesample_; } _impl_.tablesample_ = nullptr; } inline const ::pg_query::TableSampleClause& RangeTblEntry::_internal_tablesample() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.tablesample) return _internal_tablesample(); } inline void RangeTblEntry::unsafe_arena_set_allocated_tablesample( ::pg_query::TableSampleClause* tablesample) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.tablesample_); } _impl_.tablesample_ = tablesample; if (tablesample) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.tablesample) } inline ::pg_query::TableSampleClause* RangeTblEntry::release_tablesample() { ::pg_query::TableSampleClause* temp = _impl_.tablesample_; _impl_.tablesample_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::TableSampleClause* RangeTblEntry::unsafe_arena_release_tablesample() { // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.tablesample) ::pg_query::TableSampleClause* temp = _impl_.tablesample_; _impl_.tablesample_ = nullptr; return temp; } inline ::pg_query::TableSampleClause* RangeTblEntry::_internal_mutable_tablesample() { if (_impl_.tablesample_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TableSampleClause>(GetArenaForAllocation()); _impl_.tablesample_ = p; } return _impl_.tablesample_; } inline ::pg_query::TableSampleClause* RangeTblEntry::mutable_tablesample() { ::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* tablesample) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.tablesample_; } if (tablesample) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(tablesample); if (message_arena != submessage_arena) { tablesample = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, tablesample, submessage_arena); } } else { } _impl_.tablesample_ = tablesample; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.tablesample) } // .pg_query.Query subquery = 6 [json_name = "subquery"]; inline bool RangeTblEntry::_internal_has_subquery() const { return this != internal_default_instance() && _impl_.subquery_ != nullptr; } inline bool RangeTblEntry::has_subquery() const { return _internal_has_subquery(); } inline void RangeTblEntry::clear_subquery() { if (GetArenaForAllocation() == nullptr && _impl_.subquery_ != nullptr) { delete _impl_.subquery_; } _impl_.subquery_ = nullptr; } inline const ::pg_query::Query& RangeTblEntry::_internal_subquery() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.subquery) return _internal_subquery(); } inline void RangeTblEntry::unsafe_arena_set_allocated_subquery( ::pg_query::Query* subquery) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.subquery_); } _impl_.subquery_ = subquery; if (subquery) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.subquery) } inline ::pg_query::Query* RangeTblEntry::release_subquery() { ::pg_query::Query* temp = _impl_.subquery_; _impl_.subquery_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Query* RangeTblEntry::unsafe_arena_release_subquery() { // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.subquery) ::pg_query::Query* temp = _impl_.subquery_; _impl_.subquery_ = nullptr; return temp; } inline ::pg_query::Query* RangeTblEntry::_internal_mutable_subquery() { if (_impl_.subquery_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Query>(GetArenaForAllocation()); _impl_.subquery_ = p; } return _impl_.subquery_; } inline ::pg_query::Query* RangeTblEntry::mutable_subquery() { ::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* subquery) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.subquery_; } if (subquery) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(subquery); if (message_arena != submessage_arena) { subquery = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, subquery, submessage_arena); } } else { } _impl_.subquery_ = subquery; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.subquery) } // bool security_barrier = 7 [json_name = "security_barrier"]; inline void RangeTblEntry::clear_security_barrier() { _impl_.security_barrier_ = false; } inline bool RangeTblEntry::_internal_security_barrier() const { return _impl_.security_barrier_; } inline bool RangeTblEntry::security_barrier() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.security_barrier) return _internal_security_barrier(); } inline void RangeTblEntry::_internal_set_security_barrier(bool value) { _impl_.security_barrier_ = value; } inline void RangeTblEntry::set_security_barrier(bool value) { _internal_set_security_barrier(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.security_barrier) } // .pg_query.JoinType jointype = 8 [json_name = "jointype"]; inline void RangeTblEntry::clear_jointype() { _impl_.jointype_ = 0; } inline ::pg_query::JoinType RangeTblEntry::_internal_jointype() const { return static_cast< ::pg_query::JoinType >(_impl_.jointype_); } inline ::pg_query::JoinType RangeTblEntry::jointype() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.jointype) return _internal_jointype(); } inline void RangeTblEntry::_internal_set_jointype(::pg_query::JoinType value) { _impl_.jointype_ = value; } inline void RangeTblEntry::set_jointype(::pg_query::JoinType value) { _internal_set_jointype(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.jointype) } // int32 joinmergedcols = 9 [json_name = "joinmergedcols"]; inline void RangeTblEntry::clear_joinmergedcols() { _impl_.joinmergedcols_ = 0; } inline int32_t RangeTblEntry::_internal_joinmergedcols() const { return _impl_.joinmergedcols_; } inline int32_t RangeTblEntry::joinmergedcols() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.joinmergedcols) return _internal_joinmergedcols(); } inline void RangeTblEntry::_internal_set_joinmergedcols(int32_t value) { _impl_.joinmergedcols_ = value; } inline void RangeTblEntry::set_joinmergedcols(int32_t value) { _internal_set_joinmergedcols(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.joinmergedcols) } // repeated .pg_query.Node joinaliasvars = 10 [json_name = "joinaliasvars"]; inline int RangeTblEntry::_internal_joinaliasvars_size() const { return _impl_.joinaliasvars_.size(); } inline int RangeTblEntry::joinaliasvars_size() const { return _internal_joinaliasvars_size(); } inline void RangeTblEntry::clear_joinaliasvars() { _impl_.joinaliasvars_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_joinaliasvars(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.joinaliasvars) return _impl_.joinaliasvars_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_joinaliasvars() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.joinaliasvars) return &_impl_.joinaliasvars_; } inline const ::pg_query::Node& RangeTblEntry::_internal_joinaliasvars(int index) const { return _impl_.joinaliasvars_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::joinaliasvars(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.joinaliasvars) return _internal_joinaliasvars(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_joinaliasvars() { return _impl_.joinaliasvars_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_joinaliasvars() { ::pg_query::Node* _add = _internal_add_joinaliasvars(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.joinaliasvars) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::joinaliasvars() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.joinaliasvars) return _impl_.joinaliasvars_; } // repeated .pg_query.Node joinleftcols = 11 [json_name = "joinleftcols"]; inline int RangeTblEntry::_internal_joinleftcols_size() const { return _impl_.joinleftcols_.size(); } inline int RangeTblEntry::joinleftcols_size() const { return _internal_joinleftcols_size(); } inline void RangeTblEntry::clear_joinleftcols() { _impl_.joinleftcols_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_joinleftcols(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.joinleftcols) return _impl_.joinleftcols_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_joinleftcols() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.joinleftcols) return &_impl_.joinleftcols_; } inline const ::pg_query::Node& RangeTblEntry::_internal_joinleftcols(int index) const { return _impl_.joinleftcols_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::joinleftcols(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.joinleftcols) return _internal_joinleftcols(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_joinleftcols() { return _impl_.joinleftcols_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_joinleftcols() { ::pg_query::Node* _add = _internal_add_joinleftcols(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.joinleftcols) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::joinleftcols() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.joinleftcols) return _impl_.joinleftcols_; } // repeated .pg_query.Node joinrightcols = 12 [json_name = "joinrightcols"]; inline int RangeTblEntry::_internal_joinrightcols_size() const { return _impl_.joinrightcols_.size(); } inline int RangeTblEntry::joinrightcols_size() const { return _internal_joinrightcols_size(); } inline void RangeTblEntry::clear_joinrightcols() { _impl_.joinrightcols_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_joinrightcols(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.joinrightcols) return _impl_.joinrightcols_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_joinrightcols() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.joinrightcols) return &_impl_.joinrightcols_; } inline const ::pg_query::Node& RangeTblEntry::_internal_joinrightcols(int index) const { return _impl_.joinrightcols_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::joinrightcols(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.joinrightcols) return _internal_joinrightcols(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_joinrightcols() { return _impl_.joinrightcols_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_joinrightcols() { ::pg_query::Node* _add = _internal_add_joinrightcols(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.joinrightcols) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::joinrightcols() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.joinrightcols) return _impl_.joinrightcols_; } // .pg_query.Alias join_using_alias = 13 [json_name = "join_using_alias"]; inline bool RangeTblEntry::_internal_has_join_using_alias() const { return this != internal_default_instance() && _impl_.join_using_alias_ != nullptr; } inline bool RangeTblEntry::has_join_using_alias() const { return _internal_has_join_using_alias(); } inline void RangeTblEntry::clear_join_using_alias() { if (GetArenaForAllocation() == nullptr && _impl_.join_using_alias_ != nullptr) { delete _impl_.join_using_alias_; } _impl_.join_using_alias_ = nullptr; } inline const ::pg_query::Alias& RangeTblEntry::_internal_join_using_alias() const { 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 { // @@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* join_using_alias) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.join_using_alias_); } _impl_.join_using_alias_ = join_using_alias; if (join_using_alias) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.join_using_alias) } inline ::pg_query::Alias* RangeTblEntry::release_join_using_alias() { ::pg_query::Alias* temp = _impl_.join_using_alias_; _impl_.join_using_alias_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Alias* RangeTblEntry::unsafe_arena_release_join_using_alias() { // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.join_using_alias) ::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() { if (_impl_.join_using_alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArenaForAllocation()); _impl_.join_using_alias_ = p; } return _impl_.join_using_alias_; } inline ::pg_query::Alias* RangeTblEntry::mutable_join_using_alias() { ::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* join_using_alias) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.join_using_alias_; } if (join_using_alias) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(join_using_alias); if (message_arena != submessage_arena) { join_using_alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, join_using_alias, submessage_arena); } } else { } _impl_.join_using_alias_ = join_using_alias; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.join_using_alias) } // repeated .pg_query.Node functions = 14 [json_name = "functions"]; inline int RangeTblEntry::_internal_functions_size() const { return _impl_.functions_.size(); } inline int RangeTblEntry::functions_size() const { return _internal_functions_size(); } inline void RangeTblEntry::clear_functions() { _impl_.functions_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_functions(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.functions) return _impl_.functions_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_functions() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.functions) return &_impl_.functions_; } inline const ::pg_query::Node& RangeTblEntry::_internal_functions(int index) const { return _impl_.functions_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::functions(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.functions) return _internal_functions(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_functions() { return _impl_.functions_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_functions() { ::pg_query::Node* _add = _internal_add_functions(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.functions) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::functions() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.functions) return _impl_.functions_; } // bool funcordinality = 15 [json_name = "funcordinality"]; inline void RangeTblEntry::clear_funcordinality() { _impl_.funcordinality_ = false; } inline bool RangeTblEntry::_internal_funcordinality() const { return _impl_.funcordinality_; } inline bool RangeTblEntry::funcordinality() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.funcordinality) return _internal_funcordinality(); } inline void RangeTblEntry::_internal_set_funcordinality(bool value) { _impl_.funcordinality_ = value; } inline void RangeTblEntry::set_funcordinality(bool value) { _internal_set_funcordinality(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.funcordinality) } // .pg_query.TableFunc tablefunc = 16 [json_name = "tablefunc"]; inline bool RangeTblEntry::_internal_has_tablefunc() const { return this != internal_default_instance() && _impl_.tablefunc_ != nullptr; } inline bool RangeTblEntry::has_tablefunc() const { return _internal_has_tablefunc(); } inline void RangeTblEntry::clear_tablefunc() { if (GetArenaForAllocation() == nullptr && _impl_.tablefunc_ != nullptr) { delete _impl_.tablefunc_; } _impl_.tablefunc_ = nullptr; } inline const ::pg_query::TableFunc& RangeTblEntry::_internal_tablefunc() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.tablefunc) return _internal_tablefunc(); } inline void RangeTblEntry::unsafe_arena_set_allocated_tablefunc( ::pg_query::TableFunc* tablefunc) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.tablefunc_); } _impl_.tablefunc_ = tablefunc; if (tablefunc) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.tablefunc) } inline ::pg_query::TableFunc* RangeTblEntry::release_tablefunc() { ::pg_query::TableFunc* temp = _impl_.tablefunc_; _impl_.tablefunc_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::TableFunc* RangeTblEntry::unsafe_arena_release_tablefunc() { // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.tablefunc) ::pg_query::TableFunc* temp = _impl_.tablefunc_; _impl_.tablefunc_ = nullptr; return temp; } inline ::pg_query::TableFunc* RangeTblEntry::_internal_mutable_tablefunc() { if (_impl_.tablefunc_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TableFunc>(GetArenaForAllocation()); _impl_.tablefunc_ = p; } return _impl_.tablefunc_; } inline ::pg_query::TableFunc* RangeTblEntry::mutable_tablefunc() { ::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* tablefunc) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.tablefunc_; } if (tablefunc) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(tablefunc); if (message_arena != submessage_arena) { tablefunc = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, tablefunc, submessage_arena); } } else { } _impl_.tablefunc_ = tablefunc; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.tablefunc) } // repeated .pg_query.Node values_lists = 17 [json_name = "values_lists"]; inline int RangeTblEntry::_internal_values_lists_size() const { return _impl_.values_lists_.size(); } inline int RangeTblEntry::values_lists_size() const { return _internal_values_lists_size(); } inline void RangeTblEntry::clear_values_lists() { _impl_.values_lists_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_values_lists(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.values_lists) return _impl_.values_lists_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_values_lists() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.values_lists) return &_impl_.values_lists_; } inline const ::pg_query::Node& RangeTblEntry::_internal_values_lists(int index) const { return _impl_.values_lists_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::values_lists(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.values_lists) return _internal_values_lists(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_values_lists() { return _impl_.values_lists_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_values_lists() { ::pg_query::Node* _add = _internal_add_values_lists(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.values_lists) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::values_lists() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.values_lists) return _impl_.values_lists_; } // string ctename = 18 [json_name = "ctename"]; inline void RangeTblEntry::clear_ctename() { _impl_.ctename_.ClearToEmpty(); } inline const std::string& RangeTblEntry::ctename() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.ctename) return _internal_ctename(); } template inline PROTOBUF_ALWAYS_INLINE void RangeTblEntry::set_ctename(ArgT0&& arg0, ArgT... args) { _impl_.ctename_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.ctename) } inline std::string* RangeTblEntry::mutable_ctename() { 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 { return _impl_.ctename_.Get(); } inline void RangeTblEntry::_internal_set_ctename(const std::string& value) { _impl_.ctename_.Set(value, GetArenaForAllocation()); } inline std::string* RangeTblEntry::_internal_mutable_ctename() { return _impl_.ctename_.Mutable(GetArenaForAllocation()); } inline std::string* RangeTblEntry::release_ctename() { // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.ctename) return _impl_.ctename_.Release(); } inline void RangeTblEntry::set_allocated_ctename(std::string* ctename) { if (ctename != nullptr) { } else { } _impl_.ctename_.SetAllocated(ctename, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.ctename_.IsDefault()) { _impl_.ctename_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.ctename) } // uint32 ctelevelsup = 19 [json_name = "ctelevelsup"]; inline void RangeTblEntry::clear_ctelevelsup() { _impl_.ctelevelsup_ = 0u; } inline uint32_t RangeTblEntry::_internal_ctelevelsup() const { return _impl_.ctelevelsup_; } inline uint32_t RangeTblEntry::ctelevelsup() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.ctelevelsup) return _internal_ctelevelsup(); } inline void RangeTblEntry::_internal_set_ctelevelsup(uint32_t value) { _impl_.ctelevelsup_ = value; } inline void RangeTblEntry::set_ctelevelsup(uint32_t value) { _internal_set_ctelevelsup(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.ctelevelsup) } // bool self_reference = 20 [json_name = "self_reference"]; inline void RangeTblEntry::clear_self_reference() { _impl_.self_reference_ = false; } inline bool RangeTblEntry::_internal_self_reference() const { return _impl_.self_reference_; } inline bool RangeTblEntry::self_reference() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.self_reference) return _internal_self_reference(); } inline void RangeTblEntry::_internal_set_self_reference(bool value) { _impl_.self_reference_ = value; } inline void RangeTblEntry::set_self_reference(bool value) { _internal_set_self_reference(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.self_reference) } // repeated .pg_query.Node coltypes = 21 [json_name = "coltypes"]; inline int RangeTblEntry::_internal_coltypes_size() const { return _impl_.coltypes_.size(); } inline int RangeTblEntry::coltypes_size() const { return _internal_coltypes_size(); } inline void RangeTblEntry::clear_coltypes() { _impl_.coltypes_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_coltypes(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.coltypes) return _impl_.coltypes_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_coltypes() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.coltypes) return &_impl_.coltypes_; } inline const ::pg_query::Node& RangeTblEntry::_internal_coltypes(int index) const { return _impl_.coltypes_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::coltypes(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.coltypes) return _internal_coltypes(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_coltypes() { return _impl_.coltypes_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_coltypes() { ::pg_query::Node* _add = _internal_add_coltypes(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.coltypes) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::coltypes() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.coltypes) return _impl_.coltypes_; } // repeated .pg_query.Node coltypmods = 22 [json_name = "coltypmods"]; inline int RangeTblEntry::_internal_coltypmods_size() const { return _impl_.coltypmods_.size(); } inline int RangeTblEntry::coltypmods_size() const { return _internal_coltypmods_size(); } inline void RangeTblEntry::clear_coltypmods() { _impl_.coltypmods_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_coltypmods(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.coltypmods) return _impl_.coltypmods_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_coltypmods() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.coltypmods) return &_impl_.coltypmods_; } inline const ::pg_query::Node& RangeTblEntry::_internal_coltypmods(int index) const { return _impl_.coltypmods_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::coltypmods(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.coltypmods) return _internal_coltypmods(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_coltypmods() { return _impl_.coltypmods_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_coltypmods() { ::pg_query::Node* _add = _internal_add_coltypmods(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.coltypmods) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::coltypmods() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.coltypmods) return _impl_.coltypmods_; } // repeated .pg_query.Node colcollations = 23 [json_name = "colcollations"]; inline int RangeTblEntry::_internal_colcollations_size() const { return _impl_.colcollations_.size(); } inline int RangeTblEntry::colcollations_size() const { return _internal_colcollations_size(); } inline void RangeTblEntry::clear_colcollations() { _impl_.colcollations_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_colcollations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.colcollations) return _impl_.colcollations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_colcollations() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.colcollations) return &_impl_.colcollations_; } inline const ::pg_query::Node& RangeTblEntry::_internal_colcollations(int index) const { return _impl_.colcollations_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::colcollations(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.colcollations) return _internal_colcollations(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_colcollations() { return _impl_.colcollations_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_colcollations() { ::pg_query::Node* _add = _internal_add_colcollations(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.colcollations) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::colcollations() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.colcollations) return _impl_.colcollations_; } // string enrname = 24 [json_name = "enrname"]; inline void RangeTblEntry::clear_enrname() { _impl_.enrname_.ClearToEmpty(); } inline const std::string& RangeTblEntry::enrname() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.enrname) return _internal_enrname(); } template inline PROTOBUF_ALWAYS_INLINE void RangeTblEntry::set_enrname(ArgT0&& arg0, ArgT... args) { _impl_.enrname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.enrname) } inline std::string* RangeTblEntry::mutable_enrname() { 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 { return _impl_.enrname_.Get(); } inline void RangeTblEntry::_internal_set_enrname(const std::string& value) { _impl_.enrname_.Set(value, GetArenaForAllocation()); } inline std::string* RangeTblEntry::_internal_mutable_enrname() { return _impl_.enrname_.Mutable(GetArenaForAllocation()); } inline std::string* RangeTblEntry::release_enrname() { // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.enrname) return _impl_.enrname_.Release(); } inline void RangeTblEntry::set_allocated_enrname(std::string* enrname) { if (enrname != nullptr) { } else { } _impl_.enrname_.SetAllocated(enrname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.enrname_.IsDefault()) { _impl_.enrname_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.enrname) } // double enrtuples = 25 [json_name = "enrtuples"]; inline void RangeTblEntry::clear_enrtuples() { _impl_.enrtuples_ = 0; } inline double RangeTblEntry::_internal_enrtuples() const { return _impl_.enrtuples_; } inline double RangeTblEntry::enrtuples() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.enrtuples) return _internal_enrtuples(); } inline void RangeTblEntry::_internal_set_enrtuples(double value) { _impl_.enrtuples_ = value; } inline void RangeTblEntry::set_enrtuples(double value) { _internal_set_enrtuples(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.enrtuples) } // .pg_query.Alias alias = 26 [json_name = "alias"]; inline bool RangeTblEntry::_internal_has_alias() const { return this != internal_default_instance() && _impl_.alias_ != nullptr; } inline bool RangeTblEntry::has_alias() const { return _internal_has_alias(); } inline void RangeTblEntry::clear_alias() { if (GetArenaForAllocation() == nullptr && _impl_.alias_ != nullptr) { delete _impl_.alias_; } _impl_.alias_ = nullptr; } inline const ::pg_query::Alias& RangeTblEntry::_internal_alias() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.alias) return _internal_alias(); } inline void RangeTblEntry::unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.alias_); } _impl_.alias_ = alias; if (alias) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.alias) } inline ::pg_query::Alias* RangeTblEntry::release_alias() { ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Alias* RangeTblEntry::unsafe_arena_release_alias() { // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.alias) ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; return temp; } inline ::pg_query::Alias* RangeTblEntry::_internal_mutable_alias() { if (_impl_.alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArenaForAllocation()); _impl_.alias_ = p; } return _impl_.alias_; } inline ::pg_query::Alias* RangeTblEntry::mutable_alias() { ::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* alias) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.alias_; } if (alias) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(alias); if (message_arena != submessage_arena) { alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alias, submessage_arena); } } else { } _impl_.alias_ = alias; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.alias) } // .pg_query.Alias eref = 27 [json_name = "eref"]; inline bool RangeTblEntry::_internal_has_eref() const { return this != internal_default_instance() && _impl_.eref_ != nullptr; } inline bool RangeTblEntry::has_eref() const { return _internal_has_eref(); } inline void RangeTblEntry::clear_eref() { if (GetArenaForAllocation() == nullptr && _impl_.eref_ != nullptr) { delete _impl_.eref_; } _impl_.eref_ = nullptr; } inline const ::pg_query::Alias& RangeTblEntry::_internal_eref() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.eref) return _internal_eref(); } inline void RangeTblEntry::unsafe_arena_set_allocated_eref( ::pg_query::Alias* eref) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.eref_); } _impl_.eref_ = eref; if (eref) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.eref) } inline ::pg_query::Alias* RangeTblEntry::release_eref() { ::pg_query::Alias* temp = _impl_.eref_; _impl_.eref_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Alias* RangeTblEntry::unsafe_arena_release_eref() { // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.eref) ::pg_query::Alias* temp = _impl_.eref_; _impl_.eref_ = nullptr; return temp; } inline ::pg_query::Alias* RangeTblEntry::_internal_mutable_eref() { if (_impl_.eref_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArenaForAllocation()); _impl_.eref_ = p; } return _impl_.eref_; } inline ::pg_query::Alias* RangeTblEntry::mutable_eref() { ::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* eref) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.eref_; } if (eref) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(eref); if (message_arena != submessage_arena) { eref = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, eref, submessage_arena); } } else { } _impl_.eref_ = eref; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.eref) } // bool lateral = 28 [json_name = "lateral"]; inline void RangeTblEntry::clear_lateral() { _impl_.lateral_ = false; } inline bool RangeTblEntry::_internal_lateral() const { return _impl_.lateral_; } inline bool RangeTblEntry::lateral() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.lateral) return _internal_lateral(); } inline void RangeTblEntry::_internal_set_lateral(bool value) { _impl_.lateral_ = value; } inline void RangeTblEntry::set_lateral(bool value) { _internal_set_lateral(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.lateral) } // bool inh = 29 [json_name = "inh"]; inline void RangeTblEntry::clear_inh() { _impl_.inh_ = false; } inline bool RangeTblEntry::_internal_inh() const { return _impl_.inh_; } inline bool RangeTblEntry::inh() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.inh) return _internal_inh(); } inline void RangeTblEntry::_internal_set_inh(bool value) { _impl_.inh_ = value; } inline void RangeTblEntry::set_inh(bool value) { _internal_set_inh(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.inh) } // bool in_from_cl = 30 [json_name = "inFromCl"]; inline void RangeTblEntry::clear_in_from_cl() { _impl_.in_from_cl_ = false; } inline bool RangeTblEntry::_internal_in_from_cl() const { return _impl_.in_from_cl_; } inline bool RangeTblEntry::in_from_cl() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.in_from_cl) return _internal_in_from_cl(); } inline void RangeTblEntry::_internal_set_in_from_cl(bool value) { _impl_.in_from_cl_ = value; } inline void RangeTblEntry::set_in_from_cl(bool value) { _internal_set_in_from_cl(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.in_from_cl) } // uint32 required_perms = 31 [json_name = "requiredPerms"]; inline void RangeTblEntry::clear_required_perms() { _impl_.required_perms_ = 0u; } inline uint32_t RangeTblEntry::_internal_required_perms() const { return _impl_.required_perms_; } inline uint32_t RangeTblEntry::required_perms() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.required_perms) return _internal_required_perms(); } inline void RangeTblEntry::_internal_set_required_perms(uint32_t value) { _impl_.required_perms_ = value; } inline void RangeTblEntry::set_required_perms(uint32_t value) { _internal_set_required_perms(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.required_perms) } // uint32 check_as_user = 32 [json_name = "checkAsUser"]; inline void RangeTblEntry::clear_check_as_user() { _impl_.check_as_user_ = 0u; } inline uint32_t RangeTblEntry::_internal_check_as_user() const { return _impl_.check_as_user_; } inline uint32_t RangeTblEntry::check_as_user() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.check_as_user) return _internal_check_as_user(); } inline void RangeTblEntry::_internal_set_check_as_user(uint32_t value) { _impl_.check_as_user_ = value; } inline void RangeTblEntry::set_check_as_user(uint32_t value) { _internal_set_check_as_user(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.check_as_user) } // repeated uint64 selected_cols = 33 [json_name = "selectedCols"]; inline int RangeTblEntry::_internal_selected_cols_size() const { return _impl_.selected_cols_.size(); } inline int RangeTblEntry::selected_cols_size() const { return _internal_selected_cols_size(); } inline void RangeTblEntry::clear_selected_cols() { _impl_.selected_cols_.Clear(); } inline uint64_t RangeTblEntry::_internal_selected_cols(int index) const { return _impl_.selected_cols_.Get(index); } inline uint64_t RangeTblEntry::selected_cols(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.selected_cols) return _internal_selected_cols(index); } inline void RangeTblEntry::set_selected_cols(int index, uint64_t value) { _impl_.selected_cols_.Set(index, value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.selected_cols) } inline void RangeTblEntry::_internal_add_selected_cols(uint64_t value) { _impl_.selected_cols_.Add(value); } inline void RangeTblEntry::add_selected_cols(uint64_t value) { _internal_add_selected_cols(value); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.selected_cols) } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& RangeTblEntry::_internal_selected_cols() const { return _impl_.selected_cols_; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& RangeTblEntry::selected_cols() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.selected_cols) return _internal_selected_cols(); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* RangeTblEntry::_internal_mutable_selected_cols() { return &_impl_.selected_cols_; } inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* RangeTblEntry::mutable_selected_cols() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.selected_cols) return _internal_mutable_selected_cols(); } // repeated uint64 inserted_cols = 34 [json_name = "insertedCols"]; inline int RangeTblEntry::_internal_inserted_cols_size() const { return _impl_.inserted_cols_.size(); } inline int RangeTblEntry::inserted_cols_size() const { return _internal_inserted_cols_size(); } inline void RangeTblEntry::clear_inserted_cols() { _impl_.inserted_cols_.Clear(); } inline uint64_t RangeTblEntry::_internal_inserted_cols(int index) const { return _impl_.inserted_cols_.Get(index); } inline uint64_t RangeTblEntry::inserted_cols(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.inserted_cols) return _internal_inserted_cols(index); } inline void RangeTblEntry::set_inserted_cols(int index, uint64_t value) { _impl_.inserted_cols_.Set(index, value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.inserted_cols) } inline void RangeTblEntry::_internal_add_inserted_cols(uint64_t value) { _impl_.inserted_cols_.Add(value); } inline void RangeTblEntry::add_inserted_cols(uint64_t value) { _internal_add_inserted_cols(value); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.inserted_cols) } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& RangeTblEntry::_internal_inserted_cols() const { return _impl_.inserted_cols_; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& RangeTblEntry::inserted_cols() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.inserted_cols) return _internal_inserted_cols(); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* RangeTblEntry::_internal_mutable_inserted_cols() { return &_impl_.inserted_cols_; } inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* RangeTblEntry::mutable_inserted_cols() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.inserted_cols) return _internal_mutable_inserted_cols(); } // repeated uint64 updated_cols = 35 [json_name = "updatedCols"]; inline int RangeTblEntry::_internal_updated_cols_size() const { return _impl_.updated_cols_.size(); } inline int RangeTblEntry::updated_cols_size() const { return _internal_updated_cols_size(); } inline void RangeTblEntry::clear_updated_cols() { _impl_.updated_cols_.Clear(); } inline uint64_t RangeTblEntry::_internal_updated_cols(int index) const { return _impl_.updated_cols_.Get(index); } inline uint64_t RangeTblEntry::updated_cols(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.updated_cols) return _internal_updated_cols(index); } inline void RangeTblEntry::set_updated_cols(int index, uint64_t value) { _impl_.updated_cols_.Set(index, value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.updated_cols) } inline void RangeTblEntry::_internal_add_updated_cols(uint64_t value) { _impl_.updated_cols_.Add(value); } inline void RangeTblEntry::add_updated_cols(uint64_t value) { _internal_add_updated_cols(value); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.updated_cols) } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& RangeTblEntry::_internal_updated_cols() const { return _impl_.updated_cols_; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& RangeTblEntry::updated_cols() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.updated_cols) return _internal_updated_cols(); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* RangeTblEntry::_internal_mutable_updated_cols() { return &_impl_.updated_cols_; } inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* RangeTblEntry::mutable_updated_cols() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.updated_cols) return _internal_mutable_updated_cols(); } // repeated uint64 extra_updated_cols = 36 [json_name = "extraUpdatedCols"]; inline int RangeTblEntry::_internal_extra_updated_cols_size() const { return _impl_.extra_updated_cols_.size(); } inline int RangeTblEntry::extra_updated_cols_size() const { return _internal_extra_updated_cols_size(); } inline void RangeTblEntry::clear_extra_updated_cols() { _impl_.extra_updated_cols_.Clear(); } inline uint64_t RangeTblEntry::_internal_extra_updated_cols(int index) const { return _impl_.extra_updated_cols_.Get(index); } inline uint64_t RangeTblEntry::extra_updated_cols(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.extra_updated_cols) return _internal_extra_updated_cols(index); } inline void RangeTblEntry::set_extra_updated_cols(int index, uint64_t value) { _impl_.extra_updated_cols_.Set(index, value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.extra_updated_cols) } inline void RangeTblEntry::_internal_add_extra_updated_cols(uint64_t value) { _impl_.extra_updated_cols_.Add(value); } inline void RangeTblEntry::add_extra_updated_cols(uint64_t value) { _internal_add_extra_updated_cols(value); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.extra_updated_cols) } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& RangeTblEntry::_internal_extra_updated_cols() const { return _impl_.extra_updated_cols_; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& RangeTblEntry::extra_updated_cols() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.extra_updated_cols) return _internal_extra_updated_cols(); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* RangeTblEntry::_internal_mutable_extra_updated_cols() { return &_impl_.extra_updated_cols_; } inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* RangeTblEntry::mutable_extra_updated_cols() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.extra_updated_cols) return _internal_mutable_extra_updated_cols(); } // repeated .pg_query.Node security_quals = 37 [json_name = "securityQuals"]; inline int RangeTblEntry::_internal_security_quals_size() const { return _impl_.security_quals_.size(); } inline int RangeTblEntry::security_quals_size() const { return _internal_security_quals_size(); } inline void RangeTblEntry::clear_security_quals() { _impl_.security_quals_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_security_quals(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.security_quals) return _impl_.security_quals_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_security_quals() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.security_quals) return &_impl_.security_quals_; } inline const ::pg_query::Node& RangeTblEntry::_internal_security_quals(int index) const { return _impl_.security_quals_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::security_quals(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.security_quals) return _internal_security_quals(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_security_quals() { return _impl_.security_quals_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_security_quals() { ::pg_query::Node* _add = _internal_add_security_quals(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.security_quals) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::security_quals() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.security_quals) return _impl_.security_quals_; } // ------------------------------------------------------------------- // RangeTblFunction // .pg_query.Node funcexpr = 1 [json_name = "funcexpr"]; inline bool RangeTblFunction::_internal_has_funcexpr() const { return this != internal_default_instance() && _impl_.funcexpr_ != nullptr; } inline bool RangeTblFunction::has_funcexpr() const { return _internal_has_funcexpr(); } inline void RangeTblFunction::clear_funcexpr() { if (GetArenaForAllocation() == nullptr && _impl_.funcexpr_ != nullptr) { delete _impl_.funcexpr_; } _impl_.funcexpr_ = nullptr; } inline const ::pg_query::Node& RangeTblFunction::_internal_funcexpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funcexpr) return _internal_funcexpr(); } inline void RangeTblFunction::unsafe_arena_set_allocated_funcexpr( ::pg_query::Node* funcexpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.funcexpr_); } _impl_.funcexpr_ = funcexpr; if (funcexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblFunction.funcexpr) } inline ::pg_query::Node* RangeTblFunction::release_funcexpr() { ::pg_query::Node* temp = _impl_.funcexpr_; _impl_.funcexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* RangeTblFunction::unsafe_arena_release_funcexpr() { // @@protoc_insertion_point(field_release:pg_query.RangeTblFunction.funcexpr) ::pg_query::Node* temp = _impl_.funcexpr_; _impl_.funcexpr_ = nullptr; return temp; } inline ::pg_query::Node* RangeTblFunction::_internal_mutable_funcexpr() { if (_impl_.funcexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.funcexpr_ = p; } return _impl_.funcexpr_; } inline ::pg_query::Node* RangeTblFunction::mutable_funcexpr() { ::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* funcexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.funcexpr_; } if (funcexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(funcexpr); if (message_arena != submessage_arena) { funcexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, funcexpr, submessage_arena); } } else { } _impl_.funcexpr_ = funcexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblFunction.funcexpr) } // int32 funccolcount = 2 [json_name = "funccolcount"]; inline void RangeTblFunction::clear_funccolcount() { _impl_.funccolcount_ = 0; } inline int32_t RangeTblFunction::_internal_funccolcount() const { return _impl_.funccolcount_; } inline int32_t RangeTblFunction::funccolcount() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccolcount) return _internal_funccolcount(); } inline void RangeTblFunction::_internal_set_funccolcount(int32_t value) { _impl_.funccolcount_ = value; } inline void RangeTblFunction::set_funccolcount(int32_t value) { _internal_set_funccolcount(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblFunction.funccolcount) } // repeated .pg_query.Node funccolnames = 3 [json_name = "funccolnames"]; inline int RangeTblFunction::_internal_funccolnames_size() const { return _impl_.funccolnames_.size(); } inline int RangeTblFunction::funccolnames_size() const { return _internal_funccolnames_size(); } inline void RangeTblFunction::clear_funccolnames() { _impl_.funccolnames_.Clear(); } inline ::pg_query::Node* RangeTblFunction::mutable_funccolnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funccolnames) return _impl_.funccolnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblFunction::mutable_funccolnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funccolnames) return &_impl_.funccolnames_; } inline const ::pg_query::Node& RangeTblFunction::_internal_funccolnames(int index) const { return _impl_.funccolnames_.Get(index); } inline const ::pg_query::Node& RangeTblFunction::funccolnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccolnames) return _internal_funccolnames(index); } inline ::pg_query::Node* RangeTblFunction::_internal_add_funccolnames() { return _impl_.funccolnames_.Add(); } inline ::pg_query::Node* RangeTblFunction::add_funccolnames() { ::pg_query::Node* _add = _internal_add_funccolnames(); // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funccolnames) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblFunction::funccolnames() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funccolnames) return _impl_.funccolnames_; } // repeated .pg_query.Node funccoltypes = 4 [json_name = "funccoltypes"]; inline int RangeTblFunction::_internal_funccoltypes_size() const { return _impl_.funccoltypes_.size(); } inline int RangeTblFunction::funccoltypes_size() const { return _internal_funccoltypes_size(); } inline void RangeTblFunction::clear_funccoltypes() { _impl_.funccoltypes_.Clear(); } inline ::pg_query::Node* RangeTblFunction::mutable_funccoltypes(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funccoltypes) return _impl_.funccoltypes_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblFunction::mutable_funccoltypes() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funccoltypes) return &_impl_.funccoltypes_; } inline const ::pg_query::Node& RangeTblFunction::_internal_funccoltypes(int index) const { return _impl_.funccoltypes_.Get(index); } inline const ::pg_query::Node& RangeTblFunction::funccoltypes(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccoltypes) return _internal_funccoltypes(index); } inline ::pg_query::Node* RangeTblFunction::_internal_add_funccoltypes() { return _impl_.funccoltypes_.Add(); } inline ::pg_query::Node* RangeTblFunction::add_funccoltypes() { ::pg_query::Node* _add = _internal_add_funccoltypes(); // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funccoltypes) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblFunction::funccoltypes() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funccoltypes) return _impl_.funccoltypes_; } // repeated .pg_query.Node funccoltypmods = 5 [json_name = "funccoltypmods"]; inline int RangeTblFunction::_internal_funccoltypmods_size() const { return _impl_.funccoltypmods_.size(); } inline int RangeTblFunction::funccoltypmods_size() const { return _internal_funccoltypmods_size(); } inline void RangeTblFunction::clear_funccoltypmods() { _impl_.funccoltypmods_.Clear(); } inline ::pg_query::Node* RangeTblFunction::mutable_funccoltypmods(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funccoltypmods) return _impl_.funccoltypmods_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblFunction::mutable_funccoltypmods() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funccoltypmods) return &_impl_.funccoltypmods_; } inline const ::pg_query::Node& RangeTblFunction::_internal_funccoltypmods(int index) const { return _impl_.funccoltypmods_.Get(index); } inline const ::pg_query::Node& RangeTblFunction::funccoltypmods(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccoltypmods) return _internal_funccoltypmods(index); } inline ::pg_query::Node* RangeTblFunction::_internal_add_funccoltypmods() { return _impl_.funccoltypmods_.Add(); } inline ::pg_query::Node* RangeTblFunction::add_funccoltypmods() { ::pg_query::Node* _add = _internal_add_funccoltypmods(); // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funccoltypmods) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblFunction::funccoltypmods() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funccoltypmods) return _impl_.funccoltypmods_; } // repeated .pg_query.Node funccolcollations = 6 [json_name = "funccolcollations"]; inline int RangeTblFunction::_internal_funccolcollations_size() const { return _impl_.funccolcollations_.size(); } inline int RangeTblFunction::funccolcollations_size() const { return _internal_funccolcollations_size(); } inline void RangeTblFunction::clear_funccolcollations() { _impl_.funccolcollations_.Clear(); } inline ::pg_query::Node* RangeTblFunction::mutable_funccolcollations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funccolcollations) return _impl_.funccolcollations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblFunction::mutable_funccolcollations() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funccolcollations) return &_impl_.funccolcollations_; } inline const ::pg_query::Node& RangeTblFunction::_internal_funccolcollations(int index) const { return _impl_.funccolcollations_.Get(index); } inline const ::pg_query::Node& RangeTblFunction::funccolcollations(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccolcollations) return _internal_funccolcollations(index); } inline ::pg_query::Node* RangeTblFunction::_internal_add_funccolcollations() { return _impl_.funccolcollations_.Add(); } inline ::pg_query::Node* RangeTblFunction::add_funccolcollations() { ::pg_query::Node* _add = _internal_add_funccolcollations(); // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funccolcollations) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblFunction::funccolcollations() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funccolcollations) return _impl_.funccolcollations_; } // repeated uint64 funcparams = 7 [json_name = "funcparams"]; inline int RangeTblFunction::_internal_funcparams_size() const { return _impl_.funcparams_.size(); } inline int RangeTblFunction::funcparams_size() const { return _internal_funcparams_size(); } inline void RangeTblFunction::clear_funcparams() { _impl_.funcparams_.Clear(); } inline uint64_t RangeTblFunction::_internal_funcparams(int index) const { return _impl_.funcparams_.Get(index); } inline uint64_t RangeTblFunction::funcparams(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funcparams) return _internal_funcparams(index); } inline void RangeTblFunction::set_funcparams(int index, uint64_t value) { _impl_.funcparams_.Set(index, value); // @@protoc_insertion_point(field_set:pg_query.RangeTblFunction.funcparams) } inline void RangeTblFunction::_internal_add_funcparams(uint64_t value) { _impl_.funcparams_.Add(value); } inline void RangeTblFunction::add_funcparams(uint64_t value) { _internal_add_funcparams(value); // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funcparams) } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& RangeTblFunction::_internal_funcparams() const { return _impl_.funcparams_; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >& RangeTblFunction::funcparams() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funcparams) return _internal_funcparams(); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* RangeTblFunction::_internal_mutable_funcparams() { return &_impl_.funcparams_; } inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >* RangeTblFunction::mutable_funcparams() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funcparams) return _internal_mutable_funcparams(); } // ------------------------------------------------------------------- // TableSampleClause // uint32 tsmhandler = 1 [json_name = "tsmhandler"]; inline void TableSampleClause::clear_tsmhandler() { _impl_.tsmhandler_ = 0u; } inline uint32_t TableSampleClause::_internal_tsmhandler() const { return _impl_.tsmhandler_; } inline uint32_t TableSampleClause::tsmhandler() const { // @@protoc_insertion_point(field_get:pg_query.TableSampleClause.tsmhandler) return _internal_tsmhandler(); } inline void TableSampleClause::_internal_set_tsmhandler(uint32_t value) { _impl_.tsmhandler_ = value; } inline void TableSampleClause::set_tsmhandler(uint32_t value) { _internal_set_tsmhandler(value); // @@protoc_insertion_point(field_set:pg_query.TableSampleClause.tsmhandler) } // repeated .pg_query.Node args = 2 [json_name = "args"]; inline int TableSampleClause::_internal_args_size() const { return _impl_.args_.size(); } inline int TableSampleClause::args_size() const { return _internal_args_size(); } inline void TableSampleClause::clear_args() { _impl_.args_.Clear(); } inline ::pg_query::Node* TableSampleClause::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableSampleClause.args) return _impl_.args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableSampleClause::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableSampleClause.args) return &_impl_.args_; } inline const ::pg_query::Node& TableSampleClause::_internal_args(int index) const { return _impl_.args_.Get(index); } inline const ::pg_query::Node& TableSampleClause::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableSampleClause.args) return _internal_args(index); } inline ::pg_query::Node* TableSampleClause::_internal_add_args() { return _impl_.args_.Add(); } inline ::pg_query::Node* TableSampleClause::add_args() { ::pg_query::Node* _add = _internal_add_args(); // @@protoc_insertion_point(field_add:pg_query.TableSampleClause.args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableSampleClause::args() const { // @@protoc_insertion_point(field_list:pg_query.TableSampleClause.args) return _impl_.args_; } // .pg_query.Node repeatable = 3 [json_name = "repeatable"]; inline bool TableSampleClause::_internal_has_repeatable() const { return this != internal_default_instance() && _impl_.repeatable_ != nullptr; } inline bool TableSampleClause::has_repeatable() const { return _internal_has_repeatable(); } inline void TableSampleClause::clear_repeatable() { if (GetArenaForAllocation() == nullptr && _impl_.repeatable_ != nullptr) { delete _impl_.repeatable_; } _impl_.repeatable_ = nullptr; } inline const ::pg_query::Node& TableSampleClause::_internal_repeatable() const { 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 { // @@protoc_insertion_point(field_get:pg_query.TableSampleClause.repeatable) return _internal_repeatable(); } inline void TableSampleClause::unsafe_arena_set_allocated_repeatable( ::pg_query::Node* repeatable) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.repeatable_); } _impl_.repeatable_ = repeatable; if (repeatable) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TableSampleClause.repeatable) } inline ::pg_query::Node* TableSampleClause::release_repeatable() { ::pg_query::Node* temp = _impl_.repeatable_; _impl_.repeatable_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* TableSampleClause::unsafe_arena_release_repeatable() { // @@protoc_insertion_point(field_release:pg_query.TableSampleClause.repeatable) ::pg_query::Node* temp = _impl_.repeatable_; _impl_.repeatable_ = nullptr; return temp; } inline ::pg_query::Node* TableSampleClause::_internal_mutable_repeatable() { if (_impl_.repeatable_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.repeatable_ = p; } return _impl_.repeatable_; } inline ::pg_query::Node* TableSampleClause::mutable_repeatable() { ::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* repeatable) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.repeatable_; } if (repeatable) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(repeatable); if (message_arena != submessage_arena) { repeatable = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, repeatable, submessage_arena); } } else { } _impl_.repeatable_ = repeatable; // @@protoc_insertion_point(field_set_allocated:pg_query.TableSampleClause.repeatable) } // ------------------------------------------------------------------- // WithCheckOption // .pg_query.WCOKind kind = 1 [json_name = "kind"]; inline void WithCheckOption::clear_kind() { _impl_.kind_ = 0; } inline ::pg_query::WCOKind WithCheckOption::_internal_kind() const { return static_cast< ::pg_query::WCOKind >(_impl_.kind_); } inline ::pg_query::WCOKind WithCheckOption::kind() const { // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.kind) return _internal_kind(); } inline void WithCheckOption::_internal_set_kind(::pg_query::WCOKind value) { _impl_.kind_ = value; } inline void WithCheckOption::set_kind(::pg_query::WCOKind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.WithCheckOption.kind) } // string relname = 2 [json_name = "relname"]; inline void WithCheckOption::clear_relname() { _impl_.relname_.ClearToEmpty(); } inline const std::string& WithCheckOption::relname() const { // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.relname) return _internal_relname(); } template inline PROTOBUF_ALWAYS_INLINE void WithCheckOption::set_relname(ArgT0&& arg0, ArgT... args) { _impl_.relname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.WithCheckOption.relname) } inline std::string* WithCheckOption::mutable_relname() { 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 { return _impl_.relname_.Get(); } inline void WithCheckOption::_internal_set_relname(const std::string& value) { _impl_.relname_.Set(value, GetArenaForAllocation()); } inline std::string* WithCheckOption::_internal_mutable_relname() { return _impl_.relname_.Mutable(GetArenaForAllocation()); } inline std::string* WithCheckOption::release_relname() { // @@protoc_insertion_point(field_release:pg_query.WithCheckOption.relname) return _impl_.relname_.Release(); } inline void WithCheckOption::set_allocated_relname(std::string* relname) { if (relname != nullptr) { } else { } _impl_.relname_.SetAllocated(relname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.relname_.IsDefault()) { _impl_.relname_.Set("", GetArenaForAllocation()); } #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() { _impl_.polname_.ClearToEmpty(); } inline const std::string& WithCheckOption::polname() const { // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.polname) return _internal_polname(); } template inline PROTOBUF_ALWAYS_INLINE void WithCheckOption::set_polname(ArgT0&& arg0, ArgT... args) { _impl_.polname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.WithCheckOption.polname) } inline std::string* WithCheckOption::mutable_polname() { 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 { return _impl_.polname_.Get(); } inline void WithCheckOption::_internal_set_polname(const std::string& value) { _impl_.polname_.Set(value, GetArenaForAllocation()); } inline std::string* WithCheckOption::_internal_mutable_polname() { return _impl_.polname_.Mutable(GetArenaForAllocation()); } inline std::string* WithCheckOption::release_polname() { // @@protoc_insertion_point(field_release:pg_query.WithCheckOption.polname) return _impl_.polname_.Release(); } inline void WithCheckOption::set_allocated_polname(std::string* polname) { if (polname != nullptr) { } else { } _impl_.polname_.SetAllocated(polname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.polname_.IsDefault()) { _impl_.polname_.Set("", GetArenaForAllocation()); } #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::_internal_has_qual() const { return this != internal_default_instance() && _impl_.qual_ != nullptr; } inline bool WithCheckOption::has_qual() const { return _internal_has_qual(); } inline void WithCheckOption::clear_qual() { if (GetArenaForAllocation() == nullptr && _impl_.qual_ != nullptr) { delete _impl_.qual_; } _impl_.qual_ = nullptr; } inline const ::pg_query::Node& WithCheckOption::_internal_qual() const { 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 { // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.qual) return _internal_qual(); } inline void WithCheckOption::unsafe_arena_set_allocated_qual( ::pg_query::Node* qual) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.qual_); } _impl_.qual_ = qual; if (qual) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WithCheckOption.qual) } inline ::pg_query::Node* WithCheckOption::release_qual() { ::pg_query::Node* temp = _impl_.qual_; _impl_.qual_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* WithCheckOption::unsafe_arena_release_qual() { // @@protoc_insertion_point(field_release:pg_query.WithCheckOption.qual) ::pg_query::Node* temp = _impl_.qual_; _impl_.qual_ = nullptr; return temp; } inline ::pg_query::Node* WithCheckOption::_internal_mutable_qual() { if (_impl_.qual_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.qual_ = p; } return _impl_.qual_; } inline ::pg_query::Node* WithCheckOption::mutable_qual() { ::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* qual) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.qual_; } if (qual) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(qual); if (message_arena != submessage_arena) { qual = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, qual, submessage_arena); } } else { } _impl_.qual_ = qual; // @@protoc_insertion_point(field_set_allocated:pg_query.WithCheckOption.qual) } // bool cascaded = 5 [json_name = "cascaded"]; inline void WithCheckOption::clear_cascaded() { _impl_.cascaded_ = false; } inline bool WithCheckOption::_internal_cascaded() const { return _impl_.cascaded_; } inline bool WithCheckOption::cascaded() const { // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.cascaded) return _internal_cascaded(); } inline void WithCheckOption::_internal_set_cascaded(bool value) { _impl_.cascaded_ = value; } inline void WithCheckOption::set_cascaded(bool value) { _internal_set_cascaded(value); // @@protoc_insertion_point(field_set:pg_query.WithCheckOption.cascaded) } // ------------------------------------------------------------------- // SortGroupClause // uint32 tle_sort_group_ref = 1 [json_name = "tleSortGroupRef"]; inline void SortGroupClause::clear_tle_sort_group_ref() { _impl_.tle_sort_group_ref_ = 0u; } inline uint32_t SortGroupClause::_internal_tle_sort_group_ref() const { return _impl_.tle_sort_group_ref_; } 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::_internal_set_tle_sort_group_ref(uint32_t value) { _impl_.tle_sort_group_ref_ = value; } 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) } // uint32 eqop = 2 [json_name = "eqop"]; inline void SortGroupClause::clear_eqop() { _impl_.eqop_ = 0u; } inline uint32_t SortGroupClause::_internal_eqop() const { return _impl_.eqop_; } inline uint32_t SortGroupClause::eqop() const { // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.eqop) return _internal_eqop(); } inline void SortGroupClause::_internal_set_eqop(uint32_t value) { _impl_.eqop_ = value; } inline void SortGroupClause::set_eqop(uint32_t value) { _internal_set_eqop(value); // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.eqop) } // uint32 sortop = 3 [json_name = "sortop"]; inline void SortGroupClause::clear_sortop() { _impl_.sortop_ = 0u; } inline uint32_t SortGroupClause::_internal_sortop() const { return _impl_.sortop_; } inline uint32_t SortGroupClause::sortop() const { // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.sortop) return _internal_sortop(); } inline void SortGroupClause::_internal_set_sortop(uint32_t value) { _impl_.sortop_ = value; } inline void SortGroupClause::set_sortop(uint32_t value) { _internal_set_sortop(value); // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.sortop) } // bool nulls_first = 4 [json_name = "nulls_first"]; inline void SortGroupClause::clear_nulls_first() { _impl_.nulls_first_ = false; } inline bool SortGroupClause::_internal_nulls_first() const { return _impl_.nulls_first_; } inline bool SortGroupClause::nulls_first() const { // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.nulls_first) return _internal_nulls_first(); } inline void SortGroupClause::_internal_set_nulls_first(bool value) { _impl_.nulls_first_ = value; } inline void SortGroupClause::set_nulls_first(bool value) { _internal_set_nulls_first(value); // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.nulls_first) } // bool hashable = 5 [json_name = "hashable"]; inline void SortGroupClause::clear_hashable() { _impl_.hashable_ = false; } inline bool SortGroupClause::_internal_hashable() const { return _impl_.hashable_; } inline bool SortGroupClause::hashable() const { // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.hashable) return _internal_hashable(); } inline void SortGroupClause::_internal_set_hashable(bool value) { _impl_.hashable_ = value; } inline void SortGroupClause::set_hashable(bool value) { _internal_set_hashable(value); // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.hashable) } // ------------------------------------------------------------------- // GroupingSet // .pg_query.GroupingSetKind kind = 1 [json_name = "kind"]; inline void GroupingSet::clear_kind() { _impl_.kind_ = 0; } inline ::pg_query::GroupingSetKind GroupingSet::_internal_kind() const { return static_cast< ::pg_query::GroupingSetKind >(_impl_.kind_); } inline ::pg_query::GroupingSetKind GroupingSet::kind() const { // @@protoc_insertion_point(field_get:pg_query.GroupingSet.kind) return _internal_kind(); } inline void GroupingSet::_internal_set_kind(::pg_query::GroupingSetKind value) { _impl_.kind_ = value; } inline void GroupingSet::set_kind(::pg_query::GroupingSetKind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.GroupingSet.kind) } // repeated .pg_query.Node content = 2 [json_name = "content"]; inline int GroupingSet::_internal_content_size() const { return _impl_.content_.size(); } inline int GroupingSet::content_size() const { return _internal_content_size(); } inline void GroupingSet::clear_content() { _impl_.content_.Clear(); } inline ::pg_query::Node* GroupingSet::mutable_content(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GroupingSet.content) return _impl_.content_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GroupingSet::mutable_content() { // @@protoc_insertion_point(field_mutable_list:pg_query.GroupingSet.content) return &_impl_.content_; } inline const ::pg_query::Node& GroupingSet::_internal_content(int index) const { return _impl_.content_.Get(index); } inline const ::pg_query::Node& GroupingSet::content(int index) const { // @@protoc_insertion_point(field_get:pg_query.GroupingSet.content) return _internal_content(index); } inline ::pg_query::Node* GroupingSet::_internal_add_content() { return _impl_.content_.Add(); } inline ::pg_query::Node* GroupingSet::add_content() { ::pg_query::Node* _add = _internal_add_content(); // @@protoc_insertion_point(field_add:pg_query.GroupingSet.content) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GroupingSet::content() const { // @@protoc_insertion_point(field_list:pg_query.GroupingSet.content) return _impl_.content_; } // int32 location = 3 [json_name = "location"]; inline void GroupingSet::clear_location() { _impl_.location_ = 0; } inline int32_t GroupingSet::_internal_location() const { return _impl_.location_; } inline int32_t GroupingSet::location() const { // @@protoc_insertion_point(field_get:pg_query.GroupingSet.location) return _internal_location(); } inline void GroupingSet::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void GroupingSet::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.GroupingSet.location) } // ------------------------------------------------------------------- // WindowClause // string name = 1 [json_name = "name"]; inline void WindowClause::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& WindowClause::name() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void WindowClause::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.WindowClause.name) } inline std::string* WindowClause::mutable_name() { 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 { return _impl_.name_.Get(); } inline void WindowClause::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* WindowClause::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* WindowClause::release_name() { // @@protoc_insertion_point(field_release:pg_query.WindowClause.name) return _impl_.name_.Release(); } inline void WindowClause::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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() { _impl_.refname_.ClearToEmpty(); } inline const std::string& WindowClause::refname() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.refname) return _internal_refname(); } template inline PROTOBUF_ALWAYS_INLINE void WindowClause::set_refname(ArgT0&& arg0, ArgT... args) { _impl_.refname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.WindowClause.refname) } inline std::string* WindowClause::mutable_refname() { 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 { return _impl_.refname_.Get(); } inline void WindowClause::_internal_set_refname(const std::string& value) { _impl_.refname_.Set(value, GetArenaForAllocation()); } inline std::string* WindowClause::_internal_mutable_refname() { return _impl_.refname_.Mutable(GetArenaForAllocation()); } inline std::string* WindowClause::release_refname() { // @@protoc_insertion_point(field_release:pg_query.WindowClause.refname) return _impl_.refname_.Release(); } inline void WindowClause::set_allocated_refname(std::string* refname) { if (refname != nullptr) { } else { } _impl_.refname_.SetAllocated(refname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.refname_.IsDefault()) { _impl_.refname_.Set("", GetArenaForAllocation()); } #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 _impl_.partition_clause_.size(); } inline int WindowClause::partition_clause_size() const { return _internal_partition_clause_size(); } inline void WindowClause::clear_partition_clause() { _impl_.partition_clause_.Clear(); } inline ::pg_query::Node* WindowClause::mutable_partition_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.partition_clause) return _impl_.partition_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* WindowClause::mutable_partition_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.WindowClause.partition_clause) return &_impl_.partition_clause_; } inline const ::pg_query::Node& WindowClause::_internal_partition_clause(int index) const { return _impl_.partition_clause_.Get(index); } inline const ::pg_query::Node& WindowClause::partition_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.partition_clause) return _internal_partition_clause(index); } inline ::pg_query::Node* WindowClause::_internal_add_partition_clause() { return _impl_.partition_clause_.Add(); } inline ::pg_query::Node* WindowClause::add_partition_clause() { ::pg_query::Node* _add = _internal_add_partition_clause(); // @@protoc_insertion_point(field_add:pg_query.WindowClause.partition_clause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& WindowClause::partition_clause() const { // @@protoc_insertion_point(field_list:pg_query.WindowClause.partition_clause) return _impl_.partition_clause_; } // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; inline int WindowClause::_internal_order_clause_size() const { return _impl_.order_clause_.size(); } inline int WindowClause::order_clause_size() const { return _internal_order_clause_size(); } inline void WindowClause::clear_order_clause() { _impl_.order_clause_.Clear(); } inline ::pg_query::Node* WindowClause::mutable_order_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.order_clause) return _impl_.order_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* WindowClause::mutable_order_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.WindowClause.order_clause) return &_impl_.order_clause_; } inline const ::pg_query::Node& WindowClause::_internal_order_clause(int index) const { return _impl_.order_clause_.Get(index); } inline const ::pg_query::Node& WindowClause::order_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.order_clause) return _internal_order_clause(index); } inline ::pg_query::Node* WindowClause::_internal_add_order_clause() { return _impl_.order_clause_.Add(); } inline ::pg_query::Node* WindowClause::add_order_clause() { ::pg_query::Node* _add = _internal_add_order_clause(); // @@protoc_insertion_point(field_add:pg_query.WindowClause.order_clause) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& WindowClause::order_clause() const { // @@protoc_insertion_point(field_list:pg_query.WindowClause.order_clause) return _impl_.order_clause_; } // int32 frame_options = 5 [json_name = "frameOptions"]; inline void WindowClause::clear_frame_options() { _impl_.frame_options_ = 0; } inline int32_t WindowClause::_internal_frame_options() const { return _impl_.frame_options_; } inline int32_t WindowClause::frame_options() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.frame_options) return _internal_frame_options(); } inline void WindowClause::_internal_set_frame_options(int32_t value) { _impl_.frame_options_ = value; } inline void WindowClause::set_frame_options(int32_t value) { _internal_set_frame_options(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.frame_options) } // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; inline bool WindowClause::_internal_has_start_offset() const { return this != internal_default_instance() && _impl_.start_offset_ != nullptr; } inline bool WindowClause::has_start_offset() const { return _internal_has_start_offset(); } inline void WindowClause::clear_start_offset() { if (GetArenaForAllocation() == nullptr && _impl_.start_offset_ != nullptr) { delete _impl_.start_offset_; } _impl_.start_offset_ = nullptr; } inline const ::pg_query::Node& WindowClause::_internal_start_offset() const { 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 { // @@protoc_insertion_point(field_get:pg_query.WindowClause.start_offset) return _internal_start_offset(); } inline void WindowClause::unsafe_arena_set_allocated_start_offset( ::pg_query::Node* start_offset) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.start_offset_); } _impl_.start_offset_ = start_offset; if (start_offset) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowClause.start_offset) } inline ::pg_query::Node* WindowClause::release_start_offset() { ::pg_query::Node* temp = _impl_.start_offset_; _impl_.start_offset_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* WindowClause::unsafe_arena_release_start_offset() { // @@protoc_insertion_point(field_release:pg_query.WindowClause.start_offset) ::pg_query::Node* temp = _impl_.start_offset_; _impl_.start_offset_ = nullptr; return temp; } inline ::pg_query::Node* WindowClause::_internal_mutable_start_offset() { if (_impl_.start_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.start_offset_ = p; } return _impl_.start_offset_; } inline ::pg_query::Node* WindowClause::mutable_start_offset() { ::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* start_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.start_offset_; } if (start_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(start_offset); if (message_arena != submessage_arena) { start_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, start_offset, submessage_arena); } } else { } _impl_.start_offset_ = start_offset; // @@protoc_insertion_point(field_set_allocated:pg_query.WindowClause.start_offset) } // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; inline bool WindowClause::_internal_has_end_offset() const { return this != internal_default_instance() && _impl_.end_offset_ != nullptr; } inline bool WindowClause::has_end_offset() const { return _internal_has_end_offset(); } inline void WindowClause::clear_end_offset() { if (GetArenaForAllocation() == nullptr && _impl_.end_offset_ != nullptr) { delete _impl_.end_offset_; } _impl_.end_offset_ = nullptr; } inline const ::pg_query::Node& WindowClause::_internal_end_offset() const { 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 { // @@protoc_insertion_point(field_get:pg_query.WindowClause.end_offset) return _internal_end_offset(); } inline void WindowClause::unsafe_arena_set_allocated_end_offset( ::pg_query::Node* end_offset) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.end_offset_); } _impl_.end_offset_ = end_offset; if (end_offset) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowClause.end_offset) } inline ::pg_query::Node* WindowClause::release_end_offset() { ::pg_query::Node* temp = _impl_.end_offset_; _impl_.end_offset_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* WindowClause::unsafe_arena_release_end_offset() { // @@protoc_insertion_point(field_release:pg_query.WindowClause.end_offset) ::pg_query::Node* temp = _impl_.end_offset_; _impl_.end_offset_ = nullptr; return temp; } inline ::pg_query::Node* WindowClause::_internal_mutable_end_offset() { if (_impl_.end_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.end_offset_ = p; } return _impl_.end_offset_; } inline ::pg_query::Node* WindowClause::mutable_end_offset() { ::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* end_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.end_offset_; } if (end_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(end_offset); if (message_arena != submessage_arena) { end_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, end_offset, submessage_arena); } } else { } _impl_.end_offset_ = end_offset; // @@protoc_insertion_point(field_set_allocated:pg_query.WindowClause.end_offset) } // repeated .pg_query.Node run_condition = 8 [json_name = "runCondition"]; inline int WindowClause::_internal_run_condition_size() const { return _impl_.run_condition_.size(); } inline int WindowClause::run_condition_size() const { return _internal_run_condition_size(); } inline void WindowClause::clear_run_condition() { _impl_.run_condition_.Clear(); } inline ::pg_query::Node* WindowClause::mutable_run_condition(int index) { // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.run_condition) return _impl_.run_condition_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* WindowClause::mutable_run_condition() { // @@protoc_insertion_point(field_mutable_list:pg_query.WindowClause.run_condition) return &_impl_.run_condition_; } inline const ::pg_query::Node& WindowClause::_internal_run_condition(int index) const { return _impl_.run_condition_.Get(index); } inline const ::pg_query::Node& WindowClause::run_condition(int index) const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.run_condition) return _internal_run_condition(index); } inline ::pg_query::Node* WindowClause::_internal_add_run_condition() { return _impl_.run_condition_.Add(); } inline ::pg_query::Node* WindowClause::add_run_condition() { ::pg_query::Node* _add = _internal_add_run_condition(); // @@protoc_insertion_point(field_add:pg_query.WindowClause.run_condition) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& WindowClause::run_condition() const { // @@protoc_insertion_point(field_list:pg_query.WindowClause.run_condition) return _impl_.run_condition_; } // uint32 start_in_range_func = 9 [json_name = "startInRangeFunc"]; inline void WindowClause::clear_start_in_range_func() { _impl_.start_in_range_func_ = 0u; } inline uint32_t WindowClause::_internal_start_in_range_func() const { return _impl_.start_in_range_func_; } 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::_internal_set_start_in_range_func(uint32_t value) { _impl_.start_in_range_func_ = value; } 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) } // uint32 end_in_range_func = 10 [json_name = "endInRangeFunc"]; inline void WindowClause::clear_end_in_range_func() { _impl_.end_in_range_func_ = 0u; } inline uint32_t WindowClause::_internal_end_in_range_func() const { return _impl_.end_in_range_func_; } 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::_internal_set_end_in_range_func(uint32_t value) { _impl_.end_in_range_func_ = value; } 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) } // uint32 in_range_coll = 11 [json_name = "inRangeColl"]; inline void WindowClause::clear_in_range_coll() { _impl_.in_range_coll_ = 0u; } inline uint32_t WindowClause::_internal_in_range_coll() const { return _impl_.in_range_coll_; } 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::_internal_set_in_range_coll(uint32_t value) { _impl_.in_range_coll_ = value; } 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) } // bool in_range_asc = 12 [json_name = "inRangeAsc"]; inline void WindowClause::clear_in_range_asc() { _impl_.in_range_asc_ = false; } inline bool WindowClause::_internal_in_range_asc() const { return _impl_.in_range_asc_; } inline bool WindowClause::in_range_asc() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.in_range_asc) return _internal_in_range_asc(); } inline void WindowClause::_internal_set_in_range_asc(bool value) { _impl_.in_range_asc_ = value; } inline void WindowClause::set_in_range_asc(bool value) { _internal_set_in_range_asc(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.in_range_asc) } // bool in_range_nulls_first = 13 [json_name = "inRangeNullsFirst"]; inline void WindowClause::clear_in_range_nulls_first() { _impl_.in_range_nulls_first_ = false; } inline bool WindowClause::_internal_in_range_nulls_first() const { return _impl_.in_range_nulls_first_; } inline bool WindowClause::in_range_nulls_first() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.in_range_nulls_first) return _internal_in_range_nulls_first(); } inline void WindowClause::_internal_set_in_range_nulls_first(bool value) { _impl_.in_range_nulls_first_ = value; } inline void WindowClause::set_in_range_nulls_first(bool value) { _internal_set_in_range_nulls_first(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.in_range_nulls_first) } // uint32 winref = 14 [json_name = "winref"]; inline void WindowClause::clear_winref() { _impl_.winref_ = 0u; } inline uint32_t WindowClause::_internal_winref() const { return _impl_.winref_; } inline uint32_t WindowClause::winref() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.winref) return _internal_winref(); } inline void WindowClause::_internal_set_winref(uint32_t value) { _impl_.winref_ = value; } inline void WindowClause::set_winref(uint32_t value) { _internal_set_winref(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.winref) } // bool copied_order = 15 [json_name = "copiedOrder"]; inline void WindowClause::clear_copied_order() { _impl_.copied_order_ = false; } inline bool WindowClause::_internal_copied_order() const { return _impl_.copied_order_; } inline bool WindowClause::copied_order() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.copied_order) return _internal_copied_order(); } inline void WindowClause::_internal_set_copied_order(bool value) { _impl_.copied_order_ = value; } inline void WindowClause::set_copied_order(bool value) { _internal_set_copied_order(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.copied_order) } // ------------------------------------------------------------------- // ObjectWithArgs // repeated .pg_query.Node objname = 1 [json_name = "objname"]; inline int ObjectWithArgs::_internal_objname_size() const { return _impl_.objname_.size(); } inline int ObjectWithArgs::objname_size() const { return _internal_objname_size(); } inline void ObjectWithArgs::clear_objname() { _impl_.objname_.Clear(); } inline ::pg_query::Node* ObjectWithArgs::mutable_objname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ObjectWithArgs.objname) return _impl_.objname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ObjectWithArgs::mutable_objname() { // @@protoc_insertion_point(field_mutable_list:pg_query.ObjectWithArgs.objname) return &_impl_.objname_; } inline const ::pg_query::Node& ObjectWithArgs::_internal_objname(int index) const { return _impl_.objname_.Get(index); } inline const ::pg_query::Node& ObjectWithArgs::objname(int index) const { // @@protoc_insertion_point(field_get:pg_query.ObjectWithArgs.objname) return _internal_objname(index); } inline ::pg_query::Node* ObjectWithArgs::_internal_add_objname() { return _impl_.objname_.Add(); } inline ::pg_query::Node* ObjectWithArgs::add_objname() { ::pg_query::Node* _add = _internal_add_objname(); // @@protoc_insertion_point(field_add:pg_query.ObjectWithArgs.objname) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ObjectWithArgs::objname() const { // @@protoc_insertion_point(field_list:pg_query.ObjectWithArgs.objname) return _impl_.objname_; } // repeated .pg_query.Node objargs = 2 [json_name = "objargs"]; inline int ObjectWithArgs::_internal_objargs_size() const { return _impl_.objargs_.size(); } inline int ObjectWithArgs::objargs_size() const { return _internal_objargs_size(); } inline void ObjectWithArgs::clear_objargs() { _impl_.objargs_.Clear(); } inline ::pg_query::Node* ObjectWithArgs::mutable_objargs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ObjectWithArgs.objargs) return _impl_.objargs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ObjectWithArgs::mutable_objargs() { // @@protoc_insertion_point(field_mutable_list:pg_query.ObjectWithArgs.objargs) return &_impl_.objargs_; } inline const ::pg_query::Node& ObjectWithArgs::_internal_objargs(int index) const { return _impl_.objargs_.Get(index); } inline const ::pg_query::Node& ObjectWithArgs::objargs(int index) const { // @@protoc_insertion_point(field_get:pg_query.ObjectWithArgs.objargs) return _internal_objargs(index); } inline ::pg_query::Node* ObjectWithArgs::_internal_add_objargs() { return _impl_.objargs_.Add(); } inline ::pg_query::Node* ObjectWithArgs::add_objargs() { ::pg_query::Node* _add = _internal_add_objargs(); // @@protoc_insertion_point(field_add:pg_query.ObjectWithArgs.objargs) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ObjectWithArgs::objargs() const { // @@protoc_insertion_point(field_list:pg_query.ObjectWithArgs.objargs) return _impl_.objargs_; } // repeated .pg_query.Node objfuncargs = 3 [json_name = "objfuncargs"]; inline int ObjectWithArgs::_internal_objfuncargs_size() const { return _impl_.objfuncargs_.size(); } inline int ObjectWithArgs::objfuncargs_size() const { return _internal_objfuncargs_size(); } inline void ObjectWithArgs::clear_objfuncargs() { _impl_.objfuncargs_.Clear(); } inline ::pg_query::Node* ObjectWithArgs::mutable_objfuncargs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ObjectWithArgs.objfuncargs) return _impl_.objfuncargs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ObjectWithArgs::mutable_objfuncargs() { // @@protoc_insertion_point(field_mutable_list:pg_query.ObjectWithArgs.objfuncargs) return &_impl_.objfuncargs_; } inline const ::pg_query::Node& ObjectWithArgs::_internal_objfuncargs(int index) const { return _impl_.objfuncargs_.Get(index); } inline const ::pg_query::Node& ObjectWithArgs::objfuncargs(int index) const { // @@protoc_insertion_point(field_get:pg_query.ObjectWithArgs.objfuncargs) return _internal_objfuncargs(index); } inline ::pg_query::Node* ObjectWithArgs::_internal_add_objfuncargs() { return _impl_.objfuncargs_.Add(); } inline ::pg_query::Node* ObjectWithArgs::add_objfuncargs() { ::pg_query::Node* _add = _internal_add_objfuncargs(); // @@protoc_insertion_point(field_add:pg_query.ObjectWithArgs.objfuncargs) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ObjectWithArgs::objfuncargs() const { // @@protoc_insertion_point(field_list:pg_query.ObjectWithArgs.objfuncargs) return _impl_.objfuncargs_; } // bool args_unspecified = 4 [json_name = "args_unspecified"]; inline void ObjectWithArgs::clear_args_unspecified() { _impl_.args_unspecified_ = false; } inline bool ObjectWithArgs::_internal_args_unspecified() const { return _impl_.args_unspecified_; } inline bool ObjectWithArgs::args_unspecified() const { // @@protoc_insertion_point(field_get:pg_query.ObjectWithArgs.args_unspecified) return _internal_args_unspecified(); } inline void ObjectWithArgs::_internal_set_args_unspecified(bool value) { _impl_.args_unspecified_ = value; } inline void ObjectWithArgs::set_args_unspecified(bool value) { _internal_set_args_unspecified(value); // @@protoc_insertion_point(field_set:pg_query.ObjectWithArgs.args_unspecified) } // ------------------------------------------------------------------- // AccessPriv // string priv_name = 1 [json_name = "priv_name"]; inline void AccessPriv::clear_priv_name() { _impl_.priv_name_.ClearToEmpty(); } inline const std::string& AccessPriv::priv_name() const { // @@protoc_insertion_point(field_get:pg_query.AccessPriv.priv_name) return _internal_priv_name(); } template inline PROTOBUF_ALWAYS_INLINE void AccessPriv::set_priv_name(ArgT0&& arg0, ArgT... args) { _impl_.priv_name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.AccessPriv.priv_name) } inline std::string* AccessPriv::mutable_priv_name() { 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 { return _impl_.priv_name_.Get(); } inline void AccessPriv::_internal_set_priv_name(const std::string& value) { _impl_.priv_name_.Set(value, GetArenaForAllocation()); } inline std::string* AccessPriv::_internal_mutable_priv_name() { return _impl_.priv_name_.Mutable(GetArenaForAllocation()); } inline std::string* AccessPriv::release_priv_name() { // @@protoc_insertion_point(field_release:pg_query.AccessPriv.priv_name) return _impl_.priv_name_.Release(); } inline void AccessPriv::set_allocated_priv_name(std::string* priv_name) { if (priv_name != nullptr) { } else { } _impl_.priv_name_.SetAllocated(priv_name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.priv_name_.IsDefault()) { _impl_.priv_name_.Set("", GetArenaForAllocation()); } #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 _impl_.cols_.size(); } inline int AccessPriv::cols_size() const { return _internal_cols_size(); } inline void AccessPriv::clear_cols() { _impl_.cols_.Clear(); } inline ::pg_query::Node* AccessPriv::mutable_cols(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AccessPriv.cols) return _impl_.cols_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AccessPriv::mutable_cols() { // @@protoc_insertion_point(field_mutable_list:pg_query.AccessPriv.cols) return &_impl_.cols_; } inline const ::pg_query::Node& AccessPriv::_internal_cols(int index) const { return _impl_.cols_.Get(index); } inline const ::pg_query::Node& AccessPriv::cols(int index) const { // @@protoc_insertion_point(field_get:pg_query.AccessPriv.cols) return _internal_cols(index); } inline ::pg_query::Node* AccessPriv::_internal_add_cols() { return _impl_.cols_.Add(); } inline ::pg_query::Node* AccessPriv::add_cols() { ::pg_query::Node* _add = _internal_add_cols(); // @@protoc_insertion_point(field_add:pg_query.AccessPriv.cols) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AccessPriv::cols() const { // @@protoc_insertion_point(field_list:pg_query.AccessPriv.cols) return _impl_.cols_; } // ------------------------------------------------------------------- // CreateOpClassItem // int32 itemtype = 1 [json_name = "itemtype"]; inline void CreateOpClassItem::clear_itemtype() { _impl_.itemtype_ = 0; } inline int32_t CreateOpClassItem::_internal_itemtype() const { return _impl_.itemtype_; } inline int32_t CreateOpClassItem::itemtype() const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.itemtype) return _internal_itemtype(); } inline void CreateOpClassItem::_internal_set_itemtype(int32_t value) { _impl_.itemtype_ = value; } inline void CreateOpClassItem::set_itemtype(int32_t value) { _internal_set_itemtype(value); // @@protoc_insertion_point(field_set:pg_query.CreateOpClassItem.itemtype) } // .pg_query.ObjectWithArgs name = 2 [json_name = "name"]; inline bool CreateOpClassItem::_internal_has_name() const { return this != internal_default_instance() && _impl_.name_ != nullptr; } inline bool CreateOpClassItem::has_name() const { return _internal_has_name(); } inline void CreateOpClassItem::clear_name() { if (GetArenaForAllocation() == nullptr && _impl_.name_ != nullptr) { delete _impl_.name_; } _impl_.name_ = nullptr; } inline const ::pg_query::ObjectWithArgs& CreateOpClassItem::_internal_name() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.name) return _internal_name(); } inline void CreateOpClassItem::unsafe_arena_set_allocated_name( ::pg_query::ObjectWithArgs* name) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.name_); } _impl_.name_ = name; if (name) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateOpClassItem.name) } inline ::pg_query::ObjectWithArgs* CreateOpClassItem::release_name() { ::pg_query::ObjectWithArgs* temp = _impl_.name_; _impl_.name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::ObjectWithArgs* CreateOpClassItem::unsafe_arena_release_name() { // @@protoc_insertion_point(field_release:pg_query.CreateOpClassItem.name) ::pg_query::ObjectWithArgs* temp = _impl_.name_; _impl_.name_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* CreateOpClassItem::_internal_mutable_name() { if (_impl_.name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArenaForAllocation()); _impl_.name_ = p; } return _impl_.name_; } inline ::pg_query::ObjectWithArgs* CreateOpClassItem::mutable_name() { ::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* name) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.name_; } if (name) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(name); if (message_arena != submessage_arena) { name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, name, submessage_arena); } } else { } _impl_.name_ = name; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateOpClassItem.name) } // int32 number = 3 [json_name = "number"]; inline void CreateOpClassItem::clear_number() { _impl_.number_ = 0; } inline int32_t CreateOpClassItem::_internal_number() const { return _impl_.number_; } inline int32_t CreateOpClassItem::number() const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.number) return _internal_number(); } inline void CreateOpClassItem::_internal_set_number(int32_t value) { _impl_.number_ = value; } inline void CreateOpClassItem::set_number(int32_t value) { _internal_set_number(value); // @@protoc_insertion_point(field_set:pg_query.CreateOpClassItem.number) } // repeated .pg_query.Node order_family = 4 [json_name = "order_family"]; inline int CreateOpClassItem::_internal_order_family_size() const { return _impl_.order_family_.size(); } inline int CreateOpClassItem::order_family_size() const { return _internal_order_family_size(); } inline void CreateOpClassItem::clear_order_family() { _impl_.order_family_.Clear(); } inline ::pg_query::Node* CreateOpClassItem::mutable_order_family(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassItem.order_family) return _impl_.order_family_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateOpClassItem::mutable_order_family() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassItem.order_family) return &_impl_.order_family_; } inline const ::pg_query::Node& CreateOpClassItem::_internal_order_family(int index) const { return _impl_.order_family_.Get(index); } inline const ::pg_query::Node& CreateOpClassItem::order_family(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.order_family) return _internal_order_family(index); } inline ::pg_query::Node* CreateOpClassItem::_internal_add_order_family() { return _impl_.order_family_.Add(); } inline ::pg_query::Node* CreateOpClassItem::add_order_family() { ::pg_query::Node* _add = _internal_add_order_family(); // @@protoc_insertion_point(field_add:pg_query.CreateOpClassItem.order_family) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateOpClassItem::order_family() const { // @@protoc_insertion_point(field_list:pg_query.CreateOpClassItem.order_family) return _impl_.order_family_; } // repeated .pg_query.Node class_args = 5 [json_name = "class_args"]; inline int CreateOpClassItem::_internal_class_args_size() const { return _impl_.class_args_.size(); } inline int CreateOpClassItem::class_args_size() const { return _internal_class_args_size(); } inline void CreateOpClassItem::clear_class_args() { _impl_.class_args_.Clear(); } inline ::pg_query::Node* CreateOpClassItem::mutable_class_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassItem.class_args) return _impl_.class_args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateOpClassItem::mutable_class_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassItem.class_args) return &_impl_.class_args_; } inline const ::pg_query::Node& CreateOpClassItem::_internal_class_args(int index) const { return _impl_.class_args_.Get(index); } inline const ::pg_query::Node& CreateOpClassItem::class_args(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.class_args) return _internal_class_args(index); } inline ::pg_query::Node* CreateOpClassItem::_internal_add_class_args() { return _impl_.class_args_.Add(); } inline ::pg_query::Node* CreateOpClassItem::add_class_args() { ::pg_query::Node* _add = _internal_add_class_args(); // @@protoc_insertion_point(field_add:pg_query.CreateOpClassItem.class_args) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateOpClassItem::class_args() const { // @@protoc_insertion_point(field_list:pg_query.CreateOpClassItem.class_args) return _impl_.class_args_; } // .pg_query.TypeName storedtype = 6 [json_name = "storedtype"]; inline bool CreateOpClassItem::_internal_has_storedtype() const { return this != internal_default_instance() && _impl_.storedtype_ != nullptr; } inline bool CreateOpClassItem::has_storedtype() const { return _internal_has_storedtype(); } inline void CreateOpClassItem::clear_storedtype() { if (GetArenaForAllocation() == nullptr && _impl_.storedtype_ != nullptr) { delete _impl_.storedtype_; } _impl_.storedtype_ = nullptr; } inline const ::pg_query::TypeName& CreateOpClassItem::_internal_storedtype() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.storedtype) return _internal_storedtype(); } inline void CreateOpClassItem::unsafe_arena_set_allocated_storedtype( ::pg_query::TypeName* storedtype) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.storedtype_); } _impl_.storedtype_ = storedtype; if (storedtype) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateOpClassItem.storedtype) } inline ::pg_query::TypeName* CreateOpClassItem::release_storedtype() { ::pg_query::TypeName* temp = _impl_.storedtype_; _impl_.storedtype_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::TypeName* CreateOpClassItem::unsafe_arena_release_storedtype() { // @@protoc_insertion_point(field_release:pg_query.CreateOpClassItem.storedtype) ::pg_query::TypeName* temp = _impl_.storedtype_; _impl_.storedtype_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateOpClassItem::_internal_mutable_storedtype() { if (_impl_.storedtype_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArenaForAllocation()); _impl_.storedtype_ = p; } return _impl_.storedtype_; } inline ::pg_query::TypeName* CreateOpClassItem::mutable_storedtype() { ::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* storedtype) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.storedtype_; } if (storedtype) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(storedtype); if (message_arena != submessage_arena) { storedtype = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, storedtype, submessage_arena); } } else { } _impl_.storedtype_ = storedtype; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateOpClassItem.storedtype) } // ------------------------------------------------------------------- // TableLikeClause // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool TableLikeClause::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool TableLikeClause::has_relation() const { return _internal_has_relation(); } inline void TableLikeClause::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& TableLikeClause::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.TableLikeClause.relation) return _internal_relation(); } inline void TableLikeClause::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TableLikeClause.relation) } inline ::pg_query::RangeVar* TableLikeClause::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* TableLikeClause::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.TableLikeClause.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* TableLikeClause::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* TableLikeClause::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.TableLikeClause.relation) } // uint32 options = 2 [json_name = "options"]; inline void TableLikeClause::clear_options() { _impl_.options_ = 0u; } inline uint32_t TableLikeClause::_internal_options() const { return _impl_.options_; } inline uint32_t TableLikeClause::options() const { // @@protoc_insertion_point(field_get:pg_query.TableLikeClause.options) return _internal_options(); } inline void TableLikeClause::_internal_set_options(uint32_t value) { _impl_.options_ = value; } inline void TableLikeClause::set_options(uint32_t value) { _internal_set_options(value); // @@protoc_insertion_point(field_set:pg_query.TableLikeClause.options) } // uint32 relation_oid = 3 [json_name = "relationOid"]; inline void TableLikeClause::clear_relation_oid() { _impl_.relation_oid_ = 0u; } inline uint32_t TableLikeClause::_internal_relation_oid() const { return _impl_.relation_oid_; } inline uint32_t TableLikeClause::relation_oid() const { // @@protoc_insertion_point(field_get:pg_query.TableLikeClause.relation_oid) return _internal_relation_oid(); } inline void TableLikeClause::_internal_set_relation_oid(uint32_t value) { _impl_.relation_oid_ = value; } inline void TableLikeClause::set_relation_oid(uint32_t value) { _internal_set_relation_oid(value); // @@protoc_insertion_point(field_set:pg_query.TableLikeClause.relation_oid) } // ------------------------------------------------------------------- // FunctionParameter // string name = 1 [json_name = "name"]; inline void FunctionParameter::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& FunctionParameter::name() const { // @@protoc_insertion_point(field_get:pg_query.FunctionParameter.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void FunctionParameter::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.FunctionParameter.name) } inline std::string* FunctionParameter::mutable_name() { 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 { return _impl_.name_.Get(); } inline void FunctionParameter::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* FunctionParameter::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* FunctionParameter::release_name() { // @@protoc_insertion_point(field_release:pg_query.FunctionParameter.name) return _impl_.name_.Release(); } inline void FunctionParameter::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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::_internal_has_arg_type() const { return this != internal_default_instance() && _impl_.arg_type_ != nullptr; } inline bool FunctionParameter::has_arg_type() const { return _internal_has_arg_type(); } inline void FunctionParameter::clear_arg_type() { if (GetArenaForAllocation() == nullptr && _impl_.arg_type_ != nullptr) { delete _impl_.arg_type_; } _impl_.arg_type_ = nullptr; } inline const ::pg_query::TypeName& FunctionParameter::_internal_arg_type() const { 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 { // @@protoc_insertion_point(field_get:pg_query.FunctionParameter.arg_type) return _internal_arg_type(); } inline void FunctionParameter::unsafe_arena_set_allocated_arg_type( ::pg_query::TypeName* arg_type) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.arg_type_); } _impl_.arg_type_ = arg_type; if (arg_type) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FunctionParameter.arg_type) } inline ::pg_query::TypeName* FunctionParameter::release_arg_type() { ::pg_query::TypeName* temp = _impl_.arg_type_; _impl_.arg_type_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::TypeName* FunctionParameter::unsafe_arena_release_arg_type() { // @@protoc_insertion_point(field_release:pg_query.FunctionParameter.arg_type) ::pg_query::TypeName* temp = _impl_.arg_type_; _impl_.arg_type_ = nullptr; return temp; } inline ::pg_query::TypeName* FunctionParameter::_internal_mutable_arg_type() { if (_impl_.arg_type_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArenaForAllocation()); _impl_.arg_type_ = p; } return _impl_.arg_type_; } inline ::pg_query::TypeName* FunctionParameter::mutable_arg_type() { ::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* arg_type) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.arg_type_; } if (arg_type) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(arg_type); if (message_arena != submessage_arena) { arg_type = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg_type, submessage_arena); } } else { } _impl_.arg_type_ = arg_type; // @@protoc_insertion_point(field_set_allocated:pg_query.FunctionParameter.arg_type) } // .pg_query.FunctionParameterMode mode = 3 [json_name = "mode"]; inline void FunctionParameter::clear_mode() { _impl_.mode_ = 0; } inline ::pg_query::FunctionParameterMode FunctionParameter::_internal_mode() const { return static_cast< ::pg_query::FunctionParameterMode >(_impl_.mode_); } inline ::pg_query::FunctionParameterMode FunctionParameter::mode() const { // @@protoc_insertion_point(field_get:pg_query.FunctionParameter.mode) return _internal_mode(); } inline void FunctionParameter::_internal_set_mode(::pg_query::FunctionParameterMode value) { _impl_.mode_ = value; } inline void FunctionParameter::set_mode(::pg_query::FunctionParameterMode value) { _internal_set_mode(value); // @@protoc_insertion_point(field_set:pg_query.FunctionParameter.mode) } // .pg_query.Node defexpr = 4 [json_name = "defexpr"]; inline bool FunctionParameter::_internal_has_defexpr() const { return this != internal_default_instance() && _impl_.defexpr_ != nullptr; } inline bool FunctionParameter::has_defexpr() const { return _internal_has_defexpr(); } inline void FunctionParameter::clear_defexpr() { if (GetArenaForAllocation() == nullptr && _impl_.defexpr_ != nullptr) { delete _impl_.defexpr_; } _impl_.defexpr_ = nullptr; } inline const ::pg_query::Node& FunctionParameter::_internal_defexpr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.FunctionParameter.defexpr) return _internal_defexpr(); } inline void FunctionParameter::unsafe_arena_set_allocated_defexpr( ::pg_query::Node* defexpr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.defexpr_); } _impl_.defexpr_ = defexpr; if (defexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FunctionParameter.defexpr) } inline ::pg_query::Node* FunctionParameter::release_defexpr() { ::pg_query::Node* temp = _impl_.defexpr_; _impl_.defexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* FunctionParameter::unsafe_arena_release_defexpr() { // @@protoc_insertion_point(field_release:pg_query.FunctionParameter.defexpr) ::pg_query::Node* temp = _impl_.defexpr_; _impl_.defexpr_ = nullptr; return temp; } inline ::pg_query::Node* FunctionParameter::_internal_mutable_defexpr() { if (_impl_.defexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.defexpr_ = p; } return _impl_.defexpr_; } inline ::pg_query::Node* FunctionParameter::mutable_defexpr() { ::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* defexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.defexpr_; } if (defexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(defexpr); if (message_arena != submessage_arena) { defexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, defexpr, submessage_arena); } } else { } _impl_.defexpr_ = defexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.FunctionParameter.defexpr) } // ------------------------------------------------------------------- // LockingClause // repeated .pg_query.Node locked_rels = 1 [json_name = "lockedRels"]; inline int LockingClause::_internal_locked_rels_size() const { return _impl_.locked_rels_.size(); } inline int LockingClause::locked_rels_size() const { return _internal_locked_rels_size(); } inline void LockingClause::clear_locked_rels() { _impl_.locked_rels_.Clear(); } inline ::pg_query::Node* LockingClause::mutable_locked_rels(int index) { // @@protoc_insertion_point(field_mutable:pg_query.LockingClause.locked_rels) return _impl_.locked_rels_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* LockingClause::mutable_locked_rels() { // @@protoc_insertion_point(field_mutable_list:pg_query.LockingClause.locked_rels) return &_impl_.locked_rels_; } inline const ::pg_query::Node& LockingClause::_internal_locked_rels(int index) const { return _impl_.locked_rels_.Get(index); } inline const ::pg_query::Node& LockingClause::locked_rels(int index) const { // @@protoc_insertion_point(field_get:pg_query.LockingClause.locked_rels) return _internal_locked_rels(index); } inline ::pg_query::Node* LockingClause::_internal_add_locked_rels() { return _impl_.locked_rels_.Add(); } inline ::pg_query::Node* LockingClause::add_locked_rels() { ::pg_query::Node* _add = _internal_add_locked_rels(); // @@protoc_insertion_point(field_add:pg_query.LockingClause.locked_rels) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& LockingClause::locked_rels() const { // @@protoc_insertion_point(field_list:pg_query.LockingClause.locked_rels) return _impl_.locked_rels_; } // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; inline void LockingClause::clear_strength() { _impl_.strength_ = 0; } inline ::pg_query::LockClauseStrength LockingClause::_internal_strength() const { return static_cast< ::pg_query::LockClauseStrength >(_impl_.strength_); } inline ::pg_query::LockClauseStrength LockingClause::strength() const { // @@protoc_insertion_point(field_get:pg_query.LockingClause.strength) return _internal_strength(); } inline void LockingClause::_internal_set_strength(::pg_query::LockClauseStrength value) { _impl_.strength_ = value; } inline void LockingClause::set_strength(::pg_query::LockClauseStrength value) { _internal_set_strength(value); // @@protoc_insertion_point(field_set:pg_query.LockingClause.strength) } // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; inline void LockingClause::clear_wait_policy() { _impl_.wait_policy_ = 0; } inline ::pg_query::LockWaitPolicy LockingClause::_internal_wait_policy() const { return static_cast< ::pg_query::LockWaitPolicy >(_impl_.wait_policy_); } inline ::pg_query::LockWaitPolicy LockingClause::wait_policy() const { // @@protoc_insertion_point(field_get:pg_query.LockingClause.wait_policy) return _internal_wait_policy(); } inline void LockingClause::_internal_set_wait_policy(::pg_query::LockWaitPolicy value) { _impl_.wait_policy_ = value; } inline void LockingClause::set_wait_policy(::pg_query::LockWaitPolicy value) { _internal_set_wait_policy(value); // @@protoc_insertion_point(field_set:pg_query.LockingClause.wait_policy) } // ------------------------------------------------------------------- // RowMarkClause // uint32 rti = 1 [json_name = "rti"]; inline void RowMarkClause::clear_rti() { _impl_.rti_ = 0u; } inline uint32_t RowMarkClause::_internal_rti() const { return _impl_.rti_; } inline uint32_t RowMarkClause::rti() const { // @@protoc_insertion_point(field_get:pg_query.RowMarkClause.rti) return _internal_rti(); } inline void RowMarkClause::_internal_set_rti(uint32_t value) { _impl_.rti_ = value; } inline void RowMarkClause::set_rti(uint32_t value) { _internal_set_rti(value); // @@protoc_insertion_point(field_set:pg_query.RowMarkClause.rti) } // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; inline void RowMarkClause::clear_strength() { _impl_.strength_ = 0; } inline ::pg_query::LockClauseStrength RowMarkClause::_internal_strength() const { return static_cast< ::pg_query::LockClauseStrength >(_impl_.strength_); } inline ::pg_query::LockClauseStrength RowMarkClause::strength() const { // @@protoc_insertion_point(field_get:pg_query.RowMarkClause.strength) return _internal_strength(); } inline void RowMarkClause::_internal_set_strength(::pg_query::LockClauseStrength value) { _impl_.strength_ = value; } inline void RowMarkClause::set_strength(::pg_query::LockClauseStrength value) { _internal_set_strength(value); // @@protoc_insertion_point(field_set:pg_query.RowMarkClause.strength) } // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; inline void RowMarkClause::clear_wait_policy() { _impl_.wait_policy_ = 0; } inline ::pg_query::LockWaitPolicy RowMarkClause::_internal_wait_policy() const { return static_cast< ::pg_query::LockWaitPolicy >(_impl_.wait_policy_); } inline ::pg_query::LockWaitPolicy RowMarkClause::wait_policy() const { // @@protoc_insertion_point(field_get:pg_query.RowMarkClause.wait_policy) return _internal_wait_policy(); } inline void RowMarkClause::_internal_set_wait_policy(::pg_query::LockWaitPolicy value) { _impl_.wait_policy_ = value; } inline void RowMarkClause::set_wait_policy(::pg_query::LockWaitPolicy value) { _internal_set_wait_policy(value); // @@protoc_insertion_point(field_set:pg_query.RowMarkClause.wait_policy) } // bool pushed_down = 4 [json_name = "pushedDown"]; inline void RowMarkClause::clear_pushed_down() { _impl_.pushed_down_ = false; } inline bool RowMarkClause::_internal_pushed_down() const { return _impl_.pushed_down_; } inline bool RowMarkClause::pushed_down() const { // @@protoc_insertion_point(field_get:pg_query.RowMarkClause.pushed_down) return _internal_pushed_down(); } inline void RowMarkClause::_internal_set_pushed_down(bool value) { _impl_.pushed_down_ = value; } inline void RowMarkClause::set_pushed_down(bool value) { _internal_set_pushed_down(value); // @@protoc_insertion_point(field_set:pg_query.RowMarkClause.pushed_down) } // ------------------------------------------------------------------- // XmlSerialize // .pg_query.XmlOptionType xmloption = 1 [json_name = "xmloption"]; inline void XmlSerialize::clear_xmloption() { _impl_.xmloption_ = 0; } inline ::pg_query::XmlOptionType XmlSerialize::_internal_xmloption() const { return static_cast< ::pg_query::XmlOptionType >(_impl_.xmloption_); } inline ::pg_query::XmlOptionType XmlSerialize::xmloption() const { // @@protoc_insertion_point(field_get:pg_query.XmlSerialize.xmloption) return _internal_xmloption(); } inline void XmlSerialize::_internal_set_xmloption(::pg_query::XmlOptionType value) { _impl_.xmloption_ = value; } inline void XmlSerialize::set_xmloption(::pg_query::XmlOptionType value) { _internal_set_xmloption(value); // @@protoc_insertion_point(field_set:pg_query.XmlSerialize.xmloption) } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool XmlSerialize::_internal_has_expr() const { return this != internal_default_instance() && _impl_.expr_ != nullptr; } inline bool XmlSerialize::has_expr() const { return _internal_has_expr(); } inline void XmlSerialize::clear_expr() { if (GetArenaForAllocation() == nullptr && _impl_.expr_ != nullptr) { delete _impl_.expr_; } _impl_.expr_ = nullptr; } inline const ::pg_query::Node& XmlSerialize::_internal_expr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.XmlSerialize.expr) return _internal_expr(); } inline void XmlSerialize::unsafe_arena_set_allocated_expr( ::pg_query::Node* expr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.expr_); } _impl_.expr_ = expr; if (expr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.XmlSerialize.expr) } inline ::pg_query::Node* XmlSerialize::release_expr() { ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* XmlSerialize::unsafe_arena_release_expr() { // @@protoc_insertion_point(field_release:pg_query.XmlSerialize.expr) ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::Node* XmlSerialize::_internal_mutable_expr() { if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.expr_ = p; } return _impl_.expr_; } inline ::pg_query::Node* XmlSerialize::mutable_expr() { ::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* expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.expr_; } if (expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(expr); if (message_arena != submessage_arena) { expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, expr, submessage_arena); } } else { } _impl_.expr_ = expr; // @@protoc_insertion_point(field_set_allocated:pg_query.XmlSerialize.expr) } // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; inline bool XmlSerialize::_internal_has_type_name() const { return this != internal_default_instance() && _impl_.type_name_ != nullptr; } inline bool XmlSerialize::has_type_name() const { return _internal_has_type_name(); } inline void XmlSerialize::clear_type_name() { if (GetArenaForAllocation() == nullptr && _impl_.type_name_ != nullptr) { delete _impl_.type_name_; } _impl_.type_name_ = nullptr; } inline const ::pg_query::TypeName& XmlSerialize::_internal_type_name() const { 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 { // @@protoc_insertion_point(field_get:pg_query.XmlSerialize.type_name) return _internal_type_name(); } inline void XmlSerialize::unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.type_name_); } _impl_.type_name_ = type_name; if (type_name) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.XmlSerialize.type_name) } inline ::pg_query::TypeName* XmlSerialize::release_type_name() { ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::TypeName* XmlSerialize::unsafe_arena_release_type_name() { // @@protoc_insertion_point(field_release:pg_query.XmlSerialize.type_name) ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* XmlSerialize::_internal_mutable_type_name() { if (_impl_.type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArenaForAllocation()); _impl_.type_name_ = p; } return _impl_.type_name_; } inline ::pg_query::TypeName* XmlSerialize::mutable_type_name() { ::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* type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.type_name_; } if (type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(type_name); if (message_arena != submessage_arena) { type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, type_name, submessage_arena); } } else { } _impl_.type_name_ = type_name; // @@protoc_insertion_point(field_set_allocated:pg_query.XmlSerialize.type_name) } // int32 location = 4 [json_name = "location"]; inline void XmlSerialize::clear_location() { _impl_.location_ = 0; } inline int32_t XmlSerialize::_internal_location() const { return _impl_.location_; } inline int32_t XmlSerialize::location() const { // @@protoc_insertion_point(field_get:pg_query.XmlSerialize.location) return _internal_location(); } inline void XmlSerialize::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void XmlSerialize::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.XmlSerialize.location) } // ------------------------------------------------------------------- // WithClause // repeated .pg_query.Node ctes = 1 [json_name = "ctes"]; inline int WithClause::_internal_ctes_size() const { return _impl_.ctes_.size(); } inline int WithClause::ctes_size() const { return _internal_ctes_size(); } inline void WithClause::clear_ctes() { _impl_.ctes_.Clear(); } inline ::pg_query::Node* WithClause::mutable_ctes(int index) { // @@protoc_insertion_point(field_mutable:pg_query.WithClause.ctes) return _impl_.ctes_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* WithClause::mutable_ctes() { // @@protoc_insertion_point(field_mutable_list:pg_query.WithClause.ctes) return &_impl_.ctes_; } inline const ::pg_query::Node& WithClause::_internal_ctes(int index) const { return _impl_.ctes_.Get(index); } inline const ::pg_query::Node& WithClause::ctes(int index) const { // @@protoc_insertion_point(field_get:pg_query.WithClause.ctes) return _internal_ctes(index); } inline ::pg_query::Node* WithClause::_internal_add_ctes() { return _impl_.ctes_.Add(); } inline ::pg_query::Node* WithClause::add_ctes() { ::pg_query::Node* _add = _internal_add_ctes(); // @@protoc_insertion_point(field_add:pg_query.WithClause.ctes) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& WithClause::ctes() const { // @@protoc_insertion_point(field_list:pg_query.WithClause.ctes) return _impl_.ctes_; } // bool recursive = 2 [json_name = "recursive"]; inline void WithClause::clear_recursive() { _impl_.recursive_ = false; } inline bool WithClause::_internal_recursive() const { return _impl_.recursive_; } inline bool WithClause::recursive() const { // @@protoc_insertion_point(field_get:pg_query.WithClause.recursive) return _internal_recursive(); } inline void WithClause::_internal_set_recursive(bool value) { _impl_.recursive_ = value; } inline void WithClause::set_recursive(bool value) { _internal_set_recursive(value); // @@protoc_insertion_point(field_set:pg_query.WithClause.recursive) } // int32 location = 3 [json_name = "location"]; inline void WithClause::clear_location() { _impl_.location_ = 0; } inline int32_t WithClause::_internal_location() const { return _impl_.location_; } inline int32_t WithClause::location() const { // @@protoc_insertion_point(field_get:pg_query.WithClause.location) return _internal_location(); } inline void WithClause::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void WithClause::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.WithClause.location) } // ------------------------------------------------------------------- // InferClause // repeated .pg_query.Node index_elems = 1 [json_name = "indexElems"]; inline int InferClause::_internal_index_elems_size() const { return _impl_.index_elems_.size(); } inline int InferClause::index_elems_size() const { return _internal_index_elems_size(); } inline void InferClause::clear_index_elems() { _impl_.index_elems_.Clear(); } inline ::pg_query::Node* InferClause::mutable_index_elems(int index) { // @@protoc_insertion_point(field_mutable:pg_query.InferClause.index_elems) return _impl_.index_elems_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* InferClause::mutable_index_elems() { // @@protoc_insertion_point(field_mutable_list:pg_query.InferClause.index_elems) return &_impl_.index_elems_; } inline const ::pg_query::Node& InferClause::_internal_index_elems(int index) const { return _impl_.index_elems_.Get(index); } inline const ::pg_query::Node& InferClause::index_elems(int index) const { // @@protoc_insertion_point(field_get:pg_query.InferClause.index_elems) return _internal_index_elems(index); } inline ::pg_query::Node* InferClause::_internal_add_index_elems() { return _impl_.index_elems_.Add(); } inline ::pg_query::Node* InferClause::add_index_elems() { ::pg_query::Node* _add = _internal_add_index_elems(); // @@protoc_insertion_point(field_add:pg_query.InferClause.index_elems) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& InferClause::index_elems() const { // @@protoc_insertion_point(field_list:pg_query.InferClause.index_elems) return _impl_.index_elems_; } // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; inline bool InferClause::_internal_has_where_clause() const { return this != internal_default_instance() && _impl_.where_clause_ != nullptr; } inline bool InferClause::has_where_clause() const { return _internal_has_where_clause(); } inline void InferClause::clear_where_clause() { if (GetArenaForAllocation() == nullptr && _impl_.where_clause_ != nullptr) { delete _impl_.where_clause_; } _impl_.where_clause_ = nullptr; } inline const ::pg_query::Node& InferClause::_internal_where_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.InferClause.where_clause) return _internal_where_clause(); } inline void InferClause::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InferClause.where_clause) } inline ::pg_query::Node* InferClause::release_where_clause() { ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* InferClause::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.InferClause.where_clause) ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* InferClause::_internal_mutable_where_clause() { if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.where_clause_ = p; } return _impl_.where_clause_; } inline ::pg_query::Node* InferClause::mutable_where_clause() { ::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* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } _impl_.where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.InferClause.where_clause) } // string conname = 3 [json_name = "conname"]; inline void InferClause::clear_conname() { _impl_.conname_.ClearToEmpty(); } inline const std::string& InferClause::conname() const { // @@protoc_insertion_point(field_get:pg_query.InferClause.conname) return _internal_conname(); } template inline PROTOBUF_ALWAYS_INLINE void InferClause::set_conname(ArgT0&& arg0, ArgT... args) { _impl_.conname_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.InferClause.conname) } inline std::string* InferClause::mutable_conname() { 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 { return _impl_.conname_.Get(); } inline void InferClause::_internal_set_conname(const std::string& value) { _impl_.conname_.Set(value, GetArenaForAllocation()); } inline std::string* InferClause::_internal_mutable_conname() { return _impl_.conname_.Mutable(GetArenaForAllocation()); } inline std::string* InferClause::release_conname() { // @@protoc_insertion_point(field_release:pg_query.InferClause.conname) return _impl_.conname_.Release(); } inline void InferClause::set_allocated_conname(std::string* conname) { if (conname != nullptr) { } else { } _impl_.conname_.SetAllocated(conname, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.conname_.IsDefault()) { _impl_.conname_.Set("", GetArenaForAllocation()); } #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() { _impl_.location_ = 0; } inline int32_t InferClause::_internal_location() const { return _impl_.location_; } inline int32_t InferClause::location() const { // @@protoc_insertion_point(field_get:pg_query.InferClause.location) return _internal_location(); } inline void InferClause::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void InferClause::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.InferClause.location) } // ------------------------------------------------------------------- // OnConflictClause // .pg_query.OnConflictAction action = 1 [json_name = "action"]; inline void OnConflictClause::clear_action() { _impl_.action_ = 0; } inline ::pg_query::OnConflictAction OnConflictClause::_internal_action() const { return static_cast< ::pg_query::OnConflictAction >(_impl_.action_); } inline ::pg_query::OnConflictAction OnConflictClause::action() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.action) return _internal_action(); } inline void OnConflictClause::_internal_set_action(::pg_query::OnConflictAction value) { _impl_.action_ = value; } inline void OnConflictClause::set_action(::pg_query::OnConflictAction value) { _internal_set_action(value); // @@protoc_insertion_point(field_set:pg_query.OnConflictClause.action) } // .pg_query.InferClause infer = 2 [json_name = "infer"]; inline bool OnConflictClause::_internal_has_infer() const { return this != internal_default_instance() && _impl_.infer_ != nullptr; } inline bool OnConflictClause::has_infer() const { return _internal_has_infer(); } inline void OnConflictClause::clear_infer() { if (GetArenaForAllocation() == nullptr && _impl_.infer_ != nullptr) { delete _impl_.infer_; } _impl_.infer_ = nullptr; } inline const ::pg_query::InferClause& OnConflictClause::_internal_infer() const { 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 { // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.infer) return _internal_infer(); } inline void OnConflictClause::unsafe_arena_set_allocated_infer( ::pg_query::InferClause* infer) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.infer_); } _impl_.infer_ = infer; if (infer) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OnConflictClause.infer) } inline ::pg_query::InferClause* OnConflictClause::release_infer() { ::pg_query::InferClause* temp = _impl_.infer_; _impl_.infer_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::InferClause* OnConflictClause::unsafe_arena_release_infer() { // @@protoc_insertion_point(field_release:pg_query.OnConflictClause.infer) ::pg_query::InferClause* temp = _impl_.infer_; _impl_.infer_ = nullptr; return temp; } inline ::pg_query::InferClause* OnConflictClause::_internal_mutable_infer() { if (_impl_.infer_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::InferClause>(GetArenaForAllocation()); _impl_.infer_ = p; } return _impl_.infer_; } inline ::pg_query::InferClause* OnConflictClause::mutable_infer() { ::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* infer) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.infer_; } if (infer) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(infer); if (message_arena != submessage_arena) { infer = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, infer, submessage_arena); } } else { } _impl_.infer_ = infer; // @@protoc_insertion_point(field_set_allocated:pg_query.OnConflictClause.infer) } // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; inline int OnConflictClause::_internal_target_list_size() const { return _impl_.target_list_.size(); } inline int OnConflictClause::target_list_size() const { return _internal_target_list_size(); } inline void OnConflictClause::clear_target_list() { _impl_.target_list_.Clear(); } inline ::pg_query::Node* OnConflictClause::mutable_target_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.OnConflictClause.target_list) return _impl_.target_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* OnConflictClause::mutable_target_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.OnConflictClause.target_list) return &_impl_.target_list_; } inline const ::pg_query::Node& OnConflictClause::_internal_target_list(int index) const { return _impl_.target_list_.Get(index); } inline const ::pg_query::Node& OnConflictClause::target_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.target_list) return _internal_target_list(index); } inline ::pg_query::Node* OnConflictClause::_internal_add_target_list() { return _impl_.target_list_.Add(); } inline ::pg_query::Node* OnConflictClause::add_target_list() { ::pg_query::Node* _add = _internal_add_target_list(); // @@protoc_insertion_point(field_add:pg_query.OnConflictClause.target_list) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& OnConflictClause::target_list() const { // @@protoc_insertion_point(field_list:pg_query.OnConflictClause.target_list) return _impl_.target_list_; } // .pg_query.Node where_clause = 4 [json_name = "whereClause"]; inline bool OnConflictClause::_internal_has_where_clause() const { return this != internal_default_instance() && _impl_.where_clause_ != nullptr; } inline bool OnConflictClause::has_where_clause() const { return _internal_has_where_clause(); } inline void OnConflictClause::clear_where_clause() { if (GetArenaForAllocation() == nullptr && _impl_.where_clause_ != nullptr) { delete _impl_.where_clause_; } _impl_.where_clause_ = nullptr; } inline const ::pg_query::Node& OnConflictClause::_internal_where_clause() const { 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 { // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.where_clause) return _internal_where_clause(); } inline void OnConflictClause::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OnConflictClause.where_clause) } inline ::pg_query::Node* OnConflictClause::release_where_clause() { ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* OnConflictClause::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.OnConflictClause.where_clause) ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* OnConflictClause::_internal_mutable_where_clause() { if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.where_clause_ = p; } return _impl_.where_clause_; } inline ::pg_query::Node* OnConflictClause::mutable_where_clause() { ::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* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } _impl_.where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.OnConflictClause.where_clause) } // int32 location = 5 [json_name = "location"]; inline void OnConflictClause::clear_location() { _impl_.location_ = 0; } inline int32_t OnConflictClause::_internal_location() const { return _impl_.location_; } inline int32_t OnConflictClause::location() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.location) return _internal_location(); } inline void OnConflictClause::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void OnConflictClause::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.OnConflictClause.location) } // ------------------------------------------------------------------- // CTESearchClause // repeated .pg_query.Node search_col_list = 1 [json_name = "search_col_list"]; inline int CTESearchClause::_internal_search_col_list_size() const { return _impl_.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() { _impl_.search_col_list_.Clear(); } inline ::pg_query::Node* CTESearchClause::mutable_search_col_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CTESearchClause.search_col_list) return _impl_.search_col_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CTESearchClause::mutable_search_col_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.CTESearchClause.search_col_list) return &_impl_.search_col_list_; } inline const ::pg_query::Node& CTESearchClause::_internal_search_col_list(int index) const { return _impl_.search_col_list_.Get(index); } inline const ::pg_query::Node& CTESearchClause::search_col_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.CTESearchClause.search_col_list) return _internal_search_col_list(index); } inline ::pg_query::Node* CTESearchClause::_internal_add_search_col_list() { return _impl_.search_col_list_.Add(); } inline ::pg_query::Node* CTESearchClause::add_search_col_list() { ::pg_query::Node* _add = _internal_add_search_col_list(); // @@protoc_insertion_point(field_add:pg_query.CTESearchClause.search_col_list) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CTESearchClause::search_col_list() const { // @@protoc_insertion_point(field_list:pg_query.CTESearchClause.search_col_list) return _impl_.search_col_list_; } // bool search_breadth_first = 2 [json_name = "search_breadth_first"]; inline void CTESearchClause::clear_search_breadth_first() { _impl_.search_breadth_first_ = false; } inline bool CTESearchClause::_internal_search_breadth_first() const { return _impl_.search_breadth_first_; } 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::_internal_set_search_breadth_first(bool value) { _impl_.search_breadth_first_ = value; } 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) } // string search_seq_column = 3 [json_name = "search_seq_column"]; inline void CTESearchClause::clear_search_seq_column() { _impl_.search_seq_column_.ClearToEmpty(); } inline const std::string& CTESearchClause::search_seq_column() const { // @@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(ArgT0&& arg0, ArgT... args) { _impl_.search_seq_column_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CTESearchClause.search_seq_column) } inline std::string* CTESearchClause::mutable_search_seq_column() { 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 { return _impl_.search_seq_column_.Get(); } inline void CTESearchClause::_internal_set_search_seq_column(const std::string& value) { _impl_.search_seq_column_.Set(value, GetArenaForAllocation()); } inline std::string* CTESearchClause::_internal_mutable_search_seq_column() { return _impl_.search_seq_column_.Mutable(GetArenaForAllocation()); } inline std::string* CTESearchClause::release_search_seq_column() { // @@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* search_seq_column) { if (search_seq_column != nullptr) { } else { } _impl_.search_seq_column_.SetAllocated(search_seq_column, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.search_seq_column_.IsDefault()) { _impl_.search_seq_column_.Set("", GetArenaForAllocation()); } #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() { _impl_.location_ = 0; } inline int32_t CTESearchClause::_internal_location() const { return _impl_.location_; } inline int32_t CTESearchClause::location() const { // @@protoc_insertion_point(field_get:pg_query.CTESearchClause.location) return _internal_location(); } inline void CTESearchClause::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void CTESearchClause::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CTESearchClause.location) } // ------------------------------------------------------------------- // CTECycleClause // repeated .pg_query.Node cycle_col_list = 1 [json_name = "cycle_col_list"]; inline int CTECycleClause::_internal_cycle_col_list_size() const { return _impl_.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() { _impl_.cycle_col_list_.Clear(); } inline ::pg_query::Node* CTECycleClause::mutable_cycle_col_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CTECycleClause.cycle_col_list) return _impl_.cycle_col_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CTECycleClause::mutable_cycle_col_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.CTECycleClause.cycle_col_list) return &_impl_.cycle_col_list_; } inline const ::pg_query::Node& CTECycleClause::_internal_cycle_col_list(int index) const { return _impl_.cycle_col_list_.Get(index); } inline const ::pg_query::Node& CTECycleClause::cycle_col_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.CTECycleClause.cycle_col_list) return _internal_cycle_col_list(index); } inline ::pg_query::Node* CTECycleClause::_internal_add_cycle_col_list() { return _impl_.cycle_col_list_.Add(); } inline ::pg_query::Node* CTECycleClause::add_cycle_col_list() { ::pg_query::Node* _add = _internal_add_cycle_col_list(); // @@protoc_insertion_point(field_add:pg_query.CTECycleClause.cycle_col_list) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CTECycleClause::cycle_col_list() const { // @@protoc_insertion_point(field_list:pg_query.CTECycleClause.cycle_col_list) return _impl_.cycle_col_list_; } // string cycle_mark_column = 2 [json_name = "cycle_mark_column"]; inline void CTECycleClause::clear_cycle_mark_column() { _impl_.cycle_mark_column_.ClearToEmpty(); } inline const std::string& CTECycleClause::cycle_mark_column() const { // @@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(ArgT0&& arg0, ArgT... args) { _impl_.cycle_mark_column_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CTECycleClause.cycle_mark_column) } inline std::string* CTECycleClause::mutable_cycle_mark_column() { 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 { return _impl_.cycle_mark_column_.Get(); } inline void CTECycleClause::_internal_set_cycle_mark_column(const std::string& value) { _impl_.cycle_mark_column_.Set(value, GetArenaForAllocation()); } inline std::string* CTECycleClause::_internal_mutable_cycle_mark_column() { return _impl_.cycle_mark_column_.Mutable(GetArenaForAllocation()); } inline std::string* CTECycleClause::release_cycle_mark_column() { // @@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* cycle_mark_column) { if (cycle_mark_column != nullptr) { } else { } _impl_.cycle_mark_column_.SetAllocated(cycle_mark_column, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.cycle_mark_column_.IsDefault()) { _impl_.cycle_mark_column_.Set("", GetArenaForAllocation()); } #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::_internal_has_cycle_mark_value() const { return this != internal_default_instance() && _impl_.cycle_mark_value_ != nullptr; } inline bool CTECycleClause::has_cycle_mark_value() const { return _internal_has_cycle_mark_value(); } inline void CTECycleClause::clear_cycle_mark_value() { if (GetArenaForAllocation() == nullptr && _impl_.cycle_mark_value_ != nullptr) { delete _impl_.cycle_mark_value_; } _impl_.cycle_mark_value_ = nullptr; } inline const ::pg_query::Node& CTECycleClause::_internal_cycle_mark_value() const { 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 { // @@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* cycle_mark_value) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.cycle_mark_value_); } _impl_.cycle_mark_value_ = cycle_mark_value; if (cycle_mark_value) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CTECycleClause.cycle_mark_value) } inline ::pg_query::Node* CTECycleClause::release_cycle_mark_value() { ::pg_query::Node* temp = _impl_.cycle_mark_value_; _impl_.cycle_mark_value_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CTECycleClause::unsafe_arena_release_cycle_mark_value() { // @@protoc_insertion_point(field_release:pg_query.CTECycleClause.cycle_mark_value) ::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() { if (_impl_.cycle_mark_value_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.cycle_mark_value_ = p; } return _impl_.cycle_mark_value_; } inline ::pg_query::Node* CTECycleClause::mutable_cycle_mark_value() { ::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* cycle_mark_value) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.cycle_mark_value_; } if (cycle_mark_value) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(cycle_mark_value); if (message_arena != submessage_arena) { cycle_mark_value = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, cycle_mark_value, submessage_arena); } } else { } _impl_.cycle_mark_value_ = cycle_mark_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::_internal_has_cycle_mark_default() const { return this != internal_default_instance() && _impl_.cycle_mark_default_ != nullptr; } inline bool CTECycleClause::has_cycle_mark_default() const { return _internal_has_cycle_mark_default(); } inline void CTECycleClause::clear_cycle_mark_default() { if (GetArenaForAllocation() == nullptr && _impl_.cycle_mark_default_ != nullptr) { delete _impl_.cycle_mark_default_; } _impl_.cycle_mark_default_ = nullptr; } inline const ::pg_query::Node& CTECycleClause::_internal_cycle_mark_default() const { 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 { // @@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* cycle_mark_default) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.cycle_mark_default_); } _impl_.cycle_mark_default_ = cycle_mark_default; if (cycle_mark_default) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CTECycleClause.cycle_mark_default) } inline ::pg_query::Node* CTECycleClause::release_cycle_mark_default() { ::pg_query::Node* temp = _impl_.cycle_mark_default_; _impl_.cycle_mark_default_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CTECycleClause::unsafe_arena_release_cycle_mark_default() { // @@protoc_insertion_point(field_release:pg_query.CTECycleClause.cycle_mark_default) ::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() { if (_impl_.cycle_mark_default_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.cycle_mark_default_ = p; } return _impl_.cycle_mark_default_; } inline ::pg_query::Node* CTECycleClause::mutable_cycle_mark_default() { ::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* cycle_mark_default) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.cycle_mark_default_; } if (cycle_mark_default) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(cycle_mark_default); if (message_arena != submessage_arena) { cycle_mark_default = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, cycle_mark_default, submessage_arena); } } else { } _impl_.cycle_mark_default_ = cycle_mark_default; // @@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() { _impl_.cycle_path_column_.ClearToEmpty(); } inline const std::string& CTECycleClause::cycle_path_column() const { // @@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(ArgT0&& arg0, ArgT... args) { _impl_.cycle_path_column_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CTECycleClause.cycle_path_column) } inline std::string* CTECycleClause::mutable_cycle_path_column() { 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 { return _impl_.cycle_path_column_.Get(); } inline void CTECycleClause::_internal_set_cycle_path_column(const std::string& value) { _impl_.cycle_path_column_.Set(value, GetArenaForAllocation()); } inline std::string* CTECycleClause::_internal_mutable_cycle_path_column() { return _impl_.cycle_path_column_.Mutable(GetArenaForAllocation()); } inline std::string* CTECycleClause::release_cycle_path_column() { // @@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* cycle_path_column) { if (cycle_path_column != nullptr) { } else { } _impl_.cycle_path_column_.SetAllocated(cycle_path_column, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.cycle_path_column_.IsDefault()) { _impl_.cycle_path_column_.Set("", GetArenaForAllocation()); } #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() { _impl_.location_ = 0; } inline int32_t CTECycleClause::_internal_location() const { return _impl_.location_; } inline int32_t CTECycleClause::location() const { // @@protoc_insertion_point(field_get:pg_query.CTECycleClause.location) return _internal_location(); } inline void CTECycleClause::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void CTECycleClause::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CTECycleClause.location) } // uint32 cycle_mark_type = 7 [json_name = "cycle_mark_type"]; inline void CTECycleClause::clear_cycle_mark_type() { _impl_.cycle_mark_type_ = 0u; } inline uint32_t CTECycleClause::_internal_cycle_mark_type() const { return _impl_.cycle_mark_type_; } 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::_internal_set_cycle_mark_type(uint32_t value) { _impl_.cycle_mark_type_ = value; } 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) } // int32 cycle_mark_typmod = 8 [json_name = "cycle_mark_typmod"]; inline void CTECycleClause::clear_cycle_mark_typmod() { _impl_.cycle_mark_typmod_ = 0; } inline int32_t CTECycleClause::_internal_cycle_mark_typmod() const { return _impl_.cycle_mark_typmod_; } 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::_internal_set_cycle_mark_typmod(int32_t value) { _impl_.cycle_mark_typmod_ = value; } 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) } // uint32 cycle_mark_collation = 9 [json_name = "cycle_mark_collation"]; inline void CTECycleClause::clear_cycle_mark_collation() { _impl_.cycle_mark_collation_ = 0u; } inline uint32_t CTECycleClause::_internal_cycle_mark_collation() const { return _impl_.cycle_mark_collation_; } 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::_internal_set_cycle_mark_collation(uint32_t value) { _impl_.cycle_mark_collation_ = value; } 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) } // uint32 cycle_mark_neop = 10 [json_name = "cycle_mark_neop"]; inline void CTECycleClause::clear_cycle_mark_neop() { _impl_.cycle_mark_neop_ = 0u; } inline uint32_t CTECycleClause::_internal_cycle_mark_neop() const { return _impl_.cycle_mark_neop_; } 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::_internal_set_cycle_mark_neop(uint32_t value) { _impl_.cycle_mark_neop_ = value; } 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) } // ------------------------------------------------------------------- // CommonTableExpr // string ctename = 1 [json_name = "ctename"]; inline void CommonTableExpr::clear_ctename() { _impl_.ctename_.ClearToEmpty(); } inline const std::string& CommonTableExpr::ctename() const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctename) return _internal_ctename(); } template inline PROTOBUF_ALWAYS_INLINE void CommonTableExpr::set_ctename(ArgT0&& arg0, ArgT... args) { _impl_.ctename_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.ctename) } inline std::string* CommonTableExpr::mutable_ctename() { 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 { return _impl_.ctename_.Get(); } inline void CommonTableExpr::_internal_set_ctename(const std::string& value) { _impl_.ctename_.Set(value, GetArenaForAllocation()); } inline std::string* CommonTableExpr::_internal_mutable_ctename() { return _impl_.ctename_.Mutable(GetArenaForAllocation()); } inline std::string* CommonTableExpr::release_ctename() { // @@protoc_insertion_point(field_release:pg_query.CommonTableExpr.ctename) return _impl_.ctename_.Release(); } inline void CommonTableExpr::set_allocated_ctename(std::string* ctename) { if (ctename != nullptr) { } else { } _impl_.ctename_.SetAllocated(ctename, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.ctename_.IsDefault()) { _impl_.ctename_.Set("", GetArenaForAllocation()); } #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 _impl_.aliascolnames_.size(); } inline int CommonTableExpr::aliascolnames_size() const { return _internal_aliascolnames_size(); } inline void CommonTableExpr::clear_aliascolnames() { _impl_.aliascolnames_.Clear(); } inline ::pg_query::Node* CommonTableExpr::mutable_aliascolnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.aliascolnames) return _impl_.aliascolnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CommonTableExpr::mutable_aliascolnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.aliascolnames) return &_impl_.aliascolnames_; } inline const ::pg_query::Node& CommonTableExpr::_internal_aliascolnames(int index) const { return _impl_.aliascolnames_.Get(index); } inline const ::pg_query::Node& CommonTableExpr::aliascolnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.aliascolnames) return _internal_aliascolnames(index); } inline ::pg_query::Node* CommonTableExpr::_internal_add_aliascolnames() { return _impl_.aliascolnames_.Add(); } inline ::pg_query::Node* CommonTableExpr::add_aliascolnames() { ::pg_query::Node* _add = _internal_add_aliascolnames(); // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.aliascolnames) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CommonTableExpr::aliascolnames() const { // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.aliascolnames) return _impl_.aliascolnames_; } // .pg_query.CTEMaterialize ctematerialized = 3 [json_name = "ctematerialized"]; inline void CommonTableExpr::clear_ctematerialized() { _impl_.ctematerialized_ = 0; } inline ::pg_query::CTEMaterialize CommonTableExpr::_internal_ctematerialized() const { return static_cast< ::pg_query::CTEMaterialize >(_impl_.ctematerialized_); } inline ::pg_query::CTEMaterialize CommonTableExpr::ctematerialized() const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctematerialized) return _internal_ctematerialized(); } inline void CommonTableExpr::_internal_set_ctematerialized(::pg_query::CTEMaterialize value) { _impl_.ctematerialized_ = value; } inline void CommonTableExpr::set_ctematerialized(::pg_query::CTEMaterialize value) { _internal_set_ctematerialized(value); // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.ctematerialized) } // .pg_query.Node ctequery = 4 [json_name = "ctequery"]; inline bool CommonTableExpr::_internal_has_ctequery() const { return this != internal_default_instance() && _impl_.ctequery_ != nullptr; } inline bool CommonTableExpr::has_ctequery() const { return _internal_has_ctequery(); } inline void CommonTableExpr::clear_ctequery() { if (GetArenaForAllocation() == nullptr && _impl_.ctequery_ != nullptr) { delete _impl_.ctequery_; } _impl_.ctequery_ = nullptr; } inline const ::pg_query::Node& CommonTableExpr::_internal_ctequery() const { 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 { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctequery) return _internal_ctequery(); } inline void CommonTableExpr::unsafe_arena_set_allocated_ctequery( ::pg_query::Node* ctequery) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.ctequery_); } _impl_.ctequery_ = ctequery; if (ctequery) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CommonTableExpr.ctequery) } inline ::pg_query::Node* CommonTableExpr::release_ctequery() { ::pg_query::Node* temp = _impl_.ctequery_; _impl_.ctequery_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* CommonTableExpr::unsafe_arena_release_ctequery() { // @@protoc_insertion_point(field_release:pg_query.CommonTableExpr.ctequery) ::pg_query::Node* temp = _impl_.ctequery_; _impl_.ctequery_ = nullptr; return temp; } inline ::pg_query::Node* CommonTableExpr::_internal_mutable_ctequery() { if (_impl_.ctequery_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.ctequery_ = p; } return _impl_.ctequery_; } inline ::pg_query::Node* CommonTableExpr::mutable_ctequery() { ::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* ctequery) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.ctequery_; } if (ctequery) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(ctequery); if (message_arena != submessage_arena) { ctequery = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, ctequery, submessage_arena); } } else { } _impl_.ctequery_ = ctequery; // @@protoc_insertion_point(field_set_allocated:pg_query.CommonTableExpr.ctequery) } // .pg_query.CTESearchClause search_clause = 5 [json_name = "search_clause"]; inline bool CommonTableExpr::_internal_has_search_clause() const { return this != internal_default_instance() && _impl_.search_clause_ != nullptr; } inline bool CommonTableExpr::has_search_clause() const { return _internal_has_search_clause(); } inline void CommonTableExpr::clear_search_clause() { if (GetArenaForAllocation() == nullptr && _impl_.search_clause_ != nullptr) { delete _impl_.search_clause_; } _impl_.search_clause_ = nullptr; } inline const ::pg_query::CTESearchClause& CommonTableExpr::_internal_search_clause() const { 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 { // @@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* search_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.search_clause_); } _impl_.search_clause_ = search_clause; if (search_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CommonTableExpr.search_clause) } inline ::pg_query::CTESearchClause* CommonTableExpr::release_search_clause() { ::pg_query::CTESearchClause* temp = _impl_.search_clause_; _impl_.search_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::CTESearchClause* CommonTableExpr::unsafe_arena_release_search_clause() { // @@protoc_insertion_point(field_release:pg_query.CommonTableExpr.search_clause) ::pg_query::CTESearchClause* temp = _impl_.search_clause_; _impl_.search_clause_ = nullptr; return temp; } inline ::pg_query::CTESearchClause* CommonTableExpr::_internal_mutable_search_clause() { if (_impl_.search_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::CTESearchClause>(GetArenaForAllocation()); _impl_.search_clause_ = p; } return _impl_.search_clause_; } inline ::pg_query::CTESearchClause* CommonTableExpr::mutable_search_clause() { ::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* search_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.search_clause_; } if (search_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(search_clause); if (message_arena != submessage_arena) { search_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, search_clause, submessage_arena); } } else { } _impl_.search_clause_ = search_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.CommonTableExpr.search_clause) } // .pg_query.CTECycleClause cycle_clause = 6 [json_name = "cycle_clause"]; inline bool CommonTableExpr::_internal_has_cycle_clause() const { return this != internal_default_instance() && _impl_.cycle_clause_ != nullptr; } inline bool CommonTableExpr::has_cycle_clause() const { return _internal_has_cycle_clause(); } inline void CommonTableExpr::clear_cycle_clause() { if (GetArenaForAllocation() == nullptr && _impl_.cycle_clause_ != nullptr) { delete _impl_.cycle_clause_; } _impl_.cycle_clause_ = nullptr; } inline const ::pg_query::CTECycleClause& CommonTableExpr::_internal_cycle_clause() const { 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 { // @@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* cycle_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.cycle_clause_); } _impl_.cycle_clause_ = cycle_clause; if (cycle_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CommonTableExpr.cycle_clause) } inline ::pg_query::CTECycleClause* CommonTableExpr::release_cycle_clause() { ::pg_query::CTECycleClause* temp = _impl_.cycle_clause_; _impl_.cycle_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::CTECycleClause* CommonTableExpr::unsafe_arena_release_cycle_clause() { // @@protoc_insertion_point(field_release:pg_query.CommonTableExpr.cycle_clause) ::pg_query::CTECycleClause* temp = _impl_.cycle_clause_; _impl_.cycle_clause_ = nullptr; return temp; } inline ::pg_query::CTECycleClause* CommonTableExpr::_internal_mutable_cycle_clause() { if (_impl_.cycle_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::CTECycleClause>(GetArenaForAllocation()); _impl_.cycle_clause_ = p; } return _impl_.cycle_clause_; } inline ::pg_query::CTECycleClause* CommonTableExpr::mutable_cycle_clause() { ::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* cycle_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.cycle_clause_; } if (cycle_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(cycle_clause); if (message_arena != submessage_arena) { cycle_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, cycle_clause, submessage_arena); } } else { } _impl_.cycle_clause_ = cycle_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.CommonTableExpr.cycle_clause) } // int32 location = 7 [json_name = "location"]; inline void CommonTableExpr::clear_location() { _impl_.location_ = 0; } inline int32_t CommonTableExpr::_internal_location() const { return _impl_.location_; } inline int32_t CommonTableExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.location) return _internal_location(); } inline void CommonTableExpr::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void CommonTableExpr::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.location) } // bool cterecursive = 8 [json_name = "cterecursive"]; inline void CommonTableExpr::clear_cterecursive() { _impl_.cterecursive_ = false; } inline bool CommonTableExpr::_internal_cterecursive() const { return _impl_.cterecursive_; } inline bool CommonTableExpr::cterecursive() const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.cterecursive) return _internal_cterecursive(); } inline void CommonTableExpr::_internal_set_cterecursive(bool value) { _impl_.cterecursive_ = value; } inline void CommonTableExpr::set_cterecursive(bool value) { _internal_set_cterecursive(value); // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.cterecursive) } // int32 cterefcount = 9 [json_name = "cterefcount"]; inline void CommonTableExpr::clear_cterefcount() { _impl_.cterefcount_ = 0; } inline int32_t CommonTableExpr::_internal_cterefcount() const { return _impl_.cterefcount_; } inline int32_t CommonTableExpr::cterefcount() const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.cterefcount) return _internal_cterefcount(); } inline void CommonTableExpr::_internal_set_cterefcount(int32_t value) { _impl_.cterefcount_ = value; } inline void CommonTableExpr::set_cterefcount(int32_t value) { _internal_set_cterefcount(value); // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.cterefcount) } // repeated .pg_query.Node ctecolnames = 10 [json_name = "ctecolnames"]; inline int CommonTableExpr::_internal_ctecolnames_size() const { return _impl_.ctecolnames_.size(); } inline int CommonTableExpr::ctecolnames_size() const { return _internal_ctecolnames_size(); } inline void CommonTableExpr::clear_ctecolnames() { _impl_.ctecolnames_.Clear(); } inline ::pg_query::Node* CommonTableExpr::mutable_ctecolnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctecolnames) return _impl_.ctecolnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CommonTableExpr::mutable_ctecolnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.ctecolnames) return &_impl_.ctecolnames_; } inline const ::pg_query::Node& CommonTableExpr::_internal_ctecolnames(int index) const { return _impl_.ctecolnames_.Get(index); } inline const ::pg_query::Node& CommonTableExpr::ctecolnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctecolnames) return _internal_ctecolnames(index); } inline ::pg_query::Node* CommonTableExpr::_internal_add_ctecolnames() { return _impl_.ctecolnames_.Add(); } inline ::pg_query::Node* CommonTableExpr::add_ctecolnames() { ::pg_query::Node* _add = _internal_add_ctecolnames(); // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.ctecolnames) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CommonTableExpr::ctecolnames() const { // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.ctecolnames) return _impl_.ctecolnames_; } // repeated .pg_query.Node ctecoltypes = 11 [json_name = "ctecoltypes"]; inline int CommonTableExpr::_internal_ctecoltypes_size() const { return _impl_.ctecoltypes_.size(); } inline int CommonTableExpr::ctecoltypes_size() const { return _internal_ctecoltypes_size(); } inline void CommonTableExpr::clear_ctecoltypes() { _impl_.ctecoltypes_.Clear(); } inline ::pg_query::Node* CommonTableExpr::mutable_ctecoltypes(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctecoltypes) return _impl_.ctecoltypes_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CommonTableExpr::mutable_ctecoltypes() { // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.ctecoltypes) return &_impl_.ctecoltypes_; } inline const ::pg_query::Node& CommonTableExpr::_internal_ctecoltypes(int index) const { return _impl_.ctecoltypes_.Get(index); } inline const ::pg_query::Node& CommonTableExpr::ctecoltypes(int index) const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctecoltypes) return _internal_ctecoltypes(index); } inline ::pg_query::Node* CommonTableExpr::_internal_add_ctecoltypes() { return _impl_.ctecoltypes_.Add(); } inline ::pg_query::Node* CommonTableExpr::add_ctecoltypes() { ::pg_query::Node* _add = _internal_add_ctecoltypes(); // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.ctecoltypes) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CommonTableExpr::ctecoltypes() const { // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.ctecoltypes) return _impl_.ctecoltypes_; } // repeated .pg_query.Node ctecoltypmods = 12 [json_name = "ctecoltypmods"]; inline int CommonTableExpr::_internal_ctecoltypmods_size() const { return _impl_.ctecoltypmods_.size(); } inline int CommonTableExpr::ctecoltypmods_size() const { return _internal_ctecoltypmods_size(); } inline void CommonTableExpr::clear_ctecoltypmods() { _impl_.ctecoltypmods_.Clear(); } inline ::pg_query::Node* CommonTableExpr::mutable_ctecoltypmods(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctecoltypmods) return _impl_.ctecoltypmods_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CommonTableExpr::mutable_ctecoltypmods() { // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.ctecoltypmods) return &_impl_.ctecoltypmods_; } inline const ::pg_query::Node& CommonTableExpr::_internal_ctecoltypmods(int index) const { return _impl_.ctecoltypmods_.Get(index); } inline const ::pg_query::Node& CommonTableExpr::ctecoltypmods(int index) const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctecoltypmods) return _internal_ctecoltypmods(index); } inline ::pg_query::Node* CommonTableExpr::_internal_add_ctecoltypmods() { return _impl_.ctecoltypmods_.Add(); } inline ::pg_query::Node* CommonTableExpr::add_ctecoltypmods() { ::pg_query::Node* _add = _internal_add_ctecoltypmods(); // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.ctecoltypmods) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CommonTableExpr::ctecoltypmods() const { // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.ctecoltypmods) return _impl_.ctecoltypmods_; } // repeated .pg_query.Node ctecolcollations = 13 [json_name = "ctecolcollations"]; inline int CommonTableExpr::_internal_ctecolcollations_size() const { return _impl_.ctecolcollations_.size(); } inline int CommonTableExpr::ctecolcollations_size() const { return _internal_ctecolcollations_size(); } inline void CommonTableExpr::clear_ctecolcollations() { _impl_.ctecolcollations_.Clear(); } inline ::pg_query::Node* CommonTableExpr::mutable_ctecolcollations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctecolcollations) return _impl_.ctecolcollations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CommonTableExpr::mutable_ctecolcollations() { // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.ctecolcollations) return &_impl_.ctecolcollations_; } inline const ::pg_query::Node& CommonTableExpr::_internal_ctecolcollations(int index) const { return _impl_.ctecolcollations_.Get(index); } inline const ::pg_query::Node& CommonTableExpr::ctecolcollations(int index) const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctecolcollations) return _internal_ctecolcollations(index); } inline ::pg_query::Node* CommonTableExpr::_internal_add_ctecolcollations() { return _impl_.ctecolcollations_.Add(); } inline ::pg_query::Node* CommonTableExpr::add_ctecolcollations() { ::pg_query::Node* _add = _internal_add_ctecolcollations(); // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.ctecolcollations) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CommonTableExpr::ctecolcollations() const { // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.ctecolcollations) return _impl_.ctecolcollations_; } // ------------------------------------------------------------------- // MergeWhenClause // bool matched = 1 [json_name = "matched"]; inline void MergeWhenClause::clear_matched() { _impl_.matched_ = false; } inline bool MergeWhenClause::_internal_matched() const { return _impl_.matched_; } inline bool MergeWhenClause::matched() const { // @@protoc_insertion_point(field_get:pg_query.MergeWhenClause.matched) return _internal_matched(); } inline void MergeWhenClause::_internal_set_matched(bool value) { _impl_.matched_ = value; } inline void MergeWhenClause::set_matched(bool value) { _internal_set_matched(value); // @@protoc_insertion_point(field_set:pg_query.MergeWhenClause.matched) } // .pg_query.CmdType command_type = 2 [json_name = "commandType"]; inline void MergeWhenClause::clear_command_type() { _impl_.command_type_ = 0; } inline ::pg_query::CmdType MergeWhenClause::_internal_command_type() const { return static_cast< ::pg_query::CmdType >(_impl_.command_type_); } 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::_internal_set_command_type(::pg_query::CmdType value) { _impl_.command_type_ = value; } 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) } // .pg_query.OverridingKind override = 3 [json_name = "override"]; inline void MergeWhenClause::clear_override() { _impl_.override_ = 0; } inline ::pg_query::OverridingKind MergeWhenClause::_internal_override() const { return static_cast< ::pg_query::OverridingKind >(_impl_.override_); } inline ::pg_query::OverridingKind MergeWhenClause::override() const { // @@protoc_insertion_point(field_get:pg_query.MergeWhenClause.override) return _internal_override(); } inline void MergeWhenClause::_internal_set_override(::pg_query::OverridingKind value) { _impl_.override_ = value; } inline void MergeWhenClause::set_override(::pg_query::OverridingKind value) { _internal_set_override(value); // @@protoc_insertion_point(field_set:pg_query.MergeWhenClause.override) } // .pg_query.Node condition = 4 [json_name = "condition"]; inline bool MergeWhenClause::_internal_has_condition() const { return this != internal_default_instance() && _impl_.condition_ != nullptr; } inline bool MergeWhenClause::has_condition() const { return _internal_has_condition(); } inline void MergeWhenClause::clear_condition() { if (GetArenaForAllocation() == nullptr && _impl_.condition_ != nullptr) { delete _impl_.condition_; } _impl_.condition_ = nullptr; } inline const ::pg_query::Node& MergeWhenClause::_internal_condition() const { 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 { // @@protoc_insertion_point(field_get:pg_query.MergeWhenClause.condition) return _internal_condition(); } inline void MergeWhenClause::unsafe_arena_set_allocated_condition( ::pg_query::Node* condition) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.condition_); } _impl_.condition_ = condition; if (condition) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MergeWhenClause.condition) } inline ::pg_query::Node* MergeWhenClause::release_condition() { ::pg_query::Node* temp = _impl_.condition_; _impl_.condition_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* MergeWhenClause::unsafe_arena_release_condition() { // @@protoc_insertion_point(field_release:pg_query.MergeWhenClause.condition) ::pg_query::Node* temp = _impl_.condition_; _impl_.condition_ = nullptr; return temp; } inline ::pg_query::Node* MergeWhenClause::_internal_mutable_condition() { if (_impl_.condition_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.condition_ = p; } return _impl_.condition_; } inline ::pg_query::Node* MergeWhenClause::mutable_condition() { ::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* condition) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.condition_; } if (condition) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(condition); if (message_arena != submessage_arena) { condition = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, condition, submessage_arena); } } else { } _impl_.condition_ = condition; // @@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 _impl_.target_list_.size(); } inline int MergeWhenClause::target_list_size() const { return _internal_target_list_size(); } inline void MergeWhenClause::clear_target_list() { _impl_.target_list_.Clear(); } inline ::pg_query::Node* MergeWhenClause::mutable_target_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.MergeWhenClause.target_list) return _impl_.target_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* MergeWhenClause::mutable_target_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.MergeWhenClause.target_list) return &_impl_.target_list_; } inline const ::pg_query::Node& MergeWhenClause::_internal_target_list(int index) const { return _impl_.target_list_.Get(index); } inline const ::pg_query::Node& MergeWhenClause::target_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.MergeWhenClause.target_list) return _internal_target_list(index); } inline ::pg_query::Node* MergeWhenClause::_internal_add_target_list() { return _impl_.target_list_.Add(); } inline ::pg_query::Node* MergeWhenClause::add_target_list() { ::pg_query::Node* _add = _internal_add_target_list(); // @@protoc_insertion_point(field_add:pg_query.MergeWhenClause.target_list) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& MergeWhenClause::target_list() const { // @@protoc_insertion_point(field_list:pg_query.MergeWhenClause.target_list) return _impl_.target_list_; } // repeated .pg_query.Node values = 6 [json_name = "values"]; inline int MergeWhenClause::_internal_values_size() const { return _impl_.values_.size(); } inline int MergeWhenClause::values_size() const { return _internal_values_size(); } inline void MergeWhenClause::clear_values() { _impl_.values_.Clear(); } inline ::pg_query::Node* MergeWhenClause::mutable_values(int index) { // @@protoc_insertion_point(field_mutable:pg_query.MergeWhenClause.values) return _impl_.values_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* MergeWhenClause::mutable_values() { // @@protoc_insertion_point(field_mutable_list:pg_query.MergeWhenClause.values) return &_impl_.values_; } inline const ::pg_query::Node& MergeWhenClause::_internal_values(int index) const { return _impl_.values_.Get(index); } inline const ::pg_query::Node& MergeWhenClause::values(int index) const { // @@protoc_insertion_point(field_get:pg_query.MergeWhenClause.values) return _internal_values(index); } inline ::pg_query::Node* MergeWhenClause::_internal_add_values() { return _impl_.values_.Add(); } inline ::pg_query::Node* MergeWhenClause::add_values() { ::pg_query::Node* _add = _internal_add_values(); // @@protoc_insertion_point(field_add:pg_query.MergeWhenClause.values) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& MergeWhenClause::values() const { // @@protoc_insertion_point(field_list:pg_query.MergeWhenClause.values) return _impl_.values_; } // ------------------------------------------------------------------- // RoleSpec // .pg_query.RoleSpecType roletype = 1 [json_name = "roletype"]; inline void RoleSpec::clear_roletype() { _impl_.roletype_ = 0; } inline ::pg_query::RoleSpecType RoleSpec::_internal_roletype() const { return static_cast< ::pg_query::RoleSpecType >(_impl_.roletype_); } inline ::pg_query::RoleSpecType RoleSpec::roletype() const { // @@protoc_insertion_point(field_get:pg_query.RoleSpec.roletype) return _internal_roletype(); } inline void RoleSpec::_internal_set_roletype(::pg_query::RoleSpecType value) { _impl_.roletype_ = value; } inline void RoleSpec::set_roletype(::pg_query::RoleSpecType value) { _internal_set_roletype(value); // @@protoc_insertion_point(field_set:pg_query.RoleSpec.roletype) } // string rolename = 2 [json_name = "rolename"]; inline void RoleSpec::clear_rolename() { _impl_.rolename_.ClearToEmpty(); } inline const std::string& RoleSpec::rolename() const { // @@protoc_insertion_point(field_get:pg_query.RoleSpec.rolename) return _internal_rolename(); } template inline PROTOBUF_ALWAYS_INLINE void RoleSpec::set_rolename(ArgT0&& arg0, ArgT... args) { _impl_.rolename_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.RoleSpec.rolename) } inline std::string* RoleSpec::mutable_rolename() { 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 { return _impl_.rolename_.Get(); } inline void RoleSpec::_internal_set_rolename(const std::string& value) { _impl_.rolename_.Set(value, GetArenaForAllocation()); } inline std::string* RoleSpec::_internal_mutable_rolename() { return _impl_.rolename_.Mutable(GetArenaForAllocation()); } inline std::string* RoleSpec::release_rolename() { // @@protoc_insertion_point(field_release:pg_query.RoleSpec.rolename) return _impl_.rolename_.Release(); } inline void RoleSpec::set_allocated_rolename(std::string* rolename) { if (rolename != nullptr) { } else { } _impl_.rolename_.SetAllocated(rolename, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.rolename_.IsDefault()) { _impl_.rolename_.Set("", GetArenaForAllocation()); } #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() { _impl_.location_ = 0; } inline int32_t RoleSpec::_internal_location() const { return _impl_.location_; } inline int32_t RoleSpec::location() const { // @@protoc_insertion_point(field_get:pg_query.RoleSpec.location) return _internal_location(); } inline void RoleSpec::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void RoleSpec::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RoleSpec.location) } // ------------------------------------------------------------------- // TriggerTransition // string name = 1 [json_name = "name"]; inline void TriggerTransition::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& TriggerTransition::name() const { // @@protoc_insertion_point(field_get:pg_query.TriggerTransition.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void TriggerTransition::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.TriggerTransition.name) } inline std::string* TriggerTransition::mutable_name() { 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 { return _impl_.name_.Get(); } inline void TriggerTransition::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* TriggerTransition::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* TriggerTransition::release_name() { // @@protoc_insertion_point(field_release:pg_query.TriggerTransition.name) return _impl_.name_.Release(); } inline void TriggerTransition::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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() { _impl_.is_new_ = false; } inline bool TriggerTransition::_internal_is_new() const { return _impl_.is_new_; } inline bool TriggerTransition::is_new() const { // @@protoc_insertion_point(field_get:pg_query.TriggerTransition.is_new) return _internal_is_new(); } inline void TriggerTransition::_internal_set_is_new(bool value) { _impl_.is_new_ = value; } inline void TriggerTransition::set_is_new(bool value) { _internal_set_is_new(value); // @@protoc_insertion_point(field_set:pg_query.TriggerTransition.is_new) } // bool is_table = 3 [json_name = "isTable"]; inline void TriggerTransition::clear_is_table() { _impl_.is_table_ = false; } inline bool TriggerTransition::_internal_is_table() const { return _impl_.is_table_; } inline bool TriggerTransition::is_table() const { // @@protoc_insertion_point(field_get:pg_query.TriggerTransition.is_table) return _internal_is_table(); } inline void TriggerTransition::_internal_set_is_table(bool value) { _impl_.is_table_ = value; } inline void TriggerTransition::set_is_table(bool value) { _internal_set_is_table(value); // @@protoc_insertion_point(field_set:pg_query.TriggerTransition.is_table) } // ------------------------------------------------------------------- // PartitionElem // string name = 1 [json_name = "name"]; inline void PartitionElem::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& PartitionElem::name() const { // @@protoc_insertion_point(field_get:pg_query.PartitionElem.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void PartitionElem::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.PartitionElem.name) } inline std::string* PartitionElem::mutable_name() { 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 { return _impl_.name_.Get(); } inline void PartitionElem::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* PartitionElem::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* PartitionElem::release_name() { // @@protoc_insertion_point(field_release:pg_query.PartitionElem.name) return _impl_.name_.Release(); } inline void PartitionElem::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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::_internal_has_expr() const { return this != internal_default_instance() && _impl_.expr_ != nullptr; } inline bool PartitionElem::has_expr() const { return _internal_has_expr(); } inline void PartitionElem::clear_expr() { if (GetArenaForAllocation() == nullptr && _impl_.expr_ != nullptr) { delete _impl_.expr_; } _impl_.expr_ = nullptr; } inline const ::pg_query::Node& PartitionElem::_internal_expr() const { 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 { // @@protoc_insertion_point(field_get:pg_query.PartitionElem.expr) return _internal_expr(); } inline void PartitionElem::unsafe_arena_set_allocated_expr( ::pg_query::Node* expr) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.expr_); } _impl_.expr_ = expr; if (expr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PartitionElem.expr) } inline ::pg_query::Node* PartitionElem::release_expr() { ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* PartitionElem::unsafe_arena_release_expr() { // @@protoc_insertion_point(field_release:pg_query.PartitionElem.expr) ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::Node* PartitionElem::_internal_mutable_expr() { if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.expr_ = p; } return _impl_.expr_; } inline ::pg_query::Node* PartitionElem::mutable_expr() { ::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* expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.expr_; } if (expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(expr); if (message_arena != submessage_arena) { expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, expr, submessage_arena); } } else { } _impl_.expr_ = expr; // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionElem.expr) } // repeated .pg_query.Node collation = 3 [json_name = "collation"]; inline int PartitionElem::_internal_collation_size() const { return _impl_.collation_.size(); } inline int PartitionElem::collation_size() const { return _internal_collation_size(); } inline void PartitionElem::clear_collation() { _impl_.collation_.Clear(); } inline ::pg_query::Node* PartitionElem::mutable_collation(int index) { // @@protoc_insertion_point(field_mutable:pg_query.PartitionElem.collation) return _impl_.collation_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* PartitionElem::mutable_collation() { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionElem.collation) return &_impl_.collation_; } inline const ::pg_query::Node& PartitionElem::_internal_collation(int index) const { return _impl_.collation_.Get(index); } inline const ::pg_query::Node& PartitionElem::collation(int index) const { // @@protoc_insertion_point(field_get:pg_query.PartitionElem.collation) return _internal_collation(index); } inline ::pg_query::Node* PartitionElem::_internal_add_collation() { return _impl_.collation_.Add(); } inline ::pg_query::Node* PartitionElem::add_collation() { ::pg_query::Node* _add = _internal_add_collation(); // @@protoc_insertion_point(field_add:pg_query.PartitionElem.collation) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& PartitionElem::collation() const { // @@protoc_insertion_point(field_list:pg_query.PartitionElem.collation) return _impl_.collation_; } // repeated .pg_query.Node opclass = 4 [json_name = "opclass"]; inline int PartitionElem::_internal_opclass_size() const { return _impl_.opclass_.size(); } inline int PartitionElem::opclass_size() const { return _internal_opclass_size(); } inline void PartitionElem::clear_opclass() { _impl_.opclass_.Clear(); } inline ::pg_query::Node* PartitionElem::mutable_opclass(int index) { // @@protoc_insertion_point(field_mutable:pg_query.PartitionElem.opclass) return _impl_.opclass_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* PartitionElem::mutable_opclass() { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionElem.opclass) return &_impl_.opclass_; } inline const ::pg_query::Node& PartitionElem::_internal_opclass(int index) const { return _impl_.opclass_.Get(index); } inline const ::pg_query::Node& PartitionElem::opclass(int index) const { // @@protoc_insertion_point(field_get:pg_query.PartitionElem.opclass) return _internal_opclass(index); } inline ::pg_query::Node* PartitionElem::_internal_add_opclass() { return _impl_.opclass_.Add(); } inline ::pg_query::Node* PartitionElem::add_opclass() { ::pg_query::Node* _add = _internal_add_opclass(); // @@protoc_insertion_point(field_add:pg_query.PartitionElem.opclass) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& PartitionElem::opclass() const { // @@protoc_insertion_point(field_list:pg_query.PartitionElem.opclass) return _impl_.opclass_; } // int32 location = 5 [json_name = "location"]; inline void PartitionElem::clear_location() { _impl_.location_ = 0; } inline int32_t PartitionElem::_internal_location() const { return _impl_.location_; } inline int32_t PartitionElem::location() const { // @@protoc_insertion_point(field_get:pg_query.PartitionElem.location) return _internal_location(); } inline void PartitionElem::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void PartitionElem::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.PartitionElem.location) } // ------------------------------------------------------------------- // PartitionSpec // string strategy = 1 [json_name = "strategy"]; inline void PartitionSpec::clear_strategy() { _impl_.strategy_.ClearToEmpty(); } inline const std::string& PartitionSpec::strategy() const { // @@protoc_insertion_point(field_get:pg_query.PartitionSpec.strategy) return _internal_strategy(); } template inline PROTOBUF_ALWAYS_INLINE void PartitionSpec::set_strategy(ArgT0&& arg0, ArgT... args) { _impl_.strategy_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.PartitionSpec.strategy) } inline std::string* PartitionSpec::mutable_strategy() { std::string* _s = _internal_mutable_strategy(); // @@protoc_insertion_point(field_mutable:pg_query.PartitionSpec.strategy) return _s; } inline const std::string& PartitionSpec::_internal_strategy() const { return _impl_.strategy_.Get(); } inline void PartitionSpec::_internal_set_strategy(const std::string& value) { _impl_.strategy_.Set(value, GetArenaForAllocation()); } inline std::string* PartitionSpec::_internal_mutable_strategy() { return _impl_.strategy_.Mutable(GetArenaForAllocation()); } inline std::string* PartitionSpec::release_strategy() { // @@protoc_insertion_point(field_release:pg_query.PartitionSpec.strategy) return _impl_.strategy_.Release(); } inline void PartitionSpec::set_allocated_strategy(std::string* strategy) { if (strategy != nullptr) { } else { } _impl_.strategy_.SetAllocated(strategy, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.strategy_.IsDefault()) { _impl_.strategy_.Set("", GetArenaForAllocation()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionSpec.strategy) } // repeated .pg_query.Node part_params = 2 [json_name = "partParams"]; inline int PartitionSpec::_internal_part_params_size() const { return _impl_.part_params_.size(); } inline int PartitionSpec::part_params_size() const { return _internal_part_params_size(); } inline void PartitionSpec::clear_part_params() { _impl_.part_params_.Clear(); } inline ::pg_query::Node* PartitionSpec::mutable_part_params(int index) { // @@protoc_insertion_point(field_mutable:pg_query.PartitionSpec.part_params) return _impl_.part_params_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* PartitionSpec::mutable_part_params() { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionSpec.part_params) return &_impl_.part_params_; } inline const ::pg_query::Node& PartitionSpec::_internal_part_params(int index) const { return _impl_.part_params_.Get(index); } inline const ::pg_query::Node& PartitionSpec::part_params(int index) const { // @@protoc_insertion_point(field_get:pg_query.PartitionSpec.part_params) return _internal_part_params(index); } inline ::pg_query::Node* PartitionSpec::_internal_add_part_params() { return _impl_.part_params_.Add(); } inline ::pg_query::Node* PartitionSpec::add_part_params() { ::pg_query::Node* _add = _internal_add_part_params(); // @@protoc_insertion_point(field_add:pg_query.PartitionSpec.part_params) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& PartitionSpec::part_params() const { // @@protoc_insertion_point(field_list:pg_query.PartitionSpec.part_params) return _impl_.part_params_; } // int32 location = 3 [json_name = "location"]; inline void PartitionSpec::clear_location() { _impl_.location_ = 0; } inline int32_t PartitionSpec::_internal_location() const { return _impl_.location_; } inline int32_t PartitionSpec::location() const { // @@protoc_insertion_point(field_get:pg_query.PartitionSpec.location) return _internal_location(); } inline void PartitionSpec::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void PartitionSpec::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.PartitionSpec.location) } // ------------------------------------------------------------------- // PartitionBoundSpec // string strategy = 1 [json_name = "strategy"]; inline void PartitionBoundSpec::clear_strategy() { _impl_.strategy_.ClearToEmpty(); } inline const std::string& PartitionBoundSpec::strategy() const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.strategy) return _internal_strategy(); } template inline PROTOBUF_ALWAYS_INLINE void PartitionBoundSpec::set_strategy(ArgT0&& arg0, ArgT... args) { _impl_.strategy_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.strategy) } inline std::string* PartitionBoundSpec::mutable_strategy() { 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 { return _impl_.strategy_.Get(); } inline void PartitionBoundSpec::_internal_set_strategy(const std::string& value) { _impl_.strategy_.Set(value, GetArenaForAllocation()); } inline std::string* PartitionBoundSpec::_internal_mutable_strategy() { return _impl_.strategy_.Mutable(GetArenaForAllocation()); } inline std::string* PartitionBoundSpec::release_strategy() { // @@protoc_insertion_point(field_release:pg_query.PartitionBoundSpec.strategy) return _impl_.strategy_.Release(); } inline void PartitionBoundSpec::set_allocated_strategy(std::string* strategy) { if (strategy != nullptr) { } else { } _impl_.strategy_.SetAllocated(strategy, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.strategy_.IsDefault()) { _impl_.strategy_.Set("", GetArenaForAllocation()); } #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() { _impl_.is_default_ = false; } inline bool PartitionBoundSpec::_internal_is_default() const { return _impl_.is_default_; } inline bool PartitionBoundSpec::is_default() const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.is_default) return _internal_is_default(); } inline void PartitionBoundSpec::_internal_set_is_default(bool value) { _impl_.is_default_ = value; } inline void PartitionBoundSpec::set_is_default(bool value) { _internal_set_is_default(value); // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.is_default) } // int32 modulus = 3 [json_name = "modulus"]; inline void PartitionBoundSpec::clear_modulus() { _impl_.modulus_ = 0; } inline int32_t PartitionBoundSpec::_internal_modulus() const { return _impl_.modulus_; } inline int32_t PartitionBoundSpec::modulus() const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.modulus) return _internal_modulus(); } inline void PartitionBoundSpec::_internal_set_modulus(int32_t value) { _impl_.modulus_ = value; } inline void PartitionBoundSpec::set_modulus(int32_t value) { _internal_set_modulus(value); // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.modulus) } // int32 remainder = 4 [json_name = "remainder"]; inline void PartitionBoundSpec::clear_remainder() { _impl_.remainder_ = 0; } inline int32_t PartitionBoundSpec::_internal_remainder() const { return _impl_.remainder_; } inline int32_t PartitionBoundSpec::remainder() const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.remainder) return _internal_remainder(); } inline void PartitionBoundSpec::_internal_set_remainder(int32_t value) { _impl_.remainder_ = value; } inline void PartitionBoundSpec::set_remainder(int32_t value) { _internal_set_remainder(value); // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.remainder) } // repeated .pg_query.Node listdatums = 5 [json_name = "listdatums"]; inline int PartitionBoundSpec::_internal_listdatums_size() const { return _impl_.listdatums_.size(); } inline int PartitionBoundSpec::listdatums_size() const { return _internal_listdatums_size(); } inline void PartitionBoundSpec::clear_listdatums() { _impl_.listdatums_.Clear(); } inline ::pg_query::Node* PartitionBoundSpec::mutable_listdatums(int index) { // @@protoc_insertion_point(field_mutable:pg_query.PartitionBoundSpec.listdatums) return _impl_.listdatums_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* PartitionBoundSpec::mutable_listdatums() { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionBoundSpec.listdatums) return &_impl_.listdatums_; } inline const ::pg_query::Node& PartitionBoundSpec::_internal_listdatums(int index) const { return _impl_.listdatums_.Get(index); } inline const ::pg_query::Node& PartitionBoundSpec::listdatums(int index) const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.listdatums) return _internal_listdatums(index); } inline ::pg_query::Node* PartitionBoundSpec::_internal_add_listdatums() { return _impl_.listdatums_.Add(); } inline ::pg_query::Node* PartitionBoundSpec::add_listdatums() { ::pg_query::Node* _add = _internal_add_listdatums(); // @@protoc_insertion_point(field_add:pg_query.PartitionBoundSpec.listdatums) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& PartitionBoundSpec::listdatums() const { // @@protoc_insertion_point(field_list:pg_query.PartitionBoundSpec.listdatums) return _impl_.listdatums_; } // repeated .pg_query.Node lowerdatums = 6 [json_name = "lowerdatums"]; inline int PartitionBoundSpec::_internal_lowerdatums_size() const { return _impl_.lowerdatums_.size(); } inline int PartitionBoundSpec::lowerdatums_size() const { return _internal_lowerdatums_size(); } inline void PartitionBoundSpec::clear_lowerdatums() { _impl_.lowerdatums_.Clear(); } inline ::pg_query::Node* PartitionBoundSpec::mutable_lowerdatums(int index) { // @@protoc_insertion_point(field_mutable:pg_query.PartitionBoundSpec.lowerdatums) return _impl_.lowerdatums_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* PartitionBoundSpec::mutable_lowerdatums() { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionBoundSpec.lowerdatums) return &_impl_.lowerdatums_; } inline const ::pg_query::Node& PartitionBoundSpec::_internal_lowerdatums(int index) const { return _impl_.lowerdatums_.Get(index); } inline const ::pg_query::Node& PartitionBoundSpec::lowerdatums(int index) const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.lowerdatums) return _internal_lowerdatums(index); } inline ::pg_query::Node* PartitionBoundSpec::_internal_add_lowerdatums() { return _impl_.lowerdatums_.Add(); } inline ::pg_query::Node* PartitionBoundSpec::add_lowerdatums() { ::pg_query::Node* _add = _internal_add_lowerdatums(); // @@protoc_insertion_point(field_add:pg_query.PartitionBoundSpec.lowerdatums) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& PartitionBoundSpec::lowerdatums() const { // @@protoc_insertion_point(field_list:pg_query.PartitionBoundSpec.lowerdatums) return _impl_.lowerdatums_; } // repeated .pg_query.Node upperdatums = 7 [json_name = "upperdatums"]; inline int PartitionBoundSpec::_internal_upperdatums_size() const { return _impl_.upperdatums_.size(); } inline int PartitionBoundSpec::upperdatums_size() const { return _internal_upperdatums_size(); } inline void PartitionBoundSpec::clear_upperdatums() { _impl_.upperdatums_.Clear(); } inline ::pg_query::Node* PartitionBoundSpec::mutable_upperdatums(int index) { // @@protoc_insertion_point(field_mutable:pg_query.PartitionBoundSpec.upperdatums) return _impl_.upperdatums_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* PartitionBoundSpec::mutable_upperdatums() { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionBoundSpec.upperdatums) return &_impl_.upperdatums_; } inline const ::pg_query::Node& PartitionBoundSpec::_internal_upperdatums(int index) const { return _impl_.upperdatums_.Get(index); } inline const ::pg_query::Node& PartitionBoundSpec::upperdatums(int index) const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.upperdatums) return _internal_upperdatums(index); } inline ::pg_query::Node* PartitionBoundSpec::_internal_add_upperdatums() { return _impl_.upperdatums_.Add(); } inline ::pg_query::Node* PartitionBoundSpec::add_upperdatums() { ::pg_query::Node* _add = _internal_add_upperdatums(); // @@protoc_insertion_point(field_add:pg_query.PartitionBoundSpec.upperdatums) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& PartitionBoundSpec::upperdatums() const { // @@protoc_insertion_point(field_list:pg_query.PartitionBoundSpec.upperdatums) return _impl_.upperdatums_; } // int32 location = 8 [json_name = "location"]; inline void PartitionBoundSpec::clear_location() { _impl_.location_ = 0; } inline int32_t PartitionBoundSpec::_internal_location() const { return _impl_.location_; } inline int32_t PartitionBoundSpec::location() const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.location) return _internal_location(); } inline void PartitionBoundSpec::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void PartitionBoundSpec::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.location) } // ------------------------------------------------------------------- // PartitionRangeDatum // .pg_query.PartitionRangeDatumKind kind = 1 [json_name = "kind"]; inline void PartitionRangeDatum::clear_kind() { _impl_.kind_ = 0; } inline ::pg_query::PartitionRangeDatumKind PartitionRangeDatum::_internal_kind() const { return static_cast< ::pg_query::PartitionRangeDatumKind >(_impl_.kind_); } inline ::pg_query::PartitionRangeDatumKind PartitionRangeDatum::kind() const { // @@protoc_insertion_point(field_get:pg_query.PartitionRangeDatum.kind) return _internal_kind(); } inline void PartitionRangeDatum::_internal_set_kind(::pg_query::PartitionRangeDatumKind value) { _impl_.kind_ = value; } inline void PartitionRangeDatum::set_kind(::pg_query::PartitionRangeDatumKind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.PartitionRangeDatum.kind) } // .pg_query.Node value = 2 [json_name = "value"]; inline bool PartitionRangeDatum::_internal_has_value() const { return this != internal_default_instance() && _impl_.value_ != nullptr; } inline bool PartitionRangeDatum::has_value() const { return _internal_has_value(); } inline void PartitionRangeDatum::clear_value() { if (GetArenaForAllocation() == nullptr && _impl_.value_ != nullptr) { delete _impl_.value_; } _impl_.value_ = nullptr; } inline const ::pg_query::Node& PartitionRangeDatum::_internal_value() const { 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 { // @@protoc_insertion_point(field_get:pg_query.PartitionRangeDatum.value) return _internal_value(); } inline void PartitionRangeDatum::unsafe_arena_set_allocated_value( ::pg_query::Node* value) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.value_); } _impl_.value_ = value; if (value) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PartitionRangeDatum.value) } inline ::pg_query::Node* PartitionRangeDatum::release_value() { ::pg_query::Node* temp = _impl_.value_; _impl_.value_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* PartitionRangeDatum::unsafe_arena_release_value() { // @@protoc_insertion_point(field_release:pg_query.PartitionRangeDatum.value) ::pg_query::Node* temp = _impl_.value_; _impl_.value_ = nullptr; return temp; } inline ::pg_query::Node* PartitionRangeDatum::_internal_mutable_value() { if (_impl_.value_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.value_ = p; } return _impl_.value_; } inline ::pg_query::Node* PartitionRangeDatum::mutable_value() { ::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) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.value_; } if (value) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(value); if (message_arena != submessage_arena) { value = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, value, submessage_arena); } } else { } _impl_.value_ = value; // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionRangeDatum.value) } // int32 location = 3 [json_name = "location"]; inline void PartitionRangeDatum::clear_location() { _impl_.location_ = 0; } inline int32_t PartitionRangeDatum::_internal_location() const { return _impl_.location_; } inline int32_t PartitionRangeDatum::location() const { // @@protoc_insertion_point(field_get:pg_query.PartitionRangeDatum.location) return _internal_location(); } inline void PartitionRangeDatum::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void PartitionRangeDatum::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.PartitionRangeDatum.location) } // ------------------------------------------------------------------- // PartitionCmd // .pg_query.RangeVar name = 1 [json_name = "name"]; inline bool PartitionCmd::_internal_has_name() const { return this != internal_default_instance() && _impl_.name_ != nullptr; } inline bool PartitionCmd::has_name() const { return _internal_has_name(); } inline void PartitionCmd::clear_name() { if (GetArenaForAllocation() == nullptr && _impl_.name_ != nullptr) { delete _impl_.name_; } _impl_.name_ = nullptr; } inline const ::pg_query::RangeVar& PartitionCmd::_internal_name() const { 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 { // @@protoc_insertion_point(field_get:pg_query.PartitionCmd.name) return _internal_name(); } inline void PartitionCmd::unsafe_arena_set_allocated_name( ::pg_query::RangeVar* name) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.name_); } _impl_.name_ = name; if (name) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PartitionCmd.name) } inline ::pg_query::RangeVar* PartitionCmd::release_name() { ::pg_query::RangeVar* temp = _impl_.name_; _impl_.name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* PartitionCmd::unsafe_arena_release_name() { // @@protoc_insertion_point(field_release:pg_query.PartitionCmd.name) ::pg_query::RangeVar* temp = _impl_.name_; _impl_.name_ = nullptr; return temp; } inline ::pg_query::RangeVar* PartitionCmd::_internal_mutable_name() { if (_impl_.name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.name_ = p; } return _impl_.name_; } inline ::pg_query::RangeVar* PartitionCmd::mutable_name() { ::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* name) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.name_; } if (name) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(name); if (message_arena != submessage_arena) { name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, name, submessage_arena); } } else { } _impl_.name_ = name; // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionCmd.name) } // .pg_query.PartitionBoundSpec bound = 2 [json_name = "bound"]; inline bool PartitionCmd::_internal_has_bound() const { return this != internal_default_instance() && _impl_.bound_ != nullptr; } inline bool PartitionCmd::has_bound() const { return _internal_has_bound(); } inline void PartitionCmd::clear_bound() { if (GetArenaForAllocation() == nullptr && _impl_.bound_ != nullptr) { delete _impl_.bound_; } _impl_.bound_ = nullptr; } inline const ::pg_query::PartitionBoundSpec& PartitionCmd::_internal_bound() const { 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 { // @@protoc_insertion_point(field_get:pg_query.PartitionCmd.bound) return _internal_bound(); } inline void PartitionCmd::unsafe_arena_set_allocated_bound( ::pg_query::PartitionBoundSpec* bound) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.bound_); } _impl_.bound_ = bound; if (bound) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PartitionCmd.bound) } inline ::pg_query::PartitionBoundSpec* PartitionCmd::release_bound() { ::pg_query::PartitionBoundSpec* temp = _impl_.bound_; _impl_.bound_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::PartitionBoundSpec* PartitionCmd::unsafe_arena_release_bound() { // @@protoc_insertion_point(field_release:pg_query.PartitionCmd.bound) ::pg_query::PartitionBoundSpec* temp = _impl_.bound_; _impl_.bound_ = nullptr; return temp; } inline ::pg_query::PartitionBoundSpec* PartitionCmd::_internal_mutable_bound() { if (_impl_.bound_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::PartitionBoundSpec>(GetArenaForAllocation()); _impl_.bound_ = p; } return _impl_.bound_; } inline ::pg_query::PartitionBoundSpec* PartitionCmd::mutable_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* bound) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.bound_; } if (bound) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(bound); if (message_arena != submessage_arena) { bound = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, bound, submessage_arena); } } else { } _impl_.bound_ = bound; // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionCmd.bound) } // bool concurrent = 3 [json_name = "concurrent"]; inline void PartitionCmd::clear_concurrent() { _impl_.concurrent_ = false; } inline bool PartitionCmd::_internal_concurrent() const { return _impl_.concurrent_; } inline bool PartitionCmd::concurrent() const { // @@protoc_insertion_point(field_get:pg_query.PartitionCmd.concurrent) return _internal_concurrent(); } inline void PartitionCmd::_internal_set_concurrent(bool value) { _impl_.concurrent_ = value; } inline void PartitionCmd::set_concurrent(bool value) { _internal_set_concurrent(value); // @@protoc_insertion_point(field_set:pg_query.PartitionCmd.concurrent) } // ------------------------------------------------------------------- // VacuumRelation // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool VacuumRelation::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool VacuumRelation::has_relation() const { return _internal_has_relation(); } inline void VacuumRelation::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& VacuumRelation::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.VacuumRelation.relation) return _internal_relation(); } inline void VacuumRelation::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.VacuumRelation.relation) } inline ::pg_query::RangeVar* VacuumRelation::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* VacuumRelation::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.VacuumRelation.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* VacuumRelation::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* VacuumRelation::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.VacuumRelation.relation) } // uint32 oid = 2 [json_name = "oid"]; inline void VacuumRelation::clear_oid() { _impl_.oid_ = 0u; } inline uint32_t VacuumRelation::_internal_oid() const { return _impl_.oid_; } inline uint32_t VacuumRelation::oid() const { // @@protoc_insertion_point(field_get:pg_query.VacuumRelation.oid) return _internal_oid(); } inline void VacuumRelation::_internal_set_oid(uint32_t value) { _impl_.oid_ = value; } inline void VacuumRelation::set_oid(uint32_t value) { _internal_set_oid(value); // @@protoc_insertion_point(field_set:pg_query.VacuumRelation.oid) } // repeated .pg_query.Node va_cols = 3 [json_name = "va_cols"]; inline int VacuumRelation::_internal_va_cols_size() const { return _impl_.va_cols_.size(); } inline int VacuumRelation::va_cols_size() const { return _internal_va_cols_size(); } inline void VacuumRelation::clear_va_cols() { _impl_.va_cols_.Clear(); } inline ::pg_query::Node* VacuumRelation::mutable_va_cols(int index) { // @@protoc_insertion_point(field_mutable:pg_query.VacuumRelation.va_cols) return _impl_.va_cols_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* VacuumRelation::mutable_va_cols() { // @@protoc_insertion_point(field_mutable_list:pg_query.VacuumRelation.va_cols) return &_impl_.va_cols_; } inline const ::pg_query::Node& VacuumRelation::_internal_va_cols(int index) const { return _impl_.va_cols_.Get(index); } inline const ::pg_query::Node& VacuumRelation::va_cols(int index) const { // @@protoc_insertion_point(field_get:pg_query.VacuumRelation.va_cols) return _internal_va_cols(index); } inline ::pg_query::Node* VacuumRelation::_internal_add_va_cols() { return _impl_.va_cols_.Add(); } inline ::pg_query::Node* VacuumRelation::add_va_cols() { ::pg_query::Node* _add = _internal_add_va_cols(); // @@protoc_insertion_point(field_add:pg_query.VacuumRelation.va_cols) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& VacuumRelation::va_cols() const { // @@protoc_insertion_point(field_list:pg_query.VacuumRelation.va_cols) return _impl_.va_cols_; } // ------------------------------------------------------------------- // PublicationObjSpec // .pg_query.PublicationObjSpecType pubobjtype = 1 [json_name = "pubobjtype"]; inline void PublicationObjSpec::clear_pubobjtype() { _impl_.pubobjtype_ = 0; } inline ::pg_query::PublicationObjSpecType PublicationObjSpec::_internal_pubobjtype() const { return static_cast< ::pg_query::PublicationObjSpecType >(_impl_.pubobjtype_); } inline ::pg_query::PublicationObjSpecType PublicationObjSpec::pubobjtype() const { // @@protoc_insertion_point(field_get:pg_query.PublicationObjSpec.pubobjtype) return _internal_pubobjtype(); } inline void PublicationObjSpec::_internal_set_pubobjtype(::pg_query::PublicationObjSpecType value) { _impl_.pubobjtype_ = value; } inline void PublicationObjSpec::set_pubobjtype(::pg_query::PublicationObjSpecType value) { _internal_set_pubobjtype(value); // @@protoc_insertion_point(field_set:pg_query.PublicationObjSpec.pubobjtype) } // string name = 2 [json_name = "name"]; inline void PublicationObjSpec::clear_name() { _impl_.name_.ClearToEmpty(); } inline const std::string& PublicationObjSpec::name() const { // @@protoc_insertion_point(field_get:pg_query.PublicationObjSpec.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void PublicationObjSpec::set_name(ArgT0&& arg0, ArgT... args) { _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.PublicationObjSpec.name) } inline std::string* PublicationObjSpec::mutable_name() { 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 { return _impl_.name_.Get(); } inline void PublicationObjSpec::_internal_set_name(const std::string& value) { _impl_.name_.Set(value, GetArenaForAllocation()); } inline std::string* PublicationObjSpec::_internal_mutable_name() { return _impl_.name_.Mutable(GetArenaForAllocation()); } inline std::string* PublicationObjSpec::release_name() { // @@protoc_insertion_point(field_release:pg_query.PublicationObjSpec.name) return _impl_.name_.Release(); } inline void PublicationObjSpec::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } _impl_.name_.SetAllocated(name, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArenaForAllocation()); } #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::_internal_has_pubtable() const { return this != internal_default_instance() && _impl_.pubtable_ != nullptr; } inline bool PublicationObjSpec::has_pubtable() const { return _internal_has_pubtable(); } inline void PublicationObjSpec::clear_pubtable() { if (GetArenaForAllocation() == nullptr && _impl_.pubtable_ != nullptr) { delete _impl_.pubtable_; } _impl_.pubtable_ = nullptr; } inline const ::pg_query::PublicationTable& PublicationObjSpec::_internal_pubtable() const { 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 { // @@protoc_insertion_point(field_get:pg_query.PublicationObjSpec.pubtable) return _internal_pubtable(); } inline void PublicationObjSpec::unsafe_arena_set_allocated_pubtable( ::pg_query::PublicationTable* pubtable) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.pubtable_); } _impl_.pubtable_ = pubtable; if (pubtable) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PublicationObjSpec.pubtable) } inline ::pg_query::PublicationTable* PublicationObjSpec::release_pubtable() { ::pg_query::PublicationTable* temp = _impl_.pubtable_; _impl_.pubtable_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::PublicationTable* PublicationObjSpec::unsafe_arena_release_pubtable() { // @@protoc_insertion_point(field_release:pg_query.PublicationObjSpec.pubtable) ::pg_query::PublicationTable* temp = _impl_.pubtable_; _impl_.pubtable_ = nullptr; return temp; } inline ::pg_query::PublicationTable* PublicationObjSpec::_internal_mutable_pubtable() { if (_impl_.pubtable_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::PublicationTable>(GetArenaForAllocation()); _impl_.pubtable_ = p; } return _impl_.pubtable_; } inline ::pg_query::PublicationTable* PublicationObjSpec::mutable_pubtable() { ::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* pubtable) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.pubtable_; } if (pubtable) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(pubtable); if (message_arena != submessage_arena) { pubtable = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, pubtable, submessage_arena); } } else { } _impl_.pubtable_ = pubtable; // @@protoc_insertion_point(field_set_allocated:pg_query.PublicationObjSpec.pubtable) } // int32 location = 4 [json_name = "location"]; inline void PublicationObjSpec::clear_location() { _impl_.location_ = 0; } inline int32_t PublicationObjSpec::_internal_location() const { return _impl_.location_; } inline int32_t PublicationObjSpec::location() const { // @@protoc_insertion_point(field_get:pg_query.PublicationObjSpec.location) return _internal_location(); } inline void PublicationObjSpec::_internal_set_location(int32_t value) { _impl_.location_ = value; } inline void PublicationObjSpec::set_location(int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.PublicationObjSpec.location) } // ------------------------------------------------------------------- // PublicationTable // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool PublicationTable::_internal_has_relation() const { return this != internal_default_instance() && _impl_.relation_ != nullptr; } inline bool PublicationTable::has_relation() const { return _internal_has_relation(); } inline void PublicationTable::clear_relation() { if (GetArenaForAllocation() == nullptr && _impl_.relation_ != nullptr) { delete _impl_.relation_; } _impl_.relation_ = nullptr; } inline const ::pg_query::RangeVar& PublicationTable::_internal_relation() const { 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 { // @@protoc_insertion_point(field_get:pg_query.PublicationTable.relation) return _internal_relation(); } inline void PublicationTable::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.relation_); } _impl_.relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PublicationTable.relation) } inline ::pg_query::RangeVar* PublicationTable::release_relation() { ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::RangeVar* PublicationTable::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.PublicationTable.relation) ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* PublicationTable::_internal_mutable_relation() { if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArenaForAllocation()); _impl_.relation_ = p; } return _impl_.relation_; } inline ::pg_query::RangeVar* PublicationTable::mutable_relation() { ::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* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } _impl_.relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.PublicationTable.relation) } // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; inline bool PublicationTable::_internal_has_where_clause() const { return this != internal_default_instance() && _impl_.where_clause_ != nullptr; } inline bool PublicationTable::has_where_clause() const { return _internal_has_where_clause(); } inline void PublicationTable::clear_where_clause() { if (GetArenaForAllocation() == nullptr && _impl_.where_clause_ != nullptr) { delete _impl_.where_clause_; } _impl_.where_clause_ = nullptr; } inline const ::pg_query::Node& PublicationTable::_internal_where_clause() const { 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 { // @@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* where_clause) { if (GetArenaForAllocation() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PublicationTable.where_clause) } inline ::pg_query::Node* PublicationTable::release_where_clause() { ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp); temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); if (GetArenaForAllocation() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArenaForAllocation() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return temp; } inline ::pg_query::Node* PublicationTable::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.PublicationTable.where_clause) ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* PublicationTable::_internal_mutable_where_clause() { if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArenaForAllocation()); _impl_.where_clause_ = p; } return _impl_.where_clause_; } inline ::pg_query::Node* PublicationTable::mutable_where_clause() { ::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* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); if (message_arena == nullptr) { delete _impl_.where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } _impl_.where_clause_ = where_clause; // @@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 _impl_.columns_.size(); } inline int PublicationTable::columns_size() const { return _internal_columns_size(); } inline void PublicationTable::clear_columns() { _impl_.columns_.Clear(); } inline ::pg_query::Node* PublicationTable::mutable_columns(int index) { // @@protoc_insertion_point(field_mutable:pg_query.PublicationTable.columns) return _impl_.columns_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* PublicationTable::mutable_columns() { // @@protoc_insertion_point(field_mutable_list:pg_query.PublicationTable.columns) return &_impl_.columns_; } inline const ::pg_query::Node& PublicationTable::_internal_columns(int index) const { return _impl_.columns_.Get(index); } inline const ::pg_query::Node& PublicationTable::columns(int index) const { // @@protoc_insertion_point(field_get:pg_query.PublicationTable.columns) return _internal_columns(index); } inline ::pg_query::Node* PublicationTable::_internal_add_columns() { return _impl_.columns_.Add(); } inline ::pg_query::Node* PublicationTable::add_columns() { ::pg_query::Node* _add = _internal_add_columns(); // @@protoc_insertion_point(field_add:pg_query.PublicationTable.columns) return _add; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& PublicationTable::columns() const { // @@protoc_insertion_point(field_list:pg_query.PublicationTable.columns) return _impl_.columns_; } // ------------------------------------------------------------------- // InlineCodeBlock // string source_text = 1 [json_name = "source_text"]; inline void InlineCodeBlock::clear_source_text() { _impl_.source_text_.ClearToEmpty(); } inline const std::string& InlineCodeBlock::source_text() const { // @@protoc_insertion_point(field_get:pg_query.InlineCodeBlock.source_text) return _internal_source_text(); } template inline PROTOBUF_ALWAYS_INLINE void InlineCodeBlock::set_source_text(ArgT0&& arg0, ArgT... args) { _impl_.source_text_.Set(static_cast(arg0), args..., GetArenaForAllocation()); // @@protoc_insertion_point(field_set:pg_query.InlineCodeBlock.source_text) } inline std::string* InlineCodeBlock::mutable_source_text() { 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 { return _impl_.source_text_.Get(); } inline void InlineCodeBlock::_internal_set_source_text(const std::string& value) { _impl_.source_text_.Set(value, GetArenaForAllocation()); } inline std::string* InlineCodeBlock::_internal_mutable_source_text() { return _impl_.source_text_.Mutable(GetArenaForAllocation()); } inline std::string* InlineCodeBlock::release_source_text() { // @@protoc_insertion_point(field_release:pg_query.InlineCodeBlock.source_text) return _impl_.source_text_.Release(); } inline void InlineCodeBlock::set_allocated_source_text(std::string* source_text) { if (source_text != nullptr) { } else { } _impl_.source_text_.SetAllocated(source_text, GetArenaForAllocation()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.source_text_.IsDefault()) { _impl_.source_text_.Set("", GetArenaForAllocation()); } #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() { _impl_.lang_oid_ = 0u; } inline uint32_t InlineCodeBlock::_internal_lang_oid() const { return _impl_.lang_oid_; } inline uint32_t InlineCodeBlock::lang_oid() const { // @@protoc_insertion_point(field_get:pg_query.InlineCodeBlock.lang_oid) return _internal_lang_oid(); } inline void InlineCodeBlock::_internal_set_lang_oid(uint32_t value) { _impl_.lang_oid_ = value; } inline void InlineCodeBlock::set_lang_oid(uint32_t value) { _internal_set_lang_oid(value); // @@protoc_insertion_point(field_set:pg_query.InlineCodeBlock.lang_oid) } // bool lang_is_trusted = 3 [json_name = "langIsTrusted"]; inline void InlineCodeBlock::clear_lang_is_trusted() { _impl_.lang_is_trusted_ = false; } inline bool InlineCodeBlock::_internal_lang_is_trusted() const { return _impl_.lang_is_trusted_; } inline bool InlineCodeBlock::lang_is_trusted() const { // @@protoc_insertion_point(field_get:pg_query.InlineCodeBlock.lang_is_trusted) return _internal_lang_is_trusted(); } inline void InlineCodeBlock::_internal_set_lang_is_trusted(bool value) { _impl_.lang_is_trusted_ = value; } inline void InlineCodeBlock::set_lang_is_trusted(bool value) { _internal_set_lang_is_trusted(value); // @@protoc_insertion_point(field_set:pg_query.InlineCodeBlock.lang_is_trusted) } // bool atomic = 4 [json_name = "atomic"]; inline void InlineCodeBlock::clear_atomic() { _impl_.atomic_ = false; } inline bool InlineCodeBlock::_internal_atomic() const { return _impl_.atomic_; } inline bool InlineCodeBlock::atomic() const { // @@protoc_insertion_point(field_get:pg_query.InlineCodeBlock.atomic) return _internal_atomic(); } inline void InlineCodeBlock::_internal_set_atomic(bool value) { _impl_.atomic_ = value; } inline void InlineCodeBlock::set_atomic(bool value) { _internal_set_atomic(value); // @@protoc_insertion_point(field_set:pg_query.InlineCodeBlock.atomic) } // ------------------------------------------------------------------- // CallContext // bool atomic = 1 [json_name = "atomic"]; inline void CallContext::clear_atomic() { _impl_.atomic_ = false; } inline bool CallContext::_internal_atomic() const { return _impl_.atomic_; } inline bool CallContext::atomic() const { // @@protoc_insertion_point(field_get:pg_query.CallContext.atomic) return _internal_atomic(); } inline void CallContext::_internal_set_atomic(bool value) { _impl_.atomic_ = value; } inline void CallContext::set_atomic(bool value) { _internal_set_atomic(value); // @@protoc_insertion_point(field_set:pg_query.CallContext.atomic) } // ------------------------------------------------------------------- // ScanToken // int32 start = 1; inline void ScanToken::clear_start() { _impl_.start_ = 0; } inline int32_t ScanToken::_internal_start() const { return _impl_.start_; } inline int32_t ScanToken::start() const { // @@protoc_insertion_point(field_get:pg_query.ScanToken.start) return _internal_start(); } inline void ScanToken::_internal_set_start(int32_t value) { _impl_.start_ = value; } inline void ScanToken::set_start(int32_t value) { _internal_set_start(value); // @@protoc_insertion_point(field_set:pg_query.ScanToken.start) } // int32 end = 2; inline void ScanToken::clear_end() { _impl_.end_ = 0; } inline int32_t ScanToken::_internal_end() const { return _impl_.end_; } inline int32_t ScanToken::end() const { // @@protoc_insertion_point(field_get:pg_query.ScanToken.end) return _internal_end(); } inline void ScanToken::_internal_set_end(int32_t value) { _impl_.end_ = value; } inline void ScanToken::set_end(int32_t value) { _internal_set_end(value); // @@protoc_insertion_point(field_set:pg_query.ScanToken.end) } // .pg_query.Token token = 4; inline void ScanToken::clear_token() { _impl_.token_ = 0; } inline ::pg_query::Token ScanToken::_internal_token() const { return static_cast< ::pg_query::Token >(_impl_.token_); } inline ::pg_query::Token ScanToken::token() const { // @@protoc_insertion_point(field_get:pg_query.ScanToken.token) return _internal_token(); } inline void ScanToken::_internal_set_token(::pg_query::Token value) { _impl_.token_ = value; } inline void ScanToken::set_token(::pg_query::Token value) { _internal_set_token(value); // @@protoc_insertion_point(field_set:pg_query.ScanToken.token) } // .pg_query.KeywordKind keyword_kind = 5; inline void ScanToken::clear_keyword_kind() { _impl_.keyword_kind_ = 0; } inline ::pg_query::KeywordKind ScanToken::_internal_keyword_kind() const { return static_cast< ::pg_query::KeywordKind >(_impl_.keyword_kind_); } inline ::pg_query::KeywordKind ScanToken::keyword_kind() const { // @@protoc_insertion_point(field_get:pg_query.ScanToken.keyword_kind) return _internal_keyword_kind(); } inline void ScanToken::_internal_set_keyword_kind(::pg_query::KeywordKind value) { _impl_.keyword_kind_ = value; } inline void ScanToken::set_keyword_kind(::pg_query::KeywordKind value) { _internal_set_keyword_kind(value); // @@protoc_insertion_point(field_set:pg_query.ScanToken.keyword_kind) } #ifdef __GNUC__ #pragma GCC diagnostic pop #endif // __GNUC__ // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // @@protoc_insertion_point(namespace_scope) } // namespace pg_query PROTOBUF_NAMESPACE_OPEN template <> struct is_proto_enum< ::pg_query::OverridingKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::OverridingKind>() { return ::pg_query::OverridingKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::QuerySource> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::QuerySource>() { return ::pg_query::QuerySource_descriptor(); } template <> struct is_proto_enum< ::pg_query::SortByDir> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SortByDir>() { return ::pg_query::SortByDir_descriptor(); } template <> struct is_proto_enum< ::pg_query::SortByNulls> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SortByNulls>() { return ::pg_query::SortByNulls_descriptor(); } template <> struct is_proto_enum< ::pg_query::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::PartitionRangeDatumKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::PartitionRangeDatumKind>() { return ::pg_query::PartitionRangeDatumKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::RTEKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::RTEKind>() { return ::pg_query::RTEKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::WCOKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::WCOKind>() { return ::pg_query::WCOKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::GroupingSetKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::GroupingSetKind>() { return ::pg_query::GroupingSetKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::CTEMaterialize> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::CTEMaterialize>() { return ::pg_query::CTEMaterialize_descriptor(); } template <> struct is_proto_enum< ::pg_query::SetOperation> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SetOperation>() { return ::pg_query::SetOperation_descriptor(); } template <> struct is_proto_enum< ::pg_query::ObjectType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ObjectType>() { return ::pg_query::ObjectType_descriptor(); } template <> struct is_proto_enum< ::pg_query::DropBehavior> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::DropBehavior>() { return ::pg_query::DropBehavior_descriptor(); } template <> struct is_proto_enum< ::pg_query::AlterTableType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::AlterTableType>() { return ::pg_query::AlterTableType_descriptor(); } template <> struct is_proto_enum< ::pg_query::GrantTargetType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::GrantTargetType>() { return ::pg_query::GrantTargetType_descriptor(); } template <> struct is_proto_enum< ::pg_query::VariableSetKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::VariableSetKind>() { return ::pg_query::VariableSetKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::ConstrType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ConstrType>() { return ::pg_query::ConstrType_descriptor(); } template <> struct is_proto_enum< ::pg_query::ImportForeignSchemaType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ImportForeignSchemaType>() { return ::pg_query::ImportForeignSchemaType_descriptor(); } template <> struct is_proto_enum< ::pg_query::RoleStmtType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::RoleStmtType>() { return ::pg_query::RoleStmtType_descriptor(); } template <> struct is_proto_enum< ::pg_query::FetchDirection> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::FetchDirection>() { return ::pg_query::FetchDirection_descriptor(); } template <> struct is_proto_enum< ::pg_query::FunctionParameterMode> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::FunctionParameterMode>() { return ::pg_query::FunctionParameterMode_descriptor(); } template <> struct is_proto_enum< ::pg_query::TransactionStmtKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::TransactionStmtKind>() { return ::pg_query::TransactionStmtKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::ViewCheckOption> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ViewCheckOption>() { return ::pg_query::ViewCheckOption_descriptor(); } template <> struct is_proto_enum< ::pg_query::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::OnCommitAction> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::OnCommitAction>() { return ::pg_query::OnCommitAction_descriptor(); } template <> struct is_proto_enum< ::pg_query::ParamKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ParamKind>() { return ::pg_query::ParamKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::CoercionContext> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::CoercionContext>() { return ::pg_query::CoercionContext_descriptor(); } template <> struct is_proto_enum< ::pg_query::CoercionForm> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::CoercionForm>() { return ::pg_query::CoercionForm_descriptor(); } template <> struct is_proto_enum< ::pg_query::BoolExprType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::BoolExprType>() { return ::pg_query::BoolExprType_descriptor(); } template <> struct is_proto_enum< ::pg_query::SubLinkType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SubLinkType>() { return ::pg_query::SubLinkType_descriptor(); } template <> struct is_proto_enum< ::pg_query::RowCompareType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::RowCompareType>() { return ::pg_query::RowCompareType_descriptor(); } template <> struct is_proto_enum< ::pg_query::MinMaxOp> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::MinMaxOp>() { return ::pg_query::MinMaxOp_descriptor(); } template <> struct is_proto_enum< ::pg_query::SQLValueFunctionOp> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SQLValueFunctionOp>() { return ::pg_query::SQLValueFunctionOp_descriptor(); } template <> struct is_proto_enum< ::pg_query::XmlExprOp> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::XmlExprOp>() { return ::pg_query::XmlExprOp_descriptor(); } template <> struct is_proto_enum< ::pg_query::XmlOptionType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::XmlOptionType>() { return ::pg_query::XmlOptionType_descriptor(); } template <> struct is_proto_enum< ::pg_query::NullTestType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::NullTestType>() { return ::pg_query::NullTestType_descriptor(); } template <> struct is_proto_enum< ::pg_query::BoolTestType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::BoolTestType>() { return ::pg_query::BoolTestType_descriptor(); } template <> struct is_proto_enum< ::pg_query::CmdType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::CmdType>() { return ::pg_query::CmdType_descriptor(); } template <> struct is_proto_enum< ::pg_query::JoinType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::JoinType>() { return ::pg_query::JoinType_descriptor(); } template <> struct is_proto_enum< ::pg_query::AggStrategy> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::AggStrategy>() { return ::pg_query::AggStrategy_descriptor(); } template <> struct is_proto_enum< ::pg_query::AggSplit> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::AggSplit>() { return ::pg_query::AggSplit_descriptor(); } template <> struct is_proto_enum< ::pg_query::SetOpCmd> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SetOpCmd>() { return ::pg_query::SetOpCmd_descriptor(); } template <> struct is_proto_enum< ::pg_query::SetOpStrategy> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SetOpStrategy>() { return ::pg_query::SetOpStrategy_descriptor(); } template <> struct is_proto_enum< ::pg_query::OnConflictAction> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::OnConflictAction>() { return ::pg_query::OnConflictAction_descriptor(); } template <> struct is_proto_enum< ::pg_query::LimitOption> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::LimitOption>() { return ::pg_query::LimitOption_descriptor(); } template <> struct is_proto_enum< ::pg_query::LockClauseStrength> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::LockClauseStrength>() { return ::pg_query::LockClauseStrength_descriptor(); } template <> struct is_proto_enum< ::pg_query::LockWaitPolicy> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::LockWaitPolicy>() { return ::pg_query::LockWaitPolicy_descriptor(); } template <> struct is_proto_enum< ::pg_query::LockTupleMode> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::LockTupleMode>() { return ::pg_query::LockTupleMode_descriptor(); } template <> struct is_proto_enum< ::pg_query::KeywordKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::KeywordKind>() { return ::pg_query::KeywordKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::Token> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::Token>() { return ::pg_query::Token_descriptor(); } PROTOBUF_NAMESPACE_CLOSE // @@protoc_insertion_point(global_scope) #include #endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_protobuf_2fpg_5fquery_2eproto pg_query-4.2.3/ext/pg_query/include/pg_config_ext.h0000644000004100000410000000050314510636647022457 0ustar www-datawww-data/* 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 pg_query-4.2.3/ext/pg_query/include/common/0000755000004100000410000000000014510636647020765 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/common/relpath.h0000644000004100000410000000507614510636647022605 0ustar www-datawww-data/*------------------------------------------------------------------------- * * relpath.h * Declarations for GetRelationPath() and friends * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/common/relpath.h * *------------------------------------------------------------------------- */ #ifndef RELPATH_H #define RELPATH_H /* * 'pgrminclude ignore' needed here because CppAsString2() does not throw * an error if the symbol is not defined. */ #include "catalog/catversion.h" /* pgrminclude ignore */ /* * Name of major-version-specific tablespace subdirectories */ #define TABLESPACE_VERSION_DIRECTORY "PG_" PG_MAJORVERSION "_" \ CppAsString2(CATALOG_VERSION_NO) /* Characters to allow for an OID in a relation path */ #define OIDCHARS 10 /* max chars printed by %u */ /* * Stuff for fork names. * * The physical storage of a relation consists of one or more forks. * The main fork is always created, but in addition to that there can be * additional forks for storing various metadata. ForkNumber is used when * we need to refer to a specific fork in a relation. */ typedef enum ForkNumber { InvalidForkNumber = -1, MAIN_FORKNUM = 0, FSM_FORKNUM, VISIBILITYMAP_FORKNUM, INIT_FORKNUM /* * NOTE: if you add a new fork, change MAX_FORKNUM and possibly * FORKNAMECHARS below, and update the forkNames array in * src/common/relpath.c */ } ForkNumber; #define MAX_FORKNUM INIT_FORKNUM #define FORKNAMECHARS 4 /* max chars for a fork name */ extern 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 dbNode, Oid spcNode); extern char *GetRelationPath(Oid dbNode, Oid spcNode, Oid relNode, int backendId, ForkNumber forkNumber); /* * Wrapper macros for GetRelationPath. Beware of multiple * evaluation of the RelFileNode or RelFileNodeBackend argument! */ /* First argument is a RelFileNode */ #define relpathbackend(rnode, backend, forknum) \ GetRelationPath((rnode).dbNode, (rnode).spcNode, (rnode).relNode, \ backend, forknum) /* First argument is a RelFileNode */ #define relpathperm(rnode, forknum) \ relpathbackend(rnode, InvalidBackendId, forknum) /* First argument is a RelFileNodeBackend */ #define relpath(rnode, forknum) \ relpathbackend((rnode).node, (rnode).backend, forknum) #endif /* RELPATH_H */ pg_query-4.2.3/ext/pg_query/include/common/unicode_combining_table.h0000644000004100000410000001376414510636647025773 0ustar www-datawww-data/* generated by src/common/unicode/generate-unicode_combining_table.pl, do not edit */ static const struct mbinterval combining[] = { {0x0300, 0x036F}, {0x0483, 0x0489}, {0x0591, 0x05BD}, {0x05BF, 0x05BF}, {0x05C1, 0x05C2}, {0x05C4, 0x05C5}, {0x05C7, 0x05C7}, {0x0610, 0x061A}, {0x064B, 0x065F}, {0x0670, 0x0670}, {0x06D6, 0x06DC}, {0x06DF, 0x06E4}, {0x06E7, 0x06E8}, {0x06EA, 0x06ED}, {0x0711, 0x0711}, {0x0730, 0x074A}, {0x07A6, 0x07B0}, {0x07EB, 0x07F3}, {0x07FD, 0x07FD}, {0x0816, 0x0819}, {0x081B, 0x0823}, {0x0825, 0x0827}, {0x0829, 0x082D}, {0x0859, 0x085B}, {0x0898, 0x089F}, {0x08CA, 0x08E1}, {0x08E3, 0x0902}, {0x093A, 0x093A}, {0x093C, 0x093C}, {0x0941, 0x0948}, {0x094D, 0x094D}, {0x0951, 0x0957}, {0x0962, 0x0963}, {0x0981, 0x0981}, {0x09BC, 0x09BC}, {0x09C1, 0x09C4}, {0x09CD, 0x09CD}, {0x09E2, 0x09E3}, {0x09FE, 0x0A02}, {0x0A3C, 0x0A3C}, {0x0A41, 0x0A51}, {0x0A70, 0x0A71}, {0x0A75, 0x0A75}, {0x0A81, 0x0A82}, {0x0ABC, 0x0ABC}, {0x0AC1, 0x0AC8}, {0x0ACD, 0x0ACD}, {0x0AE2, 0x0AE3}, {0x0AFA, 0x0B01}, {0x0B3C, 0x0B3C}, {0x0B3F, 0x0B3F}, {0x0B41, 0x0B44}, {0x0B4D, 0x0B56}, {0x0B62, 0x0B63}, {0x0B82, 0x0B82}, {0x0BC0, 0x0BC0}, {0x0BCD, 0x0BCD}, {0x0C00, 0x0C00}, {0x0C04, 0x0C04}, {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, 0x0ECD}, {0x0F18, 0x0F19}, {0x0F35, 0x0F35}, {0x0F37, 0x0F37}, {0x0F39, 0x0F39}, {0x0F71, 0x0F7E}, {0x0F80, 0x0F84}, {0x0F86, 0x0F87}, {0x0F8D, 0x0FBC}, {0x0FC6, 0x0FC6}, {0x102D, 0x1030}, {0x1032, 0x1037}, {0x1039, 0x103A}, {0x103D, 0x103E}, {0x1058, 0x1059}, {0x105E, 0x1060}, {0x1071, 0x1074}, {0x1082, 0x1082}, {0x1085, 0x1086}, {0x108D, 0x108D}, {0x109D, 0x109D}, {0x135D, 0x135F}, {0x1712, 0x1714}, {0x1732, 0x1733}, {0x1752, 0x1753}, {0x1772, 0x1773}, {0x17B4, 0x17B5}, {0x17B7, 0x17BD}, {0x17C6, 0x17C6}, {0x17C9, 0x17D3}, {0x17DD, 0x17DD}, {0x180B, 0x180D}, {0x180F, 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}, {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}, {0x101FD, 0x101FD}, {0x102E0, 0x102E0}, {0x10376, 0x1037A}, {0x10A01, 0x10A0F}, {0x10A38, 0x10A3F}, {0x10AE5, 0x10AE6}, {0x10D24, 0x10D27}, {0x10EAB, 0x10EAC}, {0x10F46, 0x10F50}, {0x10F82, 0x10F85}, {0x11001, 0x11001}, {0x11038, 0x11046}, {0x11070, 0x11070}, {0x11073, 0x11074}, {0x1107F, 0x11081}, {0x110B3, 0x110B6}, {0x110B9, 0x110BA}, {0x110C2, 0x110C2}, {0x11100, 0x11102}, {0x11127, 0x1112B}, {0x1112D, 0x11134}, {0x11173, 0x11173}, {0x11180, 0x11181}, {0x111B6, 0x111BE}, {0x111C9, 0x111CC}, {0x111CF, 0x111CF}, {0x1122F, 0x11231}, {0x11234, 0x11234}, {0x11236, 0x11237}, {0x1123E, 0x1123E}, {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}, {0x16AF0, 0x16AF4}, {0x16B30, 0x16B36}, {0x16F4F, 0x16F4F}, {0x16F8F, 0x16F92}, {0x16FE4, 0x16FE4}, {0x1BC9D, 0x1BC9E}, {0x1CF00, 0x1CF46}, {0x1D167, 0x1D169}, {0x1D17B, 0x1D182}, {0x1D185, 0x1D18B}, {0x1D1AA, 0x1D1AD}, {0x1D242, 0x1D244}, {0x1DA00, 0x1DA36}, {0x1DA3B, 0x1DA6C}, {0x1DA75, 0x1DA75}, {0x1DA84, 0x1DA84}, {0x1DA9B, 0x1DAAF}, {0x1E000, 0x1E02A}, {0x1E130, 0x1E136}, {0x1E2AE, 0x1E2AE}, {0x1E2EC, 0x1E2EF}, {0x1E8D0, 0x1E8D6}, {0x1E944, 0x1E94A}, {0xE0100, 0xE01EF}, }; pg_query-4.2.3/ext/pg_query/include/common/string.h0000644000004100000410000000300514510636647022442 0ustar www-datawww-data/* * string.h * string handling helpers * * Portions Copyright (c) 1996-2022, 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 struct StringInfoData; /* avoid including stringinfo.h here */ typedef struct PromptInterruptContext { /* To avoid including here, jmpbuf is declared "void *" */ void *jmpbuf; /* existing longjmp buffer */ volatile bool *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 void pg_clean_ascii(char *str); 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 */ pg_query-4.2.3/ext/pg_query/include/common/kwlookup.h0000644000004100000410000000271214510636647023013 0ustar www-datawww-data/*------------------------------------------------------------------------- * * kwlookup.h * Key word lookup for PostgreSQL * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/common/kwlookup.h * *------------------------------------------------------------------------- */ #ifndef KWLOOKUP_H #define KWLOOKUP_H /* Hash function used by ScanKeywordLookup */ typedef int (*ScanKeywordHashFunc) (const void *key, size_t keylen); /* * This struct contains the data needed by ScanKeywordLookup to perform a * search within a set of keywords. The contents are typically generated by * src/tools/gen_keywordlist.pl from a header containing PG_KEYWORD macros. */ typedef struct ScanKeywordList { const char *kw_string; /* all keywords in order, separated by \0 */ const uint16 *kw_offsets; /* offsets to the start of each keyword */ ScanKeywordHashFunc hash; /* perfect hash function for keywords */ int num_keywords; /* number of keywords */ int max_kw_len; /* length of longest keyword */ } ScanKeywordList; extern int ScanKeywordLookup(const char *text, const ScanKeywordList *keywords); /* Code that wants to retrieve the text of the N'th keyword should use this. */ static inline const char * GetScanKeyword(int n, const ScanKeywordList *keywords) { return keywords->kw_string + keywords->kw_offsets[n]; } #endif /* KWLOOKUP_H */ pg_query-4.2.3/ext/pg_query/include/common/unicode_east_asian_fw_table.h0000644000004100000410000000501114510636647026613 0ustar www-datawww-data/* 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, 0x2FFB}, {0x3000, 0x303E}, {0x3041, 0x3096}, {0x3099, 0x30FF}, {0x3105, 0x312F}, {0x3131, 0x318E}, {0x3190, 0x31E3}, {0x31F0, 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}, {0x1B150, 0x1B152}, {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}, {0x1F6DD, 0x1F6DF}, {0x1F6EB, 0x1F6EC}, {0x1F6F4, 0x1F6FC}, {0x1F7E0, 0x1F7EB}, {0x1F7F0, 0x1F7F0}, {0x1F90C, 0x1F93A}, {0x1F93C, 0x1F945}, {0x1F947, 0x1F9FF}, {0x1FA70, 0x1FA74}, {0x1FA78, 0x1FA7C}, {0x1FA80, 0x1FA86}, {0x1FA90, 0x1FAAC}, {0x1FAB0, 0x1FABA}, {0x1FAC0, 0x1FAC5}, {0x1FAD0, 0x1FAD9}, {0x1FAE0, 0x1FAE7}, {0x1FAF0, 0x1FAF6}, {0x20000, 0x2FFFD}, {0x30000, 0x3FFFD}, }; pg_query-4.2.3/ext/pg_query/include/common/hashfn.h0000644000004100000410000000477614510636647022423 0ustar www-datawww-data/* * Utilities for working with hash values. * * Portions Copyright (c) 2017-2022, PostgreSQL Global Development Group */ #ifndef HASHFN_H #define HASHFN_H /* * Rotate the high 32 bits and the low 32 bits separately. The standard * hash function sometimes rotates the low 32 bits by one bit when * combining elements. We want extended hash functions to be compatible with * that algorithm when the seed is 0, so we can't just do a normal rotation. * This works, though. */ #define ROTATE_HIGH_AND_LOW_32BITS(v) \ ((((v) << 1) & UINT64CONST(0xfffffffefffffffe)) | \ (((v) >> 31) & UINT64CONST(0x100000001))) extern uint32 hash_bytes(const unsigned char *k, int keylen); extern uint64 hash_bytes_extended(const unsigned char *k, int keylen, uint64 seed); extern uint32 hash_bytes_uint32(uint32 k); extern uint64 hash_bytes_uint32_extended(uint32 k, uint64 seed); #ifndef FRONTEND static inline Datum hash_any(const unsigned char *k, int keylen) { return UInt32GetDatum(hash_bytes(k, keylen)); } static inline Datum hash_any_extended(const unsigned char *k, int keylen, uint64 seed) { return UInt64GetDatum(hash_bytes_extended(k, keylen, seed)); } static inline Datum hash_uint32(uint32 k) { return UInt32GetDatum(hash_bytes_uint32(k)); } static inline Datum hash_uint32_extended(uint32 k, uint64 seed) { return UInt64GetDatum(hash_bytes_uint32_extended(k, seed)); } #endif extern uint32 string_hash(const void *key, Size keysize); extern uint32 tag_hash(const void *key, Size keysize); extern uint32 uint32_hash(const void *key, Size keysize); #define oid_hash uint32_hash /* Remove me eventually */ /* * Combine two 32-bit hash values, resulting in another hash value, with * decent bit mixing. * * Similar to boost's hash_combine(). */ static inline uint32 hash_combine(uint32 a, uint32 b) { a ^= b + 0x9e3779b9 + (a << 6) + (a >> 2); return a; } /* * Combine two 64-bit hash values, resulting in another hash value, using the * same kind of technique as hash_combine(). Testing shows that this also * produces good bit mixing. */ static inline uint64 hash_combine64(uint64 a, uint64 b) { /* 0x49a0f4dd15e5a8e3 is 64bit random data */ a ^= b + UINT64CONST(0x49a0f4dd15e5a8e3) + (a << 54) + (a >> 7); return a; } /* * Simple inline murmur hash implementation hashing a 32 bit integer, for * performance. */ static inline uint32 murmurhash32(uint32 data) { uint32 h = data; h ^= h >> 16; h *= 0x85ebca6b; h ^= h >> 13; h *= 0xc2b2ae35; h ^= h >> 16; return h; } #endif /* HASHFN_H */ pg_query-4.2.3/ext/pg_query/include/common/file_perm.h0000644000004100000410000000326414510636647023105 0ustar www-datawww-data/*------------------------------------------------------------------------- * * File and directory permission definitions * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/common/keywords.h0000644000004100000410000000151514510636647023007 0ustar www-datawww-data/*------------------------------------------------------------------------- * * keywords.h * PostgreSQL's list of SQL keywords * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/common/ip.h0000644000004100000410000000165614510636647021556 0ustar www-datawww-data/*------------------------------------------------------------------------- * * ip.h * Definitions for IPv6-aware network access. * * These definitions are used by both frontend and backend code. * * Copyright (c) 2003-2022, PostgreSQL Global Development Group * * src/include/common/ip.h * *------------------------------------------------------------------------- */ #ifndef IP_H #define IP_H #include "getaddrinfo.h" /* pgrminclude ignore */ #include "libpq/pqcomm.h" /* pgrminclude ignore */ extern int pg_getaddrinfo_all(const char *hostname, const char *servname, const struct addrinfo *hintp, struct addrinfo **result); extern void pg_freeaddrinfo_all(int hint_ai_family, struct addrinfo *ai); extern int pg_getnameinfo_all(const struct sockaddr_storage *addr, int salen, char *node, int nodelen, char *service, int servicelen, int flags); #endif /* IP_H */ pg_query-4.2.3/ext/pg_query/include/common/pg_prng.h0000644000004100000410000000412414510636647022573 0ustar www-datawww-data/*------------------------------------------------------------------------- * * Pseudo-Random Number Generator * * Copyright (c) 2021-2022, 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 __thread 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 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 bool pg_prng_bool(pg_prng_state *state); #endif /* PG_PRNG_H */ pg_query-4.2.3/ext/pg_query/include/port.h0000644000004100000410000004206314510636647020637 0ustar www-datawww-data/*------------------------------------------------------------------------- * * port.h * Header for src/port/ compatibility functions. * * Portions Copyright (c) 1996-2022, 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 *filename); extern char *first_dir_separator(const char *filename); extern char *last_dir_separator(const char *filename); extern char *first_path_var_separator(const char *pathlist); extern void join_path_components(char *ret_path, const char *head, const char *tail); extern void canonicalize_path(char *path); extern void make_native_path(char *path); extern void cleanup_path(char *path); extern bool path_contains_parent_reference(const char *path); extern bool path_is_relative_and_below_cwd(const char *path); extern bool path_is_prefix_of_path(const char *path1, const char *path2); extern char *make_absolute_path(const char *path); extern const char *get_progname(const char *argv0); extern void get_share_path(const char *my_exec_path, char *ret_path); extern void get_etc_path(const char *my_exec_path, char *ret_path); extern void get_include_path(const char *my_exec_path, char *ret_path); extern void get_pkginclude_path(const char *my_exec_path, char *ret_path); extern void get_includeserver_path(const char *my_exec_path, char *ret_path); extern void get_lib_path(const char *my_exec_path, char *ret_path); extern void get_pkglib_path(const char *my_exec_path, char *ret_path); extern void get_locale_path(const char *my_exec_path, char *ret_path); extern void get_doc_path(const char *my_exec_path, char *ret_path); extern void get_html_path(const char *my_exec_path, char *ret_path); extern void get_man_path(const char *my_exec_path, char *ret_path); extern bool get_home_path(char *ret_path); extern void get_parent_directory(char *path); /* common/pgfnames.c */ extern char **pgfnames(const char *path); extern void pgfnames_cleanup(char **filenames); #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, char *line, int maxsize); /* Doesn't belong here, but this is used with find_other_exec(), so... */ #define PG_BACKEND_VERSIONSTR "postgres (PostgreSQL) " PG_VERSION "\n" #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); extern int pg_snprintf(char *str, size_t count, const char *fmt,...) pg_attribute_printf(3, 4); extern int pg_vsprintf(char *str, const char *fmt, va_list args); extern int pg_sprintf(char *str, const char *fmt,...) pg_attribute_printf(2, 3); extern int pg_vfprintf(FILE *stream, const char *fmt, va_list args); extern int pg_fprintf(FILE *stream, const char *fmt,...) pg_attribute_printf(2, 3); extern int pg_vprintf(const char *fmt, va_list args); extern int pg_printf(const char *fmt,...) pg_attribute_printf(1, 2); /* * We use __VA_ARGS__ for printf to prevent replacing references to * the "printf" format archetype in format() attribute declarations. * That unfortunately means that taking a function pointer to printf * will not do what we'd wish. (If you need to do that, you must name * pg_printf explicitly.) For printf's sibling functions, use * parameterless macros so that function pointers will work unsurprisingly. */ #define vsnprintf pg_vsnprintf #define snprintf pg_snprintf #define vsprintf pg_vsprintf #define sprintf pg_sprintf #define vfprintf pg_vfprintf #define fprintf pg_fprintf #define vprintf pg_vprintf #define printf(...) pg_printf(__VA_ARGS__) /* This is also provided by snprintf.c */ extern int pg_strfromd(char *str, size_t count, int precision, double value); /* Replace strerror() with our own, somewhat more robust wrapper */ extern char *pg_strerror(int errnum); #define strerror pg_strerror /* Likewise for strerror_r(); note we prefer the GNU API for that */ extern char *pg_strerror_r(int errnum, char *buf, size_t buflen); #define strerror_r pg_strerror_r #define PG_STRERROR_R_BUFLEN 256 /* Recommended buffer size for strerror_r */ /* Wrap strsignal(), or provide our own version if necessary */ extern const char *pg_strsignal(int signum); extern int pclose_check(FILE *stream); /* Global variable holding time zone information. */ #if defined(WIN32) || defined(__CYGWIN__) #define TIMEZONE_GLOBAL _timezone #define TZNAME_GLOBAL _tzname #else #define TIMEZONE_GLOBAL timezone #define TZNAME_GLOBAL tzname #endif #if defined(WIN32) || defined(__CYGWIN__) /* * Win32 doesn't have reliable rename/unlink during concurrent access. */ extern int pgrename(const char *from, const char *to); extern int pgunlink(const char *path); /* Include this first so later includes don't see these defines */ #ifdef _MSC_VER #include #endif #define rename(from, to) pgrename(from, to) #define unlink(path) pgunlink(path) #endif /* defined(WIN32) || defined(__CYGWIN__) */ /* * Win32 also doesn't have symlinks, but we can emulate them with * junction points on newer Win32 versions. * * Cygwin has its own symlinks which work on Win95/98/ME where * junction points don't, so use those instead. We have no way of * knowing what type of system Cygwin binaries will be run on. * Note: Some CYGWIN includes might #define WIN32. */ #if defined(WIN32) && !defined(__CYGWIN__) extern int pgsymlink(const char *oldpath, const char *newpath); extern int pgreadlink(const char *path, char *buf, size_t size); extern bool pgwin32_is_junction(const char *path); #define symlink(oldpath, newpath) pgsymlink(oldpath, newpath) #define readlink(path, buf, size) pgreadlink(path, buf, size) #endif extern bool rmtree(const char *path, bool rmtopdir); #if defined(WIN32) && !defined(__CYGWIN__) /* * open() and fopen() replacements to allow deletion of open files and * passing of other special options. */ #define O_DIRECT 0x80000000 extern 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) /* New versions of MingW have gettimeofday, old mingw and msvc don't */ #ifndef HAVE_GETTIMEOFDAY /* Last parameter not used */ extern int gettimeofday(struct timeval *tp, struct timezone *tzp); #endif #else /* !WIN32 */ /* * Win32 requires a special close for sockets and pipes, while on Unix * close() does them all. */ #define closesocket close #endif /* WIN32 */ /* * On Windows, setvbuf() does not support _IOLBF mode, and interprets that * as _IOFBF. To add insult to injury, setvbuf(file, NULL, _IOFBF, 0) * crashes outright if "parameter validation" is enabled. Therefore, in * places where we'd like to select line-buffered mode, we fall back to * unbuffered mode instead on Windows. Always use PG_IOLBF not _IOLBF * directly in order to implement this behavior. */ #ifndef WIN32 #define PG_IOLBF _IOLBF #else #define PG_IOLBF _IONBF #endif /* * Default "extern" declarations or macro substitutes for library routines. * When necessary, these routines are provided by files in src/port/. */ /* Type to use with fseeko/ftello */ #ifndef WIN32 /* WIN32 is handled in port/win32_port.h */ #define pgoff_t off_t #endif #ifndef HAVE_FLS extern int fls(int mask); #endif #ifndef HAVE_GETPEEREID /* On Windows, Perl might have incompatible definitions of uid_t and gid_t. */ #ifndef PLPERL_HAVE_UID_GID extern int getpeereid(int sock, uid_t *uid, gid_t *gid); #endif #endif /* * Glibc doesn't use the builtin for clang due to a *gcc* bug in a version * newer than the gcc compatibility clang claims to have. This would cause a * *lot* of superfluous function calls, therefore revert when using clang. In * C++ there's issues with libc++ (not libstdc++), so disable as well. */ #if defined(__clang__) && !defined(__cplusplus) /* needs to be separate to not confuse other compilers */ #if __has_builtin(__builtin_isinf) /* need to include before, to avoid getting overwritten */ #include #undef isinf #define isinf __builtin_isinf #endif /* __has_builtin(isinf) */ #endif /* __clang__ && !__cplusplus */ #ifndef HAVE_EXPLICIT_BZERO extern void explicit_bzero(void *buf, size_t len); #endif #ifndef HAVE_STRTOF extern float strtof(const char *nptr, char **endptr); #endif #ifdef HAVE_BUGGY_STRTOF extern float pg_strtof(const char *nptr, char **endptr); #define strtof(a,b) (pg_strtof((a),(b))) #endif #ifndef HAVE_LINK extern int link(const char *src, const char *dst); #endif #ifndef HAVE_MKDTEMP extern char *mkdtemp(char *path); #endif #ifndef HAVE_INET_ATON #include #include extern int inet_aton(const char *cp, struct in_addr *addr); #endif /* * Windows and older Unix don't have pread(2) and pwrite(2). We have * replacement functions, but they have slightly different semantics so we'll * use a name with a pg_ prefix to avoid confusion. */ #ifdef HAVE_PREAD #define pg_pread pread #else extern ssize_t pg_pread(int fd, void *buf, size_t nbyte, off_t offset); #endif #ifdef HAVE_PWRITE #define pg_pwrite pwrite #else extern ssize_t pg_pwrite(int fd, const void *buf, size_t nbyte, off_t offset); #endif /* For pg_pwritev() and pg_preadv(), see port/pg_iovec.h. */ #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 #ifndef HAVE_SETENV extern int setenv(const char *name, const char *value, int overwrite); #endif #ifndef HAVE_UNSETENV extern int unsetenv(const char *name); #endif #ifndef HAVE_DLOPEN extern void *dlopen(const char *file, int mode); extern void *dlsym(void *handle, const char *symbol); extern int dlclose(void *handle); extern char *dlerror(void); #endif /* * In some older systems, the RTLD_NOW flag isn't defined and the mode * argument to dlopen must always be 1. */ #if !HAVE_DECL_RTLD_NOW #define RTLD_NOW 1 #endif /* * The RTLD_GLOBAL flag is wanted if available, but it doesn't exist * everywhere. If it doesn't exist, set it to 0 so it has no effect. */ #if !HAVE_DECL_RTLD_GLOBAL #define RTLD_GLOBAL 0 #endif /* thread.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 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 *base, 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 */ typedef void (*pqsigfunc) (int signo); extern pqsigfunc pqsignal(int signo, pqsigfunc func); /* port/quotes.c */ extern char *escape_single_quotes_ascii(const char *src); /* common/wait_error.c */ extern char *wait_result_to_str(int exit_status); extern bool wait_result_is_signal(int exit_status, int signum); extern bool wait_result_is_any_signal(int exit_status, bool include_command_not_found); #endif /* PG_PORT_H */ pg_query-4.2.3/ext/pg_query/include/kwlist_d.h0000644000004100000410000004044714510636647021477 0ustar www-datawww-data/*------------------------------------------------------------------------- * * kwlist_d.h * List of keywords represented as a ScanKeywordList. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/tools/gen_keywordlist.pl * *------------------------------------------------------------------------- */ #ifndef KWLIST_D_H #define KWLIST_D_H #include "common/kwlookup.h" static const char ScanKeywords_kw_string[] = "abort\0" "absolute\0" "access\0" "action\0" "add\0" "admin\0" "after\0" "aggregate\0" "all\0" "also\0" "alter\0" "always\0" "analyse\0" "analyze\0" "and\0" "any\0" "array\0" "as\0" "asc\0" "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" "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" "enable\0" "encoding\0" "encrypted\0" "end\0" "enum\0" "escape\0" "event\0" "except\0" "exclude\0" "excluding\0" "exclusive\0" "execute\0" "exists\0" "explain\0" "expression\0" "extension\0" "external\0" "extract\0" "false\0" "family\0" "fetch\0" "filter\0" "finalize\0" "first\0" "float\0" "following\0" "for\0" "force\0" "foreign\0" "forward\0" "freeze\0" "from\0" "full\0" "function\0" "functions\0" "generated\0" "global\0" "grant\0" "granted\0" "greatest\0" "group\0" "grouping\0" "groups\0" "handler\0" "having\0" "header\0" "hold\0" "hour\0" "identity\0" "if\0" "ilike\0" "immediate\0" "immutable\0" "implicit\0" "import\0" "in\0" "include\0" "including\0" "increment\0" "index\0" "indexes\0" "inherit\0" "inherits\0" "initially\0" "inline\0" "inner\0" "inout\0" "input\0" "insensitive\0" "insert\0" "instead\0" "int\0" "integer\0" "intersect\0" "interval\0" "into\0" "invoker\0" "is\0" "isnull\0" "isolation\0" "join\0" "key\0" "label\0" "language\0" "large\0" "last\0" "lateral\0" "leading\0" "leakproof\0" "least\0" "left\0" "level\0" "like\0" "limit\0" "listen\0" "load\0" "local\0" "localtime\0" "localtimestamp\0" "location\0" "lock\0" "locked\0" "logged\0" "mapping\0" "match\0" "matched\0" "materialized\0" "maxvalue\0" "merge\0" "method\0" "minute\0" "minvalue\0" "mode\0" "month\0" "move\0" "name\0" "names\0" "national\0" "natural\0" "nchar\0" "new\0" "next\0" "nfc\0" "nfd\0" "nfkc\0" "nfkd\0" "no\0" "none\0" "normalize\0" "normalized\0" "not\0" "nothing\0" "notify\0" "notnull\0" "nowait\0" "null\0" "nullif\0" "nulls\0" "numeric\0" "object\0" "of\0" "off\0" "offset\0" "oids\0" "old\0" "on\0" "only\0" "operator\0" "option\0" "options\0" "or\0" "order\0" "ordinality\0" "others\0" "out\0" "outer\0" "over\0" "overlaps\0" "overlay\0" "overriding\0" "owned\0" "owner\0" "parallel\0" "parameter\0" "parser\0" "partial\0" "partition\0" "passing\0" "password\0" "placing\0" "plans\0" "policy\0" "position\0" "preceding\0" "precision\0" "prepare\0" "prepared\0" "preserve\0" "primary\0" "prior\0" "privileges\0" "procedural\0" "procedure\0" "procedures\0" "program\0" "publication\0" "quote\0" "range\0" "read\0" "real\0" "reassign\0" "recheck\0" "recursive\0" "ref\0" "references\0" "referencing\0" "refresh\0" "reindex\0" "relative\0" "release\0" "rename\0" "repeatable\0" "replace\0" "replica\0" "reset\0" "restart\0" "restrict\0" "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" "schema\0" "schemas\0" "scroll\0" "search\0" "second\0" "security\0" "select\0" "sequence\0" "sequences\0" "serializable\0" "server\0" "session\0" "session_user\0" "set\0" "setof\0" "sets\0" "share\0" "show\0" "similar\0" "simple\0" "skip\0" "smallint\0" "snapshot\0" "some\0" "sql\0" "stable\0" "standalone\0" "start\0" "statement\0" "statistics\0" "stdin\0" "stdout\0" "storage\0" "stored\0" "strict\0" "strip\0" "subscription\0" "substring\0" "support\0" "symmetric\0" "sysid\0" "system\0" "table\0" "tables\0" "tablesample\0" "tablespace\0" "temp\0" "template\0" "temporary\0" "text\0" "then\0" "ties\0" "time\0" "timestamp\0" "to\0" "trailing\0" "transaction\0" "transform\0" "treat\0" "trigger\0" "trim\0" "true\0" "truncate\0" "trusted\0" "type\0" "types\0" "uescape\0" "unbounded\0" "uncommitted\0" "unencrypted\0" "union\0" "unique\0" "unknown\0" "unlisten\0" "unlogged\0" "until\0" "update\0" "user\0" "using\0" "vacuum\0" "valid\0" "validate\0" "validator\0" "value\0" "values\0" "varchar\0" "variadic\0" "varying\0" "verbose\0" "version\0" "view\0" "views\0" "volatile\0" "when\0" "where\0" "whitespace\0" "window\0" "with\0" "within\0" "without\0" "work\0" "wrapper\0" "write\0" "xml\0" "xmlattributes\0" "xmlconcat\0" "xmlelement\0" "xmlexists\0" "xmlforest\0" "xmlnamespaces\0" "xmlparse\0" "xmlpi\0" "xmlroot\0" "xmlserialize\0" "xmltable\0" "year\0" "yes\0" "zone"; static const uint16 ScanKeywords_kw_offsets[] = { 0, 6, 15, 22, 29, 33, 39, 45, 55, 59, 64, 70, 77, 85, 93, 97, 101, 107, 110, 114, 125, 135, 146, 157, 160, 167, 174, 184, 198, 207, 214, 220, 228, 235, 242, 246, 254, 259, 267, 270, 276, 281, 288, 296, 305, 310, 315, 323, 329, 334, 344, 360, 366, 377, 383, 389, 397, 406, 414, 424, 431, 439, 447, 456, 463, 473, 485, 498, 512, 521, 532, 543, 555, 563, 572, 583, 588, 593, 600, 606, 610, 615, 623, 639, 652, 665, 680, 693, 711, 724, 731, 737, 742, 751, 755, 766, 770, 778, 786, 794, 803, 814, 823, 831, 838, 848, 859, 867, 873, 878, 885, 896, 904, 912, 921, 924, 933, 940, 947, 952, 957, 962, 969, 978, 988, 992, 997, 1004, 1010, 1017, 1025, 1035, 1045, 1053, 1060, 1068, 1079, 1089, 1098, 1106, 1112, 1119, 1125, 1132, 1141, 1147, 1153, 1163, 1167, 1173, 1181, 1189, 1196, 1201, 1206, 1215, 1225, 1235, 1242, 1248, 1256, 1265, 1271, 1280, 1287, 1295, 1302, 1309, 1314, 1319, 1328, 1331, 1337, 1347, 1357, 1366, 1373, 1376, 1384, 1394, 1404, 1410, 1418, 1426, 1435, 1445, 1452, 1458, 1464, 1470, 1482, 1489, 1497, 1501, 1509, 1519, 1528, 1533, 1541, 1544, 1551, 1561, 1566, 1570, 1576, 1585, 1591, 1596, 1604, 1612, 1622, 1628, 1633, 1639, 1644, 1650, 1657, 1662, 1668, 1678, 1693, 1702, 1707, 1714, 1721, 1729, 1735, 1743, 1756, 1765, 1771, 1778, 1785, 1794, 1799, 1805, 1810, 1815, 1821, 1830, 1838, 1844, 1848, 1853, 1857, 1861, 1866, 1871, 1874, 1879, 1889, 1900, 1904, 1912, 1919, 1927, 1934, 1939, 1946, 1952, 1960, 1967, 1970, 1974, 1981, 1986, 1990, 1993, 1998, 2007, 2014, 2022, 2025, 2031, 2042, 2049, 2053, 2059, 2064, 2073, 2081, 2092, 2098, 2104, 2113, 2123, 2130, 2138, 2148, 2156, 2165, 2173, 2179, 2186, 2195, 2205, 2215, 2223, 2232, 2241, 2249, 2255, 2266, 2277, 2287, 2298, 2306, 2318, 2324, 2330, 2335, 2340, 2349, 2357, 2367, 2371, 2382, 2394, 2402, 2410, 2419, 2427, 2434, 2445, 2453, 2461, 2467, 2475, 2484, 2491, 2501, 2509, 2516, 2522, 2527, 2536, 2543, 2551, 2560, 2564, 2569, 2574, 2584, 2591, 2599, 2606, 2613, 2620, 2629, 2636, 2645, 2655, 2668, 2675, 2683, 2696, 2700, 2706, 2711, 2717, 2722, 2730, 2737, 2742, 2751, 2760, 2765, 2769, 2776, 2787, 2793, 2803, 2814, 2820, 2827, 2835, 2842, 2849, 2855, 2868, 2878, 2886, 2896, 2902, 2909, 2915, 2922, 2934, 2945, 2950, 2959, 2969, 2974, 2979, 2984, 2989, 2999, 3002, 3011, 3023, 3033, 3039, 3047, 3052, 3057, 3066, 3074, 3079, 3085, 3093, 3103, 3115, 3127, 3133, 3140, 3148, 3157, 3166, 3172, 3179, 3184, 3190, 3197, 3203, 3212, 3222, 3228, 3235, 3243, 3252, 3260, 3268, 3276, 3281, 3287, 3296, 3301, 3307, 3318, 3325, 3330, 3337, 3345, 3350, 3358, 3364, 3368, 3382, 3392, 3403, 3413, 3423, 3437, 3446, 3452, 3460, 3473, 3482, 3487, 3491, }; #define SCANKEYWORDS_NUM_KEYWORDS 460 static int ScanKeywords_hash_func(const void *key, size_t keylen) { static const int16 h[921] = { 207, -201, 0, 223, -255, 28, 32767, -86, 32767, 0, -35, -938, 32767, 32767, -13, 32767, 450, 62, 42, 327, 309, -13, 0, 114, 32767, -230, 135, -12, 424, 191, -114, 32767, 45, 440, 673, 0, 0, 224, 286, 32767, 32767, 16, 5, 0, 32767, 32767, -349, 32767, -43, 32767, 32767, 32767, 32767, 32767, 0, 32767, 32767, 262, 573, -75, 32767, 32767, 1113, 88, 111, 32767, 7, -41, 223, 32767, 478, 275, 32767, 0, 245, 1004, 59, 32767, 322, 256, -130, 32767, 0, 378, 606, 994, -59, 32767, -219, 32767, 489, 32767, -328, 32767, 88, 32767, -228, 0, 1181, -705, 32767, 32767, 149, 32767, 32767, 177, 0, 0, 32767, 32767, 32767, 473, 142, 167, 130, 345, 461, 50, 426, 32767, 32767, -104, 333, 32767, 5, 32767, 32767, 115, 0, 34, 32767, -178, 32767, 32767, 0, 32767, 32767, 32767, 429, 573, 32767, 3, 32767, 0, 237, 32767, 324, 379, 32767, 409, 32767, 32767, 362, -707, 638, 32767, 32767, -18, 23, 127, 32767, 32767, -55, 0, 254, 32767, 0, 32767, -16, 389, 32767, -287, 0, -43, 32767, 0, 32767, 157, 23, 438, 907, 0, 32767, -213, 299, 32767, 0, 32767, 32767, 229, 32767, 32767, 32767, 32767, 186, 32767, 81, 32767, -707, 525, 732, 515, 32767, 32767, 0, 32767, 32767, 126, 32767, 32767, 0, 443, 32767, 102, -148, 188, 393, 32767, 383, 32767, 212, 247, 32767, 389, 54, -258, 0, 6, -32, 32767, 261, -190, 112, 32767, 32767, 32767, 0, 32767, 0, 32767, 32767, 215, 32767, 196, 32767, 445, 32767, 32767, -456, -66, 161, 32767, 617, -484, 230, 32767, 1078, 77, 124, 32767, 32767, -44, 32767, -271, 148, 20, 344, 83, 32767, 32767, 32767, 108, -768, 269, 32767, 32767, -66, 0, 32767, 32767, 524, 433, 32767, 32767, 0, 32767, -564, -138, 0, 4, 463, 354, 32767, 57, 0, 32767, 552, 351, 32767, 32767, 0, 32767, 32767, 32767, 65, 32767, 32767, 285, 158, 32767, 32767, -931, 281, 32767, 32767, 32767, 32767, -357, -115, 32767, 294, 435, 2, 32767, 305, 32767, 35, 434, 32767, 172, 0, 32767, 326, -597, 263, 2, 32767, -111, -79, 32767, 32767, -717, 198, 32767, -715, 407, 32767, 32767, 159, 214, -135, 379, 672, 656, 278, 0, 32767, 32767, 32767, 1109, 830, -173, 32767, 32767, 334, 32767, 32767, 32767, 32767, -447, 270, 61, 281, 32767, 0, 116, 32767, 99, -302, 32767, 32767, 0, 39, 32767, -61, 276, -45, 144, -121, 32767, 0, 198, 325, 72, 294, -174, -218, 73, -489, 32767, -372, 32767, 32767, 360, 345, 283, -453, 32767, 32767, 32767, 283, 806, 0, 32767, 32767, 32767, -65, 0, 32767, 8, 32767, 150, 32767, -251, 132, 0, 32767, 32767, 272, 32767, 15, -417, 889, -77, 0, 0, 16, 32767, 32767, 32767, 94, 32767, 32767, 32767, 32767, 219, 32767, -416, 391, 31, 208, 396, 0, 143, -37, 32767, 252, 0, 32767, 185, 32767, -140, 0, 32767, 456, -258, 32767, 381, 32767, 393, 32767, 32767, 32767, 32767, 1160, 32767, 32767, 384, 201, 197, 32767, 0, 131, 469, 89, 32767, 397, 0, 32767, 211, 32767, 102, 138, 32767, -379, 264, 32767, 386, 6, 32767, 32767, 162, 53, -81, -135, 59, 338, 230, 0, 0, 19, 8, 32767, 785, 423, 0, 257, 301, 523, -398, 421, 0, 32767, 0, 32767, 32767, 0, -758, 0, 562, 32767, 0, 32767, 32767, -213, 32767, 28, 32767, -696, 173, -413, 352, -223, 472, 275, 316, 32767, -186, 323, 32767, -163, 221, 246, 29, 222, -1042, 0, 33, 184, 32767, 32767, 0, 32767, 32767, 805, 32767, 305, 8, 226, 84, 32767, 379, 0, 32767, 134, 82, 32767, 399, 32767, 0, 0, 617, 32767, 32767, 31, 0, 256, 0, 32767, 103, 302, 32767, 208, 32767, -56, 0, -146, 32767, 243, 32767, 0, 32767, 32767, 32767, 32767, 784, 32767, 32767, 0, 197, 32767, 32767, 914, 155, -50, 32767, 32767, 32767, 292, 1122, 32767, 0, 32767, -167, 32767, 139, 113, 113, 32767, 410, 32767, 459, 331, 0, 295, 0, 0, 483, -345, 32767, 32767, -456, 32767, 32767, 0, 32767, 304, 32767, 138, 32767, 520, 326, 412, -237, 453, 32767, 50, 328, 32767, 32767, 0, -116, 0, -754, 0, -149, 32767, 32767, 28, -398, 0, 32767, 32767, -89, 353, -64, 51, 139, 32767, 32767, 66, 32767, 314, 209, 1218, 32767, 32767, 325, 0, 268, 32767, 32767, 446, 32767, 0, 32767, -115, 32767, 32767, 32767, 239, 344, 32767, 5, 32767, 0, -314, 0, -327, 32767, 181, 32767, 107, 393, 0, 32767, 12, 582, 119, 32767, -751, 32767, -578, 0, 349, 0, 32767, 404, 307, 85, 32767, 452, 53, -307, 0, 0, 32767, 32767, 664, 32767, 32767, 32767, -44, 32767, 0, 259, 366, 32767, 0, 0, 32767, -97, -131, 0, 32767, 178, 32767, 779, -231, -73, 0, 0, 145, 487, 223, 0, 0, 86, 32767, 0, 32767, 192, 321, 32767, 32767, 32767, -360, -140, 32767, 32767, 32767, 507, 32767, 247, 416, 32767, 0, 32767, 68, 98, 32767, 0, -268, 0, 32767, 204, 32767, 0, 739, 112, -283, 1180, 193, 32767, 32767, 220, 0, 0, 0, 0, 0, 32767, 0, 32767, 32767, 32767, 32767, 206, -374, 0, 315, 32767, 0, 0, -37, -363, 32767, 32767, 258, 32767, 459, 32767, 128, -1018, 374, 32767, 0, 32767, 0, -602, 32767, 346, 76, 363, 387, 296, -186, 32, 21, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 32767, 0, 165, 32767, 32767, 32767, 0, 790, -10, 32767, 32767, 32767, 32767, 0, 32767, 0, 228, 32767, -993, 32, -878, -154, 32767, 72, 369, 411, 585, 32767, 32767, 124, 32767, -253, -177, 294, 32767, 335, 0, 9, 0, 32767, 442, 0, 0, 32767, 449, 448, 0, 0, 32767, 0, 593, 0, 32767, 242, 432, 0, 32767, 0, 32767, 32767, 1360, 0, 32767, 238 }; 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 * 127 + c; } return h[a % 921] + h[b % 921]; } const ScanKeywordList ScanKeywords = { ScanKeywords_kw_string, ScanKeywords_kw_offsets, ScanKeywords_hash_func, SCANKEYWORDS_NUM_KEYWORDS, 17 }; #endif /* KWLIST_D_H */ pg_query-4.2.3/ext/pg_query/include/fmgr.h0000644000004100000410000010404214510636647020602 0ustar www-datawww-data/*------------------------------------------------------------------------- * * 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-2022, 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 Datum funcname(PG_FUNCTION_ARGS); \ extern PGDLLEXPORT const Pg_finfo_record * CppConcat(pg_finfo_,funcname)(void); \ const Pg_finfo_record * \ CppConcat(pg_finfo_,funcname) (void) \ { \ static const Pg_finfo_record my_finfo = { 1 }; \ return &my_finfo; \ } \ extern int no_such_variable /*------------------------------------------------------------------------- * Support for verifying backend compatibility of loaded modules * * We require dynamically-loaded modules to include the macro call * PG_MODULE_MAGIC; * so that we can check for obvious incompatibility, such as being compiled * for a different major PostgreSQL version. * * To compile with versions of PostgreSQL that do not support this, * you may put an #ifdef/#endif test around it. Note that in a multiple- * source-file module, the macro call should only appear once. * * The specific items included in the magic block are intended to be ones that * are custom-configurable and especially likely to break dynamically loaded * modules if they were compiled with other values. Also, the length field * can be used to detect definition changes. * * Note: we compare magic blocks with memcmp(), so there had better not be * any alignment pad bytes in them. * * Note: when changing the contents of magic blocks, be sure to adjust the * incompatible_module_error() function in dfmgr.c. *------------------------------------------------------------------------- */ /* Definition of the magic block structure */ typedef struct { int len; /* sizeof(this struct) */ int version; /* PostgreSQL major version */ int funcmaxargs; /* FUNC_MAX_ARGS */ int indexmaxkeys; /* INDEX_MAX_KEYS */ int namedatalen; /* NAMEDATALEN */ int float8byval; /* FLOAT8PASSBYVAL */ 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 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 */ pg_query-4.2.3/ext/pg_query/include/rewrite/0000755000004100000410000000000014510636647021156 5ustar www-datawww-datapg_query-4.2.3/ext/pg_query/include/rewrite/rewriteHandler.h0000644000004100000410000000222014510636647024302 0ustar www-datawww-data/*------------------------------------------------------------------------- * * rewriteHandler.h * External interface to query rewriter. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/rewrite/rewriteHandler.h * *------------------------------------------------------------------------- */ #ifndef REWRITEHANDLER_H #define REWRITEHANDLER_H #include "nodes/parsenodes.h" #include "utils/relcache.h" extern List *QueryRewrite(Query *parsetree); extern void AcquireRewriteLocks(Query *parsetree, bool forExecute, bool forUpdatePushedDown); extern Node *build_column_default(Relation rel, int attrno); extern void fill_extraUpdatedCols(RangeTblEntry *target_rte, Relation target_relation); extern Query *get_view_query(Relation view); extern const char *view_query_is_auto_updatable(Query *viewquery, bool check_cols); extern int relation_is_updatable(Oid reloid, List *outer_reloids, bool include_triggers, Bitmapset *include_cols); #endif /* REWRITEHANDLER_H */ pg_query-4.2.3/ext/pg_query/include/rewrite/rewriteManip.h0000644000004100000410000000603414510636647024000 0ustar www-datawww-data/*------------------------------------------------------------------------- * * rewriteManip.h * Querytree manipulation subroutines for query rewriter. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/rewrite/rewriteManip.h * *------------------------------------------------------------------------- */ #ifndef REWRITEMANIP_H #define REWRITEMANIP_H #include "nodes/parsenodes.h" struct AttrMap; /* avoid including attmap.h here */ typedef struct replace_rte_variables_context replace_rte_variables_context; typedef Node *(*replace_rte_variables_callback) (Var *var, replace_rte_variables_context *context); struct replace_rte_variables_context { replace_rte_variables_callback callback; /* callback function */ void *callback_arg; /* context data for callback function */ int target_varno; /* RTE index to search for */ int sublevels_up; /* (current) nesting depth */ bool inserted_sublink; /* have we inserted a SubLink? */ }; typedef enum ReplaceVarsNoMatchOption { REPLACEVARS_REPORT_ERROR, /* throw error if no match */ REPLACEVARS_CHANGE_VARNO, /* change the Var's varno, nothing else */ REPLACEVARS_SUBSTITUTE_NULL /* replace with a NULL Const */ } ReplaceVarsNoMatchOption; extern void OffsetVarNodes(Node *node, int offset, int sublevels_up); extern void ChangeVarNodes(Node *node, int old_varno, int new_varno, int sublevels_up); extern void IncrementVarSublevelsUp(Node *node, int delta_sublevels_up, int min_sublevels_up); extern void IncrementVarSublevelsUp_rtable(List *rtable, int delta_sublevels_up, int min_sublevels_up); extern bool rangeTableEntry_used(Node *node, int rt_index, int sublevels_up); extern Query *getInsertSelectQuery(Query *parsetree, Query ***subquery_ptr); extern void AddQual(Query *parsetree, Node *qual); extern void AddInvertedQual(Query *parsetree, Node *qual); extern bool contain_aggs_of_level(Node *node, int levelsup); extern int locate_agg_of_level(Node *node, int levelsup); extern bool contain_windowfuncs(Node *node); extern int locate_windowfunc(Node *node); extern bool checkExprHasSubLink(Node *node); extern Node *replace_rte_variables(Node *node, int target_varno, int sublevels_up, replace_rte_variables_callback callback, void *callback_arg, bool *outer_hasSubLinks); extern Node *replace_rte_variables_mutator(Node *node, replace_rte_variables_context *context); extern Node *map_variable_attnos(Node *node, int target_varno, int sublevels_up, const struct AttrMap *attno_map, Oid to_rowtype, bool *found_whole_row); extern Node *ReplaceVarsFromTargetList(Node *node, int target_varno, int sublevels_up, RangeTblEntry *target_rte, List *targetlist, ReplaceVarsNoMatchOption nomatch_option, int nomatch_varno, bool *outer_hasSubLinks); #endif /* REWRITEMANIP_H */ pg_query-4.2.3/ext/pg_query/include/rewrite/rewriteSupport.h0000644000004100000410000000141614510636647024407 0ustar www-datawww-data/*------------------------------------------------------------------------- * * rewriteSupport.h * * * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/include/rewrite/prs2lock.h0000644000004100000410000000204014510636647023062 0ustar www-datawww-data/*------------------------------------------------------------------------- * * prs2lock.h * data structures for POSTGRES Rule System II (rewrite rules only) * * Portions Copyright (c) 1996-2022, 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 */ pg_query-4.2.3/ext/pg_query/src_backend_parser_parser.c0000644000004100000410000003275014510636647023413 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/backend/parser/parser.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "mb/pg_wchar.h" #include "parser/gramparse.h" #include "parser/parser.h" #include "parser/scansup.h" static bool check_uescapechar(unsigned char escape); static char *str_udeescape(const char *str, char escape, int position, core_yyscan_t yyscanner); /* * raw_parser * Given a query in string form, do lexical and grammatical analysis. * * Returns a list of raw (un-analyzed) parse trees. The 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[] = { 0, /* RAW_PARSE_DEFAULT */ MODE_TYPE_NAME, /* RAW_PARSE_TYPE_NAME */ MODE_PLPGSQL_EXPR, /* RAW_PARSE_PLPGSQL_EXPR */ MODE_PLPGSQL_ASSIGN1, /* RAW_PARSE_PLPGSQL_ASSIGN1 */ MODE_PLPGSQL_ASSIGN2, /* RAW_PARSE_PLPGSQL_ASSIGN2 */ MODE_PLPGSQL_ASSIGN3 /* RAW_PARSE_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 NOT: cur_token_length = 3; break; case NULLS_P: cur_token_length = 5; break; case WITH: cur_token_length = 4; break; case UIDENT: case USCONST: cur_token_length = strlen(yyextra->core_yy_extra.scanbuf + *llocp); break; case SQL_COMMENT: case C_COMMENT: return base_yylex(lvalp, llocp, yyscanner); default: return cur_token; } /* * Identify end+1 of current token. core_yylex() has temporarily stored a * '\0' here, and will undo that when we call it again. We need to redo * it to fully revert the lookahead call for error reporting purposes. */ yyextra->lookahead_end = yyextra->core_yy_extra.scanbuf + *llocp + cur_token_length; Assert(*(yyextra->lookahead_end) == '\0'); /* * Save and restore *llocp around the call. It might look like we could * avoid this by just passing &lookahead_yylloc to core_yylex(), but that * does not work because flex actually holds onto the last-passed pointer * internally, and will use that for error reporting. We need any error * reports to point to the current token, not the next one. */ cur_yylloc = *llocp; /* Get next token, saving outputs into lookahead variables */ next_token = core_yylex(&(yyextra->lookahead_yylval), llocp, yyscanner); yyextra->lookahead_token = next_token; yyextra->lookahead_yylloc = *llocp; *llocp = cur_yylloc; /* Now revert the un-truncation of the current token */ yyextra->lookahead_hold_char = *(yyextra->lookahead_end); *(yyextra->lookahead_end) = '\0'; yyextra->have_lookahead = true; /* Replace cur_token if needed, based on lookahead */ switch (cur_token) { case NOT: /* Replace NOT by NOT_LA if it's followed by BETWEEN, IN, etc */ switch (next_token) { case BETWEEN: case IN_P: case LIKE: case ILIKE: case SIMILAR: cur_token = NOT_LA; break; } break; case NULLS_P: /* Replace NULLS_P by NULLS_LA if it's followed by FIRST or LAST */ switch (next_token) { case FIRST_P: case LAST_P: cur_token = NULLS_LA; break; } break; case WITH: /* Replace WITH by WITH_LA if it's followed by TIME or ORDINALITY */ switch (next_token) { case TIME: case ORDINALITY: cur_token = WITH_LA; break; } break; case UIDENT: case USCONST: /* Look ahead for UESCAPE */ if (next_token == UESCAPE) { /* Yup, so get third token, which had better be SCONST */ const char *escstr; /* Again save and restore *llocp */ cur_yylloc = *llocp; /* Un-truncate current token so errors point to third token */ *(yyextra->lookahead_end) = yyextra->lookahead_hold_char; /* Get third token */ next_token = core_yylex(&(yyextra->lookahead_yylval), llocp, yyscanner); /* If we throw error here, it will point to third token */ if (next_token != SCONST) scanner_yyerror("UESCAPE must be followed by a simple string literal", yyscanner); escstr = yyextra->lookahead_yylval.str; if (strlen(escstr) != 1 || !check_uescapechar(escstr[0])) scanner_yyerror("invalid Unicode escape character", yyscanner); /* Now restore *llocp; errors will point to first token */ *llocp = cur_yylloc; /* Apply Unicode conversion */ lvalp->core_yystype.str = str_udeescape(lvalp->core_yystype.str, escstr[0], *llocp, yyscanner); /* * We don't need to revert the un-truncation of UESCAPE. What * we do want to do is clear have_lookahead, thereby consuming * all three tokens. */ yyextra->have_lookahead = false; } else { /* No UESCAPE, so convert using default escape character */ lvalp->core_yystype.str = str_udeescape(lvalp->core_yystype.str, '\\', *llocp, yyscanner); } if (cur_token == UIDENT) { /* It's an identifier, so truncate as appropriate */ truncate_identifier(lvalp->core_yystype.str, strlen(lvalp->core_yystype.str), true); cur_token = IDENT; } else if (cur_token == USCONST) { cur_token = SCONST; } break; } return cur_token; } /* convert hex digit (caller should have verified that) to value */ static unsigned int hexval(unsigned char c) { if (c >= '0' && c <= '9') return c - '0'; if (c >= 'a' && c <= 'f') return c - 'a' + 0xA; if (c >= 'A' && c <= 'F') return c - 'A' + 0xA; elog(ERROR, "invalid hexadecimal digit"); return 0; /* not reached */ } /* is Unicode code point acceptable? */ static void check_unicode_value(pg_wchar c) { if (!is_valid_unicode_codepoint(c)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid Unicode escape value"))); } /* is 'escape' acceptable as Unicode escape character (UESCAPE syntax) ? */ static bool check_uescapechar(unsigned char escape) { if (isxdigit(escape) || escape == '+' || escape == '\'' || escape == '"' || scanner_isspace(escape)) return false; else return true; } /* * Process Unicode escapes in "str", producing a palloc'd plain string * * escape: the escape character to use * position: start position of U&'' or U&"" string token * yyscanner: context information needed for error reports */ static char * str_udeescape(const char *str, char escape, int position, core_yyscan_t yyscanner) { const char *in; char *new, *out; size_t new_len; pg_wchar pair_first = 0; ScannerCallbackState scbstate; /* * Guesstimate that result will be no longer than input, but allow enough * padding for Unicode conversion. */ new_len = strlen(str) + MAX_UNICODE_EQUIVALENT_STRING + 1; new = palloc(new_len); in = str; out = new; while (*in) { /* Enlarge string if needed */ size_t out_dist = out - new; if (out_dist > new_len - (MAX_UNICODE_EQUIVALENT_STRING + 1)) { new_len *= 2; new = repalloc(new, new_len); out = new + out_dist; } if (in[0] == escape) { /* * Any errors reported while processing this escape sequence will * have an error cursor pointing at the escape. */ setup_scanner_errposition_callback(&scbstate, yyscanner, in - str + position + 3); /* 3 for U&" */ if (in[1] == escape) { if (pair_first) goto invalid_pair; *out++ = escape; in += 2; } else if (isxdigit((unsigned char) in[1]) && isxdigit((unsigned char) in[2]) && isxdigit((unsigned char) in[3]) && isxdigit((unsigned char) in[4])) { pg_wchar unicode; unicode = (hexval(in[1]) << 12) + (hexval(in[2]) << 8) + (hexval(in[3]) << 4) + hexval(in[4]); check_unicode_value(unicode); if (pair_first) { if (is_utf16_surrogate_second(unicode)) { unicode = surrogate_pair_to_codepoint(pair_first, unicode); pair_first = 0; } else goto invalid_pair; } else if (is_utf16_surrogate_second(unicode)) goto invalid_pair; if (is_utf16_surrogate_first(unicode)) pair_first = unicode; else { pg_unicode_to_server(unicode, (unsigned char *) out); out += strlen(out); } in += 5; } else if (in[1] == '+' && isxdigit((unsigned char) in[2]) && isxdigit((unsigned char) in[3]) && isxdigit((unsigned char) in[4]) && isxdigit((unsigned char) in[5]) && isxdigit((unsigned char) in[6]) && isxdigit((unsigned char) in[7])) { pg_wchar unicode; unicode = (hexval(in[2]) << 20) + (hexval(in[3]) << 16) + (hexval(in[4]) << 12) + (hexval(in[5]) << 8) + (hexval(in[6]) << 4) + hexval(in[7]); check_unicode_value(unicode); if (pair_first) { if (is_utf16_surrogate_second(unicode)) { unicode = surrogate_pair_to_codepoint(pair_first, unicode); pair_first = 0; } else goto invalid_pair; } else if (is_utf16_surrogate_second(unicode)) goto invalid_pair; if (is_utf16_surrogate_first(unicode)) pair_first = unicode; else { pg_unicode_to_server(unicode, (unsigned char *) out); out += strlen(out); } in += 8; } else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid Unicode escape"), errhint("Unicode escapes must be \\XXXX or \\+XXXXXX."))); cancel_scanner_errposition_callback(&scbstate); } else { if (pair_first) goto invalid_pair; *out++ = *in++; } } /* unfinished surrogate pair? */ if (pair_first) goto invalid_pair; *out = '\0'; return new; /* * We might get here with the error callback active, or not. Call * scanner_errposition to make sure an error cursor appears; if the * callback is active, this is duplicative but harmless. */ invalid_pair: ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid Unicode surrogate pair"), scanner_errposition(in - str + position + 3, /* 3 for U&" */ yyscanner))); return NULL; /* keep compiler quiet */ } pg_query-4.2.3/ext/pg_query/src_backend_utils_adt_datum.c0000644000004100000410000002563414510636647023730 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - datumCopy * - datumGetSize * - datumIsEqual *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * datum.c * POSTGRES Datum (abstract data type) manipulation routines. * * Portions Copyright (c) 1996-2022, 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/builtins.h" #include "utils/datum.h" #include "utils/expandeddatum.h" /*------------------------------------------------------------------------- * datumGetSize * * Find the "real" size of a datum, given the datum value, * whether it is a "by value", and the declared type length. * (For TOAST pointer datums, this is the size of the pointer datum.) * * This is essentially an out-of-line version of the att_addlength_datum() * macro in access/tupmacs.h. We do a tad more error checking though. *------------------------------------------------------------------------- */ Size datumGetSize(Datum value, bool typByVal, int typLen) { Size size; if (typByVal) { /* Pass-by-value types are always fixed-length */ Assert(typLen > 0 && typLen <= sizeof(Datum)); size = (Size) typLen; } else { if (typLen > 0) { /* Fixed-length pass-by-ref type */ size = (Size) typLen; } else if (typLen == -1) { /* It is a varlena datatype */ struct varlena *s = (struct varlena *) DatumGetPointer(value); if (!PointerIsValid(s)) ereport(ERROR, (errcode(ERRCODE_DATA_EXCEPTION), errmsg("invalid Datum pointer"))); size = (Size) VARSIZE_ANY(s); } else if (typLen == -2) { /* It is a cstring datatype */ char *s = (char *) DatumGetPointer(value); if (!PointerIsValid(s)) ereport(ERROR, (errcode(ERRCODE_DATA_EXCEPTION), errmsg("invalid Datum pointer"))); size = (Size) (strlen(s) + 1); } else { elog(ERROR, "invalid typLen: %d", typLen); size = 0; /* keep compiler quiet */ } } return size; } /*------------------------------------------------------------------------- * datumCopy * * Make a copy of a non-NULL datum. * * If the datatype is pass-by-reference, memory is obtained with palloc(). * * If the value is a reference to an expanded object, we flatten into memory * obtained with palloc(). We need to copy because one of the main uses of * this function is to copy a datum out of a transient memory context that's * about to be destroyed, and the expanded object is probably in a child * context that will also go away. Moreover, many callers assume that the * result is a single pfree-able chunk. *------------------------------------------------------------------------- */ Datum datumCopy(Datum value, bool typByVal, int typLen) { Datum res; if (typByVal) res = value; else if (typLen == -1) { /* It is a varlena datatype */ struct varlena *vl = (struct varlena *) DatumGetPointer(value); if (VARATT_IS_EXTERNAL_EXPANDED(vl)) { /* Flatten into the caller's memory context */ ExpandedObjectHeader *eoh = DatumGetEOHP(value); Size resultsize; char *resultptr; resultsize = EOH_get_flat_size(eoh); resultptr = (char *) palloc(resultsize); EOH_flatten_into(eoh, (void *) resultptr, resultsize); res = PointerGetDatum(resultptr); } else { /* Otherwise, just copy the varlena datum verbatim */ Size realSize; char *resultptr; realSize = (Size) VARSIZE_ANY(vl); resultptr = (char *) palloc(realSize); memcpy(resultptr, vl, realSize); res = PointerGetDatum(resultptr); } } else { /* Pass by reference, but not varlena, so not toasted */ Size realSize; char *resultptr; realSize = datumGetSize(value, typByVal, typLen); resultptr = (char *) palloc(realSize); memcpy(resultptr, DatumGetPointer(value), realSize); res = PointerGetDatum(resultptr); } return res; } /*------------------------------------------------------------------------- * datumTransfer * * Transfer a non-NULL datum into the current memory context. * * This is equivalent to datumCopy() except when the datum is a read-write * pointer to an expanded object. In that case we merely reparent the object * into the current context, and return its standard R/W pointer (in case the * given one is a transient pointer of shorter lifespan). *------------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * datumIsEqual * * Return true if two datums are equal, false otherwise * * NOTE: XXX! * We just compare the bytes of the two values, one by one. * This routine will return false if there are 2 different * representations of the same value (something along the lines * of say the representation of zero in one's complement arithmetic). * Also, it will probably not give the answer you want if either * datum has been "toasted". * * Do not try to make this any smarter than it currently is with respect * to "toasted" datums, because some of the callers could be working in the * context of an aborted transaction. *------------------------------------------------------------------------- */ bool datumIsEqual(Datum value1, Datum value2, bool typByVal, int typLen) { bool res; if (typByVal) { /* * just compare the two datums. NOTE: just comparing "len" bytes will * not do the work, because we do not know how these bytes are aligned * inside the "Datum". We assume instead that any given datatype is * consistent about how it fills extraneous bits in the Datum. */ res = (value1 == value2); } else { Size size1, size2; char *s1, *s2; /* * Compare the bytes pointed by the pointers stored in the datums. */ size1 = datumGetSize(value1, typByVal, typLen); size2 = datumGetSize(value2, typByVal, typLen); if (size1 != size2) return false; s1 = (char *) DatumGetPointer(value1); s2 = (char *) DatumGetPointer(value2); res = (memcmp(s1, s2, size1) == 0); } return res; } /*------------------------------------------------------------------------- * datum_image_eq * * Compares two datums for identical contents, based on byte images. Return * true if the two datums are equal, false otherwise. *------------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * 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. *------------------------------------------------------------------------- */ pg_query-4.2.3/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c0000644000004100000410000004434414510636647024013 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/pl/plpgsql/src/pl_funcs.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "plpgsql.h" #include "utils/memutils.h" /* ---------- * Local variables for namespace handling * * The namespace structure actually forms a tree, of which only one linear * list or "chain" (from the youngest item to the root) is accessible from * any one plpgsql statement. During initial parsing of a function, ns_top * points to the youngest item accessible from the block currently being * parsed. We store the entire tree, however, since at runtime we will need * to access the chain that's relevant to any one statement. * * Block boundaries in the namespace chain are marked by PLPGSQL_NSTYPE_LABEL * items. * ---------- */ static __thread PLpgSQL_nsitem *ns_top = NULL; /* ---------- * plpgsql_ns_init Initialize namespace processing for a new function * ---------- */ void plpgsql_ns_init(void) { ns_top = NULL; } /* ---------- * plpgsql_ns_push Create a new namespace level * ---------- */ void plpgsql_ns_push(const char *label, PLpgSQL_label_type label_type) { if (label == NULL) label = ""; plpgsql_ns_additem(PLPGSQL_NSTYPE_LABEL, (int) label_type, label); } /* ---------- * plpgsql_ns_pop Pop entries back to (and including) the last label * ---------- */ void plpgsql_ns_pop(void) { Assert(ns_top != NULL); while (ns_top->itemtype != PLPGSQL_NSTYPE_LABEL) ns_top = ns_top->prev; ns_top = ns_top->prev; } /* ---------- * plpgsql_ns_top Fetch the current namespace chain end * ---------- */ PLpgSQL_nsitem * plpgsql_ns_top(void) { return ns_top; } /* ---------- * plpgsql_ns_additem Add an item to the current namespace chain * ---------- */ void plpgsql_ns_additem(PLpgSQL_nsitem_type itemtype, int itemno, const char *name) { PLpgSQL_nsitem *nse; Assert(name != NULL); /* first item added must be a label */ Assert(ns_top != NULL || itemtype == PLPGSQL_NSTYPE_LABEL); nse = palloc(offsetof(PLpgSQL_nsitem, name) + strlen(name) + 1); nse->itemtype = itemtype; nse->itemno = itemno; nse->prev = ns_top; strcpy(nse->name, name); ns_top = nse; } /* ---------- * plpgsql_ns_lookup Lookup an identifier in the given namespace chain * * Note that this only searches for variables, not labels. * * If localmode is true, only the topmost block level is searched. * * name1 must be non-NULL. Pass NULL for name2 and/or name3 if parsing a name * with fewer than three components. * * If names_used isn't NULL, *names_used receives the number of names * matched: 0 if no match, 1 if name1 matched an unqualified variable name, * 2 if name1 and name2 matched a block label + variable name. * * Note that name3 is never directly matched to anything. However, if it * isn't NULL, we will disregard qualified matches to scalar variables. * Similarly, if name2 isn't NULL, we disregard unqualified matches to * scalar variables. * ---------- */ PLpgSQL_nsitem * plpgsql_ns_lookup(PLpgSQL_nsitem *ns_cur, bool localmode, const char *name1, const char *name2, const char *name3, int *names_used) { /* Outer loop iterates once per block level in the namespace chain */ while (ns_cur != NULL) { PLpgSQL_nsitem *nsitem; /* Check this level for unqualified match to variable name */ for (nsitem = ns_cur; nsitem->itemtype != PLPGSQL_NSTYPE_LABEL; nsitem = nsitem->prev) { if (strcmp(nsitem->name, name1) == 0) { if (name2 == NULL || nsitem->itemtype != PLPGSQL_NSTYPE_VAR) { if (names_used) *names_used = 1; return nsitem; } } } /* Check this level for qualified match to variable name */ if (name2 != NULL && strcmp(nsitem->name, name1) == 0) { for (nsitem = ns_cur; nsitem->itemtype != PLPGSQL_NSTYPE_LABEL; nsitem = nsitem->prev) { if (strcmp(nsitem->name, name2) == 0) { if (name3 == NULL || nsitem->itemtype != PLPGSQL_NSTYPE_VAR) { if (names_used) *names_used = 2; return nsitem; } } } } if (localmode) break; /* do not look into upper levels */ ns_cur = nsitem->prev; } /* This is just to suppress possibly-uninitialized-variable warnings */ if (names_used) *names_used = 0; return NULL; /* No match found */ } /* ---------- * plpgsql_ns_lookup_label Lookup a label in the given namespace chain * ---------- */ PLpgSQL_nsitem * plpgsql_ns_lookup_label(PLpgSQL_nsitem *ns_cur, const char *name) { while (ns_cur != NULL) { if (ns_cur->itemtype == PLPGSQL_NSTYPE_LABEL && strcmp(ns_cur->name, name) == 0) return ns_cur; ns_cur = ns_cur->prev; } return NULL; /* label not found */ } /* ---------- * plpgsql_ns_find_nearest_loop Find innermost loop label in namespace chain * ---------- */ PLpgSQL_nsitem * plpgsql_ns_find_nearest_loop(PLpgSQL_nsitem *ns_cur) { while (ns_cur != NULL) { if (ns_cur->itemtype == PLPGSQL_NSTYPE_LABEL && ns_cur->itemno == PLPGSQL_LABEL_LOOP) return ns_cur; ns_cur = ns_cur->prev; } return NULL; /* no loop found */ } /* * Statement type as a string, for use in error messages etc. */ /* * GET DIAGNOSTICS item name as a string, for use in error messages etc. */ const char * plpgsql_getdiag_kindname(PLpgSQL_getdiag_kind kind) { switch (kind) { case PLPGSQL_GETDIAG_ROW_COUNT: return "ROW_COUNT"; case PLPGSQL_GETDIAG_CONTEXT: return "PG_CONTEXT"; case PLPGSQL_GETDIAG_ERROR_CONTEXT: return "PG_EXCEPTION_CONTEXT"; case PLPGSQL_GETDIAG_ERROR_DETAIL: return "PG_EXCEPTION_DETAIL"; case PLPGSQL_GETDIAG_ERROR_HINT: return "PG_EXCEPTION_HINT"; case PLPGSQL_GETDIAG_RETURNED_SQLSTATE: return "RETURNED_SQLSTATE"; case PLPGSQL_GETDIAG_COLUMN_NAME: return "COLUMN_NAME"; case PLPGSQL_GETDIAG_CONSTRAINT_NAME: return "CONSTRAINT_NAME"; case PLPGSQL_GETDIAG_DATATYPE_NAME: return "PG_DATATYPE_NAME"; case PLPGSQL_GETDIAG_MESSAGE_TEXT: return "MESSAGE_TEXT"; case PLPGSQL_GETDIAG_TABLE_NAME: return "TABLE_NAME"; case PLPGSQL_GETDIAG_SCHEMA_NAME: return "SCHEMA_NAME"; } return "unknown"; } /********************************************************************** * Release memory when a PL/pgSQL function is no longer needed * * The code for recursing through the function tree is really only * needed to locate PLpgSQL_expr nodes, which may contain references * to saved SPI Plans that must be freed. The function tree itself, * along with subsidiary data, is freed in one swoop by freeing the * function's permanent memory context. **********************************************************************/ static void free_stmt(PLpgSQL_stmt *stmt); static void free_block(PLpgSQL_stmt_block *block); static void free_assign(PLpgSQL_stmt_assign *stmt); static void free_if(PLpgSQL_stmt_if *stmt); static void free_case(PLpgSQL_stmt_case *stmt); static void free_loop(PLpgSQL_stmt_loop *stmt); static void free_while(PLpgSQL_stmt_while *stmt); static void free_fori(PLpgSQL_stmt_fori *stmt); static void free_fors(PLpgSQL_stmt_fors *stmt); static void free_forc(PLpgSQL_stmt_forc *stmt); static void free_foreach_a(PLpgSQL_stmt_foreach_a *stmt); static void free_exit(PLpgSQL_stmt_exit *stmt); static void free_return(PLpgSQL_stmt_return *stmt); static void free_return_next(PLpgSQL_stmt_return_next *stmt); static void free_return_query(PLpgSQL_stmt_return_query *stmt); static void free_raise(PLpgSQL_stmt_raise *stmt); static void free_assert(PLpgSQL_stmt_assert *stmt); static void free_execsql(PLpgSQL_stmt_execsql *stmt); static void free_dynexecute(PLpgSQL_stmt_dynexecute *stmt); static void free_dynfors(PLpgSQL_stmt_dynfors *stmt); static void free_getdiag(PLpgSQL_stmt_getdiag *stmt); static void free_open(PLpgSQL_stmt_open *stmt); static void free_fetch(PLpgSQL_stmt_fetch *stmt); static void free_close(PLpgSQL_stmt_close *stmt); static void free_perform(PLpgSQL_stmt_perform *stmt); static void free_call(PLpgSQL_stmt_call *stmt); static void free_commit(PLpgSQL_stmt_commit *stmt); static void free_rollback(PLpgSQL_stmt_rollback *stmt); static void free_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); pg_query-4.2.3/ext/pg_query/src_common_kwlist_d.h0000644000004100000410000004110514510636647022263 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/tools/gen_keywordlist.pl * *------------------------------------------------------------------------- */ #ifndef KWLIST_D_H #define KWLIST_D_H #include "common/kwlookup.h" static const char ScanKeywords_kw_string[] = "abort\0" "absolute\0" "access\0" "action\0" "add\0" "admin\0" "after\0" "aggregate\0" "all\0" "also\0" "alter\0" "always\0" "analyse\0" "analyze\0" "and\0" "any\0" "array\0" "as\0" "asc\0" "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" "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" "enable\0" "encoding\0" "encrypted\0" "end\0" "enum\0" "escape\0" "event\0" "except\0" "exclude\0" "excluding\0" "exclusive\0" "execute\0" "exists\0" "explain\0" "expression\0" "extension\0" "external\0" "extract\0" "false\0" "family\0" "fetch\0" "filter\0" "finalize\0" "first\0" "float\0" "following\0" "for\0" "force\0" "foreign\0" "forward\0" "freeze\0" "from\0" "full\0" "function\0" "functions\0" "generated\0" "global\0" "grant\0" "granted\0" "greatest\0" "group\0" "grouping\0" "groups\0" "handler\0" "having\0" "header\0" "hold\0" "hour\0" "identity\0" "if\0" "ilike\0" "immediate\0" "immutable\0" "implicit\0" "import\0" "in\0" "include\0" "including\0" "increment\0" "index\0" "indexes\0" "inherit\0" "inherits\0" "initially\0" "inline\0" "inner\0" "inout\0" "input\0" "insensitive\0" "insert\0" "instead\0" "int\0" "integer\0" "intersect\0" "interval\0" "into\0" "invoker\0" "is\0" "isnull\0" "isolation\0" "join\0" "key\0" "label\0" "language\0" "large\0" "last\0" "lateral\0" "leading\0" "leakproof\0" "least\0" "left\0" "level\0" "like\0" "limit\0" "listen\0" "load\0" "local\0" "localtime\0" "localtimestamp\0" "location\0" "lock\0" "locked\0" "logged\0" "mapping\0" "match\0" "matched\0" "materialized\0" "maxvalue\0" "merge\0" "method\0" "minute\0" "minvalue\0" "mode\0" "month\0" "move\0" "name\0" "names\0" "national\0" "natural\0" "nchar\0" "new\0" "next\0" "nfc\0" "nfd\0" "nfkc\0" "nfkd\0" "no\0" "none\0" "normalize\0" "normalized\0" "not\0" "nothing\0" "notify\0" "notnull\0" "nowait\0" "null\0" "nullif\0" "nulls\0" "numeric\0" "object\0" "of\0" "off\0" "offset\0" "oids\0" "old\0" "on\0" "only\0" "operator\0" "option\0" "options\0" "or\0" "order\0" "ordinality\0" "others\0" "out\0" "outer\0" "over\0" "overlaps\0" "overlay\0" "overriding\0" "owned\0" "owner\0" "parallel\0" "parameter\0" "parser\0" "partial\0" "partition\0" "passing\0" "password\0" "placing\0" "plans\0" "policy\0" "position\0" "preceding\0" "precision\0" "prepare\0" "prepared\0" "preserve\0" "primary\0" "prior\0" "privileges\0" "procedural\0" "procedure\0" "procedures\0" "program\0" "publication\0" "quote\0" "range\0" "read\0" "real\0" "reassign\0" "recheck\0" "recursive\0" "ref\0" "references\0" "referencing\0" "refresh\0" "reindex\0" "relative\0" "release\0" "rename\0" "repeatable\0" "replace\0" "replica\0" "reset\0" "restart\0" "restrict\0" "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" "schema\0" "schemas\0" "scroll\0" "search\0" "second\0" "security\0" "select\0" "sequence\0" "sequences\0" "serializable\0" "server\0" "session\0" "session_user\0" "set\0" "setof\0" "sets\0" "share\0" "show\0" "similar\0" "simple\0" "skip\0" "smallint\0" "snapshot\0" "some\0" "sql\0" "stable\0" "standalone\0" "start\0" "statement\0" "statistics\0" "stdin\0" "stdout\0" "storage\0" "stored\0" "strict\0" "strip\0" "subscription\0" "substring\0" "support\0" "symmetric\0" "sysid\0" "system\0" "table\0" "tables\0" "tablesample\0" "tablespace\0" "temp\0" "template\0" "temporary\0" "text\0" "then\0" "ties\0" "time\0" "timestamp\0" "to\0" "trailing\0" "transaction\0" "transform\0" "treat\0" "trigger\0" "trim\0" "true\0" "truncate\0" "trusted\0" "type\0" "types\0" "uescape\0" "unbounded\0" "uncommitted\0" "unencrypted\0" "union\0" "unique\0" "unknown\0" "unlisten\0" "unlogged\0" "until\0" "update\0" "user\0" "using\0" "vacuum\0" "valid\0" "validate\0" "validator\0" "value\0" "values\0" "varchar\0" "variadic\0" "varying\0" "verbose\0" "version\0" "view\0" "views\0" "volatile\0" "when\0" "where\0" "whitespace\0" "window\0" "with\0" "within\0" "without\0" "work\0" "wrapper\0" "write\0" "xml\0" "xmlattributes\0" "xmlconcat\0" "xmlelement\0" "xmlexists\0" "xmlforest\0" "xmlnamespaces\0" "xmlparse\0" "xmlpi\0" "xmlroot\0" "xmlserialize\0" "xmltable\0" "year\0" "yes\0" "zone"; static const uint16 ScanKeywords_kw_offsets[] = { 0, 6, 15, 22, 29, 33, 39, 45, 55, 59, 64, 70, 77, 85, 93, 97, 101, 107, 110, 114, 125, 135, 146, 157, 160, 167, 174, 184, 198, 207, 214, 220, 228, 235, 242, 246, 254, 259, 267, 270, 276, 281, 288, 296, 305, 310, 315, 323, 329, 334, 344, 360, 366, 377, 383, 389, 397, 406, 414, 424, 431, 439, 447, 456, 463, 473, 485, 498, 512, 521, 532, 543, 555, 563, 572, 583, 588, 593, 600, 606, 610, 615, 623, 639, 652, 665, 680, 693, 711, 724, 731, 737, 742, 751, 755, 766, 770, 778, 786, 794, 803, 814, 823, 831, 838, 848, 859, 867, 873, 878, 885, 896, 904, 912, 921, 924, 933, 940, 947, 952, 957, 962, 969, 978, 988, 992, 997, 1004, 1010, 1017, 1025, 1035, 1045, 1053, 1060, 1068, 1079, 1089, 1098, 1106, 1112, 1119, 1125, 1132, 1141, 1147, 1153, 1163, 1167, 1173, 1181, 1189, 1196, 1201, 1206, 1215, 1225, 1235, 1242, 1248, 1256, 1265, 1271, 1280, 1287, 1295, 1302, 1309, 1314, 1319, 1328, 1331, 1337, 1347, 1357, 1366, 1373, 1376, 1384, 1394, 1404, 1410, 1418, 1426, 1435, 1445, 1452, 1458, 1464, 1470, 1482, 1489, 1497, 1501, 1509, 1519, 1528, 1533, 1541, 1544, 1551, 1561, 1566, 1570, 1576, 1585, 1591, 1596, 1604, 1612, 1622, 1628, 1633, 1639, 1644, 1650, 1657, 1662, 1668, 1678, 1693, 1702, 1707, 1714, 1721, 1729, 1735, 1743, 1756, 1765, 1771, 1778, 1785, 1794, 1799, 1805, 1810, 1815, 1821, 1830, 1838, 1844, 1848, 1853, 1857, 1861, 1866, 1871, 1874, 1879, 1889, 1900, 1904, 1912, 1919, 1927, 1934, 1939, 1946, 1952, 1960, 1967, 1970, 1974, 1981, 1986, 1990, 1993, 1998, 2007, 2014, 2022, 2025, 2031, 2042, 2049, 2053, 2059, 2064, 2073, 2081, 2092, 2098, 2104, 2113, 2123, 2130, 2138, 2148, 2156, 2165, 2173, 2179, 2186, 2195, 2205, 2215, 2223, 2232, 2241, 2249, 2255, 2266, 2277, 2287, 2298, 2306, 2318, 2324, 2330, 2335, 2340, 2349, 2357, 2367, 2371, 2382, 2394, 2402, 2410, 2419, 2427, 2434, 2445, 2453, 2461, 2467, 2475, 2484, 2491, 2501, 2509, 2516, 2522, 2527, 2536, 2543, 2551, 2560, 2564, 2569, 2574, 2584, 2591, 2599, 2606, 2613, 2620, 2629, 2636, 2645, 2655, 2668, 2675, 2683, 2696, 2700, 2706, 2711, 2717, 2722, 2730, 2737, 2742, 2751, 2760, 2765, 2769, 2776, 2787, 2793, 2803, 2814, 2820, 2827, 2835, 2842, 2849, 2855, 2868, 2878, 2886, 2896, 2902, 2909, 2915, 2922, 2934, 2945, 2950, 2959, 2969, 2974, 2979, 2984, 2989, 2999, 3002, 3011, 3023, 3033, 3039, 3047, 3052, 3057, 3066, 3074, 3079, 3085, 3093, 3103, 3115, 3127, 3133, 3140, 3148, 3157, 3166, 3172, 3179, 3184, 3190, 3197, 3203, 3212, 3222, 3228, 3235, 3243, 3252, 3260, 3268, 3276, 3281, 3287, 3296, 3301, 3307, 3318, 3325, 3330, 3337, 3345, 3350, 3358, 3364, 3368, 3382, 3392, 3403, 3413, 3423, 3437, 3446, 3452, 3460, 3473, 3482, 3487, 3491, }; #define SCANKEYWORDS_NUM_KEYWORDS 460 static int ScanKeywords_hash_func(const void *key, size_t keylen) { static const int16 h[921] = { 207, -201, 0, 223, -255, 28, 32767, -86, 32767, 0, -35, -938, 32767, 32767, -13, 32767, 450, 62, 42, 327, 309, -13, 0, 114, 32767, -230, 135, -12, 424, 191, -114, 32767, 45, 440, 673, 0, 0, 224, 286, 32767, 32767, 16, 5, 0, 32767, 32767, -349, 32767, -43, 32767, 32767, 32767, 32767, 32767, 0, 32767, 32767, 262, 573, -75, 32767, 32767, 1113, 88, 111, 32767, 7, -41, 223, 32767, 478, 275, 32767, 0, 245, 1004, 59, 32767, 322, 256, -130, 32767, 0, 378, 606, 994, -59, 32767, -219, 32767, 489, 32767, -328, 32767, 88, 32767, -228, 0, 1181, -705, 32767, 32767, 149, 32767, 32767, 177, 0, 0, 32767, 32767, 32767, 473, 142, 167, 130, 345, 461, 50, 426, 32767, 32767, -104, 333, 32767, 5, 32767, 32767, 115, 0, 34, 32767, -178, 32767, 32767, 0, 32767, 32767, 32767, 429, 573, 32767, 3, 32767, 0, 237, 32767, 324, 379, 32767, 409, 32767, 32767, 362, -707, 638, 32767, 32767, -18, 23, 127, 32767, 32767, -55, 0, 254, 32767, 0, 32767, -16, 389, 32767, -287, 0, -43, 32767, 0, 32767, 157, 23, 438, 907, 0, 32767, -213, 299, 32767, 0, 32767, 32767, 229, 32767, 32767, 32767, 32767, 186, 32767, 81, 32767, -707, 525, 732, 515, 32767, 32767, 0, 32767, 32767, 126, 32767, 32767, 0, 443, 32767, 102, -148, 188, 393, 32767, 383, 32767, 212, 247, 32767, 389, 54, -258, 0, 6, -32, 32767, 261, -190, 112, 32767, 32767, 32767, 0, 32767, 0, 32767, 32767, 215, 32767, 196, 32767, 445, 32767, 32767, -456, -66, 161, 32767, 617, -484, 230, 32767, 1078, 77, 124, 32767, 32767, -44, 32767, -271, 148, 20, 344, 83, 32767, 32767, 32767, 108, -768, 269, 32767, 32767, -66, 0, 32767, 32767, 524, 433, 32767, 32767, 0, 32767, -564, -138, 0, 4, 463, 354, 32767, 57, 0, 32767, 552, 351, 32767, 32767, 0, 32767, 32767, 32767, 65, 32767, 32767, 285, 158, 32767, 32767, -931, 281, 32767, 32767, 32767, 32767, -357, -115, 32767, 294, 435, 2, 32767, 305, 32767, 35, 434, 32767, 172, 0, 32767, 326, -597, 263, 2, 32767, -111, -79, 32767, 32767, -717, 198, 32767, -715, 407, 32767, 32767, 159, 214, -135, 379, 672, 656, 278, 0, 32767, 32767, 32767, 1109, 830, -173, 32767, 32767, 334, 32767, 32767, 32767, 32767, -447, 270, 61, 281, 32767, 0, 116, 32767, 99, -302, 32767, 32767, 0, 39, 32767, -61, 276, -45, 144, -121, 32767, 0, 198, 325, 72, 294, -174, -218, 73, -489, 32767, -372, 32767, 32767, 360, 345, 283, -453, 32767, 32767, 32767, 283, 806, 0, 32767, 32767, 32767, -65, 0, 32767, 8, 32767, 150, 32767, -251, 132, 0, 32767, 32767, 272, 32767, 15, -417, 889, -77, 0, 0, 16, 32767, 32767, 32767, 94, 32767, 32767, 32767, 32767, 219, 32767, -416, 391, 31, 208, 396, 0, 143, -37, 32767, 252, 0, 32767, 185, 32767, -140, 0, 32767, 456, -258, 32767, 381, 32767, 393, 32767, 32767, 32767, 32767, 1160, 32767, 32767, 384, 201, 197, 32767, 0, 131, 469, 89, 32767, 397, 0, 32767, 211, 32767, 102, 138, 32767, -379, 264, 32767, 386, 6, 32767, 32767, 162, 53, -81, -135, 59, 338, 230, 0, 0, 19, 8, 32767, 785, 423, 0, 257, 301, 523, -398, 421, 0, 32767, 0, 32767, 32767, 0, -758, 0, 562, 32767, 0, 32767, 32767, -213, 32767, 28, 32767, -696, 173, -413, 352, -223, 472, 275, 316, 32767, -186, 323, 32767, -163, 221, 246, 29, 222, -1042, 0, 33, 184, 32767, 32767, 0, 32767, 32767, 805, 32767, 305, 8, 226, 84, 32767, 379, 0, 32767, 134, 82, 32767, 399, 32767, 0, 0, 617, 32767, 32767, 31, 0, 256, 0, 32767, 103, 302, 32767, 208, 32767, -56, 0, -146, 32767, 243, 32767, 0, 32767, 32767, 32767, 32767, 784, 32767, 32767, 0, 197, 32767, 32767, 914, 155, -50, 32767, 32767, 32767, 292, 1122, 32767, 0, 32767, -167, 32767, 139, 113, 113, 32767, 410, 32767, 459, 331, 0, 295, 0, 0, 483, -345, 32767, 32767, -456, 32767, 32767, 0, 32767, 304, 32767, 138, 32767, 520, 326, 412, -237, 453, 32767, 50, 328, 32767, 32767, 0, -116, 0, -754, 0, -149, 32767, 32767, 28, -398, 0, 32767, 32767, -89, 353, -64, 51, 139, 32767, 32767, 66, 32767, 314, 209, 1218, 32767, 32767, 325, 0, 268, 32767, 32767, 446, 32767, 0, 32767, -115, 32767, 32767, 32767, 239, 344, 32767, 5, 32767, 0, -314, 0, -327, 32767, 181, 32767, 107, 393, 0, 32767, 12, 582, 119, 32767, -751, 32767, -578, 0, 349, 0, 32767, 404, 307, 85, 32767, 452, 53, -307, 0, 0, 32767, 32767, 664, 32767, 32767, 32767, -44, 32767, 0, 259, 366, 32767, 0, 0, 32767, -97, -131, 0, 32767, 178, 32767, 779, -231, -73, 0, 0, 145, 487, 223, 0, 0, 86, 32767, 0, 32767, 192, 321, 32767, 32767, 32767, -360, -140, 32767, 32767, 32767, 507, 32767, 247, 416, 32767, 0, 32767, 68, 98, 32767, 0, -268, 0, 32767, 204, 32767, 0, 739, 112, -283, 1180, 193, 32767, 32767, 220, 0, 0, 0, 0, 0, 32767, 0, 32767, 32767, 32767, 32767, 206, -374, 0, 315, 32767, 0, 0, -37, -363, 32767, 32767, 258, 32767, 459, 32767, 128, -1018, 374, 32767, 0, 32767, 0, -602, 32767, 346, 76, 363, 387, 296, -186, 32, 21, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 32767, 0, 165, 32767, 32767, 32767, 0, 790, -10, 32767, 32767, 32767, 32767, 0, 32767, 0, 228, 32767, -993, 32, -878, -154, 32767, 72, 369, 411, 585, 32767, 32767, 124, 32767, -253, -177, 294, 32767, 335, 0, 9, 0, 32767, 442, 0, 0, 32767, 449, 448, 0, 0, 32767, 0, 593, 0, 32767, 242, 432, 0, 32767, 0, 32767, 32767, 1360, 0, 32767, 238 }; 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 * 127 + c; } return h[a % 921] + h[b % 921]; } const ScanKeywordList ScanKeywords = { ScanKeywords_kw_string, ScanKeywords_kw_offsets, ScanKeywords_hash_func, SCANKEYWORDS_NUM_KEYWORDS, 17 }; #endif /* KWLIST_D_H */ pg_query-4.2.3/ext/pg_query/pg_query_ruby.c0000644000004100000410000001460614510636647021121 0ustar www-datawww-data#include "pg_query.h" #include "xxhash/xxhash.h" #include void raise_ruby_parse_error(PgQueryProtobufParseResult result); void raise_ruby_normalize_error(PgQueryNormalizeResult result); void raise_ruby_fingerprint_error(PgQueryFingerprintResult result); void raise_ruby_scan_error(PgQueryScanResult result); VALUE pg_query_ruby_parse_protobuf(VALUE self, VALUE input); VALUE pg_query_ruby_deparse_protobuf(VALUE self, VALUE input); VALUE pg_query_ruby_normalize(VALUE self, VALUE input); VALUE pg_query_ruby_fingerprint(VALUE self, VALUE input); VALUE pg_query_ruby_scan(VALUE self, VALUE input); VALUE pg_query_ruby_hash_xxh3_64(VALUE self, VALUE input, VALUE seed); __attribute__((visibility ("default"))) void Init_pg_query(void) { VALUE cPgQuery; cPgQuery = rb_const_get(rb_cObject, rb_intern("PgQuery")); rb_define_singleton_method(cPgQuery, "parse_protobuf", pg_query_ruby_parse_protobuf, 1); rb_define_singleton_method(cPgQuery, "deparse_protobuf", pg_query_ruby_deparse_protobuf, 1); rb_define_singleton_method(cPgQuery, "normalize", pg_query_ruby_normalize, 1); rb_define_singleton_method(cPgQuery, "fingerprint", pg_query_ruby_fingerprint, 1); rb_define_singleton_method(cPgQuery, "_raw_scan", pg_query_ruby_scan, 1); rb_define_singleton_method(cPgQuery, "hash_xxh3_64", pg_query_ruby_hash_xxh3_64, 2); rb_define_const(cPgQuery, "PG_VERSION", rb_str_new2(PG_VERSION)); rb_define_const(cPgQuery, "PG_MAJORVERSION", rb_str_new2(PG_MAJORVERSION)); rb_define_const(cPgQuery, "PG_VERSION_NUM", INT2NUM(PG_VERSION_NUM)); } void raise_ruby_parse_error(PgQueryProtobufParseResult result) { VALUE cPgQuery, cParseError; VALUE args[4]; cPgQuery = rb_const_get(rb_cObject, rb_intern("PgQuery")); cParseError = rb_const_get_at(cPgQuery, rb_intern("ParseError")); args[0] = rb_str_new2(result.error->message); args[1] = rb_str_new2(result.error->filename); args[2] = INT2NUM(result.error->lineno); args[3] = INT2NUM(result.error->cursorpos); pg_query_free_protobuf_parse_result(result); rb_exc_raise(rb_class_new_instance(4, args, cParseError)); } void raise_ruby_deparse_error(PgQueryDeparseResult result) { VALUE cPgQuery, cParseError; VALUE args[4]; cPgQuery = rb_const_get(rb_cObject, rb_intern("PgQuery")); cParseError = rb_const_get_at(cPgQuery, rb_intern("ParseError")); args[0] = rb_str_new2(result.error->message); args[1] = rb_str_new2(result.error->filename); args[2] = INT2NUM(result.error->lineno); args[3] = INT2NUM(result.error->cursorpos); pg_query_free_deparse_result(result); rb_exc_raise(rb_class_new_instance(4, args, cParseError)); } void raise_ruby_normalize_error(PgQueryNormalizeResult result) { VALUE cPgQuery, cParseError; VALUE args[4]; cPgQuery = rb_const_get(rb_cObject, rb_intern("PgQuery")); cParseError = rb_const_get_at(cPgQuery, rb_intern("ParseError")); args[0] = rb_str_new2(result.error->message); args[1] = rb_str_new2(result.error->filename); args[2] = INT2NUM(result.error->lineno); args[3] = INT2NUM(result.error->cursorpos); pg_query_free_normalize_result(result); rb_exc_raise(rb_class_new_instance(4, args, cParseError)); } void raise_ruby_fingerprint_error(PgQueryFingerprintResult result) { VALUE cPgQuery, cParseError; VALUE args[4]; cPgQuery = rb_const_get(rb_cObject, rb_intern("PgQuery")); cParseError = rb_const_get_at(cPgQuery, rb_intern("ParseError")); args[0] = rb_str_new2(result.error->message); args[1] = rb_str_new2(result.error->filename); args[2] = INT2NUM(result.error->lineno); args[3] = INT2NUM(result.error->cursorpos); pg_query_free_fingerprint_result(result); rb_exc_raise(rb_class_new_instance(4, args, cParseError)); } void raise_ruby_scan_error(PgQueryScanResult result) { VALUE cPgQuery, cScanError; VALUE args[4]; cPgQuery = rb_const_get(rb_cObject, rb_intern("PgQuery")); cScanError = rb_const_get_at(cPgQuery, rb_intern("ScanError")); args[0] = rb_str_new2(result.error->message); args[1] = rb_str_new2(result.error->filename); args[2] = INT2NUM(result.error->lineno); args[3] = INT2NUM(result.error->cursorpos); pg_query_free_scan_result(result); rb_exc_raise(rb_class_new_instance(4, args, cScanError)); } VALUE pg_query_ruby_parse_protobuf(VALUE self, VALUE input) { Check_Type(input, T_STRING); VALUE output; PgQueryProtobufParseResult result = pg_query_parse_protobuf(StringValueCStr(input)); if (result.error) raise_ruby_parse_error(result); output = rb_ary_new(); rb_ary_push(output, rb_str_new(result.parse_tree.data, result.parse_tree.len)); rb_ary_push(output, rb_str_new2(result.stderr_buffer)); pg_query_free_protobuf_parse_result(result); return output; } VALUE pg_query_ruby_deparse_protobuf(VALUE self, VALUE input) { Check_Type(input, T_STRING); VALUE output; PgQueryProtobuf pbuf = {0}; PgQueryDeparseResult result = {0}; pbuf.data = StringValuePtr(input); pbuf.len = RSTRING_LEN(input); result = pg_query_deparse_protobuf(pbuf); if (result.error) raise_ruby_deparse_error(result); output = rb_str_new2(result.query); pg_query_free_deparse_result(result); return output; } VALUE pg_query_ruby_normalize(VALUE self, VALUE input) { Check_Type(input, T_STRING); VALUE output; PgQueryNormalizeResult result = pg_query_normalize(StringValueCStr(input)); if (result.error) raise_ruby_normalize_error(result); output = rb_str_new2(result.normalized_query); pg_query_free_normalize_result(result); return output; } VALUE pg_query_ruby_fingerprint(VALUE self, VALUE input) { Check_Type(input, T_STRING); VALUE output; PgQueryFingerprintResult result = pg_query_fingerprint(StringValueCStr(input)); if (result.error) raise_ruby_fingerprint_error(result); if (result.fingerprint_str) { output = rb_str_new2(result.fingerprint_str); } else { output = Qnil; } pg_query_free_fingerprint_result(result); return output; } VALUE pg_query_ruby_scan(VALUE self, VALUE input) { Check_Type(input, T_STRING); VALUE output; PgQueryScanResult result = pg_query_scan(StringValueCStr(input)); if (result.error) raise_ruby_scan_error(result); output = rb_ary_new(); rb_ary_push(output, rb_str_new(result.pbuf.data, result.pbuf.len)); rb_ary_push(output, rb_str_new2(result.stderr_buffer)); pg_query_free_scan_result(result); return output; } VALUE pg_query_ruby_hash_xxh3_64(VALUE self, VALUE input, VALUE seed) { Check_Type(input, T_STRING); Check_Type(seed, T_FIXNUM); return ULONG2NUM(XXH3_64bits_withSeed(StringValuePtr(input), RSTRING_LEN(input), NUM2ULONG(seed))); } pg_query-4.2.3/ext/pg_query/src_backend_utils_adt_expandeddatum.c0000644000004100000410000000504414510636647025432 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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-2022, 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). */ pg_query-4.2.3/ext/pg_query/src_backend_nodes_bitmapset.c0000644000004100000410000002656714510636647023734 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - bms_copy * - bms_equal * - bms_is_empty * - bms_first_member * - bms_free * - bms_next_member * - bms_num_members *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * bitmapset.c * PostgreSQL generic bitmap set package * * A bitmap set can represent any set of nonnegative integers, although * it is mainly intended for sets where the maximum value is not large, * say at most a few hundred. By convention, a NULL pointer is always * accepted by all operations to represent the empty set. (But beware * that this is not the only representation of the empty set. Use * bms_is_empty() in preference to testing for NULL.) * * * Copyright (c) 2003-2022, PostgreSQL Global Development Group * * IDENTIFICATION * src/backend/nodes/bitmapset.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "common/hashfn.h" #include "nodes/bitmapset.h" #include "nodes/pg_list.h" #include "port/pg_bitutils.h" #define WORDNUM(x) ((x) / BITS_PER_BITMAPWORD) #define BITNUM(x) ((x) % BITS_PER_BITMAPWORD) #define BITMAPSET_SIZE(nwords) \ (offsetof(Bitmapset, words) + (nwords) * sizeof(bitmapword)) /*---------- * This is a well-known cute trick for isolating the rightmost one-bit * in a word. It assumes two's complement arithmetic. Consider any * nonzero value, and focus attention on the rightmost one. The value is * then something like * xxxxxx10000 * where x's are unspecified bits. The two's complement negative is formed * by inverting all the bits and adding one. Inversion gives * yyyyyy01111 * where each y is the inverse of the corresponding x. Incrementing gives * yyyyyy10000 * and then ANDing with the original value gives * 00000010000 * This works for all cases except original value = zero, where of course * we get zero. *---------- */ #define RIGHTMOST_ONE(x) ((signedbitmapword) (x) & -((signedbitmapword) (x))) #define HAS_MULTIPLE_ONES(x) ((bitmapword) RIGHTMOST_ONE(x) != (x)) /* Select appropriate bit-twiddling functions for bitmap word size */ #if BITS_PER_BITMAPWORD == 32 #define bmw_leftmost_one_pos(w) pg_leftmost_one_pos32(w) #define bmw_rightmost_one_pos(w) pg_rightmost_one_pos32(w) #define bmw_popcount(w) pg_popcount32(w) #elif BITS_PER_BITMAPWORD == 64 #define bmw_leftmost_one_pos(w) pg_leftmost_one_pos64(w) #define bmw_rightmost_one_pos(w) pg_rightmost_one_pos64(w) #define bmw_popcount(w) pg_popcount64(w) #else #error "invalid BITS_PER_BITMAPWORD" #endif /* * bms_copy - make a palloc'd copy of a bitmapset */ Bitmapset * bms_copy(const Bitmapset *a) { Bitmapset *result; size_t size; if (a == NULL) return NULL; size = BITMAPSET_SIZE(a->nwords); result = (Bitmapset *) palloc(size); memcpy(result, a, size); return result; } /* * bms_equal - are two bitmapsets equal? * * This is logical not physical equality; in particular, a NULL pointer will * be reported as equal to a palloc'd value containing no members. */ bool bms_equal(const Bitmapset *a, const Bitmapset *b) { const Bitmapset *shorter; const Bitmapset *longer; int shortlen; int longlen; int i; /* Handle cases where either input is NULL */ if (a == NULL) { if (b == NULL) return true; return bms_is_empty(b); } else if (b == NULL) return bms_is_empty(a); /* Identify shorter and longer input */ if (a->nwords <= b->nwords) { shorter = a; longer = b; } else { shorter = b; longer = a; } /* And process */ shortlen = shorter->nwords; for (i = 0; i < shortlen; i++) { if (shorter->words[i] != longer->words[i]) return false; } longlen = longer->nwords; for (; i < longlen; i++) { if (longer->words[i] != 0) return false; } return true; } /* * bms_compare - qsort-style comparator for bitmapsets * * This guarantees to report values as equal iff bms_equal would say they are * equal. Otherwise, the highest-numbered bit that is set in one value but * not the other determines the result. (This rule means that, for example, * {6} is greater than {5}, which seems plausible.) */ /* * bms_make_singleton - build a bitmapset containing a single member */ /* * bms_free - free a bitmapset * * Same as pfree except for allowing NULL input */ void bms_free(Bitmapset *a) { if (a) pfree(a); } /* * These operations all make a freshly palloc'd result, * leaving their inputs untouched */ /* * bms_union - set union */ /* * bms_intersect - set intersection */ /* * bms_difference - set difference (ie, A without members of B) */ /* * bms_is_subset - is A a subset of B? */ /* * bms_subset_compare - compare A and B for equality/subset relationships * * This is more efficient than testing bms_is_subset in both directions. */ /* * bms_is_member - is X a member of A? */ /* * bms_member_index * determine 0-based index of member x in the bitmap * * Returns (-1) when x is not a member. */ /* * bms_overlap - do sets overlap (ie, have a nonempty intersection)? */ /* * bms_overlap_list - does a set overlap an integer list? */ /* * bms_nonempty_difference - do sets have a nonempty difference? * * 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; if (a == NULL) return 0; nwords = a->nwords; for (wordnum = 0; wordnum < nwords; wordnum++) { bitmapword w = a->words[wordnum]; /* No need to count the bits in a zero word */ if (w != 0) result += bmw_popcount(w); } return result; } /* * bms_membership - does a set have zero, one, or multiple members? * * This is faster than making an exact count with bms_num_members(). */ /* * bms_is_empty - is a set empty? * * This is even faster than bms_membership(). */ bool bms_is_empty(const Bitmapset *a) { int nwords; int wordnum; if (a == NULL) return true; nwords = a->nwords; for (wordnum = 0; wordnum < nwords; wordnum++) { bitmapword w = a->words[wordnum]; if (w != 0) return false; } return true; } /* * These operations all "recycle" their non-const inputs, ie, either * return the modified input or pfree it if it can't hold the result. * * These should generally be used in the style * * foo = bms_add_member(foo, x); */ /* * bms_add_member - add a specified member to set * * Input set is modified or recycled! */ /* * bms_del_member - remove a specified member from set * * No error if x is not currently a member of set * * Input set is modified in-place! */ /* * bms_add_members - like bms_union, but left input is recycled */ /* * bms_add_range * Add members in the range of 'lower' to 'upper' to the set. * * Note this could also be done by calling bms_add_member in a loop, however, * using this function will be faster when the range is large as we work at * the bitmapword level rather than at bit level. */ /* * bms_int_members - like bms_intersect, but left input is recycled */ /* * bms_del_members - like bms_difference, but left input is recycled */ /* * bms_join - like bms_union, but *both* inputs are recycled */ /* * bms_first_member - find and remove first member of a set * * Returns -1 if set is empty. NB: set is destructively modified! * * This is intended as support for iterating through the members of a set. * The typical pattern is * * while ((x = bms_first_member(inputset)) >= 0) * process member x; * * CAUTION: this destroys the content of "inputset". If the set must * not be modified, use bms_next_member instead. */ int bms_first_member(Bitmapset *a) { int nwords; int wordnum; if (a == NULL) return -1; nwords = a->nwords; for (wordnum = 0; wordnum < nwords; wordnum++) { bitmapword w = a->words[wordnum]; if (w != 0) { int result; w = RIGHTMOST_ONE(w); a->words[wordnum] &= ~w; result = wordnum * BITS_PER_BITMAPWORD; result += bmw_rightmost_one_pos(w); return result; } } return -1; } /* * bms_next_member - find next member of a set * * Returns smallest member greater than "prevbit", or -2 if there is none. * "prevbit" must NOT be less than -1, or the behavior is unpredictable. * * This is intended as support for iterating through the members of a set. * The typical pattern is * * x = -1; * while ((x = bms_next_member(inputset, x)) >= 0) * process member x; * * Notice that when there are no more members, we return -2, not -1 as you * might expect. The rationale for that is to allow distinguishing the * loop-not-started state (x == -1) from the loop-completed state (x == -2). * It makes no difference in simple loop usage, but complex iteration logic * might need such an ability. */ int bms_next_member(const Bitmapset *a, int prevbit) { int nwords; int wordnum; bitmapword mask; if (a == NULL) return -2; nwords = a->nwords; prevbit++; mask = (~(bitmapword) 0) << BITNUM(prevbit); for (wordnum = WORDNUM(prevbit); wordnum < nwords; wordnum++) { bitmapword w = a->words[wordnum]; /* ignore bits before prevbit */ w &= mask; if (w != 0) { int result; result = wordnum * BITS_PER_BITMAPWORD; result += bmw_rightmost_one_pos(w); return result; } /* in subsequent words, consider all bits */ mask = (~(bitmapword) 0); } return -2; } /* * bms_prev_member - find prev member of a set * * Returns largest member less than "prevbit", or -2 if there is none. * "prevbit" must NOT be more than one above the highest possible bit that can * be set at the Bitmapset at its current size. * * To ease finding the highest set bit for the initial loop, the special * prevbit value of -1 can be passed to have the function find the highest * valued member in the set. * * This is intended as support for iterating through the members of a set in * reverse. The typical pattern is * * x = -1; * while ((x = bms_prev_member(inputset, x)) >= 0) * process member x; * * Notice that when there are no more members, we return -2, not -1 as you * might expect. The rationale for that is to allow distinguishing the * loop-not-started state (x == -1) from the loop-completed state (x == -2). * It makes no difference in simple loop usage, but complex iteration logic * might need such an ability. */ /* * bms_hash_value - compute a hash key for a Bitmapset * * Note: we must ensure that any two bitmapsets that are bms_equal() will * hash to the same value; in practice this means that trailing all-zero * words must not affect the result. Hence we strip those before applying * hash_any(). */ /* * bitmap_hash - hash function for keys that are (pointers to) Bitmapsets * * Note: don't forget to specify bitmap_match as the match function! */ /* * bitmap_match - match function to use with bitmap_hash */ pg_query-4.2.3/ext/pg_query/postgres_deparse.h0000644000004100000410000000027114510636647021574 0ustar www-datawww-data#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 pg_query-4.2.3/ext/pg_query/src_backend_nodes_nodeFuncs.c0000644000004100000410000012341014510636647023651 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - exprLocation * - leftmostLoc * - raw_expression_tree_walker *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * nodeFuncs.c * Various general-purpose manipulations of Node trees * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/nodes/nodeFuncs.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "catalog/pg_collation.h" #include "catalog/pg_type.h" #include "miscadmin.h" #include "nodes/execnodes.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" #include "nodes/pathnodes.h" #include "utils/builtins.h" #include "utils/lsyscache.h" static bool expression_returns_set_walker(Node *node, void *context); static int leftmostLoc(int loc1, int loc2); static bool fix_opfuncids_walker(Node *node, void *context); static bool planstate_walk_subplans(List *plans, bool (*walker) (), void *context); static bool planstate_walk_members(PlanState **planstates, int nplans, bool (*walker) (), void *context); /* * exprType - * returns the Oid of the type of the expression's result. */ /* * exprTypmod - * returns the type-specific modifier of the expression's result type, * if it can be determined. In many cases, it can't and we return -1. */ /* * exprIsLengthCoercion * Detect whether an expression tree is an application of a datatype's * typmod-coercion function. Optionally extract the result's typmod. * * If coercedTypmod is not NULL, the typmod is stored there if the expression * is a length-coercion function, else -1 is stored there. * * Note that a combined type-and-length coercion will be treated as a * length coercion by this routine. */ /* * applyRelabelType * Add a RelabelType node if needed to make the expression expose * the specified type, typmod, and collation. * * This is primarily intended to be used during planning. Therefore, it must * maintain the post-eval_const_expressions invariants that there are not * adjacent RelabelTypes, and that the tree is fully const-folded (hence, * we mustn't return a RelabelType atop a Const). If we do find a Const, * we'll modify it in-place if "overwrite_ok" is true; that should only be * passed as true if caller knows the Const is newly generated. */ /* * relabel_to_typmod * Add a RelabelType node that changes just the typmod of the expression. * * Convenience function for a common usage of applyRelabelType. */ /* * strip_implicit_coercions: remove implicit coercions at top level of tree * * This doesn't modify or copy the input expression tree, just return a * pointer to a suitable place within it. * * Note: there isn't any useful thing we can do with a RowExpr here, so * just return it unchanged, even if it's marked as an implicit coercion. */ /* * expression_returns_set * Test whether an expression returns a set result. * * Because we use expression_tree_walker(), this can also be applied to * whole targetlists; it'll produce true if any one of the tlist items * returns a set. */ /* * exprCollation - * returns the Oid of the collation of the expression's result. * * Note: expression nodes that can invoke functions generally have an * "inputcollid" field, which is what the function should use as collation. * That is the resolved common collation of the node's inputs. It is often * but not always the same as the result collation; in particular, if the * function produces a non-collatable result type from collatable inputs * or vice versa, the two are different. */ /* * exprInputCollation - * returns the Oid of the collation a function should use, if available. * * Result is InvalidOid if the node type doesn't store this information. */ /* * exprSetCollation - * Assign collation information to an expression tree node. * * Note: since this is only used during parse analysis, we don't need to * worry about subplans or PlaceHolderVars. */ #ifdef USE_ASSERT_CHECKING #endif /* USE_ASSERT_CHECKING */ /* * exprSetInputCollation - * Assign input-collation information to an expression tree node. * * This is a no-op for node types that don't store their input collation. * Note we omit RowCompareExpr, which needs special treatment since it * contains multiple input collation OIDs. */ /* * exprLocation - * returns the parse location of an expression tree, for error reports * * -1 is returned if the location can't be determined. * * For expressions larger than a single token, the intent here is to * return the location of the expression's leftmost token, not necessarily * the topmost Node's location field. For example, an OpExpr's location * field will point at the operator name, but if it is not a prefix operator * then we should return the location of the left-hand operand instead. * The reason is that we want to reference the entire expression not just * that operator, and pointing to its start seems to be the most natural way. * * The location is not perfect --- for example, since the grammar doesn't * explicitly represent parentheses in the parsetree, given something that * had been written "(a + b) * c" we are going to point at "a" not "(". * But it should be plenty good enough for error reporting purposes. * * You might think that this code is overly general, for instance why check * the operands of a FuncExpr node, when the function name can be expected * to be to the left of them? There are a couple of reasons. The grammar * sometimes builds expressions that aren't quite what the user wrote; * for instance x IS NOT BETWEEN ... becomes a NOT-expression whose keyword * pointer is to the right of its leftmost argument. Also, nodes that were * inserted implicitly by parse analysis (such as FuncExprs for implicit * coercions) will have location -1, and so we can have odd combinations of * known and unknown locations in a tree. */ int exprLocation(const Node *expr) { int loc; if (expr == NULL) return -1; switch (nodeTag(expr)) { case T_RangeVar: loc = ((const RangeVar *) expr)->location; break; case T_TableFunc: loc = ((const TableFunc *) expr)->location; break; case T_Var: loc = ((const Var *) expr)->location; break; case T_Const: loc = ((const Const *) expr)->location; break; case T_Param: loc = ((const Param *) expr)->location; break; case T_Aggref: /* function name should always be the first thing */ loc = ((const Aggref *) expr)->location; break; case T_GroupingFunc: loc = ((const GroupingFunc *) expr)->location; break; case T_WindowFunc: /* function name should always be the first thing */ loc = ((const WindowFunc *) expr)->location; break; case T_SubscriptingRef: /* just use container argument's location */ loc = exprLocation((Node *) ((const SubscriptingRef *) expr)->refexpr); break; case T_FuncExpr: { const FuncExpr *fexpr = (const FuncExpr *) expr; /* consider both function name and leftmost arg */ loc = leftmostLoc(fexpr->location, exprLocation((Node *) fexpr->args)); } break; case T_NamedArgExpr: { const NamedArgExpr *na = (const NamedArgExpr *) expr; /* consider both argument name and value */ loc = leftmostLoc(na->location, exprLocation((Node *) na->arg)); } break; case T_OpExpr: case T_DistinctExpr: /* struct-equivalent to OpExpr */ case T_NullIfExpr: /* struct-equivalent to OpExpr */ { const OpExpr *opexpr = (const OpExpr *) expr; /* consider both operator name and leftmost arg */ loc = leftmostLoc(opexpr->location, exprLocation((Node *) opexpr->args)); } break; case T_ScalarArrayOpExpr: { const ScalarArrayOpExpr *saopexpr = (const ScalarArrayOpExpr *) expr; /* consider both operator name and leftmost arg */ loc = leftmostLoc(saopexpr->location, exprLocation((Node *) saopexpr->args)); } break; case T_BoolExpr: { const BoolExpr *bexpr = (const BoolExpr *) expr; /* * Same as above, to handle either NOT or AND/OR. We can't * special-case NOT because of the way that it's used for * things like IS NOT BETWEEN. */ loc = leftmostLoc(bexpr->location, exprLocation((Node *) bexpr->args)); } break; case T_SubLink: { const SubLink *sublink = (const SubLink *) expr; /* check the testexpr, if any, and the operator/keyword */ loc = leftmostLoc(exprLocation(sublink->testexpr), sublink->location); } break; case T_FieldSelect: /* just use argument's location */ loc = exprLocation((Node *) ((const FieldSelect *) expr)->arg); break; case T_FieldStore: /* just use argument's location */ loc = exprLocation((Node *) ((const FieldStore *) expr)->arg); break; case T_RelabelType: { const RelabelType *rexpr = (const RelabelType *) expr; /* Much as above */ loc = leftmostLoc(rexpr->location, exprLocation((Node *) rexpr->arg)); } break; case T_CoerceViaIO: { const CoerceViaIO *cexpr = (const CoerceViaIO *) expr; /* Much as above */ loc = leftmostLoc(cexpr->location, exprLocation((Node *) cexpr->arg)); } break; case T_ArrayCoerceExpr: { const ArrayCoerceExpr *cexpr = (const ArrayCoerceExpr *) expr; /* Much as above */ loc = leftmostLoc(cexpr->location, exprLocation((Node *) cexpr->arg)); } break; case T_ConvertRowtypeExpr: { const ConvertRowtypeExpr *cexpr = (const ConvertRowtypeExpr *) expr; /* Much as above */ loc = leftmostLoc(cexpr->location, exprLocation((Node *) cexpr->arg)); } break; case T_CollateExpr: /* just use argument's location */ loc = exprLocation((Node *) ((const CollateExpr *) expr)->arg); break; case T_CaseExpr: /* CASE keyword should always be the first thing */ loc = ((const CaseExpr *) expr)->location; break; case T_CaseWhen: /* WHEN keyword should always be the first thing */ loc = ((const CaseWhen *) expr)->location; break; case T_ArrayExpr: /* the location points at ARRAY or [, which must be leftmost */ loc = ((const ArrayExpr *) expr)->location; break; case T_RowExpr: /* the location points at ROW or (, which must be leftmost */ loc = ((const RowExpr *) expr)->location; break; case T_RowCompareExpr: /* just use leftmost argument's location */ loc = exprLocation((Node *) ((const RowCompareExpr *) expr)->largs); break; case T_CoalesceExpr: /* COALESCE keyword should always be the first thing */ loc = ((const CoalesceExpr *) expr)->location; break; case T_MinMaxExpr: /* GREATEST/LEAST keyword should always be the first thing */ loc = ((const MinMaxExpr *) expr)->location; break; case T_SQLValueFunction: /* function keyword should always be the first thing */ loc = ((const SQLValueFunction *) expr)->location; break; case T_XmlExpr: { const XmlExpr *xexpr = (const XmlExpr *) expr; /* consider both function name and leftmost arg */ loc = leftmostLoc(xexpr->location, exprLocation((Node *) xexpr->args)); } break; case T_NullTest: { const NullTest *nexpr = (const NullTest *) expr; /* Much as above */ loc = leftmostLoc(nexpr->location, exprLocation((Node *) nexpr->arg)); } break; case T_BooleanTest: { const BooleanTest *bexpr = (const BooleanTest *) expr; /* Much as above */ loc = leftmostLoc(bexpr->location, exprLocation((Node *) bexpr->arg)); } break; case T_CoerceToDomain: { const CoerceToDomain *cexpr = (const CoerceToDomain *) expr; /* Much as above */ loc = leftmostLoc(cexpr->location, exprLocation((Node *) cexpr->arg)); } break; case T_CoerceToDomainValue: loc = ((const CoerceToDomainValue *) expr)->location; break; case T_SetToDefault: loc = ((const SetToDefault *) expr)->location; break; case T_TargetEntry: /* just use argument's location */ loc = exprLocation((Node *) ((const TargetEntry *) expr)->expr); break; case T_IntoClause: /* use the contained RangeVar's location --- close enough */ loc = exprLocation((Node *) ((const IntoClause *) expr)->rel); break; case T_List: { /* report location of first list member that has a location */ ListCell *lc; loc = -1; /* just to suppress compiler warning */ foreach(lc, (const List *) expr) { loc = exprLocation((Node *) lfirst(lc)); if (loc >= 0) break; } } break; case T_A_Expr: { const A_Expr *aexpr = (const A_Expr *) expr; /* use leftmost of operator or left operand (if any) */ /* we assume right operand can't be to left of operator */ loc = leftmostLoc(aexpr->location, exprLocation(aexpr->lexpr)); } break; case T_ColumnRef: loc = ((const ColumnRef *) expr)->location; break; case T_ParamRef: loc = ((const ParamRef *) expr)->location; break; case T_A_Const: loc = ((const A_Const *) expr)->location; break; case T_FuncCall: { const FuncCall *fc = (const FuncCall *) expr; /* consider both function name and leftmost arg */ /* (we assume any ORDER BY nodes must be to right of name) */ loc = leftmostLoc(fc->location, exprLocation((Node *) fc->args)); } break; case T_A_ArrayExpr: /* the location points at ARRAY or [, which must be leftmost */ loc = ((const A_ArrayExpr *) expr)->location; break; case T_ResTarget: /* we need not examine the contained expression (if any) */ loc = ((const ResTarget *) expr)->location; break; case T_MultiAssignRef: loc = exprLocation(((const MultiAssignRef *) expr)->source); break; case T_TypeCast: { const TypeCast *tc = (const TypeCast *) expr; /* * This could represent CAST(), ::, or TypeName 'literal', so * any of the components might be leftmost. */ loc = exprLocation(tc->arg); loc = leftmostLoc(loc, tc->typeName->location); loc = leftmostLoc(loc, tc->location); } break; case T_CollateClause: /* just use argument's location */ loc = exprLocation(((const CollateClause *) expr)->arg); break; case T_SortBy: /* just use argument's location (ignore operator, if any) */ loc = exprLocation(((const SortBy *) expr)->node); break; case T_WindowDef: loc = ((const WindowDef *) expr)->location; break; case T_RangeTableSample: loc = ((const RangeTableSample *) expr)->location; break; case T_TypeName: loc = ((const TypeName *) expr)->location; break; case T_ColumnDef: loc = ((const ColumnDef *) expr)->location; break; case T_Constraint: loc = ((const Constraint *) expr)->location; break; case T_FunctionParameter: /* just use typename's location */ loc = exprLocation((Node *) ((const FunctionParameter *) expr)->argType); break; case T_XmlSerialize: /* XMLSERIALIZE keyword should always be the first thing */ loc = ((const XmlSerialize *) expr)->location; break; case T_GroupingSet: loc = ((const GroupingSet *) expr)->location; break; case T_WithClause: loc = ((const WithClause *) expr)->location; break; case T_InferClause: loc = ((const InferClause *) expr)->location; break; case T_OnConflictClause: loc = ((const OnConflictClause *) expr)->location; break; case T_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_PlaceHolderVar: /* just use argument's location */ loc = exprLocation((Node *) ((const PlaceHolderVar *) expr)->phexpr); break; case T_InferenceElem: /* just use nested expr's location */ loc = exprLocation((Node *) ((const InferenceElem *) expr)->expr); break; case T_PartitionElem: loc = ((const PartitionElem *) expr)->location; break; case T_PartitionSpec: loc = ((const PartitionSpec *) expr)->location; break; case T_PartitionBoundSpec: loc = ((const PartitionBoundSpec *) expr)->location; break; case T_PartitionRangeDatum: loc = ((const PartitionRangeDatum *) expr)->location; break; default: /* for any other node type it's just unknown... */ loc = -1; break; } return loc; } /* * leftmostLoc - support for exprLocation * * Take the minimum of two parse location values, but ignore unknowns */ static int leftmostLoc(int loc1, int loc2) { if (loc1 < 0) return loc2; else if (loc2 < 0) return loc1; else return Min(loc1, loc2); } /* * fix_opfuncids * Calculate opfuncid field from opno for each OpExpr node in given tree. * The given tree can be anything expression_tree_walker handles. * * The argument is modified in-place. (This is OK since we'd want the * same change for any node, even if it gets visited more than once due to * shared structure.) */ /* * set_opfuncid * Set the opfuncid (procedure OID) in an OpExpr node, * if it hasn't been set already. * * Because of struct equivalence, this can also be used for * DistinctExpr and NullIfExpr nodes. */ /* * set_sa_opfuncid * As above, for ScalarArrayOpExpr nodes. */ /* * check_functions_in_node - * apply checker() to each function OID contained in given expression node * * Returns true if the checker() function does; for nodes representing more * than one function call, returns true if the checker() function does so * for any of those functions. Returns false if node does not invoke any * SQL-visible function. Caller must not pass node == NULL. * * This function examines only the given node; it does not recurse into any * sub-expressions. Callers typically prefer to keep control of the recursion * for themselves, in case additional checks should be made, or because they * have special rules about which parts of the tree need to be visited. * * Note: we ignore MinMaxExpr, SQLValueFunction, XmlExpr, CoerceToDomain, * and NextValueExpr nodes, because they do not contain SQL function OIDs. * However, they can invoke SQL-visible functions, so callers should take * thought about how to treat them. */ /* * Standard expression-tree walking support * * We used to have near-duplicate code in many different routines that * understood how to recurse through an expression node tree. That was * a pain to maintain, and we frequently had bugs due to some particular * routine neglecting to support a particular node type. In most cases, * these routines only actually care about certain node types, and don't * care about other types except insofar as they have to recurse through * non-primitive node types. Therefore, we now provide generic tree-walking * logic to consolidate the redundant "boilerplate" code. There are * two versions: expression_tree_walker() and expression_tree_mutator(). */ /* * expression_tree_walker() is designed to support routines that traverse * a tree in a read-only fashion (although it will also work for routines * that modify nodes in-place but never add/delete/replace nodes). * A walker routine should look like this: * * bool my_walker (Node *node, my_struct *context) * { * if (node == NULL) * return false; * // check for nodes that special work is required for, eg: * if (IsA(node, Var)) * { * ... do special actions for Var nodes * } * else if (IsA(node, ...)) * { * ... do special actions for other node types * } * // for any node type not specially processed, do: * return expression_tree_walker(node, my_walker, (void *) context); * } * * The "context" argument points to a struct that holds whatever context * information the walker routine needs --- it can be used to return data * gathered by the walker, too. This argument is not touched by * expression_tree_walker, but it is passed down to recursive sub-invocations * of my_walker. The tree walk is started from a setup routine that * fills in the appropriate context struct, calls my_walker with the top-level * node of the tree, and then examines the results. * * The walker routine should return "false" to continue the tree walk, or * "true" to abort the walk and immediately return "true" to the top-level * caller. This can be used to short-circuit the traversal if the walker * has found what it came for. "false" is returned to the top-level caller * iff no invocation of the walker returned "true". * * The node types handled by expression_tree_walker include all those * normally found in target lists and qualifier clauses during the planning * stage. In particular, it handles List nodes since a cnf-ified qual clause * will have List structure at the top level, and it handles TargetEntry nodes * so that a scan of a target list can be handled without additional code. * Also, RangeTblRef, FromExpr, JoinExpr, and SetOperationStmt nodes are * handled, so that query jointrees and setOperation trees can be processed * without additional code. * * expression_tree_walker will handle SubLink nodes by recursing normally * into the "testexpr" subtree (which is an expression belonging to the outer * plan). It will also call the walker on the sub-Query node; however, when * expression_tree_walker itself is called on a Query node, it does nothing * and returns "false". The net effect is that unless the walker does * something special at a Query node, sub-selects will not be visited during * an expression tree walk. This is exactly the behavior wanted in many cases * --- and for those walkers that do want to recurse into sub-selects, special * behavior is typically needed anyway at the entry to a sub-select (such as * incrementing a depth counter). A walker that wants to examine sub-selects * should include code along the lines of: * * if (IsA(node, Query)) * { * adjust context for subquery; * result = query_tree_walker((Query *) node, my_walker, context, * 0); // adjust flags as needed * restore context if needed; * return result; * } * * query_tree_walker is a convenience routine (see below) that calls the * walker on all the expression subtrees of the given Query node. * * expression_tree_walker will handle SubPlan nodes by recursing normally * into the "testexpr" and the "args" list (which are expressions belonging to * the outer plan). It will not touch the completed subplan, however. Since * there is no link to the original Query, it is not possible to recurse into * subselects of an already-planned expression tree. This is OK for current * uses, but may need to be revisited in future. */ /* * query_tree_walker --- initiate a walk of a Query's expressions * * This routine exists just to reduce the number of places that need to know * where all the expression subtrees of a Query are. Note it can be used * for starting a walk at top level of a Query regardless of whether the * walker intends to descend into subqueries. It is also useful for * descending into subqueries within a walker. * * Some callers want to suppress visitation of certain items in the sub-Query, * typically because they need to process them specially, or don't actually * want to recurse into subqueries. This is supported by the flags argument, * which is the bitwise OR of flag values to add or suppress visitation of * indicated items. (More flag bits may be added as needed.) */ /* * range_table_walker is just the part of query_tree_walker that scans * a query's rangetable. This is split out since it can be useful on * its own. */ /* * Some callers even want to scan the expressions in individual RTEs. */ /* * expression_tree_mutator() is designed to support routines that make a * modified copy of an expression tree, with some nodes being added, * removed, or replaced by new subtrees. The original tree is (normally) * not changed. Each recursion level is responsible for returning a copy of * (or appropriately modified substitute for) the subtree it is handed. * A mutator routine should look like this: * * Node * my_mutator (Node *node, my_struct *context) * { * if (node == NULL) * return NULL; * // check for nodes that special work is required for, eg: * if (IsA(node, Var)) * { * ... create and return modified copy of Var node * } * else if (IsA(node, ...)) * { * ... do special transformations of other node types * } * // for any node type not specially processed, do: * return expression_tree_mutator(node, my_mutator, (void *) context); * } * * The "context" argument points to a struct that holds whatever context * information the mutator routine needs --- it can be used to return extra * data gathered by the mutator, too. This argument is not touched by * expression_tree_mutator, but it is passed down to recursive sub-invocations * of my_mutator. The tree walk is started from a setup routine that * fills in the appropriate context struct, calls my_mutator with the * top-level node of the tree, and does any required post-processing. * * Each level of recursion must return an appropriately modified Node. * If expression_tree_mutator() is called, it will make an exact copy * of the given Node, but invoke my_mutator() to copy the sub-node(s) * of that Node. In this way, my_mutator() has full control over the * copying process but need not directly deal with expression trees * that it has no interest in. * * Just as for expression_tree_walker, the node types handled by * expression_tree_mutator include all those normally found in target lists * and qualifier clauses during the planning stage. * * expression_tree_mutator will handle SubLink nodes by recursing normally * into the "testexpr" subtree (which is an expression belonging to the outer * plan). It will also call the mutator on the sub-Query node; however, when * expression_tree_mutator itself is called on a Query node, it does nothing * and returns the unmodified Query node. The net effect is that unless the * mutator does something special at a Query node, sub-selects will not be * visited or modified; the original sub-select will be linked to by the new * SubLink node. Mutators that want to descend into sub-selects will usually * do so by recognizing Query nodes and calling query_tree_mutator (below). * * expression_tree_mutator will handle a SubPlan node by recursing into the * "testexpr" and the "args" list (which belong to the outer plan), but it * will simply copy the link to the inner plan, since that's typically what * expression tree mutators want. A mutator that wants to modify the subplan * can force appropriate behavior by recognizing SubPlan expression nodes * and doing the right thing. */ #define FLATCOPY(newnode, node, nodetype) \ ( (newnode) = (nodetype *) palloc(sizeof(nodetype)), \ memcpy((newnode), (node), sizeof(nodetype)) ) #define 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(Node *node, bool (*walker) (), void *context) { ListCell *temp; /* * The walker has already visited the current node, and so we need only * recurse into any sub-nodes it has. */ if (node == NULL) return false; /* Guard against stack overflow due to overly complex expressions */ check_stack_depth(); switch (nodeTag(node)) { case T_SetToDefault: case T_CurrentOfExpr: case T_SQLValueFunction: case T_Integer: case T_Float: case T_Boolean: case T_String: case T_BitString: case T_ParamRef: case T_A_Const: case T_A_Star: /* primitive node types with no subnodes */ break; case T_Alias: /* we assume the colnames list isn't interesting */ break; case T_RangeVar: return walker(((RangeVar *) node)->alias, context); case T_GroupingFunc: return walker(((GroupingFunc *) node)->args, context); case T_SubLink: { SubLink *sublink = (SubLink *) node; if (walker(sublink->testexpr, context)) return true; /* we assume the operName is not interesting */ if (walker(sublink->subselect, context)) return true; } break; case T_CaseExpr: { CaseExpr *caseexpr = (CaseExpr *) node; if (walker(caseexpr->arg, context)) return true; /* we assume walker doesn't care about CaseWhens, either */ foreach(temp, caseexpr->args) { CaseWhen *when = lfirst_node(CaseWhen, temp); if (walker(when->expr, context)) return true; if (walker(when->result, context)) return true; } if (walker(caseexpr->defresult, context)) return true; } break; case T_RowExpr: /* Assume colnames isn't interesting */ return walker(((RowExpr *) node)->args, context); case T_CoalesceExpr: return walker(((CoalesceExpr *) node)->args, context); case T_MinMaxExpr: return walker(((MinMaxExpr *) node)->args, context); case T_XmlExpr: { XmlExpr *xexpr = (XmlExpr *) node; if (walker(xexpr->named_args, context)) return true; /* we assume walker doesn't care about arg_names */ if (walker(xexpr->args, context)) return true; } break; case T_NullTest: return walker(((NullTest *) node)->arg, context); case T_BooleanTest: return walker(((BooleanTest *) node)->arg, context); case T_JoinExpr: { JoinExpr *join = (JoinExpr *) node; if (walker(join->larg, context)) return true; if (walker(join->rarg, context)) return true; if (walker(join->quals, context)) return true; if (walker(join->alias, context)) return true; /* using list is deemed uninteresting */ } break; case T_IntoClause: { IntoClause *into = (IntoClause *) node; if (walker(into->rel, context)) return true; /* colNames, options are deemed uninteresting */ /* viewQuery should be null in raw parsetree, but check it */ if (walker(into->viewQuery, context)) return true; } break; case T_List: foreach(temp, (List *) node) { if (walker((Node *) lfirst(temp), context)) return true; } break; case T_InsertStmt: { InsertStmt *stmt = (InsertStmt *) node; if (walker(stmt->relation, context)) return true; if (walker(stmt->cols, context)) return true; if (walker(stmt->selectStmt, context)) return true; if (walker(stmt->onConflictClause, context)) return true; if (walker(stmt->returningList, context)) return true; if (walker(stmt->withClause, context)) return true; } break; case T_DeleteStmt: { DeleteStmt *stmt = (DeleteStmt *) node; if (walker(stmt->relation, context)) return true; if (walker(stmt->usingClause, context)) return true; if (walker(stmt->whereClause, context)) return true; if (walker(stmt->returningList, context)) return true; if (walker(stmt->withClause, context)) return true; } break; case T_UpdateStmt: { UpdateStmt *stmt = (UpdateStmt *) node; if (walker(stmt->relation, context)) return true; if (walker(stmt->targetList, context)) return true; if (walker(stmt->whereClause, context)) return true; if (walker(stmt->fromClause, context)) return true; if (walker(stmt->returningList, context)) return true; if (walker(stmt->withClause, context)) return true; } break; case T_MergeStmt: { MergeStmt *stmt = (MergeStmt *) node; if (walker(stmt->relation, context)) return true; if (walker(stmt->sourceRelation, context)) return true; if (walker(stmt->joinCondition, context)) return true; if (walker(stmt->mergeWhenClauses, context)) return true; if (walker(stmt->withClause, context)) return true; } break; case T_MergeWhenClause: { MergeWhenClause *mergeWhenClause = (MergeWhenClause *) node; if (walker(mergeWhenClause->condition, context)) return true; if (walker(mergeWhenClause->targetList, context)) return true; if (walker(mergeWhenClause->values, context)) return true; } break; case T_SelectStmt: { SelectStmt *stmt = (SelectStmt *) node; if (walker(stmt->distinctClause, context)) return true; if (walker(stmt->intoClause, context)) return true; if (walker(stmt->targetList, context)) return true; if (walker(stmt->fromClause, context)) return true; if (walker(stmt->whereClause, context)) return true; if (walker(stmt->groupClause, context)) return true; if (walker(stmt->havingClause, context)) return true; if (walker(stmt->windowClause, context)) return true; if (walker(stmt->valuesLists, context)) return true; if (walker(stmt->sortClause, context)) return true; if (walker(stmt->limitOffset, context)) return true; if (walker(stmt->limitCount, context)) return true; if (walker(stmt->lockingClause, context)) return true; if (walker(stmt->withClause, context)) return true; if (walker(stmt->larg, context)) return true; if (walker(stmt->rarg, context)) return true; } break; case T_PLAssignStmt: { PLAssignStmt *stmt = (PLAssignStmt *) node; if (walker(stmt->indirection, context)) return true; if (walker(stmt->val, context)) return true; } break; case T_A_Expr: { A_Expr *expr = (A_Expr *) node; if (walker(expr->lexpr, context)) return true; if (walker(expr->rexpr, context)) return true; /* operator name is deemed uninteresting */ } break; case T_BoolExpr: { BoolExpr *expr = (BoolExpr *) node; if (walker(expr->args, context)) return true; } break; case T_ColumnRef: /* we assume the fields contain nothing interesting */ break; case T_FuncCall: { FuncCall *fcall = (FuncCall *) node; if (walker(fcall->args, context)) return true; if (walker(fcall->agg_order, context)) return true; if (walker(fcall->agg_filter, context)) return true; if (walker(fcall->over, context)) return true; /* function name is deemed uninteresting */ } break; case T_NamedArgExpr: return walker(((NamedArgExpr *) node)->arg, context); case T_A_Indices: { A_Indices *indices = (A_Indices *) node; if (walker(indices->lidx, context)) return true; if (walker(indices->uidx, context)) return true; } break; case T_A_Indirection: { A_Indirection *indir = (A_Indirection *) node; if (walker(indir->arg, context)) return true; if (walker(indir->indirection, context)) return true; } break; case T_A_ArrayExpr: return walker(((A_ArrayExpr *) node)->elements, context); case T_ResTarget: { ResTarget *rt = (ResTarget *) node; if (walker(rt->indirection, context)) return true; if (walker(rt->val, context)) return true; } break; case T_MultiAssignRef: return walker(((MultiAssignRef *) node)->source, context); case T_TypeCast: { TypeCast *tc = (TypeCast *) node; if (walker(tc->arg, context)) return true; if (walker(tc->typeName, context)) return true; } break; case T_CollateClause: return walker(((CollateClause *) node)->arg, context); case T_SortBy: return walker(((SortBy *) node)->node, context); case T_WindowDef: { WindowDef *wd = (WindowDef *) node; if (walker(wd->partitionClause, context)) return true; if (walker(wd->orderClause, context)) return true; if (walker(wd->startOffset, context)) return true; if (walker(wd->endOffset, context)) return true; } break; case T_RangeSubselect: { RangeSubselect *rs = (RangeSubselect *) node; if (walker(rs->subquery, context)) return true; if (walker(rs->alias, context)) return true; } break; case T_RangeFunction: { RangeFunction *rf = (RangeFunction *) node; if (walker(rf->functions, context)) return true; if (walker(rf->alias, context)) return true; if (walker(rf->coldeflist, context)) return true; } break; case T_RangeTableSample: { RangeTableSample *rts = (RangeTableSample *) node; if (walker(rts->relation, context)) return true; /* method name is deemed uninteresting */ if (walker(rts->args, context)) return true; if (walker(rts->repeatable, context)) return true; } break; case T_RangeTableFunc: { RangeTableFunc *rtf = (RangeTableFunc *) node; if (walker(rtf->docexpr, context)) return true; if (walker(rtf->rowexpr, context)) return true; if (walker(rtf->namespaces, context)) return true; if (walker(rtf->columns, context)) return true; if (walker(rtf->alias, context)) return true; } break; case T_RangeTableFuncCol: { RangeTableFuncCol *rtfc = (RangeTableFuncCol *) node; if (walker(rtfc->colexpr, context)) return true; if (walker(rtfc->coldefexpr, context)) return true; } break; case T_TypeName: { TypeName *tn = (TypeName *) node; if (walker(tn->typmods, context)) return true; if (walker(tn->arrayBounds, context)) return true; /* type name itself is deemed uninteresting */ } break; case T_ColumnDef: { ColumnDef *coldef = (ColumnDef *) node; if (walker(coldef->typeName, context)) return true; if (walker(coldef->compression, context)) return true; if (walker(coldef->raw_default, context)) return true; if (walker(coldef->collClause, context)) return true; /* for now, constraints are ignored */ } break; case T_IndexElem: { IndexElem *indelem = (IndexElem *) node; if (walker(indelem->expr, context)) return true; /* collation and opclass names are deemed uninteresting */ } break; case T_GroupingSet: return walker(((GroupingSet *) node)->content, context); case T_LockingClause: return walker(((LockingClause *) node)->lockedRels, context); case T_XmlSerialize: { XmlSerialize *xs = (XmlSerialize *) node; if (walker(xs->expr, context)) return true; if (walker(xs->typeName, context)) return true; } break; case T_WithClause: return walker(((WithClause *) node)->ctes, context); case T_InferClause: { InferClause *stmt = (InferClause *) node; if (walker(stmt->indexElems, context)) return true; if (walker(stmt->whereClause, context)) return true; } break; case T_OnConflictClause: { OnConflictClause *stmt = (OnConflictClause *) node; if (walker(stmt->infer, context)) return true; if (walker(stmt->targetList, context)) return true; if (walker(stmt->whereClause, context)) return true; } break; case T_CommonTableExpr: /* search_clause and cycle_clause are not interesting here */ return walker(((CommonTableExpr *) node)->ctequery, context); default: elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); break; } return false; } /* * planstate_tree_walker --- walk plan state trees * * The walker has already visited the current node, and so we need only * recurse into any sub-nodes it has. */ /* * Walk a list of SubPlans (or initPlans, which also use SubPlan nodes). */ /* * Walk the constituent plans of a ModifyTable, Append, MergeAppend, * BitmapAnd, or BitmapOr node. */ pg_query-4.2.3/ext/pg_query/src_common_keywords.c0000644000004100000410000000225314510636647022306 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - ScanKeywordCategories *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * keywords.c * PostgreSQL's list of SQL keywords * * * Portions Copyright (c) 1996-2022, 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 pg_query-4.2.3/ext/pg_query/src_backend_nodes_equalfuncs.c0000644000004100000410000027733614510636647024114 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - equal * - _equalAlias * - _equalRangeVar * - _equalTableFunc * - _equalIntoClause * - _equalVar * - _equalConst * - _equalParam * - _equalAggref * - _equalGroupingFunc * - _equalWindowFunc * - _equalSubscriptingRef * - _equalFuncExpr * - _equalNamedArgExpr * - _equalOpExpr * - _equalDistinctExpr * - _equalNullIfExpr * - _equalScalarArrayOpExpr * - _equalBoolExpr * - _equalSubLink * - _equalSubPlan * - _equalAlternativeSubPlan * - _equalFieldSelect * - _equalFieldStore * - _equalRelabelType * - _equalCoerceViaIO * - _equalArrayCoerceExpr * - _equalConvertRowtypeExpr * - _equalCollateExpr * - _equalCaseExpr * - _equalCaseWhen * - _equalCaseTestExpr * - _equalArrayExpr * - _equalRowExpr * - _equalRowCompareExpr * - _equalCoalesceExpr * - _equalMinMaxExpr * - _equalSQLValueFunction * - _equalXmlExpr * - _equalNullTest * - _equalBooleanTest * - _equalCoerceToDomain * - _equalCoerceToDomainValue * - _equalSetToDefault * - _equalCurrentOfExpr * - _equalNextValueExpr * - _equalInferenceElem * - _equalTargetEntry * - _equalRangeTblRef * - _equalFromExpr * - _equalOnConflictExpr * - _equalJoinExpr * - _equalPathKey * - _equalRestrictInfo * - _equalPlaceHolderVar * - _equalSpecialJoinInfo * - _equalAppendRelInfo * - _equalPlaceHolderInfo * - _equalList * - _equalInteger * - _equalFloat * - _equalBoolean * - _equalString * - _equalBitString * - _equalExtensibleNode * - _equalQuery * - _equalRawStmt * - _equalInsertStmt * - _equalDeleteStmt * - _equalUpdateStmt * - _equalMergeStmt * - _equalSelectStmt * - _equalSetOperationStmt * - _equalReturnStmt * - _equalPLAssignStmt * - _equalAlterTableStmt * - _equalAlterTableCmd * - _equalAlterCollationStmt * - _equalAlterDomainStmt * - _equalGrantStmt * - _equalGrantRoleStmt * - _equalAlterDefaultPrivilegesStmt * - _equalDeclareCursorStmt * - _equalClosePortalStmt * - _equalCallStmt * - _equalClusterStmt * - _equalCopyStmt * - _equalCreateStmt * - _equalTableLikeClause * - _equalDefineStmt * - _equalDropStmt * - _equalTruncateStmt * - _equalCommentStmt * - _equalSecLabelStmt * - _equalFetchStmt * - _equalIndexStmt * - _equalCreateStatsStmt * - _equalAlterStatsStmt * - _equalCreateFunctionStmt * - _equalFunctionParameter * - _equalAlterFunctionStmt * - _equalDoStmt * - _equalRenameStmt * - _equalAlterObjectDependsStmt * - _equalAlterObjectSchemaStmt * - _equalAlterOwnerStmt * - _equalAlterOperatorStmt * - _equalAlterTypeStmt * - _equalRuleStmt * - _equalNotifyStmt * - _equalListenStmt * - _equalUnlistenStmt * - _equalTransactionStmt * - _equalCompositeTypeStmt * - _equalCreateEnumStmt * - _equalCreateRangeStmt * - _equalAlterEnumStmt * - _equalViewStmt * - _equalLoadStmt * - _equalCreateDomainStmt * - _equalCreateOpClassStmt * - _equalCreateOpClassItem * - _equalCreateOpFamilyStmt * - _equalAlterOpFamilyStmt * - _equalCreatedbStmt * - _equalAlterDatabaseStmt * - _equalAlterDatabaseRefreshCollStmt * - _equalAlterDatabaseSetStmt * - _equalDropdbStmt * - _equalVacuumStmt * - _equalVacuumRelation * - _equalExplainStmt * - _equalCreateTableAsStmt * - _equalRefreshMatViewStmt * - _equalReplicaIdentityStmt * - _equalAlterSystemStmt * - _equalCreateSeqStmt * - _equalAlterSeqStmt * - _equalVariableSetStmt * - _equalVariableShowStmt * - _equalDiscardStmt * - _equalCreateTableSpaceStmt * - _equalDropTableSpaceStmt * - _equalAlterTableSpaceOptionsStmt * - _equalAlterTableMoveAllStmt * - _equalCreateExtensionStmt * - _equalAlterExtensionStmt * - _equalAlterExtensionContentsStmt * - _equalCreateFdwStmt * - _equalAlterFdwStmt * - _equalCreateForeignServerStmt * - _equalAlterForeignServerStmt * - _equalCreateUserMappingStmt * - _equalAlterUserMappingStmt * - _equalDropUserMappingStmt * - _equalCreateForeignTableStmt * - _equalImportForeignSchemaStmt * - _equalCreateTransformStmt * - _equalCreateAmStmt * - _equalCreateTrigStmt * - _equalCreateEventTrigStmt * - _equalAlterEventTrigStmt * - _equalCreatePLangStmt * - _equalCreateRoleStmt * - _equalAlterRoleStmt * - _equalAlterRoleSetStmt * - _equalDropRoleStmt * - _equalLockStmt * - _equalConstraintsSetStmt * - _equalReindexStmt * - _equalCreateSchemaStmt * - _equalCreateConversionStmt * - _equalCreateCastStmt * - _equalPrepareStmt * - _equalExecuteStmt * - _equalDeallocateStmt * - _equalDropOwnedStmt * - _equalReassignOwnedStmt * - _equalAlterTSDictionaryStmt * - _equalAlterTSConfigurationStmt * - _equalCreatePolicyStmt * - _equalAlterPolicyStmt * - _equalCreatePublicationStmt * - _equalAlterPublicationStmt * - _equalCreateSubscriptionStmt * - _equalAlterSubscriptionStmt * - _equalDropSubscriptionStmt * - _equalA_Expr * - _equalColumnRef * - _equalParamRef * - _equalA_Const * - _equalFuncCall * - _equalA_Star * - _equalA_Indices * - _equalA_Indirection * - _equalA_ArrayExpr * - _equalResTarget * - _equalMultiAssignRef * - _equalTypeCast * - _equalCollateClause * - _equalSortBy * - _equalWindowDef * - _equalRangeSubselect * - _equalRangeFunction * - _equalRangeTableSample * - _equalRangeTableFunc * - _equalRangeTableFuncCol * - _equalTypeName * - _equalIndexElem * - _equalStatsElem * - _equalColumnDef * - _equalConstraint * - _equalDefElem * - _equalLockingClause * - _equalRangeTblEntry * - _equalRangeTblFunction * - _equalTableSampleClause * - _equalWithCheckOption * - _equalSortGroupClause * - _equalGroupingSet * - _equalWindowClause * - _equalRowMarkClause * - _equalWithClause * - _equalInferClause * - _equalOnConflictClause * - _equalCTESearchClause * - _equalCTECycleClause * - _equalCommonTableExpr * - _equalMergeWhenClause * - _equalMergeAction * - _equalObjectWithArgs * - _equalAccessPriv * - _equalXmlSerialize * - _equalRoleSpec * - _equalTriggerTransition * - _equalPartitionElem * - _equalPartitionSpec * - _equalPartitionBoundSpec * - _equalPartitionRangeDatum * - _equalPartitionCmd * - _equalPublicationObject * - _equalPublicationTable *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * equalfuncs.c * Equality functions to compare node trees. * * NOTE: we currently support comparing all node types found in parse * trees. We do not support comparing executor state trees; there * is no need for that, and no point in maintaining all the code that * would be needed. We also do not support comparing Path trees, mainly * because the circular linkages between RelOptInfo and Path nodes can't * be handled easily in a simple depth-first traversal. * * Currently, in fact, equal() doesn't know how to compare Plan trees * either. This might need to be fixed someday. * * NOTE: it is intentional that parse location fields (in nodes that have * one) are not compared. This is because we want, for example, a variable * "x" to be considered equal() to another reference to "x" in the query. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/backend/nodes/equalfuncs.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "miscadmin.h" #include "nodes/extensible.h" #include "nodes/pathnodes.h" #include "utils/datum.h" /* * Macros to simplify comparison of different kinds of fields. Use these * wherever possible to reduce the chance for silly typos. Note that these * hard-wire the convention that the local variables in an Equal routine are * named 'a' and 'b'. */ /* Compare a simple scalar field (int, float, bool, enum, etc) */ #define COMPARE_SCALAR_FIELD(fldname) \ do { \ if (a->fldname != b->fldname) \ return false; \ } while (0) /* Compare a field that is a pointer to some kind of Node or Node tree */ #define COMPARE_NODE_FIELD(fldname) \ do { \ if (!equal(a->fldname, b->fldname)) \ return false; \ } while (0) /* Compare a field that is a pointer to a Bitmapset */ #define COMPARE_BITMAPSET_FIELD(fldname) \ do { \ if (!bms_equal(a->fldname, b->fldname)) \ return false; \ } while (0) /* Compare a field that is a pointer to a C string, or perhaps NULL */ #define COMPARE_STRING_FIELD(fldname) \ do { \ if (!equalstr(a->fldname, b->fldname)) \ return false; \ } while (0) /* Macro for comparing string fields that might be NULL */ #define equalstr(a, b) \ (((a) != NULL && (b) != NULL) ? (strcmp(a, b) == 0) : (a) == (b)) /* Compare a field that is 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) /* * Stuff from primnodes.h */ static bool _equalAlias(const Alias *a, const Alias *b) { COMPARE_STRING_FIELD(aliasname); COMPARE_NODE_FIELD(colnames); return true; } static bool _equalRangeVar(const RangeVar *a, const RangeVar *b) { COMPARE_STRING_FIELD(catalogname); COMPARE_STRING_FIELD(schemaname); COMPARE_STRING_FIELD(relname); COMPARE_SCALAR_FIELD(inh); COMPARE_SCALAR_FIELD(relpersistence); COMPARE_NODE_FIELD(alias); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalTableFunc(const TableFunc *a, const TableFunc *b) { COMPARE_NODE_FIELD(ns_uris); COMPARE_NODE_FIELD(ns_names); COMPARE_NODE_FIELD(docexpr); COMPARE_NODE_FIELD(rowexpr); COMPARE_NODE_FIELD(colnames); COMPARE_NODE_FIELD(coltypes); COMPARE_NODE_FIELD(coltypmods); COMPARE_NODE_FIELD(colcollations); COMPARE_NODE_FIELD(colexprs); COMPARE_NODE_FIELD(coldefexprs); COMPARE_BITMAPSET_FIELD(notnulls); COMPARE_SCALAR_FIELD(ordinalitycol); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalIntoClause(const IntoClause *a, const IntoClause *b) { COMPARE_NODE_FIELD(rel); COMPARE_NODE_FIELD(colNames); COMPARE_STRING_FIELD(accessMethod); COMPARE_NODE_FIELD(options); COMPARE_SCALAR_FIELD(onCommit); COMPARE_STRING_FIELD(tableSpaceName); COMPARE_NODE_FIELD(viewQuery); COMPARE_SCALAR_FIELD(skipData); return true; } /* * We don't need an _equalExpr because Expr is an abstract supertype which * should never actually get instantiated. Also, since it has no common * fields except NodeTag, there's no need for a helper routine to factor * out comparing the common fields... */ static bool _equalVar(const Var *a, const Var *b) { COMPARE_SCALAR_FIELD(varno); COMPARE_SCALAR_FIELD(varattno); COMPARE_SCALAR_FIELD(vartype); COMPARE_SCALAR_FIELD(vartypmod); COMPARE_SCALAR_FIELD(varcollid); COMPARE_SCALAR_FIELD(varlevelsup); /* * varnosyn/varattnosyn are intentionally ignored here, because Vars with * different syntactic identifiers are semantically the same as long as * their varno/varattno match. */ COMPARE_LOCATION_FIELD(location); return true; } static bool _equalConst(const Const *a, const Const *b) { COMPARE_SCALAR_FIELD(consttype); COMPARE_SCALAR_FIELD(consttypmod); COMPARE_SCALAR_FIELD(constcollid); COMPARE_SCALAR_FIELD(constlen); COMPARE_SCALAR_FIELD(constisnull); COMPARE_SCALAR_FIELD(constbyval); COMPARE_LOCATION_FIELD(location); /* * We treat all NULL constants of the same type as equal. Someday this * might need to change? But datumIsEqual doesn't work on nulls, so... */ if (a->constisnull) return true; return datumIsEqual(a->constvalue, b->constvalue, a->constbyval, a->constlen); } static bool _equalParam(const Param *a, const Param *b) { COMPARE_SCALAR_FIELD(paramkind); COMPARE_SCALAR_FIELD(paramid); COMPARE_SCALAR_FIELD(paramtype); COMPARE_SCALAR_FIELD(paramtypmod); COMPARE_SCALAR_FIELD(paramcollid); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalAggref(const Aggref *a, const Aggref *b) { COMPARE_SCALAR_FIELD(aggfnoid); COMPARE_SCALAR_FIELD(aggtype); COMPARE_SCALAR_FIELD(aggcollid); COMPARE_SCALAR_FIELD(inputcollid); /* ignore aggtranstype since it might not be set yet */ COMPARE_NODE_FIELD(aggargtypes); COMPARE_NODE_FIELD(aggdirectargs); COMPARE_NODE_FIELD(args); COMPARE_NODE_FIELD(aggorder); COMPARE_NODE_FIELD(aggdistinct); COMPARE_NODE_FIELD(aggfilter); COMPARE_SCALAR_FIELD(aggstar); COMPARE_SCALAR_FIELD(aggvariadic); COMPARE_SCALAR_FIELD(aggkind); COMPARE_SCALAR_FIELD(agglevelsup); COMPARE_SCALAR_FIELD(aggsplit); COMPARE_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); /* * We must not compare the refs or cols field */ COMPARE_SCALAR_FIELD(agglevelsup); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalWindowFunc(const WindowFunc *a, const WindowFunc *b) { COMPARE_SCALAR_FIELD(winfnoid); COMPARE_SCALAR_FIELD(wintype); COMPARE_SCALAR_FIELD(wincollid); COMPARE_SCALAR_FIELD(inputcollid); COMPARE_NODE_FIELD(args); COMPARE_NODE_FIELD(aggfilter); COMPARE_SCALAR_FIELD(winref); COMPARE_SCALAR_FIELD(winstar); COMPARE_SCALAR_FIELD(winagg); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalSubscriptingRef(const SubscriptingRef *a, const SubscriptingRef *b) { COMPARE_SCALAR_FIELD(refcontainertype); COMPARE_SCALAR_FIELD(refelemtype); COMPARE_SCALAR_FIELD(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_COERCIONFORM_FIELD(funcformat); COMPARE_SCALAR_FIELD(funccollid); COMPARE_SCALAR_FIELD(inputcollid); COMPARE_NODE_FIELD(args); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalNamedArgExpr(const NamedArgExpr *a, const NamedArgExpr *b) { COMPARE_NODE_FIELD(arg); COMPARE_STRING_FIELD(name); COMPARE_SCALAR_FIELD(argnumber); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalOpExpr(const OpExpr *a, const OpExpr *b) { COMPARE_SCALAR_FIELD(opno); /* * Special-case opfuncid: it is allowable for it to differ if one node * contains zero and the other doesn't. This just means that the one node * isn't as far along in the parse/plan pipeline and hasn't had the * opfuncid cache filled yet. */ if (a->opfuncid != b->opfuncid && a->opfuncid != 0 && b->opfuncid != 0) return false; COMPARE_SCALAR_FIELD(opresulttype); COMPARE_SCALAR_FIELD(opretset); COMPARE_SCALAR_FIELD(opcollid); COMPARE_SCALAR_FIELD(inputcollid); COMPARE_NODE_FIELD(args); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalDistinctExpr(const DistinctExpr *a, const DistinctExpr *b) { COMPARE_SCALAR_FIELD(opno); /* * Special-case opfuncid: it is allowable for it to differ if one node * contains zero and the other doesn't. This just means that the one node * isn't as far along in the parse/plan pipeline and hasn't had the * opfuncid cache filled yet. */ if (a->opfuncid != b->opfuncid && a->opfuncid != 0 && b->opfuncid != 0) return false; COMPARE_SCALAR_FIELD(opresulttype); COMPARE_SCALAR_FIELD(opretset); COMPARE_SCALAR_FIELD(opcollid); COMPARE_SCALAR_FIELD(inputcollid); COMPARE_NODE_FIELD(args); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalNullIfExpr(const NullIfExpr *a, const NullIfExpr *b) { COMPARE_SCALAR_FIELD(opno); /* * Special-case opfuncid: it is allowable for it to differ if one node * contains zero and the other doesn't. This just means that the one node * isn't as far along in the parse/plan pipeline and hasn't had the * opfuncid cache filled yet. */ if (a->opfuncid != b->opfuncid && a->opfuncid != 0 && b->opfuncid != 0) return false; COMPARE_SCALAR_FIELD(opresulttype); COMPARE_SCALAR_FIELD(opretset); COMPARE_SCALAR_FIELD(opcollid); COMPARE_SCALAR_FIELD(inputcollid); COMPARE_NODE_FIELD(args); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalScalarArrayOpExpr(const ScalarArrayOpExpr *a, const ScalarArrayOpExpr *b) { COMPARE_SCALAR_FIELD(opno); /* * Special-case opfuncid: it is allowable for it to differ if one node * contains zero and the other doesn't. This just means that the one node * isn't as far along in the parse/plan pipeline and hasn't had the * opfuncid cache filled yet. */ if (a->opfuncid != b->opfuncid && a->opfuncid != 0 && b->opfuncid != 0) return false; /* As above, hashfuncid may differ too */ if (a->hashfuncid != b->hashfuncid && a->hashfuncid != 0 && b->hashfuncid != 0) return false; /* Likewise for the negfuncid */ 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_COERCIONFORM_FIELD(relabelformat); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCoerceViaIO(const CoerceViaIO *a, const CoerceViaIO *b) { COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(resulttype); COMPARE_SCALAR_FIELD(resultcollid); COMPARE_COERCIONFORM_FIELD(coerceformat); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalArrayCoerceExpr(const ArrayCoerceExpr *a, const ArrayCoerceExpr *b) { COMPARE_NODE_FIELD(arg); COMPARE_NODE_FIELD(elemexpr); COMPARE_SCALAR_FIELD(resulttype); COMPARE_SCALAR_FIELD(resulttypmod); COMPARE_SCALAR_FIELD(resultcollid); COMPARE_COERCIONFORM_FIELD(coerceformat); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalConvertRowtypeExpr(const ConvertRowtypeExpr *a, const ConvertRowtypeExpr *b) { COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(resulttype); COMPARE_COERCIONFORM_FIELD(convertformat); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCollateExpr(const CollateExpr *a, const CollateExpr *b) { COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(collOid); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCaseExpr(const CaseExpr *a, const CaseExpr *b) { COMPARE_SCALAR_FIELD(casetype); COMPARE_SCALAR_FIELD(casecollid); COMPARE_NODE_FIELD(arg); COMPARE_NODE_FIELD(args); COMPARE_NODE_FIELD(defresult); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCaseWhen(const CaseWhen *a, const CaseWhen *b) { COMPARE_NODE_FIELD(expr); COMPARE_NODE_FIELD(result); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCaseTestExpr(const CaseTestExpr *a, const CaseTestExpr *b) { COMPARE_SCALAR_FIELD(typeId); COMPARE_SCALAR_FIELD(typeMod); COMPARE_SCALAR_FIELD(collation); return true; } static bool _equalArrayExpr(const ArrayExpr *a, const ArrayExpr *b) { COMPARE_SCALAR_FIELD(array_typeid); COMPARE_SCALAR_FIELD(array_collid); COMPARE_SCALAR_FIELD(element_typeid); COMPARE_NODE_FIELD(elements); COMPARE_SCALAR_FIELD(multidims); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalRowExpr(const RowExpr *a, const RowExpr *b) { COMPARE_NODE_FIELD(args); COMPARE_SCALAR_FIELD(row_typeid); COMPARE_COERCIONFORM_FIELD(row_format); COMPARE_NODE_FIELD(colnames); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalRowCompareExpr(const RowCompareExpr *a, const RowCompareExpr *b) { COMPARE_SCALAR_FIELD(rctype); COMPARE_NODE_FIELD(opnos); COMPARE_NODE_FIELD(opfamilies); COMPARE_NODE_FIELD(inputcollids); COMPARE_NODE_FIELD(largs); COMPARE_NODE_FIELD(rargs); return true; } static bool _equalCoalesceExpr(const CoalesceExpr *a, const CoalesceExpr *b) { COMPARE_SCALAR_FIELD(coalescetype); COMPARE_SCALAR_FIELD(coalescecollid); COMPARE_NODE_FIELD(args); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalMinMaxExpr(const MinMaxExpr *a, const MinMaxExpr *b) { COMPARE_SCALAR_FIELD(minmaxtype); COMPARE_SCALAR_FIELD(minmaxcollid); COMPARE_SCALAR_FIELD(inputcollid); COMPARE_SCALAR_FIELD(op); COMPARE_NODE_FIELD(args); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalSQLValueFunction(const SQLValueFunction *a, const SQLValueFunction *b) { COMPARE_SCALAR_FIELD(op); COMPARE_SCALAR_FIELD(type); COMPARE_SCALAR_FIELD(typmod); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalXmlExpr(const XmlExpr *a, const XmlExpr *b) { COMPARE_SCALAR_FIELD(op); COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(named_args); COMPARE_NODE_FIELD(arg_names); COMPARE_NODE_FIELD(args); COMPARE_SCALAR_FIELD(xmloption); COMPARE_SCALAR_FIELD(type); COMPARE_SCALAR_FIELD(typmod); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalNullTest(const NullTest *a, const NullTest *b) { COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(nulltesttype); COMPARE_SCALAR_FIELD(argisrow); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalBooleanTest(const BooleanTest *a, const BooleanTest *b) { COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(booltesttype); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCoerceToDomain(const CoerceToDomain *a, const CoerceToDomain *b) { COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(resulttype); COMPARE_SCALAR_FIELD(resulttypmod); COMPARE_SCALAR_FIELD(resultcollid); COMPARE_COERCIONFORM_FIELD(coercionformat); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCoerceToDomainValue(const CoerceToDomainValue *a, const CoerceToDomainValue *b) { COMPARE_SCALAR_FIELD(typeId); COMPARE_SCALAR_FIELD(typeMod); COMPARE_SCALAR_FIELD(collation); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalSetToDefault(const SetToDefault *a, const SetToDefault *b) { COMPARE_SCALAR_FIELD(typeId); COMPARE_SCALAR_FIELD(typeMod); COMPARE_SCALAR_FIELD(collation); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCurrentOfExpr(const CurrentOfExpr *a, const CurrentOfExpr *b) { COMPARE_SCALAR_FIELD(cvarno); COMPARE_STRING_FIELD(cursor_name); COMPARE_SCALAR_FIELD(cursor_param); return true; } static bool _equalNextValueExpr(const NextValueExpr *a, const NextValueExpr *b) { COMPARE_SCALAR_FIELD(seqid); COMPARE_SCALAR_FIELD(typeId); return true; } static bool _equalInferenceElem(const InferenceElem *a, const InferenceElem *b) { COMPARE_NODE_FIELD(expr); COMPARE_SCALAR_FIELD(infercollid); COMPARE_SCALAR_FIELD(inferopclass); return true; } static bool _equalTargetEntry(const TargetEntry *a, const TargetEntry *b) { COMPARE_NODE_FIELD(expr); COMPARE_SCALAR_FIELD(resno); COMPARE_STRING_FIELD(resname); COMPARE_SCALAR_FIELD(ressortgroupref); COMPARE_SCALAR_FIELD(resorigtbl); COMPARE_SCALAR_FIELD(resorigcol); COMPARE_SCALAR_FIELD(resjunk); return true; } static bool _equalRangeTblRef(const RangeTblRef *a, const RangeTblRef *b) { COMPARE_SCALAR_FIELD(rtindex); return true; } static bool _equalJoinExpr(const JoinExpr *a, const JoinExpr *b) { COMPARE_SCALAR_FIELD(jointype); COMPARE_SCALAR_FIELD(isNatural); COMPARE_NODE_FIELD(larg); COMPARE_NODE_FIELD(rarg); COMPARE_NODE_FIELD(usingClause); COMPARE_NODE_FIELD(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; } /* * Stuff from pathnodes.h */ static bool _equalPathKey(const PathKey *a, const PathKey *b) { /* We assume pointer equality is sufficient to compare the eclasses */ COMPARE_SCALAR_FIELD(pk_eclass); COMPARE_SCALAR_FIELD(pk_opfamily); COMPARE_SCALAR_FIELD(pk_strategy); COMPARE_SCALAR_FIELD(pk_nulls_first); return true; } static bool _equalRestrictInfo(const RestrictInfo *a, const RestrictInfo *b) { COMPARE_NODE_FIELD(clause); COMPARE_SCALAR_FIELD(is_pushed_down); COMPARE_SCALAR_FIELD(outerjoin_delayed); COMPARE_SCALAR_FIELD(security_level); COMPARE_BITMAPSET_FIELD(required_relids); COMPARE_BITMAPSET_FIELD(outer_relids); COMPARE_BITMAPSET_FIELD(nullable_relids); /* * We ignore all the remaining fields, since they may not be set yet, and * should be derivable from the clause anyway. */ return true; } static bool _equalPlaceHolderVar(const PlaceHolderVar *a, const PlaceHolderVar *b) { /* * We intentionally do not compare phexpr. Two PlaceHolderVars with the * same ID and levelsup should be considered equal even if the contained * expressions have managed to mutate to different states. This will * happen during final plan construction when there are nested PHVs, since * the inner PHV will get replaced by a Param in some copies of the outer * PHV. Another way in which it can happen is that initplan sublinks * could get replaced by differently-numbered Params when sublink folding * is done. (The end result of such a situation would be some * unreferenced initplans, which is annoying but not really a problem.) On * the same reasoning, there is no need to examine phrels. * * COMPARE_NODE_FIELD(phexpr); * * COMPARE_BITMAPSET_FIELD(phrels); */ COMPARE_SCALAR_FIELD(phid); COMPARE_SCALAR_FIELD(phlevelsup); return true; } static bool _equalSpecialJoinInfo(const SpecialJoinInfo *a, const SpecialJoinInfo *b) { COMPARE_BITMAPSET_FIELD(min_lefthand); COMPARE_BITMAPSET_FIELD(min_righthand); COMPARE_BITMAPSET_FIELD(syn_lefthand); COMPARE_BITMAPSET_FIELD(syn_righthand); COMPARE_SCALAR_FIELD(jointype); COMPARE_SCALAR_FIELD(lhs_strict); COMPARE_SCALAR_FIELD(delay_upper_joins); COMPARE_SCALAR_FIELD(semi_can_btree); COMPARE_SCALAR_FIELD(semi_can_hash); COMPARE_NODE_FIELD(semi_operators); COMPARE_NODE_FIELD(semi_rhs_exprs); return true; } static bool _equalAppendRelInfo(const AppendRelInfo *a, const AppendRelInfo *b) { COMPARE_SCALAR_FIELD(parent_relid); COMPARE_SCALAR_FIELD(child_relid); COMPARE_SCALAR_FIELD(parent_reltype); COMPARE_SCALAR_FIELD(child_reltype); COMPARE_NODE_FIELD(translated_vars); COMPARE_SCALAR_FIELD(num_child_cols); COMPARE_POINTER_FIELD(parent_colnos, a->num_child_cols * sizeof(AttrNumber)); COMPARE_SCALAR_FIELD(parent_reloid); return true; } static bool _equalPlaceHolderInfo(const PlaceHolderInfo *a, const PlaceHolderInfo *b) { COMPARE_SCALAR_FIELD(phid); COMPARE_NODE_FIELD(ph_var); /* should be redundant */ COMPARE_BITMAPSET_FIELD(ph_eval_at); COMPARE_BITMAPSET_FIELD(ph_lateral); COMPARE_BITMAPSET_FIELD(ph_needed); COMPARE_SCALAR_FIELD(ph_width); return true; } /* * Stuff from extensible.h */ static bool _equalExtensibleNode(const ExtensibleNode *a, const ExtensibleNode *b) { const ExtensibleNodeMethods *methods; COMPARE_STRING_FIELD(extnodename); /* At this point, we know extnodename is the same for both nodes. */ methods = GetExtensibleNodeMethods(a->extnodename, false); /* compare the private fields */ if (!methods->nodeEqual(a, b)) return false; return true; } /* * Stuff from parsenodes.h */ static bool _equalQuery(const Query *a, const Query *b) { COMPARE_SCALAR_FIELD(commandType); COMPARE_SCALAR_FIELD(querySource); /* we intentionally ignore queryId, since it might not be set */ COMPARE_SCALAR_FIELD(canSetTag); COMPARE_NODE_FIELD(utilityStmt); COMPARE_SCALAR_FIELD(resultRelation); COMPARE_SCALAR_FIELD(hasAggs); COMPARE_SCALAR_FIELD(hasWindowFuncs); COMPARE_SCALAR_FIELD(hasTargetSRFs); COMPARE_SCALAR_FIELD(hasSubLinks); COMPARE_SCALAR_FIELD(hasDistinctOn); COMPARE_SCALAR_FIELD(hasRecursive); COMPARE_SCALAR_FIELD(hasModifyingCTE); COMPARE_SCALAR_FIELD(hasForUpdate); COMPARE_SCALAR_FIELD(hasRowSecurity); COMPARE_SCALAR_FIELD(isReturn); COMPARE_NODE_FIELD(cteList); COMPARE_NODE_FIELD(rtable); COMPARE_NODE_FIELD(jointree); COMPARE_NODE_FIELD(targetList); COMPARE_SCALAR_FIELD(override); COMPARE_NODE_FIELD(onConflict); COMPARE_NODE_FIELD(returningList); COMPARE_NODE_FIELD(groupClause); COMPARE_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_NODE_FIELD(mergeActionList); COMPARE_SCALAR_FIELD(mergeUseOuterJoin); COMPARE_LOCATION_FIELD(stmt_location); COMPARE_SCALAR_FIELD(stmt_len); return true; } static bool _equalRawStmt(const RawStmt *a, const RawStmt *b) { COMPARE_NODE_FIELD(stmt); COMPARE_LOCATION_FIELD(stmt_location); COMPARE_SCALAR_FIELD(stmt_len); return true; } static bool _equalInsertStmt(const InsertStmt *a, const InsertStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(cols); COMPARE_NODE_FIELD(selectStmt); COMPARE_NODE_FIELD(onConflictClause); COMPARE_NODE_FIELD(returningList); COMPARE_NODE_FIELD(withClause); COMPARE_SCALAR_FIELD(override); return true; } static bool _equalDeleteStmt(const DeleteStmt *a, const DeleteStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(usingClause); COMPARE_NODE_FIELD(whereClause); COMPARE_NODE_FIELD(returningList); COMPARE_NODE_FIELD(withClause); return true; } static bool _equalUpdateStmt(const UpdateStmt *a, const UpdateStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(targetList); COMPARE_NODE_FIELD(whereClause); COMPARE_NODE_FIELD(fromClause); COMPARE_NODE_FIELD(returningList); COMPARE_NODE_FIELD(withClause); return true; } static bool _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(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 _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 _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_SCALAR_FIELD(admin_opt); COMPARE_NODE_FIELD(grantor); COMPARE_SCALAR_FIELD(behavior); return true; } static bool _equalAlterDefaultPrivilegesStmt(const AlterDefaultPrivilegesStmt *a, const AlterDefaultPrivilegesStmt *b) { COMPARE_NODE_FIELD(options); COMPARE_NODE_FIELD(action); return true; } static bool _equalDeclareCursorStmt(const DeclareCursorStmt *a, const DeclareCursorStmt *b) { COMPARE_STRING_FIELD(portalname); COMPARE_SCALAR_FIELD(options); COMPARE_NODE_FIELD(query); return true; } static bool _equalClosePortalStmt(const ClosePortalStmt *a, const ClosePortalStmt *b) { COMPARE_STRING_FIELD(portalname); return true; } static bool _equalCallStmt(const CallStmt *a, const CallStmt *b) { COMPARE_NODE_FIELD(funccall); COMPARE_NODE_FIELD(funcexpr); COMPARE_NODE_FIELD(outargs); 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 _equalCopyStmt(const CopyStmt *a, const CopyStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(query); COMPARE_NODE_FIELD(attlist); COMPARE_SCALAR_FIELD(is_from); COMPARE_SCALAR_FIELD(is_program); COMPARE_STRING_FIELD(filename); COMPARE_NODE_FIELD(options); COMPARE_NODE_FIELD(whereClause); return true; } static bool _equalCreateStmt(const CreateStmt *a, const CreateStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(tableElts); COMPARE_NODE_FIELD(inhRelations); COMPARE_NODE_FIELD(partbound); COMPARE_NODE_FIELD(partspec); COMPARE_NODE_FIELD(ofTypename); COMPARE_NODE_FIELD(constraints); COMPARE_NODE_FIELD(options); COMPARE_SCALAR_FIELD(oncommit); COMPARE_STRING_FIELD(tablespacename); COMPARE_STRING_FIELD(accessMethod); COMPARE_SCALAR_FIELD(if_not_exists); return true; } static bool _equalTableLikeClause(const TableLikeClause *a, const TableLikeClause *b) { COMPARE_NODE_FIELD(relation); COMPARE_SCALAR_FIELD(options); COMPARE_SCALAR_FIELD(relationOid); return true; } static bool _equalDefineStmt(const DefineStmt *a, const DefineStmt *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_SCALAR_FIELD(oldstyle); COMPARE_NODE_FIELD(defnames); COMPARE_NODE_FIELD(args); COMPARE_NODE_FIELD(definition); COMPARE_SCALAR_FIELD(if_not_exists); COMPARE_SCALAR_FIELD(replace); return true; } static bool _equalDropStmt(const DropStmt *a, const DropStmt *b) { COMPARE_NODE_FIELD(objects); COMPARE_SCALAR_FIELD(removeType); COMPARE_SCALAR_FIELD(behavior); COMPARE_SCALAR_FIELD(missing_ok); COMPARE_SCALAR_FIELD(concurrent); return true; } static bool _equalTruncateStmt(const TruncateStmt *a, const TruncateStmt *b) { COMPARE_NODE_FIELD(relations); COMPARE_SCALAR_FIELD(restart_seqs); COMPARE_SCALAR_FIELD(behavior); return true; } static bool _equalCommentStmt(const CommentStmt *a, const CommentStmt *b) { COMPARE_SCALAR_FIELD(objtype); COMPARE_NODE_FIELD(object); COMPARE_STRING_FIELD(comment); return true; } static bool _equalSecLabelStmt(const SecLabelStmt *a, const SecLabelStmt *b) { COMPARE_SCALAR_FIELD(objtype); COMPARE_NODE_FIELD(object); COMPARE_STRING_FIELD(provider); COMPARE_STRING_FIELD(label); return true; } static bool _equalFetchStmt(const FetchStmt *a, const FetchStmt *b) { COMPARE_SCALAR_FIELD(direction); COMPARE_SCALAR_FIELD(howMany); COMPARE_STRING_FIELD(portalname); COMPARE_SCALAR_FIELD(ismove); return true; } static bool _equalIndexStmt(const IndexStmt *a, const IndexStmt *b) { COMPARE_STRING_FIELD(idxname); COMPARE_NODE_FIELD(relation); COMPARE_STRING_FIELD(accessMethod); COMPARE_STRING_FIELD(tableSpace); COMPARE_NODE_FIELD(indexParams); COMPARE_NODE_FIELD(indexIncludingParams); COMPARE_NODE_FIELD(options); COMPARE_NODE_FIELD(whereClause); COMPARE_NODE_FIELD(excludeOpNames); COMPARE_STRING_FIELD(idxcomment); COMPARE_SCALAR_FIELD(indexOid); COMPARE_SCALAR_FIELD(oldNode); COMPARE_SCALAR_FIELD(oldCreateSubid); COMPARE_SCALAR_FIELD(oldFirstRelfilenodeSubid); COMPARE_SCALAR_FIELD(unique); COMPARE_SCALAR_FIELD(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 _equalAlterStatsStmt(const AlterStatsStmt *a, const AlterStatsStmt *b) { COMPARE_NODE_FIELD(defnames); COMPARE_SCALAR_FIELD(stxstattarget); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalCreateFunctionStmt(const CreateFunctionStmt *a, const CreateFunctionStmt *b) { COMPARE_SCALAR_FIELD(is_procedure); COMPARE_SCALAR_FIELD(replace); COMPARE_NODE_FIELD(funcname); COMPARE_NODE_FIELD(parameters); COMPARE_NODE_FIELD(returnType); COMPARE_NODE_FIELD(options); 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 _equalRenameStmt(const RenameStmt *a, const RenameStmt *b) { COMPARE_SCALAR_FIELD(renameType); COMPARE_SCALAR_FIELD(relationType); COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(object); COMPARE_STRING_FIELD(subname); COMPARE_STRING_FIELD(newname); COMPARE_SCALAR_FIELD(behavior); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalAlterObjectDependsStmt(const AlterObjectDependsStmt *a, const AlterObjectDependsStmt *b) { COMPARE_SCALAR_FIELD(objectType); COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(object); COMPARE_NODE_FIELD(extname); COMPARE_SCALAR_FIELD(remove); return true; } static bool _equalAlterObjectSchemaStmt(const AlterObjectSchemaStmt *a, const AlterObjectSchemaStmt *b) { COMPARE_SCALAR_FIELD(objectType); COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(object); COMPARE_STRING_FIELD(newschema); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalAlterOwnerStmt(const AlterOwnerStmt *a, const AlterOwnerStmt *b) { COMPARE_SCALAR_FIELD(objectType); COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(object); COMPARE_NODE_FIELD(newowner); return true; } static bool _equalAlterOperatorStmt(const AlterOperatorStmt *a, const AlterOperatorStmt *b) { COMPARE_NODE_FIELD(opername); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterTypeStmt(const AlterTypeStmt *a, const AlterTypeStmt *b) { COMPARE_NODE_FIELD(typeName); COMPARE_NODE_FIELD(options); return true; } static bool _equalRuleStmt(const RuleStmt *a, const RuleStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_STRING_FIELD(rulename); COMPARE_NODE_FIELD(whereClause); COMPARE_SCALAR_FIELD(event); COMPARE_SCALAR_FIELD(instead); COMPARE_NODE_FIELD(actions); COMPARE_SCALAR_FIELD(replace); return true; } static bool _equalNotifyStmt(const NotifyStmt *a, const NotifyStmt *b) { COMPARE_STRING_FIELD(conditionname); COMPARE_STRING_FIELD(payload); return true; } static bool _equalListenStmt(const ListenStmt *a, const ListenStmt *b) { COMPARE_STRING_FIELD(conditionname); return true; } static bool _equalUnlistenStmt(const UnlistenStmt *a, const UnlistenStmt *b) { COMPARE_STRING_FIELD(conditionname); return true; } static bool _equalTransactionStmt(const TransactionStmt *a, const TransactionStmt *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_NODE_FIELD(options); COMPARE_STRING_FIELD(savepoint_name); COMPARE_STRING_FIELD(gid); COMPARE_SCALAR_FIELD(chain); return true; } static bool _equalCompositeTypeStmt(const CompositeTypeStmt *a, const CompositeTypeStmt *b) { COMPARE_NODE_FIELD(typevar); COMPARE_NODE_FIELD(coldeflist); return true; } static bool _equalCreateEnumStmt(const CreateEnumStmt *a, const CreateEnumStmt *b) { COMPARE_NODE_FIELD(typeName); COMPARE_NODE_FIELD(vals); return true; } static bool _equalCreateRangeStmt(const CreateRangeStmt *a, const CreateRangeStmt *b) { COMPARE_NODE_FIELD(typeName); COMPARE_NODE_FIELD(params); return true; } static bool _equalAlterEnumStmt(const AlterEnumStmt *a, const AlterEnumStmt *b) { COMPARE_NODE_FIELD(typeName); COMPARE_STRING_FIELD(oldVal); COMPARE_STRING_FIELD(newVal); COMPARE_STRING_FIELD(newValNeighbor); COMPARE_SCALAR_FIELD(newValIsAfter); COMPARE_SCALAR_FIELD(skipIfNewValExists); return true; } static bool _equalViewStmt(const ViewStmt *a, const ViewStmt *b) { COMPARE_NODE_FIELD(view); COMPARE_NODE_FIELD(aliases); COMPARE_NODE_FIELD(query); COMPARE_SCALAR_FIELD(replace); COMPARE_NODE_FIELD(options); COMPARE_SCALAR_FIELD(withCheckOption); return true; } static bool _equalLoadStmt(const LoadStmt *a, const LoadStmt *b) { COMPARE_STRING_FIELD(filename); return true; } static bool _equalCreateDomainStmt(const CreateDomainStmt *a, const CreateDomainStmt *b) { COMPARE_NODE_FIELD(domainname); COMPARE_NODE_FIELD(typeName); COMPARE_NODE_FIELD(collClause); COMPARE_NODE_FIELD(constraints); return true; } static bool _equalCreateOpClassStmt(const CreateOpClassStmt *a, const CreateOpClassStmt *b) { COMPARE_NODE_FIELD(opclassname); COMPARE_NODE_FIELD(opfamilyname); COMPARE_STRING_FIELD(amname); COMPARE_NODE_FIELD(datatype); COMPARE_NODE_FIELD(items); COMPARE_SCALAR_FIELD(isDefault); return true; } static bool _equalCreateOpClassItem(const CreateOpClassItem *a, const CreateOpClassItem *b) { COMPARE_SCALAR_FIELD(itemtype); COMPARE_NODE_FIELD(name); COMPARE_SCALAR_FIELD(number); COMPARE_NODE_FIELD(order_family); COMPARE_NODE_FIELD(class_args); COMPARE_NODE_FIELD(storedtype); return true; } static bool _equalCreateOpFamilyStmt(const CreateOpFamilyStmt *a, const CreateOpFamilyStmt *b) { COMPARE_NODE_FIELD(opfamilyname); COMPARE_STRING_FIELD(amname); return true; } static bool _equalAlterOpFamilyStmt(const AlterOpFamilyStmt *a, const AlterOpFamilyStmt *b) { COMPARE_NODE_FIELD(opfamilyname); COMPARE_STRING_FIELD(amname); COMPARE_SCALAR_FIELD(isDrop); COMPARE_NODE_FIELD(items); return true; } static bool _equalCreatedbStmt(const CreatedbStmt *a, const CreatedbStmt *b) { COMPARE_STRING_FIELD(dbname); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterDatabaseStmt(const AlterDatabaseStmt *a, const AlterDatabaseStmt *b) { COMPARE_STRING_FIELD(dbname); COMPARE_NODE_FIELD(options); return true; } static bool _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 _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 _equalReplicaIdentityStmt(const ReplicaIdentityStmt *a, const ReplicaIdentityStmt *b) { COMPARE_SCALAR_FIELD(identity_type); COMPARE_STRING_FIELD(name); return true; } static bool _equalAlterSystemStmt(const AlterSystemStmt *a, const AlterSystemStmt *b) { COMPARE_NODE_FIELD(setstmt); return true; } static bool _equalCreateSeqStmt(const CreateSeqStmt *a, const CreateSeqStmt *b) { COMPARE_NODE_FIELD(sequence); COMPARE_NODE_FIELD(options); COMPARE_SCALAR_FIELD(ownerId); COMPARE_SCALAR_FIELD(for_identity); COMPARE_SCALAR_FIELD(if_not_exists); return true; } static bool _equalAlterSeqStmt(const AlterSeqStmt *a, const AlterSeqStmt *b) { COMPARE_NODE_FIELD(sequence); COMPARE_NODE_FIELD(options); COMPARE_SCALAR_FIELD(for_identity); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalVariableSetStmt(const VariableSetStmt *a, const VariableSetStmt *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(args); COMPARE_SCALAR_FIELD(is_local); return true; } static bool _equalVariableShowStmt(const VariableShowStmt *a, const VariableShowStmt *b) { COMPARE_STRING_FIELD(name); return true; } static bool _equalDiscardStmt(const DiscardStmt *a, const DiscardStmt *b) { COMPARE_SCALAR_FIELD(target); return true; } static bool _equalCreateTableSpaceStmt(const CreateTableSpaceStmt *a, const CreateTableSpaceStmt *b) { COMPARE_STRING_FIELD(tablespacename); COMPARE_NODE_FIELD(owner); COMPARE_STRING_FIELD(location); COMPARE_NODE_FIELD(options); return true; } static bool _equalDropTableSpaceStmt(const DropTableSpaceStmt *a, const DropTableSpaceStmt *b) { COMPARE_STRING_FIELD(tablespacename); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalAlterTableSpaceOptionsStmt(const AlterTableSpaceOptionsStmt *a, const AlterTableSpaceOptionsStmt *b) { COMPARE_STRING_FIELD(tablespacename); COMPARE_NODE_FIELD(options); COMPARE_SCALAR_FIELD(isReset); return true; } static bool _equalAlterTableMoveAllStmt(const AlterTableMoveAllStmt *a, const AlterTableMoveAllStmt *b) { COMPARE_STRING_FIELD(orig_tablespacename); COMPARE_SCALAR_FIELD(objtype); COMPARE_NODE_FIELD(roles); COMPARE_STRING_FIELD(new_tablespacename); COMPARE_SCALAR_FIELD(nowait); return true; } static bool _equalCreateExtensionStmt(const CreateExtensionStmt *a, const CreateExtensionStmt *b) { COMPARE_STRING_FIELD(extname); COMPARE_SCALAR_FIELD(if_not_exists); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterExtensionStmt(const AlterExtensionStmt *a, const AlterExtensionStmt *b) { COMPARE_STRING_FIELD(extname); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterExtensionContentsStmt(const AlterExtensionContentsStmt *a, const AlterExtensionContentsStmt *b) { COMPARE_STRING_FIELD(extname); COMPARE_SCALAR_FIELD(action); COMPARE_SCALAR_FIELD(objtype); COMPARE_NODE_FIELD(object); return true; } static bool _equalCreateFdwStmt(const CreateFdwStmt *a, const CreateFdwStmt *b) { COMPARE_STRING_FIELD(fdwname); COMPARE_NODE_FIELD(func_options); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterFdwStmt(const AlterFdwStmt *a, const AlterFdwStmt *b) { COMPARE_STRING_FIELD(fdwname); COMPARE_NODE_FIELD(func_options); COMPARE_NODE_FIELD(options); return true; } static bool _equalCreateForeignServerStmt(const CreateForeignServerStmt *a, const CreateForeignServerStmt *b) { COMPARE_STRING_FIELD(servername); COMPARE_STRING_FIELD(servertype); COMPARE_STRING_FIELD(version); COMPARE_STRING_FIELD(fdwname); COMPARE_SCALAR_FIELD(if_not_exists); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterForeignServerStmt(const AlterForeignServerStmt *a, const AlterForeignServerStmt *b) { COMPARE_STRING_FIELD(servername); COMPARE_STRING_FIELD(version); COMPARE_NODE_FIELD(options); COMPARE_SCALAR_FIELD(has_version); return true; } static bool _equalCreateUserMappingStmt(const CreateUserMappingStmt *a, const CreateUserMappingStmt *b) { COMPARE_NODE_FIELD(user); COMPARE_STRING_FIELD(servername); COMPARE_SCALAR_FIELD(if_not_exists); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterUserMappingStmt(const AlterUserMappingStmt *a, const AlterUserMappingStmt *b) { COMPARE_NODE_FIELD(user); COMPARE_STRING_FIELD(servername); COMPARE_NODE_FIELD(options); return true; } static bool _equalDropUserMappingStmt(const DropUserMappingStmt *a, const DropUserMappingStmt *b) { COMPARE_NODE_FIELD(user); COMPARE_STRING_FIELD(servername); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalCreateForeignTableStmt(const CreateForeignTableStmt *a, const CreateForeignTableStmt *b) { if (!_equalCreateStmt(&a->base, &b->base)) return false; COMPARE_STRING_FIELD(servername); COMPARE_NODE_FIELD(options); return true; } static bool _equalImportForeignSchemaStmt(const ImportForeignSchemaStmt *a, const ImportForeignSchemaStmt *b) { COMPARE_STRING_FIELD(server_name); COMPARE_STRING_FIELD(remote_schema); COMPARE_STRING_FIELD(local_schema); COMPARE_SCALAR_FIELD(list_type); COMPARE_NODE_FIELD(table_list); COMPARE_NODE_FIELD(options); return true; } static bool _equalCreateTransformStmt(const CreateTransformStmt *a, const CreateTransformStmt *b) { COMPARE_SCALAR_FIELD(replace); COMPARE_NODE_FIELD(type_name); COMPARE_STRING_FIELD(lang); COMPARE_NODE_FIELD(fromsql); COMPARE_NODE_FIELD(tosql); return true; } static bool _equalCreateAmStmt(const CreateAmStmt *a, const CreateAmStmt *b) { COMPARE_STRING_FIELD(amname); COMPARE_NODE_FIELD(handler_name); COMPARE_SCALAR_FIELD(amtype); return true; } static bool _equalCreateTrigStmt(const CreateTrigStmt *a, const CreateTrigStmt *b) { COMPARE_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 _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 _equalCreateSchemaStmt(const CreateSchemaStmt *a, const CreateSchemaStmt *b) { COMPARE_STRING_FIELD(schemaname); COMPARE_NODE_FIELD(authrole); COMPARE_NODE_FIELD(schemaElts); COMPARE_SCALAR_FIELD(if_not_exists); return true; } static bool _equalCreateConversionStmt(const CreateConversionStmt *a, const CreateConversionStmt *b) { COMPARE_NODE_FIELD(conversion_name); COMPARE_STRING_FIELD(for_encoding_name); COMPARE_STRING_FIELD(to_encoding_name); COMPARE_NODE_FIELD(func_name); COMPARE_SCALAR_FIELD(def); return true; } static bool _equalCreateCastStmt(const CreateCastStmt *a, const CreateCastStmt *b) { COMPARE_NODE_FIELD(sourcetype); COMPARE_NODE_FIELD(targettype); COMPARE_NODE_FIELD(func); COMPARE_SCALAR_FIELD(context); COMPARE_SCALAR_FIELD(inout); return true; } static bool _equalPrepareStmt(const PrepareStmt *a, const PrepareStmt *b) { COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(argtypes); COMPARE_NODE_FIELD(query); return true; } static bool _equalExecuteStmt(const ExecuteStmt *a, const ExecuteStmt *b) { COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(params); return true; } static bool _equalDeallocateStmt(const DeallocateStmt *a, const DeallocateStmt *b) { COMPARE_STRING_FIELD(name); return true; } static bool _equalDropOwnedStmt(const DropOwnedStmt *a, const DropOwnedStmt *b) { COMPARE_NODE_FIELD(roles); COMPARE_SCALAR_FIELD(behavior); return true; } static bool _equalReassignOwnedStmt(const ReassignOwnedStmt *a, const ReassignOwnedStmt *b) { COMPARE_NODE_FIELD(roles); COMPARE_NODE_FIELD(newrole); return true; } static bool _equalAlterTSDictionaryStmt(const AlterTSDictionaryStmt *a, const AlterTSDictionaryStmt *b) { COMPARE_NODE_FIELD(dictname); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterTSConfigurationStmt(const AlterTSConfigurationStmt *a, const AlterTSConfigurationStmt *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_NODE_FIELD(cfgname); COMPARE_NODE_FIELD(tokentype); COMPARE_NODE_FIELD(dicts); COMPARE_SCALAR_FIELD(override); COMPARE_SCALAR_FIELD(replace); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalPublicationObject(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 _equalPublicationTable(const PublicationTable *a, const PublicationTable *b) { COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(whereClause); COMPARE_NODE_FIELD(columns); 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 _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 _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 _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_Const(const A_Const *a, const A_Const *b) { /* * Hack for in-line val field. Also val is not valid is isnull is true. */ if (!a->isnull && !b->isnull && !equal(&a->val, &b->val)) return false; COMPARE_SCALAR_FIELD(isnull); 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_COERCIONFORM_FIELD(funcformat); 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 _equalTypeName(const TypeName *a, const TypeName *b) { COMPARE_NODE_FIELD(names); COMPARE_SCALAR_FIELD(typeOid); COMPARE_SCALAR_FIELD(setof); COMPARE_SCALAR_FIELD(pct_type); COMPARE_NODE_FIELD(typmods); COMPARE_SCALAR_FIELD(typemod); COMPARE_NODE_FIELD(arrayBounds); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalTypeCast(const TypeCast *a, const TypeCast *b) { COMPARE_NODE_FIELD(arg); COMPARE_NODE_FIELD(typeName); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCollateClause(const CollateClause *a, const CollateClause *b) { COMPARE_NODE_FIELD(arg); COMPARE_NODE_FIELD(collname); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalSortBy(const SortBy *a, const SortBy *b) { COMPARE_NODE_FIELD(node); COMPARE_SCALAR_FIELD(sortby_dir); COMPARE_SCALAR_FIELD(sortby_nulls); COMPARE_NODE_FIELD(useOp); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalWindowDef(const WindowDef *a, const WindowDef *b) { COMPARE_STRING_FIELD(name); COMPARE_STRING_FIELD(refname); COMPARE_NODE_FIELD(partitionClause); COMPARE_NODE_FIELD(orderClause); COMPARE_SCALAR_FIELD(frameOptions); COMPARE_NODE_FIELD(startOffset); COMPARE_NODE_FIELD(endOffset); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalRangeSubselect(const RangeSubselect *a, const RangeSubselect *b) { COMPARE_SCALAR_FIELD(lateral); COMPARE_NODE_FIELD(subquery); COMPARE_NODE_FIELD(alias); return true; } static bool _equalRangeFunction(const RangeFunction *a, const RangeFunction *b) { COMPARE_SCALAR_FIELD(lateral); COMPARE_SCALAR_FIELD(ordinality); COMPARE_SCALAR_FIELD(is_rowsfrom); COMPARE_NODE_FIELD(functions); COMPARE_NODE_FIELD(alias); COMPARE_NODE_FIELD(coldeflist); return true; } static bool _equalRangeTableSample(const RangeTableSample *a, const RangeTableSample *b) { COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(method); COMPARE_NODE_FIELD(args); COMPARE_NODE_FIELD(repeatable); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalRangeTableFunc(const RangeTableFunc *a, const RangeTableFunc *b) { COMPARE_SCALAR_FIELD(lateral); COMPARE_NODE_FIELD(docexpr); COMPARE_NODE_FIELD(rowexpr); COMPARE_NODE_FIELD(namespaces); COMPARE_NODE_FIELD(columns); COMPARE_NODE_FIELD(alias); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalRangeTableFuncCol(const RangeTableFuncCol *a, const RangeTableFuncCol *b) { COMPARE_STRING_FIELD(colname); COMPARE_NODE_FIELD(typeName); COMPARE_SCALAR_FIELD(for_ordinality); COMPARE_SCALAR_FIELD(is_not_null); COMPARE_NODE_FIELD(colexpr); COMPARE_NODE_FIELD(coldefexpr); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalIndexElem(const IndexElem *a, const IndexElem *b) { COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(expr); COMPARE_STRING_FIELD(indexcolname); COMPARE_NODE_FIELD(collation); COMPARE_NODE_FIELD(opclass); COMPARE_NODE_FIELD(opclassopts); COMPARE_SCALAR_FIELD(ordering); COMPARE_SCALAR_FIELD(nulls_ordering); return true; } static bool _equalStatsElem(const StatsElem *a, const StatsElem *b) { COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(expr); 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_NODE_FIELD(raw_default); COMPARE_NODE_FIELD(cooked_default); COMPARE_SCALAR_FIELD(identity); COMPARE_NODE_FIELD(identitySequence); COMPARE_SCALAR_FIELD(generated); COMPARE_NODE_FIELD(collClause); COMPARE_SCALAR_FIELD(collOid); COMPARE_NODE_FIELD(constraints); COMPARE_NODE_FIELD(fdwoptions); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalConstraint(const Constraint *a, const Constraint *b) { COMPARE_SCALAR_FIELD(contype); COMPARE_STRING_FIELD(conname); COMPARE_SCALAR_FIELD(deferrable); COMPARE_SCALAR_FIELD(initdeferred); COMPARE_LOCATION_FIELD(location); COMPARE_SCALAR_FIELD(is_no_inherit); COMPARE_NODE_FIELD(raw_expr); COMPARE_STRING_FIELD(cooked_expr); COMPARE_SCALAR_FIELD(generated_when); COMPARE_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_SCALAR_FIELD(skip_validation); COMPARE_SCALAR_FIELD(initially_valid); return true; } static bool _equalDefElem(const DefElem *a, const DefElem *b) { COMPARE_STRING_FIELD(defnamespace); COMPARE_STRING_FIELD(defname); COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(defaction); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalLockingClause(const LockingClause *a, const LockingClause *b) { COMPARE_NODE_FIELD(lockedRels); COMPARE_SCALAR_FIELD(strength); COMPARE_SCALAR_FIELD(waitPolicy); return true; } static bool _equalRangeTblEntry(const RangeTblEntry *a, const RangeTblEntry *b) { COMPARE_SCALAR_FIELD(rtekind); COMPARE_SCALAR_FIELD(relid); COMPARE_SCALAR_FIELD(relkind); COMPARE_SCALAR_FIELD(rellockmode); COMPARE_NODE_FIELD(tablesample); COMPARE_NODE_FIELD(subquery); COMPARE_SCALAR_FIELD(security_barrier); COMPARE_SCALAR_FIELD(jointype); COMPARE_SCALAR_FIELD(joinmergedcols); COMPARE_NODE_FIELD(joinaliasvars); COMPARE_NODE_FIELD(joinleftcols); COMPARE_NODE_FIELD(joinrightcols); COMPARE_NODE_FIELD(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_NODE_FIELD(alias); COMPARE_NODE_FIELD(eref); COMPARE_SCALAR_FIELD(lateral); COMPARE_SCALAR_FIELD(inh); COMPARE_SCALAR_FIELD(inFromCl); COMPARE_SCALAR_FIELD(requiredPerms); COMPARE_SCALAR_FIELD(checkAsUser); COMPARE_BITMAPSET_FIELD(selectedCols); COMPARE_BITMAPSET_FIELD(insertedCols); COMPARE_BITMAPSET_FIELD(updatedCols); COMPARE_BITMAPSET_FIELD(extraUpdatedCols); COMPARE_NODE_FIELD(securityQuals); return true; } static bool _equalRangeTblFunction(const RangeTblFunction *a, const RangeTblFunction *b) { COMPARE_NODE_FIELD(funcexpr); COMPARE_SCALAR_FIELD(funccolcount); COMPARE_NODE_FIELD(funccolnames); COMPARE_NODE_FIELD(funccoltypes); COMPARE_NODE_FIELD(funccoltypmods); COMPARE_NODE_FIELD(funccolcollations); COMPARE_BITMAPSET_FIELD(funcparams); return true; } static bool _equalTableSampleClause(const TableSampleClause *a, const TableSampleClause *b) { COMPARE_SCALAR_FIELD(tsmhandler); COMPARE_NODE_FIELD(args); COMPARE_NODE_FIELD(repeatable); return true; } static bool _equalWithCheckOption(const WithCheckOption *a, const WithCheckOption *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_STRING_FIELD(relname); COMPARE_STRING_FIELD(polname); COMPARE_NODE_FIELD(qual); COMPARE_SCALAR_FIELD(cascaded); return true; } static bool _equalSortGroupClause(const SortGroupClause *a, const SortGroupClause *b) { COMPARE_SCALAR_FIELD(tleSortGroupRef); COMPARE_SCALAR_FIELD(eqop); COMPARE_SCALAR_FIELD(sortop); COMPARE_SCALAR_FIELD(nulls_first); COMPARE_SCALAR_FIELD(hashable); return true; } static bool _equalGroupingSet(const GroupingSet *a, const GroupingSet *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_NODE_FIELD(content); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalWindowClause(const WindowClause *a, const WindowClause *b) { COMPARE_STRING_FIELD(name); COMPARE_STRING_FIELD(refname); COMPARE_NODE_FIELD(partitionClause); COMPARE_NODE_FIELD(orderClause); COMPARE_SCALAR_FIELD(frameOptions); COMPARE_NODE_FIELD(startOffset); COMPARE_NODE_FIELD(endOffset); COMPARE_NODE_FIELD(runCondition); 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(matched); COMPARE_SCALAR_FIELD(commandType); COMPARE_SCALAR_FIELD(override); COMPARE_NODE_FIELD(condition); COMPARE_NODE_FIELD(targetList); COMPARE_NODE_FIELD(values); return true; } static bool _equalMergeAction(const MergeAction *a, const MergeAction *b) { COMPARE_SCALAR_FIELD(matched); COMPARE_SCALAR_FIELD(commandType); COMPARE_SCALAR_FIELD(override); COMPARE_NODE_FIELD(qual); COMPARE_NODE_FIELD(targetList); COMPARE_NODE_FIELD(updateColnos); return true; } static bool _equalXmlSerialize(const XmlSerialize *a, const XmlSerialize *b) { COMPARE_SCALAR_FIELD(xmloption); COMPARE_NODE_FIELD(expr); COMPARE_NODE_FIELD(typeName); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalRoleSpec(const RoleSpec *a, const RoleSpec *b) { COMPARE_SCALAR_FIELD(roletype); COMPARE_STRING_FIELD(rolename); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalTriggerTransition(const TriggerTransition *a, const TriggerTransition *b) { COMPARE_STRING_FIELD(name); COMPARE_SCALAR_FIELD(isNew); COMPARE_SCALAR_FIELD(isTable); return true; } static bool _equalPartitionElem(const PartitionElem *a, const PartitionElem *b) { COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(expr); COMPARE_NODE_FIELD(collation); COMPARE_NODE_FIELD(opclass); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalPartitionSpec(const PartitionSpec *a, const PartitionSpec *b) { COMPARE_STRING_FIELD(strategy); COMPARE_NODE_FIELD(partParams); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalPartitionBoundSpec(const PartitionBoundSpec *a, const PartitionBoundSpec *b) { COMPARE_SCALAR_FIELD(strategy); COMPARE_SCALAR_FIELD(is_default); COMPARE_SCALAR_FIELD(modulus); COMPARE_SCALAR_FIELD(remainder); COMPARE_NODE_FIELD(listdatums); COMPARE_NODE_FIELD(lowerdatums); COMPARE_NODE_FIELD(upperdatums); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalPartitionRangeDatum(const PartitionRangeDatum *a, const PartitionRangeDatum *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_NODE_FIELD(value); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalPartitionCmd(const PartitionCmd *a, const PartitionCmd *b) { COMPARE_NODE_FIELD(name); COMPARE_NODE_FIELD(bound); COMPARE_SCALAR_FIELD(concurrent); return true; } /* * Stuff from pg_list.h */ static bool _equalList(const List *a, const List *b) { const ListCell *item_a; const ListCell *item_b; /* * Try to reject by simple scalar checks before grovelling through all the * list elements... */ COMPARE_SCALAR_FIELD(type); COMPARE_SCALAR_FIELD(length); /* * We place the switch outside the loop for the sake of efficiency; this * may not be worth doing... */ switch (a->type) { case T_List: forboth(item_a, a, item_b, b) { if (!equal(lfirst(item_a), lfirst(item_b))) return false; } break; case T_IntList: forboth(item_a, a, item_b, b) { if (lfirst_int(item_a) != lfirst_int(item_b)) return false; } break; case T_OidList: forboth(item_a, a, item_b, b) { if (lfirst_oid(item_a) != lfirst_oid(item_b)) return false; } break; default: elog(ERROR, "unrecognized list node type: %d", (int) a->type); return false; /* keep compiler quiet */ } /* * If we got here, we should have run out of elements of both lists */ Assert(item_a == NULL); Assert(item_b == NULL); return true; } /* * Stuff from value.h */ static bool _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; } /* * equal * returns whether two nodes are equal */ bool equal(const void *a, const void *b) { bool retval; if (a == b) return true; /* * note that a!=b, so only one of them can be NULL */ if (a == NULL || b == NULL) return false; /* * are they the same type of nodes? */ if (nodeTag(a) != nodeTag(b)) return false; /* Guard against stack overflow due to overly complex expressions */ check_stack_depth(); switch (nodeTag(a)) { /* * PRIMITIVE NODES */ case T_Alias: retval = _equalAlias(a, b); break; case T_RangeVar: retval = _equalRangeVar(a, b); break; case T_TableFunc: retval = _equalTableFunc(a, b); break; case T_IntoClause: retval = _equalIntoClause(a, b); break; case T_Var: retval = _equalVar(a, b); break; case T_Const: retval = _equalConst(a, b); break; case T_Param: retval = _equalParam(a, b); break; case T_Aggref: retval = _equalAggref(a, b); break; case T_GroupingFunc: retval = _equalGroupingFunc(a, b); break; case T_WindowFunc: retval = _equalWindowFunc(a, b); break; case T_SubscriptingRef: retval = _equalSubscriptingRef(a, b); break; case T_FuncExpr: retval = _equalFuncExpr(a, b); break; case T_NamedArgExpr: retval = _equalNamedArgExpr(a, b); break; case T_OpExpr: retval = _equalOpExpr(a, b); break; case T_DistinctExpr: retval = _equalDistinctExpr(a, b); break; case T_NullIfExpr: retval = _equalNullIfExpr(a, b); break; case T_ScalarArrayOpExpr: retval = _equalScalarArrayOpExpr(a, b); break; case T_BoolExpr: retval = _equalBoolExpr(a, b); break; case T_SubLink: retval = _equalSubLink(a, b); break; case T_SubPlan: retval = _equalSubPlan(a, b); break; case T_AlternativeSubPlan: retval = _equalAlternativeSubPlan(a, b); break; case T_FieldSelect: retval = _equalFieldSelect(a, b); break; case T_FieldStore: retval = _equalFieldStore(a, b); break; case T_RelabelType: retval = _equalRelabelType(a, b); break; case T_CoerceViaIO: retval = _equalCoerceViaIO(a, b); break; case T_ArrayCoerceExpr: retval = _equalArrayCoerceExpr(a, b); break; case T_ConvertRowtypeExpr: retval = _equalConvertRowtypeExpr(a, b); break; case T_CollateExpr: retval = _equalCollateExpr(a, b); break; case T_CaseExpr: retval = _equalCaseExpr(a, b); break; case T_CaseWhen: retval = _equalCaseWhen(a, b); break; case T_CaseTestExpr: retval = _equalCaseTestExpr(a, b); break; case T_ArrayExpr: retval = _equalArrayExpr(a, b); break; case T_RowExpr: retval = _equalRowExpr(a, b); break; case T_RowCompareExpr: retval = _equalRowCompareExpr(a, b); break; case T_CoalesceExpr: retval = _equalCoalesceExpr(a, b); break; case T_MinMaxExpr: retval = _equalMinMaxExpr(a, b); break; case T_SQLValueFunction: retval = _equalSQLValueFunction(a, b); break; case T_XmlExpr: retval = _equalXmlExpr(a, b); break; case T_NullTest: retval = _equalNullTest(a, b); break; case T_BooleanTest: retval = _equalBooleanTest(a, b); break; case T_CoerceToDomain: retval = _equalCoerceToDomain(a, b); break; case T_CoerceToDomainValue: retval = _equalCoerceToDomainValue(a, b); break; case T_SetToDefault: retval = _equalSetToDefault(a, b); break; case T_CurrentOfExpr: retval = _equalCurrentOfExpr(a, b); break; case T_NextValueExpr: retval = _equalNextValueExpr(a, b); break; case T_InferenceElem: retval = _equalInferenceElem(a, b); break; case T_TargetEntry: retval = _equalTargetEntry(a, b); break; case T_RangeTblRef: retval = _equalRangeTblRef(a, b); break; case T_FromExpr: retval = _equalFromExpr(a, b); break; case T_OnConflictExpr: retval = _equalOnConflictExpr(a, b); break; case T_JoinExpr: retval = _equalJoinExpr(a, b); break; /* * RELATION NODES */ case T_PathKey: retval = _equalPathKey(a, b); break; case T_RestrictInfo: retval = _equalRestrictInfo(a, b); break; case T_PlaceHolderVar: retval = _equalPlaceHolderVar(a, b); break; case T_SpecialJoinInfo: retval = _equalSpecialJoinInfo(a, b); break; case T_AppendRelInfo: retval = _equalAppendRelInfo(a, b); break; case T_PlaceHolderInfo: retval = _equalPlaceHolderInfo(a, b); break; case T_List: case T_IntList: case T_OidList: retval = _equalList(a, b); break; case T_Integer: 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; /* * EXTENSIBLE NODES */ case T_ExtensibleNode: retval = _equalExtensibleNode(a, b); break; /* * PARSE NODES */ case T_Query: retval = _equalQuery(a, b); break; case T_RawStmt: retval = _equalRawStmt(a, b); break; case T_InsertStmt: retval = _equalInsertStmt(a, b); break; case T_DeleteStmt: retval = _equalDeleteStmt(a, b); break; case T_UpdateStmt: retval = _equalUpdateStmt(a, b); break; case T_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_AlterTableStmt: retval = _equalAlterTableStmt(a, b); break; case T_AlterTableCmd: retval = _equalAlterTableCmd(a, b); break; case T_AlterCollationStmt: retval = _equalAlterCollationStmt(a, b); break; case T_AlterDomainStmt: retval = _equalAlterDomainStmt(a, b); break; case T_GrantStmt: retval = _equalGrantStmt(a, b); break; case T_GrantRoleStmt: retval = _equalGrantRoleStmt(a, b); break; case T_AlterDefaultPrivilegesStmt: retval = _equalAlterDefaultPrivilegesStmt(a, b); break; case T_DeclareCursorStmt: retval = _equalDeclareCursorStmt(a, b); break; case T_ClosePortalStmt: retval = _equalClosePortalStmt(a, b); break; case T_CallStmt: retval = _equalCallStmt(a, b); break; case T_ClusterStmt: retval = _equalClusterStmt(a, b); break; case T_CopyStmt: retval = _equalCopyStmt(a, b); break; case T_CreateStmt: retval = _equalCreateStmt(a, b); break; case T_TableLikeClause: retval = _equalTableLikeClause(a, b); break; case T_DefineStmt: retval = _equalDefineStmt(a, b); break; case T_DropStmt: retval = _equalDropStmt(a, b); break; case T_TruncateStmt: retval = _equalTruncateStmt(a, b); break; case T_CommentStmt: retval = _equalCommentStmt(a, b); break; case T_SecLabelStmt: retval = _equalSecLabelStmt(a, b); break; case T_FetchStmt: retval = _equalFetchStmt(a, b); break; case T_IndexStmt: retval = _equalIndexStmt(a, b); break; case T_CreateStatsStmt: retval = _equalCreateStatsStmt(a, b); break; case T_AlterStatsStmt: retval = _equalAlterStatsStmt(a, b); break; case T_CreateFunctionStmt: retval = _equalCreateFunctionStmt(a, b); break; case T_FunctionParameter: retval = _equalFunctionParameter(a, b); break; case T_AlterFunctionStmt: retval = _equalAlterFunctionStmt(a, b); break; case T_DoStmt: retval = _equalDoStmt(a, b); break; case T_RenameStmt: retval = _equalRenameStmt(a, b); break; case T_AlterObjectDependsStmt: retval = _equalAlterObjectDependsStmt(a, b); break; case T_AlterObjectSchemaStmt: retval = _equalAlterObjectSchemaStmt(a, b); break; case T_AlterOwnerStmt: retval = _equalAlterOwnerStmt(a, b); break; case T_AlterOperatorStmt: retval = _equalAlterOperatorStmt(a, b); break; case T_AlterTypeStmt: retval = _equalAlterTypeStmt(a, b); break; case T_RuleStmt: retval = _equalRuleStmt(a, b); break; case T_NotifyStmt: retval = _equalNotifyStmt(a, b); break; case T_ListenStmt: retval = _equalListenStmt(a, b); break; case T_UnlistenStmt: retval = _equalUnlistenStmt(a, b); break; case T_TransactionStmt: retval = _equalTransactionStmt(a, b); break; case T_CompositeTypeStmt: retval = _equalCompositeTypeStmt(a, b); break; case T_CreateEnumStmt: retval = _equalCreateEnumStmt(a, b); break; case T_CreateRangeStmt: retval = _equalCreateRangeStmt(a, b); break; case T_AlterEnumStmt: retval = _equalAlterEnumStmt(a, b); break; case T_ViewStmt: retval = _equalViewStmt(a, b); break; case T_LoadStmt: retval = _equalLoadStmt(a, b); break; case T_CreateDomainStmt: retval = _equalCreateDomainStmt(a, b); break; case T_CreateOpClassStmt: retval = _equalCreateOpClassStmt(a, b); break; case T_CreateOpClassItem: retval = _equalCreateOpClassItem(a, b); break; case T_CreateOpFamilyStmt: retval = _equalCreateOpFamilyStmt(a, b); break; case T_AlterOpFamilyStmt: retval = _equalAlterOpFamilyStmt(a, b); break; case T_CreatedbStmt: retval = _equalCreatedbStmt(a, b); break; case T_AlterDatabaseStmt: retval = _equalAlterDatabaseStmt(a, b); break; case T_AlterDatabaseRefreshCollStmt: retval = _equalAlterDatabaseRefreshCollStmt(a, b); break; case T_AlterDatabaseSetStmt: retval = _equalAlterDatabaseSetStmt(a, b); break; case T_DropdbStmt: retval = _equalDropdbStmt(a, b); break; case T_VacuumStmt: retval = _equalVacuumStmt(a, b); break; case T_VacuumRelation: retval = _equalVacuumRelation(a, b); break; case T_ExplainStmt: retval = _equalExplainStmt(a, b); break; case T_CreateTableAsStmt: retval = _equalCreateTableAsStmt(a, b); break; case T_RefreshMatViewStmt: retval = _equalRefreshMatViewStmt(a, b); break; case T_ReplicaIdentityStmt: retval = _equalReplicaIdentityStmt(a, b); break; case T_AlterSystemStmt: retval = _equalAlterSystemStmt(a, b); break; case T_CreateSeqStmt: retval = _equalCreateSeqStmt(a, b); break; case T_AlterSeqStmt: retval = _equalAlterSeqStmt(a, b); break; case T_VariableSetStmt: retval = _equalVariableSetStmt(a, b); break; case T_VariableShowStmt: retval = _equalVariableShowStmt(a, b); break; case T_DiscardStmt: retval = _equalDiscardStmt(a, b); break; case T_CreateTableSpaceStmt: retval = _equalCreateTableSpaceStmt(a, b); break; case T_DropTableSpaceStmt: retval = _equalDropTableSpaceStmt(a, b); break; case T_AlterTableSpaceOptionsStmt: retval = _equalAlterTableSpaceOptionsStmt(a, b); break; case T_AlterTableMoveAllStmt: retval = _equalAlterTableMoveAllStmt(a, b); break; case T_CreateExtensionStmt: retval = _equalCreateExtensionStmt(a, b); break; case T_AlterExtensionStmt: retval = _equalAlterExtensionStmt(a, b); break; case T_AlterExtensionContentsStmt: retval = _equalAlterExtensionContentsStmt(a, b); break; case T_CreateFdwStmt: retval = _equalCreateFdwStmt(a, b); break; case T_AlterFdwStmt: retval = _equalAlterFdwStmt(a, b); break; case T_CreateForeignServerStmt: retval = _equalCreateForeignServerStmt(a, b); break; case T_AlterForeignServerStmt: retval = _equalAlterForeignServerStmt(a, b); break; case T_CreateUserMappingStmt: retval = _equalCreateUserMappingStmt(a, b); break; case T_AlterUserMappingStmt: retval = _equalAlterUserMappingStmt(a, b); break; case T_DropUserMappingStmt: retval = _equalDropUserMappingStmt(a, b); break; case T_CreateForeignTableStmt: retval = _equalCreateForeignTableStmt(a, b); break; case T_ImportForeignSchemaStmt: retval = _equalImportForeignSchemaStmt(a, b); break; case T_CreateTransformStmt: retval = _equalCreateTransformStmt(a, b); break; case T_CreateAmStmt: retval = _equalCreateAmStmt(a, b); break; case T_CreateTrigStmt: retval = _equalCreateTrigStmt(a, b); break; case T_CreateEventTrigStmt: retval = _equalCreateEventTrigStmt(a, b); break; case T_AlterEventTrigStmt: retval = _equalAlterEventTrigStmt(a, b); break; case T_CreatePLangStmt: retval = _equalCreatePLangStmt(a, b); break; case T_CreateRoleStmt: retval = _equalCreateRoleStmt(a, b); break; case T_AlterRoleStmt: retval = _equalAlterRoleStmt(a, b); break; case T_AlterRoleSetStmt: retval = _equalAlterRoleSetStmt(a, b); break; case T_DropRoleStmt: retval = _equalDropRoleStmt(a, b); break; case T_LockStmt: retval = _equalLockStmt(a, b); break; case T_ConstraintsSetStmt: retval = _equalConstraintsSetStmt(a, b); break; case T_ReindexStmt: retval = _equalReindexStmt(a, b); break; case T_CheckPointStmt: retval = true; break; case T_CreateSchemaStmt: retval = _equalCreateSchemaStmt(a, b); break; case T_CreateConversionStmt: retval = _equalCreateConversionStmt(a, b); break; case T_CreateCastStmt: retval = _equalCreateCastStmt(a, b); break; case T_PrepareStmt: retval = _equalPrepareStmt(a, b); break; case T_ExecuteStmt: retval = _equalExecuteStmt(a, b); break; case T_DeallocateStmt: retval = _equalDeallocateStmt(a, b); break; case T_DropOwnedStmt: retval = _equalDropOwnedStmt(a, b); break; case T_ReassignOwnedStmt: retval = _equalReassignOwnedStmt(a, b); break; case T_AlterTSDictionaryStmt: retval = _equalAlterTSDictionaryStmt(a, b); break; case T_AlterTSConfigurationStmt: retval = _equalAlterTSConfigurationStmt(a, b); break; case T_CreatePolicyStmt: retval = _equalCreatePolicyStmt(a, b); break; case T_AlterPolicyStmt: retval = _equalAlterPolicyStmt(a, b); break; case T_CreatePublicationStmt: retval = _equalCreatePublicationStmt(a, b); break; case T_AlterPublicationStmt: retval = _equalAlterPublicationStmt(a, b); break; case T_CreateSubscriptionStmt: retval = _equalCreateSubscriptionStmt(a, b); break; case T_AlterSubscriptionStmt: retval = _equalAlterSubscriptionStmt(a, b); break; case T_DropSubscriptionStmt: retval = _equalDropSubscriptionStmt(a, b); break; case T_A_Expr: retval = _equalA_Expr(a, b); break; case T_ColumnRef: retval = _equalColumnRef(a, b); break; case T_ParamRef: retval = _equalParamRef(a, b); break; case T_A_Const: retval = _equalA_Const(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_TypeCast: retval = _equalTypeCast(a, b); break; case T_CollateClause: retval = _equalCollateClause(a, b); break; case T_SortBy: retval = _equalSortBy(a, b); break; case T_WindowDef: retval = _equalWindowDef(a, b); break; case T_RangeSubselect: retval = _equalRangeSubselect(a, b); break; case T_RangeFunction: retval = _equalRangeFunction(a, b); break; case T_RangeTableSample: retval = _equalRangeTableSample(a, b); break; case T_RangeTableFunc: retval = _equalRangeTableFunc(a, b); break; case T_RangeTableFuncCol: retval = _equalRangeTableFuncCol(a, b); break; case T_TypeName: retval = _equalTypeName(a, b); break; case T_IndexElem: retval = _equalIndexElem(a, b); break; case T_StatsElem: retval = _equalStatsElem(a, b); break; case T_ColumnDef: retval = _equalColumnDef(a, b); break; case T_Constraint: retval = _equalConstraint(a, b); break; case T_DefElem: retval = _equalDefElem(a, b); break; case T_LockingClause: retval = _equalLockingClause(a, b); break; case T_RangeTblEntry: retval = _equalRangeTblEntry(a, b); break; case T_RangeTblFunction: retval = _equalRangeTblFunction(a, b); break; case T_TableSampleClause: retval = _equalTableSampleClause(a, b); break; case T_WithCheckOption: retval = _equalWithCheckOption(a, b); break; case T_SortGroupClause: retval = _equalSortGroupClause(a, b); break; case T_GroupingSet: retval = _equalGroupingSet(a, b); break; case T_WindowClause: retval = _equalWindowClause(a, b); break; case T_RowMarkClause: retval = _equalRowMarkClause(a, b); break; case T_WithClause: retval = _equalWithClause(a, b); break; case T_InferClause: retval = _equalInferClause(a, b); break; case T_OnConflictClause: retval = _equalOnConflictClause(a, b); break; case T_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_MergeAction: retval = _equalMergeAction(a, b); break; case T_ObjectWithArgs: retval = _equalObjectWithArgs(a, b); break; case T_AccessPriv: retval = _equalAccessPriv(a, b); break; case T_XmlSerialize: retval = _equalXmlSerialize(a, b); break; case T_RoleSpec: retval = _equalRoleSpec(a, b); break; case T_TriggerTransition: retval = _equalTriggerTransition(a, b); break; case T_PartitionElem: retval = _equalPartitionElem(a, b); break; case T_PartitionSpec: retval = _equalPartitionSpec(a, b); break; case T_PartitionBoundSpec: retval = _equalPartitionBoundSpec(a, b); break; case T_PartitionRangeDatum: retval = _equalPartitionRangeDatum(a, b); break; case T_PartitionCmd: retval = _equalPartitionCmd(a, b); break; case T_PublicationObjSpec: retval = _equalPublicationObject(a, b); break; case T_PublicationTable: retval = _equalPublicationTable(a, b); break; default: elog(ERROR, "unrecognized node type: %d", (int) nodeTag(a)); retval = false; /* keep compiler quiet */ break; } return retval; } pg_query-4.2.3/ext/pg_query/protobuf-c.c0000644000004100000410000027473614510636647020321 0ustar www-datawww-data/* * 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; }pg_query-4.2.3/ext/pg_query/pg_query_normalize.c0000644000004100000410000004761214510636647022143 0ustar www-datawww-data#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; } 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: return const_record_walker((Node *) ((VariableSetStmt *) node)->args, jstate); case T_CopyStmt: return const_record_walker((Node *) ((CopyStmt *) node)->query, jstate); case T_ExplainStmt: return const_record_walker((Node *) ((ExplainStmt *) node)->query, jstate); case T_CreateRoleStmt: return const_record_walker((Node *) ((CreateRoleStmt *) node)->options, jstate); case T_AlterRoleStmt: return const_record_walker((Node *) ((AlterRoleStmt *) node)->options, jstate); case T_DeclareCursorStmt: return const_record_walker((Node *) ((DeclareCursorStmt *) node)->query, jstate); case T_CreateFunctionStmt: return const_record_walker((Node *) ((CreateFunctionStmt *) node)->options, jstate); case T_DoStmt: 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, ((CreateSubscriptionStmt *) 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: { SelectStmt *stmt = (SelectStmt *) node; ListCell *lc; List *fp_and_param_refs_list = NIL; if (const_record_walker((Node *) stmt->distinctClause, jstate)) return true; if (const_record_walker((Node *) stmt->intoClause, jstate)) return true; foreach(lc, stmt->targetList) { ResTarget *res_target = lfirst_node(ResTarget, lc); FpAndParamRefs *fp_and_param_refs = palloc0(sizeof(FpAndParamRefs)); /* Save all param refs we encounter or assign */ jstate->param_refs = palloc0(1 * sizeof(int)); jstate->param_refs_buf_size = 1; jstate->param_refs_count = 0; /* Walk the element */ if (const_record_walker((Node *) res_target, jstate)) return true; /* Remember fingerprint and param refs for later */ fp_and_param_refs->fp = pg_query_fingerprint_node(res_target->val); fp_and_param_refs->param_refs = jstate->param_refs; fp_and_param_refs->param_refs_count = jstate->param_refs_count; fp_and_param_refs_list = lappend(fp_and_param_refs_list, fp_and_param_refs); /* Reset for next element, or stop recording if this is the last element */ jstate->param_refs = NULL; jstate->param_refs_buf_size = 0; jstate->param_refs_count = 0; } if (const_record_walker((Node *) stmt->fromClause, jstate)) return true; if (const_record_walker((Node *) stmt->whereClause, jstate)) return true; /* * Instead of walking all of groupClause (like raw_expression_tree_walker does), * only walk certain items. */ foreach(lc, stmt->groupClause) { /* * Do not walk A_Const values that are simple integers, this avoids * turning "GROUP BY 1" into "GROUP BY $n", which obscures an important * semantic meaning. This matches how pg_stat_statements handles the * GROUP BY clause (i.e. it doesn't touch these constants) */ if (IsA(lfirst(lc), A_Const) && IsA(&castNode(A_Const, lfirst(lc))->val, Integer)) continue; /* * Match up GROUP BY clauses against the target list, to assign the same * param refs as used in the target list - this ensures the query is valid, * instead of throwing a bogus "columns ... must appear in the GROUP BY * clause or be used in an aggregate function" error */ uint64_t fp = pg_query_fingerprint_node(lfirst(lc)); FpAndParamRefs *fppr = NULL; ListCell *lc2; foreach(lc2, fp_and_param_refs_list) { if (fp == ((FpAndParamRefs *) lfirst(lc2))->fp) { fppr = (FpAndParamRefs *) lfirst(lc2); foreach_delete_current(fp_and_param_refs_list, lc2); break; } } int prev_cloc_count = jstate->clocations_count; if (const_record_walker((Node *) lfirst(lc), jstate)) return true; if (fppr != NULL && fppr->param_refs_count == jstate->clocations_count - prev_cloc_count) { for (int i = prev_cloc_count; i < jstate->clocations_count; i++) { jstate->clocations[i].param_id = fppr->param_refs[i - prev_cloc_count]; } jstate->highest_normalize_param_id -= fppr->param_refs_count; } } foreach(lc, stmt->sortClause) { /* Similarly, don't turn "ORDER BY 1" into "ORDER BY $n" */ if (IsA(lfirst(lc), SortBy) && IsA(castNode(SortBy, lfirst(lc))->node, A_Const) && IsA(&castNode(A_Const, castNode(SortBy, lfirst(lc))->node)->val, Integer)) continue; if (const_record_walker((Node *) lfirst(lc), jstate)) return true; } if (const_record_walker((Node *) stmt->havingClause, jstate)) return true; if (const_record_walker((Node *) stmt->windowClause, jstate)) return true; if (const_record_walker((Node *) stmt->valuesLists, jstate)) return true; if (const_record_walker((Node *) stmt->limitOffset, jstate)) return true; if (const_record_walker((Node *) stmt->limitCount, jstate)) return true; if (const_record_walker((Node *) stmt->lockingClause, jstate)) return true; if (const_record_walker((Node *) stmt->withClause, jstate)) return true; if (const_record_walker((Node *) stmt->larg, jstate)) return true; if (const_record_walker((Node *) stmt->rarg, jstate)) return true; return false; } default: { PG_TRY(); { return raw_expression_tree_walker(node, const_record_walker, (void*) jstate); } PG_CATCH(); { MemoryContextSwitchTo(normalize_context); FlushErrorState(); } PG_END_TRY(); } } return false; } PgQueryNormalizeResult pg_query_normalize(const char* input) { MemoryContext ctx = NULL; PgQueryNormalizeResult result = {0}; ctx = pg_query_enter_memory_context(); PG_TRY(); { List *tree; pgssConstLocations jstate; int query_len; /* Parse query */ tree = raw_parser(input, 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; /* Walk tree and record const locations */ const_record_walker((Node *) tree, &jstate); /* Normalize query */ result.normalized_query = strdup(generate_normalized_query(&jstate, 0, &query_len, PG_UTF8)); } PG_CATCH(); { ErrorData* error_data; PgQueryError* error; MemoryContextSwitchTo(ctx); error_data = CopyErrorData(); error = malloc(sizeof(PgQueryError)); error->message = strdup(error_data->message); error->filename = strdup(error_data->filename); error->funcname = strdup(error_data->funcname); error->context = NULL; error->lineno = error_data->lineno; error->cursorpos = error_data->cursorpos; result.error = error; FlushErrorState(); } PG_END_TRY(); pg_query_exit_memory_context(ctx); return result; } void pg_query_free_normalize_result(PgQueryNormalizeResult result) { if (result.error) { free(result.error->message); free(result.error->filename); free(result.error->funcname); free(result.error); } free(result.normalized_query); } pg_query-4.2.3/ext/pg_query/src_port_strnlen.c0000644000004100000410000000176414510636647021626 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - strnlen *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * strnlen.c * Fallback implementation of strnlen(). * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/port/strnlen.c * *------------------------------------------------------------------------- */ #include "c.h" /* * Implementation of posix' strnlen for systems where it's not available. * * Returns the number of characters before a null-byte in the string pointed * to by str, unless there's no null-byte before maxlen. In the latter case * maxlen is returned. */ size_t strnlen(const char *str, size_t maxlen) { const char *p = str; while (maxlen-- > 0 && *p) p++; return p - str; } pg_query-4.2.3/ext/pg_query/pg_query_outfuncs.h0000644000004100000410000000036314510636647022006 0ustar www-datawww-data#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 pg_query-4.2.3/ext/pg_query/src_backend_parser_scan.c0000644000004100000410000122722014510636647023042 0ustar www-datawww-data/*-------------------------------------------------------------------- * 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-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/backend/parser/scan.l * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include "common/string.h" #include "parser/gramparse.h" #include "parser/parser.h" /* only needed for GUC variables */ #include "parser/scansup.h" #include "port/pg_bitutils.h" #include "mb/pg_wchar.h" #line 45 "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 65 #define YY_END_OF_BUFFER 66 struct yy_trans_info { flex_int16_t yy_verify; flex_int16_t yy_nxt; }; static const struct yy_trans_info yy_transition[17678] = { { 0, 0 }, { 0,17422 }, { 0, 0 }, { 0,17420 }, { 1,6192 }, { 2,6192 }, { 3,6192 }, { 4,6192 }, { 5,6192 }, { 6,6192 }, { 7,6192 }, { 8,6192 }, { 9,6194 }, { 10,6199 }, { 11,6192 }, { 12,6194 }, { 13,6194 }, { 14,6192 }, { 15,6192 }, { 16,6192 }, { 17,6192 }, { 18,6192 }, { 19,6192 }, { 20,6192 }, { 21,6192 }, { 22,6192 }, { 23,6192 }, { 24,6192 }, { 25,6192 }, { 26,6192 }, { 27,6192 }, { 28,6192 }, { 29,6192 }, { 30,6192 }, { 31,6192 }, { 32,6194 }, { 33,6201 }, { 34,6196 }, { 35,6241 }, { 36,6307 }, { 37,6564 }, { 38,6241 }, { 39,6214 }, { 40,6216 }, { 41,6216 }, { 42,6564 }, { 43,6564 }, { 44,6216 }, { 45,6575 }, { 46,6594 }, { 47,6665 }, { 48,6667 }, { 49,6667 }, { 50,6667 }, { 51,6667 }, { 52,6667 }, { 53,6667 }, { 54,6667 }, { 55,6667 }, { 56,6667 }, { 57,6667 }, { 58,6219 }, { 59,6216 }, { 60,6732 }, { 61,6743 }, { 62,6810 }, { 63,6241 }, { 64,6241 }, { 65,6842 }, { 66,7099 }, { 67,6842 }, { 68,6842 }, { 69,7356 }, { 70,6842 }, { 71,6842 }, { 72,6842 }, { 73,6842 }, { 74,6842 }, { 75,6842 }, { 76,6842 }, { 77,6842 }, { 78,7613 }, { 79,6842 }, { 80,6842 }, { 81,6842 }, { 82,6842 }, { 83,6842 }, { 84,6842 }, { 85,7870 }, { 86,6842 }, { 87,6842 }, { 88,8127 }, { 89,6842 }, { 90,6842 }, { 91,6216 }, { 92,6192 }, { 93,6216 }, { 94,6564 }, { 95,6842 }, { 96,6241 }, { 97,6842 }, { 98,7099 }, { 99,6842 }, { 100,6842 }, { 101,7356 }, { 102,6842 }, { 103,6842 }, { 104,6842 }, { 105,6842 }, { 106,6842 }, { 107,6842 }, { 108,6842 }, { 109,6842 }, { 110,7613 }, { 111,6842 }, { 112,6842 }, { 113,6842 }, { 114,6842 }, { 115,6842 }, { 116,6842 }, { 117,7870 }, { 118,6842 }, { 119,6842 }, { 120,8127 }, { 121,6842 }, { 122,6842 }, { 123,6192 }, { 124,6241 }, { 125,6192 }, { 126,6241 }, { 127,6192 }, { 128,6842 }, { 129,6842 }, { 130,6842 }, { 131,6842 }, { 132,6842 }, { 133,6842 }, { 134,6842 }, { 135,6842 }, { 136,6842 }, { 137,6842 }, { 138,6842 }, { 139,6842 }, { 140,6842 }, { 141,6842 }, { 142,6842 }, { 143,6842 }, { 144,6842 }, { 145,6842 }, { 146,6842 }, { 147,6842 }, { 148,6842 }, { 149,6842 }, { 150,6842 }, { 151,6842 }, { 152,6842 }, { 153,6842 }, { 154,6842 }, { 155,6842 }, { 156,6842 }, { 157,6842 }, { 158,6842 }, { 159,6842 }, { 160,6842 }, { 161,6842 }, { 162,6842 }, { 163,6842 }, { 164,6842 }, { 165,6842 }, { 166,6842 }, { 167,6842 }, { 168,6842 }, { 169,6842 }, { 170,6842 }, { 171,6842 }, { 172,6842 }, { 173,6842 }, { 174,6842 }, { 175,6842 }, { 176,6842 }, { 177,6842 }, { 178,6842 }, { 179,6842 }, { 180,6842 }, { 181,6842 }, { 182,6842 }, { 183,6842 }, { 184,6842 }, { 185,6842 }, { 186,6842 }, { 187,6842 }, { 188,6842 }, { 189,6842 }, { 190,6842 }, { 191,6842 }, { 192,6842 }, { 193,6842 }, { 194,6842 }, { 195,6842 }, { 196,6842 }, { 197,6842 }, { 198,6842 }, { 199,6842 }, { 200,6842 }, { 201,6842 }, { 202,6842 }, { 203,6842 }, { 204,6842 }, { 205,6842 }, { 206,6842 }, { 207,6842 }, { 208,6842 }, { 209,6842 }, { 210,6842 }, { 211,6842 }, { 212,6842 }, { 213,6842 }, { 214,6842 }, { 215,6842 }, { 216,6842 }, { 217,6842 }, { 218,6842 }, { 219,6842 }, { 220,6842 }, { 221,6842 }, { 222,6842 }, { 223,6842 }, { 224,6842 }, { 225,6842 }, { 226,6842 }, { 227,6842 }, { 228,6842 }, { 229,6842 }, { 230,6842 }, { 231,6842 }, { 232,6842 }, { 233,6842 }, { 234,6842 }, { 235,6842 }, { 236,6842 }, { 237,6842 }, { 238,6842 }, { 239,6842 }, { 240,6842 }, { 241,6842 }, { 242,6842 }, { 243,6842 }, { 244,6842 }, { 245,6842 }, { 246,6842 }, { 247,6842 }, { 248,6842 }, { 249,6842 }, { 250,6842 }, { 251,6842 }, { 252,6842 }, { 253,6842 }, { 254,6842 }, { 255,6842 }, { 256,6192 }, { 0, 0 }, { 0,17162 }, { 1,5934 }, { 2,5934 }, { 3,5934 }, { 4,5934 }, { 5,5934 }, { 6,5934 }, { 7,5934 }, { 8,5934 }, { 9,5936 }, { 10,5941 }, { 11,5934 }, { 12,5936 }, { 13,5936 }, { 14,5934 }, { 15,5934 }, { 16,5934 }, { 17,5934 }, { 18,5934 }, { 19,5934 }, { 20,5934 }, { 21,5934 }, { 22,5934 }, { 23,5934 }, { 24,5934 }, { 25,5934 }, { 26,5934 }, { 27,5934 }, { 28,5934 }, { 29,5934 }, { 30,5934 }, { 31,5934 }, { 32,5936 }, { 33,5943 }, { 34,5938 }, { 35,5983 }, { 36,6049 }, { 37,6306 }, { 38,5983 }, { 39,5956 }, { 40,5958 }, { 41,5958 }, { 42,6306 }, { 43,6306 }, { 44,5958 }, { 45,6317 }, { 46,6336 }, { 47,6407 }, { 48,6409 }, { 49,6409 }, { 50,6409 }, { 51,6409 }, { 52,6409 }, { 53,6409 }, { 54,6409 }, { 55,6409 }, { 56,6409 }, { 57,6409 }, { 58,5961 }, { 59,5958 }, { 60,6474 }, { 61,6485 }, { 62,6552 }, { 63,5983 }, { 64,5983 }, { 65,6584 }, { 66,6841 }, { 67,6584 }, { 68,6584 }, { 69,7098 }, { 70,6584 }, { 71,6584 }, { 72,6584 }, { 73,6584 }, { 74,6584 }, { 75,6584 }, { 76,6584 }, { 77,6584 }, { 78,7355 }, { 79,6584 }, { 80,6584 }, { 81,6584 }, { 82,6584 }, { 83,6584 }, { 84,6584 }, { 85,7612 }, { 86,6584 }, { 87,6584 }, { 88,7869 }, { 89,6584 }, { 90,6584 }, { 91,5958 }, { 92,5934 }, { 93,5958 }, { 94,6306 }, { 95,6584 }, { 96,5983 }, { 97,6584 }, { 98,6841 }, { 99,6584 }, { 100,6584 }, { 101,7098 }, { 102,6584 }, { 103,6584 }, { 104,6584 }, { 105,6584 }, { 106,6584 }, { 107,6584 }, { 108,6584 }, { 109,6584 }, { 110,7355 }, { 111,6584 }, { 112,6584 }, { 113,6584 }, { 114,6584 }, { 115,6584 }, { 116,6584 }, { 117,7612 }, { 118,6584 }, { 119,6584 }, { 120,7869 }, { 121,6584 }, { 122,6584 }, { 123,5934 }, { 124,5983 }, { 125,5934 }, { 126,5983 }, { 127,5934 }, { 128,6584 }, { 129,6584 }, { 130,6584 }, { 131,6584 }, { 132,6584 }, { 133,6584 }, { 134,6584 }, { 135,6584 }, { 136,6584 }, { 137,6584 }, { 138,6584 }, { 139,6584 }, { 140,6584 }, { 141,6584 }, { 142,6584 }, { 143,6584 }, { 144,6584 }, { 145,6584 }, { 146,6584 }, { 147,6584 }, { 148,6584 }, { 149,6584 }, { 150,6584 }, { 151,6584 }, { 152,6584 }, { 153,6584 }, { 154,6584 }, { 155,6584 }, { 156,6584 }, { 157,6584 }, { 158,6584 }, { 159,6584 }, { 160,6584 }, { 161,6584 }, { 162,6584 }, { 163,6584 }, { 164,6584 }, { 165,6584 }, { 166,6584 }, { 167,6584 }, { 168,6584 }, { 169,6584 }, { 170,6584 }, { 171,6584 }, { 172,6584 }, { 173,6584 }, { 174,6584 }, { 175,6584 }, { 176,6584 }, { 177,6584 }, { 178,6584 }, { 179,6584 }, { 180,6584 }, { 181,6584 }, { 182,6584 }, { 183,6584 }, { 184,6584 }, { 185,6584 }, { 186,6584 }, { 187,6584 }, { 188,6584 }, { 189,6584 }, { 190,6584 }, { 191,6584 }, { 192,6584 }, { 193,6584 }, { 194,6584 }, { 195,6584 }, { 196,6584 }, { 197,6584 }, { 198,6584 }, { 199,6584 }, { 200,6584 }, { 201,6584 }, { 202,6584 }, { 203,6584 }, { 204,6584 }, { 205,6584 }, { 206,6584 }, { 207,6584 }, { 208,6584 }, { 209,6584 }, { 210,6584 }, { 211,6584 }, { 212,6584 }, { 213,6584 }, { 214,6584 }, { 215,6584 }, { 216,6584 }, { 217,6584 }, { 218,6584 }, { 219,6584 }, { 220,6584 }, { 221,6584 }, { 222,6584 }, { 223,6584 }, { 224,6584 }, { 225,6584 }, { 226,6584 }, { 227,6584 }, { 228,6584 }, { 229,6584 }, { 230,6584 }, { 231,6584 }, { 232,6584 }, { 233,6584 }, { 234,6584 }, { 235,6584 }, { 236,6584 }, { 237,6584 }, { 238,6584 }, { 239,6584 }, { 240,6584 }, { 241,6584 }, { 242,6584 }, { 243,6584 }, { 244,6584 }, { 245,6584 }, { 246,6584 }, { 247,6584 }, { 248,6584 }, { 249,6584 }, { 250,6584 }, { 251,6584 }, { 252,6584 }, { 253,6584 }, { 254,6584 }, { 255,6584 }, { 256,5934 }, { 0, 11 }, { 0,16904 }, { 1,7868 }, { 2,7868 }, { 3,7868 }, { 4,7868 }, { 5,7868 }, { 6,7868 }, { 7,7868 }, { 8,7868 }, { 9,7868 }, { 10,7868 }, { 11,7868 }, { 12,7868 }, { 13,7868 }, { 14,7868 }, { 15,7868 }, { 16,7868 }, { 17,7868 }, { 18,7868 }, { 19,7868 }, { 20,7868 }, { 21,7868 }, { 22,7868 }, { 23,7868 }, { 24,7868 }, { 25,7868 }, { 26,7868 }, { 27,7868 }, { 28,7868 }, { 29,7868 }, { 30,7868 }, { 31,7868 }, { 32,7868 }, { 33,7868 }, { 34,7868 }, { 35,7868 }, { 36,7868 }, { 37,7868 }, { 38,7868 }, { 39,5705 }, { 40,7868 }, { 41,7868 }, { 42,7868 }, { 43,7868 }, { 44,7868 }, { 45,7868 }, { 46,7868 }, { 47,7868 }, { 48,7868 }, { 49,7868 }, { 50,7868 }, { 51,7868 }, { 52,7868 }, { 53,7868 }, { 54,7868 }, { 55,7868 }, { 56,7868 }, { 57,7868 }, { 58,7868 }, { 59,7868 }, { 60,7868 }, { 61,7868 }, { 62,7868 }, { 63,7868 }, { 64,7868 }, { 65,7868 }, { 66,7868 }, { 67,7868 }, { 68,7868 }, { 69,7868 }, { 70,7868 }, { 71,7868 }, { 72,7868 }, { 73,7868 }, { 74,7868 }, { 75,7868 }, { 76,7868 }, { 77,7868 }, { 78,7868 }, { 79,7868 }, { 80,7868 }, { 81,7868 }, { 82,7868 }, { 83,7868 }, { 84,7868 }, { 85,7868 }, { 86,7868 }, { 87,7868 }, { 88,7868 }, { 89,7868 }, { 90,7868 }, { 91,7868 }, { 92,7868 }, { 93,7868 }, { 94,7868 }, { 95,7868 }, { 96,7868 }, { 97,7868 }, { 98,7868 }, { 99,7868 }, { 100,7868 }, { 101,7868 }, { 102,7868 }, { 103,7868 }, { 104,7868 }, { 105,7868 }, { 106,7868 }, { 107,7868 }, { 108,7868 }, { 109,7868 }, { 110,7868 }, { 111,7868 }, { 112,7868 }, { 113,7868 }, { 114,7868 }, { 115,7868 }, { 116,7868 }, { 117,7868 }, { 118,7868 }, { 119,7868 }, { 120,7868 }, { 121,7868 }, { 122,7868 }, { 123,7868 }, { 124,7868 }, { 125,7868 }, { 126,7868 }, { 127,7868 }, { 128,7868 }, { 129,7868 }, { 130,7868 }, { 131,7868 }, { 132,7868 }, { 133,7868 }, { 134,7868 }, { 135,7868 }, { 136,7868 }, { 137,7868 }, { 138,7868 }, { 139,7868 }, { 140,7868 }, { 141,7868 }, { 142,7868 }, { 143,7868 }, { 144,7868 }, { 145,7868 }, { 146,7868 }, { 147,7868 }, { 148,7868 }, { 149,7868 }, { 150,7868 }, { 151,7868 }, { 152,7868 }, { 153,7868 }, { 154,7868 }, { 155,7868 }, { 156,7868 }, { 157,7868 }, { 158,7868 }, { 159,7868 }, { 160,7868 }, { 161,7868 }, { 162,7868 }, { 163,7868 }, { 164,7868 }, { 165,7868 }, { 166,7868 }, { 167,7868 }, { 168,7868 }, { 169,7868 }, { 170,7868 }, { 171,7868 }, { 172,7868 }, { 173,7868 }, { 174,7868 }, { 175,7868 }, { 176,7868 }, { 177,7868 }, { 178,7868 }, { 179,7868 }, { 180,7868 }, { 181,7868 }, { 182,7868 }, { 183,7868 }, { 184,7868 }, { 185,7868 }, { 186,7868 }, { 187,7868 }, { 188,7868 }, { 189,7868 }, { 190,7868 }, { 191,7868 }, { 192,7868 }, { 193,7868 }, { 194,7868 }, { 195,7868 }, { 196,7868 }, { 197,7868 }, { 198,7868 }, { 199,7868 }, { 200,7868 }, { 201,7868 }, { 202,7868 }, { 203,7868 }, { 204,7868 }, { 205,7868 }, { 206,7868 }, { 207,7868 }, { 208,7868 }, { 209,7868 }, { 210,7868 }, { 211,7868 }, { 212,7868 }, { 213,7868 }, { 214,7868 }, { 215,7868 }, { 216,7868 }, { 217,7868 }, { 218,7868 }, { 219,7868 }, { 220,7868 }, { 221,7868 }, { 222,7868 }, { 223,7868 }, { 224,7868 }, { 225,7868 }, { 226,7868 }, { 227,7868 }, { 228,7868 }, { 229,7868 }, { 230,7868 }, { 231,7868 }, { 232,7868 }, { 233,7868 }, { 234,7868 }, { 235,7868 }, { 236,7868 }, { 237,7868 }, { 238,7868 }, { 239,7868 }, { 240,7868 }, { 241,7868 }, { 242,7868 }, { 243,7868 }, { 244,7868 }, { 245,7868 }, { 246,7868 }, { 247,7868 }, { 248,7868 }, { 249,7868 }, { 250,7868 }, { 251,7868 }, { 252,7868 }, { 253,7868 }, { 254,7868 }, { 255,7868 }, { 256,7868 }, { 0, 11 }, { 0,16646 }, { 1,7610 }, { 2,7610 }, { 3,7610 }, { 4,7610 }, { 5,7610 }, { 6,7610 }, { 7,7610 }, { 8,7610 }, { 9,7610 }, { 10,7610 }, { 11,7610 }, { 12,7610 }, { 13,7610 }, { 14,7610 }, { 15,7610 }, { 16,7610 }, { 17,7610 }, { 18,7610 }, { 19,7610 }, { 20,7610 }, { 21,7610 }, { 22,7610 }, { 23,7610 }, { 24,7610 }, { 25,7610 }, { 26,7610 }, { 27,7610 }, { 28,7610 }, { 29,7610 }, { 30,7610 }, { 31,7610 }, { 32,7610 }, { 33,7610 }, { 34,7610 }, { 35,7610 }, { 36,7610 }, { 37,7610 }, { 38,7610 }, { 39,5447 }, { 40,7610 }, { 41,7610 }, { 42,7610 }, { 43,7610 }, { 44,7610 }, { 45,7610 }, { 46,7610 }, { 47,7610 }, { 48,7610 }, { 49,7610 }, { 50,7610 }, { 51,7610 }, { 52,7610 }, { 53,7610 }, { 54,7610 }, { 55,7610 }, { 56,7610 }, { 57,7610 }, { 58,7610 }, { 59,7610 }, { 60,7610 }, { 61,7610 }, { 62,7610 }, { 63,7610 }, { 64,7610 }, { 65,7610 }, { 66,7610 }, { 67,7610 }, { 68,7610 }, { 69,7610 }, { 70,7610 }, { 71,7610 }, { 72,7610 }, { 73,7610 }, { 74,7610 }, { 75,7610 }, { 76,7610 }, { 77,7610 }, { 78,7610 }, { 79,7610 }, { 80,7610 }, { 81,7610 }, { 82,7610 }, { 83,7610 }, { 84,7610 }, { 85,7610 }, { 86,7610 }, { 87,7610 }, { 88,7610 }, { 89,7610 }, { 90,7610 }, { 91,7610 }, { 92,7610 }, { 93,7610 }, { 94,7610 }, { 95,7610 }, { 96,7610 }, { 97,7610 }, { 98,7610 }, { 99,7610 }, { 100,7610 }, { 101,7610 }, { 102,7610 }, { 103,7610 }, { 104,7610 }, { 105,7610 }, { 106,7610 }, { 107,7610 }, { 108,7610 }, { 109,7610 }, { 110,7610 }, { 111,7610 }, { 112,7610 }, { 113,7610 }, { 114,7610 }, { 115,7610 }, { 116,7610 }, { 117,7610 }, { 118,7610 }, { 119,7610 }, { 120,7610 }, { 121,7610 }, { 122,7610 }, { 123,7610 }, { 124,7610 }, { 125,7610 }, { 126,7610 }, { 127,7610 }, { 128,7610 }, { 129,7610 }, { 130,7610 }, { 131,7610 }, { 132,7610 }, { 133,7610 }, { 134,7610 }, { 135,7610 }, { 136,7610 }, { 137,7610 }, { 138,7610 }, { 139,7610 }, { 140,7610 }, { 141,7610 }, { 142,7610 }, { 143,7610 }, { 144,7610 }, { 145,7610 }, { 146,7610 }, { 147,7610 }, { 148,7610 }, { 149,7610 }, { 150,7610 }, { 151,7610 }, { 152,7610 }, { 153,7610 }, { 154,7610 }, { 155,7610 }, { 156,7610 }, { 157,7610 }, { 158,7610 }, { 159,7610 }, { 160,7610 }, { 161,7610 }, { 162,7610 }, { 163,7610 }, { 164,7610 }, { 165,7610 }, { 166,7610 }, { 167,7610 }, { 168,7610 }, { 169,7610 }, { 170,7610 }, { 171,7610 }, { 172,7610 }, { 173,7610 }, { 174,7610 }, { 175,7610 }, { 176,7610 }, { 177,7610 }, { 178,7610 }, { 179,7610 }, { 180,7610 }, { 181,7610 }, { 182,7610 }, { 183,7610 }, { 184,7610 }, { 185,7610 }, { 186,7610 }, { 187,7610 }, { 188,7610 }, { 189,7610 }, { 190,7610 }, { 191,7610 }, { 192,7610 }, { 193,7610 }, { 194,7610 }, { 195,7610 }, { 196,7610 }, { 197,7610 }, { 198,7610 }, { 199,7610 }, { 200,7610 }, { 201,7610 }, { 202,7610 }, { 203,7610 }, { 204,7610 }, { 205,7610 }, { 206,7610 }, { 207,7610 }, { 208,7610 }, { 209,7610 }, { 210,7610 }, { 211,7610 }, { 212,7610 }, { 213,7610 }, { 214,7610 }, { 215,7610 }, { 216,7610 }, { 217,7610 }, { 218,7610 }, { 219,7610 }, { 220,7610 }, { 221,7610 }, { 222,7610 }, { 223,7610 }, { 224,7610 }, { 225,7610 }, { 226,7610 }, { 227,7610 }, { 228,7610 }, { 229,7610 }, { 230,7610 }, { 231,7610 }, { 232,7610 }, { 233,7610 }, { 234,7610 }, { 235,7610 }, { 236,7610 }, { 237,7610 }, { 238,7610 }, { 239,7610 }, { 240,7610 }, { 241,7610 }, { 242,7610 }, { 243,7610 }, { 244,7610 }, { 245,7610 }, { 246,7610 }, { 247,7610 }, { 248,7610 }, { 249,7610 }, { 250,7610 }, { 251,7610 }, { 252,7610 }, { 253,7610 }, { 254,7610 }, { 255,7610 }, { 256,7610 }, { 0, 0 }, { 0,16388 }, { 1,7610 }, { 2,7610 }, { 3,7610 }, { 4,7610 }, { 5,7610 }, { 6,7610 }, { 7,7610 }, { 8,7610 }, { 9,7610 }, { 10,7610 }, { 11,7610 }, { 12,7610 }, { 13,7610 }, { 14,7610 }, { 15,7610 }, { 16,7610 }, { 17,7610 }, { 18,7610 }, { 19,7610 }, { 20,7610 }, { 21,7610 }, { 22,7610 }, { 23,7610 }, { 24,7610 }, { 25,7610 }, { 26,7610 }, { 27,7610 }, { 28,7610 }, { 29,7610 }, { 30,7610 }, { 31,7610 }, { 32,7610 }, { 33,7868 }, { 34,7610 }, { 35,7868 }, { 36,7610 }, { 37,7868 }, { 38,7868 }, { 39,7610 }, { 40,7610 }, { 41,7610 }, { 42,5192 }, { 43,7868 }, { 44,7610 }, { 45,7868 }, { 46,7610 }, { 47,5196 }, { 48,7610 }, { 49,7610 }, { 50,7610 }, { 51,7610 }, { 52,7610 }, { 53,7610 }, { 54,7610 }, { 55,7610 }, { 56,7610 }, { 57,7610 }, { 58,7610 }, { 59,7610 }, { 60,7868 }, { 61,7868 }, { 62,7868 }, { 63,7868 }, { 64,7868 }, { 65,7610 }, { 66,7610 }, { 67,7610 }, { 68,7610 }, { 69,7610 }, { 70,7610 }, { 71,7610 }, { 72,7610 }, { 73,7610 }, { 74,7610 }, { 75,7610 }, { 76,7610 }, { 77,7610 }, { 78,7610 }, { 79,7610 }, { 80,7610 }, { 81,7610 }, { 82,7610 }, { 83,7610 }, { 84,7610 }, { 85,7610 }, { 86,7610 }, { 87,7610 }, { 88,7610 }, { 89,7610 }, { 90,7610 }, { 91,7610 }, { 92,7610 }, { 93,7610 }, { 94,7868 }, { 95,7610 }, { 96,7868 }, { 97,7610 }, { 98,7610 }, { 99,7610 }, { 100,7610 }, { 101,7610 }, { 102,7610 }, { 103,7610 }, { 104,7610 }, { 105,7610 }, { 106,7610 }, { 107,7610 }, { 108,7610 }, { 109,7610 }, { 110,7610 }, { 111,7610 }, { 112,7610 }, { 113,7610 }, { 114,7610 }, { 115,7610 }, { 116,7610 }, { 117,7610 }, { 118,7610 }, { 119,7610 }, { 120,7610 }, { 121,7610 }, { 122,7610 }, { 123,7610 }, { 124,7868 }, { 125,7610 }, { 126,7868 }, { 127,7610 }, { 128,7610 }, { 129,7610 }, { 130,7610 }, { 131,7610 }, { 132,7610 }, { 133,7610 }, { 134,7610 }, { 135,7610 }, { 136,7610 }, { 137,7610 }, { 138,7610 }, { 139,7610 }, { 140,7610 }, { 141,7610 }, { 142,7610 }, { 143,7610 }, { 144,7610 }, { 145,7610 }, { 146,7610 }, { 147,7610 }, { 148,7610 }, { 149,7610 }, { 150,7610 }, { 151,7610 }, { 152,7610 }, { 153,7610 }, { 154,7610 }, { 155,7610 }, { 156,7610 }, { 157,7610 }, { 158,7610 }, { 159,7610 }, { 160,7610 }, { 161,7610 }, { 162,7610 }, { 163,7610 }, { 164,7610 }, { 165,7610 }, { 166,7610 }, { 167,7610 }, { 168,7610 }, { 169,7610 }, { 170,7610 }, { 171,7610 }, { 172,7610 }, { 173,7610 }, { 174,7610 }, { 175,7610 }, { 176,7610 }, { 177,7610 }, { 178,7610 }, { 179,7610 }, { 180,7610 }, { 181,7610 }, { 182,7610 }, { 183,7610 }, { 184,7610 }, { 185,7610 }, { 186,7610 }, { 187,7610 }, { 188,7610 }, { 189,7610 }, { 190,7610 }, { 191,7610 }, { 192,7610 }, { 193,7610 }, { 194,7610 }, { 195,7610 }, { 196,7610 }, { 197,7610 }, { 198,7610 }, { 199,7610 }, { 200,7610 }, { 201,7610 }, { 202,7610 }, { 203,7610 }, { 204,7610 }, { 205,7610 }, { 206,7610 }, { 207,7610 }, { 208,7610 }, { 209,7610 }, { 210,7610 }, { 211,7610 }, { 212,7610 }, { 213,7610 }, { 214,7610 }, { 215,7610 }, { 216,7610 }, { 217,7610 }, { 218,7610 }, { 219,7610 }, { 220,7610 }, { 221,7610 }, { 222,7610 }, { 223,7610 }, { 224,7610 }, { 225,7610 }, { 226,7610 }, { 227,7610 }, { 228,7610 }, { 229,7610 }, { 230,7610 }, { 231,7610 }, { 232,7610 }, { 233,7610 }, { 234,7610 }, { 235,7610 }, { 236,7610 }, { 237,7610 }, { 238,7610 }, { 239,7610 }, { 240,7610 }, { 241,7610 }, { 242,7610 }, { 243,7610 }, { 244,7610 }, { 245,7610 }, { 246,7610 }, { 247,7610 }, { 248,7610 }, { 249,7610 }, { 250,7610 }, { 251,7610 }, { 252,7610 }, { 253,7610 }, { 254,7610 }, { 255,7610 }, { 256,7610 }, { 0, 0 }, { 0,16130 }, { 1,7352 }, { 2,7352 }, { 3,7352 }, { 4,7352 }, { 5,7352 }, { 6,7352 }, { 7,7352 }, { 8,7352 }, { 9,7352 }, { 10,7352 }, { 11,7352 }, { 12,7352 }, { 13,7352 }, { 14,7352 }, { 15,7352 }, { 16,7352 }, { 17,7352 }, { 18,7352 }, { 19,7352 }, { 20,7352 }, { 21,7352 }, { 22,7352 }, { 23,7352 }, { 24,7352 }, { 25,7352 }, { 26,7352 }, { 27,7352 }, { 28,7352 }, { 29,7352 }, { 30,7352 }, { 31,7352 }, { 32,7352 }, { 33,7610 }, { 34,7352 }, { 35,7610 }, { 36,7352 }, { 37,7610 }, { 38,7610 }, { 39,7352 }, { 40,7352 }, { 41,7352 }, { 42,4934 }, { 43,7610 }, { 44,7352 }, { 45,7610 }, { 46,7352 }, { 47,4938 }, { 48,7352 }, { 49,7352 }, { 50,7352 }, { 51,7352 }, { 52,7352 }, { 53,7352 }, { 54,7352 }, { 55,7352 }, { 56,7352 }, { 57,7352 }, { 58,7352 }, { 59,7352 }, { 60,7610 }, { 61,7610 }, { 62,7610 }, { 63,7610 }, { 64,7610 }, { 65,7352 }, { 66,7352 }, { 67,7352 }, { 68,7352 }, { 69,7352 }, { 70,7352 }, { 71,7352 }, { 72,7352 }, { 73,7352 }, { 74,7352 }, { 75,7352 }, { 76,7352 }, { 77,7352 }, { 78,7352 }, { 79,7352 }, { 80,7352 }, { 81,7352 }, { 82,7352 }, { 83,7352 }, { 84,7352 }, { 85,7352 }, { 86,7352 }, { 87,7352 }, { 88,7352 }, { 89,7352 }, { 90,7352 }, { 91,7352 }, { 92,7352 }, { 93,7352 }, { 94,7610 }, { 95,7352 }, { 96,7610 }, { 97,7352 }, { 98,7352 }, { 99,7352 }, { 100,7352 }, { 101,7352 }, { 102,7352 }, { 103,7352 }, { 104,7352 }, { 105,7352 }, { 106,7352 }, { 107,7352 }, { 108,7352 }, { 109,7352 }, { 110,7352 }, { 111,7352 }, { 112,7352 }, { 113,7352 }, { 114,7352 }, { 115,7352 }, { 116,7352 }, { 117,7352 }, { 118,7352 }, { 119,7352 }, { 120,7352 }, { 121,7352 }, { 122,7352 }, { 123,7352 }, { 124,7610 }, { 125,7352 }, { 126,7610 }, { 127,7352 }, { 128,7352 }, { 129,7352 }, { 130,7352 }, { 131,7352 }, { 132,7352 }, { 133,7352 }, { 134,7352 }, { 135,7352 }, { 136,7352 }, { 137,7352 }, { 138,7352 }, { 139,7352 }, { 140,7352 }, { 141,7352 }, { 142,7352 }, { 143,7352 }, { 144,7352 }, { 145,7352 }, { 146,7352 }, { 147,7352 }, { 148,7352 }, { 149,7352 }, { 150,7352 }, { 151,7352 }, { 152,7352 }, { 153,7352 }, { 154,7352 }, { 155,7352 }, { 156,7352 }, { 157,7352 }, { 158,7352 }, { 159,7352 }, { 160,7352 }, { 161,7352 }, { 162,7352 }, { 163,7352 }, { 164,7352 }, { 165,7352 }, { 166,7352 }, { 167,7352 }, { 168,7352 }, { 169,7352 }, { 170,7352 }, { 171,7352 }, { 172,7352 }, { 173,7352 }, { 174,7352 }, { 175,7352 }, { 176,7352 }, { 177,7352 }, { 178,7352 }, { 179,7352 }, { 180,7352 }, { 181,7352 }, { 182,7352 }, { 183,7352 }, { 184,7352 }, { 185,7352 }, { 186,7352 }, { 187,7352 }, { 188,7352 }, { 189,7352 }, { 190,7352 }, { 191,7352 }, { 192,7352 }, { 193,7352 }, { 194,7352 }, { 195,7352 }, { 196,7352 }, { 197,7352 }, { 198,7352 }, { 199,7352 }, { 200,7352 }, { 201,7352 }, { 202,7352 }, { 203,7352 }, { 204,7352 }, { 205,7352 }, { 206,7352 }, { 207,7352 }, { 208,7352 }, { 209,7352 }, { 210,7352 }, { 211,7352 }, { 212,7352 }, { 213,7352 }, { 214,7352 }, { 215,7352 }, { 216,7352 }, { 217,7352 }, { 218,7352 }, { 219,7352 }, { 220,7352 }, { 221,7352 }, { 222,7352 }, { 223,7352 }, { 224,7352 }, { 225,7352 }, { 226,7352 }, { 227,7352 }, { 228,7352 }, { 229,7352 }, { 230,7352 }, { 231,7352 }, { 232,7352 }, { 233,7352 }, { 234,7352 }, { 235,7352 }, { 236,7352 }, { 237,7352 }, { 238,7352 }, { 239,7352 }, { 240,7352 }, { 241,7352 }, { 242,7352 }, { 243,7352 }, { 244,7352 }, { 245,7352 }, { 246,7352 }, { 247,7352 }, { 248,7352 }, { 249,7352 }, { 250,7352 }, { 251,7352 }, { 252,7352 }, { 253,7352 }, { 254,7352 }, { 255,7352 }, { 256,7352 }, { 0, 0 }, { 0,15872 }, { 1,7610 }, { 2,7610 }, { 3,7610 }, { 4,7610 }, { 5,7610 }, { 6,7610 }, { 7,7610 }, { 8,7610 }, { 9,7610 }, { 10,7610 }, { 11,7610 }, { 12,7610 }, { 13,7610 }, { 14,7610 }, { 15,7610 }, { 16,7610 }, { 17,7610 }, { 18,7610 }, { 19,7610 }, { 20,7610 }, { 21,7610 }, { 22,7610 }, { 23,7610 }, { 24,7610 }, { 25,7610 }, { 26,7610 }, { 27,7610 }, { 28,7610 }, { 29,7610 }, { 30,7610 }, { 31,7610 }, { 32,7610 }, { 33,7610 }, { 34,4685 }, { 35,7610 }, { 36,7610 }, { 37,7610 }, { 38,7610 }, { 39,7610 }, { 40,7610 }, { 41,7610 }, { 42,7610 }, { 43,7610 }, { 44,7610 }, { 45,7610 }, { 46,7610 }, { 47,7610 }, { 48,7610 }, { 49,7610 }, { 50,7610 }, { 51,7610 }, { 52,7610 }, { 53,7610 }, { 54,7610 }, { 55,7610 }, { 56,7610 }, { 57,7610 }, { 58,7610 }, { 59,7610 }, { 60,7610 }, { 61,7610 }, { 62,7610 }, { 63,7610 }, { 64,7610 }, { 65,7610 }, { 66,7610 }, { 67,7610 }, { 68,7610 }, { 69,7610 }, { 70,7610 }, { 71,7610 }, { 72,7610 }, { 73,7610 }, { 74,7610 }, { 75,7610 }, { 76,7610 }, { 77,7610 }, { 78,7610 }, { 79,7610 }, { 80,7610 }, { 81,7610 }, { 82,7610 }, { 83,7610 }, { 84,7610 }, { 85,7610 }, { 86,7610 }, { 87,7610 }, { 88,7610 }, { 89,7610 }, { 90,7610 }, { 91,7610 }, { 92,7610 }, { 93,7610 }, { 94,7610 }, { 95,7610 }, { 96,7610 }, { 97,7610 }, { 98,7610 }, { 99,7610 }, { 100,7610 }, { 101,7610 }, { 102,7610 }, { 103,7610 }, { 104,7610 }, { 105,7610 }, { 106,7610 }, { 107,7610 }, { 108,7610 }, { 109,7610 }, { 110,7610 }, { 111,7610 }, { 112,7610 }, { 113,7610 }, { 114,7610 }, { 115,7610 }, { 116,7610 }, { 117,7610 }, { 118,7610 }, { 119,7610 }, { 120,7610 }, { 121,7610 }, { 122,7610 }, { 123,7610 }, { 124,7610 }, { 125,7610 }, { 126,7610 }, { 127,7610 }, { 128,7610 }, { 129,7610 }, { 130,7610 }, { 131,7610 }, { 132,7610 }, { 133,7610 }, { 134,7610 }, { 135,7610 }, { 136,7610 }, { 137,7610 }, { 138,7610 }, { 139,7610 }, { 140,7610 }, { 141,7610 }, { 142,7610 }, { 143,7610 }, { 144,7610 }, { 145,7610 }, { 146,7610 }, { 147,7610 }, { 148,7610 }, { 149,7610 }, { 150,7610 }, { 151,7610 }, { 152,7610 }, { 153,7610 }, { 154,7610 }, { 155,7610 }, { 156,7610 }, { 157,7610 }, { 158,7610 }, { 159,7610 }, { 160,7610 }, { 161,7610 }, { 162,7610 }, { 163,7610 }, { 164,7610 }, { 165,7610 }, { 166,7610 }, { 167,7610 }, { 168,7610 }, { 169,7610 }, { 170,7610 }, { 171,7610 }, { 172,7610 }, { 173,7610 }, { 174,7610 }, { 175,7610 }, { 176,7610 }, { 177,7610 }, { 178,7610 }, { 179,7610 }, { 180,7610 }, { 181,7610 }, { 182,7610 }, { 183,7610 }, { 184,7610 }, { 185,7610 }, { 186,7610 }, { 187,7610 }, { 188,7610 }, { 189,7610 }, { 190,7610 }, { 191,7610 }, { 192,7610 }, { 193,7610 }, { 194,7610 }, { 195,7610 }, { 196,7610 }, { 197,7610 }, { 198,7610 }, { 199,7610 }, { 200,7610 }, { 201,7610 }, { 202,7610 }, { 203,7610 }, { 204,7610 }, { 205,7610 }, { 206,7610 }, { 207,7610 }, { 208,7610 }, { 209,7610 }, { 210,7610 }, { 211,7610 }, { 212,7610 }, { 213,7610 }, { 214,7610 }, { 215,7610 }, { 216,7610 }, { 217,7610 }, { 218,7610 }, { 219,7610 }, { 220,7610 }, { 221,7610 }, { 222,7610 }, { 223,7610 }, { 224,7610 }, { 225,7610 }, { 226,7610 }, { 227,7610 }, { 228,7610 }, { 229,7610 }, { 230,7610 }, { 231,7610 }, { 232,7610 }, { 233,7610 }, { 234,7610 }, { 235,7610 }, { 236,7610 }, { 237,7610 }, { 238,7610 }, { 239,7610 }, { 240,7610 }, { 241,7610 }, { 242,7610 }, { 243,7610 }, { 244,7610 }, { 245,7610 }, { 246,7610 }, { 247,7610 }, { 248,7610 }, { 249,7610 }, { 250,7610 }, { 251,7610 }, { 252,7610 }, { 253,7610 }, { 254,7610 }, { 255,7610 }, { 256,7610 }, { 0, 0 }, { 0,15614 }, { 1,7352 }, { 2,7352 }, { 3,7352 }, { 4,7352 }, { 5,7352 }, { 6,7352 }, { 7,7352 }, { 8,7352 }, { 9,7352 }, { 10,7352 }, { 11,7352 }, { 12,7352 }, { 13,7352 }, { 14,7352 }, { 15,7352 }, { 16,7352 }, { 17,7352 }, { 18,7352 }, { 19,7352 }, { 20,7352 }, { 21,7352 }, { 22,7352 }, { 23,7352 }, { 24,7352 }, { 25,7352 }, { 26,7352 }, { 27,7352 }, { 28,7352 }, { 29,7352 }, { 30,7352 }, { 31,7352 }, { 32,7352 }, { 33,7352 }, { 34,4427 }, { 35,7352 }, { 36,7352 }, { 37,7352 }, { 38,7352 }, { 39,7352 }, { 40,7352 }, { 41,7352 }, { 42,7352 }, { 43,7352 }, { 44,7352 }, { 45,7352 }, { 46,7352 }, { 47,7352 }, { 48,7352 }, { 49,7352 }, { 50,7352 }, { 51,7352 }, { 52,7352 }, { 53,7352 }, { 54,7352 }, { 55,7352 }, { 56,7352 }, { 57,7352 }, { 58,7352 }, { 59,7352 }, { 60,7352 }, { 61,7352 }, { 62,7352 }, { 63,7352 }, { 64,7352 }, { 65,7352 }, { 66,7352 }, { 67,7352 }, { 68,7352 }, { 69,7352 }, { 70,7352 }, { 71,7352 }, { 72,7352 }, { 73,7352 }, { 74,7352 }, { 75,7352 }, { 76,7352 }, { 77,7352 }, { 78,7352 }, { 79,7352 }, { 80,7352 }, { 81,7352 }, { 82,7352 }, { 83,7352 }, { 84,7352 }, { 85,7352 }, { 86,7352 }, { 87,7352 }, { 88,7352 }, { 89,7352 }, { 90,7352 }, { 91,7352 }, { 92,7352 }, { 93,7352 }, { 94,7352 }, { 95,7352 }, { 96,7352 }, { 97,7352 }, { 98,7352 }, { 99,7352 }, { 100,7352 }, { 101,7352 }, { 102,7352 }, { 103,7352 }, { 104,7352 }, { 105,7352 }, { 106,7352 }, { 107,7352 }, { 108,7352 }, { 109,7352 }, { 110,7352 }, { 111,7352 }, { 112,7352 }, { 113,7352 }, { 114,7352 }, { 115,7352 }, { 116,7352 }, { 117,7352 }, { 118,7352 }, { 119,7352 }, { 120,7352 }, { 121,7352 }, { 122,7352 }, { 123,7352 }, { 124,7352 }, { 125,7352 }, { 126,7352 }, { 127,7352 }, { 128,7352 }, { 129,7352 }, { 130,7352 }, { 131,7352 }, { 132,7352 }, { 133,7352 }, { 134,7352 }, { 135,7352 }, { 136,7352 }, { 137,7352 }, { 138,7352 }, { 139,7352 }, { 140,7352 }, { 141,7352 }, { 142,7352 }, { 143,7352 }, { 144,7352 }, { 145,7352 }, { 146,7352 }, { 147,7352 }, { 148,7352 }, { 149,7352 }, { 150,7352 }, { 151,7352 }, { 152,7352 }, { 153,7352 }, { 154,7352 }, { 155,7352 }, { 156,7352 }, { 157,7352 }, { 158,7352 }, { 159,7352 }, { 160,7352 }, { 161,7352 }, { 162,7352 }, { 163,7352 }, { 164,7352 }, { 165,7352 }, { 166,7352 }, { 167,7352 }, { 168,7352 }, { 169,7352 }, { 170,7352 }, { 171,7352 }, { 172,7352 }, { 173,7352 }, { 174,7352 }, { 175,7352 }, { 176,7352 }, { 177,7352 }, { 178,7352 }, { 179,7352 }, { 180,7352 }, { 181,7352 }, { 182,7352 }, { 183,7352 }, { 184,7352 }, { 185,7352 }, { 186,7352 }, { 187,7352 }, { 188,7352 }, { 189,7352 }, { 190,7352 }, { 191,7352 }, { 192,7352 }, { 193,7352 }, { 194,7352 }, { 195,7352 }, { 196,7352 }, { 197,7352 }, { 198,7352 }, { 199,7352 }, { 200,7352 }, { 201,7352 }, { 202,7352 }, { 203,7352 }, { 204,7352 }, { 205,7352 }, { 206,7352 }, { 207,7352 }, { 208,7352 }, { 209,7352 }, { 210,7352 }, { 211,7352 }, { 212,7352 }, { 213,7352 }, { 214,7352 }, { 215,7352 }, { 216,7352 }, { 217,7352 }, { 218,7352 }, { 219,7352 }, { 220,7352 }, { 221,7352 }, { 222,7352 }, { 223,7352 }, { 224,7352 }, { 225,7352 }, { 226,7352 }, { 227,7352 }, { 228,7352 }, { 229,7352 }, { 230,7352 }, { 231,7352 }, { 232,7352 }, { 233,7352 }, { 234,7352 }, { 235,7352 }, { 236,7352 }, { 237,7352 }, { 238,7352 }, { 239,7352 }, { 240,7352 }, { 241,7352 }, { 242,7352 }, { 243,7352 }, { 244,7352 }, { 245,7352 }, { 246,7352 }, { 247,7352 }, { 248,7352 }, { 249,7352 }, { 250,7352 }, { 251,7352 }, { 252,7352 }, { 253,7352 }, { 254,7352 }, { 255,7352 }, { 256,7352 }, { 0, 10 }, { 0,15356 }, { 1,7352 }, { 2,7352 }, { 3,7352 }, { 4,7352 }, { 5,7352 }, { 6,7352 }, { 7,7352 }, { 8,7352 }, { 9,7352 }, { 10,7352 }, { 11,7352 }, { 12,7352 }, { 13,7352 }, { 14,7352 }, { 15,7352 }, { 16,7352 }, { 17,7352 }, { 18,7352 }, { 19,7352 }, { 20,7352 }, { 21,7352 }, { 22,7352 }, { 23,7352 }, { 24,7352 }, { 25,7352 }, { 26,7352 }, { 27,7352 }, { 28,7352 }, { 29,7352 }, { 30,7352 }, { 31,7352 }, { 32,7352 }, { 33,7352 }, { 34,7352 }, { 35,7352 }, { 36,7352 }, { 37,7352 }, { 38,7352 }, { 39,4157 }, { 40,7352 }, { 41,7352 }, { 42,7352 }, { 43,7352 }, { 44,7352 }, { 45,7352 }, { 46,7352 }, { 47,7352 }, { 48,7352 }, { 49,7352 }, { 50,7352 }, { 51,7352 }, { 52,7352 }, { 53,7352 }, { 54,7352 }, { 55,7352 }, { 56,7352 }, { 57,7352 }, { 58,7352 }, { 59,7352 }, { 60,7352 }, { 61,7352 }, { 62,7352 }, { 63,7352 }, { 64,7352 }, { 65,7352 }, { 66,7352 }, { 67,7352 }, { 68,7352 }, { 69,7352 }, { 70,7352 }, { 71,7352 }, { 72,7352 }, { 73,7352 }, { 74,7352 }, { 75,7352 }, { 76,7352 }, { 77,7352 }, { 78,7352 }, { 79,7352 }, { 80,7352 }, { 81,7352 }, { 82,7352 }, { 83,7352 }, { 84,7352 }, { 85,7352 }, { 86,7352 }, { 87,7352 }, { 88,7352 }, { 89,7352 }, { 90,7352 }, { 91,7352 }, { 92,7352 }, { 93,7352 }, { 94,7352 }, { 95,7352 }, { 96,7352 }, { 97,7352 }, { 98,7352 }, { 99,7352 }, { 100,7352 }, { 101,7352 }, { 102,7352 }, { 103,7352 }, { 104,7352 }, { 105,7352 }, { 106,7352 }, { 107,7352 }, { 108,7352 }, { 109,7352 }, { 110,7352 }, { 111,7352 }, { 112,7352 }, { 113,7352 }, { 114,7352 }, { 115,7352 }, { 116,7352 }, { 117,7352 }, { 118,7352 }, { 119,7352 }, { 120,7352 }, { 121,7352 }, { 122,7352 }, { 123,7352 }, { 124,7352 }, { 125,7352 }, { 126,7352 }, { 127,7352 }, { 128,7352 }, { 129,7352 }, { 130,7352 }, { 131,7352 }, { 132,7352 }, { 133,7352 }, { 134,7352 }, { 135,7352 }, { 136,7352 }, { 137,7352 }, { 138,7352 }, { 139,7352 }, { 140,7352 }, { 141,7352 }, { 142,7352 }, { 143,7352 }, { 144,7352 }, { 145,7352 }, { 146,7352 }, { 147,7352 }, { 148,7352 }, { 149,7352 }, { 150,7352 }, { 151,7352 }, { 152,7352 }, { 153,7352 }, { 154,7352 }, { 155,7352 }, { 156,7352 }, { 157,7352 }, { 158,7352 }, { 159,7352 }, { 160,7352 }, { 161,7352 }, { 162,7352 }, { 163,7352 }, { 164,7352 }, { 165,7352 }, { 166,7352 }, { 167,7352 }, { 168,7352 }, { 169,7352 }, { 170,7352 }, { 171,7352 }, { 172,7352 }, { 173,7352 }, { 174,7352 }, { 175,7352 }, { 176,7352 }, { 177,7352 }, { 178,7352 }, { 179,7352 }, { 180,7352 }, { 181,7352 }, { 182,7352 }, { 183,7352 }, { 184,7352 }, { 185,7352 }, { 186,7352 }, { 187,7352 }, { 188,7352 }, { 189,7352 }, { 190,7352 }, { 191,7352 }, { 192,7352 }, { 193,7352 }, { 194,7352 }, { 195,7352 }, { 196,7352 }, { 197,7352 }, { 198,7352 }, { 199,7352 }, { 200,7352 }, { 201,7352 }, { 202,7352 }, { 203,7352 }, { 204,7352 }, { 205,7352 }, { 206,7352 }, { 207,7352 }, { 208,7352 }, { 209,7352 }, { 210,7352 }, { 211,7352 }, { 212,7352 }, { 213,7352 }, { 214,7352 }, { 215,7352 }, { 216,7352 }, { 217,7352 }, { 218,7352 }, { 219,7352 }, { 220,7352 }, { 221,7352 }, { 222,7352 }, { 223,7352 }, { 224,7352 }, { 225,7352 }, { 226,7352 }, { 227,7352 }, { 228,7352 }, { 229,7352 }, { 230,7352 }, { 231,7352 }, { 232,7352 }, { 233,7352 }, { 234,7352 }, { 235,7352 }, { 236,7352 }, { 237,7352 }, { 238,7352 }, { 239,7352 }, { 240,7352 }, { 241,7352 }, { 242,7352 }, { 243,7352 }, { 244,7352 }, { 245,7352 }, { 246,7352 }, { 247,7352 }, { 248,7352 }, { 249,7352 }, { 250,7352 }, { 251,7352 }, { 252,7352 }, { 253,7352 }, { 254,7352 }, { 255,7352 }, { 256,7352 }, { 0, 10 }, { 0,15098 }, { 1,7094 }, { 2,7094 }, { 3,7094 }, { 4,7094 }, { 5,7094 }, { 6,7094 }, { 7,7094 }, { 8,7094 }, { 9,7094 }, { 10,7094 }, { 11,7094 }, { 12,7094 }, { 13,7094 }, { 14,7094 }, { 15,7094 }, { 16,7094 }, { 17,7094 }, { 18,7094 }, { 19,7094 }, { 20,7094 }, { 21,7094 }, { 22,7094 }, { 23,7094 }, { 24,7094 }, { 25,7094 }, { 26,7094 }, { 27,7094 }, { 28,7094 }, { 29,7094 }, { 30,7094 }, { 31,7094 }, { 32,7094 }, { 33,7094 }, { 34,7094 }, { 35,7094 }, { 36,7094 }, { 37,7094 }, { 38,7094 }, { 39,3899 }, { 40,7094 }, { 41,7094 }, { 42,7094 }, { 43,7094 }, { 44,7094 }, { 45,7094 }, { 46,7094 }, { 47,7094 }, { 48,7094 }, { 49,7094 }, { 50,7094 }, { 51,7094 }, { 52,7094 }, { 53,7094 }, { 54,7094 }, { 55,7094 }, { 56,7094 }, { 57,7094 }, { 58,7094 }, { 59,7094 }, { 60,7094 }, { 61,7094 }, { 62,7094 }, { 63,7094 }, { 64,7094 }, { 65,7094 }, { 66,7094 }, { 67,7094 }, { 68,7094 }, { 69,7094 }, { 70,7094 }, { 71,7094 }, { 72,7094 }, { 73,7094 }, { 74,7094 }, { 75,7094 }, { 76,7094 }, { 77,7094 }, { 78,7094 }, { 79,7094 }, { 80,7094 }, { 81,7094 }, { 82,7094 }, { 83,7094 }, { 84,7094 }, { 85,7094 }, { 86,7094 }, { 87,7094 }, { 88,7094 }, { 89,7094 }, { 90,7094 }, { 91,7094 }, { 92,7094 }, { 93,7094 }, { 94,7094 }, { 95,7094 }, { 96,7094 }, { 97,7094 }, { 98,7094 }, { 99,7094 }, { 100,7094 }, { 101,7094 }, { 102,7094 }, { 103,7094 }, { 104,7094 }, { 105,7094 }, { 106,7094 }, { 107,7094 }, { 108,7094 }, { 109,7094 }, { 110,7094 }, { 111,7094 }, { 112,7094 }, { 113,7094 }, { 114,7094 }, { 115,7094 }, { 116,7094 }, { 117,7094 }, { 118,7094 }, { 119,7094 }, { 120,7094 }, { 121,7094 }, { 122,7094 }, { 123,7094 }, { 124,7094 }, { 125,7094 }, { 126,7094 }, { 127,7094 }, { 128,7094 }, { 129,7094 }, { 130,7094 }, { 131,7094 }, { 132,7094 }, { 133,7094 }, { 134,7094 }, { 135,7094 }, { 136,7094 }, { 137,7094 }, { 138,7094 }, { 139,7094 }, { 140,7094 }, { 141,7094 }, { 142,7094 }, { 143,7094 }, { 144,7094 }, { 145,7094 }, { 146,7094 }, { 147,7094 }, { 148,7094 }, { 149,7094 }, { 150,7094 }, { 151,7094 }, { 152,7094 }, { 153,7094 }, { 154,7094 }, { 155,7094 }, { 156,7094 }, { 157,7094 }, { 158,7094 }, { 159,7094 }, { 160,7094 }, { 161,7094 }, { 162,7094 }, { 163,7094 }, { 164,7094 }, { 165,7094 }, { 166,7094 }, { 167,7094 }, { 168,7094 }, { 169,7094 }, { 170,7094 }, { 171,7094 }, { 172,7094 }, { 173,7094 }, { 174,7094 }, { 175,7094 }, { 176,7094 }, { 177,7094 }, { 178,7094 }, { 179,7094 }, { 180,7094 }, { 181,7094 }, { 182,7094 }, { 183,7094 }, { 184,7094 }, { 185,7094 }, { 186,7094 }, { 187,7094 }, { 188,7094 }, { 189,7094 }, { 190,7094 }, { 191,7094 }, { 192,7094 }, { 193,7094 }, { 194,7094 }, { 195,7094 }, { 196,7094 }, { 197,7094 }, { 198,7094 }, { 199,7094 }, { 200,7094 }, { 201,7094 }, { 202,7094 }, { 203,7094 }, { 204,7094 }, { 205,7094 }, { 206,7094 }, { 207,7094 }, { 208,7094 }, { 209,7094 }, { 210,7094 }, { 211,7094 }, { 212,7094 }, { 213,7094 }, { 214,7094 }, { 215,7094 }, { 216,7094 }, { 217,7094 }, { 218,7094 }, { 219,7094 }, { 220,7094 }, { 221,7094 }, { 222,7094 }, { 223,7094 }, { 224,7094 }, { 225,7094 }, { 226,7094 }, { 227,7094 }, { 228,7094 }, { 229,7094 }, { 230,7094 }, { 231,7094 }, { 232,7094 }, { 233,7094 }, { 234,7094 }, { 235,7094 }, { 236,7094 }, { 237,7094 }, { 238,7094 }, { 239,7094 }, { 240,7094 }, { 241,7094 }, { 242,7094 }, { 243,7094 }, { 244,7094 }, { 245,7094 }, { 246,7094 }, { 247,7094 }, { 248,7094 }, { 249,7094 }, { 250,7094 }, { 251,7094 }, { 252,7094 }, { 253,7094 }, { 254,7094 }, { 255,7094 }, { 256,7094 }, { 0, 0 }, { 0,14840 }, { 1,7094 }, { 2,7094 }, { 3,7094 }, { 4,7094 }, { 5,7094 }, { 6,7094 }, { 7,7094 }, { 8,7094 }, { 9,7094 }, { 10,7094 }, { 11,7094 }, { 12,7094 }, { 13,7094 }, { 14,7094 }, { 15,7094 }, { 16,7094 }, { 17,7094 }, { 18,7094 }, { 19,7094 }, { 20,7094 }, { 21,7094 }, { 22,7094 }, { 23,7094 }, { 24,7094 }, { 25,7094 }, { 26,7094 }, { 27,7094 }, { 28,7094 }, { 29,7094 }, { 30,7094 }, { 31,7094 }, { 32,7094 }, { 33,7094 }, { 34,7094 }, { 35,7094 }, { 36,7094 }, { 37,7094 }, { 38,7094 }, { 39,3670 }, { 40,7094 }, { 41,7094 }, { 42,7094 }, { 43,7094 }, { 44,7094 }, { 45,7094 }, { 46,7094 }, { 47,7094 }, { 48,7094 }, { 49,7094 }, { 50,7094 }, { 51,7094 }, { 52,7094 }, { 53,7094 }, { 54,7094 }, { 55,7094 }, { 56,7094 }, { 57,7094 }, { 58,7094 }, { 59,7094 }, { 60,7094 }, { 61,7094 }, { 62,7094 }, { 63,7094 }, { 64,7094 }, { 65,7094 }, { 66,7094 }, { 67,7094 }, { 68,7094 }, { 69,7094 }, { 70,7094 }, { 71,7094 }, { 72,7094 }, { 73,7094 }, { 74,7094 }, { 75,7094 }, { 76,7094 }, { 77,7094 }, { 78,7094 }, { 79,7094 }, { 80,7094 }, { 81,7094 }, { 82,7094 }, { 83,7094 }, { 84,7094 }, { 85,7094 }, { 86,7094 }, { 87,7094 }, { 88,7094 }, { 89,7094 }, { 90,7094 }, { 91,7094 }, { 92,7094 }, { 93,7094 }, { 94,7094 }, { 95,7094 }, { 96,7094 }, { 97,7094 }, { 98,7094 }, { 99,7094 }, { 100,7094 }, { 101,7094 }, { 102,7094 }, { 103,7094 }, { 104,7094 }, { 105,7094 }, { 106,7094 }, { 107,7094 }, { 108,7094 }, { 109,7094 }, { 110,7094 }, { 111,7094 }, { 112,7094 }, { 113,7094 }, { 114,7094 }, { 115,7094 }, { 116,7094 }, { 117,7094 }, { 118,7094 }, { 119,7094 }, { 120,7094 }, { 121,7094 }, { 122,7094 }, { 123,7094 }, { 124,7094 }, { 125,7094 }, { 126,7094 }, { 127,7094 }, { 128,7094 }, { 129,7094 }, { 130,7094 }, { 131,7094 }, { 132,7094 }, { 133,7094 }, { 134,7094 }, { 135,7094 }, { 136,7094 }, { 137,7094 }, { 138,7094 }, { 139,7094 }, { 140,7094 }, { 141,7094 }, { 142,7094 }, { 143,7094 }, { 144,7094 }, { 145,7094 }, { 146,7094 }, { 147,7094 }, { 148,7094 }, { 149,7094 }, { 150,7094 }, { 151,7094 }, { 152,7094 }, { 153,7094 }, { 154,7094 }, { 155,7094 }, { 156,7094 }, { 157,7094 }, { 158,7094 }, { 159,7094 }, { 160,7094 }, { 161,7094 }, { 162,7094 }, { 163,7094 }, { 164,7094 }, { 165,7094 }, { 166,7094 }, { 167,7094 }, { 168,7094 }, { 169,7094 }, { 170,7094 }, { 171,7094 }, { 172,7094 }, { 173,7094 }, { 174,7094 }, { 175,7094 }, { 176,7094 }, { 177,7094 }, { 178,7094 }, { 179,7094 }, { 180,7094 }, { 181,7094 }, { 182,7094 }, { 183,7094 }, { 184,7094 }, { 185,7094 }, { 186,7094 }, { 187,7094 }, { 188,7094 }, { 189,7094 }, { 190,7094 }, { 191,7094 }, { 192,7094 }, { 193,7094 }, { 194,7094 }, { 195,7094 }, { 196,7094 }, { 197,7094 }, { 198,7094 }, { 199,7094 }, { 200,7094 }, { 201,7094 }, { 202,7094 }, { 203,7094 }, { 204,7094 }, { 205,7094 }, { 206,7094 }, { 207,7094 }, { 208,7094 }, { 209,7094 }, { 210,7094 }, { 211,7094 }, { 212,7094 }, { 213,7094 }, { 214,7094 }, { 215,7094 }, { 216,7094 }, { 217,7094 }, { 218,7094 }, { 219,7094 }, { 220,7094 }, { 221,7094 }, { 222,7094 }, { 223,7094 }, { 224,7094 }, { 225,7094 }, { 226,7094 }, { 227,7094 }, { 228,7094 }, { 229,7094 }, { 230,7094 }, { 231,7094 }, { 232,7094 }, { 233,7094 }, { 234,7094 }, { 235,7094 }, { 236,7094 }, { 237,7094 }, { 238,7094 }, { 239,7094 }, { 240,7094 }, { 241,7094 }, { 242,7094 }, { 243,7094 }, { 244,7094 }, { 245,7094 }, { 246,7094 }, { 247,7094 }, { 248,7094 }, { 249,7094 }, { 250,7094 }, { 251,7094 }, { 252,7094 }, { 253,7094 }, { 254,7094 }, { 255,7094 }, { 256,7094 }, { 0, 0 }, { 0,14582 }, { 1,6836 }, { 2,6836 }, { 3,6836 }, { 4,6836 }, { 5,6836 }, { 6,6836 }, { 7,6836 }, { 8,6836 }, { 9,6836 }, { 10,6836 }, { 11,6836 }, { 12,6836 }, { 13,6836 }, { 14,6836 }, { 15,6836 }, { 16,6836 }, { 17,6836 }, { 18,6836 }, { 19,6836 }, { 20,6836 }, { 21,6836 }, { 22,6836 }, { 23,6836 }, { 24,6836 }, { 25,6836 }, { 26,6836 }, { 27,6836 }, { 28,6836 }, { 29,6836 }, { 30,6836 }, { 31,6836 }, { 32,6836 }, { 33,6836 }, { 34,6836 }, { 35,6836 }, { 36,6836 }, { 37,6836 }, { 38,6836 }, { 39,3412 }, { 40,6836 }, { 41,6836 }, { 42,6836 }, { 43,6836 }, { 44,6836 }, { 45,6836 }, { 46,6836 }, { 47,6836 }, { 48,6836 }, { 49,6836 }, { 50,6836 }, { 51,6836 }, { 52,6836 }, { 53,6836 }, { 54,6836 }, { 55,6836 }, { 56,6836 }, { 57,6836 }, { 58,6836 }, { 59,6836 }, { 60,6836 }, { 61,6836 }, { 62,6836 }, { 63,6836 }, { 64,6836 }, { 65,6836 }, { 66,6836 }, { 67,6836 }, { 68,6836 }, { 69,6836 }, { 70,6836 }, { 71,6836 }, { 72,6836 }, { 73,6836 }, { 74,6836 }, { 75,6836 }, { 76,6836 }, { 77,6836 }, { 78,6836 }, { 79,6836 }, { 80,6836 }, { 81,6836 }, { 82,6836 }, { 83,6836 }, { 84,6836 }, { 85,6836 }, { 86,6836 }, { 87,6836 }, { 88,6836 }, { 89,6836 }, { 90,6836 }, { 91,6836 }, { 92,6836 }, { 93,6836 }, { 94,6836 }, { 95,6836 }, { 96,6836 }, { 97,6836 }, { 98,6836 }, { 99,6836 }, { 100,6836 }, { 101,6836 }, { 102,6836 }, { 103,6836 }, { 104,6836 }, { 105,6836 }, { 106,6836 }, { 107,6836 }, { 108,6836 }, { 109,6836 }, { 110,6836 }, { 111,6836 }, { 112,6836 }, { 113,6836 }, { 114,6836 }, { 115,6836 }, { 116,6836 }, { 117,6836 }, { 118,6836 }, { 119,6836 }, { 120,6836 }, { 121,6836 }, { 122,6836 }, { 123,6836 }, { 124,6836 }, { 125,6836 }, { 126,6836 }, { 127,6836 }, { 128,6836 }, { 129,6836 }, { 130,6836 }, { 131,6836 }, { 132,6836 }, { 133,6836 }, { 134,6836 }, { 135,6836 }, { 136,6836 }, { 137,6836 }, { 138,6836 }, { 139,6836 }, { 140,6836 }, { 141,6836 }, { 142,6836 }, { 143,6836 }, { 144,6836 }, { 145,6836 }, { 146,6836 }, { 147,6836 }, { 148,6836 }, { 149,6836 }, { 150,6836 }, { 151,6836 }, { 152,6836 }, { 153,6836 }, { 154,6836 }, { 155,6836 }, { 156,6836 }, { 157,6836 }, { 158,6836 }, { 159,6836 }, { 160,6836 }, { 161,6836 }, { 162,6836 }, { 163,6836 }, { 164,6836 }, { 165,6836 }, { 166,6836 }, { 167,6836 }, { 168,6836 }, { 169,6836 }, { 170,6836 }, { 171,6836 }, { 172,6836 }, { 173,6836 }, { 174,6836 }, { 175,6836 }, { 176,6836 }, { 177,6836 }, { 178,6836 }, { 179,6836 }, { 180,6836 }, { 181,6836 }, { 182,6836 }, { 183,6836 }, { 184,6836 }, { 185,6836 }, { 186,6836 }, { 187,6836 }, { 188,6836 }, { 189,6836 }, { 190,6836 }, { 191,6836 }, { 192,6836 }, { 193,6836 }, { 194,6836 }, { 195,6836 }, { 196,6836 }, { 197,6836 }, { 198,6836 }, { 199,6836 }, { 200,6836 }, { 201,6836 }, { 202,6836 }, { 203,6836 }, { 204,6836 }, { 205,6836 }, { 206,6836 }, { 207,6836 }, { 208,6836 }, { 209,6836 }, { 210,6836 }, { 211,6836 }, { 212,6836 }, { 213,6836 }, { 214,6836 }, { 215,6836 }, { 216,6836 }, { 217,6836 }, { 218,6836 }, { 219,6836 }, { 220,6836 }, { 221,6836 }, { 222,6836 }, { 223,6836 }, { 224,6836 }, { 225,6836 }, { 226,6836 }, { 227,6836 }, { 228,6836 }, { 229,6836 }, { 230,6836 }, { 231,6836 }, { 232,6836 }, { 233,6836 }, { 234,6836 }, { 235,6836 }, { 236,6836 }, { 237,6836 }, { 238,6836 }, { 239,6836 }, { 240,6836 }, { 241,6836 }, { 242,6836 }, { 243,6836 }, { 244,6836 }, { 245,6836 }, { 246,6836 }, { 247,6836 }, { 248,6836 }, { 249,6836 }, { 250,6836 }, { 251,6836 }, { 252,6836 }, { 253,6836 }, { 254,6836 }, { 255,6836 }, { 256,6836 }, { 0, 19 }, { 0,14324 }, { 1,3156 }, { 2,3156 }, { 3,3156 }, { 4,3156 }, { 5,3156 }, { 6,3156 }, { 7,3156 }, { 8,3156 }, { 9,6836 }, { 10,6841 }, { 11,3156 }, { 12,6836 }, { 13,6857 }, { 14,3156 }, { 15,3156 }, { 16,3156 }, { 17,3156 }, { 18,3156 }, { 19,3156 }, { 20,3156 }, { 21,3156 }, { 22,3156 }, { 23,3156 }, { 24,3156 }, { 25,3156 }, { 26,3156 }, { 27,3156 }, { 28,3156 }, { 29,3156 }, { 30,3156 }, { 31,3156 }, { 32,6836 }, { 33,3156 }, { 34,3156 }, { 35,3156 }, { 36,3156 }, { 37,3156 }, { 38,3156 }, { 39,3156 }, { 40,3156 }, { 41,3156 }, { 42,3156 }, { 43,3156 }, { 44,3156 }, { 45,3158 }, { 46,3156 }, { 47,3156 }, { 48,3156 }, { 49,3156 }, { 50,3156 }, { 51,3156 }, { 52,3156 }, { 53,3156 }, { 54,3156 }, { 55,3156 }, { 56,3156 }, { 57,3156 }, { 58,3156 }, { 59,3156 }, { 60,3156 }, { 61,3156 }, { 62,3156 }, { 63,3156 }, { 64,3156 }, { 65,3156 }, { 66,3156 }, { 67,3156 }, { 68,3156 }, { 69,3156 }, { 70,3156 }, { 71,3156 }, { 72,3156 }, { 73,3156 }, { 74,3156 }, { 75,3156 }, { 76,3156 }, { 77,3156 }, { 78,3156 }, { 79,3156 }, { 80,3156 }, { 81,3156 }, { 82,3156 }, { 83,3156 }, { 84,3156 }, { 85,3156 }, { 86,3156 }, { 87,3156 }, { 88,3156 }, { 89,3156 }, { 90,3156 }, { 91,3156 }, { 92,3156 }, { 93,3156 }, { 94,3156 }, { 95,3156 }, { 96,3156 }, { 97,3156 }, { 98,3156 }, { 99,3156 }, { 100,3156 }, { 101,3156 }, { 102,3156 }, { 103,3156 }, { 104,3156 }, { 105,3156 }, { 106,3156 }, { 107,3156 }, { 108,3156 }, { 109,3156 }, { 110,3156 }, { 111,3156 }, { 112,3156 }, { 113,3156 }, { 114,3156 }, { 115,3156 }, { 116,3156 }, { 117,3156 }, { 118,3156 }, { 119,3156 }, { 120,3156 }, { 121,3156 }, { 122,3156 }, { 123,3156 }, { 124,3156 }, { 125,3156 }, { 126,3156 }, { 127,3156 }, { 128,3156 }, { 129,3156 }, { 130,3156 }, { 131,3156 }, { 132,3156 }, { 133,3156 }, { 134,3156 }, { 135,3156 }, { 136,3156 }, { 137,3156 }, { 138,3156 }, { 139,3156 }, { 140,3156 }, { 141,3156 }, { 142,3156 }, { 143,3156 }, { 144,3156 }, { 145,3156 }, { 146,3156 }, { 147,3156 }, { 148,3156 }, { 149,3156 }, { 150,3156 }, { 151,3156 }, { 152,3156 }, { 153,3156 }, { 154,3156 }, { 155,3156 }, { 156,3156 }, { 157,3156 }, { 158,3156 }, { 159,3156 }, { 160,3156 }, { 161,3156 }, { 162,3156 }, { 163,3156 }, { 164,3156 }, { 165,3156 }, { 166,3156 }, { 167,3156 }, { 168,3156 }, { 169,3156 }, { 170,3156 }, { 171,3156 }, { 172,3156 }, { 173,3156 }, { 174,3156 }, { 175,3156 }, { 176,3156 }, { 177,3156 }, { 178,3156 }, { 179,3156 }, { 180,3156 }, { 181,3156 }, { 182,3156 }, { 183,3156 }, { 184,3156 }, { 185,3156 }, { 186,3156 }, { 187,3156 }, { 188,3156 }, { 189,3156 }, { 190,3156 }, { 191,3156 }, { 192,3156 }, { 193,3156 }, { 194,3156 }, { 195,3156 }, { 196,3156 }, { 197,3156 }, { 198,3156 }, { 199,3156 }, { 200,3156 }, { 201,3156 }, { 202,3156 }, { 203,3156 }, { 204,3156 }, { 205,3156 }, { 206,3156 }, { 207,3156 }, { 208,3156 }, { 209,3156 }, { 210,3156 }, { 211,3156 }, { 212,3156 }, { 213,3156 }, { 214,3156 }, { 215,3156 }, { 216,3156 }, { 217,3156 }, { 218,3156 }, { 219,3156 }, { 220,3156 }, { 221,3156 }, { 222,3156 }, { 223,3156 }, { 224,3156 }, { 225,3156 }, { 226,3156 }, { 227,3156 }, { 228,3156 }, { 229,3156 }, { 230,3156 }, { 231,3156 }, { 232,3156 }, { 233,3156 }, { 234,3156 }, { 235,3156 }, { 236,3156 }, { 237,3156 }, { 238,3156 }, { 239,3156 }, { 240,3156 }, { 241,3156 }, { 242,3156 }, { 243,3156 }, { 244,3156 }, { 245,3156 }, { 246,3156 }, { 247,3156 }, { 248,3156 }, { 249,3156 }, { 250,3156 }, { 251,3156 }, { 252,3156 }, { 253,3156 }, { 254,3156 }, { 255,3156 }, { 256,3156 }, { 0, 19 }, { 0,14066 }, { 1,2898 }, { 2,2898 }, { 3,2898 }, { 4,2898 }, { 5,2898 }, { 6,2898 }, { 7,2898 }, { 8,2898 }, { 9,6578 }, { 10,6583 }, { 11,2898 }, { 12,6578 }, { 13,6599 }, { 14,2898 }, { 15,2898 }, { 16,2898 }, { 17,2898 }, { 18,2898 }, { 19,2898 }, { 20,2898 }, { 21,2898 }, { 22,2898 }, { 23,2898 }, { 24,2898 }, { 25,2898 }, { 26,2898 }, { 27,2898 }, { 28,2898 }, { 29,2898 }, { 30,2898 }, { 31,2898 }, { 32,6578 }, { 33,2898 }, { 34,2898 }, { 35,2898 }, { 36,2898 }, { 37,2898 }, { 38,2898 }, { 39,2898 }, { 40,2898 }, { 41,2898 }, { 42,2898 }, { 43,2898 }, { 44,2898 }, { 45,2900 }, { 46,2898 }, { 47,2898 }, { 48,2898 }, { 49,2898 }, { 50,2898 }, { 51,2898 }, { 52,2898 }, { 53,2898 }, { 54,2898 }, { 55,2898 }, { 56,2898 }, { 57,2898 }, { 58,2898 }, { 59,2898 }, { 60,2898 }, { 61,2898 }, { 62,2898 }, { 63,2898 }, { 64,2898 }, { 65,2898 }, { 66,2898 }, { 67,2898 }, { 68,2898 }, { 69,2898 }, { 70,2898 }, { 71,2898 }, { 72,2898 }, { 73,2898 }, { 74,2898 }, { 75,2898 }, { 76,2898 }, { 77,2898 }, { 78,2898 }, { 79,2898 }, { 80,2898 }, { 81,2898 }, { 82,2898 }, { 83,2898 }, { 84,2898 }, { 85,2898 }, { 86,2898 }, { 87,2898 }, { 88,2898 }, { 89,2898 }, { 90,2898 }, { 91,2898 }, { 92,2898 }, { 93,2898 }, { 94,2898 }, { 95,2898 }, { 96,2898 }, { 97,2898 }, { 98,2898 }, { 99,2898 }, { 100,2898 }, { 101,2898 }, { 102,2898 }, { 103,2898 }, { 104,2898 }, { 105,2898 }, { 106,2898 }, { 107,2898 }, { 108,2898 }, { 109,2898 }, { 110,2898 }, { 111,2898 }, { 112,2898 }, { 113,2898 }, { 114,2898 }, { 115,2898 }, { 116,2898 }, { 117,2898 }, { 118,2898 }, { 119,2898 }, { 120,2898 }, { 121,2898 }, { 122,2898 }, { 123,2898 }, { 124,2898 }, { 125,2898 }, { 126,2898 }, { 127,2898 }, { 128,2898 }, { 129,2898 }, { 130,2898 }, { 131,2898 }, { 132,2898 }, { 133,2898 }, { 134,2898 }, { 135,2898 }, { 136,2898 }, { 137,2898 }, { 138,2898 }, { 139,2898 }, { 140,2898 }, { 141,2898 }, { 142,2898 }, { 143,2898 }, { 144,2898 }, { 145,2898 }, { 146,2898 }, { 147,2898 }, { 148,2898 }, { 149,2898 }, { 150,2898 }, { 151,2898 }, { 152,2898 }, { 153,2898 }, { 154,2898 }, { 155,2898 }, { 156,2898 }, { 157,2898 }, { 158,2898 }, { 159,2898 }, { 160,2898 }, { 161,2898 }, { 162,2898 }, { 163,2898 }, { 164,2898 }, { 165,2898 }, { 166,2898 }, { 167,2898 }, { 168,2898 }, { 169,2898 }, { 170,2898 }, { 171,2898 }, { 172,2898 }, { 173,2898 }, { 174,2898 }, { 175,2898 }, { 176,2898 }, { 177,2898 }, { 178,2898 }, { 179,2898 }, { 180,2898 }, { 181,2898 }, { 182,2898 }, { 183,2898 }, { 184,2898 }, { 185,2898 }, { 186,2898 }, { 187,2898 }, { 188,2898 }, { 189,2898 }, { 190,2898 }, { 191,2898 }, { 192,2898 }, { 193,2898 }, { 194,2898 }, { 195,2898 }, { 196,2898 }, { 197,2898 }, { 198,2898 }, { 199,2898 }, { 200,2898 }, { 201,2898 }, { 202,2898 }, { 203,2898 }, { 204,2898 }, { 205,2898 }, { 206,2898 }, { 207,2898 }, { 208,2898 }, { 209,2898 }, { 210,2898 }, { 211,2898 }, { 212,2898 }, { 213,2898 }, { 214,2898 }, { 215,2898 }, { 216,2898 }, { 217,2898 }, { 218,2898 }, { 219,2898 }, { 220,2898 }, { 221,2898 }, { 222,2898 }, { 223,2898 }, { 224,2898 }, { 225,2898 }, { 226,2898 }, { 227,2898 }, { 228,2898 }, { 229,2898 }, { 230,2898 }, { 231,2898 }, { 232,2898 }, { 233,2898 }, { 234,2898 }, { 235,2898 }, { 236,2898 }, { 237,2898 }, { 238,2898 }, { 239,2898 }, { 240,2898 }, { 241,2898 }, { 242,2898 }, { 243,2898 }, { 244,2898 }, { 245,2898 }, { 246,2898 }, { 247,2898 }, { 248,2898 }, { 249,2898 }, { 250,2898 }, { 251,2898 }, { 252,2898 }, { 253,2898 }, { 254,2898 }, { 255,2898 }, { 256,2898 }, { 0, 0 }, { 0,13808 }, { 1,6388 }, { 2,6388 }, { 3,6388 }, { 4,6388 }, { 5,6388 }, { 6,6388 }, { 7,6388 }, { 8,6388 }, { 9,6388 }, { 10,6646 }, { 11,6388 }, { 12,6388 }, { 13,6388 }, { 14,6388 }, { 15,6388 }, { 16,6388 }, { 17,6388 }, { 18,6388 }, { 19,6388 }, { 20,6388 }, { 21,6388 }, { 22,6388 }, { 23,6388 }, { 24,6388 }, { 25,6388 }, { 26,6388 }, { 27,6388 }, { 28,6388 }, { 29,6388 }, { 30,6388 }, { 31,6388 }, { 32,6388 }, { 33,6388 }, { 34,6388 }, { 35,6388 }, { 36,6388 }, { 37,6388 }, { 38,6388 }, { 39,2645 }, { 40,6388 }, { 41,6388 }, { 42,6388 }, { 43,6388 }, { 44,6388 }, { 45,6388 }, { 46,6388 }, { 47,6388 }, { 48,6388 }, { 49,6388 }, { 50,6388 }, { 51,6388 }, { 52,6388 }, { 53,6388 }, { 54,6388 }, { 55,6388 }, { 56,6388 }, { 57,6388 }, { 58,6388 }, { 59,6388 }, { 60,6388 }, { 61,6388 }, { 62,6388 }, { 63,6388 }, { 64,6388 }, { 65,6388 }, { 66,6388 }, { 67,6388 }, { 68,6388 }, { 69,6388 }, { 70,6388 }, { 71,6388 }, { 72,6388 }, { 73,6388 }, { 74,6388 }, { 75,6388 }, { 76,6388 }, { 77,6388 }, { 78,6388 }, { 79,6388 }, { 80,6388 }, { 81,6388 }, { 82,6388 }, { 83,6388 }, { 84,6388 }, { 85,6388 }, { 86,6388 }, { 87,6388 }, { 88,6388 }, { 89,6388 }, { 90,6388 }, { 91,6388 }, { 92,6904 }, { 93,6388 }, { 94,6388 }, { 95,6388 }, { 96,6388 }, { 97,6388 }, { 98,6388 }, { 99,6388 }, { 100,6388 }, { 101,6388 }, { 102,6388 }, { 103,6388 }, { 104,6388 }, { 105,6388 }, { 106,6388 }, { 107,6388 }, { 108,6388 }, { 109,6388 }, { 110,6388 }, { 111,6388 }, { 112,6388 }, { 113,6388 }, { 114,6388 }, { 115,6388 }, { 116,6388 }, { 117,6388 }, { 118,6388 }, { 119,6388 }, { 120,6388 }, { 121,6388 }, { 122,6388 }, { 123,6388 }, { 124,6388 }, { 125,6388 }, { 126,6388 }, { 127,6388 }, { 128,6388 }, { 129,6388 }, { 130,6388 }, { 131,6388 }, { 132,6388 }, { 133,6388 }, { 134,6388 }, { 135,6388 }, { 136,6388 }, { 137,6388 }, { 138,6388 }, { 139,6388 }, { 140,6388 }, { 141,6388 }, { 142,6388 }, { 143,6388 }, { 144,6388 }, { 145,6388 }, { 146,6388 }, { 147,6388 }, { 148,6388 }, { 149,6388 }, { 150,6388 }, { 151,6388 }, { 152,6388 }, { 153,6388 }, { 154,6388 }, { 155,6388 }, { 156,6388 }, { 157,6388 }, { 158,6388 }, { 159,6388 }, { 160,6388 }, { 161,6388 }, { 162,6388 }, { 163,6388 }, { 164,6388 }, { 165,6388 }, { 166,6388 }, { 167,6388 }, { 168,6388 }, { 169,6388 }, { 170,6388 }, { 171,6388 }, { 172,6388 }, { 173,6388 }, { 174,6388 }, { 175,6388 }, { 176,6388 }, { 177,6388 }, { 178,6388 }, { 179,6388 }, { 180,6388 }, { 181,6388 }, { 182,6388 }, { 183,6388 }, { 184,6388 }, { 185,6388 }, { 186,6388 }, { 187,6388 }, { 188,6388 }, { 189,6388 }, { 190,6388 }, { 191,6388 }, { 192,6388 }, { 193,6388 }, { 194,6388 }, { 195,6388 }, { 196,6388 }, { 197,6388 }, { 198,6388 }, { 199,6388 }, { 200,6388 }, { 201,6388 }, { 202,6388 }, { 203,6388 }, { 204,6388 }, { 205,6388 }, { 206,6388 }, { 207,6388 }, { 208,6388 }, { 209,6388 }, { 210,6388 }, { 211,6388 }, { 212,6388 }, { 213,6388 }, { 214,6388 }, { 215,6388 }, { 216,6388 }, { 217,6388 }, { 218,6388 }, { 219,6388 }, { 220,6388 }, { 221,6388 }, { 222,6388 }, { 223,6388 }, { 224,6388 }, { 225,6388 }, { 226,6388 }, { 227,6388 }, { 228,6388 }, { 229,6388 }, { 230,6388 }, { 231,6388 }, { 232,6388 }, { 233,6388 }, { 234,6388 }, { 235,6388 }, { 236,6388 }, { 237,6388 }, { 238,6388 }, { 239,6388 }, { 240,6388 }, { 241,6388 }, { 242,6388 }, { 243,6388 }, { 244,6388 }, { 245,6388 }, { 246,6388 }, { 247,6388 }, { 248,6388 }, { 249,6388 }, { 250,6388 }, { 251,6388 }, { 252,6388 }, { 253,6388 }, { 254,6388 }, { 255,6388 }, { 256,6388 }, { 0, 0 }, { 0,13550 }, { 1,6130 }, { 2,6130 }, { 3,6130 }, { 4,6130 }, { 5,6130 }, { 6,6130 }, { 7,6130 }, { 8,6130 }, { 9,6130 }, { 10,6388 }, { 11,6130 }, { 12,6130 }, { 13,6130 }, { 14,6130 }, { 15,6130 }, { 16,6130 }, { 17,6130 }, { 18,6130 }, { 19,6130 }, { 20,6130 }, { 21,6130 }, { 22,6130 }, { 23,6130 }, { 24,6130 }, { 25,6130 }, { 26,6130 }, { 27,6130 }, { 28,6130 }, { 29,6130 }, { 30,6130 }, { 31,6130 }, { 32,6130 }, { 33,6130 }, { 34,6130 }, { 35,6130 }, { 36,6130 }, { 37,6130 }, { 38,6130 }, { 39,2387 }, { 40,6130 }, { 41,6130 }, { 42,6130 }, { 43,6130 }, { 44,6130 }, { 45,6130 }, { 46,6130 }, { 47,6130 }, { 48,6130 }, { 49,6130 }, { 50,6130 }, { 51,6130 }, { 52,6130 }, { 53,6130 }, { 54,6130 }, { 55,6130 }, { 56,6130 }, { 57,6130 }, { 58,6130 }, { 59,6130 }, { 60,6130 }, { 61,6130 }, { 62,6130 }, { 63,6130 }, { 64,6130 }, { 65,6130 }, { 66,6130 }, { 67,6130 }, { 68,6130 }, { 69,6130 }, { 70,6130 }, { 71,6130 }, { 72,6130 }, { 73,6130 }, { 74,6130 }, { 75,6130 }, { 76,6130 }, { 77,6130 }, { 78,6130 }, { 79,6130 }, { 80,6130 }, { 81,6130 }, { 82,6130 }, { 83,6130 }, { 84,6130 }, { 85,6130 }, { 86,6130 }, { 87,6130 }, { 88,6130 }, { 89,6130 }, { 90,6130 }, { 91,6130 }, { 92,6646 }, { 93,6130 }, { 94,6130 }, { 95,6130 }, { 96,6130 }, { 97,6130 }, { 98,6130 }, { 99,6130 }, { 100,6130 }, { 101,6130 }, { 102,6130 }, { 103,6130 }, { 104,6130 }, { 105,6130 }, { 106,6130 }, { 107,6130 }, { 108,6130 }, { 109,6130 }, { 110,6130 }, { 111,6130 }, { 112,6130 }, { 113,6130 }, { 114,6130 }, { 115,6130 }, { 116,6130 }, { 117,6130 }, { 118,6130 }, { 119,6130 }, { 120,6130 }, { 121,6130 }, { 122,6130 }, { 123,6130 }, { 124,6130 }, { 125,6130 }, { 126,6130 }, { 127,6130 }, { 128,6130 }, { 129,6130 }, { 130,6130 }, { 131,6130 }, { 132,6130 }, { 133,6130 }, { 134,6130 }, { 135,6130 }, { 136,6130 }, { 137,6130 }, { 138,6130 }, { 139,6130 }, { 140,6130 }, { 141,6130 }, { 142,6130 }, { 143,6130 }, { 144,6130 }, { 145,6130 }, { 146,6130 }, { 147,6130 }, { 148,6130 }, { 149,6130 }, { 150,6130 }, { 151,6130 }, { 152,6130 }, { 153,6130 }, { 154,6130 }, { 155,6130 }, { 156,6130 }, { 157,6130 }, { 158,6130 }, { 159,6130 }, { 160,6130 }, { 161,6130 }, { 162,6130 }, { 163,6130 }, { 164,6130 }, { 165,6130 }, { 166,6130 }, { 167,6130 }, { 168,6130 }, { 169,6130 }, { 170,6130 }, { 171,6130 }, { 172,6130 }, { 173,6130 }, { 174,6130 }, { 175,6130 }, { 176,6130 }, { 177,6130 }, { 178,6130 }, { 179,6130 }, { 180,6130 }, { 181,6130 }, { 182,6130 }, { 183,6130 }, { 184,6130 }, { 185,6130 }, { 186,6130 }, { 187,6130 }, { 188,6130 }, { 189,6130 }, { 190,6130 }, { 191,6130 }, { 192,6130 }, { 193,6130 }, { 194,6130 }, { 195,6130 }, { 196,6130 }, { 197,6130 }, { 198,6130 }, { 199,6130 }, { 200,6130 }, { 201,6130 }, { 202,6130 }, { 203,6130 }, { 204,6130 }, { 205,6130 }, { 206,6130 }, { 207,6130 }, { 208,6130 }, { 209,6130 }, { 210,6130 }, { 211,6130 }, { 212,6130 }, { 213,6130 }, { 214,6130 }, { 215,6130 }, { 216,6130 }, { 217,6130 }, { 218,6130 }, { 219,6130 }, { 220,6130 }, { 221,6130 }, { 222,6130 }, { 223,6130 }, { 224,6130 }, { 225,6130 }, { 226,6130 }, { 227,6130 }, { 228,6130 }, { 229,6130 }, { 230,6130 }, { 231,6130 }, { 232,6130 }, { 233,6130 }, { 234,6130 }, { 235,6130 }, { 236,6130 }, { 237,6130 }, { 238,6130 }, { 239,6130 }, { 240,6130 }, { 241,6130 }, { 242,6130 }, { 243,6130 }, { 244,6130 }, { 245,6130 }, { 246,6130 }, { 247,6130 }, { 248,6130 }, { 249,6130 }, { 250,6130 }, { 251,6130 }, { 252,6130 }, { 253,6130 }, { 254,6130 }, { 255,6130 }, { 256,6130 }, { 0, 0 }, { 0,13292 }, { 1,6646 }, { 2,6646 }, { 3,6646 }, { 4,6646 }, { 5,6646 }, { 6,6646 }, { 7,6646 }, { 8,6646 }, { 9,6646 }, { 10,6904 }, { 11,6646 }, { 12,6646 }, { 13,6646 }, { 14,6646 }, { 15,6646 }, { 16,6646 }, { 17,6646 }, { 18,6646 }, { 19,6646 }, { 20,6646 }, { 21,6646 }, { 22,6646 }, { 23,6646 }, { 24,6646 }, { 25,6646 }, { 26,6646 }, { 27,6646 }, { 28,6646 }, { 29,6646 }, { 30,6646 }, { 31,6646 }, { 32,6646 }, { 33,6646 }, { 34,6646 }, { 35,6646 }, { 36,7162 }, { 37,6646 }, { 38,6646 }, { 39,6646 }, { 40,6646 }, { 41,6646 }, { 42,6646 }, { 43,6646 }, { 44,6646 }, { 45,6646 }, { 46,6646 }, { 47,6646 }, { 48,6646 }, { 49,6646 }, { 50,6646 }, { 51,6646 }, { 52,6646 }, { 53,6646 }, { 54,6646 }, { 55,6646 }, { 56,6646 }, { 57,6646 }, { 58,6646 }, { 59,6646 }, { 60,6646 }, { 61,6646 }, { 62,6646 }, { 63,6646 }, { 64,6646 }, { 65,6646 }, { 66,6646 }, { 67,6646 }, { 68,6646 }, { 69,6646 }, { 70,6646 }, { 71,6646 }, { 72,6646 }, { 73,6646 }, { 74,6646 }, { 75,6646 }, { 76,6646 }, { 77,6646 }, { 78,6646 }, { 79,6646 }, { 80,6646 }, { 81,6646 }, { 82,6646 }, { 83,6646 }, { 84,6646 }, { 85,6646 }, { 86,6646 }, { 87,6646 }, { 88,6646 }, { 89,6646 }, { 90,6646 }, { 91,6646 }, { 92,6646 }, { 93,6646 }, { 94,6646 }, { 95,6646 }, { 96,6646 }, { 97,6646 }, { 98,6646 }, { 99,6646 }, { 100,6646 }, { 101,6646 }, { 102,6646 }, { 103,6646 }, { 104,6646 }, { 105,6646 }, { 106,6646 }, { 107,6646 }, { 108,6646 }, { 109,6646 }, { 110,6646 }, { 111,6646 }, { 112,6646 }, { 113,6646 }, { 114,6646 }, { 115,6646 }, { 116,6646 }, { 117,6646 }, { 118,6646 }, { 119,6646 }, { 120,6646 }, { 121,6646 }, { 122,6646 }, { 123,6646 }, { 124,6646 }, { 125,6646 }, { 126,6646 }, { 127,6646 }, { 128,6646 }, { 129,6646 }, { 130,6646 }, { 131,6646 }, { 132,6646 }, { 133,6646 }, { 134,6646 }, { 135,6646 }, { 136,6646 }, { 137,6646 }, { 138,6646 }, { 139,6646 }, { 140,6646 }, { 141,6646 }, { 142,6646 }, { 143,6646 }, { 144,6646 }, { 145,6646 }, { 146,6646 }, { 147,6646 }, { 148,6646 }, { 149,6646 }, { 150,6646 }, { 151,6646 }, { 152,6646 }, { 153,6646 }, { 154,6646 }, { 155,6646 }, { 156,6646 }, { 157,6646 }, { 158,6646 }, { 159,6646 }, { 160,6646 }, { 161,6646 }, { 162,6646 }, { 163,6646 }, { 164,6646 }, { 165,6646 }, { 166,6646 }, { 167,6646 }, { 168,6646 }, { 169,6646 }, { 170,6646 }, { 171,6646 }, { 172,6646 }, { 173,6646 }, { 174,6646 }, { 175,6646 }, { 176,6646 }, { 177,6646 }, { 178,6646 }, { 179,6646 }, { 180,6646 }, { 181,6646 }, { 182,6646 }, { 183,6646 }, { 184,6646 }, { 185,6646 }, { 186,6646 }, { 187,6646 }, { 188,6646 }, { 189,6646 }, { 190,6646 }, { 191,6646 }, { 192,6646 }, { 193,6646 }, { 194,6646 }, { 195,6646 }, { 196,6646 }, { 197,6646 }, { 198,6646 }, { 199,6646 }, { 200,6646 }, { 201,6646 }, { 202,6646 }, { 203,6646 }, { 204,6646 }, { 205,6646 }, { 206,6646 }, { 207,6646 }, { 208,6646 }, { 209,6646 }, { 210,6646 }, { 211,6646 }, { 212,6646 }, { 213,6646 }, { 214,6646 }, { 215,6646 }, { 216,6646 }, { 217,6646 }, { 218,6646 }, { 219,6646 }, { 220,6646 }, { 221,6646 }, { 222,6646 }, { 223,6646 }, { 224,6646 }, { 225,6646 }, { 226,6646 }, { 227,6646 }, { 228,6646 }, { 229,6646 }, { 230,6646 }, { 231,6646 }, { 232,6646 }, { 233,6646 }, { 234,6646 }, { 235,6646 }, { 236,6646 }, { 237,6646 }, { 238,6646 }, { 239,6646 }, { 240,6646 }, { 241,6646 }, { 242,6646 }, { 243,6646 }, { 244,6646 }, { 245,6646 }, { 246,6646 }, { 247,6646 }, { 248,6646 }, { 249,6646 }, { 250,6646 }, { 251,6646 }, { 252,6646 }, { 253,6646 }, { 254,6646 }, { 255,6646 }, { 256,6646 }, { 0, 0 }, { 0,13034 }, { 1,6388 }, { 2,6388 }, { 3,6388 }, { 4,6388 }, { 5,6388 }, { 6,6388 }, { 7,6388 }, { 8,6388 }, { 9,6388 }, { 10,6646 }, { 11,6388 }, { 12,6388 }, { 13,6388 }, { 14,6388 }, { 15,6388 }, { 16,6388 }, { 17,6388 }, { 18,6388 }, { 19,6388 }, { 20,6388 }, { 21,6388 }, { 22,6388 }, { 23,6388 }, { 24,6388 }, { 25,6388 }, { 26,6388 }, { 27,6388 }, { 28,6388 }, { 29,6388 }, { 30,6388 }, { 31,6388 }, { 32,6388 }, { 33,6388 }, { 34,6388 }, { 35,6388 }, { 36,6904 }, { 37,6388 }, { 38,6388 }, { 39,6388 }, { 40,6388 }, { 41,6388 }, { 42,6388 }, { 43,6388 }, { 44,6388 }, { 45,6388 }, { 46,6388 }, { 47,6388 }, { 48,6388 }, { 49,6388 }, { 50,6388 }, { 51,6388 }, { 52,6388 }, { 53,6388 }, { 54,6388 }, { 55,6388 }, { 56,6388 }, { 57,6388 }, { 58,6388 }, { 59,6388 }, { 60,6388 }, { 61,6388 }, { 62,6388 }, { 63,6388 }, { 64,6388 }, { 65,6388 }, { 66,6388 }, { 67,6388 }, { 68,6388 }, { 69,6388 }, { 70,6388 }, { 71,6388 }, { 72,6388 }, { 73,6388 }, { 74,6388 }, { 75,6388 }, { 76,6388 }, { 77,6388 }, { 78,6388 }, { 79,6388 }, { 80,6388 }, { 81,6388 }, { 82,6388 }, { 83,6388 }, { 84,6388 }, { 85,6388 }, { 86,6388 }, { 87,6388 }, { 88,6388 }, { 89,6388 }, { 90,6388 }, { 91,6388 }, { 92,6388 }, { 93,6388 }, { 94,6388 }, { 95,6388 }, { 96,6388 }, { 97,6388 }, { 98,6388 }, { 99,6388 }, { 100,6388 }, { 101,6388 }, { 102,6388 }, { 103,6388 }, { 104,6388 }, { 105,6388 }, { 106,6388 }, { 107,6388 }, { 108,6388 }, { 109,6388 }, { 110,6388 }, { 111,6388 }, { 112,6388 }, { 113,6388 }, { 114,6388 }, { 115,6388 }, { 116,6388 }, { 117,6388 }, { 118,6388 }, { 119,6388 }, { 120,6388 }, { 121,6388 }, { 122,6388 }, { 123,6388 }, { 124,6388 }, { 125,6388 }, { 126,6388 }, { 127,6388 }, { 128,6388 }, { 129,6388 }, { 130,6388 }, { 131,6388 }, { 132,6388 }, { 133,6388 }, { 134,6388 }, { 135,6388 }, { 136,6388 }, { 137,6388 }, { 138,6388 }, { 139,6388 }, { 140,6388 }, { 141,6388 }, { 142,6388 }, { 143,6388 }, { 144,6388 }, { 145,6388 }, { 146,6388 }, { 147,6388 }, { 148,6388 }, { 149,6388 }, { 150,6388 }, { 151,6388 }, { 152,6388 }, { 153,6388 }, { 154,6388 }, { 155,6388 }, { 156,6388 }, { 157,6388 }, { 158,6388 }, { 159,6388 }, { 160,6388 }, { 161,6388 }, { 162,6388 }, { 163,6388 }, { 164,6388 }, { 165,6388 }, { 166,6388 }, { 167,6388 }, { 168,6388 }, { 169,6388 }, { 170,6388 }, { 171,6388 }, { 172,6388 }, { 173,6388 }, { 174,6388 }, { 175,6388 }, { 176,6388 }, { 177,6388 }, { 178,6388 }, { 179,6388 }, { 180,6388 }, { 181,6388 }, { 182,6388 }, { 183,6388 }, { 184,6388 }, { 185,6388 }, { 186,6388 }, { 187,6388 }, { 188,6388 }, { 189,6388 }, { 190,6388 }, { 191,6388 }, { 192,6388 }, { 193,6388 }, { 194,6388 }, { 195,6388 }, { 196,6388 }, { 197,6388 }, { 198,6388 }, { 199,6388 }, { 200,6388 }, { 201,6388 }, { 202,6388 }, { 203,6388 }, { 204,6388 }, { 205,6388 }, { 206,6388 }, { 207,6388 }, { 208,6388 }, { 209,6388 }, { 210,6388 }, { 211,6388 }, { 212,6388 }, { 213,6388 }, { 214,6388 }, { 215,6388 }, { 216,6388 }, { 217,6388 }, { 218,6388 }, { 219,6388 }, { 220,6388 }, { 221,6388 }, { 222,6388 }, { 223,6388 }, { 224,6388 }, { 225,6388 }, { 226,6388 }, { 227,6388 }, { 228,6388 }, { 229,6388 }, { 230,6388 }, { 231,6388 }, { 232,6388 }, { 233,6388 }, { 234,6388 }, { 235,6388 }, { 236,6388 }, { 237,6388 }, { 238,6388 }, { 239,6388 }, { 240,6388 }, { 241,6388 }, { 242,6388 }, { 243,6388 }, { 244,6388 }, { 245,6388 }, { 246,6388 }, { 247,6388 }, { 248,6388 }, { 249,6388 }, { 250,6388 }, { 251,6388 }, { 252,6388 }, { 253,6388 }, { 254,6388 }, { 255,6388 }, { 256,6388 }, { 0, 0 }, { 0,12776 }, { 1,4514 }, { 2,4514 }, { 3,4514 }, { 4,4514 }, { 5,4514 }, { 6,4514 }, { 7,4514 }, { 8,4514 }, { 9,4514 }, { 10,4514 }, { 11,4514 }, { 12,4514 }, { 13,4514 }, { 14,4514 }, { 15,4514 }, { 16,4514 }, { 17,4514 }, { 18,4514 }, { 19,4514 }, { 20,4514 }, { 21,4514 }, { 22,4514 }, { 23,4514 }, { 24,4514 }, { 25,4514 }, { 26,4514 }, { 27,4514 }, { 28,4514 }, { 29,4514 }, { 30,4514 }, { 31,4514 }, { 32,4514 }, { 33,4514 }, { 34,1615 }, { 35,4514 }, { 36,4514 }, { 37,4514 }, { 38,4514 }, { 39,4514 }, { 40,4514 }, { 41,4514 }, { 42,4514 }, { 43,4514 }, { 44,4514 }, { 45,4514 }, { 46,4514 }, { 47,4514 }, { 48,4514 }, { 49,4514 }, { 50,4514 }, { 51,4514 }, { 52,4514 }, { 53,4514 }, { 54,4514 }, { 55,4514 }, { 56,4514 }, { 57,4514 }, { 58,4514 }, { 59,4514 }, { 60,4514 }, { 61,4514 }, { 62,4514 }, { 63,4514 }, { 64,4514 }, { 65,4514 }, { 66,4514 }, { 67,4514 }, { 68,4514 }, { 69,4514 }, { 70,4514 }, { 71,4514 }, { 72,4514 }, { 73,4514 }, { 74,4514 }, { 75,4514 }, { 76,4514 }, { 77,4514 }, { 78,4514 }, { 79,4514 }, { 80,4514 }, { 81,4514 }, { 82,4514 }, { 83,4514 }, { 84,4514 }, { 85,4514 }, { 86,4514 }, { 87,4514 }, { 88,4514 }, { 89,4514 }, { 90,4514 }, { 91,4514 }, { 92,4514 }, { 93,4514 }, { 94,4514 }, { 95,4514 }, { 96,4514 }, { 97,4514 }, { 98,4514 }, { 99,4514 }, { 100,4514 }, { 101,4514 }, { 102,4514 }, { 103,4514 }, { 104,4514 }, { 105,4514 }, { 106,4514 }, { 107,4514 }, { 108,4514 }, { 109,4514 }, { 110,4514 }, { 111,4514 }, { 112,4514 }, { 113,4514 }, { 114,4514 }, { 115,4514 }, { 116,4514 }, { 117,4514 }, { 118,4514 }, { 119,4514 }, { 120,4514 }, { 121,4514 }, { 122,4514 }, { 123,4514 }, { 124,4514 }, { 125,4514 }, { 126,4514 }, { 127,4514 }, { 128,4514 }, { 129,4514 }, { 130,4514 }, { 131,4514 }, { 132,4514 }, { 133,4514 }, { 134,4514 }, { 135,4514 }, { 136,4514 }, { 137,4514 }, { 138,4514 }, { 139,4514 }, { 140,4514 }, { 141,4514 }, { 142,4514 }, { 143,4514 }, { 144,4514 }, { 145,4514 }, { 146,4514 }, { 147,4514 }, { 148,4514 }, { 149,4514 }, { 150,4514 }, { 151,4514 }, { 152,4514 }, { 153,4514 }, { 154,4514 }, { 155,4514 }, { 156,4514 }, { 157,4514 }, { 158,4514 }, { 159,4514 }, { 160,4514 }, { 161,4514 }, { 162,4514 }, { 163,4514 }, { 164,4514 }, { 165,4514 }, { 166,4514 }, { 167,4514 }, { 168,4514 }, { 169,4514 }, { 170,4514 }, { 171,4514 }, { 172,4514 }, { 173,4514 }, { 174,4514 }, { 175,4514 }, { 176,4514 }, { 177,4514 }, { 178,4514 }, { 179,4514 }, { 180,4514 }, { 181,4514 }, { 182,4514 }, { 183,4514 }, { 184,4514 }, { 185,4514 }, { 186,4514 }, { 187,4514 }, { 188,4514 }, { 189,4514 }, { 190,4514 }, { 191,4514 }, { 192,4514 }, { 193,4514 }, { 194,4514 }, { 195,4514 }, { 196,4514 }, { 197,4514 }, { 198,4514 }, { 199,4514 }, { 200,4514 }, { 201,4514 }, { 202,4514 }, { 203,4514 }, { 204,4514 }, { 205,4514 }, { 206,4514 }, { 207,4514 }, { 208,4514 }, { 209,4514 }, { 210,4514 }, { 211,4514 }, { 212,4514 }, { 213,4514 }, { 214,4514 }, { 215,4514 }, { 216,4514 }, { 217,4514 }, { 218,4514 }, { 219,4514 }, { 220,4514 }, { 221,4514 }, { 222,4514 }, { 223,4514 }, { 224,4514 }, { 225,4514 }, { 226,4514 }, { 227,4514 }, { 228,4514 }, { 229,4514 }, { 230,4514 }, { 231,4514 }, { 232,4514 }, { 233,4514 }, { 234,4514 }, { 235,4514 }, { 236,4514 }, { 237,4514 }, { 238,4514 }, { 239,4514 }, { 240,4514 }, { 241,4514 }, { 242,4514 }, { 243,4514 }, { 244,4514 }, { 245,4514 }, { 246,4514 }, { 247,4514 }, { 248,4514 }, { 249,4514 }, { 250,4514 }, { 251,4514 }, { 252,4514 }, { 253,4514 }, { 254,4514 }, { 255,4514 }, { 256,4514 }, { 0, 0 }, { 0,12518 }, { 1,4256 }, { 2,4256 }, { 3,4256 }, { 4,4256 }, { 5,4256 }, { 6,4256 }, { 7,4256 }, { 8,4256 }, { 9,4256 }, { 10,4256 }, { 11,4256 }, { 12,4256 }, { 13,4256 }, { 14,4256 }, { 15,4256 }, { 16,4256 }, { 17,4256 }, { 18,4256 }, { 19,4256 }, { 20,4256 }, { 21,4256 }, { 22,4256 }, { 23,4256 }, { 24,4256 }, { 25,4256 }, { 26,4256 }, { 27,4256 }, { 28,4256 }, { 29,4256 }, { 30,4256 }, { 31,4256 }, { 32,4256 }, { 33,4256 }, { 34,1357 }, { 35,4256 }, { 36,4256 }, { 37,4256 }, { 38,4256 }, { 39,4256 }, { 40,4256 }, { 41,4256 }, { 42,4256 }, { 43,4256 }, { 44,4256 }, { 45,4256 }, { 46,4256 }, { 47,4256 }, { 48,4256 }, { 49,4256 }, { 50,4256 }, { 51,4256 }, { 52,4256 }, { 53,4256 }, { 54,4256 }, { 55,4256 }, { 56,4256 }, { 57,4256 }, { 58,4256 }, { 59,4256 }, { 60,4256 }, { 61,4256 }, { 62,4256 }, { 63,4256 }, { 64,4256 }, { 65,4256 }, { 66,4256 }, { 67,4256 }, { 68,4256 }, { 69,4256 }, { 70,4256 }, { 71,4256 }, { 72,4256 }, { 73,4256 }, { 74,4256 }, { 75,4256 }, { 76,4256 }, { 77,4256 }, { 78,4256 }, { 79,4256 }, { 80,4256 }, { 81,4256 }, { 82,4256 }, { 83,4256 }, { 84,4256 }, { 85,4256 }, { 86,4256 }, { 87,4256 }, { 88,4256 }, { 89,4256 }, { 90,4256 }, { 91,4256 }, { 92,4256 }, { 93,4256 }, { 94,4256 }, { 95,4256 }, { 96,4256 }, { 97,4256 }, { 98,4256 }, { 99,4256 }, { 100,4256 }, { 101,4256 }, { 102,4256 }, { 103,4256 }, { 104,4256 }, { 105,4256 }, { 106,4256 }, { 107,4256 }, { 108,4256 }, { 109,4256 }, { 110,4256 }, { 111,4256 }, { 112,4256 }, { 113,4256 }, { 114,4256 }, { 115,4256 }, { 116,4256 }, { 117,4256 }, { 118,4256 }, { 119,4256 }, { 120,4256 }, { 121,4256 }, { 122,4256 }, { 123,4256 }, { 124,4256 }, { 125,4256 }, { 126,4256 }, { 127,4256 }, { 128,4256 }, { 129,4256 }, { 130,4256 }, { 131,4256 }, { 132,4256 }, { 133,4256 }, { 134,4256 }, { 135,4256 }, { 136,4256 }, { 137,4256 }, { 138,4256 }, { 139,4256 }, { 140,4256 }, { 141,4256 }, { 142,4256 }, { 143,4256 }, { 144,4256 }, { 145,4256 }, { 146,4256 }, { 147,4256 }, { 148,4256 }, { 149,4256 }, { 150,4256 }, { 151,4256 }, { 152,4256 }, { 153,4256 }, { 154,4256 }, { 155,4256 }, { 156,4256 }, { 157,4256 }, { 158,4256 }, { 159,4256 }, { 160,4256 }, { 161,4256 }, { 162,4256 }, { 163,4256 }, { 164,4256 }, { 165,4256 }, { 166,4256 }, { 167,4256 }, { 168,4256 }, { 169,4256 }, { 170,4256 }, { 171,4256 }, { 172,4256 }, { 173,4256 }, { 174,4256 }, { 175,4256 }, { 176,4256 }, { 177,4256 }, { 178,4256 }, { 179,4256 }, { 180,4256 }, { 181,4256 }, { 182,4256 }, { 183,4256 }, { 184,4256 }, { 185,4256 }, { 186,4256 }, { 187,4256 }, { 188,4256 }, { 189,4256 }, { 190,4256 }, { 191,4256 }, { 192,4256 }, { 193,4256 }, { 194,4256 }, { 195,4256 }, { 196,4256 }, { 197,4256 }, { 198,4256 }, { 199,4256 }, { 200,4256 }, { 201,4256 }, { 202,4256 }, { 203,4256 }, { 204,4256 }, { 205,4256 }, { 206,4256 }, { 207,4256 }, { 208,4256 }, { 209,4256 }, { 210,4256 }, { 211,4256 }, { 212,4256 }, { 213,4256 }, { 214,4256 }, { 215,4256 }, { 216,4256 }, { 217,4256 }, { 218,4256 }, { 219,4256 }, { 220,4256 }, { 221,4256 }, { 222,4256 }, { 223,4256 }, { 224,4256 }, { 225,4256 }, { 226,4256 }, { 227,4256 }, { 228,4256 }, { 229,4256 }, { 230,4256 }, { 231,4256 }, { 232,4256 }, { 233,4256 }, { 234,4256 }, { 235,4256 }, { 236,4256 }, { 237,4256 }, { 238,4256 }, { 239,4256 }, { 240,4256 }, { 241,4256 }, { 242,4256 }, { 243,4256 }, { 244,4256 }, { 245,4256 }, { 246,4256 }, { 247,4256 }, { 248,4256 }, { 249,4256 }, { 250,4256 }, { 251,4256 }, { 252,4256 }, { 253,4256 }, { 254,4256 }, { 255,4256 }, { 256,4256 }, { 0, 0 }, { 0,12260 }, { 1,4514 }, { 2,4514 }, { 3,4514 }, { 4,4514 }, { 5,4514 }, { 6,4514 }, { 7,4514 }, { 8,4514 }, { 9,4514 }, { 10,4514 }, { 11,4514 }, { 12,4514 }, { 13,4514 }, { 14,4514 }, { 15,4514 }, { 16,4514 }, { 17,4514 }, { 18,4514 }, { 19,4514 }, { 20,4514 }, { 21,4514 }, { 22,4514 }, { 23,4514 }, { 24,4514 }, { 25,4514 }, { 26,4514 }, { 27,4514 }, { 28,4514 }, { 29,4514 }, { 30,4514 }, { 31,4514 }, { 32,4514 }, { 33,4514 }, { 34,4514 }, { 35,4514 }, { 36,4514 }, { 37,4514 }, { 38,4514 }, { 39,1090 }, { 40,4514 }, { 41,4514 }, { 42,4514 }, { 43,4514 }, { 44,4514 }, { 45,4514 }, { 46,4514 }, { 47,4514 }, { 48,4514 }, { 49,4514 }, { 50,4514 }, { 51,4514 }, { 52,4514 }, { 53,4514 }, { 54,4514 }, { 55,4514 }, { 56,4514 }, { 57,4514 }, { 58,4514 }, { 59,4514 }, { 60,4514 }, { 61,4514 }, { 62,4514 }, { 63,4514 }, { 64,4514 }, { 65,4514 }, { 66,4514 }, { 67,4514 }, { 68,4514 }, { 69,4514 }, { 70,4514 }, { 71,4514 }, { 72,4514 }, { 73,4514 }, { 74,4514 }, { 75,4514 }, { 76,4514 }, { 77,4514 }, { 78,4514 }, { 79,4514 }, { 80,4514 }, { 81,4514 }, { 82,4514 }, { 83,4514 }, { 84,4514 }, { 85,4514 }, { 86,4514 }, { 87,4514 }, { 88,4514 }, { 89,4514 }, { 90,4514 }, { 91,4514 }, { 92,4514 }, { 93,4514 }, { 94,4514 }, { 95,4514 }, { 96,4514 }, { 97,4514 }, { 98,4514 }, { 99,4514 }, { 100,4514 }, { 101,4514 }, { 102,4514 }, { 103,4514 }, { 104,4514 }, { 105,4514 }, { 106,4514 }, { 107,4514 }, { 108,4514 }, { 109,4514 }, { 110,4514 }, { 111,4514 }, { 112,4514 }, { 113,4514 }, { 114,4514 }, { 115,4514 }, { 116,4514 }, { 117,4514 }, { 118,4514 }, { 119,4514 }, { 120,4514 }, { 121,4514 }, { 122,4514 }, { 123,4514 }, { 124,4514 }, { 125,4514 }, { 126,4514 }, { 127,4514 }, { 128,4514 }, { 129,4514 }, { 130,4514 }, { 131,4514 }, { 132,4514 }, { 133,4514 }, { 134,4514 }, { 135,4514 }, { 136,4514 }, { 137,4514 }, { 138,4514 }, { 139,4514 }, { 140,4514 }, { 141,4514 }, { 142,4514 }, { 143,4514 }, { 144,4514 }, { 145,4514 }, { 146,4514 }, { 147,4514 }, { 148,4514 }, { 149,4514 }, { 150,4514 }, { 151,4514 }, { 152,4514 }, { 153,4514 }, { 154,4514 }, { 155,4514 }, { 156,4514 }, { 157,4514 }, { 158,4514 }, { 159,4514 }, { 160,4514 }, { 161,4514 }, { 162,4514 }, { 163,4514 }, { 164,4514 }, { 165,4514 }, { 166,4514 }, { 167,4514 }, { 168,4514 }, { 169,4514 }, { 170,4514 }, { 171,4514 }, { 172,4514 }, { 173,4514 }, { 174,4514 }, { 175,4514 }, { 176,4514 }, { 177,4514 }, { 178,4514 }, { 179,4514 }, { 180,4514 }, { 181,4514 }, { 182,4514 }, { 183,4514 }, { 184,4514 }, { 185,4514 }, { 186,4514 }, { 187,4514 }, { 188,4514 }, { 189,4514 }, { 190,4514 }, { 191,4514 }, { 192,4514 }, { 193,4514 }, { 194,4514 }, { 195,4514 }, { 196,4514 }, { 197,4514 }, { 198,4514 }, { 199,4514 }, { 200,4514 }, { 201,4514 }, { 202,4514 }, { 203,4514 }, { 204,4514 }, { 205,4514 }, { 206,4514 }, { 207,4514 }, { 208,4514 }, { 209,4514 }, { 210,4514 }, { 211,4514 }, { 212,4514 }, { 213,4514 }, { 214,4514 }, { 215,4514 }, { 216,4514 }, { 217,4514 }, { 218,4514 }, { 219,4514 }, { 220,4514 }, { 221,4514 }, { 222,4514 }, { 223,4514 }, { 224,4514 }, { 225,4514 }, { 226,4514 }, { 227,4514 }, { 228,4514 }, { 229,4514 }, { 230,4514 }, { 231,4514 }, { 232,4514 }, { 233,4514 }, { 234,4514 }, { 235,4514 }, { 236,4514 }, { 237,4514 }, { 238,4514 }, { 239,4514 }, { 240,4514 }, { 241,4514 }, { 242,4514 }, { 243,4514 }, { 244,4514 }, { 245,4514 }, { 246,4514 }, { 247,4514 }, { 248,4514 }, { 249,4514 }, { 250,4514 }, { 251,4514 }, { 252,4514 }, { 253,4514 }, { 254,4514 }, { 255,4514 }, { 256,4514 }, { 0, 0 }, { 0,12002 }, { 1,4256 }, { 2,4256 }, { 3,4256 }, { 4,4256 }, { 5,4256 }, { 6,4256 }, { 7,4256 }, { 8,4256 }, { 9,4256 }, { 10,4256 }, { 11,4256 }, { 12,4256 }, { 13,4256 }, { 14,4256 }, { 15,4256 }, { 16,4256 }, { 17,4256 }, { 18,4256 }, { 19,4256 }, { 20,4256 }, { 21,4256 }, { 22,4256 }, { 23,4256 }, { 24,4256 }, { 25,4256 }, { 26,4256 }, { 27,4256 }, { 28,4256 }, { 29,4256 }, { 30,4256 }, { 31,4256 }, { 32,4256 }, { 33,4256 }, { 34,4256 }, { 35,4256 }, { 36,4256 }, { 37,4256 }, { 38,4256 }, { 39, 832 }, { 40,4256 }, { 41,4256 }, { 42,4256 }, { 43,4256 }, { 44,4256 }, { 45,4256 }, { 46,4256 }, { 47,4256 }, { 48,4256 }, { 49,4256 }, { 50,4256 }, { 51,4256 }, { 52,4256 }, { 53,4256 }, { 54,4256 }, { 55,4256 }, { 56,4256 }, { 57,4256 }, { 58,4256 }, { 59,4256 }, { 60,4256 }, { 61,4256 }, { 62,4256 }, { 63,4256 }, { 64,4256 }, { 65,4256 }, { 66,4256 }, { 67,4256 }, { 68,4256 }, { 69,4256 }, { 70,4256 }, { 71,4256 }, { 72,4256 }, { 73,4256 }, { 74,4256 }, { 75,4256 }, { 76,4256 }, { 77,4256 }, { 78,4256 }, { 79,4256 }, { 80,4256 }, { 81,4256 }, { 82,4256 }, { 83,4256 }, { 84,4256 }, { 85,4256 }, { 86,4256 }, { 87,4256 }, { 88,4256 }, { 89,4256 }, { 90,4256 }, { 91,4256 }, { 92,4256 }, { 93,4256 }, { 94,4256 }, { 95,4256 }, { 96,4256 }, { 97,4256 }, { 98,4256 }, { 99,4256 }, { 100,4256 }, { 101,4256 }, { 102,4256 }, { 103,4256 }, { 104,4256 }, { 105,4256 }, { 106,4256 }, { 107,4256 }, { 108,4256 }, { 109,4256 }, { 110,4256 }, { 111,4256 }, { 112,4256 }, { 113,4256 }, { 114,4256 }, { 115,4256 }, { 116,4256 }, { 117,4256 }, { 118,4256 }, { 119,4256 }, { 120,4256 }, { 121,4256 }, { 122,4256 }, { 123,4256 }, { 124,4256 }, { 125,4256 }, { 126,4256 }, { 127,4256 }, { 128,4256 }, { 129,4256 }, { 130,4256 }, { 131,4256 }, { 132,4256 }, { 133,4256 }, { 134,4256 }, { 135,4256 }, { 136,4256 }, { 137,4256 }, { 138,4256 }, { 139,4256 }, { 140,4256 }, { 141,4256 }, { 142,4256 }, { 143,4256 }, { 144,4256 }, { 145,4256 }, { 146,4256 }, { 147,4256 }, { 148,4256 }, { 149,4256 }, { 150,4256 }, { 151,4256 }, { 152,4256 }, { 153,4256 }, { 154,4256 }, { 155,4256 }, { 156,4256 }, { 157,4256 }, { 158,4256 }, { 159,4256 }, { 160,4256 }, { 161,4256 }, { 162,4256 }, { 163,4256 }, { 164,4256 }, { 165,4256 }, { 166,4256 }, { 167,4256 }, { 168,4256 }, { 169,4256 }, { 170,4256 }, { 171,4256 }, { 172,4256 }, { 173,4256 }, { 174,4256 }, { 175,4256 }, { 176,4256 }, { 177,4256 }, { 178,4256 }, { 179,4256 }, { 180,4256 }, { 181,4256 }, { 182,4256 }, { 183,4256 }, { 184,4256 }, { 185,4256 }, { 186,4256 }, { 187,4256 }, { 188,4256 }, { 189,4256 }, { 190,4256 }, { 191,4256 }, { 192,4256 }, { 193,4256 }, { 194,4256 }, { 195,4256 }, { 196,4256 }, { 197,4256 }, { 198,4256 }, { 199,4256 }, { 200,4256 }, { 201,4256 }, { 202,4256 }, { 203,4256 }, { 204,4256 }, { 205,4256 }, { 206,4256 }, { 207,4256 }, { 208,4256 }, { 209,4256 }, { 210,4256 }, { 211,4256 }, { 212,4256 }, { 213,4256 }, { 214,4256 }, { 215,4256 }, { 216,4256 }, { 217,4256 }, { 218,4256 }, { 219,4256 }, { 220,4256 }, { 221,4256 }, { 222,4256 }, { 223,4256 }, { 224,4256 }, { 225,4256 }, { 226,4256 }, { 227,4256 }, { 228,4256 }, { 229,4256 }, { 230,4256 }, { 231,4256 }, { 232,4256 }, { 233,4256 }, { 234,4256 }, { 235,4256 }, { 236,4256 }, { 237,4256 }, { 238,4256 }, { 239,4256 }, { 240,4256 }, { 241,4256 }, { 242,4256 }, { 243,4256 }, { 244,4256 }, { 245,4256 }, { 246,4256 }, { 247,4256 }, { 248,4256 }, { 249,4256 }, { 250,4256 }, { 251,4256 }, { 252,4256 }, { 253,4256 }, { 254,4256 }, { 255,4256 }, { 256,4256 }, { 0, 0 }, { 0,11744 }, { 1, 593 }, { 2, 593 }, { 3, 593 }, { 4, 593 }, { 5, 593 }, { 6, 593 }, { 7, 593 }, { 8, 593 }, { 9, 593 }, { 10, 597 }, { 11, 593 }, { 12, 593 }, { 13, 593 }, { 14, 593 }, { 15, 593 }, { 16, 593 }, { 17, 593 }, { 18, 593 }, { 19, 593 }, { 20, 593 }, { 21, 593 }, { 22, 593 }, { 23, 593 }, { 24, 593 }, { 25, 593 }, { 26, 593 }, { 27, 593 }, { 28, 593 }, { 29, 593 }, { 30, 593 }, { 31, 593 }, { 32, 593 }, { 33, 593 }, { 34, 593 }, { 35, 593 }, { 36, 593 }, { 37, 593 }, { 38, 593 }, { 39, 593 }, { 40, 593 }, { 41, 593 }, { 42, 593 }, { 43, 593 }, { 44, 593 }, { 45, 593 }, { 46, 593 }, { 47, 593 }, { 48, 593 }, { 49, 593 }, { 50, 593 }, { 51, 593 }, { 52, 593 }, { 53, 593 }, { 54, 593 }, { 55, 593 }, { 56, 593 }, { 57, 593 }, { 58, 593 }, { 59, 593 }, { 60, 593 }, { 61, 593 }, { 62, 593 }, { 63, 593 }, { 64, 593 }, { 65, 593 }, { 66, 593 }, { 67, 593 }, { 68, 593 }, { 69, 593 }, { 70, 593 }, { 71, 593 }, { 72, 593 }, { 73, 593 }, { 74, 593 }, { 75, 593 }, { 76, 593 }, { 77, 593 }, { 78, 593 }, { 79, 593 }, { 80, 593 }, { 81, 593 }, { 82, 593 }, { 83, 593 }, { 84, 593 }, { 85, 593 }, { 86, 593 }, { 87, 593 }, { 88, 593 }, { 89, 593 }, { 90, 593 }, { 91, 593 }, { 92, 637 }, { 93, 593 }, { 94, 593 }, { 95, 593 }, { 96, 593 }, { 97, 593 }, { 98, 593 }, { 99, 593 }, { 100, 593 }, { 101, 593 }, { 102, 593 }, { 103, 593 }, { 104, 593 }, { 105, 593 }, { 106, 593 }, { 107, 593 }, { 108, 593 }, { 109, 593 }, { 110, 593 }, { 111, 593 }, { 112, 593 }, { 113, 593 }, { 114, 593 }, { 115, 593 }, { 116, 593 }, { 117, 593 }, { 118, 593 }, { 119, 593 }, { 120, 593 }, { 121, 593 }, { 122, 593 }, { 123, 593 }, { 124, 593 }, { 125, 593 }, { 126, 593 }, { 127, 593 }, { 128, 593 }, { 129, 593 }, { 130, 593 }, { 131, 593 }, { 132, 593 }, { 133, 593 }, { 134, 593 }, { 135, 593 }, { 136, 593 }, { 137, 593 }, { 138, 593 }, { 139, 593 }, { 140, 593 }, { 141, 593 }, { 142, 593 }, { 143, 593 }, { 144, 593 }, { 145, 593 }, { 146, 593 }, { 147, 593 }, { 148, 593 }, { 149, 593 }, { 150, 593 }, { 151, 593 }, { 152, 593 }, { 153, 593 }, { 154, 593 }, { 155, 593 }, { 156, 593 }, { 157, 593 }, { 158, 593 }, { 159, 593 }, { 160, 593 }, { 161, 593 }, { 162, 593 }, { 163, 593 }, { 164, 593 }, { 165, 593 }, { 166, 593 }, { 167, 593 }, { 168, 593 }, { 169, 593 }, { 170, 593 }, { 171, 593 }, { 172, 593 }, { 173, 593 }, { 174, 593 }, { 175, 593 }, { 176, 593 }, { 177, 593 }, { 178, 593 }, { 179, 593 }, { 180, 593 }, { 181, 593 }, { 182, 593 }, { 183, 593 }, { 184, 593 }, { 185, 593 }, { 186, 593 }, { 187, 593 }, { 188, 593 }, { 189, 593 }, { 190, 593 }, { 191, 593 }, { 192, 593 }, { 193, 593 }, { 194, 593 }, { 195, 593 }, { 196, 593 }, { 197, 593 }, { 198, 593 }, { 199, 593 }, { 200, 593 }, { 201, 593 }, { 202, 593 }, { 203, 593 }, { 204, 593 }, { 205, 593 }, { 206, 593 }, { 207, 593 }, { 208, 593 }, { 209, 593 }, { 210, 593 }, { 211, 593 }, { 212, 593 }, { 213, 593 }, { 214, 593 }, { 215, 593 }, { 216, 593 }, { 217, 593 }, { 218, 593 }, { 219, 593 }, { 220, 593 }, { 221, 593 }, { 222, 593 }, { 223, 593 }, { 224, 593 }, { 225, 593 }, { 226, 593 }, { 227, 593 }, { 228, 593 }, { 229, 593 }, { 230, 593 }, { 231, 593 }, { 232, 593 }, { 233, 593 }, { 234, 593 }, { 235, 593 }, { 236, 593 }, { 237, 593 }, { 238, 593 }, { 239, 593 }, { 240, 593 }, { 241, 593 }, { 242, 593 }, { 243, 593 }, { 244, 593 }, { 245, 593 }, { 246, 593 }, { 247, 593 }, { 248, 593 }, { 249, 593 }, { 250, 593 }, { 251, 593 }, { 252, 593 }, { 253, 593 }, { 254, 593 }, { 255, 593 }, { 256, 593 }, { 0, 0 }, { 0,11486 }, { 1, 335 }, { 2, 335 }, { 3, 335 }, { 4, 335 }, { 5, 335 }, { 6, 335 }, { 7, 335 }, { 8, 335 }, { 9, 335 }, { 10, 339 }, { 11, 335 }, { 12, 335 }, { 13, 335 }, { 14, 335 }, { 15, 335 }, { 16, 335 }, { 17, 335 }, { 18, 335 }, { 19, 335 }, { 20, 335 }, { 21, 335 }, { 22, 335 }, { 23, 335 }, { 24, 335 }, { 25, 335 }, { 26, 335 }, { 27, 335 }, { 28, 335 }, { 29, 335 }, { 30, 335 }, { 31, 335 }, { 32, 335 }, { 33, 335 }, { 34, 335 }, { 35, 335 }, { 36, 335 }, { 37, 335 }, { 38, 335 }, { 39, 335 }, { 40, 335 }, { 41, 335 }, { 42, 335 }, { 43, 335 }, { 44, 335 }, { 45, 335 }, { 46, 335 }, { 47, 335 }, { 48, 335 }, { 49, 335 }, { 50, 335 }, { 51, 335 }, { 52, 335 }, { 53, 335 }, { 54, 335 }, { 55, 335 }, { 56, 335 }, { 57, 335 }, { 58, 335 }, { 59, 335 }, { 60, 335 }, { 61, 335 }, { 62, 335 }, { 63, 335 }, { 64, 335 }, { 65, 335 }, { 66, 335 }, { 67, 335 }, { 68, 335 }, { 69, 335 }, { 70, 335 }, { 71, 335 }, { 72, 335 }, { 73, 335 }, { 74, 335 }, { 75, 335 }, { 76, 335 }, { 77, 335 }, { 78, 335 }, { 79, 335 }, { 80, 335 }, { 81, 335 }, { 82, 335 }, { 83, 335 }, { 84, 335 }, { 85, 335 }, { 86, 335 }, { 87, 335 }, { 88, 335 }, { 89, 335 }, { 90, 335 }, { 91, 335 }, { 92, 379 }, { 93, 335 }, { 94, 335 }, { 95, 335 }, { 96, 335 }, { 97, 335 }, { 98, 335 }, { 99, 335 }, { 100, 335 }, { 101, 335 }, { 102, 335 }, { 103, 335 }, { 104, 335 }, { 105, 335 }, { 106, 335 }, { 107, 335 }, { 108, 335 }, { 109, 335 }, { 110, 335 }, { 111, 335 }, { 112, 335 }, { 113, 335 }, { 114, 335 }, { 115, 335 }, { 116, 335 }, { 117, 335 }, { 118, 335 }, { 119, 335 }, { 120, 335 }, { 121, 335 }, { 122, 335 }, { 123, 335 }, { 124, 335 }, { 125, 335 }, { 126, 335 }, { 127, 335 }, { 128, 335 }, { 129, 335 }, { 130, 335 }, { 131, 335 }, { 132, 335 }, { 133, 335 }, { 134, 335 }, { 135, 335 }, { 136, 335 }, { 137, 335 }, { 138, 335 }, { 139, 335 }, { 140, 335 }, { 141, 335 }, { 142, 335 }, { 143, 335 }, { 144, 335 }, { 145, 335 }, { 146, 335 }, { 147, 335 }, { 148, 335 }, { 149, 335 }, { 150, 335 }, { 151, 335 }, { 152, 335 }, { 153, 335 }, { 154, 335 }, { 155, 335 }, { 156, 335 }, { 157, 335 }, { 158, 335 }, { 159, 335 }, { 160, 335 }, { 161, 335 }, { 162, 335 }, { 163, 335 }, { 164, 335 }, { 165, 335 }, { 166, 335 }, { 167, 335 }, { 168, 335 }, { 169, 335 }, { 170, 335 }, { 171, 335 }, { 172, 335 }, { 173, 335 }, { 174, 335 }, { 175, 335 }, { 176, 335 }, { 177, 335 }, { 178, 335 }, { 179, 335 }, { 180, 335 }, { 181, 335 }, { 182, 335 }, { 183, 335 }, { 184, 335 }, { 185, 335 }, { 186, 335 }, { 187, 335 }, { 188, 335 }, { 189, 335 }, { 190, 335 }, { 191, 335 }, { 192, 335 }, { 193, 335 }, { 194, 335 }, { 195, 335 }, { 196, 335 }, { 197, 335 }, { 198, 335 }, { 199, 335 }, { 200, 335 }, { 201, 335 }, { 202, 335 }, { 203, 335 }, { 204, 335 }, { 205, 335 }, { 206, 335 }, { 207, 335 }, { 208, 335 }, { 209, 335 }, { 210, 335 }, { 211, 335 }, { 212, 335 }, { 213, 335 }, { 214, 335 }, { 215, 335 }, { 216, 335 }, { 217, 335 }, { 218, 335 }, { 219, 335 }, { 220, 335 }, { 221, 335 }, { 222, 335 }, { 223, 335 }, { 224, 335 }, { 225, 335 }, { 226, 335 }, { 227, 335 }, { 228, 335 }, { 229, 335 }, { 230, 335 }, { 231, 335 }, { 232, 335 }, { 233, 335 }, { 234, 335 }, { 235, 335 }, { 236, 335 }, { 237, 335 }, { 238, 335 }, { 239, 335 }, { 240, 335 }, { 241, 335 }, { 242, 335 }, { 243, 335 }, { 244, 335 }, { 245, 335 }, { 246, 335 }, { 247, 335 }, { 248, 335 }, { 249, 335 }, { 250, 335 }, { 251, 335 }, { 252, 335 }, { 253, 335 }, { 254, 335 }, { 255, 335 }, { 256, 335 }, { 0, 64 }, { 0,11228 }, { 0, 1 }, { 0,11226 }, { 0, 39 }, { 0,11224 }, { 0, 0 }, { 0, 1 }, { 0,11221 }, { 0, 55 }, { 0,11219 }, { 0, 0 }, { 9,5098 }, { 10,5098 }, { 0, 0 }, { 12,5098 }, { 13,5098 }, { 9,5093 }, { 10,5093 }, { 0, 0 }, { 12,5093 }, { 13,5093 }, { 0, 14 }, { 0,11206 }, { 0, 54 }, { 0,11204 }, { 0, 0 }, { 0, 54 }, { 0,11201 }, { 0, 17 }, { 0,11199 }, { 0, 0 }, { 0, 7 }, { 0,11196 }, { 0, 0 }, { 32,5098 }, { 0, 7 }, { 0,11192 }, { 0, 0 }, { 0, 0 }, { 32,5093 }, { 0, 41 }, { 0,11187 }, { 33,5346 }, { 0, 0 }, { 35,5346 }, { 0, 0 }, { 37,5346 }, { 38,5346 }, { 0, 55 }, { 0,11179 }, { 0, 0 }, { 42,5346 }, { 43,5346 }, { 0, 0 }, { 45,5346 }, { 0, 0 }, { 47,5346 }, { 0, 17 }, { 0,11170 }, { 0, 20 }, { 0,11168 }, { 0, 19 }, { 0,11166 }, { 0, 0 }, { 0, 17 }, { 0,11163 }, { 0, 42 }, { 0,11161 }, { 0, 0 }, { 60,5346 }, { 61,5357 }, { 62,5346 }, { 63,5346 }, { 64,5346 }, { 42, 348 }, { 34, 346 }, { 0, 26 }, { 0,11151 }, { 42,7050 }, { 47, 353 }, { 0, 27 }, { 0,11147 }, { 33,5306 }, { 0, 0 }, { 35,5306 }, { 58, 100 }, { 37,5306 }, { 38,5306 }, { 61, 102 }, { 0, 0 }, { 0, 0 }, { 42,5306 }, { 43,5306 }, { 0, 0 }, { 45,5306 }, { 0, 0 }, { 47,5306 }, { 39, 331 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 34, 320 }, { 0, 0 }, { 94,5346 }, { 39, 324 }, { 96,5346 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,5306 }, { 61,5306 }, { 62,5306 }, { 63,5306 }, { 64,5306 }, { 0, 64 }, { 0,11113 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 26 }, { 0,11107 }, { 0, 33 }, { 0,11105 }, { 0, 47 }, { 0,11103 }, { 0, 46 }, { 0,11101 }, { 0, 48 }, { 0,11099 }, { 0, 9 }, { 0,11097 }, { 0, 0 }, { 124,5346 }, { 0, 0 }, { 126,5346 }, { 0, 15 }, { 0,11091 }, { 0, 13 }, { 0,11089 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,5306 }, { 0, 0 }, { 96,5306 }, { 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,5268 }, { 49,5268 }, { 50,5268 }, { 51,5268 }, { 52,5268 }, { 53,5268 }, { 54,5268 }, { 55,5268 }, { 56,5268 }, { 57,5268 }, { 124,5306 }, { 0, 0 }, { 126,5306 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,5331 }, { 66,5331 }, { 67,5331 }, { 68,5331 }, { 69,5331 }, { 70,5331 }, { 71,5331 }, { 72,5331 }, { 73,5331 }, { 74,5331 }, { 75,5331 }, { 76,5331 }, { 77,5331 }, { 78,5331 }, { 79,5331 }, { 80,5331 }, { 81,5331 }, { 82,5331 }, { 83,5331 }, { 84,5331 }, { 85,5331 }, { 86,5331 }, { 87,5331 }, { 88,5331 }, { 89,5331 }, { 90,5331 }, { 85,8881 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,5331 }, { 0, 0 }, { 97,5331 }, { 98,5331 }, { 99,5331 }, { 100,5331 }, { 101,5331 }, { 102,5331 }, { 103,5331 }, { 104,5331 }, { 105,5331 }, { 106,5331 }, { 107,5331 }, { 108,5331 }, { 109,5331 }, { 110,5331 }, { 111,5331 }, { 112,5331 }, { 113,5331 }, { 114,5331 }, { 115,5331 }, { 116,5331 }, { 117,5331 }, { 118,5331 }, { 119,5331 }, { 120,5331 }, { 121,5331 }, { 122,5331 }, { 117,8904 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,5331 }, { 129,5331 }, { 130,5331 }, { 131,5331 }, { 132,5331 }, { 133,5331 }, { 134,5331 }, { 135,5331 }, { 136,5331 }, { 137,5331 }, { 138,5331 }, { 139,5331 }, { 140,5331 }, { 141,5331 }, { 142,5331 }, { 143,5331 }, { 144,5331 }, { 145,5331 }, { 146,5331 }, { 147,5331 }, { 148,5331 }, { 149,5331 }, { 150,5331 }, { 151,5331 }, { 152,5331 }, { 153,5331 }, { 154,5331 }, { 155,5331 }, { 156,5331 }, { 157,5331 }, { 158,5331 }, { 159,5331 }, { 160,5331 }, { 161,5331 }, { 162,5331 }, { 163,5331 }, { 164,5331 }, { 165,5331 }, { 166,5331 }, { 167,5331 }, { 168,5331 }, { 169,5331 }, { 170,5331 }, { 171,5331 }, { 172,5331 }, { 173,5331 }, { 174,5331 }, { 175,5331 }, { 176,5331 }, { 177,5331 }, { 178,5331 }, { 179,5331 }, { 180,5331 }, { 181,5331 }, { 182,5331 }, { 183,5331 }, { 184,5331 }, { 185,5331 }, { 186,5331 }, { 187,5331 }, { 188,5331 }, { 189,5331 }, { 190,5331 }, { 191,5331 }, { 192,5331 }, { 193,5331 }, { 194,5331 }, { 195,5331 }, { 196,5331 }, { 197,5331 }, { 198,5331 }, { 199,5331 }, { 200,5331 }, { 201,5331 }, { 202,5331 }, { 203,5331 }, { 204,5331 }, { 205,5331 }, { 206,5331 }, { 207,5331 }, { 208,5331 }, { 209,5331 }, { 210,5331 }, { 211,5331 }, { 212,5331 }, { 213,5331 }, { 214,5331 }, { 215,5331 }, { 216,5331 }, { 217,5331 }, { 218,5331 }, { 219,5331 }, { 220,5331 }, { 221,5331 }, { 222,5331 }, { 223,5331 }, { 224,5331 }, { 225,5331 }, { 226,5331 }, { 227,5331 }, { 228,5331 }, { 229,5331 }, { 230,5331 }, { 231,5331 }, { 232,5331 }, { 233,5331 }, { 234,5331 }, { 235,5331 }, { 236,5331 }, { 237,5331 }, { 238,5331 }, { 239,5331 }, { 240,5331 }, { 241,5331 }, { 242,5331 }, { 243,5331 }, { 244,5331 }, { 245,5331 }, { 246,5331 }, { 247,5331 }, { 248,5331 }, { 249,5331 }, { 250,5331 }, { 251,5331 }, { 252,5331 }, { 253,5331 }, { 254,5331 }, { 255,5331 }, { 0, 54 }, { 0,10856 }, { 0, 45 }, { 0,10854 }, { 0, 12 }, { 0,10852 }, { 0, 0 }, { 0, 0 }, { 0, 8 }, { 0,10848 }, { 0, 0 }, { 0, 54 }, { 0,10845 }, { 0, 5 }, { 0,10843 }, { 0, 43 }, { 0,10841 }, { 0, 21 }, { 0,10839 }, { 0, 19 }, { 0,10837 }, { 0, 18 }, { 0,10835 }, { 0, 29 }, { 0,10833 }, { 0, 35 }, { 0,10831 }, { 0, 59 }, { 0,10829 }, { 0, 0 }, { 0, 54 }, { 0,10826 }, { 0, 40 }, { 0,10824 }, { 33,4983 }, { 0, 0 }, { 35,4983 }, { 34, 30 }, { 37,4983 }, { 38,4983 }, { 0, 16 }, { 0,10816 }, { 39, 38 }, { 42,4983 }, { 43,4983 }, { 33,4972 }, { 45,4983 }, { 35,4972 }, { 47,4983 }, { 37,4972 }, { 38,4972 }, { 42, 0 }, { 0, 30 }, { 0,10804 }, { 42,4972 }, { 43,4972 }, { 47, 5 }, { 45,5320 }, { 0, 0 }, { 47,4972 }, { 0, 0 }, { 60,4983 }, { 61,4983 }, { 62,4983 }, { 63,4983 }, { 64,4983 }, { 0, 31 }, { 0,10790 }, { 0, 24 }, { 0,10788 }, { 0, 25 }, { 0,10786 }, { 60,4972 }, { 61,4972 }, { 62,4972 }, { 63,4972 }, { 64,4972 }, { 46,-277 }, { 0, 0 }, { 48,5559 }, { 49,5559 }, { 50,5559 }, { 51,5559 }, { 52,5559 }, { 53,5559 }, { 54,5559 }, { 55,5559 }, { 56,5559 }, { 57,5559 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,4983 }, { 0, 0 }, { 96,4983 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 54 }, { 0,10755 }, { 0, 57 }, { 0,10753 }, { 0, 0 }, { 94,4972 }, { 0, 0 }, { 96,4972 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,4983 }, { 0, 0 }, { 126,4983 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,4882 }, { 124,4972 }, { 35,4882 }, { 126,4972 }, { 37,4882 }, { 38,4882 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,5513 }, { 43,4882 }, { 0, 0 }, { 45,4882 }, { 0, 0 }, { 47,4882 }, { 46,5513 }, { 0, 0 }, { 48,5577 }, { 49,5577 }, { 50,5577 }, { 51,5577 }, { 52,5577 }, { 53,5577 }, { 54,5577 }, { 55,5577 }, { 56,5577 }, { 57,5577 }, { 60,4882 }, { 61,4882 }, { 62,4882 }, { 63,4882 }, { 64,4882 }, { 0, 0 }, { 0, 54 }, { 0,10688 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 69,5599 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 54 }, { 0,10677 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,4882 }, { 0, 0 }, { 96,4882 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,4815 }, { 0, 0 }, { 35,4815 }, { 101,5599 }, { 37,4815 }, { 38,4815 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,4815 }, { 43,4815 }, { 33,4804 }, { 45,4815 }, { 35,4804 }, { 47,4815 }, { 37,4804 }, { 38,4804 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,4804 }, { 43,4804 }, { 0, 0 }, { 45,4804 }, { 124,4882 }, { 47,4804 }, { 126,4882 }, { 60,4815 }, { 61,5574 }, { 62,5615 }, { 63,4815 }, { 64,4815 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,4804 }, { 61,4804 }, { 62,5671 }, { 63,4804 }, { 64,4804 }, { 0, 0 }, { 0, 54 }, { 0,10610 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,4815 }, { 0, 0 }, { 96,4815 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,4804 }, { 0, 0 }, { 96,4804 }, { 0, 0 }, { 0, 63 }, { 0,10578 }, { 33,4737 }, { 0, 0 }, { 35,4737 }, { 0, 0 }, { 37,4737 }, { 38,4737 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,4737 }, { 43,4737 }, { 0, 0 }, { 45,4737 }, { 124,4815 }, { 47,4737 }, { 126,4815 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,4804 }, { 0, 0 }, { 126,4804 }, { 60,4737 }, { 61,5615 }, { 62,4737 }, { 63,4737 }, { 64,4737 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,5663 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,5663 }, { 49,5663 }, { 50,5663 }, { 51,5663 }, { 52,5663 }, { 53,5663 }, { 54,5663 }, { 55,5663 }, { 56,5663 }, { 57,5663 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,4737 }, { 0, 0 }, { 96,4737 }, { 65,5663 }, { 66,5663 }, { 67,5663 }, { 68,5663 }, { 69,5663 }, { 70,5663 }, { 71,5663 }, { 72,5663 }, { 73,5663 }, { 74,5663 }, { 75,5663 }, { 76,5663 }, { 77,5663 }, { 78,5663 }, { 79,5663 }, { 80,5663 }, { 81,5663 }, { 82,5663 }, { 83,5663 }, { 84,5663 }, { 85,5663 }, { 86,5663 }, { 87,5663 }, { 88,5663 }, { 89,5663 }, { 90,5663 }, { 0, 0 }, { 124,4737 }, { 0, 0 }, { 126,4737 }, { 95,5663 }, { 0, 0 }, { 97,5663 }, { 98,5663 }, { 99,5663 }, { 100,5663 }, { 101,5663 }, { 102,5663 }, { 103,5663 }, { 104,5663 }, { 105,5663 }, { 106,5663 }, { 107,5663 }, { 108,5663 }, { 109,5663 }, { 110,5663 }, { 111,5663 }, { 112,5663 }, { 113,5663 }, { 114,5663 }, { 115,5663 }, { 116,5663 }, { 117,5663 }, { 118,5663 }, { 119,5663 }, { 120,5663 }, { 121,5663 }, { 122,5663 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,5663 }, { 129,5663 }, { 130,5663 }, { 131,5663 }, { 132,5663 }, { 133,5663 }, { 134,5663 }, { 135,5663 }, { 136,5663 }, { 137,5663 }, { 138,5663 }, { 139,5663 }, { 140,5663 }, { 141,5663 }, { 142,5663 }, { 143,5663 }, { 144,5663 }, { 145,5663 }, { 146,5663 }, { 147,5663 }, { 148,5663 }, { 149,5663 }, { 150,5663 }, { 151,5663 }, { 152,5663 }, { 153,5663 }, { 154,5663 }, { 155,5663 }, { 156,5663 }, { 157,5663 }, { 158,5663 }, { 159,5663 }, { 160,5663 }, { 161,5663 }, { 162,5663 }, { 163,5663 }, { 164,5663 }, { 165,5663 }, { 166,5663 }, { 167,5663 }, { 168,5663 }, { 169,5663 }, { 170,5663 }, { 171,5663 }, { 172,5663 }, { 173,5663 }, { 174,5663 }, { 175,5663 }, { 176,5663 }, { 177,5663 }, { 178,5663 }, { 179,5663 }, { 180,5663 }, { 181,5663 }, { 182,5663 }, { 183,5663 }, { 184,5663 }, { 185,5663 }, { 186,5663 }, { 187,5663 }, { 188,5663 }, { 189,5663 }, { 190,5663 }, { 191,5663 }, { 192,5663 }, { 193,5663 }, { 194,5663 }, { 195,5663 }, { 196,5663 }, { 197,5663 }, { 198,5663 }, { 199,5663 }, { 200,5663 }, { 201,5663 }, { 202,5663 }, { 203,5663 }, { 204,5663 }, { 205,5663 }, { 206,5663 }, { 207,5663 }, { 208,5663 }, { 209,5663 }, { 210,5663 }, { 211,5663 }, { 212,5663 }, { 213,5663 }, { 214,5663 }, { 215,5663 }, { 216,5663 }, { 217,5663 }, { 218,5663 }, { 219,5663 }, { 220,5663 }, { 221,5663 }, { 222,5663 }, { 223,5663 }, { 224,5663 }, { 225,5663 }, { 226,5663 }, { 227,5663 }, { 228,5663 }, { 229,5663 }, { 230,5663 }, { 231,5663 }, { 232,5663 }, { 233,5663 }, { 234,5663 }, { 235,5663 }, { 236,5663 }, { 237,5663 }, { 238,5663 }, { 239,5663 }, { 240,5663 }, { 241,5663 }, { 242,5663 }, { 243,5663 }, { 244,5663 }, { 245,5663 }, { 246,5663 }, { 247,5663 }, { 248,5663 }, { 249,5663 }, { 250,5663 }, { 251,5663 }, { 252,5663 }, { 253,5663 }, { 254,5663 }, { 255,5663 }, { 0, 63 }, { 0,10321 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,5406 }, { 0, 0 }, { 0, 0 }, { 39,-776 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,5406 }, { 49,5406 }, { 50,5406 }, { 51,5406 }, { 52,5406 }, { 53,5406 }, { 54,5406 }, { 55,5406 }, { 56,5406 }, { 57,5406 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,5406 }, { 66,5406 }, { 67,5406 }, { 68,5406 }, { 69,5406 }, { 70,5406 }, { 71,5406 }, { 72,5406 }, { 73,5406 }, { 74,5406 }, { 75,5406 }, { 76,5406 }, { 77,5406 }, { 78,5406 }, { 79,5406 }, { 80,5406 }, { 81,5406 }, { 82,5406 }, { 83,5406 }, { 84,5406 }, { 85,5406 }, { 86,5406 }, { 87,5406 }, { 88,5406 }, { 89,5406 }, { 90,5406 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,5406 }, { 0, 0 }, { 97,5406 }, { 98,5406 }, { 99,5406 }, { 100,5406 }, { 101,5406 }, { 102,5406 }, { 103,5406 }, { 104,5406 }, { 105,5406 }, { 106,5406 }, { 107,5406 }, { 108,5406 }, { 109,5406 }, { 110,5406 }, { 111,5406 }, { 112,5406 }, { 113,5406 }, { 114,5406 }, { 115,5406 }, { 116,5406 }, { 117,5406 }, { 118,5406 }, { 119,5406 }, { 120,5406 }, { 121,5406 }, { 122,5406 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,5406 }, { 129,5406 }, { 130,5406 }, { 131,5406 }, { 132,5406 }, { 133,5406 }, { 134,5406 }, { 135,5406 }, { 136,5406 }, { 137,5406 }, { 138,5406 }, { 139,5406 }, { 140,5406 }, { 141,5406 }, { 142,5406 }, { 143,5406 }, { 144,5406 }, { 145,5406 }, { 146,5406 }, { 147,5406 }, { 148,5406 }, { 149,5406 }, { 150,5406 }, { 151,5406 }, { 152,5406 }, { 153,5406 }, { 154,5406 }, { 155,5406 }, { 156,5406 }, { 157,5406 }, { 158,5406 }, { 159,5406 }, { 160,5406 }, { 161,5406 }, { 162,5406 }, { 163,5406 }, { 164,5406 }, { 165,5406 }, { 166,5406 }, { 167,5406 }, { 168,5406 }, { 169,5406 }, { 170,5406 }, { 171,5406 }, { 172,5406 }, { 173,5406 }, { 174,5406 }, { 175,5406 }, { 176,5406 }, { 177,5406 }, { 178,5406 }, { 179,5406 }, { 180,5406 }, { 181,5406 }, { 182,5406 }, { 183,5406 }, { 184,5406 }, { 185,5406 }, { 186,5406 }, { 187,5406 }, { 188,5406 }, { 189,5406 }, { 190,5406 }, { 191,5406 }, { 192,5406 }, { 193,5406 }, { 194,5406 }, { 195,5406 }, { 196,5406 }, { 197,5406 }, { 198,5406 }, { 199,5406 }, { 200,5406 }, { 201,5406 }, { 202,5406 }, { 203,5406 }, { 204,5406 }, { 205,5406 }, { 206,5406 }, { 207,5406 }, { 208,5406 }, { 209,5406 }, { 210,5406 }, { 211,5406 }, { 212,5406 }, { 213,5406 }, { 214,5406 }, { 215,5406 }, { 216,5406 }, { 217,5406 }, { 218,5406 }, { 219,5406 }, { 220,5406 }, { 221,5406 }, { 222,5406 }, { 223,5406 }, { 224,5406 }, { 225,5406 }, { 226,5406 }, { 227,5406 }, { 228,5406 }, { 229,5406 }, { 230,5406 }, { 231,5406 }, { 232,5406 }, { 233,5406 }, { 234,5406 }, { 235,5406 }, { 236,5406 }, { 237,5406 }, { 238,5406 }, { 239,5406 }, { 240,5406 }, { 241,5406 }, { 242,5406 }, { 243,5406 }, { 244,5406 }, { 245,5406 }, { 246,5406 }, { 247,5406 }, { 248,5406 }, { 249,5406 }, { 250,5406 }, { 251,5406 }, { 252,5406 }, { 253,5406 }, { 254,5406 }, { 255,5406 }, { 0, 63 }, { 0,10064 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,5149 }, { 0, 0 }, { 0, 0 }, { 39,-1027 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,5149 }, { 49,5149 }, { 50,5149 }, { 51,5149 }, { 52,5149 }, { 53,5149 }, { 54,5149 }, { 55,5149 }, { 56,5149 }, { 57,5149 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,5149 }, { 66,5149 }, { 67,5149 }, { 68,5149 }, { 69,5149 }, { 70,5149 }, { 71,5149 }, { 72,5149 }, { 73,5149 }, { 74,5149 }, { 75,5149 }, { 76,5149 }, { 77,5149 }, { 78,5149 }, { 79,5149 }, { 80,5149 }, { 81,5149 }, { 82,5149 }, { 83,5149 }, { 84,5149 }, { 85,5149 }, { 86,5149 }, { 87,5149 }, { 88,5149 }, { 89,5149 }, { 90,5149 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,5149 }, { 0, 0 }, { 97,5149 }, { 98,5149 }, { 99,5149 }, { 100,5149 }, { 101,5149 }, { 102,5149 }, { 103,5149 }, { 104,5149 }, { 105,5149 }, { 106,5149 }, { 107,5149 }, { 108,5149 }, { 109,5149 }, { 110,5149 }, { 111,5149 }, { 112,5149 }, { 113,5149 }, { 114,5149 }, { 115,5149 }, { 116,5149 }, { 117,5149 }, { 118,5149 }, { 119,5149 }, { 120,5149 }, { 121,5149 }, { 122,5149 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,5149 }, { 129,5149 }, { 130,5149 }, { 131,5149 }, { 132,5149 }, { 133,5149 }, { 134,5149 }, { 135,5149 }, { 136,5149 }, { 137,5149 }, { 138,5149 }, { 139,5149 }, { 140,5149 }, { 141,5149 }, { 142,5149 }, { 143,5149 }, { 144,5149 }, { 145,5149 }, { 146,5149 }, { 147,5149 }, { 148,5149 }, { 149,5149 }, { 150,5149 }, { 151,5149 }, { 152,5149 }, { 153,5149 }, { 154,5149 }, { 155,5149 }, { 156,5149 }, { 157,5149 }, { 158,5149 }, { 159,5149 }, { 160,5149 }, { 161,5149 }, { 162,5149 }, { 163,5149 }, { 164,5149 }, { 165,5149 }, { 166,5149 }, { 167,5149 }, { 168,5149 }, { 169,5149 }, { 170,5149 }, { 171,5149 }, { 172,5149 }, { 173,5149 }, { 174,5149 }, { 175,5149 }, { 176,5149 }, { 177,5149 }, { 178,5149 }, { 179,5149 }, { 180,5149 }, { 181,5149 }, { 182,5149 }, { 183,5149 }, { 184,5149 }, { 185,5149 }, { 186,5149 }, { 187,5149 }, { 188,5149 }, { 189,5149 }, { 190,5149 }, { 191,5149 }, { 192,5149 }, { 193,5149 }, { 194,5149 }, { 195,5149 }, { 196,5149 }, { 197,5149 }, { 198,5149 }, { 199,5149 }, { 200,5149 }, { 201,5149 }, { 202,5149 }, { 203,5149 }, { 204,5149 }, { 205,5149 }, { 206,5149 }, { 207,5149 }, { 208,5149 }, { 209,5149 }, { 210,5149 }, { 211,5149 }, { 212,5149 }, { 213,5149 }, { 214,5149 }, { 215,5149 }, { 216,5149 }, { 217,5149 }, { 218,5149 }, { 219,5149 }, { 220,5149 }, { 221,5149 }, { 222,5149 }, { 223,5149 }, { 224,5149 }, { 225,5149 }, { 226,5149 }, { 227,5149 }, { 228,5149 }, { 229,5149 }, { 230,5149 }, { 231,5149 }, { 232,5149 }, { 233,5149 }, { 234,5149 }, { 235,5149 }, { 236,5149 }, { 237,5149 }, { 238,5149 }, { 239,5149 }, { 240,5149 }, { 241,5149 }, { 242,5149 }, { 243,5149 }, { 244,5149 }, { 245,5149 }, { 246,5149 }, { 247,5149 }, { 248,5149 }, { 249,5149 }, { 250,5149 }, { 251,5149 }, { 252,5149 }, { 253,5149 }, { 254,5149 }, { 255,5149 }, { 0, 63 }, { 0,9807 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,4892 }, { 0, 0 }, { 0, 0 }, { 39,-1282 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,4892 }, { 49,4892 }, { 50,4892 }, { 51,4892 }, { 52,4892 }, { 53,4892 }, { 54,4892 }, { 55,4892 }, { 56,4892 }, { 57,4892 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,4892 }, { 66,4892 }, { 67,4892 }, { 68,4892 }, { 69,4892 }, { 70,4892 }, { 71,4892 }, { 72,4892 }, { 73,4892 }, { 74,4892 }, { 75,4892 }, { 76,4892 }, { 77,4892 }, { 78,4892 }, { 79,4892 }, { 80,4892 }, { 81,4892 }, { 82,4892 }, { 83,4892 }, { 84,4892 }, { 85,4892 }, { 86,4892 }, { 87,4892 }, { 88,4892 }, { 89,4892 }, { 90,4892 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4892 }, { 0, 0 }, { 97,4892 }, { 98,4892 }, { 99,4892 }, { 100,4892 }, { 101,4892 }, { 102,4892 }, { 103,4892 }, { 104,4892 }, { 105,4892 }, { 106,4892 }, { 107,4892 }, { 108,4892 }, { 109,4892 }, { 110,4892 }, { 111,4892 }, { 112,4892 }, { 113,4892 }, { 114,4892 }, { 115,4892 }, { 116,4892 }, { 117,4892 }, { 118,4892 }, { 119,4892 }, { 120,4892 }, { 121,4892 }, { 122,4892 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,4892 }, { 129,4892 }, { 130,4892 }, { 131,4892 }, { 132,4892 }, { 133,4892 }, { 134,4892 }, { 135,4892 }, { 136,4892 }, { 137,4892 }, { 138,4892 }, { 139,4892 }, { 140,4892 }, { 141,4892 }, { 142,4892 }, { 143,4892 }, { 144,4892 }, { 145,4892 }, { 146,4892 }, { 147,4892 }, { 148,4892 }, { 149,4892 }, { 150,4892 }, { 151,4892 }, { 152,4892 }, { 153,4892 }, { 154,4892 }, { 155,4892 }, { 156,4892 }, { 157,4892 }, { 158,4892 }, { 159,4892 }, { 160,4892 }, { 161,4892 }, { 162,4892 }, { 163,4892 }, { 164,4892 }, { 165,4892 }, { 166,4892 }, { 167,4892 }, { 168,4892 }, { 169,4892 }, { 170,4892 }, { 171,4892 }, { 172,4892 }, { 173,4892 }, { 174,4892 }, { 175,4892 }, { 176,4892 }, { 177,4892 }, { 178,4892 }, { 179,4892 }, { 180,4892 }, { 181,4892 }, { 182,4892 }, { 183,4892 }, { 184,4892 }, { 185,4892 }, { 186,4892 }, { 187,4892 }, { 188,4892 }, { 189,4892 }, { 190,4892 }, { 191,4892 }, { 192,4892 }, { 193,4892 }, { 194,4892 }, { 195,4892 }, { 196,4892 }, { 197,4892 }, { 198,4892 }, { 199,4892 }, { 200,4892 }, { 201,4892 }, { 202,4892 }, { 203,4892 }, { 204,4892 }, { 205,4892 }, { 206,4892 }, { 207,4892 }, { 208,4892 }, { 209,4892 }, { 210,4892 }, { 211,4892 }, { 212,4892 }, { 213,4892 }, { 214,4892 }, { 215,4892 }, { 216,4892 }, { 217,4892 }, { 218,4892 }, { 219,4892 }, { 220,4892 }, { 221,4892 }, { 222,4892 }, { 223,4892 }, { 224,4892 }, { 225,4892 }, { 226,4892 }, { 227,4892 }, { 228,4892 }, { 229,4892 }, { 230,4892 }, { 231,4892 }, { 232,4892 }, { 233,4892 }, { 234,4892 }, { 235,4892 }, { 236,4892 }, { 237,4892 }, { 238,4892 }, { 239,4892 }, { 240,4892 }, { 241,4892 }, { 242,4892 }, { 243,4892 }, { 244,4892 }, { 245,4892 }, { 246,4892 }, { 247,4892 }, { 248,4892 }, { 249,4892 }, { 250,4892 }, { 251,4892 }, { 252,4892 }, { 253,4892 }, { 254,4892 }, { 255,4892 }, { 0, 63 }, { 0,9550 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,4635 }, { 0, 0 }, { 38,-1304 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,4635 }, { 49,4635 }, { 50,4635 }, { 51,4635 }, { 52,4635 }, { 53,4635 }, { 54,4635 }, { 55,4635 }, { 56,4635 }, { 57,4635 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,4635 }, { 66,4635 }, { 67,4635 }, { 68,4635 }, { 69,4635 }, { 70,4635 }, { 71,4635 }, { 72,4635 }, { 73,4635 }, { 74,4635 }, { 75,4635 }, { 76,4635 }, { 77,4635 }, { 78,4635 }, { 79,4635 }, { 80,4635 }, { 81,4635 }, { 82,4635 }, { 83,4635 }, { 84,4635 }, { 85,4635 }, { 86,4635 }, { 87,4635 }, { 88,4635 }, { 89,4635 }, { 90,4635 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4635 }, { 0, 0 }, { 97,4635 }, { 98,4635 }, { 99,4635 }, { 100,4635 }, { 101,4635 }, { 102,4635 }, { 103,4635 }, { 104,4635 }, { 105,4635 }, { 106,4635 }, { 107,4635 }, { 108,4635 }, { 109,4635 }, { 110,4635 }, { 111,4635 }, { 112,4635 }, { 113,4635 }, { 114,4635 }, { 115,4635 }, { 116,4635 }, { 117,4635 }, { 118,4635 }, { 119,4635 }, { 120,4635 }, { 121,4635 }, { 122,4635 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,4635 }, { 129,4635 }, { 130,4635 }, { 131,4635 }, { 132,4635 }, { 133,4635 }, { 134,4635 }, { 135,4635 }, { 136,4635 }, { 137,4635 }, { 138,4635 }, { 139,4635 }, { 140,4635 }, { 141,4635 }, { 142,4635 }, { 143,4635 }, { 144,4635 }, { 145,4635 }, { 146,4635 }, { 147,4635 }, { 148,4635 }, { 149,4635 }, { 150,4635 }, { 151,4635 }, { 152,4635 }, { 153,4635 }, { 154,4635 }, { 155,4635 }, { 156,4635 }, { 157,4635 }, { 158,4635 }, { 159,4635 }, { 160,4635 }, { 161,4635 }, { 162,4635 }, { 163,4635 }, { 164,4635 }, { 165,4635 }, { 166,4635 }, { 167,4635 }, { 168,4635 }, { 169,4635 }, { 170,4635 }, { 171,4635 }, { 172,4635 }, { 173,4635 }, { 174,4635 }, { 175,4635 }, { 176,4635 }, { 177,4635 }, { 178,4635 }, { 179,4635 }, { 180,4635 }, { 181,4635 }, { 182,4635 }, { 183,4635 }, { 184,4635 }, { 185,4635 }, { 186,4635 }, { 187,4635 }, { 188,4635 }, { 189,4635 }, { 190,4635 }, { 191,4635 }, { 192,4635 }, { 193,4635 }, { 194,4635 }, { 195,4635 }, { 196,4635 }, { 197,4635 }, { 198,4635 }, { 199,4635 }, { 200,4635 }, { 201,4635 }, { 202,4635 }, { 203,4635 }, { 204,4635 }, { 205,4635 }, { 206,4635 }, { 207,4635 }, { 208,4635 }, { 209,4635 }, { 210,4635 }, { 211,4635 }, { 212,4635 }, { 213,4635 }, { 214,4635 }, { 215,4635 }, { 216,4635 }, { 217,4635 }, { 218,4635 }, { 219,4635 }, { 220,4635 }, { 221,4635 }, { 222,4635 }, { 223,4635 }, { 224,4635 }, { 225,4635 }, { 226,4635 }, { 227,4635 }, { 228,4635 }, { 229,4635 }, { 230,4635 }, { 231,4635 }, { 232,4635 }, { 233,4635 }, { 234,4635 }, { 235,4635 }, { 236,4635 }, { 237,4635 }, { 238,4635 }, { 239,4635 }, { 240,4635 }, { 241,4635 }, { 242,4635 }, { 243,4635 }, { 244,4635 }, { 245,4635 }, { 246,4635 }, { 247,4635 }, { 248,4635 }, { 249,4635 }, { 250,4635 }, { 251,4635 }, { 252,4635 }, { 253,4635 }, { 254,4635 }, { 255,4635 }, { 0, 63 }, { 0,9293 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,4378 }, { 0, 0 }, { 0, 0 }, { 39,-1559 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,4378 }, { 49,4378 }, { 50,4378 }, { 51,4378 }, { 52,4378 }, { 53,4378 }, { 54,4378 }, { 55,4378 }, { 56,4378 }, { 57,4378 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,4378 }, { 66,4378 }, { 67,4378 }, { 68,4378 }, { 69,4378 }, { 70,4378 }, { 71,4378 }, { 72,4378 }, { 73,4378 }, { 74,4378 }, { 75,4378 }, { 76,4378 }, { 77,4378 }, { 78,4378 }, { 79,4378 }, { 80,4378 }, { 81,4378 }, { 82,4378 }, { 83,4378 }, { 84,4378 }, { 85,4378 }, { 86,4378 }, { 87,4378 }, { 88,4378 }, { 89,4378 }, { 90,4378 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4378 }, { 0, 0 }, { 97,4378 }, { 98,4378 }, { 99,4378 }, { 100,4378 }, { 101,4378 }, { 102,4378 }, { 103,4378 }, { 104,4378 }, { 105,4378 }, { 106,4378 }, { 107,4378 }, { 108,4378 }, { 109,4378 }, { 110,4378 }, { 111,4378 }, { 112,4378 }, { 113,4378 }, { 114,4378 }, { 115,4378 }, { 116,4378 }, { 117,4378 }, { 118,4378 }, { 119,4378 }, { 120,4378 }, { 121,4378 }, { 122,4378 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,4378 }, { 129,4378 }, { 130,4378 }, { 131,4378 }, { 132,4378 }, { 133,4378 }, { 134,4378 }, { 135,4378 }, { 136,4378 }, { 137,4378 }, { 138,4378 }, { 139,4378 }, { 140,4378 }, { 141,4378 }, { 142,4378 }, { 143,4378 }, { 144,4378 }, { 145,4378 }, { 146,4378 }, { 147,4378 }, { 148,4378 }, { 149,4378 }, { 150,4378 }, { 151,4378 }, { 152,4378 }, { 153,4378 }, { 154,4378 }, { 155,4378 }, { 156,4378 }, { 157,4378 }, { 158,4378 }, { 159,4378 }, { 160,4378 }, { 161,4378 }, { 162,4378 }, { 163,4378 }, { 164,4378 }, { 165,4378 }, { 166,4378 }, { 167,4378 }, { 168,4378 }, { 169,4378 }, { 170,4378 }, { 171,4378 }, { 172,4378 }, { 173,4378 }, { 174,4378 }, { 175,4378 }, { 176,4378 }, { 177,4378 }, { 178,4378 }, { 179,4378 }, { 180,4378 }, { 181,4378 }, { 182,4378 }, { 183,4378 }, { 184,4378 }, { 185,4378 }, { 186,4378 }, { 187,4378 }, { 188,4378 }, { 189,4378 }, { 190,4378 }, { 191,4378 }, { 192,4378 }, { 193,4378 }, { 194,4378 }, { 195,4378 }, { 196,4378 }, { 197,4378 }, { 198,4378 }, { 199,4378 }, { 200,4378 }, { 201,4378 }, { 202,4378 }, { 203,4378 }, { 204,4378 }, { 205,4378 }, { 206,4378 }, { 207,4378 }, { 208,4378 }, { 209,4378 }, { 210,4378 }, { 211,4378 }, { 212,4378 }, { 213,4378 }, { 214,4378 }, { 215,4378 }, { 216,4378 }, { 217,4378 }, { 218,4378 }, { 219,4378 }, { 220,4378 }, { 221,4378 }, { 222,4378 }, { 223,4378 }, { 224,4378 }, { 225,4378 }, { 226,4378 }, { 227,4378 }, { 228,4378 }, { 229,4378 }, { 230,4378 }, { 231,4378 }, { 232,4378 }, { 233,4378 }, { 234,4378 }, { 235,4378 }, { 236,4378 }, { 237,4378 }, { 238,4378 }, { 239,4378 }, { 240,4378 }, { 241,4378 }, { 242,4378 }, { 243,4378 }, { 244,4378 }, { 245,4378 }, { 246,4378 }, { 247,4378 }, { 248,4378 }, { 249,4378 }, { 250,4378 }, { 251,4378 }, { 252,4378 }, { 253,4378 }, { 254,4378 }, { 255,4378 }, { 0, 11 }, { 0,9036 }, { 1,4378 }, { 2,4378 }, { 3,4378 }, { 4,4378 }, { 5,4378 }, { 6,4378 }, { 7,4378 }, { 8,4378 }, { 9,4378 }, { 10,4378 }, { 11,4378 }, { 12,4378 }, { 13,4378 }, { 14,4378 }, { 15,4378 }, { 16,4378 }, { 17,4378 }, { 18,4378 }, { 19,4378 }, { 20,4378 }, { 21,4378 }, { 22,4378 }, { 23,4378 }, { 24,4378 }, { 25,4378 }, { 26,4378 }, { 27,4378 }, { 28,4378 }, { 29,4378 }, { 30,4378 }, { 31,4378 }, { 32,4378 }, { 33,4378 }, { 34,4378 }, { 35,4378 }, { 36,4378 }, { 37,4378 }, { 38,4378 }, { 0, 0 }, { 40,4378 }, { 41,4378 }, { 42,4378 }, { 43,4378 }, { 44,4378 }, { 45,4378 }, { 46,4378 }, { 47,4378 }, { 48,4378 }, { 49,4378 }, { 50,4378 }, { 51,4378 }, { 52,4378 }, { 53,4378 }, { 54,4378 }, { 55,4378 }, { 56,4378 }, { 57,4378 }, { 58,4378 }, { 59,4378 }, { 60,4378 }, { 61,4378 }, { 62,4378 }, { 63,4378 }, { 64,4378 }, { 65,4378 }, { 66,4378 }, { 67,4378 }, { 68,4378 }, { 69,4378 }, { 70,4378 }, { 71,4378 }, { 72,4378 }, { 73,4378 }, { 74,4378 }, { 75,4378 }, { 76,4378 }, { 77,4378 }, { 78,4378 }, { 79,4378 }, { 80,4378 }, { 81,4378 }, { 82,4378 }, { 83,4378 }, { 84,4378 }, { 85,4378 }, { 86,4378 }, { 87,4378 }, { 88,4378 }, { 89,4378 }, { 90,4378 }, { 91,4378 }, { 92,4378 }, { 93,4378 }, { 94,4378 }, { 95,4378 }, { 96,4378 }, { 97,4378 }, { 98,4378 }, { 99,4378 }, { 100,4378 }, { 101,4378 }, { 102,4378 }, { 103,4378 }, { 104,4378 }, { 105,4378 }, { 106,4378 }, { 107,4378 }, { 108,4378 }, { 109,4378 }, { 110,4378 }, { 111,4378 }, { 112,4378 }, { 113,4378 }, { 114,4378 }, { 115,4378 }, { 116,4378 }, { 117,4378 }, { 118,4378 }, { 119,4378 }, { 120,4378 }, { 121,4378 }, { 122,4378 }, { 123,4378 }, { 124,4378 }, { 125,4378 }, { 126,4378 }, { 127,4378 }, { 128,4378 }, { 129,4378 }, { 130,4378 }, { 131,4378 }, { 132,4378 }, { 133,4378 }, { 134,4378 }, { 135,4378 }, { 136,4378 }, { 137,4378 }, { 138,4378 }, { 139,4378 }, { 140,4378 }, { 141,4378 }, { 142,4378 }, { 143,4378 }, { 144,4378 }, { 145,4378 }, { 146,4378 }, { 147,4378 }, { 148,4378 }, { 149,4378 }, { 150,4378 }, { 151,4378 }, { 152,4378 }, { 153,4378 }, { 154,4378 }, { 155,4378 }, { 156,4378 }, { 157,4378 }, { 158,4378 }, { 159,4378 }, { 160,4378 }, { 161,4378 }, { 162,4378 }, { 163,4378 }, { 164,4378 }, { 165,4378 }, { 166,4378 }, { 167,4378 }, { 168,4378 }, { 169,4378 }, { 170,4378 }, { 171,4378 }, { 172,4378 }, { 173,4378 }, { 174,4378 }, { 175,4378 }, { 176,4378 }, { 177,4378 }, { 178,4378 }, { 179,4378 }, { 180,4378 }, { 181,4378 }, { 182,4378 }, { 183,4378 }, { 184,4378 }, { 185,4378 }, { 186,4378 }, { 187,4378 }, { 188,4378 }, { 189,4378 }, { 190,4378 }, { 191,4378 }, { 192,4378 }, { 193,4378 }, { 194,4378 }, { 195,4378 }, { 196,4378 }, { 197,4378 }, { 198,4378 }, { 199,4378 }, { 200,4378 }, { 201,4378 }, { 202,4378 }, { 203,4378 }, { 204,4378 }, { 205,4378 }, { 206,4378 }, { 207,4378 }, { 208,4378 }, { 209,4378 }, { 210,4378 }, { 211,4378 }, { 212,4378 }, { 213,4378 }, { 214,4378 }, { 215,4378 }, { 216,4378 }, { 217,4378 }, { 218,4378 }, { 219,4378 }, { 220,4378 }, { 221,4378 }, { 222,4378 }, { 223,4378 }, { 224,4378 }, { 225,4378 }, { 226,4378 }, { 227,4378 }, { 228,4378 }, { 229,4378 }, { 230,4378 }, { 231,4378 }, { 232,4378 }, { 233,4378 }, { 234,4378 }, { 235,4378 }, { 236,4378 }, { 237,4378 }, { 238,4378 }, { 239,4378 }, { 240,4378 }, { 241,4378 }, { 242,4378 }, { 243,4378 }, { 244,4378 }, { 245,4378 }, { 246,4378 }, { 247,4378 }, { 248,4378 }, { 249,4378 }, { 250,4378 }, { 251,4378 }, { 252,4378 }, { 253,4378 }, { 254,4378 }, { 255,4378 }, { 256,4378 }, { 0, 6 }, { 0,8778 }, { 1,4378 }, { 2,4378 }, { 3,4378 }, { 4,4378 }, { 5,4378 }, { 6,4378 }, { 7,4378 }, { 8,4378 }, { 9,4378 }, { 10,4378 }, { 11,4378 }, { 12,4378 }, { 13,4378 }, { 14,4378 }, { 15,4378 }, { 16,4378 }, { 17,4378 }, { 18,4378 }, { 19,4378 }, { 20,4378 }, { 21,4378 }, { 22,4378 }, { 23,4378 }, { 24,4378 }, { 25,4378 }, { 26,4378 }, { 27,4378 }, { 28,4378 }, { 29,4378 }, { 30,4378 }, { 31,4378 }, { 32,4378 }, { 33,4378 }, { 34,4378 }, { 35,4378 }, { 36,4378 }, { 37,4378 }, { 38,4378 }, { 39,4378 }, { 40,4378 }, { 41,4378 }, { 0, 0 }, { 43,4378 }, { 44,4378 }, { 45,4378 }, { 46,4378 }, { 0, 0 }, { 48,4378 }, { 49,4378 }, { 50,4378 }, { 51,4378 }, { 52,4378 }, { 53,4378 }, { 54,4378 }, { 55,4378 }, { 56,4378 }, { 57,4378 }, { 58,4378 }, { 59,4378 }, { 60,4378 }, { 61,4378 }, { 62,4378 }, { 63,4378 }, { 64,4378 }, { 65,4378 }, { 66,4378 }, { 67,4378 }, { 68,4378 }, { 69,4378 }, { 70,4378 }, { 71,4378 }, { 72,4378 }, { 73,4378 }, { 74,4378 }, { 75,4378 }, { 76,4378 }, { 77,4378 }, { 78,4378 }, { 79,4378 }, { 80,4378 }, { 81,4378 }, { 82,4378 }, { 83,4378 }, { 84,4378 }, { 85,4378 }, { 86,4378 }, { 87,4378 }, { 88,4378 }, { 89,4378 }, { 90,4378 }, { 91,4378 }, { 92,4378 }, { 93,4378 }, { 94,4378 }, { 95,4378 }, { 96,4378 }, { 97,4378 }, { 98,4378 }, { 99,4378 }, { 100,4378 }, { 101,4378 }, { 102,4378 }, { 103,4378 }, { 104,4378 }, { 105,4378 }, { 106,4378 }, { 107,4378 }, { 108,4378 }, { 109,4378 }, { 110,4378 }, { 111,4378 }, { 112,4378 }, { 113,4378 }, { 114,4378 }, { 115,4378 }, { 116,4378 }, { 117,4378 }, { 118,4378 }, { 119,4378 }, { 120,4378 }, { 121,4378 }, { 122,4378 }, { 123,4378 }, { 124,4378 }, { 125,4378 }, { 126,4378 }, { 127,4378 }, { 128,4378 }, { 129,4378 }, { 130,4378 }, { 131,4378 }, { 132,4378 }, { 133,4378 }, { 134,4378 }, { 135,4378 }, { 136,4378 }, { 137,4378 }, { 138,4378 }, { 139,4378 }, { 140,4378 }, { 141,4378 }, { 142,4378 }, { 143,4378 }, { 144,4378 }, { 145,4378 }, { 146,4378 }, { 147,4378 }, { 148,4378 }, { 149,4378 }, { 150,4378 }, { 151,4378 }, { 152,4378 }, { 153,4378 }, { 154,4378 }, { 155,4378 }, { 156,4378 }, { 157,4378 }, { 158,4378 }, { 159,4378 }, { 160,4378 }, { 161,4378 }, { 162,4378 }, { 163,4378 }, { 164,4378 }, { 165,4378 }, { 166,4378 }, { 167,4378 }, { 168,4378 }, { 169,4378 }, { 170,4378 }, { 171,4378 }, { 172,4378 }, { 173,4378 }, { 174,4378 }, { 175,4378 }, { 176,4378 }, { 177,4378 }, { 178,4378 }, { 179,4378 }, { 180,4378 }, { 181,4378 }, { 182,4378 }, { 183,4378 }, { 184,4378 }, { 185,4378 }, { 186,4378 }, { 187,4378 }, { 188,4378 }, { 189,4378 }, { 190,4378 }, { 191,4378 }, { 192,4378 }, { 193,4378 }, { 194,4378 }, { 195,4378 }, { 196,4378 }, { 197,4378 }, { 198,4378 }, { 199,4378 }, { 200,4378 }, { 201,4378 }, { 202,4378 }, { 203,4378 }, { 204,4378 }, { 205,4378 }, { 206,4378 }, { 207,4378 }, { 208,4378 }, { 209,4378 }, { 210,4378 }, { 211,4378 }, { 212,4378 }, { 213,4378 }, { 214,4378 }, { 215,4378 }, { 216,4378 }, { 217,4378 }, { 218,4378 }, { 219,4378 }, { 220,4378 }, { 221,4378 }, { 222,4378 }, { 223,4378 }, { 224,4378 }, { 225,4378 }, { 226,4378 }, { 227,4378 }, { 228,4378 }, { 229,4378 }, { 230,4378 }, { 231,4378 }, { 232,4378 }, { 233,4378 }, { 234,4378 }, { 235,4378 }, { 236,4378 }, { 237,4378 }, { 238,4378 }, { 239,4378 }, { 240,4378 }, { 241,4378 }, { 242,4378 }, { 243,4378 }, { 244,4378 }, { 245,4378 }, { 246,4378 }, { 247,4378 }, { 248,4378 }, { 249,4378 }, { 250,4378 }, { 251,4378 }, { 252,4378 }, { 253,4378 }, { 254,4378 }, { 255,4378 }, { 256,4378 }, { 0, 6 }, { 0,8520 }, { 1,4120 }, { 2,4120 }, { 3,4120 }, { 4,4120 }, { 5,4120 }, { 6,4120 }, { 7,4120 }, { 8,4120 }, { 9,4120 }, { 10,4120 }, { 11,4120 }, { 12,4120 }, { 13,4120 }, { 14,4120 }, { 15,4120 }, { 16,4120 }, { 17,4120 }, { 18,4120 }, { 19,4120 }, { 20,4120 }, { 21,4120 }, { 22,4120 }, { 23,4120 }, { 24,4120 }, { 25,4120 }, { 26,4120 }, { 27,4120 }, { 28,4120 }, { 29,4120 }, { 30,4120 }, { 31,4120 }, { 32,4120 }, { 33,4120 }, { 34,4120 }, { 35,4120 }, { 36,4120 }, { 37,4120 }, { 38,4120 }, { 39,4120 }, { 40,4120 }, { 41,4120 }, { 0, 0 }, { 43,4120 }, { 44,4120 }, { 45,4120 }, { 46,4120 }, { 0, 0 }, { 48,4120 }, { 49,4120 }, { 50,4120 }, { 51,4120 }, { 52,4120 }, { 53,4120 }, { 54,4120 }, { 55,4120 }, { 56,4120 }, { 57,4120 }, { 58,4120 }, { 59,4120 }, { 60,4120 }, { 61,4120 }, { 62,4120 }, { 63,4120 }, { 64,4120 }, { 65,4120 }, { 66,4120 }, { 67,4120 }, { 68,4120 }, { 69,4120 }, { 70,4120 }, { 71,4120 }, { 72,4120 }, { 73,4120 }, { 74,4120 }, { 75,4120 }, { 76,4120 }, { 77,4120 }, { 78,4120 }, { 79,4120 }, { 80,4120 }, { 81,4120 }, { 82,4120 }, { 83,4120 }, { 84,4120 }, { 85,4120 }, { 86,4120 }, { 87,4120 }, { 88,4120 }, { 89,4120 }, { 90,4120 }, { 91,4120 }, { 92,4120 }, { 93,4120 }, { 94,4120 }, { 95,4120 }, { 96,4120 }, { 97,4120 }, { 98,4120 }, { 99,4120 }, { 100,4120 }, { 101,4120 }, { 102,4120 }, { 103,4120 }, { 104,4120 }, { 105,4120 }, { 106,4120 }, { 107,4120 }, { 108,4120 }, { 109,4120 }, { 110,4120 }, { 111,4120 }, { 112,4120 }, { 113,4120 }, { 114,4120 }, { 115,4120 }, { 116,4120 }, { 117,4120 }, { 118,4120 }, { 119,4120 }, { 120,4120 }, { 121,4120 }, { 122,4120 }, { 123,4120 }, { 124,4120 }, { 125,4120 }, { 126,4120 }, { 127,4120 }, { 128,4120 }, { 129,4120 }, { 130,4120 }, { 131,4120 }, { 132,4120 }, { 133,4120 }, { 134,4120 }, { 135,4120 }, { 136,4120 }, { 137,4120 }, { 138,4120 }, { 139,4120 }, { 140,4120 }, { 141,4120 }, { 142,4120 }, { 143,4120 }, { 144,4120 }, { 145,4120 }, { 146,4120 }, { 147,4120 }, { 148,4120 }, { 149,4120 }, { 150,4120 }, { 151,4120 }, { 152,4120 }, { 153,4120 }, { 154,4120 }, { 155,4120 }, { 156,4120 }, { 157,4120 }, { 158,4120 }, { 159,4120 }, { 160,4120 }, { 161,4120 }, { 162,4120 }, { 163,4120 }, { 164,4120 }, { 165,4120 }, { 166,4120 }, { 167,4120 }, { 168,4120 }, { 169,4120 }, { 170,4120 }, { 171,4120 }, { 172,4120 }, { 173,4120 }, { 174,4120 }, { 175,4120 }, { 176,4120 }, { 177,4120 }, { 178,4120 }, { 179,4120 }, { 180,4120 }, { 181,4120 }, { 182,4120 }, { 183,4120 }, { 184,4120 }, { 185,4120 }, { 186,4120 }, { 187,4120 }, { 188,4120 }, { 189,4120 }, { 190,4120 }, { 191,4120 }, { 192,4120 }, { 193,4120 }, { 194,4120 }, { 195,4120 }, { 196,4120 }, { 197,4120 }, { 198,4120 }, { 199,4120 }, { 200,4120 }, { 201,4120 }, { 202,4120 }, { 203,4120 }, { 204,4120 }, { 205,4120 }, { 206,4120 }, { 207,4120 }, { 208,4120 }, { 209,4120 }, { 210,4120 }, { 211,4120 }, { 212,4120 }, { 213,4120 }, { 214,4120 }, { 215,4120 }, { 216,4120 }, { 217,4120 }, { 218,4120 }, { 219,4120 }, { 220,4120 }, { 221,4120 }, { 222,4120 }, { 223,4120 }, { 224,4120 }, { 225,4120 }, { 226,4120 }, { 227,4120 }, { 228,4120 }, { 229,4120 }, { 230,4120 }, { 231,4120 }, { 232,4120 }, { 233,4120 }, { 234,4120 }, { 235,4120 }, { 236,4120 }, { 237,4120 }, { 238,4120 }, { 239,4120 }, { 240,4120 }, { 241,4120 }, { 242,4120 }, { 243,4120 }, { 244,4120 }, { 245,4120 }, { 246,4120 }, { 247,4120 }, { 248,4120 }, { 249,4120 }, { 250,4120 }, { 251,4120 }, { 252,4120 }, { 253,4120 }, { 254,4120 }, { 255,4120 }, { 256,4120 }, { 0, 44 }, { 0,8262 }, { 1,4248 }, { 2,4248 }, { 3,4248 }, { 4,4248 }, { 5,4248 }, { 6,4248 }, { 7,4248 }, { 8,4248 }, { 9,4248 }, { 10,4248 }, { 11,4248 }, { 12,4248 }, { 13,4248 }, { 14,4248 }, { 15,4248 }, { 16,4248 }, { 17,4248 }, { 18,4248 }, { 19,4248 }, { 20,4248 }, { 21,4248 }, { 22,4248 }, { 23,4248 }, { 24,4248 }, { 25,4248 }, { 26,4248 }, { 27,4248 }, { 28,4248 }, { 29,4248 }, { 30,4248 }, { 31,4248 }, { 32,4248 }, { 33,4248 }, { 0, 0 }, { 35,4248 }, { 36,4248 }, { 37,4248 }, { 38,4248 }, { 39,4248 }, { 40,4248 }, { 41,4248 }, { 42,4248 }, { 43,4248 }, { 44,4248 }, { 45,4248 }, { 46,4248 }, { 47,4248 }, { 48,4248 }, { 49,4248 }, { 50,4248 }, { 51,4248 }, { 52,4248 }, { 53,4248 }, { 54,4248 }, { 55,4248 }, { 56,4248 }, { 57,4248 }, { 58,4248 }, { 59,4248 }, { 60,4248 }, { 61,4248 }, { 62,4248 }, { 63,4248 }, { 64,4248 }, { 65,4248 }, { 66,4248 }, { 67,4248 }, { 68,4248 }, { 69,4248 }, { 70,4248 }, { 71,4248 }, { 72,4248 }, { 73,4248 }, { 74,4248 }, { 75,4248 }, { 76,4248 }, { 77,4248 }, { 78,4248 }, { 79,4248 }, { 80,4248 }, { 81,4248 }, { 82,4248 }, { 83,4248 }, { 84,4248 }, { 85,4248 }, { 86,4248 }, { 87,4248 }, { 88,4248 }, { 89,4248 }, { 90,4248 }, { 91,4248 }, { 92,4248 }, { 93,4248 }, { 94,4248 }, { 95,4248 }, { 96,4248 }, { 97,4248 }, { 98,4248 }, { 99,4248 }, { 100,4248 }, { 101,4248 }, { 102,4248 }, { 103,4248 }, { 104,4248 }, { 105,4248 }, { 106,4248 }, { 107,4248 }, { 108,4248 }, { 109,4248 }, { 110,4248 }, { 111,4248 }, { 112,4248 }, { 113,4248 }, { 114,4248 }, { 115,4248 }, { 116,4248 }, { 117,4248 }, { 118,4248 }, { 119,4248 }, { 120,4248 }, { 121,4248 }, { 122,4248 }, { 123,4248 }, { 124,4248 }, { 125,4248 }, { 126,4248 }, { 127,4248 }, { 128,4248 }, { 129,4248 }, { 130,4248 }, { 131,4248 }, { 132,4248 }, { 133,4248 }, { 134,4248 }, { 135,4248 }, { 136,4248 }, { 137,4248 }, { 138,4248 }, { 139,4248 }, { 140,4248 }, { 141,4248 }, { 142,4248 }, { 143,4248 }, { 144,4248 }, { 145,4248 }, { 146,4248 }, { 147,4248 }, { 148,4248 }, { 149,4248 }, { 150,4248 }, { 151,4248 }, { 152,4248 }, { 153,4248 }, { 154,4248 }, { 155,4248 }, { 156,4248 }, { 157,4248 }, { 158,4248 }, { 159,4248 }, { 160,4248 }, { 161,4248 }, { 162,4248 }, { 163,4248 }, { 164,4248 }, { 165,4248 }, { 166,4248 }, { 167,4248 }, { 168,4248 }, { 169,4248 }, { 170,4248 }, { 171,4248 }, { 172,4248 }, { 173,4248 }, { 174,4248 }, { 175,4248 }, { 176,4248 }, { 177,4248 }, { 178,4248 }, { 179,4248 }, { 180,4248 }, { 181,4248 }, { 182,4248 }, { 183,4248 }, { 184,4248 }, { 185,4248 }, { 186,4248 }, { 187,4248 }, { 188,4248 }, { 189,4248 }, { 190,4248 }, { 191,4248 }, { 192,4248 }, { 193,4248 }, { 194,4248 }, { 195,4248 }, { 196,4248 }, { 197,4248 }, { 198,4248 }, { 199,4248 }, { 200,4248 }, { 201,4248 }, { 202,4248 }, { 203,4248 }, { 204,4248 }, { 205,4248 }, { 206,4248 }, { 207,4248 }, { 208,4248 }, { 209,4248 }, { 210,4248 }, { 211,4248 }, { 212,4248 }, { 213,4248 }, { 214,4248 }, { 215,4248 }, { 216,4248 }, { 217,4248 }, { 218,4248 }, { 219,4248 }, { 220,4248 }, { 221,4248 }, { 222,4248 }, { 223,4248 }, { 224,4248 }, { 225,4248 }, { 226,4248 }, { 227,4248 }, { 228,4248 }, { 229,4248 }, { 230,4248 }, { 231,4248 }, { 232,4248 }, { 233,4248 }, { 234,4248 }, { 235,4248 }, { 236,4248 }, { 237,4248 }, { 238,4248 }, { 239,4248 }, { 240,4248 }, { 241,4248 }, { 242,4248 }, { 243,4248 }, { 244,4248 }, { 245,4248 }, { 246,4248 }, { 247,4248 }, { 248,4248 }, { 249,4248 }, { 250,4248 }, { 251,4248 }, { 252,4248 }, { 253,4248 }, { 254,4248 }, { 255,4248 }, { 256,4248 }, { 0, 10 }, { 0,8004 }, { 1,4248 }, { 2,4248 }, { 3,4248 }, { 4,4248 }, { 5,4248 }, { 6,4248 }, { 7,4248 }, { 8,4248 }, { 9,4248 }, { 10,4248 }, { 11,4248 }, { 12,4248 }, { 13,4248 }, { 14,4248 }, { 15,4248 }, { 16,4248 }, { 17,4248 }, { 18,4248 }, { 19,4248 }, { 20,4248 }, { 21,4248 }, { 22,4248 }, { 23,4248 }, { 24,4248 }, { 25,4248 }, { 26,4248 }, { 27,4248 }, { 28,4248 }, { 29,4248 }, { 30,4248 }, { 31,4248 }, { 32,4248 }, { 33,4248 }, { 34,4248 }, { 35,4248 }, { 36,4248 }, { 37,4248 }, { 38,4248 }, { 0, 0 }, { 40,4248 }, { 41,4248 }, { 42,4248 }, { 43,4248 }, { 44,4248 }, { 45,4248 }, { 46,4248 }, { 47,4248 }, { 48,4248 }, { 49,4248 }, { 50,4248 }, { 51,4248 }, { 52,4248 }, { 53,4248 }, { 54,4248 }, { 55,4248 }, { 56,4248 }, { 57,4248 }, { 58,4248 }, { 59,4248 }, { 60,4248 }, { 61,4248 }, { 62,4248 }, { 63,4248 }, { 64,4248 }, { 65,4248 }, { 66,4248 }, { 67,4248 }, { 68,4248 }, { 69,4248 }, { 70,4248 }, { 71,4248 }, { 72,4248 }, { 73,4248 }, { 74,4248 }, { 75,4248 }, { 76,4248 }, { 77,4248 }, { 78,4248 }, { 79,4248 }, { 80,4248 }, { 81,4248 }, { 82,4248 }, { 83,4248 }, { 84,4248 }, { 85,4248 }, { 86,4248 }, { 87,4248 }, { 88,4248 }, { 89,4248 }, { 90,4248 }, { 91,4248 }, { 92,4248 }, { 93,4248 }, { 94,4248 }, { 95,4248 }, { 96,4248 }, { 97,4248 }, { 98,4248 }, { 99,4248 }, { 100,4248 }, { 101,4248 }, { 102,4248 }, { 103,4248 }, { 104,4248 }, { 105,4248 }, { 106,4248 }, { 107,4248 }, { 108,4248 }, { 109,4248 }, { 110,4248 }, { 111,4248 }, { 112,4248 }, { 113,4248 }, { 114,4248 }, { 115,4248 }, { 116,4248 }, { 117,4248 }, { 118,4248 }, { 119,4248 }, { 120,4248 }, { 121,4248 }, { 122,4248 }, { 123,4248 }, { 124,4248 }, { 125,4248 }, { 126,4248 }, { 127,4248 }, { 128,4248 }, { 129,4248 }, { 130,4248 }, { 131,4248 }, { 132,4248 }, { 133,4248 }, { 134,4248 }, { 135,4248 }, { 136,4248 }, { 137,4248 }, { 138,4248 }, { 139,4248 }, { 140,4248 }, { 141,4248 }, { 142,4248 }, { 143,4248 }, { 144,4248 }, { 145,4248 }, { 146,4248 }, { 147,4248 }, { 148,4248 }, { 149,4248 }, { 150,4248 }, { 151,4248 }, { 152,4248 }, { 153,4248 }, { 154,4248 }, { 155,4248 }, { 156,4248 }, { 157,4248 }, { 158,4248 }, { 159,4248 }, { 160,4248 }, { 161,4248 }, { 162,4248 }, { 163,4248 }, { 164,4248 }, { 165,4248 }, { 166,4248 }, { 167,4248 }, { 168,4248 }, { 169,4248 }, { 170,4248 }, { 171,4248 }, { 172,4248 }, { 173,4248 }, { 174,4248 }, { 175,4248 }, { 176,4248 }, { 177,4248 }, { 178,4248 }, { 179,4248 }, { 180,4248 }, { 181,4248 }, { 182,4248 }, { 183,4248 }, { 184,4248 }, { 185,4248 }, { 186,4248 }, { 187,4248 }, { 188,4248 }, { 189,4248 }, { 190,4248 }, { 191,4248 }, { 192,4248 }, { 193,4248 }, { 194,4248 }, { 195,4248 }, { 196,4248 }, { 197,4248 }, { 198,4248 }, { 199,4248 }, { 200,4248 }, { 201,4248 }, { 202,4248 }, { 203,4248 }, { 204,4248 }, { 205,4248 }, { 206,4248 }, { 207,4248 }, { 208,4248 }, { 209,4248 }, { 210,4248 }, { 211,4248 }, { 212,4248 }, { 213,4248 }, { 214,4248 }, { 215,4248 }, { 216,4248 }, { 217,4248 }, { 218,4248 }, { 219,4248 }, { 220,4248 }, { 221,4248 }, { 222,4248 }, { 223,4248 }, { 224,4248 }, { 225,4248 }, { 226,4248 }, { 227,4248 }, { 228,4248 }, { 229,4248 }, { 230,4248 }, { 231,4248 }, { 232,4248 }, { 233,4248 }, { 234,4248 }, { 235,4248 }, { 236,4248 }, { 237,4248 }, { 238,4248 }, { 239,4248 }, { 240,4248 }, { 241,4248 }, { 242,4248 }, { 243,4248 }, { 244,4248 }, { 245,4248 }, { 246,4248 }, { 247,4248 }, { 248,4248 }, { 249,4248 }, { 250,4248 }, { 251,4248 }, { 252,4248 }, { 253,4248 }, { 254,4248 }, { 255,4248 }, { 256,4248 }, { 0, 22 }, { 0,7746 }, { 1,4248 }, { 2,4248 }, { 3,4248 }, { 4,4248 }, { 5,4248 }, { 6,4248 }, { 7,4248 }, { 8,4248 }, { 9,4248 }, { 10,4248 }, { 11,4248 }, { 12,4248 }, { 13,4248 }, { 14,4248 }, { 15,4248 }, { 16,4248 }, { 17,4248 }, { 18,4248 }, { 19,4248 }, { 20,4248 }, { 21,4248 }, { 22,4248 }, { 23,4248 }, { 24,4248 }, { 25,4248 }, { 26,4248 }, { 27,4248 }, { 28,4248 }, { 29,4248 }, { 30,4248 }, { 31,4248 }, { 32,4248 }, { 33,4248 }, { 34,4248 }, { 35,4248 }, { 36,4248 }, { 37,4248 }, { 38,4248 }, { 0, 0 }, { 40,4248 }, { 41,4248 }, { 42,4248 }, { 43,4248 }, { 44,4248 }, { 45,4248 }, { 46,4248 }, { 47,4248 }, { 48,4248 }, { 49,4248 }, { 50,4248 }, { 51,4248 }, { 52,4248 }, { 53,4248 }, { 54,4248 }, { 55,4248 }, { 56,4248 }, { 57,4248 }, { 58,4248 }, { 59,4248 }, { 60,4248 }, { 61,4248 }, { 62,4248 }, { 63,4248 }, { 64,4248 }, { 65,4248 }, { 66,4248 }, { 67,4248 }, { 68,4248 }, { 69,4248 }, { 70,4248 }, { 71,4248 }, { 72,4248 }, { 73,4248 }, { 74,4248 }, { 75,4248 }, { 76,4248 }, { 77,4248 }, { 78,4248 }, { 79,4248 }, { 80,4248 }, { 81,4248 }, { 82,4248 }, { 83,4248 }, { 84,4248 }, { 85,4248 }, { 86,4248 }, { 87,4248 }, { 88,4248 }, { 89,4248 }, { 90,4248 }, { 91,4248 }, { 92,4248 }, { 93,4248 }, { 94,4248 }, { 95,4248 }, { 96,4248 }, { 97,4248 }, { 98,4248 }, { 99,4248 }, { 100,4248 }, { 101,4248 }, { 102,4248 }, { 103,4248 }, { 104,4248 }, { 105,4248 }, { 106,4248 }, { 107,4248 }, { 108,4248 }, { 109,4248 }, { 110,4248 }, { 111,4248 }, { 112,4248 }, { 113,4248 }, { 114,4248 }, { 115,4248 }, { 116,4248 }, { 117,4248 }, { 118,4248 }, { 119,4248 }, { 120,4248 }, { 121,4248 }, { 122,4248 }, { 123,4248 }, { 124,4248 }, { 125,4248 }, { 126,4248 }, { 127,4248 }, { 128,4248 }, { 129,4248 }, { 130,4248 }, { 131,4248 }, { 132,4248 }, { 133,4248 }, { 134,4248 }, { 135,4248 }, { 136,4248 }, { 137,4248 }, { 138,4248 }, { 139,4248 }, { 140,4248 }, { 141,4248 }, { 142,4248 }, { 143,4248 }, { 144,4248 }, { 145,4248 }, { 146,4248 }, { 147,4248 }, { 148,4248 }, { 149,4248 }, { 150,4248 }, { 151,4248 }, { 152,4248 }, { 153,4248 }, { 154,4248 }, { 155,4248 }, { 156,4248 }, { 157,4248 }, { 158,4248 }, { 159,4248 }, { 160,4248 }, { 161,4248 }, { 162,4248 }, { 163,4248 }, { 164,4248 }, { 165,4248 }, { 166,4248 }, { 167,4248 }, { 168,4248 }, { 169,4248 }, { 170,4248 }, { 171,4248 }, { 172,4248 }, { 173,4248 }, { 174,4248 }, { 175,4248 }, { 176,4248 }, { 177,4248 }, { 178,4248 }, { 179,4248 }, { 180,4248 }, { 181,4248 }, { 182,4248 }, { 183,4248 }, { 184,4248 }, { 185,4248 }, { 186,4248 }, { 187,4248 }, { 188,4248 }, { 189,4248 }, { 190,4248 }, { 191,4248 }, { 192,4248 }, { 193,4248 }, { 194,4248 }, { 195,4248 }, { 196,4248 }, { 197,4248 }, { 198,4248 }, { 199,4248 }, { 200,4248 }, { 201,4248 }, { 202,4248 }, { 203,4248 }, { 204,4248 }, { 205,4248 }, { 206,4248 }, { 207,4248 }, { 208,4248 }, { 209,4248 }, { 210,4248 }, { 211,4248 }, { 212,4248 }, { 213,4248 }, { 214,4248 }, { 215,4248 }, { 216,4248 }, { 217,4248 }, { 218,4248 }, { 219,4248 }, { 220,4248 }, { 221,4248 }, { 222,4248 }, { 223,4248 }, { 224,4248 }, { 225,4248 }, { 226,4248 }, { 227,4248 }, { 228,4248 }, { 229,4248 }, { 230,4248 }, { 231,4248 }, { 232,4248 }, { 233,4248 }, { 234,4248 }, { 235,4248 }, { 236,4248 }, { 237,4248 }, { 238,4248 }, { 239,4248 }, { 240,4248 }, { 241,4248 }, { 242,4248 }, { 243,4248 }, { 244,4248 }, { 245,4248 }, { 246,4248 }, { 247,4248 }, { 248,4248 }, { 249,4248 }, { 250,4248 }, { 251,4248 }, { 252,4248 }, { 253,4248 }, { 254,4248 }, { 255,4248 }, { 256,4248 }, { 0, 19 }, { 0,7488 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 19 }, { 0,7483 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9,4248 }, { 10,4253 }, { 0, 0 }, { 12,4248 }, { 13,4253 }, { 9,4264 }, { 10,4264 }, { 0, 0 }, { 12,4264 }, { 13,4264 }, { 0, 0 }, { 0, 19 }, { 0,7467 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9,4248 }, { 10,4248 }, { 32,4248 }, { 12,4248 }, { 13,4248 }, { 0, 0 }, { 0, 0 }, { 32,4264 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39,-3352 }, { 45,-3349 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-3354 }, { 0, 0 }, { 0, 0 }, { 32,4248 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39,-3368 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-3370 }, { 0, 23 }, { 0,7420 }, { 1,4248 }, { 2,4248 }, { 3,4248 }, { 4,4248 }, { 5,4248 }, { 6,4248 }, { 7,4248 }, { 8,4248 }, { 9,4248 }, { 10,4248 }, { 11,4248 }, { 12,4248 }, { 13,4248 }, { 14,4248 }, { 15,4248 }, { 16,4248 }, { 17,4248 }, { 18,4248 }, { 19,4248 }, { 20,4248 }, { 21,4248 }, { 22,4248 }, { 23,4248 }, { 24,4248 }, { 25,4248 }, { 26,4248 }, { 27,4248 }, { 28,4248 }, { 29,4248 }, { 30,4248 }, { 31,4248 }, { 32,4248 }, { 33,4248 }, { 34,4248 }, { 35,4248 }, { 36,4248 }, { 37,4248 }, { 38,4248 }, { 0, 0 }, { 40,4248 }, { 41,4248 }, { 42,4248 }, { 43,4248 }, { 44,4248 }, { 45,4248 }, { 46,4248 }, { 47,4248 }, { 48,4248 }, { 49,4248 }, { 50,4248 }, { 51,4248 }, { 52,4248 }, { 53,4248 }, { 54,4248 }, { 55,4248 }, { 56,4248 }, { 57,4248 }, { 58,4248 }, { 59,4248 }, { 60,4248 }, { 61,4248 }, { 62,4248 }, { 63,4248 }, { 64,4248 }, { 65,4248 }, { 66,4248 }, { 67,4248 }, { 68,4248 }, { 69,4248 }, { 70,4248 }, { 71,4248 }, { 72,4248 }, { 73,4248 }, { 74,4248 }, { 75,4248 }, { 76,4248 }, { 77,4248 }, { 78,4248 }, { 79,4248 }, { 80,4248 }, { 81,4248 }, { 82,4248 }, { 83,4248 }, { 84,4248 }, { 85,4248 }, { 86,4248 }, { 87,4248 }, { 88,4248 }, { 89,4248 }, { 90,4248 }, { 91,4248 }, { 0, 0 }, { 93,4248 }, { 94,4248 }, { 95,4248 }, { 96,4248 }, { 97,4248 }, { 98,4248 }, { 99,4248 }, { 100,4248 }, { 101,4248 }, { 102,4248 }, { 103,4248 }, { 104,4248 }, { 105,4248 }, { 106,4248 }, { 107,4248 }, { 108,4248 }, { 109,4248 }, { 110,4248 }, { 111,4248 }, { 112,4248 }, { 113,4248 }, { 114,4248 }, { 115,4248 }, { 116,4248 }, { 117,4248 }, { 118,4248 }, { 119,4248 }, { 120,4248 }, { 121,4248 }, { 122,4248 }, { 123,4248 }, { 124,4248 }, { 125,4248 }, { 126,4248 }, { 127,4248 }, { 128,4248 }, { 129,4248 }, { 130,4248 }, { 131,4248 }, { 132,4248 }, { 133,4248 }, { 134,4248 }, { 135,4248 }, { 136,4248 }, { 137,4248 }, { 138,4248 }, { 139,4248 }, { 140,4248 }, { 141,4248 }, { 142,4248 }, { 143,4248 }, { 144,4248 }, { 145,4248 }, { 146,4248 }, { 147,4248 }, { 148,4248 }, { 149,4248 }, { 150,4248 }, { 151,4248 }, { 152,4248 }, { 153,4248 }, { 154,4248 }, { 155,4248 }, { 156,4248 }, { 157,4248 }, { 158,4248 }, { 159,4248 }, { 160,4248 }, { 161,4248 }, { 162,4248 }, { 163,4248 }, { 164,4248 }, { 165,4248 }, { 166,4248 }, { 167,4248 }, { 168,4248 }, { 169,4248 }, { 170,4248 }, { 171,4248 }, { 172,4248 }, { 173,4248 }, { 174,4248 }, { 175,4248 }, { 176,4248 }, { 177,4248 }, { 178,4248 }, { 179,4248 }, { 180,4248 }, { 181,4248 }, { 182,4248 }, { 183,4248 }, { 184,4248 }, { 185,4248 }, { 186,4248 }, { 187,4248 }, { 188,4248 }, { 189,4248 }, { 190,4248 }, { 191,4248 }, { 192,4248 }, { 193,4248 }, { 194,4248 }, { 195,4248 }, { 196,4248 }, { 197,4248 }, { 198,4248 }, { 199,4248 }, { 200,4248 }, { 201,4248 }, { 202,4248 }, { 203,4248 }, { 204,4248 }, { 205,4248 }, { 206,4248 }, { 207,4248 }, { 208,4248 }, { 209,4248 }, { 210,4248 }, { 211,4248 }, { 212,4248 }, { 213,4248 }, { 214,4248 }, { 215,4248 }, { 216,4248 }, { 217,4248 }, { 218,4248 }, { 219,4248 }, { 220,4248 }, { 221,4248 }, { 222,4248 }, { 223,4248 }, { 224,4248 }, { 225,4248 }, { 226,4248 }, { 227,4248 }, { 228,4248 }, { 229,4248 }, { 230,4248 }, { 231,4248 }, { 232,4248 }, { 233,4248 }, { 234,4248 }, { 235,4248 }, { 236,4248 }, { 237,4248 }, { 238,4248 }, { 239,4248 }, { 240,4248 }, { 241,4248 }, { 242,4248 }, { 243,4248 }, { 244,4248 }, { 245,4248 }, { 246,4248 }, { 247,4248 }, { 248,4248 }, { 249,4248 }, { 250,4248 }, { 251,4248 }, { 252,4248 }, { 253,4248 }, { 254,4248 }, { 255,4248 }, { 256,4248 }, { 0, 23 }, { 0,7162 }, { 1,3990 }, { 2,3990 }, { 3,3990 }, { 4,3990 }, { 5,3990 }, { 6,3990 }, { 7,3990 }, { 8,3990 }, { 9,3990 }, { 10,3990 }, { 11,3990 }, { 12,3990 }, { 13,3990 }, { 14,3990 }, { 15,3990 }, { 16,3990 }, { 17,3990 }, { 18,3990 }, { 19,3990 }, { 20,3990 }, { 21,3990 }, { 22,3990 }, { 23,3990 }, { 24,3990 }, { 25,3990 }, { 26,3990 }, { 27,3990 }, { 28,3990 }, { 29,3990 }, { 30,3990 }, { 31,3990 }, { 32,3990 }, { 33,3990 }, { 34,3990 }, { 35,3990 }, { 36,3990 }, { 37,3990 }, { 38,3990 }, { 0, 0 }, { 40,3990 }, { 41,3990 }, { 42,3990 }, { 43,3990 }, { 44,3990 }, { 45,3990 }, { 46,3990 }, { 47,3990 }, { 48,3990 }, { 49,3990 }, { 50,3990 }, { 51,3990 }, { 52,3990 }, { 53,3990 }, { 54,3990 }, { 55,3990 }, { 56,3990 }, { 57,3990 }, { 58,3990 }, { 59,3990 }, { 60,3990 }, { 61,3990 }, { 62,3990 }, { 63,3990 }, { 64,3990 }, { 65,3990 }, { 66,3990 }, { 67,3990 }, { 68,3990 }, { 69,3990 }, { 70,3990 }, { 71,3990 }, { 72,3990 }, { 73,3990 }, { 74,3990 }, { 75,3990 }, { 76,3990 }, { 77,3990 }, { 78,3990 }, { 79,3990 }, { 80,3990 }, { 81,3990 }, { 82,3990 }, { 83,3990 }, { 84,3990 }, { 85,3990 }, { 86,3990 }, { 87,3990 }, { 88,3990 }, { 89,3990 }, { 90,3990 }, { 91,3990 }, { 0, 0 }, { 93,3990 }, { 94,3990 }, { 95,3990 }, { 96,3990 }, { 97,3990 }, { 98,3990 }, { 99,3990 }, { 100,3990 }, { 101,3990 }, { 102,3990 }, { 103,3990 }, { 104,3990 }, { 105,3990 }, { 106,3990 }, { 107,3990 }, { 108,3990 }, { 109,3990 }, { 110,3990 }, { 111,3990 }, { 112,3990 }, { 113,3990 }, { 114,3990 }, { 115,3990 }, { 116,3990 }, { 117,3990 }, { 118,3990 }, { 119,3990 }, { 120,3990 }, { 121,3990 }, { 122,3990 }, { 123,3990 }, { 124,3990 }, { 125,3990 }, { 126,3990 }, { 127,3990 }, { 128,3990 }, { 129,3990 }, { 130,3990 }, { 131,3990 }, { 132,3990 }, { 133,3990 }, { 134,3990 }, { 135,3990 }, { 136,3990 }, { 137,3990 }, { 138,3990 }, { 139,3990 }, { 140,3990 }, { 141,3990 }, { 142,3990 }, { 143,3990 }, { 144,3990 }, { 145,3990 }, { 146,3990 }, { 147,3990 }, { 148,3990 }, { 149,3990 }, { 150,3990 }, { 151,3990 }, { 152,3990 }, { 153,3990 }, { 154,3990 }, { 155,3990 }, { 156,3990 }, { 157,3990 }, { 158,3990 }, { 159,3990 }, { 160,3990 }, { 161,3990 }, { 162,3990 }, { 163,3990 }, { 164,3990 }, { 165,3990 }, { 166,3990 }, { 167,3990 }, { 168,3990 }, { 169,3990 }, { 170,3990 }, { 171,3990 }, { 172,3990 }, { 173,3990 }, { 174,3990 }, { 175,3990 }, { 176,3990 }, { 177,3990 }, { 178,3990 }, { 179,3990 }, { 180,3990 }, { 181,3990 }, { 182,3990 }, { 183,3990 }, { 184,3990 }, { 185,3990 }, { 186,3990 }, { 187,3990 }, { 188,3990 }, { 189,3990 }, { 190,3990 }, { 191,3990 }, { 192,3990 }, { 193,3990 }, { 194,3990 }, { 195,3990 }, { 196,3990 }, { 197,3990 }, { 198,3990 }, { 199,3990 }, { 200,3990 }, { 201,3990 }, { 202,3990 }, { 203,3990 }, { 204,3990 }, { 205,3990 }, { 206,3990 }, { 207,3990 }, { 208,3990 }, { 209,3990 }, { 210,3990 }, { 211,3990 }, { 212,3990 }, { 213,3990 }, { 214,3990 }, { 215,3990 }, { 216,3990 }, { 217,3990 }, { 218,3990 }, { 219,3990 }, { 220,3990 }, { 221,3990 }, { 222,3990 }, { 223,3990 }, { 224,3990 }, { 225,3990 }, { 226,3990 }, { 227,3990 }, { 228,3990 }, { 229,3990 }, { 230,3990 }, { 231,3990 }, { 232,3990 }, { 233,3990 }, { 234,3990 }, { 235,3990 }, { 236,3990 }, { 237,3990 }, { 238,3990 }, { 239,3990 }, { 240,3990 }, { 241,3990 }, { 242,3990 }, { 243,3990 }, { 244,3990 }, { 245,3990 }, { 246,3990 }, { 247,3990 }, { 248,3990 }, { 249,3990 }, { 250,3990 }, { 251,3990 }, { 252,3990 }, { 253,3990 }, { 254,3990 }, { 255,3990 }, { 256,3990 }, { 0, 32 }, { 0,6904 }, { 1,-3929 }, { 2,-3929 }, { 3,-3929 }, { 4,-3929 }, { 5,-3929 }, { 6,-3929 }, { 7,-3929 }, { 8,-3929 }, { 9,-3929 }, { 10,-3929 }, { 11,-3929 }, { 12,-3929 }, { 13,-3929 }, { 14,-3929 }, { 15,-3929 }, { 16,-3929 }, { 17,-3929 }, { 18,-3929 }, { 19,-3929 }, { 20,-3929 }, { 21,-3929 }, { 22,-3929 }, { 23,-3929 }, { 24,-3929 }, { 25,-3929 }, { 26,-3929 }, { 27,-3929 }, { 28,-3929 }, { 29,-3929 }, { 30,-3929 }, { 31,-3929 }, { 32,-3929 }, { 33,-3929 }, { 34,-3929 }, { 35,-3929 }, { 36,-3929 }, { 37,-3929 }, { 38,-3929 }, { 39,-3929 }, { 40,-3929 }, { 41,-3929 }, { 42,-3929 }, { 43,-3929 }, { 44,-3929 }, { 45,-3929 }, { 46,-3929 }, { 47,-3929 }, { 48,3990 }, { 49,3990 }, { 50,3990 }, { 51,3990 }, { 52,3990 }, { 53,3990 }, { 54,3990 }, { 55,3990 }, { 56,-3929 }, { 57,-3929 }, { 58,-3929 }, { 59,-3929 }, { 60,-3929 }, { 61,-3929 }, { 62,-3929 }, { 63,-3929 }, { 64,-3929 }, { 65,-3929 }, { 66,-3929 }, { 67,-3929 }, { 68,-3929 }, { 69,-3929 }, { 70,-3929 }, { 71,-3929 }, { 72,-3929 }, { 73,-3929 }, { 74,-3929 }, { 75,-3929 }, { 76,-3929 }, { 77,-3929 }, { 78,-3929 }, { 79,-3929 }, { 80,-3929 }, { 81,-3929 }, { 82,-3929 }, { 83,-3929 }, { 84,-3929 }, { 85,3998 }, { 86,-3929 }, { 87,-3929 }, { 88,-3929 }, { 89,-3929 }, { 90,-3929 }, { 91,-3929 }, { 92,-3929 }, { 93,-3929 }, { 94,-3929 }, { 95,-3929 }, { 96,-3929 }, { 97,-3929 }, { 98,-3929 }, { 99,-3929 }, { 100,-3929 }, { 101,-3929 }, { 102,-3929 }, { 103,-3929 }, { 104,-3929 }, { 105,-3929 }, { 106,-3929 }, { 107,-3929 }, { 108,-3929 }, { 109,-3929 }, { 110,-3929 }, { 111,-3929 }, { 112,-3929 }, { 113,-3929 }, { 114,-3929 }, { 115,-3929 }, { 116,-3929 }, { 117,4021 }, { 118,-3929 }, { 119,-3929 }, { 120,4059 }, { 121,-3929 }, { 122,-3929 }, { 123,-3929 }, { 124,-3929 }, { 125,-3929 }, { 126,-3929 }, { 127,-3929 }, { 128,-3929 }, { 129,-3929 }, { 130,-3929 }, { 131,-3929 }, { 132,-3929 }, { 133,-3929 }, { 134,-3929 }, { 135,-3929 }, { 136,-3929 }, { 137,-3929 }, { 138,-3929 }, { 139,-3929 }, { 140,-3929 }, { 141,-3929 }, { 142,-3929 }, { 143,-3929 }, { 144,-3929 }, { 145,-3929 }, { 146,-3929 }, { 147,-3929 }, { 148,-3929 }, { 149,-3929 }, { 150,-3929 }, { 151,-3929 }, { 152,-3929 }, { 153,-3929 }, { 154,-3929 }, { 155,-3929 }, { 156,-3929 }, { 157,-3929 }, { 158,-3929 }, { 159,-3929 }, { 160,-3929 }, { 161,-3929 }, { 162,-3929 }, { 163,-3929 }, { 164,-3929 }, { 165,-3929 }, { 166,-3929 }, { 167,-3929 }, { 168,-3929 }, { 169,-3929 }, { 170,-3929 }, { 171,-3929 }, { 172,-3929 }, { 173,-3929 }, { 174,-3929 }, { 175,-3929 }, { 176,-3929 }, { 177,-3929 }, { 178,-3929 }, { 179,-3929 }, { 180,-3929 }, { 181,-3929 }, { 182,-3929 }, { 183,-3929 }, { 184,-3929 }, { 185,-3929 }, { 186,-3929 }, { 187,-3929 }, { 188,-3929 }, { 189,-3929 }, { 190,-3929 }, { 191,-3929 }, { 192,-3929 }, { 193,-3929 }, { 194,-3929 }, { 195,-3929 }, { 196,-3929 }, { 197,-3929 }, { 198,-3929 }, { 199,-3929 }, { 200,-3929 }, { 201,-3929 }, { 202,-3929 }, { 203,-3929 }, { 204,-3929 }, { 205,-3929 }, { 206,-3929 }, { 207,-3929 }, { 208,-3929 }, { 209,-3929 }, { 210,-3929 }, { 211,-3929 }, { 212,-3929 }, { 213,-3929 }, { 214,-3929 }, { 215,-3929 }, { 216,-3929 }, { 217,-3929 }, { 218,-3929 }, { 219,-3929 }, { 220,-3929 }, { 221,-3929 }, { 222,-3929 }, { 223,-3929 }, { 224,-3929 }, { 225,-3929 }, { 226,-3929 }, { 227,-3929 }, { 228,-3929 }, { 229,-3929 }, { 230,-3929 }, { 231,-3929 }, { 232,-3929 }, { 233,-3929 }, { 234,-3929 }, { 235,-3929 }, { 236,-3929 }, { 237,-3929 }, { 238,-3929 }, { 239,-3929 }, { 240,-3929 }, { 241,-3929 }, { 242,-3929 }, { 243,-3929 }, { 244,-3929 }, { 245,-3929 }, { 246,-3929 }, { 247,-3929 }, { 248,-3929 }, { 249,-3929 }, { 250,-3929 }, { 251,-3929 }, { 252,-3929 }, { 253,-3929 }, { 254,-3929 }, { 255,-3929 }, { 256,-3929 }, { 0, 36 }, { 0,6646 }, { 1,3905 }, { 2,3905 }, { 3,3905 }, { 4,3905 }, { 5,3905 }, { 6,3905 }, { 7,3905 }, { 8,3905 }, { 9,3905 }, { 10,3905 }, { 11,3905 }, { 12,3905 }, { 13,3905 }, { 14,3905 }, { 15,3905 }, { 16,3905 }, { 17,3905 }, { 18,3905 }, { 19,3905 }, { 20,3905 }, { 21,3905 }, { 22,3905 }, { 23,3905 }, { 24,3905 }, { 25,3905 }, { 26,3905 }, { 27,3905 }, { 28,3905 }, { 29,3905 }, { 30,3905 }, { 31,3905 }, { 32,3905 }, { 33,3905 }, { 34,3905 }, { 35,3905 }, { 0, 0 }, { 37,3905 }, { 38,3905 }, { 39,3905 }, { 40,3905 }, { 41,3905 }, { 42,3905 }, { 43,3905 }, { 44,3905 }, { 45,3905 }, { 46,3905 }, { 47,3905 }, { 48,3905 }, { 49,3905 }, { 50,3905 }, { 51,3905 }, { 52,3905 }, { 53,3905 }, { 54,3905 }, { 55,3905 }, { 56,3905 }, { 57,3905 }, { 58,3905 }, { 59,3905 }, { 60,3905 }, { 61,3905 }, { 62,3905 }, { 63,3905 }, { 64,3905 }, { 65,3905 }, { 66,3905 }, { 67,3905 }, { 68,3905 }, { 69,3905 }, { 70,3905 }, { 71,3905 }, { 72,3905 }, { 73,3905 }, { 74,3905 }, { 75,3905 }, { 76,3905 }, { 77,3905 }, { 78,3905 }, { 79,3905 }, { 80,3905 }, { 81,3905 }, { 82,3905 }, { 83,3905 }, { 84,3905 }, { 85,3905 }, { 86,3905 }, { 87,3905 }, { 88,3905 }, { 89,3905 }, { 90,3905 }, { 91,3905 }, { 92,3905 }, { 93,3905 }, { 94,3905 }, { 95,3905 }, { 96,3905 }, { 97,3905 }, { 98,3905 }, { 99,3905 }, { 100,3905 }, { 101,3905 }, { 102,3905 }, { 103,3905 }, { 104,3905 }, { 105,3905 }, { 106,3905 }, { 107,3905 }, { 108,3905 }, { 109,3905 }, { 110,3905 }, { 111,3905 }, { 112,3905 }, { 113,3905 }, { 114,3905 }, { 115,3905 }, { 116,3905 }, { 117,3905 }, { 118,3905 }, { 119,3905 }, { 120,3905 }, { 121,3905 }, { 122,3905 }, { 123,3905 }, { 124,3905 }, { 125,3905 }, { 126,3905 }, { 127,3905 }, { 128,3905 }, { 129,3905 }, { 130,3905 }, { 131,3905 }, { 132,3905 }, { 133,3905 }, { 134,3905 }, { 135,3905 }, { 136,3905 }, { 137,3905 }, { 138,3905 }, { 139,3905 }, { 140,3905 }, { 141,3905 }, { 142,3905 }, { 143,3905 }, { 144,3905 }, { 145,3905 }, { 146,3905 }, { 147,3905 }, { 148,3905 }, { 149,3905 }, { 150,3905 }, { 151,3905 }, { 152,3905 }, { 153,3905 }, { 154,3905 }, { 155,3905 }, { 156,3905 }, { 157,3905 }, { 158,3905 }, { 159,3905 }, { 160,3905 }, { 161,3905 }, { 162,3905 }, { 163,3905 }, { 164,3905 }, { 165,3905 }, { 166,3905 }, { 167,3905 }, { 168,3905 }, { 169,3905 }, { 170,3905 }, { 171,3905 }, { 172,3905 }, { 173,3905 }, { 174,3905 }, { 175,3905 }, { 176,3905 }, { 177,3905 }, { 178,3905 }, { 179,3905 }, { 180,3905 }, { 181,3905 }, { 182,3905 }, { 183,3905 }, { 184,3905 }, { 185,3905 }, { 186,3905 }, { 187,3905 }, { 188,3905 }, { 189,3905 }, { 190,3905 }, { 191,3905 }, { 192,3905 }, { 193,3905 }, { 194,3905 }, { 195,3905 }, { 196,3905 }, { 197,3905 }, { 198,3905 }, { 199,3905 }, { 200,3905 }, { 201,3905 }, { 202,3905 }, { 203,3905 }, { 204,3905 }, { 205,3905 }, { 206,3905 }, { 207,3905 }, { 208,3905 }, { 209,3905 }, { 210,3905 }, { 211,3905 }, { 212,3905 }, { 213,3905 }, { 214,3905 }, { 215,3905 }, { 216,3905 }, { 217,3905 }, { 218,3905 }, { 219,3905 }, { 220,3905 }, { 221,3905 }, { 222,3905 }, { 223,3905 }, { 224,3905 }, { 225,3905 }, { 226,3905 }, { 227,3905 }, { 228,3905 }, { 229,3905 }, { 230,3905 }, { 231,3905 }, { 232,3905 }, { 233,3905 }, { 234,3905 }, { 235,3905 }, { 236,3905 }, { 237,3905 }, { 238,3905 }, { 239,3905 }, { 240,3905 }, { 241,3905 }, { 242,3905 }, { 243,3905 }, { 244,3905 }, { 245,3905 }, { 246,3905 }, { 247,3905 }, { 248,3905 }, { 249,3905 }, { 250,3905 }, { 251,3905 }, { 252,3905 }, { 253,3905 }, { 254,3905 }, { 255,3905 }, { 256,3905 }, { 0, 36 }, { 0,6388 }, { 1,3647 }, { 2,3647 }, { 3,3647 }, { 4,3647 }, { 5,3647 }, { 6,3647 }, { 7,3647 }, { 8,3647 }, { 9,3647 }, { 10,3647 }, { 11,3647 }, { 12,3647 }, { 13,3647 }, { 14,3647 }, { 15,3647 }, { 16,3647 }, { 17,3647 }, { 18,3647 }, { 19,3647 }, { 20,3647 }, { 21,3647 }, { 22,3647 }, { 23,3647 }, { 24,3647 }, { 25,3647 }, { 26,3647 }, { 27,3647 }, { 28,3647 }, { 29,3647 }, { 30,3647 }, { 31,3647 }, { 32,3647 }, { 33,3647 }, { 34,3647 }, { 35,3647 }, { 0, 0 }, { 37,3647 }, { 38,3647 }, { 39,3647 }, { 40,3647 }, { 41,3647 }, { 42,3647 }, { 43,3647 }, { 44,3647 }, { 45,3647 }, { 46,3647 }, { 47,3647 }, { 48,3647 }, { 49,3647 }, { 50,3647 }, { 51,3647 }, { 52,3647 }, { 53,3647 }, { 54,3647 }, { 55,3647 }, { 56,3647 }, { 57,3647 }, { 58,3647 }, { 59,3647 }, { 60,3647 }, { 61,3647 }, { 62,3647 }, { 63,3647 }, { 64,3647 }, { 65,3647 }, { 66,3647 }, { 67,3647 }, { 68,3647 }, { 69,3647 }, { 70,3647 }, { 71,3647 }, { 72,3647 }, { 73,3647 }, { 74,3647 }, { 75,3647 }, { 76,3647 }, { 77,3647 }, { 78,3647 }, { 79,3647 }, { 80,3647 }, { 81,3647 }, { 82,3647 }, { 83,3647 }, { 84,3647 }, { 85,3647 }, { 86,3647 }, { 87,3647 }, { 88,3647 }, { 89,3647 }, { 90,3647 }, { 91,3647 }, { 92,3647 }, { 93,3647 }, { 94,3647 }, { 95,3647 }, { 96,3647 }, { 97,3647 }, { 98,3647 }, { 99,3647 }, { 100,3647 }, { 101,3647 }, { 102,3647 }, { 103,3647 }, { 104,3647 }, { 105,3647 }, { 106,3647 }, { 107,3647 }, { 108,3647 }, { 109,3647 }, { 110,3647 }, { 111,3647 }, { 112,3647 }, { 113,3647 }, { 114,3647 }, { 115,3647 }, { 116,3647 }, { 117,3647 }, { 118,3647 }, { 119,3647 }, { 120,3647 }, { 121,3647 }, { 122,3647 }, { 123,3647 }, { 124,3647 }, { 125,3647 }, { 126,3647 }, { 127,3647 }, { 128,3647 }, { 129,3647 }, { 130,3647 }, { 131,3647 }, { 132,3647 }, { 133,3647 }, { 134,3647 }, { 135,3647 }, { 136,3647 }, { 137,3647 }, { 138,3647 }, { 139,3647 }, { 140,3647 }, { 141,3647 }, { 142,3647 }, { 143,3647 }, { 144,3647 }, { 145,3647 }, { 146,3647 }, { 147,3647 }, { 148,3647 }, { 149,3647 }, { 150,3647 }, { 151,3647 }, { 152,3647 }, { 153,3647 }, { 154,3647 }, { 155,3647 }, { 156,3647 }, { 157,3647 }, { 158,3647 }, { 159,3647 }, { 160,3647 }, { 161,3647 }, { 162,3647 }, { 163,3647 }, { 164,3647 }, { 165,3647 }, { 166,3647 }, { 167,3647 }, { 168,3647 }, { 169,3647 }, { 170,3647 }, { 171,3647 }, { 172,3647 }, { 173,3647 }, { 174,3647 }, { 175,3647 }, { 176,3647 }, { 177,3647 }, { 178,3647 }, { 179,3647 }, { 180,3647 }, { 181,3647 }, { 182,3647 }, { 183,3647 }, { 184,3647 }, { 185,3647 }, { 186,3647 }, { 187,3647 }, { 188,3647 }, { 189,3647 }, { 190,3647 }, { 191,3647 }, { 192,3647 }, { 193,3647 }, { 194,3647 }, { 195,3647 }, { 196,3647 }, { 197,3647 }, { 198,3647 }, { 199,3647 }, { 200,3647 }, { 201,3647 }, { 202,3647 }, { 203,3647 }, { 204,3647 }, { 205,3647 }, { 206,3647 }, { 207,3647 }, { 208,3647 }, { 209,3647 }, { 210,3647 }, { 211,3647 }, { 212,3647 }, { 213,3647 }, { 214,3647 }, { 215,3647 }, { 216,3647 }, { 217,3647 }, { 218,3647 }, { 219,3647 }, { 220,3647 }, { 221,3647 }, { 222,3647 }, { 223,3647 }, { 224,3647 }, { 225,3647 }, { 226,3647 }, { 227,3647 }, { 228,3647 }, { 229,3647 }, { 230,3647 }, { 231,3647 }, { 232,3647 }, { 233,3647 }, { 234,3647 }, { 235,3647 }, { 236,3647 }, { 237,3647 }, { 238,3647 }, { 239,3647 }, { 240,3647 }, { 241,3647 }, { 242,3647 }, { 243,3647 }, { 244,3647 }, { 245,3647 }, { 246,3647 }, { 247,3647 }, { 248,3647 }, { 249,3647 }, { 250,3647 }, { 251,3647 }, { 252,3647 }, { 253,3647 }, { 254,3647 }, { 255,3647 }, { 256,3647 }, { 0, 38 }, { 0,6130 }, { 0, 1 }, { 0,6128 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9, 0 }, { 10, 0 }, { 0, 0 }, { 12, 0 }, { 13, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 32, 0 }, { 0, 0 }, { 36,-4701 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,3647 }, { 66,3647 }, { 67,3647 }, { 68,3647 }, { 69,3647 }, { 70,3647 }, { 71,3647 }, { 72,3647 }, { 73,3647 }, { 74,3647 }, { 75,3647 }, { 76,3647 }, { 77,3647 }, { 78,3647 }, { 79,3647 }, { 80,3647 }, { 81,3647 }, { 82,3647 }, { 83,3647 }, { 84,3647 }, { 85,3647 }, { 86,3647 }, { 87,3647 }, { 88,3647 }, { 89,3647 }, { 90,3647 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,3647 }, { 0, 0 }, { 97,3647 }, { 98,3647 }, { 99,3647 }, { 100,3647 }, { 101,3647 }, { 102,3647 }, { 103,3647 }, { 104,3647 }, { 105,3647 }, { 106,3647 }, { 107,3647 }, { 108,3647 }, { 109,3647 }, { 110,3647 }, { 111,3647 }, { 112,3647 }, { 113,3647 }, { 114,3647 }, { 115,3647 }, { 116,3647 }, { 117,3647 }, { 118,3647 }, { 119,3647 }, { 120,3647 }, { 121,3647 }, { 122,3647 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,3647 }, { 129,3647 }, { 130,3647 }, { 131,3647 }, { 132,3647 }, { 133,3647 }, { 134,3647 }, { 135,3647 }, { 136,3647 }, { 137,3647 }, { 138,3647 }, { 139,3647 }, { 140,3647 }, { 141,3647 }, { 142,3647 }, { 143,3647 }, { 144,3647 }, { 145,3647 }, { 146,3647 }, { 147,3647 }, { 148,3647 }, { 149,3647 }, { 150,3647 }, { 151,3647 }, { 152,3647 }, { 153,3647 }, { 154,3647 }, { 155,3647 }, { 156,3647 }, { 157,3647 }, { 158,3647 }, { 159,3647 }, { 160,3647 }, { 161,3647 }, { 162,3647 }, { 163,3647 }, { 164,3647 }, { 165,3647 }, { 166,3647 }, { 167,3647 }, { 168,3647 }, { 169,3647 }, { 170,3647 }, { 171,3647 }, { 172,3647 }, { 173,3647 }, { 174,3647 }, { 175,3647 }, { 176,3647 }, { 177,3647 }, { 178,3647 }, { 179,3647 }, { 180,3647 }, { 181,3647 }, { 182,3647 }, { 183,3647 }, { 184,3647 }, { 185,3647 }, { 186,3647 }, { 187,3647 }, { 188,3647 }, { 189,3647 }, { 190,3647 }, { 191,3647 }, { 192,3647 }, { 193,3647 }, { 194,3647 }, { 195,3647 }, { 196,3647 }, { 197,3647 }, { 198,3647 }, { 199,3647 }, { 200,3647 }, { 201,3647 }, { 202,3647 }, { 203,3647 }, { 204,3647 }, { 205,3647 }, { 206,3647 }, { 207,3647 }, { 208,3647 }, { 209,3647 }, { 210,3647 }, { 211,3647 }, { 212,3647 }, { 213,3647 }, { 214,3647 }, { 215,3647 }, { 216,3647 }, { 217,3647 }, { 218,3647 }, { 219,3647 }, { 220,3647 }, { 221,3647 }, { 222,3647 }, { 223,3647 }, { 224,3647 }, { 225,3647 }, { 226,3647 }, { 227,3647 }, { 228,3647 }, { 229,3647 }, { 230,3647 }, { 231,3647 }, { 232,3647 }, { 233,3647 }, { 234,3647 }, { 235,3647 }, { 236,3647 }, { 237,3647 }, { 238,3647 }, { 239,3647 }, { 240,3647 }, { 241,3647 }, { 242,3647 }, { 243,3647 }, { 244,3647 }, { 245,3647 }, { 246,3647 }, { 247,3647 }, { 248,3647 }, { 249,3647 }, { 250,3647 }, { 251,3647 }, { 252,3647 }, { 253,3647 }, { 254,3647 }, { 255,3647 }, { 0, 55 }, { 0,5873 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 53 }, { 0,5862 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 56 }, { 0,5845 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33, 0 }, { 0, 0 }, { 35, 0 }, { 0, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42, 0 }, { 43, 0 }, { 33, -11 }, { 45, 0 }, { 35, -11 }, { 47, 0 }, { 37, -11 }, { 38, -11 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42, -11 }, { 43, -11 }, { 0, 0 }, { 45, -11 }, { 0, 0 }, { 47, -11 }, { 0, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60, -11 }, { 61, -11 }, { 62, -11 }, { 63, -11 }, { 64, -11 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 34 }, { 0,5782 }, { 0, 0 }, { 0, 0 }, { 94, 0 }, { 0, 0 }, { 96, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94, -11 }, { 0, 0 }, { 96, -11 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124, 0 }, { 0, 0 }, { 126, 0 }, { 36,-5323 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124, -11 }, { 0, 0 }, { 126, -11 }, { 0, 0 }, { 48,3638 }, { 49,3638 }, { 50,3638 }, { 51,3638 }, { 52,3638 }, { 53,3638 }, { 54,3638 }, { 55,3638 }, { 56,3638 }, { 57,3638 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,3638 }, { 66,3638 }, { 67,3638 }, { 68,3638 }, { 69,3638 }, { 70,3638 }, { 71,3638 }, { 72,3638 }, { 73,3638 }, { 74,3638 }, { 75,3638 }, { 76,3638 }, { 77,3638 }, { 78,3638 }, { 79,3638 }, { 80,3638 }, { 81,3638 }, { 82,3638 }, { 83,3638 }, { 84,3638 }, { 85,3638 }, { 86,3638 }, { 87,3638 }, { 88,3638 }, { 89,3638 }, { 90,3638 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,3638 }, { 0, 0 }, { 97,3638 }, { 98,3638 }, { 99,3638 }, { 100,3638 }, { 101,3638 }, { 102,3638 }, { 103,3638 }, { 104,3638 }, { 105,3638 }, { 106,3638 }, { 107,3638 }, { 108,3638 }, { 109,3638 }, { 110,3638 }, { 111,3638 }, { 112,3638 }, { 113,3638 }, { 114,3638 }, { 115,3638 }, { 116,3638 }, { 117,3638 }, { 118,3638 }, { 119,3638 }, { 120,3638 }, { 121,3638 }, { 122,3638 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,3638 }, { 129,3638 }, { 130,3638 }, { 131,3638 }, { 132,3638 }, { 133,3638 }, { 134,3638 }, { 135,3638 }, { 136,3638 }, { 137,3638 }, { 138,3638 }, { 139,3638 }, { 140,3638 }, { 141,3638 }, { 142,3638 }, { 143,3638 }, { 144,3638 }, { 145,3638 }, { 146,3638 }, { 147,3638 }, { 148,3638 }, { 149,3638 }, { 150,3638 }, { 151,3638 }, { 152,3638 }, { 153,3638 }, { 154,3638 }, { 155,3638 }, { 156,3638 }, { 157,3638 }, { 158,3638 }, { 159,3638 }, { 160,3638 }, { 161,3638 }, { 162,3638 }, { 163,3638 }, { 164,3638 }, { 165,3638 }, { 166,3638 }, { 167,3638 }, { 168,3638 }, { 169,3638 }, { 170,3638 }, { 171,3638 }, { 172,3638 }, { 173,3638 }, { 174,3638 }, { 175,3638 }, { 176,3638 }, { 177,3638 }, { 178,3638 }, { 179,3638 }, { 180,3638 }, { 181,3638 }, { 182,3638 }, { 183,3638 }, { 184,3638 }, { 185,3638 }, { 186,3638 }, { 187,3638 }, { 188,3638 }, { 189,3638 }, { 190,3638 }, { 191,3638 }, { 192,3638 }, { 193,3638 }, { 194,3638 }, { 195,3638 }, { 196,3638 }, { 197,3638 }, { 198,3638 }, { 199,3638 }, { 200,3638 }, { 201,3638 }, { 202,3638 }, { 203,3638 }, { 204,3638 }, { 205,3638 }, { 206,3638 }, { 207,3638 }, { 208,3638 }, { 209,3638 }, { 210,3638 }, { 211,3638 }, { 212,3638 }, { 213,3638 }, { 214,3638 }, { 215,3638 }, { 216,3638 }, { 217,3638 }, { 218,3638 }, { 219,3638 }, { 220,3638 }, { 221,3638 }, { 222,3638 }, { 223,3638 }, { 224,3638 }, { 225,3638 }, { 226,3638 }, { 227,3638 }, { 228,3638 }, { 229,3638 }, { 230,3638 }, { 231,3638 }, { 232,3638 }, { 233,3638 }, { 234,3638 }, { 235,3638 }, { 236,3638 }, { 237,3638 }, { 238,3638 }, { 239,3638 }, { 240,3638 }, { 241,3638 }, { 242,3638 }, { 243,3638 }, { 244,3638 }, { 245,3638 }, { 246,3638 }, { 247,3638 }, { 248,3638 }, { 249,3638 }, { 250,3638 }, { 251,3638 }, { 252,3638 }, { 253,3638 }, { 254,3638 }, { 255,3638 }, { 0, 2 }, { 0,5525 }, { 1,3638 }, { 2,3638 }, { 3,3638 }, { 4,3638 }, { 5,3638 }, { 6,3638 }, { 7,3638 }, { 8,3638 }, { 9,3638 }, { 0, 0 }, { 11,3638 }, { 12,3638 }, { 0, 0 }, { 14,3638 }, { 15,3638 }, { 16,3638 }, { 17,3638 }, { 18,3638 }, { 19,3638 }, { 20,3638 }, { 21,3638 }, { 22,3638 }, { 23,3638 }, { 24,3638 }, { 25,3638 }, { 26,3638 }, { 27,3638 }, { 28,3638 }, { 29,3638 }, { 30,3638 }, { 31,3638 }, { 32,3638 }, { 33,3896 }, { 34,3638 }, { 35,3896 }, { 36,3638 }, { 37,3896 }, { 38,3896 }, { 39,3638 }, { 40,3638 }, { 41,3638 }, { 42,3896 }, { 43,3896 }, { 44,3638 }, { 45,3896 }, { 46,3638 }, { 47,3896 }, { 48,3638 }, { 49,3638 }, { 50,3638 }, { 51,3638 }, { 52,3638 }, { 53,3638 }, { 54,3638 }, { 55,3638 }, { 56,3638 }, { 57,3638 }, { 58,3638 }, { 59,3638 }, { 60,3896 }, { 61,3896 }, { 62,3896 }, { 63,3896 }, { 64,3896 }, { 65,3638 }, { 66,3638 }, { 67,3638 }, { 68,3638 }, { 69,3638 }, { 70,3638 }, { 71,3638 }, { 72,3638 }, { 73,3638 }, { 74,3638 }, { 75,3638 }, { 76,3638 }, { 77,3638 }, { 78,3638 }, { 79,3638 }, { 80,3638 }, { 81,3638 }, { 82,3638 }, { 83,3638 }, { 84,3638 }, { 85,3638 }, { 86,3638 }, { 87,3638 }, { 88,3638 }, { 89,3638 }, { 90,3638 }, { 91,3638 }, { 92,3638 }, { 93,3638 }, { 94,3896 }, { 95,3638 }, { 96,3896 }, { 97,3638 }, { 98,3638 }, { 99,3638 }, { 100,3638 }, { 101,3638 }, { 102,3638 }, { 103,3638 }, { 104,3638 }, { 105,3638 }, { 106,3638 }, { 107,3638 }, { 108,3638 }, { 109,3638 }, { 110,3638 }, { 111,3638 }, { 112,3638 }, { 113,3638 }, { 114,3638 }, { 115,3638 }, { 116,3638 }, { 117,3638 }, { 118,3638 }, { 119,3638 }, { 120,3638 }, { 121,3638 }, { 122,3638 }, { 123,3638 }, { 124,3896 }, { 125,3638 }, { 126,3896 }, { 127,3638 }, { 128,3638 }, { 129,3638 }, { 130,3638 }, { 131,3638 }, { 132,3638 }, { 133,3638 }, { 134,3638 }, { 135,3638 }, { 136,3638 }, { 137,3638 }, { 138,3638 }, { 139,3638 }, { 140,3638 }, { 141,3638 }, { 142,3638 }, { 143,3638 }, { 144,3638 }, { 145,3638 }, { 146,3638 }, { 147,3638 }, { 148,3638 }, { 149,3638 }, { 150,3638 }, { 151,3638 }, { 152,3638 }, { 153,3638 }, { 154,3638 }, { 155,3638 }, { 156,3638 }, { 157,3638 }, { 158,3638 }, { 159,3638 }, { 160,3638 }, { 161,3638 }, { 162,3638 }, { 163,3638 }, { 164,3638 }, { 165,3638 }, { 166,3638 }, { 167,3638 }, { 168,3638 }, { 169,3638 }, { 170,3638 }, { 171,3638 }, { 172,3638 }, { 173,3638 }, { 174,3638 }, { 175,3638 }, { 176,3638 }, { 177,3638 }, { 178,3638 }, { 179,3638 }, { 180,3638 }, { 181,3638 }, { 182,3638 }, { 183,3638 }, { 184,3638 }, { 185,3638 }, { 186,3638 }, { 187,3638 }, { 188,3638 }, { 189,3638 }, { 190,3638 }, { 191,3638 }, { 192,3638 }, { 193,3638 }, { 194,3638 }, { 195,3638 }, { 196,3638 }, { 197,3638 }, { 198,3638 }, { 199,3638 }, { 200,3638 }, { 201,3638 }, { 202,3638 }, { 203,3638 }, { 204,3638 }, { 205,3638 }, { 206,3638 }, { 207,3638 }, { 208,3638 }, { 209,3638 }, { 210,3638 }, { 211,3638 }, { 212,3638 }, { 213,3638 }, { 214,3638 }, { 215,3638 }, { 216,3638 }, { 217,3638 }, { 218,3638 }, { 219,3638 }, { 220,3638 }, { 221,3638 }, { 222,3638 }, { 223,3638 }, { 224,3638 }, { 225,3638 }, { 226,3638 }, { 227,3638 }, { 228,3638 }, { 229,3638 }, { 230,3638 }, { 231,3638 }, { 232,3638 }, { 233,3638 }, { 234,3638 }, { 235,3638 }, { 236,3638 }, { 237,3638 }, { 238,3638 }, { 239,3638 }, { 240,3638 }, { 241,3638 }, { 242,3638 }, { 243,3638 }, { 244,3638 }, { 245,3638 }, { 246,3638 }, { 247,3638 }, { 248,3638 }, { 249,3638 }, { 250,3638 }, { 251,3638 }, { 252,3638 }, { 253,3638 }, { 254,3638 }, { 255,3638 }, { 256,3638 }, { 0, 58 }, { 0,5267 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 3 }, { 0,5242 }, { 0, 58 }, { 0,5240 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 33,3871 }, { 0, 0 }, { 35,3871 }, { 0, 0 }, { 37,3871 }, { 38,3871 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,3871 }, { 43,3871 }, { 69, 113 }, { 45,3871 }, { 0, 0 }, { 47,3871 }, { 46,-5589 }, { 0, 0 }, { 48,3871 }, { 49,3871 }, { 50,3871 }, { 51,3871 }, { 52,3871 }, { 53,3871 }, { 54,3871 }, { 55,3871 }, { 56,3871 }, { 57,3871 }, { 60,3871 }, { 61,3871 }, { 62,3871 }, { 63,3871 }, { 64,3871 }, { 0, 57 }, { 0,5176 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 69, 86 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 101, 113 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 61 }, { 0,5154 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,3871 }, { 0, 0 }, { 96,3871 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 101, 86 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 46, -64 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 124,3871 }, { 0, 0 }, { 126,3871 }, { 0, 50 }, { 0,5114 }, { 0, 0 }, { 0, 0 }, { 43,3807 }, { 0, 0 }, { 45,3807 }, { 0, 0 }, { 69, 22 }, { 48,3849 }, { 49,3849 }, { 50,3849 }, { 51,3849 }, { 52,3849 }, { 53,3849 }, { 54,3849 }, { 55,3849 }, { 56,3849 }, { 57,3849 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,-759 }, { 0, 0 }, { 35,-759 }, { 0, 0 }, { 37,-759 }, { 38,-759 }, { 101, 22 }, { 0, 52 }, { 0,5073 }, { 42,-759 }, { 43,-759 }, { 0, 0 }, { 45,-759 }, { 0, 0 }, { 47,-759 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,-759 }, { 61,-759 }, { 62,-759 }, { 63,-759 }, { 64,-759 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,-800 }, { 0, 0 }, { 35,-800 }, { 0, 0 }, { 37,-800 }, { 38,-800 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,-800 }, { 43,-800 }, { 0, 0 }, { 45,-800 }, { 0, 0 }, { 47,-800 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,-759 }, { 0, 0 }, { 96,-759 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,-800 }, { 61,-800 }, { 62,-800 }, { 63,-800 }, { 64,-800 }, { 0, 0 }, { 0, 49 }, { 0,5006 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 51 }, { 0,4995 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,-759 }, { 0, 0 }, { 126,-759 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,-800 }, { 0, 0 }, { 96,-800 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,-867 }, { 0, 0 }, { 35,-867 }, { 0, 0 }, { 37,-867 }, { 38,-867 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,-867 }, { 43,-867 }, { 33,-878 }, { 45,-867 }, { 35,-878 }, { 47,-867 }, { 37,-878 }, { 38,-878 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,-878 }, { 43,-878 }, { 0, 0 }, { 45,-878 }, { 124,-800 }, { 47,-878 }, { 126,-800 }, { 60,-867 }, { 61,-867 }, { 62,-867 }, { 63,-867 }, { 64,-867 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,-878 }, { 61,-878 }, { 62,-878 }, { 63,-878 }, { 64,-878 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 63 }, { 0,4915 }, { 0, 0 }, { 0, 0 }, { 94,-867 }, { 0, 0 }, { 96,-867 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,-878 }, { 0, 0 }, { 96,-878 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,-867 }, { 0, 0 }, { 126,-867 }, { 36, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,-878 }, { 0, 0 }, { 126,-878 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,4658 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 6 }, { 0,4400 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 39, 0 }, { 40, 0 }, { 41, 0 }, { 0, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 4 }, { 0,4142 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,2863 }, { 0, 0 }, { 35,2863 }, { 0, 0 }, { 37,2863 }, { 38,2863 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,2863 }, { 43,2863 }, { 0, 0 }, { 45,2863 }, { 0, 0 }, { 47,2863 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,2863 }, { 61,2863 }, { 62,2863 }, { 63,2863 }, { 64,2863 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,2863 }, { 0, 0 }, { 96,2863 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,2863 }, { 0, 0 }, { 126,2863 }, { 0, 44 }, { 0,4014 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 0, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 39, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 10 }, { 0,3756 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 22 }, { 0,3498 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 19 }, { 0,3240 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 19 }, { 0,3235 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9, 0 }, { 10, 5 }, { 0, 0 }, { 12, 0 }, { 13, 5 }, { 9, 16 }, { 10, 16 }, { 0, 0 }, { 12, 16 }, { 13, 16 }, { 0, 0 }, { 0, 19 }, { 0,3219 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9, 0 }, { 10, 0 }, { 32, 0 }, { 12, 0 }, { 13, 0 }, { 0, 0 }, { 0, 0 }, { 32, 16 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39,-7600 }, { 45,-7597 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-7602 }, { 0, 0 }, { 0, 0 }, { 32, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39,-7616 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-7618 }, { 0, 23 }, { 0,3172 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 0, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 30 }, { 0,2914 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0,2906 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0,2883 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,1652 }, { 49,1652 }, { 50,1652 }, { 51,1652 }, { 52,1652 }, { 53,1652 }, { 54,1652 }, { 55,1652 }, { 48,1676 }, { 49,1676 }, { 50,1676 }, { 51,1676 }, { 52,1676 }, { 53,1676 }, { 54,1676 }, { 55,1676 }, { 56,1676 }, { 57,1676 }, { 0, 0 }, { 0, 0 }, { 0, 29 }, { 0,2845 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1676 }, { 66,1676 }, { 67,1676 }, { 68,1676 }, { 69,1676 }, { 70,1676 }, { 48,1691 }, { 49,1691 }, { 50,1691 }, { 51,1691 }, { 52,1691 }, { 53,1691 }, { 54,1691 }, { 55,1691 }, { 56,1691 }, { 57,1691 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1691 }, { 66,1691 }, { 67,1691 }, { 68,1691 }, { 69,1691 }, { 70,1691 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,1676 }, { 98,1676 }, { 99,1676 }, { 100,1676 }, { 101,1676 }, { 102,1676 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,1676 }, { 49,1676 }, { 50,1676 }, { 51,1676 }, { 52,1676 }, { 53,1676 }, { 54,1676 }, { 55,1676 }, { 56,1676 }, { 57,1676 }, { 0, 0 }, { 97,1691 }, { 98,1691 }, { 99,1691 }, { 100,1691 }, { 101,1691 }, { 102,1691 }, { 65,1676 }, { 66,1676 }, { 67,1676 }, { 68,1676 }, { 69,1676 }, { 70,1676 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,1676 }, { 98,1676 }, { 99,1676 }, { 100,1676 }, { 101,1676 }, { 102,1676 }, { 0, 36 }, { 0,2741 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 0, 0 }, { 37, 0 }, { 38, 0 }, { 39, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 37 }, { 0,2483 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,-8348 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,1373 }, { 49,1373 }, { 50,1373 }, { 51,1373 }, { 52,1373 }, { 53,1373 }, { 54,1373 }, { 55,1373 }, { 56,1373 }, { 57,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1373 }, { 66,1373 }, { 67,1373 }, { 68,1373 }, { 69,1373 }, { 70,1373 }, { 71,1373 }, { 72,1373 }, { 73,1373 }, { 74,1373 }, { 75,1373 }, { 76,1373 }, { 77,1373 }, { 78,1373 }, { 79,1373 }, { 80,1373 }, { 81,1373 }, { 82,1373 }, { 83,1373 }, { 84,1373 }, { 85,1373 }, { 86,1373 }, { 87,1373 }, { 88,1373 }, { 89,1373 }, { 90,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,1373 }, { 0, 0 }, { 97,1373 }, { 98,1373 }, { 99,1373 }, { 100,1373 }, { 101,1373 }, { 102,1373 }, { 103,1373 }, { 104,1373 }, { 105,1373 }, { 106,1373 }, { 107,1373 }, { 108,1373 }, { 109,1373 }, { 110,1373 }, { 111,1373 }, { 112,1373 }, { 113,1373 }, { 114,1373 }, { 115,1373 }, { 116,1373 }, { 117,1373 }, { 118,1373 }, { 119,1373 }, { 120,1373 }, { 121,1373 }, { 122,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,1373 }, { 129,1373 }, { 130,1373 }, { 131,1373 }, { 132,1373 }, { 133,1373 }, { 134,1373 }, { 135,1373 }, { 136,1373 }, { 137,1373 }, { 138,1373 }, { 139,1373 }, { 140,1373 }, { 141,1373 }, { 142,1373 }, { 143,1373 }, { 144,1373 }, { 145,1373 }, { 146,1373 }, { 147,1373 }, { 148,1373 }, { 149,1373 }, { 150,1373 }, { 151,1373 }, { 152,1373 }, { 153,1373 }, { 154,1373 }, { 155,1373 }, { 156,1373 }, { 157,1373 }, { 158,1373 }, { 159,1373 }, { 160,1373 }, { 161,1373 }, { 162,1373 }, { 163,1373 }, { 164,1373 }, { 165,1373 }, { 166,1373 }, { 167,1373 }, { 168,1373 }, { 169,1373 }, { 170,1373 }, { 171,1373 }, { 172,1373 }, { 173,1373 }, { 174,1373 }, { 175,1373 }, { 176,1373 }, { 177,1373 }, { 178,1373 }, { 179,1373 }, { 180,1373 }, { 181,1373 }, { 182,1373 }, { 183,1373 }, { 184,1373 }, { 185,1373 }, { 186,1373 }, { 187,1373 }, { 188,1373 }, { 189,1373 }, { 190,1373 }, { 191,1373 }, { 192,1373 }, { 193,1373 }, { 194,1373 }, { 195,1373 }, { 196,1373 }, { 197,1373 }, { 198,1373 }, { 199,1373 }, { 200,1373 }, { 201,1373 }, { 202,1373 }, { 203,1373 }, { 204,1373 }, { 205,1373 }, { 206,1373 }, { 207,1373 }, { 208,1373 }, { 209,1373 }, { 210,1373 }, { 211,1373 }, { 212,1373 }, { 213,1373 }, { 214,1373 }, { 215,1373 }, { 216,1373 }, { 217,1373 }, { 218,1373 }, { 219,1373 }, { 220,1373 }, { 221,1373 }, { 222,1373 }, { 223,1373 }, { 224,1373 }, { 225,1373 }, { 226,1373 }, { 227,1373 }, { 228,1373 }, { 229,1373 }, { 230,1373 }, { 231,1373 }, { 232,1373 }, { 233,1373 }, { 234,1373 }, { 235,1373 }, { 236,1373 }, { 237,1373 }, { 238,1373 }, { 239,1373 }, { 240,1373 }, { 241,1373 }, { 242,1373 }, { 243,1373 }, { 244,1373 }, { 245,1373 }, { 246,1373 }, { 247,1373 }, { 248,1373 }, { 249,1373 }, { 250,1373 }, { 251,1373 }, { 252,1373 }, { 253,1373 }, { 254,1373 }, { 255,1373 }, { 0, 28 }, { 0,2226 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0,2203 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,1373 }, { 49,1373 }, { 50,1373 }, { 51,1373 }, { 52,1373 }, { 53,1373 }, { 54,1373 }, { 55,1373 }, { 56,1373 }, { 57,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1373 }, { 66,1373 }, { 67,1373 }, { 68,1373 }, { 69,1373 }, { 70,1373 }, { 48,1373 }, { 49,1373 }, { 50,1373 }, { 51,1373 }, { 52,1373 }, { 53,1373 }, { 54,1373 }, { 55,1373 }, { 56,1373 }, { 57,1373 }, { 0, 34 }, { 0,2144 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1373 }, { 66,1373 }, { 67,1373 }, { 68,1373 }, { 69,1373 }, { 70,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,1373 }, { 98,1373 }, { 99,1373 }, { 100,1373 }, { 101,1373 }, { 102,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,-8961 }, { 0, 0 }, { 97,1373 }, { 98,1373 }, { 99,1373 }, { 100,1373 }, { 101,1373 }, { 102,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95, 0 }, { 0, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 0, 2 }, { 0,1887 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 0, 0 }, { 11, 0 }, { 12, 0 }, { 0, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 39, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 2 }, { 0,1629 }, { 1,-258 }, { 2,-258 }, { 3,-258 }, { 4,-258 }, { 5,-258 }, { 6,-258 }, { 7,-258 }, { 8,-258 }, { 9,-258 }, { 0, 0 }, { 11,-258 }, { 12,-258 }, { 0, 0 }, { 14,-258 }, { 15,-258 }, { 16,-258 }, { 17,-258 }, { 18,-258 }, { 19,-258 }, { 20,-258 }, { 21,-258 }, { 22,-258 }, { 23,-258 }, { 24,-258 }, { 25,-258 }, { 26,-258 }, { 27,-258 }, { 28,-258 }, { 29,-258 }, { 30,-258 }, { 31,-258 }, { 32,-258 }, { 33, 0 }, { 34,-258 }, { 35, 0 }, { 36,-258 }, { 37, 0 }, { 38, 0 }, { 39,-258 }, { 40,-258 }, { 41,-258 }, { 42, 0 }, { 43, 0 }, { 44,-258 }, { 45, 0 }, { 46,-258 }, { 47, 0 }, { 48,-258 }, { 49,-258 }, { 50,-258 }, { 51,-258 }, { 52,-258 }, { 53,-258 }, { 54,-258 }, { 55,-258 }, { 56,-258 }, { 57,-258 }, { 58,-258 }, { 59,-258 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65,-258 }, { 66,-258 }, { 67,-258 }, { 68,-258 }, { 69,-258 }, { 70,-258 }, { 71,-258 }, { 72,-258 }, { 73,-258 }, { 74,-258 }, { 75,-258 }, { 76,-258 }, { 77,-258 }, { 78,-258 }, { 79,-258 }, { 80,-258 }, { 81,-258 }, { 82,-258 }, { 83,-258 }, { 84,-258 }, { 85,-258 }, { 86,-258 }, { 87,-258 }, { 88,-258 }, { 89,-258 }, { 90,-258 }, { 91,-258 }, { 92,-258 }, { 93,-258 }, { 94, 0 }, { 95,-258 }, { 96, 0 }, { 97,-258 }, { 98,-258 }, { 99,-258 }, { 100,-258 }, { 101,-258 }, { 102,-258 }, { 103,-258 }, { 104,-258 }, { 105,-258 }, { 106,-258 }, { 107,-258 }, { 108,-258 }, { 109,-258 }, { 110,-258 }, { 111,-258 }, { 112,-258 }, { 113,-258 }, { 114,-258 }, { 115,-258 }, { 116,-258 }, { 117,-258 }, { 118,-258 }, { 119,-258 }, { 120,-258 }, { 121,-258 }, { 122,-258 }, { 123,-258 }, { 124, 0 }, { 125,-258 }, { 126, 0 }, { 127,-258 }, { 128,-258 }, { 129,-258 }, { 130,-258 }, { 131,-258 }, { 132,-258 }, { 133,-258 }, { 134,-258 }, { 135,-258 }, { 136,-258 }, { 137,-258 }, { 138,-258 }, { 139,-258 }, { 140,-258 }, { 141,-258 }, { 142,-258 }, { 143,-258 }, { 144,-258 }, { 145,-258 }, { 146,-258 }, { 147,-258 }, { 148,-258 }, { 149,-258 }, { 150,-258 }, { 151,-258 }, { 152,-258 }, { 153,-258 }, { 154,-258 }, { 155,-258 }, { 156,-258 }, { 157,-258 }, { 158,-258 }, { 159,-258 }, { 160,-258 }, { 161,-258 }, { 162,-258 }, { 163,-258 }, { 164,-258 }, { 165,-258 }, { 166,-258 }, { 167,-258 }, { 168,-258 }, { 169,-258 }, { 170,-258 }, { 171,-258 }, { 172,-258 }, { 173,-258 }, { 174,-258 }, { 175,-258 }, { 176,-258 }, { 177,-258 }, { 178,-258 }, { 179,-258 }, { 180,-258 }, { 181,-258 }, { 182,-258 }, { 183,-258 }, { 184,-258 }, { 185,-258 }, { 186,-258 }, { 187,-258 }, { 188,-258 }, { 189,-258 }, { 190,-258 }, { 191,-258 }, { 192,-258 }, { 193,-258 }, { 194,-258 }, { 195,-258 }, { 196,-258 }, { 197,-258 }, { 198,-258 }, { 199,-258 }, { 200,-258 }, { 201,-258 }, { 202,-258 }, { 203,-258 }, { 204,-258 }, { 205,-258 }, { 206,-258 }, { 207,-258 }, { 208,-258 }, { 209,-258 }, { 210,-258 }, { 211,-258 }, { 212,-258 }, { 213,-258 }, { 214,-258 }, { 215,-258 }, { 216,-258 }, { 217,-258 }, { 218,-258 }, { 219,-258 }, { 220,-258 }, { 221,-258 }, { 222,-258 }, { 223,-258 }, { 224,-258 }, { 225,-258 }, { 226,-258 }, { 227,-258 }, { 228,-258 }, { 229,-258 }, { 230,-258 }, { 231,-258 }, { 232,-258 }, { 233,-258 }, { 234,-258 }, { 235,-258 }, { 236,-258 }, { 237,-258 }, { 238,-258 }, { 239,-258 }, { 240,-258 }, { 241,-258 }, { 242,-258 }, { 243,-258 }, { 244,-258 }, { 245,-258 }, { 246,-258 }, { 247,-258 }, { 248,-258 }, { 249,-258 }, { 250,-258 }, { 251,-258 }, { 252,-258 }, { 253,-258 }, { 254,-258 }, { 255,-258 }, { 256,-258 }, { 0, 3 }, { 0,1371 }, { 0, 58 }, { 0,1369 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 62 }, { 0,1347 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33, 0 }, { 0, 0 }, { 35, 0 }, { 0, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42, 0 }, { 43, 0 }, { 0, 0 }, { 45, 0 }, { 0, 0 }, { 47, 0 }, { 0, 0 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 0, 60 }, { 0,1305 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 69,-3785 }, { 48, 42 }, { 49, 42 }, { 50, 42 }, { 51, 42 }, { 52, 42 }, { 53, 42 }, { 54, 42 }, { 55, 42 }, { 56, 42 }, { 57, 42 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 4 }, { 0,1279 }, { 0, 0 }, { 94, 0 }, { 0, 0 }, { 96, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 101,-3785 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 30 }, { 0,1262 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 124, 0 }, { 33, 0 }, { 126, 0 }, { 35, 0 }, { 0, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42, 0 }, { 43, 0 }, { 0, 0 }, { 45, 0 }, { 0, 0 }, { 47, 0 }, { 0, 28 }, { 0,1230 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 48,-9542 }, { 49,-9542 }, { 50,-9542 }, { 51,-9542 }, { 52,-9542 }, { 53,-9542 }, { 54,-9542 }, { 55,-9542 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0,1192 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94, 0 }, { 0, 0 }, { 96, 0 }, { 48, 438 }, { 49, 438 }, { 50, 438 }, { 51, 438 }, { 52, 438 }, { 53, 438 }, { 54, 438 }, { 55, 438 }, { 56, 438 }, { 57, 438 }, { 0, 0 }, { 0, 0 }, { 0, 31 }, { 0,1169 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 438 }, { 66, 438 }, { 67, 438 }, { 68, 438 }, { 69, 438 }, { 70, 438 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124, 0 }, { 0, 0 }, { 126, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 423 }, { 49, 423 }, { 50, 423 }, { 51, 423 }, { 52, 423 }, { 53, 423 }, { 54, 423 }, { 55, 423 }, { 56, 423 }, { 57, 423 }, { 0, 0 }, { 97, 438 }, { 98, 438 }, { 99, 438 }, { 100, 438 }, { 101, 438 }, { 102, 438 }, { 65, 423 }, { 66, 423 }, { 67, 423 }, { 68, 423 }, { 69, 423 }, { 70, 423 }, { 48,-9621 }, { 49,-9621 }, { 50,-9621 }, { 51,-9621 }, { 52,-9621 }, { 53,-9621 }, { 54,-9621 }, { 55,-9621 }, { 56,-9621 }, { 57,-9621 }, { 0, 37 }, { 0,1110 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-9621 }, { 66,-9621 }, { 67,-9621 }, { 68,-9621 }, { 69,-9621 }, { 70,-9621 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 423 }, { 98, 423 }, { 99, 423 }, { 100, 423 }, { 101, 423 }, { 102, 423 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,-9721 }, { 0, 0 }, { 97,-9621 }, { 98,-9621 }, { 99,-9621 }, { 100,-9621 }, { 101,-9621 }, { 102,-9621 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95, 0 }, { 0, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 0, 28 }, { 0, 853 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 830 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, { 51, 143 }, { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, { 56, 143 }, { 57, 143 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 792 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 143 }, { 66, 143 }, { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, { 51, 143 }, { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, { 56, 143 }, { 57, 143 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 769 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 143 }, { 66, 143 }, { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, { 101, 143 }, { 102, 143 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, { 51, 143 }, { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, { 56, 143 }, { 57, 143 }, { 0, 0 }, { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, { 101, 143 }, { 102, 143 }, { 65, 143 }, { 66, 143 }, { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, { 51, 143 }, { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, { 56, 143 }, { 57, 143 }, { 0, 28 }, { 0, 710 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 143 }, { 66, 143 }, { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, { 101, 143 }, { 102, 143 }, { 0, 0 }, { 0, 28 }, { 0, 687 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, { 101, 143 }, { 102, 143 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, { 51, 143 }, { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, { 56, 143 }, { 57, 143 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 649 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 143 }, { 66, 143 }, { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, { 51, 143 }, { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, { 56, 143 }, { 57, 143 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 626 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 143 }, { 66, 143 }, { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, { 101, 143 }, { 102, 143 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, { 51, 143 }, { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, { 56, 143 }, { 57, 143 }, { 0, 0 }, { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, { 101, 143 }, { 102, 143 }, { 65, 143 }, { 66, 143 }, { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, { 48,-10162 }, { 49,-10162 }, { 50,-10162 }, { 51,-10162 }, { 52,-10162 }, { 53,-10162 }, { 54,-10162 }, { 55,-10162 }, { 56,-10162 }, { 57,-10162 }, { 0, 28 }, { 0, 567 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-10162 }, { 66,-10162 }, { 67,-10162 }, { 68,-10162 }, { 69,-10162 }, { 70,-10162 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, { 101, 143 }, { 102, 143 }, { 0, 0 }, { 0, 28 }, { 0, 544 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,-10162 }, { 98,-10162 }, { 99,-10162 }, { 100,-10162 }, { 101,-10162 }, { 102,-10162 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 84 }, { 49, 84 }, { 50, 84 }, { 51, 84 }, { 52, 84 }, { 53, 84 }, { 54, 84 }, { 55, 84 }, { 56, 84 }, { 57, 84 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 506 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 84 }, { 66, 84 }, { 67, 84 }, { 68, 84 }, { 69, 84 }, { 70, 84 }, { 48,-10242 }, { 49,-10242 }, { 50,-10242 }, { 51,-10242 }, { 52,-10242 }, { 53,-10242 }, { 54,-10242 }, { 55,-10242 }, { 56,-10242 }, { 57,-10242 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 483 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-10242 }, { 66,-10242 }, { 67,-10242 }, { 68,-10242 }, { 69,-10242 }, { 70,-10242 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 84 }, { 98, 84 }, { 99, 84 }, { 100, 84 }, { 101, 84 }, { 102, 84 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 82 }, { 49, 82 }, { 50, 82 }, { 51, 82 }, { 52, 82 }, { 53, 82 }, { 54, 82 }, { 55, 82 }, { 56, 82 }, { 57, 82 }, { 0, 0 }, { 97,-10242 }, { 98,-10242 }, { 99,-10242 }, { 100,-10242 }, { 101,-10242 }, { 102,-10242 }, { 65, 82 }, { 66, 82 }, { 67, 82 }, { 68, 82 }, { 69, 82 }, { 70, 82 }, { 48, 82 }, { 49, 82 }, { 50, 82 }, { 51, 82 }, { 52, 82 }, { 53, 82 }, { 54, 82 }, { 55, 82 }, { 56, 82 }, { 57, 82 }, { 0, 28 }, { 0, 424 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 82 }, { 66, 82 }, { 67, 82 }, { 68, 82 }, { 69, 82 }, { 70, 82 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 82 }, { 98, 82 }, { 99, 82 }, { 100, 82 }, { 101, 82 }, { 102, 82 }, { 0, 0 }, { 0, 28 }, { 0, 401 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 82 }, { 98, 82 }, { 99, 82 }, { 100, 82 }, { 101, 82 }, { 102, 82 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 61 }, { 49, 61 }, { 50, 61 }, { 51, 61 }, { 52, 61 }, { 53, 61 }, { 54, 61 }, { 55, 61 }, { 56, 61 }, { 57, 61 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 363 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 61 }, { 66, 61 }, { 67, 61 }, { 68, 61 }, { 69, 61 }, { 70, 61 }, { 48, 61 }, { 49, 61 }, { 50, 61 }, { 51, 61 }, { 52, 61 }, { 53, 61 }, { 54, 61 }, { 55, 61 }, { 56, 61 }, { 57, 61 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 340 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 61 }, { 66, 61 }, { 67, 61 }, { 68, 61 }, { 69, 61 }, { 70, 61 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 61 }, { 98, 61 }, { 99, 61 }, { 100, 61 }, { 101, 61 }, { 102, 61 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 82 }, { 49, 82 }, { 50, 82 }, { 51, 82 }, { 52, 82 }, { 53, 82 }, { 54, 82 }, { 55, 82 }, { 56, 82 }, { 57, 82 }, { 0, 0 }, { 97, 61 }, { 98, 61 }, { 99, 61 }, { 100, 61 }, { 101, 61 }, { 102, 61 }, { 65, 82 }, { 66, 82 }, { 67, 82 }, { 68, 82 }, { 69, 82 }, { 70, 82 }, { 48, 82 }, { 49, 82 }, { 50, 82 }, { 51, 82 }, { 52, 82 }, { 53, 82 }, { 54, 82 }, { 55, 82 }, { 56, 82 }, { 57, 82 }, { 0, 28 }, { 0, 281 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 82 }, { 66, 82 }, { 67, 82 }, { 68, 82 }, { 69, 82 }, { 70, 82 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 82 }, { 98, 82 }, { 99, 82 }, { 100, 82 }, { 101, 82 }, { 102, 82 }, { 0, 0 }, { 0, 28 }, { 0, 258 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 82 }, { 98, 82 }, { 99, 82 }, { 100, 82 }, { 101, 82 }, { 102, 82 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-10507 }, { 49,-10507 }, { 50,-10507 }, { 51,-10507 }, { 52,-10507 }, { 53,-10507 }, { 54,-10507 }, { 55,-10507 }, { 56,-10507 }, { 57,-10507 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-10507 }, { 66,-10507 }, { 67,-10507 }, { 68,-10507 }, { 69,-10507 }, { 70,-10507 }, { 48,-10528 }, { 49,-10528 }, { 50,-10528 }, { 51,-10528 }, { 52,-10528 }, { 53,-10528 }, { 54,-10528 }, { 55,-10528 }, { 56,-10528 }, { 57,-10528 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-10528 }, { 66,-10528 }, { 67,-10528 }, { 68,-10528 }, { 69,-10528 }, { 70,-10528 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,-10507 }, { 98,-10507 }, { 99,-10507 }, { 100,-10507 }, { 101,-10507 }, { 102,-10507 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,-10528 }, { 98,-10528 }, { 99,-10528 }, { 100,-10528 }, { 101,-10528 }, { 102,-10528 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 257, 66 }, { 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 47 "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); 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 4601 "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. * * XXX perhaps \f (formfeed) should be treated as a newline as well? * * XXX if you change the set of whitespace characters, fix scanner_isspace() * to agree. */ /* * SQL requires at least one newline in the whitespace separating * string literals that are to be concatenated. Silly, but who are we * to argue? Note that {whitespace_with_newline} should not have * after * it, whereas {whitespace} should generally have a * after it... */ /* If we see {quote} then {quotecontinue}, the quoted string continues */ /* * {quotecontinuefail} is needed to avoid lexer backup when we fail to match * {quotecontinue}. It might seem that this could just be {whitespace}*, * but if there's a dash after {whitespace_with_newline}, it must be consumed * to see if there's another dash --- which would start a {comment} and thus * allow continuation of the {quotecontinue} token. */ /* Bit string * It is tempting to scan the string for only those characters * which are allowed. However, this leads to silently swallowed * characters if illegal characters are included in the string. * For example, if xbinside is [01] then B'ABCD' is interpreted * as a zero-length string, and the ABCD' is lost! * Better to pass the string forward and let the input routines * validate the contents. */ /* Hexadecimal 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(). * * {decimalfail} is used because we would like "1..10" to lex as 1, dot_dot, 10. * * {realfail1} and {realfail2} are added to prevent the need for scanner * backup when the {real} rule fails to match completely. */ /* * Dollar quoted strings are totally opaque, and no escaping is done on them. * Other quoted strings must allow some special characters such as single-quote * and newline. * Embedded single-quotes are implemented both in the SQL standard * style of two adjacent single quotes "''" and in the Postgres/Java style * of escaped-quote "\'". * Other embedded escaped characters are matched explicitly and the leading * backslash is dropped from the string. * Note that xcstart must appear before operator, as explained above! * Also whitespace (comment) must appear before operator. */ #line 4751 "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 419 "scan.l" #line 5047 "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 421 "scan.l" { /* ignore */ } YY_BREAK case 2: YY_RULE_SETUP #line 425 "scan.l" { SET_YYLLOC(); return SQL_COMMENT; } YY_BREAK case 3: YY_RULE_SETUP #line 430 "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 440 "scan.l" { (yyextra->xcdepth)++; /* Put back any characters past slash-star; see above */ yyless(2); } YY_BREAK case 5: YY_RULE_SETUP #line 446 "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 457 "scan.l" { /* ignore */ } YY_BREAK case 7: YY_RULE_SETUP #line 461 "scan.l" { /* ignore */ } YY_BREAK case 8: YY_RULE_SETUP #line 465 "scan.l" { /* ignore */ } YY_BREAK case YY_STATE_EOF(xc): #line 469 "scan.l" { yyerror("unterminated /* comment"); } YY_BREAK /* */ case 9: YY_RULE_SETUP #line 474 "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 487 "scan.l" case 11: /* rule 11 can match eol */ YY_RULE_SETUP #line 487 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case YY_STATE_EOF(xb): #line 490 "scan.l" { yyerror("unterminated bit string literal"); } YY_BREAK case 12: YY_RULE_SETUP #line 492 "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 504 "scan.l" { yyerror("unterminated hexadecimal string literal"); } YY_BREAK case 13: YY_RULE_SETUP #line 506 "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 533 "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 543 "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 550 "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 562 "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 574 "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 583 "scan.l" case 20: /* rule 20 can match eol */ #line 584 "scan.l" YY_RULE_SETUP case YY_STATE_EOF(xqs): #line 584 "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 625 "scan.l" { addlitchar('\'', yyscanner); } YY_BREAK case 22: /* rule 22 can match eol */ YY_RULE_SETUP #line 628 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case 23: /* rule 23 can match eol */ YY_RULE_SETUP #line 631 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case 24: YY_RULE_SETUP #line 634 "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 662 "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 683 "scan.l" case 27: /* rule 27 can match eol */ #line 684 "scan.l" YY_RULE_SETUP case YY_STATE_EOF(xeu): #line 684 "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 689 "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 698 "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 714 "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 722 "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 730 "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 734 "scan.l" { yyerror("unterminated quoted string"); } YY_BREAK case 33: YY_RULE_SETUP #line 736 "scan.l" { SET_YYLLOC(); yyextra->dolqstart = pstrdup(yytext); BEGIN(xdolq); startlit(); } YY_BREAK case 34: YY_RULE_SETUP #line 742 "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 749 "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 770 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case 37: YY_RULE_SETUP #line 773 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case 38: YY_RULE_SETUP #line 776 "scan.l" { /* This is only needed for $ inside the quoted text */ addlitchar(yytext[0], yyscanner); } YY_BREAK case YY_STATE_EOF(xdolq): #line 780 "scan.l" { yyerror("unterminated dollar-quoted string"); } YY_BREAK case 39: YY_RULE_SETUP #line 782 "scan.l" { SET_YYLLOC(); BEGIN(xd); startlit(); } YY_BREAK case 40: YY_RULE_SETUP #line 787 "scan.l" { SET_YYLLOC(); BEGIN(xui); startlit(); } YY_BREAK case 41: YY_RULE_SETUP #line 792 "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 805 "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 814 "scan.l" { addlitchar('"', yyscanner); } YY_BREAK case 44: /* rule 44 can match eol */ YY_RULE_SETUP #line 817 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case YY_STATE_EOF(xd): case YY_STATE_EOF(xui): #line 820 "scan.l" { yyerror("unterminated quoted identifier"); } YY_BREAK case 45: YY_RULE_SETUP #line 822 "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 835 "scan.l" { SET_YYLLOC(); return TYPECAST; } YY_BREAK case 47: YY_RULE_SETUP #line 840 "scan.l" { SET_YYLLOC(); return DOT_DOT; } YY_BREAK case 48: YY_RULE_SETUP #line 845 "scan.l" { SET_YYLLOC(); return COLON_EQUALS; } YY_BREAK case 49: YY_RULE_SETUP #line 850 "scan.l" { SET_YYLLOC(); return EQUALS_GREATER; } YY_BREAK case 50: YY_RULE_SETUP #line 855 "scan.l" { SET_YYLLOC(); return LESS_EQUALS; } YY_BREAK case 51: YY_RULE_SETUP #line 860 "scan.l" { SET_YYLLOC(); return GREATER_EQUALS; } YY_BREAK case 52: YY_RULE_SETUP #line 865 "scan.l" { /* We accept both "<>" and "!=" as meaning NOT_EQUALS */ SET_YYLLOC(); return NOT_EQUALS; } YY_BREAK case 53: YY_RULE_SETUP #line 871 "scan.l" { /* We accept both "<>" and "!=" as meaning NOT_EQUALS */ SET_YYLLOC(); return NOT_EQUALS; } YY_BREAK case 54: YY_RULE_SETUP #line 877 "scan.l" { SET_YYLLOC(); return yytext[0]; } YY_BREAK case 55: YY_RULE_SETUP #line 882 "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 990 "scan.l" { SET_YYLLOC(); yylval->ival = atol(yytext + 1); return PARAM; } YY_BREAK case 57: YY_RULE_SETUP #line 996 "scan.l" { SET_YYLLOC(); return process_integer_literal(yytext, yylval); } YY_BREAK case 58: YY_RULE_SETUP #line 1000 "scan.l" { SET_YYLLOC(); yylval->str = pstrdup(yytext); return FCONST; } YY_BREAK case 59: YY_RULE_SETUP #line 1005 "scan.l" { /* throw back the .., and treat as integer */ yyless(yyleng - 2); SET_YYLLOC(); return process_integer_literal(yytext, yylval); } YY_BREAK case 60: YY_RULE_SETUP #line 1011 "scan.l" { SET_YYLLOC(); yylval->str = pstrdup(yytext); return FCONST; } YY_BREAK case 61: YY_RULE_SETUP #line 1016 "scan.l" { /* * throw back the [Ee], and figure out whether what * remains is an {integer} or {decimal}. */ yyless(yyleng - 1); SET_YYLLOC(); return process_integer_literal(yytext, yylval); } YY_BREAK case 62: YY_RULE_SETUP #line 1025 "scan.l" { /* throw back the [Ee][+-], and proceed as above */ yyless(yyleng - 2); SET_YYLLOC(); return process_integer_literal(yytext, yylval); } YY_BREAK case 63: YY_RULE_SETUP #line 1033 "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 64: YY_RULE_SETUP #line 1059 "scan.l" { SET_YYLLOC(); return yytext[0]; } YY_BREAK case YY_STATE_EOF(INITIAL): #line 1064 "scan.l" { SET_YYLLOC(); yyterminate(); } YY_BREAK case 65: YY_RULE_SETUP #line 1069 "scan.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK #line 5989 "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 1069 "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 {integer}. Note this will also do the right thing with {decimal}, * ie digits and a decimal point. */ static int process_integer_literal(const char *token, YYSTYPE *lval) { int val; char *endptr; errno = 0; val = strtoint(token, &endptr, 10); if (*endptr != '\0' || errno == ERANGE) { /* integer too large (or contains decimal pt), treat it as a float */ lval->str = pstrdup(token); return FCONST; } lval->ival = val; return ICONST; } static void addunicode(pg_wchar c, core_yyscan_t yyscanner) { ScannerCallbackState scbstate; char buf[MAX_UNICODE_EQUIVALENT_STRING + 1]; if (!is_valid_unicode_codepoint(c)) yyerror("invalid Unicode escape value"); /* * We expect that pg_unicode_to_server() will complain about any * unconvertible code point, so we don't have to set saw_non_ascii. */ setup_scanner_errposition_callback(&scbstate, yyscanner, *(yylloc)); pg_unicode_to_server(c, (unsigned char *) buf); cancel_scanner_errposition_callback(&scbstate); addlit(buf, strlen(buf), yyscanner); } static unsigned char unescape_single_char(unsigned char c, core_yyscan_t yyscanner) { switch (c) { case 'b': return '\b'; case 'f': return '\f'; case 'n': return '\n'; case 'r': return '\r'; case 't': return '\t'; default: /* check for backslash followed by non-7-bit-ASCII */ if (c == '\0' || IS_HIGHBIT_SET(c)) yyextra->saw_non_ascii = true; return c; } } static void check_string_escape_warning(unsigned char ychar, core_yyscan_t yyscanner) { if (ychar == '\'') { if (yyextra->warn_on_first_escape && yyextra->escape_string_warning) ereport(WARNING, (errcode(ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER), errmsg("nonstandard use of \\' in a string literal"), errhint("Use '' to write quotes in strings, or use the escape string syntax (E'...')."), lexer_errposition())); yyextra->warn_on_first_escape = false; /* warn only once per string */ } else if (ychar == '\\') { if (yyextra->warn_on_first_escape && yyextra->escape_string_warning) ereport(WARNING, (errcode(ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER), errmsg("nonstandard use of \\\\ in a string literal"), errhint("Use the escape string syntax for backslashes, e.g., E'\\\\'."), lexer_errposition())); yyextra->warn_on_first_escape = false; /* warn only once per string */ } else check_escape_warning(yyscanner); } static void check_escape_warning(core_yyscan_t yyscanner) { if (yyextra->warn_on_first_escape && yyextra->escape_string_warning) ereport(WARNING, (errcode(ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER), errmsg("nonstandard use of escape in a string literal"), errhint("Use the escape string syntax for escapes, e.g., E'\\r\\n'."), lexer_errposition())); yyextra->warn_on_first_escape = false; /* warn only once per string */ } /* * Interface functions to make flex use palloc() instead of malloc(). * It'd be better to make these static, but flex insists otherwise. */ void * core_yyalloc(yy_size_t bytes, core_yyscan_t yyscanner) { return palloc(bytes); } void * core_yyrealloc(void *ptr, yy_size_t bytes, core_yyscan_t yyscanner) { if (ptr) return repalloc(ptr, bytes); else return palloc(bytes); } pg_query-4.2.3/ext/pg_query/src_common_encnames.c0000644000004100000410000000672514510636647022240 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_enc2name_tbl *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * encnames.c * Encoding names and routines for working with them. * * Portions Copyright (c) 2001-2022, PostgreSQL Global Development Group * * IDENTIFICATION * src/common/encnames.c * *------------------------------------------------------------------------- */ #include "c.h" #include #include #include "mb/pg_wchar.h" /* ---------- * All encoding names, sorted: *** A L P H A B E T I C *** * * All names must be without irrelevant chars, search routines use * isalnum() chars only. It means ISO-8859-1, iso_8859-1 and Iso8859_1 * are always converted to 'iso88591'. All must be lower case. * * The table doesn't contain 'cs' aliases (like csISOLatin1). It's needed? * * Karel Zak, Aug 2001 * ---------- */ typedef struct pg_encname { const char *name; pg_enc encoding; } pg_encname; /* ---------- * These are "official" encoding names. * XXX must be sorted by the same order as enum pg_enc (in mb/pg_wchar.h) * ---------- */ #ifndef WIN32 #define DEF_ENC2NAME(name, codepage) { #name, PG_##name } #else #define DEF_ENC2NAME(name, codepage) { #name, PG_##name, codepage } #endif const pg_enc2name pg_enc2name_tbl[] = { DEF_ENC2NAME(SQL_ASCII, 0), DEF_ENC2NAME(EUC_JP, 20932), DEF_ENC2NAME(EUC_CN, 20936), DEF_ENC2NAME(EUC_KR, 51949), DEF_ENC2NAME(EUC_TW, 0), DEF_ENC2NAME(EUC_JIS_2004, 20932), DEF_ENC2NAME(UTF8, 65001), DEF_ENC2NAME(MULE_INTERNAL, 0), DEF_ENC2NAME(LATIN1, 28591), DEF_ENC2NAME(LATIN2, 28592), DEF_ENC2NAME(LATIN3, 28593), DEF_ENC2NAME(LATIN4, 28594), DEF_ENC2NAME(LATIN5, 28599), DEF_ENC2NAME(LATIN6, 0), DEF_ENC2NAME(LATIN7, 0), DEF_ENC2NAME(LATIN8, 0), DEF_ENC2NAME(LATIN9, 28605), DEF_ENC2NAME(LATIN10, 0), DEF_ENC2NAME(WIN1256, 1256), DEF_ENC2NAME(WIN1258, 1258), DEF_ENC2NAME(WIN866, 866), DEF_ENC2NAME(WIN874, 874), DEF_ENC2NAME(KOI8R, 20866), DEF_ENC2NAME(WIN1251, 1251), DEF_ENC2NAME(WIN1252, 1252), DEF_ENC2NAME(ISO_8859_5, 28595), DEF_ENC2NAME(ISO_8859_6, 28596), DEF_ENC2NAME(ISO_8859_7, 28597), DEF_ENC2NAME(ISO_8859_8, 28598), DEF_ENC2NAME(WIN1250, 1250), DEF_ENC2NAME(WIN1253, 1253), DEF_ENC2NAME(WIN1254, 1254), DEF_ENC2NAME(WIN1255, 1255), DEF_ENC2NAME(WIN1257, 1257), DEF_ENC2NAME(KOI8U, 21866), DEF_ENC2NAME(SJIS, 932), DEF_ENC2NAME(BIG5, 950), DEF_ENC2NAME(GBK, 936), DEF_ENC2NAME(UHC, 949), DEF_ENC2NAME(GB18030, 54936), DEF_ENC2NAME(JOHAB, 0), DEF_ENC2NAME(SHIFT_JIS_2004, 932) }; /* ---------- * These are encoding names for gettext. * * This covers all encodings except MULE_INTERNAL, which is alien to gettext. * ---------- */ /* * Table of encoding names for ICU (currently covers backend encodings only) * * Reference: * * NULL entries are not supported by ICU, or their mapping is unclear. */ /* * Is this encoding supported by ICU? */ /* * Returns ICU's name for encoding, or NULL if not supported */ /* ---------- * Encoding checks, for error returns -1 else encoding id * ---------- */ /* * Remove irrelevant chars from encoding name, store at *newkey * * (Caller's responsibility to provide a large enough buffer) */ /* * Search encoding by encoding name * * Returns encoding ID, or -1 if not recognized */ pg_query-4.2.3/ext/pg_query/src_backend_utils_mmgr_aset.c0000644000004100000410000013666714510636647023755 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - AllocSetContextCreateInternal * - context_freelists * - AllocSetMethods * - AllocSetAlloc * - AllocSetFreeIndex * - AllocSetFree * - AllocSetRealloc * - AllocSetReset * - AllocSetDelete * - AllocSetGetChunkSpace * - AllocSetIsEmpty * - AllocSetStats * - AllocSetCheck * - AllocSetDeleteFreeList *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * aset.c * Allocation set definitions. * * AllocSet is our standard implementation of the abstract MemoryContext * type. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/backend/utils/mmgr/aset.c * * NOTE: * This is a new (Feb. 05, 1999) implementation of the allocation set * routines. AllocSet...() does not use OrderedSet...() any more. * Instead it manages allocations in a block pool by itself, combining * many small allocations in a few bigger blocks. AllocSetFree() normally * doesn't free() memory really. It just add's the free'd area to some * list for later reuse by AllocSetAlloc(). All memory blocks are free()'d * at once on AllocSetReset(), which happens when the memory context gets * destroyed. * Jan Wieck * * Performance improvement from Tom Lane, 8/99: for extremely large request * sizes, we do want to be able to give the memory back to free() as soon * as it is pfree()'d. Otherwise we risk tying up a lot of memory in * freelist entries that might never be usable. This is specially needed * when the caller is repeatedly repalloc()'ing a block bigger and bigger; * the previous instances of the block were guaranteed to be wasted until * AllocSetReset() under the old way. * * Further improvement 12/00: as the code stood, request sizes in the * midrange between "small" and "large" were handled very inefficiently, * because any sufficiently large free chunk would be used to satisfy a * request, even if it was much larger than necessary. This led to more * and more wasted space in allocated chunks over time. To fix, get rid * of the midrange behavior: we now handle only "small" power-of-2-size * chunks as chunks. Anything "large" is passed off to malloc(). Change * the number of freelists to change the small/large boundary. * *------------------------------------------------------------------------- */ #include "postgres.h" #include "port/pg_bitutils.h" #include "utils/memdebug.h" #include "utils/memutils.h" /*-------------------- * Chunk freelist k holds chunks of size 1 << (k + ALLOC_MINBITS), * for k = 0 .. ALLOCSET_NUM_FREELISTS-1. * * Note that all chunks in the freelists have power-of-2 sizes. This * improves recyclability: we may waste some space, but the wasted space * should stay pretty constant as requests are made and released. * * A request too large for the last freelist is handled by allocating a * dedicated block from malloc(). The block still has a block header and * chunk header, but when the chunk is freed we'll return the whole block * to malloc(), not put it on our freelists. * * CAUTION: ALLOC_MINBITS must be large enough so that * 1< (1 << ALLOC_MINBITS)) { /*---------- * At this point we must compute ceil(log2(size >> ALLOC_MINBITS)). * This is the same as * pg_leftmost_one_pos32((size - 1) >> ALLOC_MINBITS) + 1 * or equivalently * pg_leftmost_one_pos32(size - 1) - ALLOC_MINBITS + 1 * * However, rather than just calling that function, we duplicate the * logic here, allowing an additional optimization. It's reasonable * to assume that ALLOC_CHUNK_LIMIT fits in 16 bits, so we can unroll * the byte-at-a-time loop in pg_leftmost_one_pos32 and just handle * the last two bytes. * * Yes, this function is enough of a hot-spot to make it worth this * much trouble. *---------- */ #ifdef HAVE__BUILTIN_CLZ idx = 31 - __builtin_clz((uint32) size - 1) - ALLOC_MINBITS + 1; #else uint32 t, tsize; /* Statically assert that we only have a 16-bit input value. */ StaticAssertStmt(ALLOC_CHUNK_LIMIT < (1 << 16), "ALLOC_CHUNK_LIMIT must be less than 64kB"); tsize = size - 1; t = tsize >> 8; idx = t ? pg_leftmost_one_pos[t] + 8 : pg_leftmost_one_pos[tsize]; idx -= ALLOC_MINBITS - 1; #endif Assert(idx < ALLOCSET_NUM_FREELISTS); } else idx = 0; return idx; } /* * Public routines */ /* * AllocSetContextCreateInternal * Create a new AllocSet context. * * parent: parent context, or NULL if top-level context * name: name of context (must be statically allocated) * minContextSize: minimum context size * initBlockSize: initial allocation block size * maxBlockSize: maximum allocation block size * * Most callers should abstract the context size parameters using a macro * such as ALLOCSET_DEFAULT_SIZES. * * Note: don't call this directly; go through the wrapper macro * AllocSetContextCreate. */ MemoryContext AllocSetContextCreateInternal(MemoryContext parent, const char *name, Size minContextSize, Size initBlockSize, Size maxBlockSize) { int freeListIndex; Size firstBlockSize; AllocSet set; AllocBlock block; /* Assert we padded AllocChunkData properly */ StaticAssertStmt(ALLOC_CHUNKHDRSZ == MAXALIGN(ALLOC_CHUNKHDRSZ), "sizeof(AllocChunkData) is not maxaligned"); StaticAssertStmt(offsetof(AllocChunkData, aset) + sizeof(MemoryContext) == ALLOC_CHUNKHDRSZ, "padding calculation in AllocChunkData is wrong"); /* * First, validate allocation parameters. Once these were regular runtime * test and elog's, but in practice Asserts seem sufficient because nobody * varies their parameters at runtime. We somewhat arbitrarily enforce a * minimum 1K block size. */ Assert(initBlockSize == MAXALIGN(initBlockSize) && initBlockSize >= 1024); Assert(maxBlockSize == MAXALIGN(maxBlockSize) && maxBlockSize >= initBlockSize && AllocHugeSizeIsValid(maxBlockSize)); /* must be safe to double */ Assert(minContextSize == 0 || (minContextSize == MAXALIGN(minContextSize) && minContextSize >= 1024 && minContextSize <= maxBlockSize)); /* * Check whether the parameters match either available freelist. We do * not need to demand a match of maxBlockSize. */ if (minContextSize == ALLOCSET_DEFAULT_MINSIZE && initBlockSize == ALLOCSET_DEFAULT_INITSIZE) freeListIndex = 0; else if (minContextSize == ALLOCSET_SMALL_MINSIZE && initBlockSize == ALLOCSET_SMALL_INITSIZE) freeListIndex = 1; else freeListIndex = -1; /* * If a suitable freelist entry exists, just recycle that context. */ if (freeListIndex >= 0) { AllocSetFreeList *freelist = &context_freelists[freeListIndex]; if (freelist->first_free != NULL) { /* Remove entry from freelist */ set = freelist->first_free; freelist->first_free = (AllocSet) set->header.nextchild; freelist->num_free--; /* Update its maxBlockSize; everything else should be OK */ set->maxBlockSize = maxBlockSize; /* Reinitialize its header, installing correct name and parent */ MemoryContextCreate((MemoryContext) set, T_AllocSetContext, &AllocSetMethods, parent, name); ((MemoryContext) set)->mem_allocated = set->keeper->endptr - ((char *) set); return (MemoryContext) set; } } /* Determine size of initial block */ firstBlockSize = MAXALIGN(sizeof(AllocSetContext)) + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; if (minContextSize != 0) firstBlockSize = Max(firstBlockSize, minContextSize); else firstBlockSize = Max(firstBlockSize, initBlockSize); /* * Allocate the initial block. Unlike other aset.c blocks, it starts with * the context header and its block header follows that. */ set = (AllocSet) malloc(firstBlockSize); if (set == NULL) { if (TopMemoryContext) MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), errdetail("Failed while creating memory context \"%s\".", name))); } /* * Avoid writing code that can fail between here and MemoryContextCreate; * we'd leak the header/initial block if we ereport in this stretch. */ /* Fill in the initial block's block header */ block = (AllocBlock) (((char *) set) + MAXALIGN(sizeof(AllocSetContext))); block->aset = set; block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ; block->endptr = ((char *) set) + firstBlockSize; block->prev = NULL; block->next = NULL; /* Mark unallocated space NOACCESS; leave the block header alone. */ VALGRIND_MAKE_MEM_NOACCESS(block->freeptr, block->endptr - block->freeptr); /* Remember block as part of block list */ set->blocks = block; /* Mark block as not to be released at reset time */ set->keeper = block; /* Finish filling in aset-specific parts of the context header */ MemSetAligned(set->freelist, 0, sizeof(set->freelist)); set->initBlockSize = initBlockSize; set->maxBlockSize = maxBlockSize; set->nextBlockSize = initBlockSize; set->freeListIndex = freeListIndex; /* * Compute the allocation chunk size limit for this context. It can't be * more than ALLOC_CHUNK_LIMIT because of the fixed number of freelists. * If maxBlockSize is small then requests exceeding the maxBlockSize, or * even a significant fraction of it, should be treated as large chunks * too. For the typical case of maxBlockSize a power of 2, the chunk size * limit will be at most 1/8th maxBlockSize, so that given a stream of * requests that are all the maximum chunk size we will waste at most * 1/8th of the allocated space. * * We have to have allocChunkLimit a power of two, because the requested * and actually-allocated sizes of any chunk must be on the same side of * the limit, else we get confused about whether the chunk is "big". * * Also, allocChunkLimit must not exceed ALLOCSET_SEPARATE_THRESHOLD. */ StaticAssertStmt(ALLOC_CHUNK_LIMIT == ALLOCSET_SEPARATE_THRESHOLD, "ALLOC_CHUNK_LIMIT != ALLOCSET_SEPARATE_THRESHOLD"); set->allocChunkLimit = ALLOC_CHUNK_LIMIT; while ((Size) (set->allocChunkLimit + ALLOC_CHUNKHDRSZ) > (Size) ((maxBlockSize - ALLOC_BLOCKHDRSZ) / ALLOC_CHUNK_FRACTION)) set->allocChunkLimit >>= 1; /* Finally, do the type-independent part of context creation */ MemoryContextCreate((MemoryContext) set, T_AllocSetContext, &AllocSetMethods, parent, name); ((MemoryContext) set)->mem_allocated = firstBlockSize; return (MemoryContext) set; } /* * AllocSetReset * Frees all memory which is allocated in the given set. * * Actually, this routine has some discretion about what to do. * It should mark all allocated chunks freed, but it need not necessarily * give back all the resources the set owns. Our actual implementation is * that we give back all but the "keeper" block (which we must keep, since * it shares a malloc chunk with the context header). In this way, we don't * thrash malloc() when a context is repeatedly reset after small allocations, * which is typical behavior for per-tuple contexts. */ static void AllocSetReset(MemoryContext context) { AllocSet set = (AllocSet) context; AllocBlock block; Size keepersize PG_USED_FOR_ASSERTS_ONLY = set->keeper->endptr - ((char *) set); AssertArg(AllocSetIsValid(set)); #ifdef MEMORY_CONTEXT_CHECKING /* Check for corruption and leaks before freeing */ AllocSetCheck(context); #endif /* Clear chunk freelists */ MemSetAligned(set->freelist, 0, sizeof(set->freelist)); block = set->blocks; /* New blocks list will be just the keeper block */ set->blocks = set->keeper; while (block != NULL) { AllocBlock next = block->next; if (block == set->keeper) { /* Reset the block, but don't return it to malloc */ char *datastart = ((char *) block) + ALLOC_BLOCKHDRSZ; #ifdef CLOBBER_FREED_MEMORY wipe_mem(datastart, block->freeptr - datastart); #else /* wipe_mem() would have done this */ VALGRIND_MAKE_MEM_NOACCESS(datastart, block->freeptr - datastart); #endif block->freeptr = datastart; block->prev = NULL; block->next = NULL; } else { /* Normal case, release the block */ context->mem_allocated -= block->endptr - ((char *) block); #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, block->freeptr - ((char *) block)); #endif free(block); } block = next; } Assert(context->mem_allocated == keepersize); /* Reset block size allocation sequence, too */ set->nextBlockSize = set->initBlockSize; } /* * AllocSetDelete * Frees all memory which is allocated in the given set, * in preparation for deletion of the set. * * Unlike AllocSetReset, this *must* free all resources of the set. */ static void AllocSetDelete(MemoryContext context) { AllocSet set = (AllocSet) context; AllocBlock block = set->blocks; Size keepersize PG_USED_FOR_ASSERTS_ONLY = set->keeper->endptr - ((char *) set); AssertArg(AllocSetIsValid(set)); #ifdef MEMORY_CONTEXT_CHECKING /* Check for corruption and leaks before freeing */ AllocSetCheck(context); #endif /* * If the context is a candidate for a freelist, put it into that freelist * instead of destroying it. */ if (set->freeListIndex >= 0) { AllocSetFreeList *freelist = &context_freelists[set->freeListIndex]; /* * Reset the context, if it needs it, so that we aren't hanging on to * more than the initial malloc chunk. */ if (!context->isReset) MemoryContextResetOnly(context); /* * If the freelist is full, just discard what's already in it. See * comments with context_freelists[]. */ if (freelist->num_free >= MAX_FREE_CONTEXTS) { while (freelist->first_free != NULL) { AllocSetContext *oldset = freelist->first_free; freelist->first_free = (AllocSetContext *) oldset->header.nextchild; freelist->num_free--; /* All that remains is to free the header/initial block */ free(oldset); } Assert(freelist->num_free == 0); } /* Now add the just-deleted context to the freelist. */ set->header.nextchild = (MemoryContext) freelist->first_free; freelist->first_free = set; freelist->num_free++; return; } /* Free all blocks, except the keeper which is part of context header */ while (block != NULL) { AllocBlock next = block->next; if (block != set->keeper) context->mem_allocated -= block->endptr - ((char *) block); #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, block->freeptr - ((char *) block)); #endif if (block != set->keeper) free(block); block = next; } Assert(context->mem_allocated == keepersize); /* Finally, free the context header, including the keeper block */ free(set); } /* * AllocSetAlloc * Returns pointer to allocated memory of given size or NULL if * request could not be completed; memory is added to the set. * * No request may exceed: * MAXALIGN_DOWN(SIZE_MAX) - ALLOC_BLOCKHDRSZ - ALLOC_CHUNKHDRSZ * All callers use a much-lower limit. * * Note: when using valgrind, it doesn't matter how the returned allocation * is marked, as mcxt.c will set it to UNDEFINED. In some paths we will * return space that is marked NOACCESS - AllocSetRealloc has to beware! */ static void * AllocSetAlloc(MemoryContext context, Size size) { AllocSet set = (AllocSet) context; AllocBlock block; AllocChunk chunk; int fidx; Size chunk_size; Size blksize; AssertArg(AllocSetIsValid(set)); /* * If requested size exceeds maximum for chunks, allocate an entire block * for this request. */ if (size > set->allocChunkLimit) { chunk_size = MAXALIGN(size); blksize = chunk_size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; block = (AllocBlock) malloc(blksize); if (block == NULL) return NULL; context->mem_allocated += blksize; block->aset = set; block->freeptr = block->endptr = ((char *) block) + blksize; chunk = (AllocChunk) (((char *) block) + ALLOC_BLOCKHDRSZ); chunk->aset = set; chunk->size = chunk_size; #ifdef MEMORY_CONTEXT_CHECKING chunk->requested_size = size; /* set mark to catch clobber of "unused" space */ if (size < chunk_size) set_sentinel(AllocChunkGetPointer(chunk), size); #endif #ifdef RANDOMIZE_ALLOCATED_MEMORY /* fill the allocated space with junk */ randomize_mem((char *) AllocChunkGetPointer(chunk), size); #endif /* * Stick the new block underneath the active allocation block, if any, * so that we don't lose the use of the space remaining therein. */ if (set->blocks != NULL) { block->prev = set->blocks; block->next = set->blocks->next; if (block->next) block->next->prev = block; set->blocks->next = block; } else { block->prev = NULL; block->next = NULL; set->blocks = block; } /* Ensure any padding bytes are marked NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS((char *) AllocChunkGetPointer(chunk) + size, chunk_size - size); /* Disallow external access to private part of chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return AllocChunkGetPointer(chunk); } /* * Request is small enough to be treated as a chunk. Look in the * corresponding free list to see if there is a free chunk we could reuse. * If one is found, remove it from the free list, make it again a member * of the alloc set and return its data address. */ fidx = AllocSetFreeIndex(size); chunk = set->freelist[fidx]; if (chunk != NULL) { Assert(chunk->size >= size); set->freelist[fidx] = (AllocChunk) chunk->aset; chunk->aset = (void *) set; #ifdef MEMORY_CONTEXT_CHECKING chunk->requested_size = size; /* set mark to catch clobber of "unused" space */ if (size < chunk->size) set_sentinel(AllocChunkGetPointer(chunk), size); #endif #ifdef RANDOMIZE_ALLOCATED_MEMORY /* fill the allocated space with junk */ randomize_mem((char *) AllocChunkGetPointer(chunk), size); #endif /* Ensure any padding bytes are marked NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS((char *) AllocChunkGetPointer(chunk) + size, chunk->size - size); /* Disallow external access to private part of chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return AllocChunkGetPointer(chunk); } /* * Choose the actual chunk size to allocate. */ chunk_size = (1 << ALLOC_MINBITS) << fidx; Assert(chunk_size >= size); /* * If there is enough room in the active allocation block, we will put the * chunk into that block. Else must start a new one. */ if ((block = set->blocks) != NULL) { Size availspace = block->endptr - block->freeptr; if (availspace < (chunk_size + ALLOC_CHUNKHDRSZ)) { /* * The existing active (top) block does not have enough room for * the requested allocation, but it might still have a useful * amount of space in it. Once we push it down in the block list, * we'll never try to allocate more space from it. So, before we * do that, carve up its free space into chunks that we can put on * the set's freelists. * * Because we can only get here when there's less than * ALLOC_CHUNK_LIMIT left in the block, this loop cannot iterate * more than ALLOCSET_NUM_FREELISTS-1 times. */ while (availspace >= ((1 << ALLOC_MINBITS) + ALLOC_CHUNKHDRSZ)) { Size availchunk = availspace - ALLOC_CHUNKHDRSZ; int a_fidx = AllocSetFreeIndex(availchunk); /* * In most cases, we'll get back the index of the next larger * freelist than the one we need to put this chunk on. The * exception is when availchunk is exactly a power of 2. */ if (availchunk != ((Size) 1 << (a_fidx + ALLOC_MINBITS))) { a_fidx--; Assert(a_fidx >= 0); availchunk = ((Size) 1 << (a_fidx + ALLOC_MINBITS)); } chunk = (AllocChunk) (block->freeptr); /* Prepare to initialize the chunk header. */ VALGRIND_MAKE_MEM_UNDEFINED(chunk, ALLOC_CHUNKHDRSZ); block->freeptr += (availchunk + ALLOC_CHUNKHDRSZ); availspace -= (availchunk + ALLOC_CHUNKHDRSZ); chunk->size = availchunk; #ifdef MEMORY_CONTEXT_CHECKING chunk->requested_size = 0; /* mark it free */ #endif chunk->aset = (void *) set->freelist[a_fidx]; set->freelist[a_fidx] = chunk; } /* Mark that we need to create a new block */ block = NULL; } } /* * Time to create a new regular (multi-chunk) block? */ if (block == NULL) { Size required_size; /* * The first such block has size initBlockSize, and we double the * space in each succeeding block, but not more than maxBlockSize. */ blksize = set->nextBlockSize; set->nextBlockSize <<= 1; if (set->nextBlockSize > set->maxBlockSize) set->nextBlockSize = set->maxBlockSize; /* * If initBlockSize is less than ALLOC_CHUNK_LIMIT, we could need more * space... but try to keep it a power of 2. */ required_size = chunk_size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; while (blksize < required_size) blksize <<= 1; /* Try to allocate it */ block = (AllocBlock) malloc(blksize); /* * We could be asking for pretty big blocks here, so cope if malloc * fails. But give up if there's less than 1 MB or so available... */ while (block == NULL && blksize > 1024 * 1024) { blksize >>= 1; if (blksize < required_size) break; block = (AllocBlock) malloc(blksize); } if (block == NULL) return NULL; context->mem_allocated += blksize; block->aset = set; block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ; block->endptr = ((char *) block) + blksize; /* Mark unallocated space NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS(block->freeptr, blksize - ALLOC_BLOCKHDRSZ); block->prev = NULL; block->next = set->blocks; if (block->next) block->next->prev = block; set->blocks = block; } /* * OK, do the allocation */ chunk = (AllocChunk) (block->freeptr); /* Prepare to initialize the chunk header. */ VALGRIND_MAKE_MEM_UNDEFINED(chunk, ALLOC_CHUNKHDRSZ); block->freeptr += (chunk_size + ALLOC_CHUNKHDRSZ); Assert(block->freeptr <= block->endptr); chunk->aset = (void *) set; chunk->size = chunk_size; #ifdef MEMORY_CONTEXT_CHECKING chunk->requested_size = size; /* set mark to catch clobber of "unused" space */ if (size < chunk->size) set_sentinel(AllocChunkGetPointer(chunk), size); #endif #ifdef RANDOMIZE_ALLOCATED_MEMORY /* fill the allocated space with junk */ randomize_mem((char *) AllocChunkGetPointer(chunk), size); #endif /* Ensure any padding bytes are marked NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS((char *) AllocChunkGetPointer(chunk) + size, chunk_size - size); /* Disallow external access to private part of chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return AllocChunkGetPointer(chunk); } /* * AllocSetFree * Frees allocated memory; memory is removed from the set. */ static void AllocSetFree(MemoryContext context, void *pointer) { AllocSet set = (AllocSet) context; AllocChunk chunk = AllocPointerGetChunk(pointer); /* Allow access to private part of chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOCCHUNK_PRIVATE_LEN); #ifdef MEMORY_CONTEXT_CHECKING /* Test for someone scribbling on unused space in chunk */ if (chunk->requested_size < chunk->size) if (!sentinel_ok(pointer, chunk->requested_size)) elog(WARNING, "detected write past chunk end in %s %p", set->header.name, chunk); #endif if (chunk->size > set->allocChunkLimit) { /* * Big chunks are certain to have been allocated as single-chunk * blocks. Just unlink that block and return it to malloc(). */ AllocBlock block = (AllocBlock) (((char *) chunk) - ALLOC_BLOCKHDRSZ); /* * Try to verify that we have a sane block pointer: it should * reference the correct aset, and freeptr and endptr should point * just past the chunk. */ if (block->aset != set || block->freeptr != block->endptr || block->freeptr != ((char *) block) + (chunk->size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ)) elog(ERROR, "could not find block containing chunk %p", chunk); /* OK, remove block from aset's list and free it */ if (block->prev) block->prev->next = block->next; else set->blocks = block->next; if (block->next) block->next->prev = block->prev; context->mem_allocated -= block->endptr - ((char *) block); #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, block->freeptr - ((char *) block)); #endif free(block); } else { /* Normal case, put the chunk into appropriate freelist */ int fidx = AllocSetFreeIndex(chunk->size); chunk->aset = (void *) set->freelist[fidx]; #ifdef CLOBBER_FREED_MEMORY wipe_mem(pointer, chunk->size); #endif #ifdef MEMORY_CONTEXT_CHECKING /* Reset requested_size to 0 in chunks that are on freelist */ chunk->requested_size = 0; #endif set->freelist[fidx] = chunk; } } /* * AllocSetRealloc * Returns new pointer to allocated memory of given size or NULL if * request could not be completed; this memory is added to the set. * Memory associated with given pointer is copied into the new memory, * and the old memory is freed. * * Without MEMORY_CONTEXT_CHECKING, we don't know the old request size. This * makes our Valgrind client requests less-precise, hazarding false negatives. * (In principle, we could use VALGRIND_GET_VBITS() to rediscover the old * request size.) */ static void * AllocSetRealloc(MemoryContext context, void *pointer, Size size) { AllocSet set = (AllocSet) context; AllocChunk chunk = AllocPointerGetChunk(pointer); Size oldsize; /* Allow access to private part of chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOCCHUNK_PRIVATE_LEN); oldsize = chunk->size; #ifdef MEMORY_CONTEXT_CHECKING /* Test for someone scribbling on unused space in chunk */ if (chunk->requested_size < oldsize) if (!sentinel_ok(pointer, chunk->requested_size)) elog(WARNING, "detected write past chunk end in %s %p", set->header.name, chunk); #endif if (oldsize > set->allocChunkLimit) { /* * The chunk must have been allocated as a single-chunk block. Use * realloc() to make the containing block bigger, or smaller, with * minimum space wastage. */ AllocBlock block = (AllocBlock) (((char *) chunk) - ALLOC_BLOCKHDRSZ); Size chksize; Size blksize; Size oldblksize; /* * Try to verify that we have a sane block pointer: it should * reference the correct aset, and freeptr and endptr should point * just past the chunk. */ if (block->aset != set || block->freeptr != block->endptr || block->freeptr != ((char *) block) + (oldsize + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ)) elog(ERROR, "could not find block containing chunk %p", chunk); /* * Even if the new request is less than set->allocChunkLimit, we stick * with the single-chunk block approach. Therefore we need * chunk->size to be bigger than set->allocChunkLimit, so we don't get * confused about the chunk's status in future calls. */ chksize = Max(size, set->allocChunkLimit + 1); chksize = MAXALIGN(chksize); /* Do the realloc */ blksize = chksize + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; oldblksize = block->endptr - ((char *) block); block = (AllocBlock) realloc(block, blksize); if (block == NULL) { /* Disallow external access to private part of chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return NULL; } /* updated separately, not to underflow when (oldblksize > blksize) */ context->mem_allocated -= oldblksize; context->mem_allocated += blksize; block->freeptr = block->endptr = ((char *) block) + blksize; /* Update pointers since block has likely been moved */ chunk = (AllocChunk) (((char *) block) + ALLOC_BLOCKHDRSZ); pointer = AllocChunkGetPointer(chunk); if (block->prev) block->prev->next = block; else set->blocks = block; if (block->next) block->next->prev = block; chunk->size = chksize; #ifdef MEMORY_CONTEXT_CHECKING #ifdef RANDOMIZE_ALLOCATED_MEMORY /* We can only fill the extra space if we know the prior request */ if (size > chunk->requested_size) randomize_mem((char *) pointer + chunk->requested_size, size - chunk->requested_size); #endif /* * realloc() (or randomize_mem()) will have left any newly-allocated * part UNDEFINED, but we may need to adjust trailing bytes from the * old allocation. */ #ifdef USE_VALGRIND if (oldsize > chunk->requested_size) VALGRIND_MAKE_MEM_UNDEFINED((char *) pointer + chunk->requested_size, oldsize - chunk->requested_size); #endif chunk->requested_size = size; /* set mark to catch clobber of "unused" space */ if (size < chunk->size) set_sentinel(pointer, size); #else /* !MEMORY_CONTEXT_CHECKING */ /* * We don't know how much of the old chunk size was the actual * allocation; it could have been as small as one byte. We have to be * conservative and just mark the entire old portion DEFINED. */ VALGRIND_MAKE_MEM_DEFINED(pointer, oldsize); #endif /* Ensure any padding bytes are marked NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS((char *) pointer + size, chksize - size); /* Disallow external access to private part of chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return pointer; } /* * Chunk sizes are aligned to power of 2 in AllocSetAlloc(). Maybe the * allocated area already is >= the new size. (In particular, we will * fall out here if the requested size is a decrease.) */ else if (oldsize >= size) { #ifdef MEMORY_CONTEXT_CHECKING Size oldrequest = chunk->requested_size; #ifdef RANDOMIZE_ALLOCATED_MEMORY /* We can only fill the extra space if we know the prior request */ if (size > oldrequest) randomize_mem((char *) pointer + oldrequest, size - oldrequest); #endif chunk->requested_size = size; /* * If this is an increase, mark any newly-available part UNDEFINED. * Otherwise, mark the obsolete part NOACCESS. */ if (size > oldrequest) VALGRIND_MAKE_MEM_UNDEFINED((char *) pointer + oldrequest, size - oldrequest); else VALGRIND_MAKE_MEM_NOACCESS((char *) pointer + size, oldsize - size); /* set mark to catch clobber of "unused" space */ if (size < oldsize) set_sentinel(pointer, size); #else /* !MEMORY_CONTEXT_CHECKING */ /* * We don't have the information to determine whether we're growing * the old request or shrinking it, so we conservatively mark the * entire new allocation DEFINED. */ VALGRIND_MAKE_MEM_NOACCESS(pointer, oldsize); VALGRIND_MAKE_MEM_DEFINED(pointer, size); #endif /* Disallow external access to private part of chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return pointer; } else { /* * Enlarge-a-small-chunk case. We just do this by brute force, ie, * allocate a new chunk and copy the data. Since we know the existing * data isn't huge, this won't involve any great memcpy expense, so * it's not worth being smarter. (At one time we tried to avoid * memcpy when it was possible to enlarge the chunk in-place, but that * turns out to misbehave unpleasantly for repeated cycles of * palloc/repalloc/pfree: the eventually freed chunks go into the * wrong freelist for the next initial palloc request, and so we leak * memory indefinitely. See pgsql-hackers archives for 2007-08-11.) */ AllocPointer newPointer; /* allocate new chunk */ newPointer = AllocSetAlloc((MemoryContext) set, size); /* leave immediately if request was not completed */ if (newPointer == NULL) { /* Disallow external access to private part of chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return NULL; } /* * AllocSetAlloc() may have returned a region that is still NOACCESS. * Change it to UNDEFINED for the moment; memcpy() will then transfer * definedness from the old allocation to the new. If we know the old * allocation, copy just that much. Otherwise, make the entire old * chunk defined to avoid errors as we copy the currently-NOACCESS * trailing bytes. */ VALGRIND_MAKE_MEM_UNDEFINED(newPointer, size); #ifdef MEMORY_CONTEXT_CHECKING oldsize = chunk->requested_size; #else VALGRIND_MAKE_MEM_DEFINED(pointer, oldsize); #endif /* transfer existing data (certain to fit) */ memcpy(newPointer, pointer, oldsize); /* free old chunk */ AllocSetFree((MemoryContext) set, pointer); return newPointer; } } /* * AllocSetGetChunkSpace * Given a currently-allocated chunk, determine the total space * it occupies (including all memory-allocation overhead). */ static Size AllocSetGetChunkSpace(MemoryContext context, void *pointer) { AllocChunk chunk = AllocPointerGetChunk(pointer); Size result; VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOCCHUNK_PRIVATE_LEN); result = chunk->size + ALLOC_CHUNKHDRSZ; VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return result; } /* * AllocSetIsEmpty * Is an allocset empty of any allocated space? */ static bool AllocSetIsEmpty(MemoryContext context) { /* * For now, we say "empty" only if the context is new or just reset. We * could examine the freelists to determine if all space has been freed, * but it's not really worth the trouble for present uses of this * functionality. */ if (context->isReset) return true; return false; } /* * AllocSetStats * Compute stats about memory consumption of an allocset. * * printfunc: if not NULL, pass a human-readable stats string to this. * passthru: pass this pointer through to printfunc. * totals: if not NULL, add stats about this context into *totals. * print_to_stderr: print stats to stderr if true, elog otherwise. */ static 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; /* Include context header in totalspace */ totalspace = MAXALIGN(sizeof(AllocSetContext)); for (block = set->blocks; block != NULL; block = block->next) { nblocks++; totalspace += block->endptr - ((char *) block); freespace += block->endptr - block->freeptr; } for (fidx = 0; fidx < ALLOCSET_NUM_FREELISTS; fidx++) { AllocChunk chunk; for (chunk = set->freelist[fidx]; chunk != NULL; chunk = (AllocChunk) chunk->aset) { freechunks++; freespace += chunk->size + ALLOC_CHUNKHDRSZ; } } if (printfunc) { char stats_string[200]; snprintf(stats_string, sizeof(stats_string), "%zu total in %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! */ static void AllocSetCheck(MemoryContext context) { AllocSet set = (AllocSet) context; const char *name = set->header.name; AllocBlock prevblock; AllocBlock block; Size total_allocated = 0; for (prevblock = NULL, block = set->blocks; block != NULL; prevblock = block, block = block->next) { char *bpoz = ((char *) block) + ALLOC_BLOCKHDRSZ; long blk_used = block->freeptr - bpoz; long blk_data = 0; long nchunks = 0; if (set->keeper == block) total_allocated += block->endptr - ((char *) set); else total_allocated += block->endptr - ((char *) block); /* * Empty block - empty can be keeper-block only */ if (!blk_used) { if (set->keeper != block) elog(WARNING, "problem in alloc set %s: empty block %p", name, block); } /* * Check block header fields */ if (block->aset != set || block->prev != prevblock || block->freeptr < bpoz || block->freeptr > block->endptr) elog(WARNING, "problem in alloc set %s: corrupt header in block %p", name, block); /* * Chunk walker */ while (bpoz < block->freeptr) { AllocChunk chunk = (AllocChunk) bpoz; Size chsize, dsize; /* Allow access to private part of chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOCCHUNK_PRIVATE_LEN); chsize = chunk->size; /* aligned chunk size */ dsize = chunk->requested_size; /* real data */ /* * Check chunk size */ if (dsize > chsize) elog(WARNING, "problem in alloc set %s: req size > alloc size for chunk %p in block %p", name, chunk, block); if (chsize < (1 << ALLOC_MINBITS)) elog(WARNING, "problem in alloc set %s: bad size %zu for chunk %p in block %p", name, chsize, chunk, block); /* single-chunk block? */ if (chsize > set->allocChunkLimit && chsize + ALLOC_CHUNKHDRSZ != blk_used) elog(WARNING, "problem in alloc set %s: bad single-chunk %p in block %p", name, chunk, block); /* * If chunk is allocated, check for correct aset pointer. (If it's * free, the aset is the freelist pointer, which we can't check as * easily...) Note this is an incomplete test, since palloc(0) * produces an allocated chunk with requested_size == 0. */ if (dsize > 0 && chunk->aset != (void *) set) elog(WARNING, "problem in alloc set %s: bogus aset link in block %p, chunk %p", name, block, chunk); /* * Check for overwrite of padding space in an allocated chunk. */ if (chunk->aset == (void *) set && dsize < chsize && !sentinel_ok(chunk, ALLOC_CHUNKHDRSZ + dsize)) elog(WARNING, "problem in alloc set %s: detected write past chunk end in block %p, chunk %p", name, block, chunk); /* * If chunk is allocated, disallow external access to private part * of chunk header. */ if (chunk->aset == (void *) set) VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); blk_data += chsize; nchunks++; bpoz += ALLOC_CHUNKHDRSZ + chsize; } if ((blk_data + (nchunks * ALLOC_CHUNKHDRSZ)) != blk_used) elog(WARNING, "problem in alloc set %s: found inconsistent memory block %p", name, block); } Assert(total_allocated == context->mem_allocated); } #endif /* MEMORY_CONTEXT_CHECKING */ void AllocSetDeleteFreeList(MemoryContext context) { AllocSet set = (AllocSet) context; if (set->freeListIndex >= 0) { AllocSetFreeList *freelist = &context_freelists[set->freeListIndex]; while (freelist->first_free != NULL) { AllocSetContext *oldset = freelist->first_free; freelist->first_free = (AllocSetContext *) oldset->header.nextchild; freelist->num_free--; /* All that remains is to free the header/initial block */ free(oldset); } Assert(freelist->num_free == 0); } } pg_query-4.2.3/ext/pg_query/src_backend_parser_gram.c0000644000004100000410001146707414510636647023062 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - parser_init * - base_yyparse * - SystemTypeName * - SystemFuncName * - yypact * - yytranslate * - yycheck * - yytable * - yydefact * - yyr2 * - makeRawStmt * - updateRawStmtEnd * - makeParamRef * - makeStringConst * - makeAConst * - makeStringConstCast * - makeIntConst * - processCASbits * - makeRangeVarFromAnyName * - SplitColQualList * - 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, ABSOLUTE_P = 278, ACCESS = 279, ACTION = 280, ADD_P = 281, ADMIN = 282, AFTER = 283, AGGREGATE = 284, ALL = 285, ALSO = 286, ALTER = 287, ALWAYS = 288, ANALYSE = 289, ANALYZE = 290, AND = 291, ANY = 292, ARRAY = 293, AS = 294, ASC = 295, ASENSITIVE = 296, ASSERTION = 297, ASSIGNMENT = 298, ASYMMETRIC = 299, ATOMIC = 300, AT = 301, ATTACH = 302, ATTRIBUTE = 303, AUTHORIZATION = 304, BACKWARD = 305, BEFORE = 306, BEGIN_P = 307, BETWEEN = 308, BIGINT = 309, BINARY = 310, BIT = 311, BOOLEAN_P = 312, BOTH = 313, BREADTH = 314, BY = 315, CACHE = 316, CALL = 317, CALLED = 318, CASCADE = 319, CASCADED = 320, CASE = 321, CAST = 322, CATALOG_P = 323, CHAIN = 324, CHAR_P = 325, CHARACTER = 326, CHARACTERISTICS = 327, CHECK = 328, CHECKPOINT = 329, CLASS = 330, CLOSE = 331, CLUSTER = 332, COALESCE = 333, COLLATE = 334, COLLATION = 335, COLUMN = 336, COLUMNS = 337, COMMENT = 338, COMMENTS = 339, COMMIT = 340, COMMITTED = 341, COMPRESSION = 342, CONCURRENTLY = 343, CONFIGURATION = 344, CONFLICT = 345, CONNECTION = 346, CONSTRAINT = 347, CONSTRAINTS = 348, CONTENT_P = 349, CONTINUE_P = 350, CONVERSION_P = 351, COPY = 352, COST = 353, CREATE = 354, CROSS = 355, CSV = 356, CUBE = 357, CURRENT_P = 358, CURRENT_CATALOG = 359, CURRENT_DATE = 360, CURRENT_ROLE = 361, CURRENT_SCHEMA = 362, CURRENT_TIME = 363, CURRENT_TIMESTAMP = 364, CURRENT_USER = 365, CURSOR = 366, CYCLE = 367, DATA_P = 368, DATABASE = 369, DAY_P = 370, DEALLOCATE = 371, DEC = 372, DECIMAL_P = 373, DECLARE = 374, DEFAULT = 375, DEFAULTS = 376, DEFERRABLE = 377, DEFERRED = 378, DEFINER = 379, DELETE_P = 380, DELIMITER = 381, DELIMITERS = 382, DEPENDS = 383, DEPTH = 384, DESC = 385, DETACH = 386, DICTIONARY = 387, DISABLE_P = 388, DISCARD = 389, DISTINCT = 390, DO = 391, DOCUMENT_P = 392, DOMAIN_P = 393, DOUBLE_P = 394, DROP = 395, EACH = 396, ELSE = 397, ENABLE_P = 398, ENCODING = 399, ENCRYPTED = 400, END_P = 401, ENUM_P = 402, ESCAPE = 403, EVENT = 404, EXCEPT = 405, EXCLUDE = 406, EXCLUDING = 407, EXCLUSIVE = 408, EXECUTE = 409, EXISTS = 410, EXPLAIN = 411, EXPRESSION = 412, EXTENSION = 413, EXTERNAL = 414, EXTRACT = 415, FALSE_P = 416, FAMILY = 417, FETCH = 418, FILTER = 419, FINALIZE = 420, FIRST_P = 421, FLOAT_P = 422, FOLLOWING = 423, FOR = 424, FORCE = 425, FOREIGN = 426, FORWARD = 427, FREEZE = 428, FROM = 429, FULL = 430, FUNCTION = 431, FUNCTIONS = 432, GENERATED = 433, GLOBAL = 434, GRANT = 435, GRANTED = 436, GREATEST = 437, GROUP_P = 438, GROUPING = 439, GROUPS = 440, HANDLER = 441, HAVING = 442, HEADER_P = 443, HOLD = 444, HOUR_P = 445, IDENTITY_P = 446, IF_P = 447, ILIKE = 448, IMMEDIATE = 449, IMMUTABLE = 450, IMPLICIT_P = 451, IMPORT_P = 452, IN_P = 453, INCLUDE = 454, INCLUDING = 455, INCREMENT = 456, INDEX = 457, INDEXES = 458, INHERIT = 459, INHERITS = 460, INITIALLY = 461, INLINE_P = 462, INNER_P = 463, INOUT = 464, INPUT_P = 465, INSENSITIVE = 466, INSERT = 467, INSTEAD = 468, INT_P = 469, INTEGER = 470, INTERSECT = 471, INTERVAL = 472, INTO = 473, INVOKER = 474, IS = 475, ISNULL = 476, ISOLATION = 477, JOIN = 478, KEY = 479, LABEL = 480, LANGUAGE = 481, LARGE_P = 482, LAST_P = 483, LATERAL_P = 484, LEADING = 485, LEAKPROOF = 486, LEAST = 487, LEFT = 488, LEVEL = 489, LIKE = 490, LIMIT = 491, LISTEN = 492, LOAD = 493, LOCAL = 494, LOCALTIME = 495, LOCALTIMESTAMP = 496, LOCATION = 497, LOCK_P = 498, LOCKED = 499, LOGGED = 500, MAPPING = 501, MATCH = 502, MATCHED = 503, MATERIALIZED = 504, MAXVALUE = 505, MERGE = 506, METHOD = 507, MINUTE_P = 508, MINVALUE = 509, MODE = 510, MONTH_P = 511, MOVE = 512, NAME_P = 513, NAMES = 514, NATIONAL = 515, NATURAL = 516, NCHAR = 517, NEW = 518, NEXT = 519, NFC = 520, NFD = 521, NFKC = 522, NFKD = 523, NO = 524, NONE = 525, NORMALIZE = 526, NORMALIZED = 527, NOT = 528, NOTHING = 529, NOTIFY = 530, NOTNULL = 531, NOWAIT = 532, NULL_P = 533, NULLIF = 534, NULLS_P = 535, NUMERIC = 536, OBJECT_P = 537, OF = 538, OFF = 539, OFFSET = 540, OIDS = 541, OLD = 542, ON = 543, ONLY = 544, OPERATOR = 545, OPTION = 546, OPTIONS = 547, OR = 548, ORDER = 549, ORDINALITY = 550, OTHERS = 551, OUT_P = 552, OUTER_P = 553, OVER = 554, OVERLAPS = 555, OVERLAY = 556, OVERRIDING = 557, OWNED = 558, OWNER = 559, PARALLEL = 560, PARAMETER = 561, PARSER = 562, PARTIAL = 563, PARTITION = 564, PASSING = 565, PASSWORD = 566, PLACING = 567, PLANS = 568, POLICY = 569, POSITION = 570, PRECEDING = 571, PRECISION = 572, PRESERVE = 573, PREPARE = 574, PREPARED = 575, PRIMARY = 576, PRIOR = 577, PRIVILEGES = 578, PROCEDURAL = 579, PROCEDURE = 580, PROCEDURES = 581, PROGRAM = 582, PUBLICATION = 583, QUOTE = 584, RANGE = 585, READ = 586, REAL = 587, REASSIGN = 588, RECHECK = 589, RECURSIVE = 590, REF_P = 591, REFERENCES = 592, REFERENCING = 593, REFRESH = 594, REINDEX = 595, RELATIVE_P = 596, RELEASE = 597, RENAME = 598, REPEATABLE = 599, REPLACE = 600, REPLICA = 601, RESET = 602, RESTART = 603, RESTRICT = 604, RETURN = 605, RETURNING = 606, RETURNS = 607, REVOKE = 608, RIGHT = 609, ROLE = 610, ROLLBACK = 611, ROLLUP = 612, ROUTINE = 613, ROUTINES = 614, ROW = 615, ROWS = 616, RULE = 617, SAVEPOINT = 618, SCHEMA = 619, SCHEMAS = 620, SCROLL = 621, SEARCH = 622, SECOND_P = 623, SECURITY = 624, SELECT = 625, SEQUENCE = 626, SEQUENCES = 627, SERIALIZABLE = 628, SERVER = 629, SESSION = 630, SESSION_USER = 631, SET = 632, SETS = 633, SETOF = 634, SHARE = 635, SHOW = 636, SIMILAR = 637, SIMPLE = 638, SKIP = 639, SMALLINT = 640, SNAPSHOT = 641, SOME = 642, SQL_P = 643, STABLE = 644, STANDALONE_P = 645, START = 646, STATEMENT = 647, STATISTICS = 648, STDIN = 649, STDOUT = 650, STORAGE = 651, STORED = 652, STRICT_P = 653, STRIP_P = 654, SUBSCRIPTION = 655, SUBSTRING = 656, SUPPORT = 657, SYMMETRIC = 658, SYSID = 659, SYSTEM_P = 660, TABLE = 661, TABLES = 662, TABLESAMPLE = 663, TABLESPACE = 664, TEMP = 665, TEMPLATE = 666, TEMPORARY = 667, TEXT_P = 668, THEN = 669, TIES = 670, TIME = 671, TIMESTAMP = 672, TO = 673, TRAILING = 674, TRANSACTION = 675, TRANSFORM = 676, TREAT = 677, TRIGGER = 678, TRIM = 679, TRUE_P = 680, TRUNCATE = 681, TRUSTED = 682, TYPE_P = 683, TYPES_P = 684, UESCAPE = 685, UNBOUNDED = 686, UNCOMMITTED = 687, UNENCRYPTED = 688, UNION = 689, UNIQUE = 690, UNKNOWN = 691, UNLISTEN = 692, UNLOGGED = 693, UNTIL = 694, UPDATE = 695, USER = 696, USING = 697, VACUUM = 698, VALID = 699, VALIDATE = 700, VALIDATOR = 701, VALUE_P = 702, VALUES = 703, VARCHAR = 704, VARIADIC = 705, VARYING = 706, VERBOSE = 707, VERSION_P = 708, VIEW = 709, VIEWS = 710, VOLATILE = 711, WHEN = 712, WHERE = 713, WHITESPACE_P = 714, WINDOW = 715, WITH = 716, WITHIN = 717, WITHOUT = 718, WORK = 719, WRAPPER = 720, WRITE = 721, XML_P = 722, XMLATTRIBUTES = 723, XMLCONCAT = 724, XMLELEMENT = 725, XMLEXISTS = 726, XMLFOREST = 727, XMLNAMESPACES = 728, XMLPARSE = 729, XMLPI = 730, XMLROOT = 731, XMLSERIALIZE = 732, XMLTABLE = 733, YEAR_P = 734, YES_P = 735, ZONE = 736, NOT_LA = 737, NULLS_LA = 738, WITH_LA = 739, MODE_TYPE_NAME = 740, MODE_PLPGSQL_EXPR = 741, MODE_PLPGSQL_ASSIGN1 = 742, MODE_PLPGSQL_ASSIGN2 = 743, MODE_PLPGSQL_ASSIGN3 = 744, UMINUS = 745 }; #endif /* Tokens. */ #define IDENT 258 #define UIDENT 259 #define FCONST 260 #define SCONST 261 #define USCONST 262 #define BCONST 263 #define XCONST 264 #define Op 265 #define ICONST 266 #define PARAM 267 #define TYPECAST 268 #define DOT_DOT 269 #define COLON_EQUALS 270 #define EQUALS_GREATER 271 #define LESS_EQUALS 272 #define GREATER_EQUALS 273 #define NOT_EQUALS 274 #define SQL_COMMENT 275 #define C_COMMENT 276 #define ABORT_P 277 #define ABSOLUTE_P 278 #define ACCESS 279 #define ACTION 280 #define ADD_P 281 #define ADMIN 282 #define AFTER 283 #define AGGREGATE 284 #define ALL 285 #define ALSO 286 #define ALTER 287 #define ALWAYS 288 #define ANALYSE 289 #define ANALYZE 290 #define AND 291 #define ANY 292 #define ARRAY 293 #define AS 294 #define ASC 295 #define ASENSITIVE 296 #define ASSERTION 297 #define ASSIGNMENT 298 #define ASYMMETRIC 299 #define ATOMIC 300 #define AT 301 #define ATTACH 302 #define ATTRIBUTE 303 #define AUTHORIZATION 304 #define BACKWARD 305 #define BEFORE 306 #define BEGIN_P 307 #define BETWEEN 308 #define BIGINT 309 #define BINARY 310 #define BIT 311 #define BOOLEAN_P 312 #define BOTH 313 #define BREADTH 314 #define BY 315 #define CACHE 316 #define CALL 317 #define CALLED 318 #define CASCADE 319 #define CASCADED 320 #define CASE 321 #define CAST 322 #define CATALOG_P 323 #define CHAIN 324 #define CHAR_P 325 #define CHARACTER 326 #define CHARACTERISTICS 327 #define CHECK 328 #define CHECKPOINT 329 #define CLASS 330 #define CLOSE 331 #define CLUSTER 332 #define COALESCE 333 #define COLLATE 334 #define COLLATION 335 #define COLUMN 336 #define COLUMNS 337 #define COMMENT 338 #define COMMENTS 339 #define COMMIT 340 #define COMMITTED 341 #define COMPRESSION 342 #define CONCURRENTLY 343 #define CONFIGURATION 344 #define CONFLICT 345 #define CONNECTION 346 #define CONSTRAINT 347 #define CONSTRAINTS 348 #define CONTENT_P 349 #define CONTINUE_P 350 #define CONVERSION_P 351 #define COPY 352 #define COST 353 #define CREATE 354 #define CROSS 355 #define CSV 356 #define CUBE 357 #define CURRENT_P 358 #define CURRENT_CATALOG 359 #define CURRENT_DATE 360 #define CURRENT_ROLE 361 #define CURRENT_SCHEMA 362 #define CURRENT_TIME 363 #define CURRENT_TIMESTAMP 364 #define CURRENT_USER 365 #define CURSOR 366 #define CYCLE 367 #define DATA_P 368 #define DATABASE 369 #define DAY_P 370 #define DEALLOCATE 371 #define DEC 372 #define DECIMAL_P 373 #define DECLARE 374 #define DEFAULT 375 #define DEFAULTS 376 #define DEFERRABLE 377 #define DEFERRED 378 #define DEFINER 379 #define DELETE_P 380 #define DELIMITER 381 #define DELIMITERS 382 #define DEPENDS 383 #define DEPTH 384 #define DESC 385 #define DETACH 386 #define DICTIONARY 387 #define DISABLE_P 388 #define DISCARD 389 #define DISTINCT 390 #define DO 391 #define DOCUMENT_P 392 #define DOMAIN_P 393 #define DOUBLE_P 394 #define DROP 395 #define EACH 396 #define ELSE 397 #define ENABLE_P 398 #define ENCODING 399 #define ENCRYPTED 400 #define END_P 401 #define ENUM_P 402 #define ESCAPE 403 #define EVENT 404 #define EXCEPT 405 #define EXCLUDE 406 #define EXCLUDING 407 #define EXCLUSIVE 408 #define EXECUTE 409 #define EXISTS 410 #define EXPLAIN 411 #define EXPRESSION 412 #define EXTENSION 413 #define EXTERNAL 414 #define EXTRACT 415 #define FALSE_P 416 #define FAMILY 417 #define FETCH 418 #define FILTER 419 #define FINALIZE 420 #define FIRST_P 421 #define FLOAT_P 422 #define FOLLOWING 423 #define FOR 424 #define FORCE 425 #define FOREIGN 426 #define FORWARD 427 #define FREEZE 428 #define FROM 429 #define FULL 430 #define FUNCTION 431 #define FUNCTIONS 432 #define GENERATED 433 #define GLOBAL 434 #define GRANT 435 #define GRANTED 436 #define GREATEST 437 #define GROUP_P 438 #define GROUPING 439 #define GROUPS 440 #define HANDLER 441 #define HAVING 442 #define HEADER_P 443 #define HOLD 444 #define HOUR_P 445 #define IDENTITY_P 446 #define IF_P 447 #define ILIKE 448 #define IMMEDIATE 449 #define IMMUTABLE 450 #define IMPLICIT_P 451 #define IMPORT_P 452 #define IN_P 453 #define INCLUDE 454 #define INCLUDING 455 #define INCREMENT 456 #define INDEX 457 #define INDEXES 458 #define INHERIT 459 #define INHERITS 460 #define INITIALLY 461 #define INLINE_P 462 #define INNER_P 463 #define INOUT 464 #define INPUT_P 465 #define INSENSITIVE 466 #define INSERT 467 #define INSTEAD 468 #define INT_P 469 #define INTEGER 470 #define INTERSECT 471 #define INTERVAL 472 #define INTO 473 #define INVOKER 474 #define IS 475 #define ISNULL 476 #define ISOLATION 477 #define JOIN 478 #define KEY 479 #define LABEL 480 #define LANGUAGE 481 #define LARGE_P 482 #define LAST_P 483 #define LATERAL_P 484 #define LEADING 485 #define LEAKPROOF 486 #define LEAST 487 #define LEFT 488 #define LEVEL 489 #define LIKE 490 #define LIMIT 491 #define LISTEN 492 #define LOAD 493 #define LOCAL 494 #define LOCALTIME 495 #define LOCALTIMESTAMP 496 #define LOCATION 497 #define LOCK_P 498 #define LOCKED 499 #define LOGGED 500 #define MAPPING 501 #define MATCH 502 #define MATCHED 503 #define MATERIALIZED 504 #define MAXVALUE 505 #define MERGE 506 #define METHOD 507 #define MINUTE_P 508 #define MINVALUE 509 #define MODE 510 #define MONTH_P 511 #define MOVE 512 #define NAME_P 513 #define NAMES 514 #define NATIONAL 515 #define NATURAL 516 #define NCHAR 517 #define NEW 518 #define NEXT 519 #define NFC 520 #define NFD 521 #define NFKC 522 #define NFKD 523 #define NO 524 #define NONE 525 #define NORMALIZE 526 #define NORMALIZED 527 #define NOT 528 #define NOTHING 529 #define NOTIFY 530 #define NOTNULL 531 #define NOWAIT 532 #define NULL_P 533 #define NULLIF 534 #define NULLS_P 535 #define NUMERIC 536 #define OBJECT_P 537 #define OF 538 #define OFF 539 #define OFFSET 540 #define OIDS 541 #define OLD 542 #define ON 543 #define ONLY 544 #define OPERATOR 545 #define OPTION 546 #define OPTIONS 547 #define OR 548 #define ORDER 549 #define ORDINALITY 550 #define OTHERS 551 #define OUT_P 552 #define OUTER_P 553 #define OVER 554 #define OVERLAPS 555 #define OVERLAY 556 #define OVERRIDING 557 #define OWNED 558 #define OWNER 559 #define PARALLEL 560 #define PARAMETER 561 #define PARSER 562 #define PARTIAL 563 #define PARTITION 564 #define PASSING 565 #define PASSWORD 566 #define PLACING 567 #define PLANS 568 #define POLICY 569 #define POSITION 570 #define PRECEDING 571 #define PRECISION 572 #define PRESERVE 573 #define PREPARE 574 #define PREPARED 575 #define PRIMARY 576 #define PRIOR 577 #define PRIVILEGES 578 #define PROCEDURAL 579 #define PROCEDURE 580 #define PROCEDURES 581 #define PROGRAM 582 #define PUBLICATION 583 #define QUOTE 584 #define RANGE 585 #define READ 586 #define REAL 587 #define REASSIGN 588 #define RECHECK 589 #define RECURSIVE 590 #define REF_P 591 #define REFERENCES 592 #define REFERENCING 593 #define REFRESH 594 #define REINDEX 595 #define RELATIVE_P 596 #define RELEASE 597 #define RENAME 598 #define REPEATABLE 599 #define REPLACE 600 #define REPLICA 601 #define RESET 602 #define RESTART 603 #define RESTRICT 604 #define RETURN 605 #define RETURNING 606 #define RETURNS 607 #define REVOKE 608 #define RIGHT 609 #define ROLE 610 #define ROLLBACK 611 #define ROLLUP 612 #define ROUTINE 613 #define ROUTINES 614 #define ROW 615 #define ROWS 616 #define RULE 617 #define SAVEPOINT 618 #define SCHEMA 619 #define SCHEMAS 620 #define SCROLL 621 #define SEARCH 622 #define SECOND_P 623 #define SECURITY 624 #define SELECT 625 #define SEQUENCE 626 #define SEQUENCES 627 #define SERIALIZABLE 628 #define SERVER 629 #define SESSION 630 #define SESSION_USER 631 #define SET 632 #define SETS 633 #define SETOF 634 #define SHARE 635 #define SHOW 636 #define SIMILAR 637 #define SIMPLE 638 #define SKIP 639 #define SMALLINT 640 #define SNAPSHOT 641 #define SOME 642 #define SQL_P 643 #define STABLE 644 #define STANDALONE_P 645 #define START 646 #define STATEMENT 647 #define STATISTICS 648 #define STDIN 649 #define STDOUT 650 #define STORAGE 651 #define STORED 652 #define STRICT_P 653 #define STRIP_P 654 #define SUBSCRIPTION 655 #define SUBSTRING 656 #define SUPPORT 657 #define SYMMETRIC 658 #define SYSID 659 #define SYSTEM_P 660 #define TABLE 661 #define TABLES 662 #define TABLESAMPLE 663 #define TABLESPACE 664 #define TEMP 665 #define TEMPLATE 666 #define TEMPORARY 667 #define TEXT_P 668 #define THEN 669 #define TIES 670 #define TIME 671 #define TIMESTAMP 672 #define TO 673 #define TRAILING 674 #define TRANSACTION 675 #define TRANSFORM 676 #define TREAT 677 #define TRIGGER 678 #define TRIM 679 #define TRUE_P 680 #define TRUNCATE 681 #define TRUSTED 682 #define TYPE_P 683 #define TYPES_P 684 #define UESCAPE 685 #define UNBOUNDED 686 #define UNCOMMITTED 687 #define UNENCRYPTED 688 #define UNION 689 #define UNIQUE 690 #define UNKNOWN 691 #define UNLISTEN 692 #define UNLOGGED 693 #define UNTIL 694 #define UPDATE 695 #define USER 696 #define USING 697 #define VACUUM 698 #define VALID 699 #define VALIDATE 700 #define VALIDATOR 701 #define VALUE_P 702 #define VALUES 703 #define VARCHAR 704 #define VARIADIC 705 #define VARYING 706 #define VERBOSE 707 #define VERSION_P 708 #define VIEW 709 #define VIEWS 710 #define VOLATILE 711 #define WHEN 712 #define WHERE 713 #define WHITESPACE_P 714 #define WINDOW 715 #define WITH 716 #define WITHIN 717 #define WITHOUT 718 #define WORK 719 #define WRAPPER 720 #define WRITE 721 #define XML_P 722 #define XMLATTRIBUTES 723 #define XMLCONCAT 724 #define XMLELEMENT 725 #define XMLEXISTS 726 #define XMLFOREST 727 #define XMLNAMESPACES 728 #define XMLPARSE 729 #define XMLPI 730 #define XMLROOT 731 #define XMLSERIALIZE 732 #define XMLTABLE 733 #define YEAR_P 734 #define YES_P 735 #define ZONE 736 #define NOT_LA 737 #define NULLS_LA 738 #define WITH_LA 739 #define MODE_TYPE_NAME 740 #define MODE_PLPGSQL_EXPR 741 #define MODE_PLPGSQL_ASSIGN1 742 #define MODE_PLPGSQL_ASSIGN2 743 #define MODE_PLPGSQL_ASSIGN3 744 #define UMINUS 745 /* Copy the first part of user declarations. */ #line 1 "gram.y" /*#define YYDEBUG 1*/ /*------------------------------------------------------------------------- * * gram.y * POSTGRESQL BISON rules/actions * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/parser/gram.y * * HISTORY * AUTHOR DATE MAJOR EVENT * Andrew Yu Sept, 1994 POSTQUEL to SQL conversion * Andrew Yu Oct, 1994 lispy code conversion * * NOTES * CAPITALS are used to represent terminal symbols. * non-capitals are used to represent non-terminals. * * In general, nothing in this file should initiate database accesses * nor depend on changeable state (such as SET variables). If you do * database accesses, your code will fail when we have aborted the * current transaction and are just parsing commands to find the next * ROLLBACK or COMMIT. If you make use of SET variables, then you * will do the wrong thing in multi-query strings like this: * SET constraint_exclusion TO off; SELECT * FROM foo; * because the entire string is parsed by gram.y before the SET gets * executed. Anything that depends on the database or changeable state * should be handled during parse analysis so that it happens at the * right time not the wrong time. * * WARNINGS * If you use a list, make sure the datum is a node so that the printing * routines work. * * Sometimes we assign constants to makeStrings. Make sure we don't free * those. * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include "access/tableam.h" #include "catalog/index.h" #include "catalog/namespace.h" #include "catalog/pg_am.h" #include "catalog/pg_trigger.h" #include "commands/defrem.h" #include "commands/trigger.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" #include "parser/gramparse.h" #include "parser/parser.h" #include "storage/lmgr.h" #include "utils/date.h" #include "utils/datetime.h" #include "utils/numeric.h" #include "utils/xml.h" /* * Location tracking support --- simpler than bison's default, since we only * want to track the start position not the end position of each nonterminal. */ #define YYLLOC_DEFAULT(Current, Rhs, N) \ do { \ if ((N) > 0) \ (Current) = (Rhs)[1]; \ else \ (Current) = (-1); \ } while (0) /* * The above macro assigns -1 (unknown) as the parse location of any * nonterminal that was reduced from an empty rule, or whose leftmost * component was reduced from an empty rule. This is problematic * for nonterminals defined like * OptFooList: / * EMPTY * / { ... } | OptFooList Foo { ... } ; * because we'll set -1 as the location during the first reduction and then * copy it during each subsequent reduction, leaving us with -1 for the * location even when the list is not empty. To fix that, do this in the * action for the nonempty rule(s): * if (@$ < 0) @$ = @2; * (Although we have many nonterminals that follow this pattern, we only * bother with fixing @$ like this when the nonterminal's parse location * is actually referenced in some rule.) * * A cleaner answer would be to make YYLLOC_DEFAULT scan all the Rhs * locations until it's found one that's not -1. Then we'd get a correct * location for any nonterminal that isn't entirely empty. But this way * would add overhead to every rule reduction, and so far there's not been * a compelling reason to pay that overhead. */ /* * Bison doesn't allocate anything that needs to live across parser calls, * so we can easily have it use palloc instead of malloc. This prevents * memory leaks if we error out during parsing. Note this only works with * bison >= 2.0. However, in bison 1.875 the default is to use alloca() * if possible, so there's not really much problem anyhow, at least if * you're building with gcc. */ #define YYMALLOC palloc #define YYFREE pfree /* Private struct for the result of privilege_target production */ typedef struct PrivTarget { GrantTargetType targtype; ObjectType objtype; List *objs; } PrivTarget; /* Private struct for the result of import_qualification production */ typedef struct ImportQual { ImportForeignSchemaType type; List *table_names; } ImportQual; /* Private struct for the result of opt_select_limit production */ typedef struct SelectLimit { Node *limitOffset; Node *limitCount; LimitOption limitOption; } SelectLimit; /* 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 *makeStringConst(char *str, int location); static Node *makeStringConstCast(char *str, int location, TypeName *typename); static Node *makeIntConst(int val, int location); static Node *makeFloatConst(char *str, int location); static Node *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 *rels, 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 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 237 "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; MergeWhenClause *mergewhen; struct KeyActions *keyactions; struct KeyAction *keyaction; } /* Line 193 of yacc.c. */ #line 1362 "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 1387 "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 902 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 111265 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 508 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 688 /* YYNRULES -- Number of rules. */ #define YYNRULES 3219 /* YYNRULES -- Number of states. */ #define YYNSTATES 6106 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 745 #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, 497, 2, 2, 502, 503, 495, 493, 506, 494, 504, 496, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 507, 505, 490, 492, 491, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 500, 2, 501, 498, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 499 }; #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, 282, 288, 290, 292, 293, 296, 297, 300, 301, 304, 307, 310, 314, 318, 322, 324, 328, 332, 335, 337, 339, 342, 345, 348, 352, 356, 362, 368, 374, 375, 379, 385, 391, 397, 403, 407, 413, 417, 423, 427, 433, 439, 446, 448, 450, 457, 462, 472, 480, 482, 483, 486, 487, 489, 491, 493, 495, 497, 499, 502, 506, 510, 513, 519, 521, 525, 529, 533, 537, 539, 543, 547, 550, 553, 556, 559, 562, 565, 569, 573, 577, 581, 585, 587, 591, 593, 597, 599, 601, 603, 606, 609, 612, 614, 616, 618, 620, 622, 624, 626, 628, 632, 638, 640, 642, 644, 646, 648, 649, 651, 653, 656, 658, 661, 665, 668, 670, 672, 675, 677, 680, 682, 685, 689, 694, 698, 701, 706, 708, 710, 712, 714, 716, 719, 722, 725, 728, 731, 736, 743, 748, 755, 766, 780, 785, 792, 797, 808, 822, 827, 834, 839, 846, 852, 860, 872, 887, 893, 901, 903, 907, 912, 917, 922, 926, 929, 935, 939, 946, 951, 958, 965, 971, 979, 986, 993, 999, 1005, 1012, 1018, 1028, 1033, 1039, 1047, 1054, 1059, 1068, 1073, 1076, 1081, 1085, 1092, 1097, 1101, 1105, 1109, 1112, 1115, 1119, 1124, 1129, 1133, 1137, 1141, 1145, 1149, 1153, 1158, 1163, 1167, 1170, 1174, 1177, 1180, 1184, 1189, 1193, 1196, 1199, 1203, 1208, 1213, 1218, 1224, 1226, 1230, 1233, 1235, 1237, 1238, 1241, 1242, 1245, 1246, 1248, 1250, 1252, 1256, 1260, 1263, 1264, 1266, 1270, 1274, 1276, 1282, 1286, 1288, 1291, 1293, 1297, 1300, 1304, 1311, 1318, 1329, 1331, 1334, 1336, 1340, 1345, 1347, 1351, 1356, 1363, 1368, 1377, 1380, 1383, 1395, 1405, 1407, 1409, 1411, 1412, 1414, 1416, 1418, 1420, 1424, 1427, 1428, 1430, 1432, 1436, 1440, 1442, 1444, 1448, 1452, 1456, 1460, 1465, 1469, 1472, 1474, 1475, 1479, 1480, 1482, 1483, 1485, 1489, 1492, 1494, 1496, 1498, 1502, 1503, 1505, 1509, 1511, 1525, 1542, 1555, 1571, 1586, 1604, 1606, 1608, 1611, 1614, 1617, 1620, 1622, 1623, 1625, 1626, 1630, 1631, 1633, 1637, 1639, 1643, 1645, 1647, 1649, 1651, 1653, 1659, 1662, 1667, 1670, 1673, 1675, 1676, 1679, 1680, 1684, 1686, 1688, 1691, 1694, 1696, 1701, 1706, 1712, 1715, 1721, 1729, 1735, 1738, 1742, 1743, 1745, 1748, 1750, 1753, 1756, 1759, 1763, 1767, 1771, 1772, 1774, 1776, 1778, 1780, 1782, 1784, 1786, 1788, 1790, 1792, 1796, 1798, 1804, 1814, 1818, 1828, 1833, 1844, 1856, 1859, 1860, 1864, 1865, 1867, 1871, 1873, 1878, 1879, 1882, 1885, 1888, 1889, 1891, 1895, 1899, 1906, 1911, 1912, 1914, 1916, 1919, 1922, 1923, 1927, 1931, 1934, 1936, 1938, 1942, 1946, 1951, 1952, 1954, 1955, 1962, 1964, 1968, 1972, 1976, 1982, 1985, 1986, 1989, 1992, 1993, 1997, 2002, 2007, 2008, 2011, 2012, 2017, 2018, 2022, 2031, 2043, 2045, 2049, 2051, 2053, 2057, 2064, 2073, 2081, 2092, 2099, 2102, 2106, 2107, 2116, 2128, 2134, 2136, 2137, 2144, 2150, 2159, 2164, 2171, 2173, 2174, 2178, 2179, 2181, 2184, 2187, 2190, 2192, 2195, 2199, 2202, 2205, 2208, 2211, 2215, 2219, 2223, 2225, 2229, 2231, 2232, 2234, 2237, 2240, 2242, 2244, 2248, 2255, 2266, 2268, 2269, 2271, 2274, 2277, 2278, 2281, 2284, 2286, 2287, 2289, 2290, 2298, 2301, 2302, 2306, 2312, 2318, 2327, 2330, 2331, 2334, 2337, 2340, 2342, 2348, 2351, 2352, 2355, 2362, 2369, 2376, 2387, 2394, 2401, 2408, 2418, 2428, 2435, 2442, 2452, 2459, 2467, 2470, 2473, 2476, 2479, 2481, 2484, 2486, 2487, 2495, 2502, 2507, 2508, 2510, 2514, 2519, 2521, 2525, 2527, 2530, 2533, 2536, 2539, 2541, 2543, 2554, 2568, 2571, 2572, 2575, 2578, 2580, 2581, 2587, 2592, 2597, 2609, 2624, 2637, 2653, 2665, 2668, 2670, 2675, 2676, 2685, 2697, 2699, 2701, 2709, 2719, 2728, 2739, 2748, 2753, 2754, 2760, 2761, 2764, 2765, 2768, 2769, 2772, 2773, 2776, 2777, 2779, 2781, 2783, 2785, 2787, 2796, 2798, 2800, 2818, 2840, 2842, 2844, 2847, 2849, 2853, 2855, 2857, 2859, 2863, 2865, 2868, 2869, 2871, 2874, 2879, 2881, 2883, 2885, 2887, 2889, 2893, 2894, 2896, 2897, 2899, 2901, 2906, 2907, 2909, 2911, 2913, 2917, 2918, 2920, 2922, 2924, 2926, 2929, 2930, 2931, 2934, 2937, 2939, 2942, 2945, 2948, 2951, 2963, 2977, 2979, 2983, 2989, 2991, 2995, 3001, 3003, 3006, 3009, 3011, 3020, 3027, 3033, 3038, 3043, 3047, 3055, 3064, 3071, 3078, 3085, 3092, 3099, 3104, 3112, 3118, 3127, 3131, 3133, 3137, 3141, 3143, 3145, 3147, 3149, 3151, 3153, 3155, 3159, 3161, 3165, 3169, 3171, 3172, 3174, 3178, 3186, 3196, 3206, 3215, 3219, 3220, 3234, 3236, 3240, 3246, 3252, 3256, 3263, 3266, 3268, 3269, 3272, 3273, 3276, 3281, 3282, 3284, 3285, 3292, 3301, 3310, 3312, 3316, 3322, 3328, 3336, 3346, 3354, 3364, 3370, 3377, 3384, 3389, 3396, 3401, 3408, 3417, 3422, 3429, 3434, 3441, 3447, 3455, 3457, 3459, 3461, 3464, 3466, 3469, 3471, 3473, 3475, 3479, 3483, 3487, 3491, 3493, 3495, 3497, 3499, 3501, 3504, 3507, 3509, 3513, 3516, 3518, 3520, 3522, 3524, 3526, 3528, 3530, 3534, 3536, 3539, 3542, 3546, 3548, 3552, 3558, 3561, 3564, 3565, 3572, 3579, 3586, 3593, 3600, 3607, 3614, 3621, 3630, 3640, 3649, 3656, 3663, 3673, 3683, 3693, 3701, 3712, 3714, 3716, 3725, 3734, 3743, 3752, 3761, 3770, 3779, 3789, 3798, 3807, 3810, 3811, 3813, 3815, 3818, 3821, 3823, 3826, 3830, 3834, 3838, 3842, 3847, 3852, 3856, 3860, 3864, 3869, 3874, 3878, 3883, 3888, 3890, 3892, 3894, 3895, 3904, 3913, 3925, 3927, 3929, 3932, 3937, 3943, 3945, 3949, 3952, 3955, 3958, 3961, 3964, 3966, 3970, 3972, 3976, 3978, 3981, 3984, 3989, 3993, 3996, 3999, 4002, 4005, 4008, 4011, 4015, 4018, 4021, 4024, 4027, 4033, 4039, 4045, 4051, 4057, 4059, 4063, 4065, 4068, 4072, 4073, 4080, 4087, 4097, 4101, 4102, 4106, 4107, 4113, 4116, 4117, 4121, 4125, 4129, 4137, 4145, 4156, 4158, 4160, 4162, 4164, 4166, 4168, 4185, 4205, 4207, 4208, 4210, 4211, 4213, 4214, 4217, 4218, 4220, 4224, 4229, 4235, 4238, 4241, 4246, 4251, 4252, 4254, 4258, 4261, 4262, 4264, 4265, 4267, 4269, 4270, 4273, 4276, 4277, 4287, 4300, 4308, 4316, 4319, 4320, 4324, 4327, 4329, 4333, 4335, 4339, 4342, 4344, 4346, 4349, 4353, 4356, 4358, 4362, 4366, 4370, 4373, 4376, 4378, 4380, 4382, 4384, 4387, 4389, 4391, 4393, 4395, 4400, 4406, 4408, 4412, 4416, 4418, 4422, 4426, 4432, 4439, 4441, 4445, 4448, 4450, 4454, 4456, 4457, 4459, 4462, 4467, 4473, 4475, 4477, 4479, 4481, 4485, 4489, 4492, 4495, 4497, 4500, 4503, 4506, 4509, 4511, 4514, 4517, 4520, 4523, 4525, 4527, 4529, 4533, 4536, 4538, 4543, 4544, 4548, 4549, 4551, 4553, 4557, 4563, 4566, 4567, 4570, 4572, 4576, 4582, 4588, 4594, 4596, 4599, 4601, 4602, 4607, 4614, 4619, 4626, 4631, 4638, 4643, 4650, 4655, 4662, 4666, 4672, 4678, 4684, 4686, 4690, 4692, 4696, 4699, 4702, 4704, 4707, 4709, 4712, 4724, 4735, 4746, 4749, 4752, 4753, 4763, 4766, 4767, 4778, 4790, 4802, 4808, 4814, 4823, 4828, 4833, 4841, 4849, 4851, 4853, 4855, 4857, 4859, 4865, 4871, 4878, 4885, 4892, 4899, 4906, 4915, 4924, 4931, 4938, 4946, 4956, 4966, 4975, 4986, 4993, 5000, 5007, 5014, 5021, 5028, 5035, 5044, 5051, 5060, 5067, 5076, 5084, 5094, 5101, 5110, 5118, 5128, 5137, 5148, 5157, 5168, 5178, 5190, 5199, 5210, 5220, 5232, 5241, 5250, 5258, 5265, 5272, 5279, 5286, 5295, 5304, 5313, 5322, 5329, 5339, 5341, 5342, 5345, 5346, 5355, 5364, 5373, 5384, 5394, 5403, 5405, 5406, 5413, 5420, 5427, 5434, 5441, 5448, 5455, 5465, 5475, 5482, 5489, 5496, 5505, 5512, 5521, 5530, 5539, 5548, 5555, 5564, 5571, 5580, 5588, 5598, 5606, 5616, 5623, 5631, 5633, 5637, 5641, 5645, 5647, 5649, 5651, 5653, 5655, 5663, 5670, 5677, 5684, 5691, 5698, 5705, 5713, 5721, 5728, 5738, 5748, 5755, 5762, 5769, 5776, 5783, 5790, 5799, 5808, 5817, 5824, 5832, 5839, 5846, 5851, 5859, 5866, 5871, 5876, 5881, 5885, 5890, 5894, 5896, 5898, 5902, 5908, 5914, 5920, 5926, 5935, 5941, 5947, 5954, 5962, 5970, 5978, 5983, 5988, 5994, 5999, 6006, 6020, 6022, 6024, 6028, 6032, 6034, 6036, 6038, 6040, 6042, 6044, 6046, 6047, 6049, 6051, 6053, 6055, 6057, 6059, 6060, 6064, 6067, 6068, 6071, 6074, 6077, 6081, 6085, 6089, 6093, 6096, 6100, 6103, 6109, 6114, 6118, 6122, 6126, 6130, 6134, 6136, 6138, 6139, 6143, 6146, 6149, 6151, 6154, 6156, 6160, 6163, 6165, 6166, 6169, 6173, 6174, 6184, 6196, 6209, 6224, 6228, 6233, 6238, 6239, 6242, 6248, 6250, 6251, 6253, 6256, 6260, 6264, 6268, 6270, 6273, 6275, 6277, 6279, 6281, 6283, 6285, 6286, 6292, 6297, 6304, 6311, 6316, 6320, 6326, 6334, 6344, 6346, 6350, 6352, 6358, 6363, 6368, 6375, 6380, 6387, 6394, 6400, 6408, 6418, 6425, 6427, 6428, 6435, 6447, 6459, 6471, 6485, 6495, 6507, 6509, 6511, 6522, 6527, 6534, 6537, 6543, 6546, 6547, 6554, 6560, 6564, 6570, 6572, 6576, 6578, 6580, 6583, 6585, 6587, 6589, 6591, 6592, 6594, 6595, 6597, 6598, 6600, 6601, 6603, 6604, 6608, 6609, 6612, 6614, 6618, 6620, 6621, 6624, 6629, 6633, 6639, 6641, 6643, 6645, 6647, 6649, 6651, 6653, 6655, 6657, 6659, 6665, 6669, 6670, 6672, 6674, 6676, 6678, 6680, 6684, 6694, 6707, 6711, 6712, 6715, 6719, 6722, 6726, 6734, 6736, 6740, 6742, 6747, 6752, 6760, 6763, 6765, 6767, 6769, 6773, 6776, 6785, 6791, 6792, 6797, 6801, 6802, 6805, 6806, 6814, 6817, 6818, 6824, 6828, 6829, 6832, 6835, 6838, 6842, 6844, 6848, 6850, 6853, 6855, 6856, 6858, 6861, 6862, 6871, 6873, 6877, 6881, 6887, 6890, 6892, 6896, 6906, 6908, 6911, 6917, 6923, 6930, 6937, 6945, 6948, 6949, 6953, 6955, 6958, 6964, 6970, 6979, 6983, 6988, 6996, 6998, 6999, 7003, 7006, 7009, 7012, 7015, 7016, 7019, 7022, 7024, 7026, 7030, 7034, 7036, 7039, 7044, 7049, 7052, 7056, 7062, 7068, 7070, 7072, 7082, 7092, 7094, 7097, 7102, 7107, 7112, 7115, 7118, 7122, 7124, 7128, 7138, 7140, 7143, 7144, 7152, 7160, 7161, 7172, 7179, 7180, 7182, 7183, 7186, 7187, 7191, 7195, 7200, 7205, 7210, 7215, 7219, 7222, 7224, 7226, 7227, 7229, 7231, 7232, 7234, 7240, 7242, 7243, 7245, 7247, 7249, 7250, 7254, 7256, 7260, 7265, 7269, 7272, 7275, 7277, 7279, 7281, 7282, 7285, 7290, 7296, 7303, 7308, 7314, 7317, 7321, 7323, 7325, 7327, 7329, 7332, 7335, 7337, 7339, 7341, 7343, 7345, 7347, 7352, 7353, 7355, 7359, 7361, 7363, 7365, 7367, 7369, 7372, 7377, 7382, 7388, 7391, 7392, 7394, 7398, 7400, 7401, 7403, 7406, 7410, 7413, 7418, 7421, 7425, 7428, 7429, 7434, 7440, 7443, 7444, 7446, 7450, 7453, 7457, 7460, 7464, 7467, 7471, 7474, 7478, 7480, 7485, 7489, 7494, 7500, 7505, 7511, 7516, 7522, 7525, 7530, 7532, 7534, 7535, 7538, 7539, 7541, 7546, 7552, 7557, 7558, 7561, 7564, 7567, 7569, 7571, 7572, 7578, 7581, 7583, 7585, 7588, 7591, 7596, 7598, 7602, 7604, 7607, 7611, 7618, 7623, 7624, 7627, 7634, 7637, 7639, 7643, 7648, 7649, 7652, 7653, 7656, 7657, 7660, 7665, 7666, 7668, 7669, 7671, 7675, 7679, 7687, 7700, 7702, 7706, 7709, 7713, 7717, 7719, 7722, 7725, 7728, 7731, 7733, 7735, 7739, 7743, 7746, 7749, 7753, 7759, 7766, 7769, 7773, 7777, 7782, 7783, 7785, 7787, 7789, 7791, 7793, 7796, 7801, 7803, 7805, 7807, 7809, 7812, 7816, 7820, 7821, 7823, 7825, 7827, 7829, 7831, 7834, 7837, 7840, 7843, 7846, 7848, 7852, 7853, 7855, 7857, 7859, 7861, 7867, 7870, 7872, 7874, 7876, 7878, 7883, 7885, 7888, 7891, 7893, 7897, 7901, 7904, 7906, 7907, 7913, 7916, 7922, 7925, 7927, 7931, 7935, 7936, 7938, 7940, 7942, 7944, 7946, 7948, 7952, 7956, 7960, 7964, 7968, 7972, 7976, 7977, 7979, 7984, 7986, 7990, 7994, 8000, 8003, 8006, 8010, 8014, 8018, 8022, 8026, 8030, 8034, 8038, 8042, 8046, 8050, 8054, 8058, 8061, 8065, 8069, 8072, 8075, 8079, 8085, 8090, 8097, 8101, 8107, 8112, 8119, 8124, 8131, 8137, 8145, 8149, 8152, 8157, 8160, 8164, 8168, 8173, 8177, 8182, 8186, 8191, 8197, 8204, 8211, 8219, 8226, 8234, 8238, 8243, 8248, 8255, 8259, 8263, 8268, 8272, 8277, 8282, 8288, 8290, 8292, 8296, 8299, 8302, 8306, 8310, 8314, 8318, 8322, 8326, 8330, 8334, 8338, 8342, 8346, 8350, 8354, 8357, 8363, 8370, 8374, 8379, 8381, 8383, 8386, 8391, 8393, 8395, 8397, 8400, 8403, 8406, 8409, 8411, 8413, 8418, 8422, 8428, 8435, 8444, 8451, 8458, 8463, 8468, 8470, 8472, 8474, 8480, 8482, 8484, 8489, 8491, 8496, 8498, 8503, 8505, 8510, 8512, 8514, 8516, 8518, 8520, 8522, 8529, 8534, 8539, 8546, 8551, 8556, 8561, 8566, 8571, 8578, 8584, 8590, 8596, 8601, 8608, 8613, 8618, 8623, 8628, 8634, 8642, 8650, 8660, 8666, 8671, 8678, 8684, 8692, 8700, 8708, 8711, 8715, 8719, 8723, 8728, 8729, 8734, 8736, 8740, 8744, 8746, 8748, 8750, 8753, 8756, 8757, 8760, 8764, 8768, 8773, 8776, 8779, 8785, 8786, 8792, 8793, 8796, 8797, 8799, 8803, 8807, 8810, 8813, 8814, 8821, 8823, 8824, 8828, 8829, 8833, 8837, 8841, 8842, 8844, 8849, 8852, 8855, 8858, 8861, 8864, 8868, 8871, 8874, 8878, 8879, 8884, 8888, 8894, 8899, 8903, 8909, 8911, 8913, 8915, 8917, 8919, 8921, 8923, 8925, 8927, 8929, 8931, 8933, 8935, 8937, 8939, 8941, 8943, 8945, 8950, 8952, 8957, 8959, 8964, 8966, 8969, 8971, 8974, 8976, 8980, 8982, 8986, 8988, 8992, 8996, 8998, 8999, 9001, 9005, 9009, 9013, 9016, 9018, 9022, 9026, 9030, 9032, 9034, 9036, 9038, 9040, 9042, 9044, 9046, 9048, 9050, 9052, 9054, 9062, 9068, 9072, 9078, 9084, 9088, 9092, 9098, 9102, 9105, 9107, 9109, 9113, 9119, 9121, 9124, 9129, 9132, 9133, 9135, 9136, 9138, 9141, 9144, 9147, 9151, 9157, 9159, 9160, 9162, 9165, 9166, 9169, 9171, 9172, 9174, 9175, 9177, 9181, 9185, 9188, 9190, 9192, 9194, 9198, 9200, 9203, 9205, 9209, 9211, 9213, 9215, 9217, 9220, 9222, 9224, 9226, 9228, 9230, 9233, 9240, 9243, 9250, 9253, 9257, 9263, 9266, 9270, 9276, 9278, 9280, 9282, 9284, 9286, 9288, 9291, 9294, 9296, 9298, 9300, 9302, 9304, 9306, 9310, 9321, 9326, 9328, 9330, 9332, 9334, 9336, 9338, 9340, 9342, 9344, 9346, 9348, 9350, 9352, 9354, 9356, 9358, 9360, 9362, 9364, 9366, 9368, 9370, 9372, 9374, 9376, 9378, 9380, 9382, 9384, 9386, 9388, 9390, 9392, 9394, 9396, 9398, 9400, 9402, 9404, 9406, 9408, 9410, 9412, 9414, 9416, 9418, 9420, 9422, 9424, 9426, 9428, 9430, 9432, 9434, 9436, 9438, 9440, 9442, 9444, 9446, 9448, 9450, 9452, 9454, 9456, 9458, 9460, 9462, 9464, 9466, 9468, 9470, 9472, 9474, 9476, 9478, 9480, 9482, 9484, 9486, 9488, 9490, 9492, 9494, 9496, 9498, 9500, 9502, 9504, 9506, 9508, 9510, 9512, 9514, 9516, 9518, 9520, 9522, 9524, 9526, 9528, 9530, 9532, 9534, 9536, 9538, 9540, 9542, 9544, 9546, 9548, 9550, 9552, 9554, 9556, 9558, 9560, 9562, 9564, 9566, 9568, 9570, 9572, 9574, 9576, 9578, 9580, 9582, 9584, 9586, 9588, 9590, 9592, 9594, 9596, 9598, 9600, 9602, 9604, 9606, 9608, 9610, 9612, 9614, 9616, 9618, 9620, 9622, 9624, 9626, 9628, 9630, 9632, 9634, 9636, 9638, 9640, 9642, 9644, 9646, 9648, 9650, 9652, 9654, 9656, 9658, 9660, 9662, 9664, 9666, 9668, 9670, 9672, 9674, 9676, 9678, 9680, 9682, 9684, 9686, 9688, 9690, 9692, 9694, 9696, 9698, 9700, 9702, 9704, 9706, 9708, 9710, 9712, 9714, 9716, 9718, 9720, 9722, 9724, 9726, 9728, 9730, 9732, 9734, 9736, 9738, 9740, 9742, 9744, 9746, 9748, 9750, 9752, 9754, 9756, 9758, 9760, 9762, 9764, 9766, 9768, 9770, 9772, 9774, 9776, 9778, 9780, 9782, 9784, 9786, 9788, 9790, 9792, 9794, 9796, 9798, 9800, 9802, 9804, 9806, 9808, 9810, 9812, 9814, 9816, 9818, 9820, 9822, 9824, 9826, 9828, 9830, 9832, 9834, 9836, 9838, 9840, 9842, 9844, 9846, 9848, 9850, 9852, 9854, 9856, 9858, 9860, 9862, 9864, 9866, 9868, 9870, 9872, 9874, 9876, 9878, 9880, 9882, 9884, 9886, 9888, 9890, 9892, 9894, 9896, 9898, 9900, 9902, 9904, 9906, 9908, 9910, 9912, 9914, 9916, 9918, 9920, 9922, 9924, 9926, 9928, 9930, 9932, 9934, 9936, 9938, 9940, 9942, 9944, 9946, 9948, 9950, 9952, 9954, 9956, 9958, 9960, 9962, 9964, 9966, 9968, 9970, 9972, 9974, 9976, 9978, 9980, 9982, 9984, 9986, 9988, 9990, 9992, 9994, 9996, 9998, 10000, 10002, 10004, 10006, 10008, 10010, 10012, 10014, 10016, 10018, 10020, 10022, 10024, 10026, 10028, 10030, 10032, 10034, 10036, 10038, 10040, 10042, 10044, 10046, 10048, 10050, 10052, 10054, 10056, 10058, 10060, 10062, 10064, 10066, 10068, 10070, 10072, 10074, 10076, 10078, 10080, 10082, 10084, 10086, 10088, 10090, 10092, 10094, 10096, 10098, 10100, 10102, 10104, 10106, 10108, 10110, 10112, 10114, 10116, 10118, 10120, 10122, 10124, 10126, 10128, 10130, 10132, 10134, 10136, 10138, 10140, 10142, 10144, 10146, 10148, 10150, 10152, 10154, 10156, 10158, 10160, 10162, 10164, 10166, 10168, 10170, 10172, 10174, 10176, 10178, 10180, 10182, 10184, 10186, 10188, 10190, 10192, 10194, 10196, 10198, 10200, 10202, 10204, 10206, 10208, 10210, 10212, 10214, 10216, 10218, 10220, 10222, 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 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { 509, 0, -1, 510, -1, 485, 1078, -1, 486, 1182, -1, 487, 1183, -1, 488, 1183, -1, 489, 1183, -1, 510, 505, 511, -1, 511, -1, 512, -1, 909, -1, 738, -1, 929, -1, 924, -1, 925, -1, 803, -1, 932, -1, 751, -1, 673, -1, 676, -1, 681, -1, 694, -1, 854, -1, 526, -1, 881, -1, 883, -1, 889, -1, 884, -1, 888, -1, 704, -1, 652, -1, 930, -1, 555, -1, 877, -1, 574, -1, 893, -1, 523, -1, 521, -1, 895, -1, 643, -1, 935, -1, 934, -1, 702, -1, 941, -1, 513, -1, 553, -1, 577, -1, 938, -1, 779, -1, 550, -1, 578, -1, 712, -1, 644, -1, 740, -1, 867, -1, 937, -1, 931, -1, 670, -1, 677, -1, 690, -1, 695, -1, 822, -1, 525, -1, 647, -1, 753, -1, 760, -1, 890, -1, 761, -1, 703, -1, 660, -1, 528, -1, 651, -1, 593, -1, 894, -1, 640, -1, 667, -1, 871, -1, 714, -1, 734, -1, 514, -1, 520, -1, 699, -1, 918, -1, 962, -1, 992, -1, 741, -1, 972, -1, 554, -1, 864, -1, 869, -1, 764, -1, 765, -1, 766, -1, 768, -1, 896, -1, 669, -1, 873, -1, 524, -1, 701, -1, 926, -1, 960, -1, 955, -1, 784, -1, 788, -1, 799, -1, 696, -1, 808, -1, 963, -1, 906, -1, 650, -1, 917, -1, 974, -1, 984, -1, 904, -1, 957, -1, 767, -1, 874, -1, 858, -1, 857, -1, 859, -1, 878, -1, 789, -1, 800, -1, 897, -1, 781, -1, 996, -1, 908, -1, 777, -1, 907, -1, 979, -1, 940, -1, 544, -1, 532, -1, 549, -1, 915, -1, -1, 62, 1104, -1, 99, 355, 1179, 515, 516, -1, 461, -1, 484, -1, -1, 516, 519, -1, -1, 517, 518, -1, -1, 311, 1177, -1, 311, 12, -1, 311, 278, -1, 145, 311, 1177, -1, 145, 311, 12, -1, 433, 311, 1177, -1, 204, -1, 91, 236, 1178, -1, 444, 439, 1177, -1, 441, 1181, -1, 3, -1, 518, -1, 404, 1176, -1, 27, 1181, -1, 355, 1181, -1, 198, 355, 1181, -1, 198, 183, 1181, -1, 99, 441, 1179, 515, 516, -1, 32, 355, 1180, 515, 517, -1, 32, 441, 1180, 515, 517, -1, -1, 198, 114, 1171, -1, 32, 355, 1180, 522, 547, -1, 32, 355, 30, 522, 547, -1, 32, 441, 1180, 522, 547, -1, 32, 441, 30, 522, 547, -1, 140, 355, 1181, -1, 140, 355, 192, 155, 1181, -1, 140, 441, 1181, -1, 140, 441, 192, 155, 1181, -1, 140, 183, 1181, -1, 140, 183, 192, 155, 1181, -1, 99, 183, 1179, 515, 516, -1, 32, 183, 1180, 527, 441, 1181, -1, 26, -1, 140, -1, 99, 364, 529, 49, 1180, 530, -1, 99, 364, 1186, 530, -1, 99, 364, 192, 273, 155, 529, 49, 1180, 530, -1, 99, 364, 192, 273, 155, 1186, 530, -1, 1186, -1, -1, 530, 531, -1, -1, 593, -1, 808, -1, 651, -1, 714, -1, 788, -1, 915, -1, 377, 533, -1, 377, 239, 533, -1, 377, 375, 533, -1, 420, 912, -1, 375, 72, 39, 420, 912, -1, 535, -1, 536, 418, 537, -1, 536, 492, 537, -1, 536, 418, 120, -1, 536, 492, 120, -1, 534, -1, 536, 174, 103, -1, 416, 481, 541, -1, 68, 1177, -1, 364, 1177, -1, 364, 12, -1, 259, 542, -1, 355, 543, -1, 355, 12, -1, 375, 49, 543, -1, 375, 49, 12, -1, 375, 49, 120, -1, 467, 291, 1113, -1, 420, 386, 1177, -1, 1186, -1, 536, 504, 1186, -1, 538, -1, 537, 506, 538, -1, 540, -1, 658, -1, 12, -1, 331, 432, -1, 331, 86, -1, 344, 331, -1, 373, -1, 425, -1, 161, -1, 288, -1, 543, -1, 1177, -1, 12, -1, 3, -1, 1097, 1177, 1099, -1, 1097, 502, 1176, 503, 1177, -1, 658, -1, 120, -1, 239, -1, 1177, -1, 120, -1, -1, 1188, -1, 1177, -1, 347, 545, -1, 546, -1, 416, 481, -1, 420, 222, 234, -1, 375, 49, -1, 536, -1, 30, -1, 377, 533, -1, 544, -1, 377, 535, -1, 544, -1, 381, 536, -1, 381, 416, 481, -1, 381, 420, 222, 234, -1, 381, 375, 49, -1, 381, 30, -1, 377, 93, 551, 552, -1, 30, -1, 1168, -1, 123, -1, 194, -1, 74, -1, 134, 30, -1, 134, 410, -1, 134, 412, -1, 134, 313, -1, 134, 372, -1, 32, 406, 1055, 556, -1, 32, 406, 192, 155, 1055, 556, -1, 32, 406, 1055, 557, -1, 32, 406, 192, 155, 1055, 557, -1, 32, 406, 30, 198, 409, 1171, 377, 409, 1171, 977, -1, 32, 406, 30, 198, 409, 1171, 303, 60, 1181, 377, 409, 1171, 977, -1, 32, 202, 1169, 556, -1, 32, 202, 192, 155, 1169, 556, -1, 32, 202, 1169, 558, -1, 32, 202, 30, 198, 409, 1171, 377, 409, 1171, 977, -1, 32, 202, 30, 198, 409, 1171, 303, 60, 1181, 377, 409, 1171, 977, -1, 32, 371, 1169, 556, -1, 32, 371, 192, 155, 1169, 556, -1, 32, 454, 1169, 556, -1, 32, 454, 192, 155, 1169, 556, -1, 32, 249, 454, 1169, 556, -1, 32, 249, 454, 192, 155, 1169, 556, -1, 32, 249, 454, 30, 198, 409, 1171, 377, 409, 1171, 977, -1, 32, 249, 454, 30, 198, 409, 1171, 303, 60, 1181, 377, 409, 1171, 977, -1, 32, 171, 406, 1055, 556, -1, 32, 171, 406, 192, 155, 1055, 556, -1, 559, -1, 556, 506, 559, -1, 47, 309, 1169, 571, -1, 131, 309, 1169, 810, -1, 131, 309, 1169, 165, -1, 47, 309, 1169, -1, 26, 601, -1, 26, 192, 273, 155, 601, -1, 26, 81, 601, -1, 26, 81, 192, 273, 155, 601, -1, 32, 879, 1186, 560, -1, 32, 879, 1186, 140, 273, 278, -1, 32, 879, 1186, 377, 273, 278, -1, 32, 879, 1186, 140, 157, -1, 32, 879, 1186, 140, 157, 192, 155, -1, 32, 879, 1186, 377, 393, 1178, -1, 32, 879, 1176, 377, 393, 1178, -1, 32, 879, 1186, 377, 565, -1, 32, 879, 1186, 347, 565, -1, 32, 879, 1186, 377, 396, 1186, -1, 32, 879, 1186, 377, 603, -1, 32, 879, 1186, 26, 178, 609, 39, 191, 654, -1, 32, 879, 1186, 569, -1, 32, 879, 1186, 140, 191, -1, 32, 879, 1186, 140, 191, 192, 155, -1, 140, 879, 192, 155, 1186, 561, -1, 140, 879, 1186, 561, -1, 32, 879, 1186, 880, 428, 1078, 562, 563, -1, 32, 879, 1186, 684, -1, 26, 614, -1, 32, 92, 1171, 732, -1, 445, 92, 1171, -1, 140, 92, 192, 155, 1171, 561, -1, 140, 92, 1171, 561, -1, 377, 463, 286, -1, 77, 288, 1171, -1, 377, 463, 77, -1, 377, 245, -1, 377, 438, -1, 143, 423, 1171, -1, 143, 33, 423, 1171, -1, 143, 346, 423, 1171, -1, 143, 423, 30, -1, 143, 423, 441, -1, 133, 423, 1171, -1, 133, 423, 30, -1, 133, 423, 441, -1, 143, 362, 1171, -1, 143, 33, 362, 1171, -1, 143, 346, 362, 1171, -1, 133, 362, 1171, -1, 204, 1169, -1, 269, 204, 1169, -1, 283, 774, -1, 273, 283, -1, 304, 418, 1180, -1, 377, 24, 252, 1171, -1, 377, 409, 1171, -1, 377, 565, -1, 347, 565, -1, 346, 191, 564, -1, 143, 360, 234, 369, -1, 133, 360, 234, 369, -1, 170, 360, 234, 369, -1, 269, 170, 360, 234, 369, -1, 684, -1, 377, 120, 1101, -1, 140, 120, -1, 64, -1, 349, -1, -1, 79, 774, -1, -1, 442, 1101, -1, -1, 274, -1, 175, -1, 120, -1, 442, 202, 1171, -1, 502, 567, 503, -1, 461, 565, -1, -1, 568, -1, 567, 506, 568, -1, 1189, 492, 745, -1, 1189, -1, 1189, 504, 1189, 492, 745, -1, 1189, 504, 1189, -1, 570, -1, 569, 570, -1, 348, -1, 348, 515, 658, -1, 377, 656, -1, 377, 178, 609, -1, 169, 448, 461, 502, 573, 503, -1, 169, 448, 198, 502, 1139, 503, -1, 169, 448, 174, 502, 1139, 503, 418, 502, 1139, 503, -1, 120, -1, 1188, 1176, -1, 572, -1, 573, 506, 572, -1, 32, 428, 774, 575, -1, 576, -1, 575, 506, 576, -1, 26, 48, 1070, 561, -1, 140, 48, 192, 155, 1186, 561, -1, 140, 48, 1186, 561, -1, 32, 48, 1186, 880, 428, 1078, 562, 561, -1, 76, 993, -1, 76, 30, -1, 97, 585, 1169, 617, 579, 580, 581, 586, 515, 582, 1066, -1, 97, 502, 959, 503, 418, 580, 581, 515, 582, -1, 174, -1, 418, -1, 327, -1, -1, 1177, -1, 394, -1, 395, -1, 583, -1, 502, 588, 503, -1, 583, 584, -1, -1, 55, -1, 173, -1, 126, 933, 1177, -1, 278, 933, 1177, -1, 101, -1, 188, -1, 329, 933, 1177, -1, 148, 933, 1177, -1, 170, 329, 618, -1, 170, 329, 495, -1, 170, 273, 278, 618, -1, 170, 278, 618, -1, 144, 1177, -1, 55, -1, -1, 587, 127, 1177, -1, -1, 442, -1, -1, 589, -1, 588, 506, 589, -1, 1189, 590, -1, 540, -1, 658, -1, 495, -1, 502, 591, 503, -1, -1, 592, -1, 591, 506, 592, -1, 540, -1, 99, 594, 406, 1169, 502, 595, 503, 629, 630, 634, 635, 636, 637, -1, 99, 594, 406, 192, 273, 155, 1169, 502, 595, 503, 629, 630, 634, 635, 636, 637, -1, 99, 594, 406, 1169, 283, 774, 596, 630, 634, 635, 636, 637, -1, 99, 594, 406, 192, 273, 155, 1169, 283, 774, 596, 630, 634, 635, 636, 637, -1, 99, 594, 406, 1169, 309, 283, 1169, 596, 571, 630, 634, 635, 636, 637, -1, 99, 594, 406, 192, 273, 155, 1169, 309, 283, 1169, 596, 571, 630, 634, 635, 636, 637, -1, 412, -1, 410, -1, 239, 412, -1, 239, 410, -1, 179, 412, -1, 179, 410, -1, 438, -1, -1, 597, -1, -1, 502, 598, 503, -1, -1, 599, -1, 597, 506, 599, -1, 600, -1, 598, 506, 600, -1, 601, -1, 611, -1, 614, -1, 602, -1, 614, -1, 1186, 1078, 604, 682, 605, -1, 1186, 605, -1, 1186, 461, 292, 605, -1, 87, 1186, -1, 87, 120, -1, 603, -1, -1, 605, 606, -1, -1, 92, 1171, 607, -1, 607, -1, 610, -1, 79, 774, -1, 273, 278, -1, 278, -1, 435, 608, 851, 638, -1, 321, 224, 851, 638, -1, 73, 502, 1101, 503, 616, -1, 120, 1102, -1, 178, 609, 39, 191, 654, -1, 178, 609, 39, 502, 1101, 503, 397, -1, 337, 1169, 617, 621, 625, -1, 280, 135, -1, 280, 273, 135, -1, -1, 33, -1, 60, 120, -1, 122, -1, 273, 122, -1, 206, 123, -1, 206, 194, -1, 235, 1169, 612, -1, 612, 200, 613, -1, 612, 152, 613, -1, -1, 84, -1, 87, -1, 93, -1, 121, -1, 191, -1, 178, -1, 203, -1, 393, -1, 396, -1, 30, -1, 92, 1171, 615, -1, 615, -1, 73, 502, 1101, 503, 732, -1, 435, 608, 502, 618, 503, 620, 851, 638, 732, -1, 435, 639, 732, -1, 321, 224, 502, 618, 503, 620, 851, 638, 732, -1, 321, 224, 639, 732, -1, 151, 812, 502, 622, 503, 620, 851, 638, 624, 732, -1, 171, 224, 502, 618, 503, 337, 1169, 617, 621, 625, 732, -1, 269, 204, -1, -1, 502, 618, 503, -1, -1, 619, -1, 618, 506, 619, -1, 1186, -1, 199, 502, 618, 503, -1, -1, 247, 175, -1, 247, 308, -1, 247, 383, -1, -1, 623, -1, 622, 506, 623, -1, 815, 461, 861, -1, 815, 461, 290, 502, 861, 503, -1, 458, 502, 1101, 503, -1, -1, 626, -1, 627, -1, 626, 627, -1, 627, 626, -1, -1, 288, 440, 628, -1, 288, 125, 628, -1, 269, 25, -1, 349, -1, 64, -1, 377, 278, 617, -1, 377, 120, 617, -1, 205, 502, 1168, 503, -1, -1, 631, -1, -1, 309, 60, 1186, 502, 632, 503, -1, 633, -1, 632, 506, 633, -1, 1186, 818, 819, -1, 1106, 818, 819, -1, 502, 1101, 503, 818, 819, -1, 442, 1171, -1, -1, 461, 565, -1, 463, 286, -1, -1, 288, 85, 140, -1, 288, 85, 125, 361, -1, 288, 85, 318, 361, -1, -1, 409, 1171, -1, -1, 442, 202, 409, 1171, -1, -1, 442, 202, 1171, -1, 99, 393, 774, 951, 288, 641, 174, 1045, -1, 99, 393, 192, 273, 155, 774, 951, 288, 641, 174, 1045, -1, 642, -1, 641, 506, 642, -1, 1186, -1, 1106, -1, 502, 1101, 503, -1, 32, 393, 774, 377, 393, 1178, -1, 32, 393, 192, 155, 774, 377, 393, 1178, -1, 99, 594, 406, 645, 39, 996, 646, -1, 99, 594, 406, 192, 273, 155, 645, 39, 996, 646, -1, 1169, 617, 634, 635, 636, 637, -1, 461, 113, -1, 461, 269, 113, -1, -1, 99, 649, 249, 454, 648, 39, 996, 646, -1, 99, 649, 249, 454, 192, 273, 155, 648, 39, 996, 646, -1, 1169, 617, 634, 566, 637, -1, 438, -1, -1, 339, 249, 454, 810, 1169, 646, -1, 99, 594, 371, 1169, 653, -1, 99, 594, 371, 192, 273, 155, 1169, 653, -1, 32, 371, 1169, 655, -1, 32, 371, 192, 155, 1169, 655, -1, 655, -1, -1, 502, 655, 503, -1, -1, 656, -1, 655, 656, -1, 39, 1080, -1, 61, 658, -1, 112, -1, 269, 112, -1, 201, 657, 658, -1, 250, 658, -1, 254, 658, -1, 269, 250, -1, 269, 254, -1, 303, 60, 774, -1, 371, 258, 774, -1, 391, 515, 658, -1, 348, -1, 348, 515, 658, -1, 60, -1, -1, 5, -1, 493, 5, -1, 494, 5, -1, 1178, -1, 658, -1, 659, 506, 658, -1, 99, 823, 661, 666, 226, 1171, -1, 99, 823, 661, 666, 226, 1171, 186, 662, 663, 665, -1, 427, -1, -1, 1171, -1, 1171, 775, -1, 207, 662, -1, -1, 446, 662, -1, 269, 446, -1, 664, -1, -1, 324, -1, -1, 99, 409, 1171, 668, 242, 1177, 566, -1, 304, 1180, -1, -1, 140, 409, 1171, -1, 140, 409, 192, 155, 1171, -1, 99, 158, 1171, 515, 671, -1, 99, 158, 192, 273, 155, 1171, 515, 671, -1, 671, 672, -1, -1, 364, 1171, -1, 453, 543, -1, 174, 543, -1, 64, -1, 32, 158, 1171, 440, 674, -1, 674, 675, -1, -1, 418, 543, -1, 32, 158, 1171, 527, 770, 1171, -1, 32, 158, 1171, 527, 769, 774, -1, 32, 158, 1171, 527, 29, 839, -1, 32, 158, 1171, 527, 67, 502, 1078, 39, 1078, 503, -1, 32, 158, 1171, 527, 138, 1078, -1, 32, 158, 1171, 527, 176, 827, -1, 32, 158, 1171, 527, 290, 863, -1, 32, 158, 1171, 527, 290, 75, 774, 442, 1171, -1, 32, 158, 1171, 527, 290, 162, 774, 442, 1171, -1, 32, 158, 1171, 527, 325, 827, -1, 32, 158, 1171, 527, 358, 827, -1, 32, 158, 1171, 527, 421, 169, 1078, 226, 1171, -1, 32, 158, 1171, 527, 428, 1078, -1, 99, 171, 113, 465, 1171, 680, 682, -1, 186, 662, -1, 269, 186, -1, 446, 662, -1, 269, 446, -1, 678, -1, 679, 678, -1, 679, -1, -1, 32, 171, 113, 465, 1171, 680, 684, -1, 32, 171, 113, 465, 1171, 679, -1, 292, 502, 683, 503, -1, -1, 687, -1, 683, 506, 687, -1, 292, 502, 685, 503, -1, 686, -1, 685, 506, 686, -1, 687, -1, 377, 687, -1, 26, 687, -1, 140, 688, -1, 688, 689, -1, 1189, -1, 1177, -1, 99, 374, 1171, 691, 693, 171, 113, 465, 1171, 682, -1, 99, 374, 192, 273, 155, 1171, 691, 693, 171, 113, 465, 1171, 682, -1, 428, 1177, -1, -1, 453, 1177, -1, 453, 278, -1, 692, -1, -1, 32, 374, 1171, 692, 684, -1, 32, 374, 1171, 692, -1, 32, 374, 1171, 684, -1, 99, 171, 406, 1169, 502, 595, 503, 629, 374, 1171, 682, -1, 99, 171, 406, 192, 273, 155, 1169, 502, 595, 503, 629, 374, 1171, 682, -1, 99, 171, 406, 1169, 309, 283, 1169, 596, 571, 374, 1171, 682, -1, 99, 171, 406, 192, 273, 155, 1169, 309, 283, 1169, 596, 571, 374, 1171, 682, -1, 197, 171, 364, 1171, 698, 174, 374, 1171, 218, 1171, 682, -1, 236, 418, -1, 150, -1, 697, 502, 1057, 503, -1, -1, 99, 441, 246, 169, 700, 374, 1171, 682, -1, 99, 441, 246, 192, 273, 155, 169, 700, 374, 1171, 682, -1, 1180, -1, 441, -1, 140, 441, 246, 169, 700, 374, 1171, -1, 140, 441, 246, 192, 155, 169, 700, 374, 1171, -1, 32, 441, 246, 169, 700, 374, 1171, 684, -1, 99, 314, 1171, 288, 1169, 709, 710, 707, 705, 706, -1, 32, 314, 1171, 288, 1169, 708, 705, 706, -1, 442, 502, 1101, 503, -1, -1, 461, 73, 502, 1101, 503, -1, -1, 418, 1181, -1, -1, 418, 1181, -1, -1, 39, 3, -1, -1, 169, 711, -1, -1, 30, -1, 370, -1, 212, -1, 440, -1, 125, -1, 99, 24, 252, 1171, 428, 713, 186, 662, -1, 202, -1, 406, -1, 99, 823, 423, 1171, 715, 716, 288, 1169, 718, 724, 727, 154, 728, 1174, 502, 729, 503, -1, 99, 823, 92, 423, 1171, 28, 716, 288, 1169, 731, 732, 169, 141, 360, 727, 154, 728, 1174, 502, 729, 503, -1, 51, -1, 28, -1, 213, 283, -1, 717, -1, 716, 293, 717, -1, 212, -1, 125, -1, 440, -1, 440, 283, 618, -1, 426, -1, 338, 719, -1, -1, 720, -1, 719, 720, -1, 721, 722, 933, 723, -1, 263, -1, 287, -1, 406, -1, 360, -1, 1186, -1, 169, 725, 726, -1, -1, 141, -1, -1, 360, -1, 392, -1, 457, 502, 1101, 503, -1, -1, 176, -1, 325, -1, 730, -1, 729, 506, 730, -1, -1, 1176, -1, 5, -1, 1177, -1, 1189, -1, 174, 1169, -1, -1, -1, 732, 733, -1, 273, 122, -1, 122, -1, 206, 194, -1, 206, 123, -1, 273, 444, -1, 269, 204, -1, 99, 149, 423, 1171, 288, 1189, 154, 728, 1174, 502, 503, -1, 99, 149, 423, 1171, 288, 1189, 457, 735, 154, 728, 1174, 502, 503, -1, 736, -1, 735, 36, 736, -1, 1186, 198, 502, 737, 503, -1, 6, -1, 737, 506, 6, -1, 32, 149, 423, 1171, 739, -1, 143, -1, 143, 346, -1, 143, 33, -1, 133, -1, 99, 42, 774, 73, 502, 1101, 503, 732, -1, 99, 823, 29, 1174, 837, 742, -1, 99, 823, 29, 1174, 746, -1, 99, 290, 861, 742, -1, 99, 428, 774, 742, -1, 99, 428, 774, -1, 99, 428, 774, 39, 502, 1068, 503, -1, 99, 428, 774, 39, 147, 502, 749, 503, -1, 99, 428, 774, 39, 330, 742, -1, 99, 413, 367, 307, 774, 742, -1, 99, 413, 367, 132, 774, 742, -1, 99, 413, 367, 411, 774, 742, -1, 99, 413, 367, 89, 774, 742, -1, 99, 80, 774, 742, -1, 99, 80, 192, 273, 155, 774, 742, -1, 99, 80, 774, 174, 774, -1, 99, 80, 192, 273, 155, 774, 174, 774, -1, 502, 743, 503, -1, 744, -1, 743, 506, 744, -1, 1189, 492, 745, -1, 1189, -1, 834, -1, 1194, -1, 1137, -1, 658, -1, 1177, -1, 270, -1, 502, 747, 503, -1, 748, -1, 747, 506, 748, -1, 3, 492, 745, -1, 750, -1, -1, 1177, -1, 750, 506, 1177, -1, 32, 428, 774, 26, 447, 752, 1177, -1, 32, 428, 774, 26, 447, 752, 1177, 51, 1177, -1, 32, 428, 774, 26, 447, 752, 1177, 28, 1177, -1, 32, 428, 774, 343, 447, 1177, 418, 1177, -1, 192, 273, 155, -1, -1, 99, 290, 75, 774, 756, 169, 428, 1078, 442, 1171, 757, 39, 754, -1, 755, -1, 754, 506, 755, -1, 290, 1176, 861, 758, 759, -1, 290, 1176, 863, 758, 759, -1, 176, 1176, 827, -1, 176, 1176, 502, 1143, 503, 827, -1, 396, 1078, -1, 120, -1, -1, 162, 774, -1, -1, 169, 367, -1, 169, 294, 60, 774, -1, -1, 334, -1, -1, 99, 290, 162, 774, 442, 1171, -1, 32, 290, 162, 774, 442, 1171, 26, 754, -1, 32, 290, 162, 774, 442, 1171, 140, 762, -1, 763, -1, 762, 506, 763, -1, 290, 1176, 502, 1143, 503, -1, 176, 1176, 502, 1143, 503, -1, 140, 290, 75, 774, 442, 1171, 561, -1, 140, 290, 75, 192, 155, 774, 442, 1171, 561, -1, 140, 290, 162, 774, 442, 1171, 561, -1, 140, 290, 162, 192, 155, 774, 442, 1171, 561, -1, 140, 303, 60, 1181, 561, -1, 333, 303, 60, 1181, 418, 1180, -1, 140, 769, 192, 155, 773, 561, -1, 140, 769, 773, 561, -1, 140, 771, 192, 155, 1170, 561, -1, 140, 771, 1170, 561, -1, 140, 772, 1171, 288, 774, 561, -1, 140, 772, 192, 155, 1171, 288, 774, 561, -1, 140, 428, 776, 561, -1, 140, 428, 192, 155, 776, 561, -1, 140, 138, 776, 561, -1, 140, 138, 192, 155, 776, 561, -1, 140, 202, 88, 773, 561, -1, 140, 202, 88, 192, 155, 773, 561, -1, 406, -1, 371, -1, 454, -1, 249, 454, -1, 202, -1, 171, 406, -1, 80, -1, 96, -1, 393, -1, 413, 367, 307, -1, 413, 367, 132, -1, 413, 367, 411, -1, 413, 367, 89, -1, 771, -1, 114, -1, 355, -1, 400, -1, 409, -1, 24, 252, -1, 149, 423, -1, 158, -1, 171, 113, 465, -1, 666, 226, -1, 328, -1, 364, -1, 374, -1, 314, -1, 362, -1, 423, -1, 774, -1, 773, 506, 774, -1, 1186, -1, 1186, 775, -1, 504, 1172, -1, 775, 504, 1172, -1, 1078, -1, 776, 506, 1078, -1, 426, 1010, 1057, 778, 561, -1, 95, 191, -1, 348, 191, -1, -1, 83, 288, 769, 774, 220, 780, -1, 83, 288, 81, 774, 220, 780, -1, 83, 288, 770, 1171, 220, 780, -1, 83, 288, 428, 1078, 220, 780, -1, 83, 288, 138, 1078, 220, 780, -1, 83, 288, 29, 839, 220, 780, -1, 83, 288, 176, 827, 220, 780, -1, 83, 288, 290, 863, 220, 780, -1, 83, 288, 92, 1171, 288, 774, 220, 780, -1, 83, 288, 92, 1171, 288, 138, 774, 220, 780, -1, 83, 288, 772, 1171, 288, 774, 220, 780, -1, 83, 288, 325, 827, 220, 780, -1, 83, 288, 358, 827, 220, 780, -1, 83, 288, 421, 169, 1078, 226, 1171, 220, 780, -1, 83, 288, 290, 75, 774, 442, 1171, 220, 780, -1, 83, 288, 290, 162, 774, 442, 1171, 220, 780, -1, 83, 288, 227, 282, 658, 220, 780, -1, 83, 288, 67, 502, 1078, 39, 1078, 503, 220, 780, -1, 1177, -1, 278, -1, 369, 225, 782, 288, 769, 774, 220, 783, -1, 369, 225, 782, 288, 81, 774, 220, 783, -1, 369, 225, 782, 288, 770, 1171, 220, 783, -1, 369, 225, 782, 288, 428, 1078, 220, 783, -1, 369, 225, 782, 288, 138, 1078, 220, 783, -1, 369, 225, 782, 288, 29, 839, 220, 783, -1, 369, 225, 782, 288, 176, 827, 220, 783, -1, 369, 225, 782, 288, 227, 282, 658, 220, 783, -1, 369, 225, 782, 288, 325, 827, 220, 783, -1, 369, 225, 782, 288, 358, 827, 220, 783, -1, 169, 543, -1, -1, 1177, -1, 278, -1, 163, 785, -1, 257, 785, -1, 993, -1, 786, 993, -1, 264, 787, 993, -1, 322, 787, 993, -1, 166, 787, 993, -1, 228, 787, 993, -1, 23, 1178, 787, 993, -1, 341, 1178, 787, 993, -1, 1178, 787, 993, -1, 30, 787, 993, -1, 172, 787, 993, -1, 172, 1178, 787, 993, -1, 172, 30, 787, 993, -1, 50, 787, 993, -1, 50, 1178, 787, 993, -1, 50, 30, 787, 993, -1, 174, -1, 198, -1, 786, -1, -1, 180, 790, 288, 795, 418, 796, 798, 802, -1, 353, 790, 288, 795, 174, 796, 802, 561, -1, 353, 180, 291, 169, 790, 288, 795, 174, 796, 802, 561, -1, 791, -1, 30, -1, 30, 323, -1, 30, 502, 618, 503, -1, 30, 323, 502, 618, 503, -1, 792, -1, 791, 506, 792, -1, 370, 617, -1, 337, 617, -1, 99, 617, -1, 32, 405, -1, 1186, 617, -1, 794, -1, 793, 506, 794, -1, 1186, -1, 794, 504, 1186, -1, 1168, -1, 406, 1168, -1, 371, 1168, -1, 171, 113, 465, 1170, -1, 171, 374, 1170, -1, 176, 826, -1, 325, 826, -1, 358, 826, -1, 114, 1170, -1, 138, 773, -1, 226, 1170, -1, 227, 282, 659, -1, 306, 793, -1, 364, 1170, -1, 409, 1170, -1, 428, 773, -1, 30, 407, 198, 364, 1170, -1, 30, 372, 198, 364, 1170, -1, 30, 177, 198, 364, 1170, -1, 30, 326, 198, 364, 1170, -1, 30, 359, 198, 364, 1170, -1, 797, -1, 796, 506, 797, -1, 1180, -1, 183, 1180, -1, 461, 180, 291, -1, -1, 180, 791, 418, 1181, 801, 802, -1, 353, 791, 174, 1181, 802, 561, -1, 353, 27, 291, 169, 791, 174, 1181, 802, 561, -1, 461, 27, 291, -1, -1, 181, 60, 1180, -1, -1, 32, 120, 323, 804, 806, -1, 804, 805, -1, -1, 198, 364, 1170, -1, 169, 355, 1181, -1, 169, 441, 1181, -1, 180, 790, 288, 807, 418, 796, 798, -1, 353, 790, 288, 807, 174, 796, 561, -1, 353, 180, 291, 169, 790, 288, 807, 174, 796, 561, -1, 407, -1, 177, -1, 359, -1, 372, -1, 429, -1, 365, -1, 99, 809, 202, 810, 811, 288, 1055, 812, 502, 813, 503, 816, 608, 566, 637, 1066, -1, 99, 809, 202, 810, 192, 273, 155, 1171, 288, 1055, 812, 502, 813, 503, 816, 608, 566, 637, 1066, -1, 435, -1, -1, 88, -1, -1, 1171, -1, -1, 442, 1171, -1, -1, 815, -1, 813, 506, 815, -1, 818, 819, 820, 821, -1, 818, 774, 565, 820, 821, -1, 1186, 814, -1, 1106, 814, -1, 502, 1101, 503, 814, -1, 199, 502, 817, 503, -1, -1, 815, -1, 817, 506, 815, -1, 79, 774, -1, -1, 774, -1, -1, 40, -1, 130, -1, -1, 483, 166, -1, 483, 228, -1, -1, 99, 823, 176, 1174, 828, 352, 833, 841, 847, -1, 99, 823, 176, 1174, 828, 352, 406, 502, 853, 503, 841, 847, -1, 99, 823, 176, 1174, 828, 841, 847, -1, 99, 823, 325, 1174, 828, 841, 847, -1, 293, 345, -1, -1, 502, 825, 503, -1, 502, 503, -1, 830, -1, 825, 506, 830, -1, 827, -1, 826, 506, 827, -1, 1174, 824, -1, 1193, -1, 1186, -1, 1186, 1162, -1, 502, 829, 503, -1, 502, 503, -1, 835, -1, 829, 506, 835, -1, 831, 832, 834, -1, 832, 831, 834, -1, 832, 834, -1, 831, 834, -1, 834, -1, 198, -1, 297, -1, 209, -1, 198, 297, -1, 450, -1, 1187, -1, 834, -1, 1078, -1, 1187, 775, 497, 428, -1, 379, 1187, 775, 497, 428, -1, 830, -1, 830, 120, 1101, -1, 830, 492, 1101, -1, 830, -1, 502, 495, 503, -1, 502, 838, 503, -1, 502, 294, 60, 838, 503, -1, 502, 838, 294, 60, 838, 503, -1, 836, -1, 838, 506, 836, -1, 1174, 837, -1, 839, -1, 840, 506, 839, -1, 842, -1, -1, 844, -1, 842, 844, -1, 63, 288, 278, 210, -1, 352, 278, 288, 278, 210, -1, 398, -1, 195, -1, 389, -1, 456, -1, 159, 369, 124, -1, 159, 369, 219, -1, 369, 124, -1, 369, 219, -1, 231, -1, 273, 231, -1, 98, 658, -1, 361, 658, -1, 402, 774, -1, 548, -1, 305, 1186, -1, 39, 845, -1, 226, 543, -1, 421, 850, -1, 460, -1, 843, -1, 1177, -1, 1177, 506, 1177, -1, 350, 1101, -1, 846, -1, 52, 45, 848, 146, -1, -1, 848, 849, 505, -1, -1, 512, -1, 846, -1, 169, 428, 1078, -1, 850, 506, 169, 428, 1078, -1, 461, 742, -1, -1, 832, 834, -1, 852, -1, 853, 506, 852, -1, 32, 176, 827, 855, 856, -1, 32, 325, 827, 855, 856, -1, 32, 358, 827, 855, 856, -1, 843, -1, 855, 843, -1, 349, -1, -1, 140, 176, 826, 561, -1, 140, 176, 192, 155, 826, 561, -1, 140, 325, 826, 561, -1, 140, 325, 192, 155, 826, 561, -1, 140, 358, 826, 561, -1, 140, 358, 192, 155, 826, 561, -1, 140, 29, 840, 561, -1, 140, 29, 192, 155, 840, 561, -1, 140, 290, 862, 561, -1, 140, 290, 192, 155, 862, 561, -1, 502, 1078, 503, -1, 502, 1078, 506, 1078, 503, -1, 502, 270, 506, 1078, 503, -1, 502, 1078, 506, 270, 503, -1, 1134, -1, 1186, 504, 861, -1, 863, -1, 862, 506, 863, -1, 861, 860, -1, 136, 865, -1, 866, -1, 865, 866, -1, 1177, -1, 226, 543, -1, 99, 67, 502, 1078, 39, 1078, 503, 461, 176, 827, 868, -1, 99, 67, 502, 1078, 39, 1078, 503, 463, 176, 868, -1, 99, 67, 502, 1078, 39, 1078, 503, 461, 209, 868, -1, 39, 196, -1, 39, 43, -1, -1, 140, 67, 870, 502, 1078, 39, 1078, 503, 561, -1, 192, 155, -1, -1, 99, 823, 421, 169, 1078, 226, 1171, 502, 872, 503, -1, 174, 388, 461, 176, 827, 506, 418, 388, 461, 176, 827, -1, 418, 388, 461, 176, 827, 506, 174, 388, 461, 176, 827, -1, 174, 388, 461, 176, 827, -1, 418, 388, 461, 176, 827, -1, 140, 421, 870, 169, 1078, 226, 1171, 561, -1, 340, 875, 810, 1169, -1, 340, 876, 810, 1171, -1, 340, 502, 942, 503, 875, 810, 1169, -1, 340, 502, 942, 503, 876, 810, 1171, -1, 202, -1, 406, -1, 364, -1, 405, -1, 114, -1, 32, 409, 1171, 377, 565, -1, 32, 409, 1171, 347, 565, -1, 32, 29, 839, 343, 418, 1171, -1, 32, 80, 774, 343, 418, 1171, -1, 32, 96, 774, 343, 418, 1171, -1, 32, 114, 1171, 343, 418, 1171, -1, 32, 138, 774, 343, 418, 1171, -1, 32, 138, 774, 343, 92, 1171, 418, 1171, -1, 32, 171, 113, 465, 1171, 343, 418, 1171, -1, 32, 176, 827, 343, 418, 1171, -1, 32, 183, 1179, 343, 418, 1179, -1, 32, 666, 226, 1171, 343, 418, 1171, -1, 32, 290, 75, 774, 442, 1171, 343, 418, 1171, -1, 32, 290, 162, 774, 442, 1171, 343, 418, 1171, -1, 32, 314, 1171, 288, 1169, 343, 418, 1171, -1, 32, 314, 192, 155, 1171, 288, 1169, 343, 418, 1171, -1, 32, 325, 827, 343, 418, 1171, -1, 32, 328, 1171, 343, 418, 1171, -1, 32, 358, 827, 343, 418, 1171, -1, 32, 364, 1171, 343, 418, 1171, -1, 32, 374, 1171, 343, 418, 1171, -1, 32, 400, 1171, 343, 418, 1171, -1, 32, 406, 1055, 343, 418, 1171, -1, 32, 406, 192, 155, 1055, 343, 418, 1171, -1, 32, 371, 1169, 343, 418, 1171, -1, 32, 371, 192, 155, 1169, 343, 418, 1171, -1, 32, 454, 1169, 343, 418, 1171, -1, 32, 454, 192, 155, 1169, 343, 418, 1171, -1, 32, 249, 454, 1169, 343, 418, 1171, -1, 32, 249, 454, 192, 155, 1169, 343, 418, 1171, -1, 32, 202, 1169, 343, 418, 1171, -1, 32, 202, 192, 155, 1169, 343, 418, 1171, -1, 32, 171, 406, 1055, 343, 418, 1171, -1, 32, 171, 406, 192, 155, 1055, 343, 418, 1171, -1, 32, 406, 1055, 343, 879, 1171, 418, 1171, -1, 32, 406, 192, 155, 1055, 343, 879, 1171, 418, 1171, -1, 32, 454, 1169, 343, 879, 1171, 418, 1171, -1, 32, 454, 192, 155, 1169, 343, 879, 1171, 418, 1171, -1, 32, 249, 454, 1169, 343, 879, 1171, 418, 1171, -1, 32, 249, 454, 192, 155, 1169, 343, 879, 1171, 418, 1171, -1, 32, 406, 1055, 343, 92, 1171, 418, 1171, -1, 32, 406, 192, 155, 1055, 343, 92, 1171, 418, 1171, -1, 32, 171, 406, 1055, 343, 879, 1171, 418, 1171, -1, 32, 171, 406, 192, 155, 1055, 343, 879, 1171, 418, 1171, -1, 32, 362, 1171, 288, 1169, 343, 418, 1171, -1, 32, 423, 1171, 288, 1169, 343, 418, 1171, -1, 32, 149, 423, 1171, 343, 418, 1171, -1, 32, 355, 1179, 343, 418, 1179, -1, 32, 441, 1179, 343, 418, 1179, -1, 32, 409, 1171, 343, 418, 1171, -1, 32, 393, 774, 343, 418, 1171, -1, 32, 413, 367, 307, 774, 343, 418, 1171, -1, 32, 413, 367, 132, 774, 343, 418, 1171, -1, 32, 413, 367, 411, 774, 343, 418, 1171, -1, 32, 413, 367, 89, 774, 343, 418, 1171, -1, 32, 428, 774, 343, 418, 1171, -1, 32, 428, 774, 343, 48, 1171, 418, 1171, 561, -1, 81, -1, -1, 377, 113, -1, -1, 32, 176, 827, 882, 128, 288, 158, 1171, -1, 32, 325, 827, 882, 128, 288, 158, 1171, -1, 32, 358, 827, 882, 128, 288, 158, 1171, -1, 32, 423, 1171, 288, 1169, 882, 128, 288, 158, 1171, -1, 32, 249, 454, 1169, 882, 128, 288, 158, 1171, -1, 32, 202, 1169, 882, 128, 288, 158, 1171, -1, 269, -1, -1, 32, 29, 839, 377, 364, 1171, -1, 32, 80, 774, 377, 364, 1171, -1, 32, 96, 774, 377, 364, 1171, -1, 32, 138, 774, 377, 364, 1171, -1, 32, 158, 1171, 377, 364, 1171, -1, 32, 176, 827, 377, 364, 1171, -1, 32, 290, 863, 377, 364, 1171, -1, 32, 290, 75, 774, 442, 1171, 377, 364, 1171, -1, 32, 290, 162, 774, 442, 1171, 377, 364, 1171, -1, 32, 325, 827, 377, 364, 1171, -1, 32, 358, 827, 377, 364, 1171, -1, 32, 406, 1055, 377, 364, 1171, -1, 32, 406, 192, 155, 1055, 377, 364, 1171, -1, 32, 393, 774, 377, 364, 1171, -1, 32, 413, 367, 307, 774, 377, 364, 1171, -1, 32, 413, 367, 132, 774, 377, 364, 1171, -1, 32, 413, 367, 411, 774, 377, 364, 1171, -1, 32, 413, 367, 89, 774, 377, 364, 1171, -1, 32, 371, 1169, 377, 364, 1171, -1, 32, 371, 192, 155, 1169, 377, 364, 1171, -1, 32, 454, 1169, 377, 364, 1171, -1, 32, 454, 192, 155, 1169, 377, 364, 1171, -1, 32, 249, 454, 1169, 377, 364, 1171, -1, 32, 249, 454, 192, 155, 1169, 377, 364, 1171, -1, 32, 171, 406, 1055, 377, 364, 1171, -1, 32, 171, 406, 192, 155, 1055, 377, 364, 1171, -1, 32, 428, 774, 377, 364, 1171, -1, 32, 290, 863, 377, 502, 885, 503, -1, 886, -1, 885, 506, 886, -1, 1189, 492, 270, -1, 1189, 492, 887, -1, 834, -1, 1194, -1, 1137, -1, 658, -1, 1177, -1, 32, 428, 774, 377, 502, 885, 503, -1, 32, 29, 839, 304, 418, 1180, -1, 32, 80, 774, 304, 418, 1180, -1, 32, 96, 774, 304, 418, 1180, -1, 32, 114, 1171, 304, 418, 1180, -1, 32, 138, 774, 304, 418, 1180, -1, 32, 176, 827, 304, 418, 1180, -1, 32, 666, 226, 1171, 304, 418, 1180, -1, 32, 227, 282, 658, 304, 418, 1180, -1, 32, 290, 863, 304, 418, 1180, -1, 32, 290, 75, 774, 442, 1171, 304, 418, 1180, -1, 32, 290, 162, 774, 442, 1171, 304, 418, 1180, -1, 32, 325, 827, 304, 418, 1180, -1, 32, 358, 827, 304, 418, 1180, -1, 32, 364, 1171, 304, 418, 1180, -1, 32, 428, 774, 304, 418, 1180, -1, 32, 409, 1171, 304, 418, 1180, -1, 32, 393, 774, 304, 418, 1180, -1, 32, 413, 367, 132, 774, 304, 418, 1180, -1, 32, 413, 367, 89, 774, 304, 418, 1180, -1, 32, 171, 113, 465, 1171, 304, 418, 1180, -1, 32, 374, 1171, 304, 418, 1180, -1, 32, 149, 423, 1171, 304, 418, 1180, -1, 32, 328, 1171, 304, 418, 1180, -1, 32, 400, 1171, 304, 418, 1180, -1, 99, 328, 1171, 851, -1, 99, 328, 1171, 169, 30, 407, 851, -1, 99, 328, 1171, 169, 892, 851, -1, 406, 1055, 617, 624, -1, 407, 198, 364, 1186, -1, 407, 198, 364, 107, -1, 1186, 617, 624, -1, 1186, 1162, 617, 624, -1, 1056, 617, 624, -1, 107, -1, 891, -1, 892, 506, 891, -1, 32, 328, 1171, 377, 742, -1, 32, 328, 1171, 26, 892, -1, 32, 328, 1171, 377, 892, -1, 32, 328, 1171, 140, 892, -1, 99, 400, 1171, 91, 1177, 328, 1170, 851, -1, 32, 400, 1171, 377, 742, -1, 32, 400, 1171, 91, 1177, -1, 32, 400, 1171, 339, 328, 851, -1, 32, 400, 1171, 26, 328, 1170, 851, -1, 32, 400, 1171, 140, 328, 1170, 851, -1, 32, 400, 1171, 377, 328, 1170, 851, -1, 32, 400, 1171, 143, -1, 32, 400, 1171, 133, -1, 32, 400, 1171, 384, 742, -1, 140, 400, 1171, 561, -1, 140, 400, 192, 155, 1171, 561, -1, 99, 823, 362, 1171, 39, 288, 902, 418, 1169, 1066, 136, 903, 898, -1, 274, -1, 900, -1, 502, 899, 503, -1, 899, 505, 901, -1, 901, -1, 996, -1, 963, -1, 979, -1, 972, -1, 904, -1, 900, -1, -1, 370, -1, 440, -1, 125, -1, 212, -1, 213, -1, 31, -1, -1, 275, 1186, 905, -1, 506, 1177, -1, -1, 237, 1186, -1, 437, 1186, -1, 437, 495, -1, 22, 910, 914, -1, 391, 420, 913, -1, 85, 910, 914, -1, 356, 910, 914, -1, 363, 1186, -1, 342, 363, 1186, -1, 342, 1186, -1, 356, 910, 418, 363, 1186, -1, 356, 910, 418, 1186, -1, 319, 420, 1177, -1, 85, 320, 1177, -1, 356, 320, 1177, -1, 52, 910, 913, -1, 146, 910, 914, -1, 464, -1, 420, -1, -1, 222, 234, 539, -1, 331, 289, -1, 331, 466, -1, 122, -1, 273, 122, -1, 911, -1, 912, 506, 911, -1, 912, 911, -1, 912, -1, -1, 36, 69, -1, 36, 269, 69, -1, -1, 99, 594, 454, 1169, 617, 566, 39, 996, 916, -1, 99, 293, 345, 594, 454, 1169, 617, 566, 39, 996, 916, -1, 99, 594, 335, 454, 1169, 502, 618, 503, 566, 39, 996, 916, -1, 99, 293, 345, 594, 335, 454, 1169, 502, 618, 503, 566, 39, 996, 916, -1, 461, 73, 291, -1, 461, 65, 73, 291, -1, 461, 239, 73, 291, -1, -1, 238, 1173, -1, 99, 114, 1171, 515, 919, -1, 920, -1, -1, 921, -1, 920, 921, -1, 922, 923, 658, -1, 922, 923, 540, -1, 922, 923, 120, -1, 3, -1, 91, 236, -1, 144, -1, 242, -1, 304, -1, 409, -1, 411, -1, 492, -1, -1, 32, 114, 1171, 461, 919, -1, 32, 114, 1171, 919, -1, 32, 114, 1171, 377, 409, 1171, -1, 32, 114, 1171, 339, 80, 453, -1, 32, 114, 1171, 547, -1, 140, 114, 1171, -1, 140, 114, 192, 155, 1171, -1, 140, 114, 1171, 515, 502, 927, 503, -1, 140, 114, 192, 155, 1171, 515, 502, 927, 503, -1, 928, -1, 927, 506, 928, -1, 170, -1, 32, 80, 774, 339, 453, -1, 32, 405, 377, 534, -1, 32, 405, 347, 546, -1, 99, 138, 774, 933, 1078, 605, -1, 32, 138, 774, 560, -1, 32, 138, 774, 140, 273, 278, -1, 32, 138, 774, 377, 273, 278, -1, 32, 138, 774, 26, 614, -1, 32, 138, 774, 140, 92, 1171, 561, -1, 32, 138, 774, 140, 92, 192, 155, 1171, 561, -1, 32, 138, 774, 445, 92, 1171, -1, 39, -1, -1, 32, 413, 367, 132, 774, 742, -1, 32, 413, 367, 89, 774, 26, 246, 169, 1170, 936, 773, -1, 32, 413, 367, 89, 774, 32, 246, 169, 1170, 936, 773, -1, 32, 413, 367, 89, 774, 32, 246, 345, 774, 936, 774, -1, 32, 413, 367, 89, 774, 32, 246, 169, 1170, 345, 774, 936, 774, -1, 32, 413, 367, 89, 774, 140, 246, 169, 1170, -1, 32, 413, 367, 89, 774, 140, 246, 192, 155, 169, 1170, -1, 461, -1, 484, -1, 99, 756, 96, 774, 169, 1177, 418, 1177, 174, 774, -1, 77, 948, 1169, 939, -1, 77, 502, 942, 503, 1169, 939, -1, 77, 948, -1, 77, 948, 1171, 288, 1169, -1, 442, 1171, -1, -1, 443, 949, 950, 948, 947, 954, -1, 443, 502, 942, 503, 954, -1, 943, 948, 954, -1, 943, 502, 942, 503, 954, -1, 944, -1, 942, 506, 944, -1, 35, -1, 34, -1, 945, 946, -1, 1188, -1, 943, -1, 540, -1, 658, -1, -1, 943, -1, -1, 452, -1, -1, 175, -1, -1, 173, -1, -1, 502, 1170, 503, -1, -1, 1169, 951, -1, 952, -1, 953, 506, 952, -1, 953, -1, -1, 156, 956, -1, 156, 943, 948, 956, -1, 156, 452, 956, -1, 156, 502, 942, 503, 956, -1, 996, -1, 963, -1, 979, -1, 972, -1, 984, -1, 992, -1, 644, -1, 647, -1, 650, -1, 960, -1, 319, 1171, 958, 39, 959, -1, 502, 1143, 503, -1, -1, 996, -1, 963, -1, 979, -1, 972, -1, 984, -1, 154, 1171, 961, -1, 99, 594, 406, 645, 39, 154, 1171, 961, 646, -1, 99, 594, 406, 192, 273, 155, 645, 39, 154, 1171, 961, 646, -1, 502, 1139, 503, -1, -1, 116, 1171, -1, 116, 319, 1171, -1, 116, 30, -1, 116, 319, 30, -1, 1007, 212, 218, 964, 965, 969, 971, -1, 1169, -1, 1169, 39, 1186, -1, 996, -1, 302, 966, 447, 996, -1, 502, 967, 503, 996, -1, 502, 967, 503, 302, 966, 447, 996, -1, 120, 448, -1, 441, -1, 405, -1, 968, -1, 967, 506, 968, -1, 1186, 1163, -1, 288, 90, 970, 136, 440, 377, 980, 1066, -1, 288, 90, 970, 136, 274, -1, -1, 502, 813, 503, 1066, -1, 288, 92, 1171, -1, -1, 351, 1166, -1, -1, 1007, 125, 174, 1058, 973, 1067, 971, -1, 442, 1045, -1, -1, 243, 1010, 1057, 975, 977, -1, 198, 976, 255, -1, -1, 24, 380, -1, 360, 380, -1, 360, 153, -1, 380, 440, 153, -1, 380, -1, 380, 360, 153, -1, 153, -1, 24, 153, -1, 277, -1, -1, 277, -1, 384, 244, -1, -1, 1007, 440, 1058, 377, 980, 1044, 1067, 971, -1, 981, -1, 980, 506, 981, -1, 982, 492, 1101, -1, 502, 983, 503, 492, 1101, -1, 1186, 1163, -1, 982, -1, 983, 506, 982, -1, 1007, 251, 218, 1058, 442, 1046, 288, 1101, 985, -1, 986, -1, 985, 986, -1, 457, 248, 987, 414, 988, -1, 457, 248, 987, 414, 989, -1, 457, 273, 248, 987, 414, 990, -1, 457, 248, 987, 414, 136, 274, -1, 457, 273, 248, 987, 414, 136, 274, -1, 36, 1101, -1, -1, 440, 377, 980, -1, 125, -1, 212, 991, -1, 212, 302, 966, 447, 991, -1, 212, 502, 967, 503, 991, -1, 212, 502, 967, 503, 302, 966, 447, 991, -1, 212, 120, 448, -1, 448, 502, 1139, 503, -1, 119, 993, 994, 111, 995, 169, 996, -1, 1171, -1, -1, 994, 269, 366, -1, 994, 366, -1, 994, 55, -1, 994, 41, -1, 994, 211, -1, -1, 461, 189, -1, 463, 189, -1, 998, -1, 997, -1, 502, 998, 503, -1, 502, 997, 503, -1, 1000, -1, 999, 1016, -1, 999, 1015, 1037, 1020, -1, 999, 1015, 1019, 1038, -1, 1001, 999, -1, 1001, 999, 1016, -1, 1001, 999, 1015, 1037, 1020, -1, 1001, 999, 1015, 1019, 1038, -1, 1000, -1, 997, -1, 370, 1013, 1165, 1008, 1044, 1066, 1029, 1036, 1119, -1, 370, 1012, 1166, 1008, 1044, 1066, 1029, 1036, 1119, -1, 1043, -1, 406, 1055, -1, 999, 434, 1011, 999, -1, 999, 216, 1011, 999, -1, 999, 150, 1011, 999, -1, 461, 1002, -1, 484, 1002, -1, 461, 335, 1002, -1, 1003, -1, 1002, 506, 1003, -1, 1171, 951, 39, 1004, 502, 959, 503, 1005, 1006, -1, 249, -1, 273, 249, -1, -1, 367, 129, 166, 60, 618, 377, 1186, -1, 367, 59, 166, 60, 618, 377, 1186, -1, -1, 112, 618, 377, 1186, 418, 1175, 120, 1175, 442, 1186, -1, 112, 618, 377, 1186, 442, 1186, -1, -1, 1001, -1, -1, 218, 1009, -1, -1, 412, 1010, 1169, -1, 410, 1010, 1169, -1, 239, 412, 1010, 1169, -1, 239, 410, 1010, 1169, -1, 179, 412, 1010, 1169, -1, 179, 410, 1010, 1169, -1, 438, 1010, 1169, -1, 406, 1169, -1, 1169, -1, 406, -1, -1, 30, -1, 135, -1, -1, 135, -1, 135, 288, 502, 1139, 503, -1, 30, -1, -1, 1012, -1, 1013, -1, 1016, -1, -1, 294, 60, 1017, -1, 1018, -1, 1017, 506, 1018, -1, 1101, 442, 1137, 821, -1, 1101, 820, 821, -1, 1021, 1022, -1, 1022, 1021, -1, 1021, -1, 1022, -1, 1019, -1, -1, 236, 1023, -1, 236, 1023, 506, 1024, -1, 163, 1028, 1025, 1027, 289, -1, 163, 1028, 1025, 1027, 461, 415, -1, 163, 1028, 1027, 289, -1, 163, 1028, 1027, 461, 415, -1, 285, 1024, -1, 285, 1025, 1027, -1, 1101, -1, 30, -1, 1101, -1, 1103, -1, 493, 1026, -1, 494, 1026, -1, 1176, -1, 5, -1, 360, -1, 361, -1, 166, -1, 264, -1, 183, 60, 1011, 1030, -1, -1, 1031, -1, 1030, 506, 1031, -1, 1101, -1, 1032, -1, 1034, -1, 1033, -1, 1035, -1, 502, 503, -1, 357, 502, 1139, 503, -1, 102, 502, 1139, 503, -1, 184, 378, 502, 1030, 503, -1, 187, 1101, -1, -1, 1039, -1, 169, 331, 289, -1, 1037, -1, -1, 1040, -1, 1039, 1040, -1, 1041, 1042, 978, -1, 169, 440, -1, 169, 269, 224, 440, -1, 169, 380, -1, 169, 224, 380, -1, 283, 1168, -1, -1, 448, 502, 1139, 503, -1, 1043, 506, 502, 1139, 503, -1, 174, 1045, -1, -1, 1046, -1, 1045, 506, 1046, -1, 1055, 1049, -1, 1055, 1049, 1059, -1, 1061, 1051, -1, 229, 1061, 1051, -1, 1071, 1049, -1, 229, 1071, 1049, -1, 997, 1049, -1, 229, 997, 1049, -1, 1047, -1, 502, 1047, 503, 1048, -1, 502, 1047, 503, -1, 1046, 100, 223, 1046, -1, 1046, 1052, 223, 1046, 1054, -1, 1046, 223, 1046, 1054, -1, 1046, 261, 1052, 223, 1046, -1, 1046, 261, 223, 1046, -1, 39, 1186, 502, 1170, 503, -1, 39, 1186, -1, 1186, 502, 1170, 503, -1, 1186, -1, 1048, -1, -1, 39, 1186, -1, -1, 1048, -1, 39, 502, 1069, 503, -1, 39, 1186, 502, 1069, 503, -1, 1186, 502, 1069, 503, -1, -1, 175, 1053, -1, 233, 1053, -1, 354, 1053, -1, 208, -1, 298, -1, -1, 442, 502, 1170, 503, 1050, -1, 288, 1101, -1, 1169, -1, 1056, -1, 1169, 495, -1, 289, 1169, -1, 289, 502, 1169, 503, -1, 1055, -1, 1057, 506, 1055, -1, 1055, -1, 1055, 1186, -1, 1055, 39, 1186, -1, 408, 1174, 502, 1139, 503, 1060, -1, 344, 502, 1101, 503, -1, -1, 1106, 1065, -1, 361, 174, 502, 1063, 503, 1065, -1, 1106, 1064, -1, 1062, -1, 1063, 506, 1062, -1, 39, 502, 1069, 503, -1, -1, 484, 295, -1, -1, 458, 1101, -1, -1, 458, 1101, -1, 458, 103, 283, 993, -1, -1, 1069, -1, -1, 1070, -1, 1069, 506, 1070, -1, 1186, 1078, 562, -1, 478, 502, 1103, 1115, 82, 1072, 503, -1, 478, 502, 473, 502, 1076, 503, 506, 1103, 1115, 82, 1072, 503, -1, 1073, -1, 1072, 506, 1073, -1, 1186, 1078, -1, 1186, 1078, 1074, -1, 1186, 169, 295, -1, 1075, -1, 1074, 1075, -1, 3, 1102, -1, 120, 1102, -1, 273, 278, -1, 278, -1, 1077, -1, 1076, 506, 1077, -1, 1102, 39, 1189, -1, 120, 1102, -1, 1080, 1079, -1, 379, 1080, 1079, -1, 1080, 38, 500, 1176, 501, -1, 379, 1080, 38, 500, 1176, 501, -1, 1080, 38, -1, 379, 1080, 38, -1, 1079, 500, 501, -1, 1079, 500, 1176, 501, -1, -1, 1082, -1, 1084, -1, 1086, -1, 1090, -1, 1096, -1, 1097, 1099, -1, 1097, 502, 1176, 503, -1, 1084, -1, 1087, -1, 1091, -1, 1096, -1, 1187, 1083, -1, 1187, 775, 1083, -1, 502, 1139, 503, -1, -1, 214, -1, 215, -1, 385, -1, 54, -1, 332, -1, 167, 1085, -1, 139, 317, -1, 118, 1083, -1, 117, 1083, -1, 281, 1083, -1, 57, -1, 502, 1176, 503, -1, -1, 1088, -1, 1089, -1, 1088, -1, 1089, -1, 56, 1095, 502, 1139, 503, -1, 56, 1095, -1, 1092, -1, 1093, -1, 1092, -1, 1093, -1, 1094, 502, 1176, 503, -1, 1094, -1, 71, 1095, -1, 70, 1095, -1, 449, -1, 260, 71, 1095, -1, 260, 70, 1095, -1, 262, 1095, -1, 451, -1, -1, 417, 502, 1176, 503, 1098, -1, 417, 1098, -1, 416, 502, 1176, 503, 1098, -1, 416, 1098, -1, 217, -1, 484, 416, 481, -1, 463, 416, 481, -1, -1, 479, -1, 256, -1, 115, -1, 190, -1, 253, -1, 1100, -1, 479, 418, 256, -1, 115, 418, 190, -1, 115, 418, 253, -1, 115, 418, 1100, -1, 190, 418, 253, -1, 190, 418, 1100, -1, 253, 418, 1100, -1, -1, 368, -1, 368, 502, 1176, 503, -1, 1103, -1, 1101, 13, 1078, -1, 1101, 79, 774, -1, 1101, 46, 416, 481, 1101, -1, 493, 1101, -1, 494, 1101, -1, 1101, 493, 1101, -1, 1101, 494, 1101, -1, 1101, 495, 1101, -1, 1101, 496, 1101, -1, 1101, 497, 1101, -1, 1101, 498, 1101, -1, 1101, 490, 1101, -1, 1101, 491, 1101, -1, 1101, 492, 1101, -1, 1101, 17, 1101, -1, 1101, 18, 1101, -1, 1101, 19, 1101, -1, 1101, 1136, 1101, -1, 1136, 1101, -1, 1101, 36, 1101, -1, 1101, 293, 1101, -1, 273, 1101, -1, 482, 1101, -1, 1101, 235, 1101, -1, 1101, 235, 1101, 148, 1101, -1, 1101, 482, 235, 1101, -1, 1101, 482, 235, 1101, 148, 1101, -1, 1101, 193, 1101, -1, 1101, 193, 1101, 148, 1101, -1, 1101, 482, 193, 1101, -1, 1101, 482, 193, 1101, 148, 1101, -1, 1101, 382, 418, 1101, -1, 1101, 382, 418, 1101, 148, 1101, -1, 1101, 482, 382, 418, 1101, -1, 1101, 482, 382, 418, 1101, 148, 1101, -1, 1101, 220, 278, -1, 1101, 221, -1, 1101, 220, 273, 278, -1, 1101, 276, -1, 1130, 300, 1130, -1, 1101, 220, 425, -1, 1101, 220, 273, 425, -1, 1101, 220, 161, -1, 1101, 220, 273, 161, -1, 1101, 220, 436, -1, 1101, 220, 273, 436, -1, 1101, 220, 135, 174, 1101, -1, 1101, 220, 273, 135, 174, 1101, -1, 1101, 53, 1164, 1102, 36, 1101, -1, 1101, 482, 53, 1164, 1102, 36, 1101, -1, 1101, 53, 403, 1102, 36, 1101, -1, 1101, 482, 53, 403, 1102, 36, 1101, -1, 1101, 198, 1153, -1, 1101, 482, 198, 1153, -1, 1101, 1138, 1133, 997, -1, 1101, 1138, 1133, 502, 1101, 503, -1, 435, 608, 997, -1, 1101, 220, 137, -1, 1101, 220, 273, 137, -1, 1101, 220, 272, -1, 1101, 220, 1148, 272, -1, 1101, 220, 273, 272, -1, 1101, 220, 273, 1148, 272, -1, 120, -1, 1103, -1, 1102, 13, 1078, -1, 493, 1102, -1, 494, 1102, -1, 1102, 493, 1102, -1, 1102, 494, 1102, -1, 1102, 495, 1102, -1, 1102, 496, 1102, -1, 1102, 497, 1102, -1, 1102, 498, 1102, -1, 1102, 490, 1102, -1, 1102, 491, 1102, -1, 1102, 492, 1102, -1, 1102, 17, 1102, -1, 1102, 18, 1102, -1, 1102, 19, 1102, -1, 1102, 1136, 1102, -1, 1136, 1102, -1, 1102, 220, 135, 174, 1102, -1, 1102, 220, 273, 135, 174, 1102, -1, 1102, 220, 137, -1, 1102, 220, 273, 137, -1, 1159, -1, 1175, -1, 12, 1163, -1, 502, 1101, 503, 1163, -1, 1154, -1, 1105, -1, 997, -1, 997, 1162, -1, 155, 997, -1, 38, 997, -1, 38, 1144, -1, 1131, -1, 1132, -1, 184, 502, 1139, 503, -1, 1174, 502, 503, -1, 1174, 502, 1140, 1015, 503, -1, 1174, 502, 450, 1141, 1015, 503, -1, 1174, 502, 1140, 506, 450, 1141, 1015, 503, -1, 1174, 502, 30, 1140, 1015, 503, -1, 1174, 502, 135, 1140, 1015, 503, -1, 1174, 502, 495, 503, -1, 1104, 1117, 1118, 1122, -1, 1107, -1, 1104, -1, 1107, -1, 80, 169, 502, 1101, 503, -1, 105, -1, 108, -1, 108, 502, 1176, 503, -1, 109, -1, 109, 502, 1176, 503, -1, 240, -1, 240, 502, 1176, 503, -1, 241, -1, 241, 502, 1176, 503, -1, 106, -1, 110, -1, 376, -1, 441, -1, 104, -1, 107, -1, 67, 502, 1101, 39, 1078, 503, -1, 160, 502, 1146, 503, -1, 271, 502, 1101, 503, -1, 271, 502, 1101, 506, 1148, 503, -1, 301, 502, 1149, 503, -1, 301, 502, 1142, 503, -1, 315, 502, 1150, 503, -1, 401, 502, 1151, 503, -1, 401, 502, 1142, 503, -1, 422, 502, 1101, 39, 1078, 503, -1, 424, 502, 58, 1152, 503, -1, 424, 502, 230, 1152, 503, -1, 424, 502, 419, 1152, 503, -1, 424, 502, 1152, 503, -1, 279, 502, 1101, 506, 1101, 503, -1, 78, 502, 1139, 503, -1, 182, 502, 1139, 503, -1, 232, 502, 1139, 503, -1, 469, 502, 1139, 503, -1, 470, 502, 258, 1189, 503, -1, 470, 502, 258, 1189, 506, 1110, 503, -1, 470, 502, 258, 1189, 506, 1139, 503, -1, 470, 502, 258, 1189, 506, 1110, 506, 1139, 503, -1, 471, 502, 1103, 1115, 503, -1, 472, 502, 1111, 503, -1, 474, 502, 1113, 1101, 1114, 503, -1, 475, 502, 258, 1189, 503, -1, 475, 502, 258, 1189, 506, 1101, 503, -1, 476, 502, 1101, 506, 1108, 1109, 503, -1, 477, 502, 1113, 1101, 39, 1080, 503, -1, 453, 1101, -1, 453, 269, 447, -1, 506, 390, 480, -1, 506, 390, 269, -1, 506, 390, 269, 447, -1, -1, 468, 502, 1111, 503, -1, 1112, -1, 1111, 506, 1112, -1, 1101, 39, 1189, -1, 1101, -1, 137, -1, 94, -1, 318, 459, -1, 399, 459, -1, -1, 310, 1103, -1, 310, 1103, 1116, -1, 310, 1116, 1103, -1, 310, 1116, 1103, 1116, -1, 60, 336, -1, 60, 447, -1, 462, 183, 502, 1016, 503, -1, -1, 164, 502, 458, 1101, 503, -1, -1, 460, 1120, -1, -1, 1121, -1, 1120, 506, 1121, -1, 1186, 39, 1123, -1, 299, 1123, -1, 299, 1186, -1, -1, 502, 1124, 1125, 1015, 1126, 503, -1, 1186, -1, -1, 309, 60, 1139, -1, -1, 330, 1127, 1129, -1, 361, 1127, 1129, -1, 185, 1127, 1129, -1, -1, 1128, -1, 53, 1128, 36, 1128, -1, 431, 316, -1, 431, 168, -1, 103, 360, -1, 1101, 316, -1, 1101, 168, -1, 151, 103, 360, -1, 151, 183, -1, 151, 415, -1, 151, 269, 296, -1, -1, 360, 502, 1139, 503, -1, 360, 502, 503, -1, 502, 1139, 506, 1101, 503, -1, 360, 502, 1139, 503, -1, 360, 502, 503, -1, 502, 1139, 506, 1101, 503, -1, 37, -1, 387, -1, 30, -1, 10, -1, 1135, -1, 493, -1, 494, -1, 495, -1, 496, -1, 497, -1, 498, -1, 490, -1, 491, -1, 492, -1, 17, -1, 18, -1, 19, -1, 10, -1, 290, 502, 861, 503, -1, 1134, -1, 290, 502, 861, 503, -1, 1134, -1, 290, 502, 861, 503, -1, 235, -1, 482, 235, -1, 193, -1, 482, 193, -1, 1101, -1, 1139, 506, 1101, -1, 1141, -1, 1140, 506, 1141, -1, 1101, -1, 832, 15, 1101, -1, 832, 16, 1101, -1, 1140, -1, -1, 1078, -1, 1143, 506, 1078, -1, 500, 1139, 501, -1, 500, 1145, 501, -1, 500, 501, -1, 1144, -1, 1145, 506, 1144, -1, 1147, 174, 1101, -1, 12, 174, 1101, -1, 3, -1, 479, -1, 256, -1, 115, -1, 190, -1, 253, -1, 368, -1, 1177, -1, 265, -1, 266, -1, 267, -1, 268, -1, 1101, 312, 1101, 174, 1101, 169, 1101, -1, 1101, 312, 1101, 174, 1101, -1, 1102, 198, 1102, -1, 1101, 174, 1101, 169, 1101, -1, 1101, 169, 1101, 174, 1101, -1, 1101, 174, 1101, -1, 1101, 169, 1101, -1, 1101, 382, 1101, 148, 1101, -1, 1101, 174, 1139, -1, 174, 1139, -1, 1139, -1, 997, -1, 502, 1139, 503, -1, 66, 1158, 1155, 1157, 146, -1, 1156, -1, 1155, 1156, -1, 457, 1101, 414, 1101, -1, 142, 1101, -1, -1, 1101, -1, -1, 1186, -1, 1186, 1162, -1, 504, 1172, -1, 504, 495, -1, 500, 1101, 501, -1, 500, 1161, 507, 1161, 501, -1, 1101, -1, -1, 1160, -1, 1162, 1160, -1, -1, 1163, 1160, -1, 44, -1, -1, 1166, -1, -1, 1167, -1, 1166, 506, 1167, -1, 1101, 39, 1189, -1, 1101, 1190, -1, 1101, -1, 495, -1, 1169, -1, 1168, 506, 1169, -1, 1186, -1, 1186, 1162, -1, 1171, -1, 1170, 506, 1171, -1, 1186, -1, 1189, -1, 1177, -1, 1187, -1, 1186, 1162, -1, 1176, -1, 5, -1, 1177, -1, 8, -1, 9, -1, 1174, 1177, -1, 1174, 502, 1140, 1015, 503, 1177, -1, 1174, 12, -1, 1174, 502, 1140, 1015, 503, 12, -1, 1081, 1177, -1, 1097, 1177, 1099, -1, 1097, 502, 1176, 503, 1177, -1, 1081, 12, -1, 1097, 12, 1099, -1, 1097, 502, 1176, 503, 12, -1, 425, -1, 161, -1, 278, -1, 11, -1, 6, -1, 1176, -1, 493, 1176, -1, 494, 1176, -1, 1180, -1, 1188, -1, 106, -1, 110, -1, 376, -1, 1180, -1, 1181, 506, 1180, -1, 1014, 1165, 1044, 1066, 1029, 1036, 1119, 1015, 1020, 1038, -1, 1184, 1163, 1185, 1182, -1, 1186, -1, 12, -1, 15, -1, 492, -1, 3, -1, 1191, -1, 1192, -1, 3, -1, 1191, -1, 1193, -1, 3, -1, 1191, -1, 1192, -1, 1193, -1, 3, -1, 1191, -1, 1192, -1, 1193, -1, 1194, -1, 3, -1, 1195, -1, 22, -1, 23, -1, 24, -1, 25, -1, 26, -1, 27, -1, 28, -1, 29, -1, 31, -1, 32, -1, 33, -1, 41, -1, 42, -1, 43, -1, 46, -1, 45, -1, 47, -1, 48, -1, 50, -1, 51, -1, 52, -1, 59, -1, 60, -1, 61, -1, 62, -1, 63, -1, 64, -1, 65, -1, 68, -1, 69, -1, 72, -1, 74, -1, 75, -1, 76, -1, 77, -1, 82, -1, 83, -1, 84, -1, 85, -1, 86, -1, 87, -1, 89, -1, 90, -1, 91, -1, 93, -1, 94, -1, 95, -1, 96, -1, 97, -1, 98, -1, 101, -1, 102, -1, 103, -1, 111, -1, 112, -1, 113, -1, 114, -1, 115, -1, 116, -1, 119, -1, 121, -1, 123, -1, 124, -1, 125, -1, 126, -1, 127, -1, 128, -1, 129, -1, 131, -1, 132, -1, 133, -1, 134, -1, 137, -1, 138, -1, 139, -1, 140, -1, 141, -1, 143, -1, 144, -1, 145, -1, 147, -1, 148, -1, 149, -1, 151, -1, 152, -1, 153, -1, 154, -1, 156, -1, 157, -1, 158, -1, 159, -1, 162, -1, 164, -1, 165, -1, 166, -1, 168, -1, 170, -1, 172, -1, 176, -1, 177, -1, 178, -1, 179, -1, 181, -1, 185, -1, 186, -1, 188, -1, 189, -1, 190, -1, 191, -1, 192, -1, 194, -1, 195, -1, 196, -1, 197, -1, 199, -1, 200, -1, 201, -1, 202, -1, 203, -1, 204, -1, 205, -1, 207, -1, 210, -1, 211, -1, 212, -1, 213, -1, 219, -1, 222, -1, 224, -1, 225, -1, 226, -1, 227, -1, 228, -1, 231, -1, 234, -1, 237, -1, 238, -1, 239, -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, 255, -1, 256, -1, 257, -1, 258, -1, 259, -1, 263, -1, 264, -1, 265, -1, 266, -1, 267, -1, 268, -1, 269, -1, 272, -1, 274, -1, 275, -1, 277, -1, 280, -1, 282, -1, 283, -1, 284, -1, 286, -1, 287, -1, 290, -1, 291, -1, 292, -1, 295, -1, 296, -1, 299, -1, 302, -1, 303, -1, 304, -1, 305, -1, 306, -1, 307, -1, 308, -1, 309, -1, 310, -1, 311, -1, 313, -1, 314, -1, 316, -1, 319, -1, 320, -1, 318, -1, 322, -1, 323, -1, 324, -1, 325, -1, 326, -1, 327, -1, 328, -1, 329, -1, 330, -1, 331, -1, 333, -1, 334, -1, 335, -1, 336, -1, 338, -1, 339, -1, 340, -1, 341, -1, 342, -1, 343, -1, 344, -1, 345, -1, 346, -1, 347, -1, 348, -1, 349, -1, 350, -1, 352, -1, 353, -1, 355, -1, 356, -1, 357, -1, 358, -1, 359, -1, 361, -1, 362, -1, 363, -1, 364, -1, 365, -1, 366, -1, 367, -1, 368, -1, 369, -1, 371, -1, 372, -1, 373, -1, 374, -1, 375, -1, 377, -1, 378, -1, 380, -1, 381, -1, 383, -1, 384, -1, 386, -1, 388, -1, 389, -1, 390, -1, 391, -1, 392, -1, 393, -1, 394, -1, 395, -1, 396, -1, 397, -1, 398, -1, 399, -1, 400, -1, 402, -1, 404, -1, 405, -1, 407, -1, 409, -1, 410, -1, 411, -1, 412, -1, 413, -1, 415, -1, 420, -1, 421, -1, 423, -1, 426, -1, 427, -1, 428, -1, 429, -1, 430, -1, 431, -1, 432, -1, 433, -1, 436, -1, 437, -1, 438, -1, 439, -1, 440, -1, 443, -1, 444, -1, 445, -1, 446, -1, 447, -1, 451, -1, 453, -1, 454, -1, 455, -1, 456, -1, 459, -1, 462, -1, 463, -1, 464, -1, 465, -1, 466, -1, 467, -1, 479, -1, 480, -1, 481, -1, 53, -1, 54, -1, 56, -1, 57, -1, 70, -1, 71, -1, 78, -1, 117, -1, 118, -1, 155, -1, 160, -1, 167, -1, 182, -1, 184, -1, 209, -1, 214, -1, 215, -1, 217, -1, 232, -1, 260, -1, 262, -1, 270, -1, 271, -1, 279, -1, 281, -1, 297, -1, 301, -1, 315, -1, 317, -1, 332, -1, 360, -1, 379, -1, 385, -1, 401, -1, 416, -1, 417, -1, 422, -1, 424, -1, 448, -1, 449, -1, 468, -1, 469, -1, 470, -1, 471, -1, 472, -1, 473, -1, 474, -1, 475, -1, 476, -1, 477, -1, 478, -1, 49, -1, 55, -1, 80, -1, 88, -1, 100, -1, 107, -1, 173, -1, 175, -1, 193, -1, 208, -1, 220, -1, 221, -1, 223, -1, 233, -1, 235, -1, 261, -1, 276, -1, 298, -1, 300, -1, 354, -1, 382, -1, 408, -1, 452, -1, 30, -1, 34, -1, 35, -1, 36, -1, 37, -1, 38, -1, 39, -1, 40, -1, 44, -1, 58, -1, 66, -1, 67, -1, 73, -1, 79, -1, 81, -1, 92, -1, 99, -1, 104, -1, 105, -1, 106, -1, 108, -1, 109, -1, 110, -1, 120, -1, 122, -1, 130, -1, 135, -1, 136, -1, 142, -1, 146, -1, 150, -1, 161, -1, 163, -1, 169, -1, 171, -1, 174, -1, 180, -1, 183, -1, 187, -1, 198, -1, 206, -1, 216, -1, 218, -1, 229, -1, 230, -1, 236, -1, 240, -1, 241, -1, 273, -1, 278, -1, 285, -1, 288, -1, 289, -1, 293, -1, 294, -1, 312, -1, 321, -1, 337, -1, 351, -1, 370, -1, 376, -1, 387, -1, 403, -1, 406, -1, 414, -1, 418, -1, 419, -1, 425, -1, 434, -1, 435, -1, 441, -1, 442, -1, 450, -1, 457, -1, 458, -1, 460, -1, 461, -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, 40, -1, 41, -1, 42, -1, 43, -1, 44, -1, 46, -1, 45, -1, 47, -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, 72, -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, 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, 116, -1, 117, -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, 151, -1, 152, -1, 153, -1, 154, -1, 155, -1, 156, -1, 157, -1, 158, -1, 159, -1, 160, -1, 161, -1, 162, -1, 165, -1, 166, -1, 167, -1, 168, -1, 170, -1, 171, -1, 172, -1, 173, -1, 175, -1, 176, -1, 177, -1, 178, -1, 179, -1, 181, -1, 182, -1, 184, -1, 185, -1, 186, -1, 188, -1, 189, -1, 191, -1, 192, -1, 193, -1, 194, -1, 195, -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, 217, -1, 219, -1, 220, -1, 222, -1, 223, -1, 224, -1, 225, -1, 226, -1, 227, -1, 228, -1, 229, -1, 230, -1, 231, -1, 232, -1, 233, -1, 234, -1, 235, -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, 254, -1, 255, -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, 273, -1, 274, -1, 275, -1, 277, -1, 278, -1, 279, -1, 280, -1, 281, -1, 282, -1, 283, -1, 284, -1, 286, -1, 287, -1, 289, -1, 290, -1, 291, -1, 292, -1, 293, -1, 295, -1, 296, -1, 297, -1, 298, -1, 301, -1, 302, -1, 303, -1, 304, -1, 305, -1, 306, -1, 307, -1, 308, -1, 309, -1, 310, -1, 311, -1, 312, -1, 313, -1, 314, -1, 315, -1, 316, -1, 319, -1, 320, -1, 318, -1, 321, -1, 322, -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, 341, -1, 342, -1, 343, -1, 344, -1, 345, -1, 346, -1, 347, -1, 348, -1, 349, -1, 350, -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, 369, -1, 370, -1, 371, -1, 372, -1, 373, -1, 374, -1, 375, -1, 376, -1, 377, -1, 379, -1, 378, -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, 394, -1, 395, -1, 396, -1, 397, -1, 398, -1, 399, -1, 400, -1, 401, -1, 402, -1, 403, -1, 404, -1, 405, -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, 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, 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, 448, -1, 449, -1, 450, -1, 452, -1, 453, -1, 454, -1, 455, -1, 456, -1, 457, -1, 459, -1, 464, -1, 465, -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, 480, -1, 481, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 862, 862, 867, 871, 876, 884, 892, 912, 924, 938, 939, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 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, 1068, 1077, 1093, 1105, 1106, 1107, 1116, 1117, 1121, 1122, 1126, 1131, 1136, 1140, 1150, 1160, 1168, 1172, 1176, 1181, 1185, 1233, 1235, 1239, 1243, 1247, 1251, 1265, 1284, 1293, 1305, 1306, 1310, 1319, 1328, 1337, 1359, 1367, 1375, 1383, 1391, 1399, 1417, 1436, 1448, 1449, 1460, 1471, 1482, 1498, 1517, 1518, 1522, 1529, 1537, 1538, 1539, 1540, 1541, 1542, 1556, 1563, 1570, 1580, 1589, 1598, 1602, 1611, 1620, 1628, 1639, 1640, 1649, 1661, 1669, 1678, 1686, 1698, 1707, 1715, 1724, 1732, 1740, 1750, 1761, 1762, 1766, 1767, 1770, 1772, 1774, 1778, 1779, 1780, 1781, 1785, 1786, 1787, 1793, 1805, 1809, 1813, 1817, 1834, 1842, 1843, 1844, 1848, 1849, 1850, 1854, 1855, 1859, 1863, 1864, 1872, 1880, 1891, 1899, 1910, 1911, 1916, 1917, 1922, 1929, 1936, 1943, 1950, 1961, 1972, 1973, 1977, 1978, 1986, 2002, 2009, 2016, 2023, 2030, 2050, 2060, 2070, 2080, 2090, 2102, 2114, 2124, 2134, 2144, 2156, 2168, 2178, 2188, 2198, 2208, 2218, 2228, 2240, 2252, 2262, 2275, 2276, 2281, 2295, 2308, 2324, 2341, 2351, 2361, 2371, 2381, 2391, 2400, 2409, 2418, 2428, 2438, 2454, 2464, 2474, 2484, 2494, 2511, 2521, 2531, 2541, 2552, 2566, 2582, 2592, 2601, 2617, 2626, 2637, 2648, 2656, 2665, 2674, 2682, 2690, 2699, 2708, 2717, 2725, 2733, 2742, 2750, 2758, 2767, 2776, 2785, 2794, 2803, 2812, 2823, 2831, 2840, 2849, 2858, 2867, 2876, 2885, 2893, 2901, 2909, 2916, 2927, 2928, 2932, 2933, 2934, 2938, 2947, 2951, 2952, 2956, 2964, 2972, 2980, 2991, 2994, 2995, 2999, 3000, 3005, 3009, 3013, 3018, 3025, 3027, 3032, 3036, 3040, 3051, 3059, 3112, 3125, 3139, 3151, 3158, 3162, 3176, 3189, 3190, 3195, 3205, 3216, 3227, 3254, 3261, 3295, 3331, 3354, 3355, 3359, 3360, 3369, 3370, 3371, 3374, 3375, 3380, 3381, 3385, 3389, 3393, 3397, 3401, 3405, 3409, 3413, 3417, 3421, 3425, 3429, 3433, 3442, 3446, 3450, 3454, 3458, 3459, 3464, 3468, 3475, 3482, 3483, 3484, 3485, 3486, 3490, 3494, 3502, 3513, 3533, 3553, 3574, 3595, 3616, 3650, 3651, 3652, 3653, 3654, 3661, 3668, 3669, 3673, 3674, 3678, 3679, 3683, 3687, 3694, 3698, 3705, 3706, 3707, 3711, 3712, 3715, 3738, 3757, 3779, 3780, 3784, 3785, 3789, 3790, 3794, 3802, 3803, 3804, 3836, 3844, 3852, 3865, 3877, 3890, 3900, 3910, 3934, 3954, 3955, 3956, 3960, 3961, 3980, 3988, 3996, 4004, 4016, 4028, 4029, 4030, 4034, 4035, 4036, 4037, 4038, 4039, 4040, 4041, 4042, 4043, 4052, 4060, 4064, 4078, 4096, 4112, 4129, 4145, 4165, 4188, 4189, 4193, 4194, 4198, 4199, 4202, 4208, 4209, 4212, 4216, 4224, 4229, 4235, 4236, 4240, 4245, 4252, 4253, 4257, 4267, 4277, 4285, 4294, 4307, 4319, 4326, 4334, 4342, 4350, 4358, 4368, 4369, 4373, 4374, 4377, 4389, 4390, 4393, 4404, 4415, 4429, 4430, 4435, 4436, 4437, 4440, 4441, 4442, 4443, 4446, 4447, 4450, 4451, 4454, 4472, 4485, 4507, 4508, 4511, 4517, 4523, 4540, 4549, 4571, 4585, 4602, 4618, 4619, 4620, 4632, 4646, 4663, 4677, 4678, 4690, 4711, 4722, 4736, 4745, 4757, 4758, 4761, 4762, 4765, 4766, 4769, 4773, 4777, 4781, 4785, 4789, 4793, 4797, 4801, 4805, 4809, 4814, 4818, 4822, 4828, 4829, 4833, 4834, 4835, 4842, 4845, 4846, 4858, 4874, 4890, 4891, 4899, 4900, 4904, 4905, 4909, 4910, 4914, 4915, 4919, 4920, 4930, 4942, 4943, 4956, 4964, 4982, 4991, 5003, 5006, 5010, 5014, 5018, 5025, 5037, 5048, 5051, 5055, 5068, 5078, 5088, 5098, 5108, 5118, 5128, 5138, 5148, 5158, 5168, 5178, 5188, 5207, 5219, 5220, 5221, 5222, 5226, 5227, 5231, 5232, 5242, 5251, 5264, 5265, 5269, 5273, 5281, 5285, 5289, 5296, 5300, 5305, 5310, 5317, 5324, 5329, 5339, 5352, 5368, 5369, 5374, 5375, 5379, 5380, 5390, 5400, 5409, 5427, 5448, 5469, 5491, 5525, 5541, 5542, 5546, 5555, 5570, 5580, 5593, 5594, 5606, 5615, 5633, 5658, 5676, 5691, 5692, 5696, 5697, 5701, 5702, 5706, 5707, 5711, 5725, 5729, 5730, 5734, 5735, 5736, 5737, 5738, 5748, 5760, 5761, 5772, 5795, 5827, 5828, 5829, 5833, 5835, 5857, 5859, 5861, 5863, 5865, 5870, 5871, 5875, 5876, 5880, 5892, 5893, 5897, 5906, 5910, 5914, 5919, 5929, 5930, 5934, 5935, 5939, 5940, 5944, 5945, 5949, 5950, 5951, 5955, 5959, 5960, 5961, 5965, 5966, 5971, 5972, 5999, 6000, 6001, 6002, 6003, 6004, 6017, 6028, 6043, 6045, 6050, 6055, 6057, 6062, 6073, 6074, 6075, 6076, 6087, 6106, 6118, 6131, 6142, 6153, 6165, 6174, 6182, 6190, 6200, 6210, 6220, 6230, 6240, 6251, 6261, 6274, 6277, 6278, 6281, 6285, 6292, 6293, 6294, 6295, 6296, 6297, 6300, 6303, 6304, 6312, 6319, 6320, 6323, 6325, 6336, 6348, 6360, 6372, 6386, 6387, 6403, 6419, 6420, 6424, 6437, 6448, 6457, 6467, 6477, 6478, 6481, 6482, 6485, 6486, 6487, 6490, 6504, 6509, 6520, 6530, 6543, 6544, 6548, 6557, 6570, 6581, 6595, 6606, 6629, 6640, 6659, 6670, 6681, 6692, 6703, 6714, 6725, 6736, 6747, 6758, 6769, 6780, 6795, 6796, 6797, 6798, 6799, 6800, 6801, 6802, 6803, 6804, 6805, 6806, 6807, 6817, 6818, 6819, 6820, 6821, 6825, 6826, 6827, 6828, 6829, 6830, 6831, 6832, 6837, 6838, 6839, 6843, 6844, 6847, 6848, 6851, 6853, 6858, 6859, 6870, 6882, 6883, 6884, 6894, 6903, 6912, 6921, 6930, 6939, 6948, 6957, 6966, 6975, 6989, 6998, 7007, 7016, 7025, 7034, 7043, 7052, 7064, 7065, 7079, 7090, 7101, 7112, 7123, 7134, 7145, 7156, 7167, 7178, 7191, 7192, 7195, 7196, 7206, 7213, 7222, 7231, 7240, 7249, 7258, 7267, 7276, 7285, 7294, 7303, 7312, 7321, 7330, 7339, 7348, 7357, 7368, 7369, 7372, 7373, 7383, 7401, 7417, 7445, 7447, 7449, 7451, 7459, 7469, 7470, 7473, 7481, 7489, 7497, 7504, 7515, 7519, 7526, 7530, 7541, 7550, 7559, 7568, 7577, 7586, 7595, 7604, 7613, 7622, 7631, 7640, 7649, 7657, 7666, 7675, 7684, 7693, 7702, 7711, 7720, 7733, 7734, 7738, 7739, 7744, 7745, 7755, 7769, 7780, 7793, 7794, 7797, 7798, 7808, 7819, 7820, 7824, 7828, 7832, 7843, 7857, 7872, 7890, 7891, 7892, 7893, 7894, 7895, 7907, 7939, 7974, 7975, 7979, 7980, 7984, 7985, 7989, 7990, 7993, 7994, 7999, 8011, 8030, 8035, 8040, 8047, 8048, 8051, 8052, 8055, 8056, 8059, 8060, 8063, 8064, 8065, 8068, 8069, 8070, 8086, 8100, 8115, 8129, 8146, 8147, 8150, 8151, 8155, 8156, 8160, 8161, 8166, 8180, 8188, 8196, 8212, 8213, 8217, 8218, 8233, 8243, 8253, 8263, 8273, 8286, 8287, 8288, 8289, 8290, 8296, 8300, 8315, 8316, 8322, 8332, 8336, 8341, 8349, 8391, 8395, 8399, 8403, 8411, 8412, 8416, 8428, 8429, 8434, 8435, 8440, 8441, 8448, 8452, 8456, 8460, 8464, 8468, 8472, 8476, 8480, 8484, 8488, 8492, 8496, 8500, 8504, 8508, 8513, 8520, 8524, 8528, 8532, 8536, 8542, 8543, 8549, 8559, 8563, 8574, 8580, 8589, 8595, 8596, 8600, 8601, 8605, 8606, 8609, 8622, 8626, 8641, 8650, 8659, 8672, 8673, 8678, 8679, 8696, 8707, 8718, 8729, 8740, 8751, 8765, 8776, 8790, 8801, 8815, 8823, 8825, 8827, 8832, 8834, 8839, 8840, 8845, 8864, 8874, 8875, 8879, 8883, 8895, 8907, 8919, 8933, 8934, 8935, 8939, 8952, 8953, 8963, 8976, 8980, 8984, 8988, 8995, 9016, 9029, 9042, 9055, 9070, 9071, 9074, 9075, 9076, 9086, 9096, 9114, 9124, 9134, 9144, 9154, 9164, 9174, 9184, 9194, 9204, 9214, 9224, 9234, 9245, 9256, 9266, 9276, 9286, 9296, 9306, 9316, 9327, 9338, 9349, 9360, 9371, 9382, 9393, 9404, 9415, 9426, 9437, 9448, 9460, 9472, 9484, 9496, 9508, 9520, 9531, 9542, 9554, 9566, 9577, 9588, 9597, 9607, 9617, 9627, 9637, 9647, 9657, 9667, 9677, 9687, 9702, 9703, 9706, 9707, 9717, 9727, 9737, 9747, 9758, 9768, 9780, 9781, 9791, 9801, 9811, 9821, 9831, 9841, 9851, 9861, 9871, 9881, 9891, 9901, 9911, 9921, 9931, 9941, 9951, 9961, 9971, 9981, 9991, 10001, 10011, 10021, 10031, 10041, 10051, 10070, 10080, 10081, 10084, 10086, 10092, 10093, 10094, 10095, 10096, 10108, 10124, 10133, 10142, 10151, 10160, 10169, 10178, 10187, 10196, 10205, 10214, 10223, 10232, 10241, 10250, 10259, 10268, 10277, 10286, 10295, 10304, 10313, 10322, 10331, 10359, 10367, 10376, 10402, 10411, 10418, 10424, 10451, 10462, 10471, 10479, 10481, 10503, 10511, 10521, 10531, 10550, 10569, 10579, 10589, 10599, 10610, 10621, 10632, 10643, 10654, 10672, 10681, 10698, 10716, 10717, 10718, 10723, 10729, 10738, 10739, 10740, 10741, 10742, 10746, 10747, 10750, 10751, 10752, 10753, 10757, 10758, 10759, 10771, 10782, 10783, 10786, 10796, 10803, 10823, 10832, 10840, 10849, 10858, 10866, 10874, 10882, 10890, 10898, 10906, 10914, 10925, 10933, 10944, 10945, 10946, 10950, 10953, 10956, 10959, 10962, 10969, 10971, 10973, 10978, 10980, 10984, 10985, 10986, 10998, 11012, 11026, 11045, 11067, 11068, 11069, 11070, 11080, 11097, 11108, 11109, 11113, 11114, 11118, 11122, 11126, 11144, 11145, 11146, 11147, 11148, 11149, 11150, 11157, 11158, 11169, 11177, 11185, 11194, 11204, 11222, 11231, 11240, 11249, 11261, 11265, 11276, 11288, 11306, 11313, 11330, 11344, 11354, 11363, 11372, 11382, 11394, 11406, 11417, 11418, 11429, 11440, 11452, 11464, 11476, 11488, 11498, 11511, 11512, 11526, 11551, 11563, 11572, 11584, 11598, 11599, 11611, 11632, 11643, 11655, 11667, 11671, 11678, 11679, 11683, 11690, 11691, 11695, 11696, 11697, 11701, 11702, 11706, 11707, 11710, 11711, 11714, 11715, 11719, 11720, 11724, 11731, 11733, 11738, 11739, 11752, 11760, 11771, 11779, 11790, 11791, 11792, 11793, 11794, 11795, 11796, 11797, 11798, 11799, 11809, 11820, 11821, 11825, 11826, 11827, 11828, 11829, 11839, 11847, 11865, 11885, 11886, 11896, 11903, 11910, 11917, 11934, 11952, 11956, 11964, 11970, 11977, 11983, 11990, 11999, 12000, 12004, 12006, 12011, 12022, 12032, 12042, 12048, 12057, 12066, 12072, 12073, 12084, 12099, 12100, 12111, 12122, 12123, 12126, 12127, 12128, 12129, 12130, 12131, 12132, 12133, 12136, 12137, 12141, 12142, 12143, 12154, 12173, 12174, 12178, 12183, 12207, 12218, 12219, 12231, 12249, 12250, 12254, 12261, 12268, 12275, 12285, 12298, 12299, 12303, 12316, 12329, 12338, 12347, 12356, 12365, 12377, 12389, 12401, 12404, 12405, 12406, 12407, 12408, 12409, 12412, 12413, 12414, 12462, 12463, 12467, 12468, 12483, 12484, 12491, 12499, 12507, 12515, 12523, 12531, 12542, 12543, 12575, 12591, 12608, 12609, 12628, 12632, 12636, 12651, 12658, 12665, 12675, 12676, 12679, 12695, 12696, 12697, 12701, 12711, 12722, 12728, 12740, 12753, 12759, 12760, 12764, 12776, 12784, 12789, 12794, 12799, 12804, 12812, 12820, 12825, 12830, 12837, 12838, 12842, 12843, 12844, 12851, 12852, 12856, 12857, 12861, 12862, 12866, 12867, 12871, 12875, 12876, 12879, 12888, 12901, 12906, 12911, 12915, 12927, 12928, 12932, 12941, 12957, 12966, 12975, 12984, 12996, 12999, 13004, 13005, 13013, 13033, 13034, 13036, 13041, 13042, 13046, 13047, 13050, 13051, 13076, 13085, 13095, 13096, 13100, 13101, 13102, 13103, 13104, 13108, 13121, 13128, 13135, 13142, 13143, 13147, 13148, 13152, 13153, 13157, 13158, 13162, 13174, 13175, 13176, 13177, 13181, 13182, 13192, 13199, 13218, 13219, 13223, 13224, 13230, 13235, 13244, 13252, 13261, 13268, 13276, 13312, 13338, 13342, 13368, 13372, 13386, 13407, 13429, 13442, 13459, 13465, 13470, 13476, 13483, 13484, 13494, 13500, 13508, 13512, 13516, 13523, 13531, 13536, 13537, 13538, 13539, 13543, 13544, 13559, 13563, 13571, 13578, 13585, 13592, 13599, 13610, 13611, 13624, 13628, 13636, 13650, 13664, 13665, 13680, 13691, 13704, 13709, 13710, 13713, 13714, 13717, 13718, 13723, 13724, 13729, 13730, 13739, 13744, 13745, 13749, 13753, 13759, 13784, 13795, 13809, 13810, 13814, 13828, 13885, 13899, 13901, 13906, 13908, 13910, 13912, 13917, 13919, 13924, 13932, 13952, 13957, 13964, 13969, 13975, 13980, 13989, 13991, 13994, 13998, 13999, 14000, 14001, 14002, 14003, 14008, 14028, 14029, 14030, 14031, 14042, 14048, 14056, 14057, 14063, 14068, 14073, 14078, 14083, 14088, 14093, 14098, 14104, 14110, 14116, 14123, 14145, 14154, 14158, 14166, 14170, 14178, 14190, 14211, 14215, 14221, 14225, 14238, 14246, 14256, 14258, 14260, 14262, 14264, 14266, 14271, 14272, 14279, 14288, 14296, 14305, 14316, 14324, 14325, 14326, 14330, 14332, 14334, 14336, 14338, 14340, 14342, 14347, 14352, 14358, 14366, 14371, 14378, 14385, 14389, 14393, 14429, 14430, 14432, 14441, 14457, 14459, 14461, 14463, 14465, 14467, 14469, 14471, 14473, 14475, 14477, 14479, 14481, 14483, 14486, 14488, 14491, 14493, 14495, 14497, 14500, 14505, 14514, 14519, 14528, 14533, 14542, 14547, 14557, 14566, 14575, 14584, 14603, 14612, 14621, 14630, 14639, 14656, 14665, 14674, 14683, 14692, 14701, 14710, 14714, 14718, 14726, 14734, 14742, 14750, 14771, 14794, 14806, 14813, 14829, 14834, 14840, 14847, 14854, 14862, 14870, 14896, 14898, 14900, 14902, 14904, 14906, 14908, 14910, 14912, 14914, 14916, 14918, 14920, 14922, 14924, 14926, 14928, 14930, 14932, 14936, 14940, 14945, 14961, 14962, 14963, 14980, 14993, 14995, 14997, 15009, 15034, 15046, 15058, 15066, 15077, 15088, 15098, 15104, 15113, 15123, 15133, 15146, 15156, 15187, 15223, 15234, 15235, 15242, 15249, 15253, 15257, 15261, 15265, 15269, 15273, 15277, 15281, 15285, 15289, 15293, 15297, 15301, 15305, 15309, 15311, 15318, 15325, 15332, 15339, 15350, 15364, 15374, 15385, 15401, 15411, 15418, 15425, 15432, 15436, 15444, 15453, 15462, 15466, 15470, 15474, 15478, 15482, 15491, 15495, 15505, 15509, 15513, 15518, 15533, 15535, 15539, 15541, 15543, 15546, 15549, 15552, 15553, 15556, 15564, 15574, 15575, 15578, 15579, 15580, 15585, 15589, 15593, 15597, 15604, 15605, 15613, 15614, 15618, 15619, 15627, 15628, 15632, 15633, 15638, 15647, 15649, 15664, 15667, 15695, 15696, 15699, 15700, 15708, 15716, 15724, 15733, 15743, 15761, 15807, 15816, 15825, 15834, 15843, 15855, 15856, 15857, 15858, 15859, 15873, 15874, 15875, 15878, 15879, 15882, 15885, 15886, 15887, 15890, 15891, 15894, 15895, 15896, 15897, 15898, 15899, 15900, 15901, 15902, 15903, 15904, 15905, 15908, 15910, 15915, 15917, 15922, 15924, 15926, 15928, 15930, 15932, 15944, 15948, 15955, 15959, 15965, 15969, 15979, 15991, 15992, 15995, 15996, 15999, 16003, 16007, 16013, 16014, 16019, 16023, 16033, 16034, 16035, 16036, 16037, 16038, 16039, 16040, 16044, 16045, 16046, 16047, 16052, 16057, 16066, 16087, 16091, 16096, 16107, 16124, 16130, 16131, 16132, 16135, 16143, 16153, 16168, 16169, 16173, 16185, 16186, 16189, 16190, 16193, 16197, 16204, 16208, 16212, 16221, 16233, 16234, 16238, 16239, 16243, 16244, 16247, 16248, 16258, 16259, 16263, 16264, 16267, 16275, 16283, 16291, 16314, 16315, 16326, 16330, 16336, 16338, 16343, 16345, 16347, 16357, 16359, 16370, 16374, 16378, 16382, 16386, 16395, 16403, 16435, 16442, 16474, 16478, 16485, 16493, 16497, 16503, 16510, 16514, 16518, 16524, 16525, 16527, 16528, 16529, 16533, 16574, 16602, 16606, 16610, 16616, 16618, 16632, 16668, 16681, 16682, 16685, 16686, 16703, 16704, 16705, 16710, 16711, 16712, 16717, 16718, 16719, 16720, 16726, 16727, 16728, 16729, 16730, 16736, 16737, 16757, 16758, 16759, 16760, 16761, 16762, 16763, 16764, 16765, 16766, 16767, 16768, 16769, 16770, 16771, 16772, 16773, 16774, 16775, 16776, 16777, 16778, 16779, 16780, 16781, 16782, 16783, 16784, 16785, 16786, 16787, 16788, 16789, 16790, 16791, 16792, 16793, 16794, 16795, 16796, 16797, 16798, 16799, 16800, 16801, 16802, 16803, 16804, 16805, 16806, 16807, 16808, 16809, 16810, 16811, 16812, 16813, 16814, 16815, 16816, 16817, 16818, 16819, 16820, 16821, 16822, 16823, 16824, 16825, 16826, 16827, 16828, 16829, 16830, 16831, 16832, 16833, 16834, 16835, 16836, 16837, 16838, 16839, 16840, 16841, 16842, 16843, 16844, 16845, 16846, 16847, 16848, 16849, 16850, 16851, 16852, 16853, 16854, 16855, 16856, 16857, 16858, 16859, 16860, 16861, 16862, 16863, 16864, 16865, 16866, 16867, 16868, 16869, 16870, 16871, 16872, 16873, 16874, 16875, 16876, 16877, 16878, 16879, 16880, 16881, 16882, 16883, 16884, 16885, 16886, 16887, 16888, 16889, 16890, 16891, 16892, 16893, 16894, 16895, 16896, 16897, 16898, 16899, 16900, 16901, 16902, 16903, 16904, 16905, 16906, 16907, 16908, 16909, 16910, 16911, 16912, 16913, 16914, 16915, 16916, 16917, 16918, 16919, 16920, 16921, 16922, 16923, 16924, 16925, 16926, 16927, 16928, 16929, 16930, 16931, 16932, 16933, 16934, 16935, 16936, 16937, 16938, 16939, 16940, 16941, 16942, 16943, 16944, 16945, 16946, 16947, 16948, 16949, 16950, 16951, 16952, 16953, 16954, 16955, 16956, 16957, 16958, 16959, 16960, 16961, 16962, 16963, 16964, 16965, 16966, 16967, 16968, 16969, 16970, 16971, 16972, 16973, 16974, 16975, 16976, 16977, 16978, 16979, 16980, 16981, 16982, 16983, 16984, 16985, 16986, 16987, 16988, 16989, 16990, 16991, 16992, 16993, 16994, 16995, 16996, 16997, 16998, 16999, 17000, 17001, 17002, 17003, 17004, 17005, 17006, 17007, 17008, 17009, 17010, 17011, 17012, 17013, 17014, 17015, 17016, 17017, 17018, 17019, 17020, 17021, 17022, 17023, 17024, 17025, 17026, 17027, 17028, 17029, 17030, 17031, 17032, 17033, 17034, 17035, 17036, 17037, 17038, 17039, 17040, 17041, 17042, 17043, 17044, 17045, 17046, 17047, 17048, 17049, 17050, 17051, 17052, 17053, 17054, 17055, 17056, 17057, 17058, 17059, 17060, 17061, 17062, 17063, 17064, 17065, 17079, 17080, 17081, 17082, 17083, 17084, 17085, 17086, 17087, 17088, 17089, 17090, 17091, 17092, 17093, 17094, 17095, 17096, 17097, 17098, 17099, 17100, 17101, 17102, 17103, 17104, 17105, 17106, 17107, 17108, 17109, 17110, 17111, 17112, 17113, 17114, 17115, 17116, 17117, 17118, 17119, 17120, 17121, 17122, 17123, 17124, 17125, 17126, 17127, 17128, 17129, 17143, 17144, 17145, 17146, 17147, 17148, 17149, 17150, 17151, 17152, 17153, 17154, 17155, 17156, 17157, 17158, 17159, 17160, 17161, 17162, 17163, 17164, 17165, 17175, 17176, 17177, 17178, 17179, 17180, 17181, 17182, 17183, 17184, 17185, 17186, 17187, 17188, 17189, 17190, 17191, 17192, 17193, 17194, 17195, 17196, 17197, 17198, 17199, 17200, 17201, 17202, 17203, 17204, 17205, 17206, 17207, 17208, 17209, 17210, 17211, 17212, 17213, 17214, 17215, 17216, 17217, 17218, 17219, 17220, 17221, 17222, 17223, 17224, 17225, 17226, 17227, 17228, 17229, 17230, 17231, 17232, 17233, 17234, 17235, 17236, 17237, 17238, 17239, 17240, 17241, 17242, 17243, 17244, 17245, 17246, 17247, 17248, 17249, 17250, 17251, 17264, 17265, 17266, 17267, 17268, 17269, 17270, 17271, 17272, 17273, 17274, 17275, 17276, 17277, 17278, 17279, 17280, 17281, 17282, 17283, 17284, 17285, 17286, 17287, 17288, 17289, 17290, 17291, 17292, 17293, 17294, 17295, 17296, 17297, 17298, 17299, 17300, 17301, 17302, 17303, 17304, 17305, 17306, 17307, 17308, 17309, 17310, 17311, 17312, 17313, 17314, 17315, 17316, 17317, 17318, 17319, 17320, 17321, 17322, 17323, 17324, 17325, 17326, 17327, 17328, 17329, 17330, 17331, 17332, 17333, 17334, 17335, 17336, 17337, 17338, 17339, 17340, 17341, 17342, 17343, 17344, 17345, 17346, 17347, 17348, 17349, 17350, 17351, 17352, 17353, 17354, 17355, 17356, 17357, 17358, 17359, 17360, 17361, 17362, 17363, 17364, 17365, 17366, 17367, 17368, 17369, 17370, 17371, 17372, 17373, 17374, 17375, 17376, 17377, 17378, 17379, 17380, 17381, 17382, 17383, 17384, 17385, 17386, 17387, 17388, 17389, 17390, 17391, 17392, 17393, 17394, 17395, 17396, 17397, 17398, 17399, 17400, 17401, 17402, 17403, 17404, 17405, 17406, 17407, 17408, 17409, 17410, 17411, 17412, 17413, 17414, 17415, 17416, 17417, 17418, 17419, 17420, 17421, 17422, 17423, 17424, 17425, 17426, 17427, 17428, 17429, 17430, 17431, 17432, 17433, 17434, 17435, 17436, 17437, 17438, 17439, 17440, 17441, 17442, 17443, 17444, 17445, 17446, 17447, 17448, 17449, 17450, 17451, 17452, 17453, 17454, 17455, 17456, 17457, 17458, 17459, 17460, 17461, 17462, 17463, 17464, 17465, 17466, 17467, 17468, 17469, 17470, 17471, 17472, 17473, 17474, 17475, 17476, 17477, 17478, 17479, 17480, 17481, 17482, 17483, 17484, 17485, 17486, 17487, 17488, 17489, 17490, 17491, 17492, 17493, 17494, 17495, 17496, 17497, 17498, 17499, 17500, 17501, 17502, 17503, 17504, 17505, 17506, 17507, 17508, 17509, 17510, 17511, 17512, 17513, 17514, 17515, 17516, 17517, 17518, 17519, 17520, 17521, 17522, 17523, 17524, 17525, 17526, 17527, 17528, 17529, 17530, 17531, 17532, 17533, 17534, 17535, 17536, 17537, 17538, 17539, 17540, 17541, 17542, 17543, 17544, 17545, 17546, 17547, 17548, 17549, 17550, 17551, 17552, 17553, 17554, 17555, 17556, 17557, 17558, 17559, 17560, 17561, 17562, 17563, 17564, 17565, 17566, 17567, 17568, 17569, 17570, 17571, 17572, 17573, 17574, 17575, 17576, 17577, 17578, 17579, 17580, 17581, 17582, 17583, 17584, 17585, 17586, 17587, 17588, 17589, 17590, 17591, 17592, 17593, 17594, 17595, 17596, 17597, 17598, 17599, 17600, 17601, 17602, 17603, 17604, 17605, 17606, 17607, 17608, 17609, 17610, 17611, 17612, 17613, 17614, 17615, 17616, 17617, 17618, 17619, 17620, 17621, 17622, 17623, 17624, 17625, 17626, 17627, 17628, 17629, 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 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "IDENT", "UIDENT", "FCONST", "SCONST", "USCONST", "BCONST", "XCONST", "Op", "ICONST", "PARAM", "TYPECAST", "DOT_DOT", "COLON_EQUALS", "EQUALS_GREATER", "LESS_EQUALS", "GREATER_EQUALS", "NOT_EQUALS", "SQL_COMMENT", "C_COMMENT", "ABORT_P", "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", "AGGREGATE", "ALL", "ALSO", "ALTER", "ALWAYS", "ANALYSE", "ANALYZE", "AND", "ANY", "ARRAY", "AS", "ASC", "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", "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", "ENABLE_P", "ENCODING", "ENCRYPTED", "END_P", "ENUM_P", "ESCAPE", "EVENT", "EXCEPT", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", "EXECUTE", "EXISTS", "EXPLAIN", "EXPRESSION", "EXTENSION", "EXTERNAL", "EXTRACT", "FALSE_P", "FAMILY", "FETCH", "FILTER", "FINALIZE", "FIRST_P", "FLOAT_P", "FOLLOWING", "FOR", "FORCE", "FOREIGN", "FORWARD", "FREEZE", "FROM", "FULL", "FUNCTION", "FUNCTIONS", "GENERATED", "GLOBAL", "GRANT", "GRANTED", "GREATEST", "GROUP_P", "GROUPING", "GROUPS", "HANDLER", "HAVING", "HEADER_P", "HOLD", "HOUR_P", "IDENTITY_P", "IF_P", "ILIKE", "IMMEDIATE", "IMMUTABLE", "IMPLICIT_P", "IMPORT_P", "IN_P", "INCLUDE", "INCLUDING", "INCREMENT", "INDEX", "INDEXES", "INHERIT", "INHERITS", "INITIALLY", "INLINE_P", "INNER_P", "INOUT", "INPUT_P", "INSENSITIVE", "INSERT", "INSTEAD", "INT_P", "INTEGER", "INTERSECT", "INTERVAL", "INTO", "INVOKER", "IS", "ISNULL", "ISOLATION", "JOIN", "KEY", "LABEL", "LANGUAGE", "LARGE_P", "LAST_P", "LATERAL_P", "LEADING", "LEAKPROOF", "LEAST", "LEFT", "LEVEL", "LIKE", "LIMIT", "LISTEN", "LOAD", "LOCAL", "LOCALTIME", "LOCALTIMESTAMP", "LOCATION", "LOCK_P", "LOCKED", "LOGGED", "MAPPING", "MATCH", "MATCHED", "MATERIALIZED", "MAXVALUE", "MERGE", "METHOD", "MINUTE_P", "MINVALUE", "MODE", "MONTH_P", "MOVE", "NAME_P", "NAMES", "NATIONAL", "NATURAL", "NCHAR", "NEW", "NEXT", "NFC", "NFD", "NFKC", "NFKD", "NO", "NONE", "NORMALIZE", "NORMALIZED", "NOT", "NOTHING", "NOTIFY", "NOTNULL", "NOWAIT", "NULL_P", "NULLIF", "NULLS_P", "NUMERIC", "OBJECT_P", "OF", "OFF", "OFFSET", "OIDS", "OLD", "ON", "ONLY", "OPERATOR", "OPTION", "OPTIONS", "OR", "ORDER", "ORDINALITY", "OTHERS", "OUT_P", "OUTER_P", "OVER", "OVERLAPS", "OVERLAY", "OVERRIDING", "OWNED", "OWNER", "PARALLEL", "PARAMETER", "PARSER", "PARTIAL", "PARTITION", "PASSING", "PASSWORD", "PLACING", "PLANS", "POLICY", "POSITION", "PRECEDING", "PRECISION", "PRESERVE", "PREPARE", "PREPARED", "PRIMARY", "PRIOR", "PRIVILEGES", "PROCEDURAL", "PROCEDURE", "PROCEDURES", "PROGRAM", "PUBLICATION", "QUOTE", "RANGE", "READ", "REAL", "REASSIGN", "RECHECK", "RECURSIVE", "REF_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", "SCHEMA", "SCHEMAS", "SCROLL", "SEARCH", "SECOND_P", "SECURITY", "SELECT", "SEQUENCE", "SEQUENCES", "SERIALIZABLE", "SERVER", "SESSION", "SESSION_USER", "SET", "SETS", "SETOF", "SHARE", "SHOW", "SIMILAR", "SIMPLE", "SKIP", "SMALLINT", "SNAPSHOT", "SOME", "SQL_P", "STABLE", "STANDALONE_P", "START", "STATEMENT", "STATISTICS", "STDIN", "STDOUT", "STORAGE", "STORED", "STRICT_P", "STRIP_P", "SUBSCRIPTION", "SUBSTRING", "SUPPORT", "SYMMETRIC", "SYSID", "SYSTEM_P", "TABLE", "TABLES", "TABLESAMPLE", "TABLESPACE", "TEMP", "TEMPLATE", "TEMPORARY", "TEXT_P", "THEN", "TIES", "TIME", "TIMESTAMP", "TO", "TRAILING", "TRANSACTION", "TRANSFORM", "TREAT", "TRIGGER", "TRIM", "TRUE_P", "TRUNCATE", "TRUSTED", "TYPE_P", "TYPES_P", "UESCAPE", "UNBOUNDED", "UNCOMMITTED", "UNENCRYPTED", "UNION", "UNIQUE", "UNKNOWN", "UNLISTEN", "UNLOGGED", "UNTIL", "UPDATE", "USER", "USING", "VACUUM", "VALID", "VALIDATE", "VALIDATOR", "VALUE_P", "VALUES", "VARCHAR", "VARIADIC", "VARYING", "VERBOSE", "VERSION_P", "VIEW", "VIEWS", "VOLATILE", "WHEN", "WHERE", "WHITESPACE_P", "WINDOW", "WITH", "WITHIN", "WITHOUT", "WORK", "WRAPPER", "WRITE", "XML_P", "XMLATTRIBUTES", "XMLCONCAT", "XMLELEMENT", "XMLEXISTS", "XMLFOREST", "XMLNAMESPACES", "XMLPARSE", "XMLPI", "XMLROOT", "XMLSERIALIZE", "XMLTABLE", "YEAR_P", "YES_P", "ZONE", "NOT_LA", "NULLS_LA", "WITH_LA", "MODE_TYPE_NAME", "MODE_PLPGSQL_EXPR", "MODE_PLPGSQL_ASSIGN1", "MODE_PLPGSQL_ASSIGN2", "MODE_PLPGSQL_ASSIGN3", "'<'", "'>'", "'='", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", "'.'", "';'", "','", "':'", "$accept", "parse_toplevel", "stmtmulti", "toplevel_stmt", "stmt", "CallStmt", "CreateRoleStmt", "opt_with", "OptRoleList", "AlterOptRoleList", "AlterOptRoleElem", "CreateOptRoleElem", "CreateUserStmt", "AlterRoleStmt", "opt_in_database", "AlterRoleSetStmt", "DropRoleStmt", "CreateGroupStmt", "AlterGroupStmt", "add_drop", "CreateSchemaStmt", "OptSchemaName", "OptSchemaEltList", "schema_stmt", "VariableSetStmt", "set_rest", "generic_set", "set_rest_more", "var_name", "var_list", "var_value", "iso_level", "opt_boolean_or_string", "zone_value", "opt_encoding", "NonReservedWord_or_Sconst", "VariableResetStmt", "reset_rest", "generic_reset", "SetResetClause", "FunctionSetResetClause", "VariableShowStmt", "ConstraintsSetStmt", "constraints_set_list", "constraints_set_mode", "CheckPointStmt", "DiscardStmt", "AlterTableStmt", "alter_table_cmds", "partition_cmd", "index_partition_cmd", "alter_table_cmd", "alter_column_default", "opt_drop_behavior", "opt_collate_clause", "alter_using", "replica_identity", "reloptions", "opt_reloptions", "reloption_list", "reloption_elem", "alter_identity_column_option_list", "alter_identity_column_option", "PartitionBoundSpec", "hash_partbound_elem", "hash_partbound", "AlterCompositeTypeStmt", "alter_type_cmds", "alter_type_cmd", "ClosePortalStmt", "CopyStmt", "copy_from", "opt_program", "copy_file_name", "copy_options", "copy_opt_list", "copy_opt_item", "opt_binary", "copy_delimiter", "opt_using", "copy_generic_opt_list", "copy_generic_opt_elem", "copy_generic_opt_arg", "copy_generic_opt_arg_list", "copy_generic_opt_arg_list_item", "CreateStmt", "OptTemp", "OptTableElementList", "OptTypedTableElementList", "TableElementList", "TypedTableElementList", "TableElement", "TypedTableElement", "columnDef", "columnOptions", "column_compression", "opt_column_compression", "ColQualList", "ColConstraint", "ColConstraintElem", "opt_unique_null_treatment", "generated_when", "ConstraintAttr", "TableLikeClause", "TableLikeOptionList", "TableLikeOption", "TableConstraint", "ConstraintElem", "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", "opt_grant_admin_option", "opt_granted_by", "AlterDefaultPrivilegesStmt", "DefACLOptionList", "DefACLOption", "DefACLAction", "defacl_privilege_target", "IndexStmt", "opt_unique", "opt_concurrently", "opt_index_name", "access_method_clause", "index_params", "index_elem_options", "index_elem", "opt_include", "index_including_params", "opt_collate", "opt_class", "opt_asc_desc", "opt_nulls_order", "CreateFunctionStmt", "opt_or_replace", "func_args", "func_args_list", "function_with_argtypes_list", "function_with_argtypes", "func_args_with_defaults", "func_args_with_defaults_list", "func_arg", "arg_class", "param_name", "func_return", "func_type", "func_arg_with_default", "aggr_arg", "aggr_args", "aggr_args_list", "aggregate_with_argtypes", "aggregate_with_argtypes_list", "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_type", "reindex_target_multitable", "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", "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", "Typename", "opt_array_bounds", "SimpleTypename", "ConstTypename", "GenericType", "opt_type_modifiers", "Numeric", "opt_float", "Bit", "ConstBit", "BitWithLength", "BitWithoutLength", "Character", "ConstCharacter", "CharacterWithLength", "CharacterWithoutLength", "character", "opt_varying", "ConstDatetime", "ConstInterval", "opt_timezone", "opt_interval", "interval_second", "a_expr", "b_expr", "c_expr", "func_application", "func_expr", "func_expr_windowless", "func_expr_common_subexpr", "xml_root_version", "opt_xml_root_standalone", "xml_attributes", "xml_attribute_list", "xml_attribute_el", "document_or_content", "xml_whitespace_option", "xmlexists_argument", "xml_passing_mech", "within_group_clause", "filter_clause", "window_clause", "window_definition_list", "window_definition", "over_clause", "window_specification", "opt_existing_window_name", "opt_partition_clause", "opt_frame_clause", "frame_extent", "frame_bound", "opt_window_exclusion_clause", "row", "explicit_row", "implicit_row", "sub_type", "all_Op", "MathOp", "qual_Op", "qual_all_Op", "subquery_Op", "expr_list", "func_arg_list", "func_arg_expr", "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", "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, 60, 62, 61, 43, 45, 42, 47, 37, 94, 745, 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, 508, 509, 509, 509, 509, 509, 509, 510, 510, 511, 511, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 513, 514, 515, 515, 515, 516, 516, 517, 517, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 519, 519, 519, 519, 519, 519, 520, 521, 521, 522, 522, 523, 523, 523, 523, 524, 524, 524, 524, 524, 524, 525, 526, 527, 527, 528, 528, 528, 528, 529, 529, 530, 530, 531, 531, 531, 531, 531, 531, 532, 532, 532, 533, 533, 533, 534, 534, 534, 534, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 536, 536, 537, 537, 538, 538, 538, 539, 539, 539, 539, 540, 540, 540, 540, 541, 541, 541, 541, 541, 541, 541, 541, 542, 542, 542, 543, 543, 544, 545, 545, 545, 545, 546, 546, 547, 547, 548, 548, 549, 549, 549, 549, 549, 550, 551, 551, 552, 552, 553, 554, 554, 554, 554, 554, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 556, 556, 557, 557, 557, 558, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 560, 560, 561, 561, 561, 562, 562, 563, 563, 564, 564, 564, 564, 565, 566, 566, 567, 567, 568, 568, 568, 568, 569, 569, 570, 570, 570, 570, 571, 571, 571, 571, 572, 573, 573, 574, 575, 575, 576, 576, 576, 576, 577, 577, 578, 578, 579, 579, 580, 580, 581, 581, 581, 582, 582, 583, 583, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 585, 585, 586, 586, 587, 587, 588, 588, 589, 590, 590, 590, 590, 590, 591, 591, 592, 593, 593, 593, 593, 593, 593, 594, 594, 594, 594, 594, 594, 594, 594, 595, 595, 596, 596, 597, 597, 598, 598, 599, 599, 599, 600, 600, 601, 602, 602, 603, 603, 604, 604, 605, 605, 606, 606, 606, 606, 607, 607, 607, 607, 607, 607, 607, 607, 607, 608, 608, 608, 609, 609, 610, 610, 610, 610, 611, 612, 612, 612, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 614, 614, 615, 615, 615, 615, 615, 615, 615, 616, 616, 617, 617, 618, 618, 619, 620, 620, 621, 621, 621, 621, 622, 622, 623, 623, 624, 624, 625, 625, 625, 625, 625, 626, 627, 628, 628, 628, 628, 628, 629, 629, 630, 630, 631, 632, 632, 633, 633, 633, 634, 634, 635, 635, 635, 636, 636, 636, 636, 637, 637, 638, 638, 639, 640, 640, 641, 641, 642, 642, 642, 643, 643, 644, 644, 645, 646, 646, 646, 647, 647, 648, 649, 649, 650, 651, 651, 652, 652, 653, 653, 654, 654, 655, 655, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 657, 657, 658, 658, 658, 658, 659, 659, 660, 660, 661, 661, 662, 662, 663, 663, 664, 664, 665, 665, 666, 666, 667, 668, 668, 669, 669, 670, 670, 671, 671, 672, 672, 672, 672, 673, 674, 674, 675, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 677, 678, 678, 678, 678, 679, 679, 680, 680, 681, 681, 682, 682, 683, 683, 684, 685, 685, 686, 686, 686, 686, 687, 688, 689, 690, 690, 691, 691, 692, 692, 693, 693, 694, 694, 694, 695, 695, 695, 695, 696, 697, 697, 698, 698, 699, 699, 700, 700, 701, 701, 702, 703, 704, 705, 705, 706, 706, 707, 707, 708, 708, 709, 709, 710, 710, 711, 711, 711, 711, 711, 712, 713, 713, 714, 714, 715, 715, 715, 716, 716, 717, 717, 717, 717, 717, 718, 718, 719, 719, 720, 721, 721, 722, 722, 723, 724, 724, 725, 725, 726, 726, 727, 727, 728, 728, 729, 729, 729, 730, 730, 730, 730, 731, 731, 732, 732, 733, 733, 733, 733, 733, 733, 734, 734, 735, 735, 736, 737, 737, 738, 739, 739, 739, 739, 740, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 742, 743, 743, 744, 744, 745, 745, 745, 745, 745, 745, 746, 747, 747, 748, 749, 749, 750, 750, 751, 751, 751, 751, 752, 752, 753, 754, 754, 755, 755, 755, 755, 755, 756, 756, 757, 757, 758, 758, 758, 759, 759, 760, 761, 761, 762, 762, 763, 763, 764, 764, 765, 765, 766, 767, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 770, 770, 770, 770, 770, 771, 771, 771, 771, 771, 771, 771, 771, 772, 772, 772, 773, 773, 774, 774, 775, 775, 776, 776, 777, 778, 778, 778, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 780, 780, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 782, 782, 783, 783, 784, 784, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 786, 786, 787, 787, 788, 789, 789, 790, 790, 790, 790, 790, 791, 791, 792, 792, 792, 792, 792, 793, 793, 794, 794, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 796, 796, 797, 797, 798, 798, 799, 800, 800, 801, 801, 802, 802, 803, 804, 804, 805, 805, 805, 806, 806, 806, 807, 807, 807, 807, 807, 807, 808, 808, 809, 809, 810, 810, 811, 811, 812, 812, 813, 813, 814, 814, 815, 815, 815, 816, 816, 817, 817, 818, 818, 819, 819, 820, 820, 820, 821, 821, 821, 822, 822, 822, 822, 823, 823, 824, 824, 825, 825, 826, 826, 827, 827, 827, 827, 828, 828, 829, 829, 830, 830, 830, 830, 830, 831, 831, 831, 831, 831, 832, 833, 834, 834, 834, 835, 835, 835, 836, 837, 837, 837, 837, 838, 838, 839, 840, 840, 841, 841, 842, 842, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 844, 844, 844, 844, 844, 845, 845, 846, 847, 847, 847, 848, 848, 849, 849, 850, 850, 851, 851, 852, 853, 853, 854, 854, 854, 855, 855, 856, 856, 857, 857, 857, 857, 857, 857, 858, 858, 859, 859, 860, 860, 860, 860, 861, 861, 862, 862, 863, 864, 865, 865, 866, 866, 867, 867, 867, 868, 868, 868, 869, 870, 870, 871, 872, 872, 872, 872, 873, 874, 874, 874, 874, 875, 875, 876, 876, 876, 877, 877, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 879, 879, 880, 880, 881, 881, 881, 881, 881, 881, 882, 882, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 884, 885, 885, 886, 886, 887, 887, 887, 887, 887, 888, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 890, 890, 891, 891, 891, 891, 891, 891, 891, 892, 892, 893, 893, 893, 893, 894, 895, 895, 895, 895, 895, 895, 895, 895, 895, 896, 896, 897, 898, 898, 898, 899, 899, 900, 900, 900, 900, 900, 901, 901, 902, 902, 902, 902, 903, 903, 903, 904, 905, 905, 906, 907, 907, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 909, 909, 910, 910, 910, 911, 911, 911, 911, 911, 912, 912, 912, 913, 913, 914, 914, 914, 915, 915, 915, 915, 916, 916, 916, 916, 917, 918, 919, 919, 920, 920, 921, 921, 921, 922, 922, 922, 922, 922, 922, 922, 923, 923, 924, 924, 924, 924, 925, 926, 926, 926, 926, 927, 927, 928, 929, 930, 930, 931, 932, 932, 932, 932, 932, 932, 932, 933, 933, 934, 935, 935, 935, 935, 935, 935, 936, 936, 937, 938, 938, 938, 938, 939, 939, 940, 940, 941, 941, 942, 942, 943, 943, 944, 945, 945, 946, 946, 946, 947, 947, 948, 948, 949, 949, 950, 950, 951, 951, 952, 953, 953, 954, 954, 955, 955, 955, 955, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 957, 958, 958, 959, 959, 959, 959, 959, 960, 960, 960, 961, 961, 962, 962, 962, 962, 963, 964, 964, 965, 965, 965, 965, 965, 966, 966, 967, 967, 968, 969, 969, 969, 970, 970, 970, 971, 971, 972, 973, 973, 974, 975, 975, 976, 976, 976, 976, 976, 976, 976, 976, 977, 977, 978, 978, 978, 979, 980, 980, 981, 981, 982, 983, 983, 984, 985, 985, 986, 986, 986, 986, 986, 987, 987, 988, 989, 990, 990, 990, 990, 990, 991, 992, 993, 994, 994, 994, 994, 994, 994, 995, 995, 995, 996, 996, 997, 997, 998, 998, 998, 998, 998, 998, 998, 998, 999, 999, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1001, 1001, 1001, 1002, 1002, 1003, 1004, 1004, 1004, 1005, 1005, 1005, 1006, 1006, 1006, 1007, 1007, 1008, 1008, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1010, 1010, 1011, 1011, 1011, 1012, 1012, 1013, 1013, 1014, 1014, 1015, 1015, 1016, 1017, 1017, 1018, 1018, 1019, 1019, 1019, 1019, 1020, 1020, 1021, 1021, 1021, 1021, 1021, 1021, 1022, 1022, 1023, 1023, 1024, 1025, 1025, 1025, 1026, 1026, 1027, 1027, 1028, 1028, 1029, 1029, 1030, 1030, 1031, 1031, 1031, 1031, 1031, 1032, 1033, 1034, 1035, 1036, 1036, 1037, 1037, 1038, 1038, 1039, 1039, 1040, 1041, 1041, 1041, 1041, 1042, 1042, 1043, 1043, 1044, 1044, 1045, 1045, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1047, 1047, 1047, 1047, 1047, 1047, 1048, 1048, 1048, 1048, 1049, 1049, 1050, 1050, 1051, 1051, 1051, 1051, 1051, 1052, 1052, 1052, 1052, 1053, 1053, 1054, 1054, 1055, 1055, 1056, 1056, 1056, 1057, 1057, 1058, 1058, 1058, 1059, 1060, 1060, 1061, 1061, 1062, 1063, 1063, 1064, 1064, 1065, 1065, 1066, 1066, 1067, 1067, 1067, 1068, 1068, 1069, 1069, 1070, 1071, 1071, 1072, 1072, 1073, 1073, 1073, 1074, 1074, 1075, 1075, 1075, 1075, 1076, 1076, 1077, 1077, 1078, 1078, 1078, 1078, 1078, 1078, 1079, 1079, 1079, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1081, 1081, 1081, 1081, 1082, 1082, 1083, 1083, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1085, 1085, 1086, 1086, 1087, 1087, 1088, 1089, 1090, 1090, 1091, 1091, 1092, 1093, 1094, 1094, 1094, 1094, 1094, 1094, 1095, 1095, 1096, 1096, 1096, 1096, 1097, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1100, 1100, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1105, 1105, 1106, 1106, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1108, 1108, 1109, 1109, 1109, 1109, 1110, 1111, 1111, 1112, 1112, 1113, 1113, 1114, 1114, 1114, 1115, 1115, 1115, 1115, 1116, 1116, 1117, 1117, 1118, 1118, 1119, 1119, 1120, 1120, 1121, 1122, 1122, 1122, 1123, 1124, 1124, 1125, 1125, 1126, 1126, 1126, 1126, 1127, 1127, 1128, 1128, 1128, 1128, 1128, 1129, 1129, 1129, 1129, 1129, 1130, 1130, 1130, 1131, 1131, 1132, 1133, 1133, 1133, 1134, 1134, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1136, 1136, 1137, 1137, 1138, 1138, 1138, 1138, 1138, 1138, 1139, 1139, 1140, 1140, 1141, 1141, 1141, 1142, 1142, 1143, 1143, 1144, 1144, 1144, 1145, 1145, 1146, 1146, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1148, 1148, 1148, 1148, 1149, 1149, 1150, 1151, 1151, 1151, 1151, 1151, 1152, 1152, 1152, 1153, 1153, 1154, 1155, 1155, 1156, 1157, 1157, 1158, 1158, 1159, 1159, 1160, 1160, 1160, 1160, 1161, 1161, 1162, 1162, 1163, 1163, 1164, 1164, 1165, 1165, 1166, 1166, 1167, 1167, 1167, 1167, 1168, 1168, 1169, 1169, 1170, 1170, 1171, 1172, 1173, 1174, 1174, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1176, 1177, 1178, 1178, 1178, 1179, 1180, 1180, 1180, 1180, 1181, 1181, 1182, 1183, 1184, 1184, 1185, 1185, 1186, 1186, 1186, 1187, 1187, 1187, 1188, 1188, 1188, 1188, 1189, 1189, 1189, 1189, 1189, 1190, 1190, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195 }; /* 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, 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, 1, 0, 2, 0, 1, 1, 1, 1, 1, 1, 2, 3, 3, 2, 5, 1, 3, 3, 3, 3, 1, 3, 3, 2, 2, 2, 2, 2, 2, 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, 5, 7, 6, 6, 5, 5, 6, 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, 1, 1, 0, 2, 0, 2, 0, 1, 1, 1, 3, 3, 2, 0, 1, 3, 3, 1, 5, 3, 1, 2, 1, 3, 2, 3, 6, 6, 10, 1, 2, 1, 3, 4, 1, 3, 4, 6, 4, 8, 2, 2, 11, 9, 1, 1, 1, 0, 1, 1, 1, 1, 3, 2, 0, 1, 1, 3, 3, 1, 1, 3, 3, 3, 3, 4, 3, 2, 1, 0, 3, 0, 1, 0, 1, 3, 2, 1, 1, 1, 3, 0, 1, 3, 1, 13, 16, 12, 15, 14, 17, 1, 1, 2, 2, 2, 2, 1, 0, 1, 0, 3, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 5, 2, 4, 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, 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, 2, 2, 2, 2, 3, 3, 3, 1, 3, 1, 0, 1, 2, 2, 1, 1, 3, 6, 10, 1, 0, 1, 2, 2, 0, 2, 2, 1, 0, 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, 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, 6, 6, 9, 3, 0, 3, 0, 5, 2, 0, 3, 3, 3, 7, 7, 10, 1, 1, 1, 1, 1, 1, 16, 19, 1, 0, 1, 0, 1, 0, 2, 0, 1, 3, 4, 5, 2, 2, 4, 4, 0, 1, 3, 2, 0, 1, 0, 1, 1, 0, 2, 2, 0, 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, 4, 4, 7, 7, 1, 1, 1, 1, 1, 5, 5, 6, 6, 6, 6, 6, 8, 8, 6, 6, 7, 9, 9, 8, 10, 6, 6, 6, 6, 6, 6, 6, 8, 6, 8, 6, 8, 7, 9, 6, 8, 7, 9, 8, 10, 8, 10, 9, 11, 8, 10, 9, 11, 8, 8, 7, 6, 6, 6, 6, 8, 8, 8, 8, 6, 9, 1, 0, 2, 0, 8, 8, 8, 10, 9, 8, 1, 0, 6, 6, 6, 6, 6, 6, 6, 9, 9, 6, 6, 6, 8, 6, 8, 8, 8, 8, 6, 8, 6, 8, 7, 9, 7, 9, 6, 7, 1, 3, 3, 3, 1, 1, 1, 1, 1, 7, 6, 6, 6, 6, 6, 6, 7, 7, 6, 9, 9, 6, 6, 6, 6, 6, 6, 8, 8, 8, 6, 7, 6, 6, 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, 4, 6, 2, 5, 2, 0, 6, 5, 3, 5, 1, 3, 1, 1, 2, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 2, 1, 3, 1, 0, 2, 4, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 9, 1, 2, 5, 5, 6, 6, 7, 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, 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, 1, 3, 3, 2, 2, 3, 5, 6, 2, 3, 3, 4, 0, 1, 1, 1, 1, 1, 2, 4, 1, 1, 1, 1, 2, 3, 3, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 3, 0, 1, 1, 1, 1, 5, 2, 1, 1, 1, 1, 4, 1, 2, 2, 1, 3, 3, 2, 1, 0, 5, 2, 5, 2, 1, 3, 3, 0, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 0, 1, 4, 1, 3, 3, 5, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 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, 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, 1, 1, 1, 5, 1, 1, 4, 1, 4, 1, 4, 1, 4, 1, 1, 1, 1, 1, 1, 6, 4, 4, 6, 4, 4, 4, 4, 4, 6, 5, 5, 5, 4, 6, 4, 4, 4, 4, 5, 7, 7, 9, 5, 4, 6, 5, 7, 7, 7, 2, 3, 3, 3, 4, 0, 4, 1, 3, 3, 1, 1, 1, 2, 2, 0, 2, 3, 3, 4, 2, 2, 5, 0, 5, 0, 2, 0, 1, 3, 3, 2, 2, 0, 6, 1, 0, 3, 0, 3, 3, 3, 0, 1, 4, 2, 2, 2, 2, 2, 3, 2, 2, 3, 0, 4, 3, 5, 4, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 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 }; /* 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[] = { 1699, 1444, 651, 1532, 1531, 1444, 0, 269, 0, 1542, 0, 1444, 433, 1102, 0, 0, 0, 0, 651, 1444, 0, 1699, 0, 0, 0, 0, 0, 1712, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1444, 0, 0, 1719, 0, 0, 0, 0, 1712, 0, 1544, 0, 0, 0, 0, 1719, 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, 1542, 102, 115, 101, 84, 108, 87, 112, 130, 113, 85, 126, 1663, 1662, 1723, 1666, 1698, 0, 1678, 1443, 1442, 1457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 650, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1454, 2322, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2354, 2353, 2355, 2356, 2699, 2357, 2358, 2359, 2648, 2649, 2700, 2650, 2651, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2368, 2652, 2653, 2369, 2370, 2371, 2372, 2373, 2654, 2701, 2374, 2375, 2376, 2377, 2378, 2379, 2702, 2380, 2381, 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2703, 2389, 2390, 2391, 2704, 2392, 2393, 2394, 2395, 2396, 2397, 2655, 2656, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2425, 2657, 2426, 2427, 2428, 2429, 2658, 2430, 2431, 2432, 2433, 2659, 2434, 2435, 2436, 2705, 2706, 2437, 2438, 2439, 2440, 2441, 2660, 2661, 2442, 2443, 2444, 2445, 2446, 2447, 2448, 2707, 2449, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2708, 2662, 2461, 2462, 2463, 2464, 2663, 2664, 2665, 2465, 2709, 2710, 2466, 2711, 2467, 2468, 2469, 2470, 2471, 2472, 2666, 2712, 2473, 2713, 2474, 2475, 2476, 2477, 2478, 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2667, 2714, 2668, 2495, 2496, 2497, 2498, 2499, 2500, 2501, 2669, 2670, 2502, 2503, 2504, 2715, 2505, 2671, 2506, 2672, 2507, 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, 2516, 2673, 2716, 2517, 2717, 2674, 2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2675, 2530, 2676, 2533, 2531, 2532, 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2543, 2677, 2544, 2545, 2546, 2547, 2548, 2549, 2550, 2551, 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560, 2561, 2562, 2718, 2563, 2564, 2565, 2566, 2567, 2678, 2568, 2569, 2570, 2571, 2572, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2583, 2679, 2584, 2585, 2719, 2586, 2587, 2680, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600, 2601, 2681, 2602, 2603, 2604, 2605, 2720, 2606, 2607, 2608, 2609, 2610, 2611, 2682, 2683, 2612, 2613, 2684, 2614, 2685, 2615, 2616, 2617, 2618, 2619, 2620, 2621, 2622, 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, 2632, 2686, 2687, 2633, 2721, 2634, 2635, 2636, 2637, 2638, 2639, 2640, 2641, 2642, 2643, 2644, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2695, 2696, 2697, 2698, 2645, 2646, 2647, 137, 0, 0, 2284, 2323, 2324, 2327, 2322, 405, 404, 1652, 2281, 2323, 1541, 0, 1521, 651, 0, 1457, 432, 1699, 0, 0, 0, 0, 0, 0, 867, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 456, 455, 0, 0, 1068, 461, 0, 0, 0, 0, 0, 641, 1583, 2531, 1581, 1653, 270, 273, 274, 271, 272, 2305, 0, 1214, 1215, 1217, 0, 0, 1227, 907, 908, 0, 0, 0, 921, 0, 0, 0, 905, 0, 0, 0, 927, 0, 924, 0, 0, 928, 925, 902, 926, 909, 0, 901, 0, 0, 1227, 929, 0, 0, 903, 0, 0, 0, 0, 1457, 1580, 462, 1699, 0, 1564, 1565, 1566, 1542, 1554, 1567, 1559, 1561, 1560, 1562, 1563, 1558, 2304, 2340, 997, 997, 997, 997, 994, 995, 997, 997, 997, 2551, 0, 0, 976, 0, 978, 2306, 997, 1002, 2348, 533, 533, 533, 0, 1001, 1006, 533, 0, 1425, 1466, 2283, 1711, 0, 977, 1424, 2612, 1570, 0, 0, 1242, 1238, 1240, 1241, 1239, 0, 1071, 1071, 2570, 1434, 254, 2581, 2682, 2612, 253, 248, 249, 220, 2344, 0, 0, 1001, 0, 1457, 1432, 973, 1718, 1716, 0, 2268, 2367, 2383, 2476, 245, 2563, 2571, 2581, 2682, 2612, 2644, 196, 206, 201, 0, 263, 2581, 2682, 2612, 259, 1454, 0, 1679, 1827, 1826, 2277, 0, 1427, 1426, 1543, 0, 1546, 0, 2546, 1683, 1686, 1548, 1684, 2325, 1902, 1931, 1909, 1931, 1931, 1898, 1898, 2413, 1911, 1899, 1900, 1936, 0, 1931, 1898, 1903, 0, 1901, 1939, 1939, 1926, 3, 1883, 1884, 1885, 1886, 1912, 1913, 1887, 1918, 1919, 1923, 1888, 1953, 1898, 2326, 1720, 1721, 2268, 4, 2319, 5, 2263, 2318, 6, 7, 1675, 0, 0, 1, 1699, 0, 1553, 1715, 1715, 0, 1715, 0, 1667, 1675, 1670, 1674, 0, 0, 0, 0, 0, 0, 1428, 0, 0, 0, 932, 0, 1469, 1053, 0, 0, 0, 0, 0, 1311, 0, 1111, 1110, 2328, 2311, 2312, 2313, 0, 2309, 2310, 2329, 2330, 2331, 0, 2448, 1311, 0, 0, 2178, 2189, 2190, 2191, 2371, 2430, 2186, 2187, 2188, 2180, 2181, 2182, 2183, 2184, 2185, 0, 0, 1209, 2179, 0, 2448, 0, 1311, 0, 166, 0, 141, 1311, 0, 0, 2448, 0, 0, 2448, 0, 0, 0, 0, 0, 2448, 0, 0, 0, 0, 0, 166, 2481, 0, 141, 2448, 0, 0, 1448, 0, 0, 0, 1450, 1453, 1440, 0, 2260, 0, 2261, 2285, 0, 1535, 1529, 1538, 1534, 1524, 0, 2277, 0, 0, 0, 0, 915, 0, 0, 905, 0, 0, 0, 916, 0, 917, 918, 0, 0, 0, 0, 914, 0, 1438, 1430, 0, 1572, 1574, 1573, 1575, 1571, 533, 0, 0, 0, 2448, 0, 141, 1508, 0, 2448, 141, 0, 0, 460, 459, 141, 2309, 458, 457, 2371, 2430, 0, 1101, 0, 1184, 141, 2448, 0, 189, 2448, 710, 2448, 1548, 0, 654, 0, 822, 2481, 141, 0, 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, 0, 0, 0, 640, 651, 1584, 1582, 0, 1218, 247, 246, 1216, 919, 2448, 1143, 366, 0, 0, 2448, 1489, 2448, 366, 936, 920, 0, 906, 2448, 366, 1107, 2448, 2314, 176, 0, 904, 2371, 2430, 2448, 366, 1211, 0, 2448, 366, 2448, 172, 2448, 366, 2448, 366, 2448, 655, 0, 0, 2448, 366, 2448, 2481, 174, 923, 2448, 366, 930, 2448, 366, 2279, 2448, 0, 1441, 0, 1576, 0, 1556, 2686, 0, 1699, 997, 996, 0, 997, 0, 997, 0, 997, 0, 997, 0, 0, 0, 997, 2307, 2308, 979, 0, 1003, 0, 1011, 0, 1010, 1009, 1008, 0, 0, 0, 1012, 0, 1831, 1611, 0, 1422, 1437, 0, 0, 0, 1071, 0, 1070, 0, 0, 1433, 252, 250, 0, 0, 0, 0, 0, 0, 1439, 0, 1431, 0, 0, 0, 2287, 2289, 2290, 2192, 2263, 0, 2649, 2650, 2651, 2252, 0, 2652, 2653, 2654, 2701, 2082, 2069, 2078, 2083, 2070, 2072, 2079, 2655, 2656, 2020, 2657, 2658, 2302, 2659, 2660, 2661, 2663, 2664, 2665, 2666, 2074, 2076, 2667, 2668, 2670, 0, 2303, 2671, 2672, 2512, 2674, 2675, 2677, 2678, 2080, 2680, 2681, 2682, 2683, 2684, 2685, 2301, 500, 2081, 2687, 2689, 2690, 2691, 2692, 2694, 2695, 2696, 2697, 0, 0, 0, 2274, 0, 2049, 0, 1891, 1892, 1914, 1915, 1893, 1920, 1921, 1894, 0, 2273, 1956, 2137, 2048, 2065, 0, 2054, 2055, 0, 2047, 2043, 1701, 2269, 0, 2044, 2286, 2288, 2253, 1701, 2267, 209, 265, 0, 266, 2275, 2581, 197, 244, 212, 243, 214, 213, 211, 210, 0, 2369, 198, 0, 0, 199, 0, 0, 0, 0, 262, 260, 0, 1429, 0, 1829, 1828, 2278, 941, 0, 1545, 1542, 2202, 0, 1685, 0, 0, 0, 1930, 1917, 1925, 1924, 0, 1907, 1906, 1905, 0, 1904, 1931, 1931, 1929, 1908, 1883, 0, 0, 0, 1935, 0, 1933, 1879, 1875, 0, 1942, 1943, 1944, 1941, 1954, 1940, 0, 1889, 1945, 0, 1898, 1895, 1786, 0, 1665, 1664, 8, 0, 1550, 1552, 1527, 1548, 1713, 1714, 0, 0, 0, 0, 0, 0, 0, 0, 1773, 1731, 1732, 1734, 1770, 1774, 1782, 0, 1671, 0, 0, 0, 1833, 0, 0, 1455, 0, 0, 0, 0, 0, 1142, 0, 0, 0, 0, 933, 0, 0, 0, 1475, 0, 1477, 1478, 1479, 0, 0, 0, 1480, 1481, 1469, 256, 1488, 1485, 1468, 1470, 1483, 0, 0, 0, 0, 0, 0, 0, 1500, 0, 180, 181, 0, 667, 651, 0, 2448, 0, 0, 0, 0, 1152, 1159, 1310, 0, 0, 0, 0, 0, 0, 0, 0, 1153, 1151, 0, 1154, 258, 1164, 1191, 1194, 0, 0, 1109, 1112, 0, 0, 0, 0, 0, 1301, 0, 0, 0, 1301, 0, 0, 0, 1310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 281, 283, 296, 361, 0, 632, 0, 0, 0, 635, 0, 2448, 1311, 0, 0, 0, 1213, 0, 0, 0, 0, 0, 0, 0, 0, 1194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 140, 145, 0, 0, 0, 0, 1194, 0, 0, 0, 0, 0, 0, 0, 618, 631, 0, 0, 0, 0, 0, 628, 0, 0, 141, 286, 608, 614, 0, 0, 0, 717, 716, 0, 0, 0, 0, 0, 0, 1398, 0, 1397, 0, 0, 0, 0, 0, 1498, 1497, 0, 0, 0, 0, 0, 0, 1301, 0, 275, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 397, 398, 0, 0, 0, 145, 0, 0, 1301, 0, 288, 0, 0, 1449, 1446, 1447, 0, 1452, 0, 0, 0, 0, 2057, 0, 2206, 1723, 2204, 2284, 2259, 0, 2332, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2733, 2734, 2735, 2736, 2737, 2738, 2739, 2740, 2741, 2742, 2743, 2744, 2745, 2746, 2747, 2748, 2749, 2750, 2751, 2752, 2753, 2754, 2755, 2756, 2757, 2758, 2759, 2760, 2761, 2762, 2763, 2764, 2765, 2766, 2767, 2768, 2769, 2770, 2771, 2772, 2773, 2774, 2775, 2776, 2777, 2778, 2779, 2780, 2781, 2782, 2783, 2784, 2785, 2786, 2787, 2788, 2789, 2790, 2791, 2792, 2793, 2794, 2795, 2796, 2797, 2798, 2256, 2255, 2282, 2333, 2334, 2335, 2336, 2262, 0, 0, 232, 233, 231, 1536, 234, 1537, 1533, 0, 1519, 0, 0, 0, 0, 0, 0, 0, 0, 2371, 2430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 830, 1469, 1507, 0, 0, 0, 660, 0, 2448, 0, 143, 868, 0, 820, 461, 0, 0, 0, 0, 1374, 143, 0, 0, 183, 0, 0, 714, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 821, 0, 0, 143, 0, 2448, 611, 2448, 0, 533, 533, 0, 0, 1073, 0, 0, 0, 0, 0, 0, 0, 0, 1657, 1656, 1659, 1658, 0, 1655, 0, 364, 365, 0, 1201, 1226, 0, 0, 0, 0, 0, 897, 922, 0, 0, 1195, 0, 0, 2448, 366, 2448, 0, 2448, 0, 0, 0, 1203, 366, 0, 1197, 0, 0, 1199, 0, 1400, 0, 913, 911, 910, 912, 0, 0, 895, 0, 0, 0, 0, 0, 890, 0, 0, 892, 0, 0, 0, 0, 1699, 1555, 0, 987, 0, 991, 0, 982, 0, 988, 0, 983, 980, 981, 0, 986, 0, 0, 534, 536, 0, 0, 2395, 2412, 0, 2437, 2469, 2470, 2522, 2537, 2566, 2571, 2577, 0, 2606, 2617, 0, 1017, 1048, 1007, 726, 0, 0, 1621, 1423, 2211, 0, 1699, 0, 0, 0, 1234, 1235, 251, 221, 0, 0, 0, 1050, 2570, 1436, 972, 651, 0, 2045, 0, 2052, 2053, 2251, 0, 0, 0, 0, 0, 0, 2051, 0, 0, 0, 0, 0, 0, 0, 1978, 0, 0, 2210, 0, 0, 2210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1960, 1961, 2049, 2202, 0, 2050, 2298, 2295, 1953, 0, 1953, 2337, 2192, 0, 2189, 2190, 2191, 2799, 2800, 2801, 2802, 2803, 2804, 2805, 2806, 2807, 2808, 2809, 2810, 2811, 2812, 2813, 2814, 0, 2815, 2816, 2817, 2818, 2819, 2821, 2820, 2822, 2823, 2824, 2825, 2826, 2827, 2266, 2829, 2830, 2831, 2832, 2833, 2834, 2835, 2836, 2837, 2838, 2839, 2840, 2841, 2842, 2843, 2844, 2845, 2846, 2847, 2848, 2849, 2850, 2851, 2852, 2853, 2854, 2855, 2856, 2857, 2858, 2859, 2860, 2861, 2862, 2863, 2864, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2872, 2873, 2874, 2875, 2876, 2877, 2878, 2879, 2880, 2881, 2882, 2883, 2884, 2885, 2886, 2887, 2888, 2889, 2890, 2891, 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, 2970, 2971, 2972, 2973, 2974, 2975, 2976, 2977, 2978, 2979, 2980, 1993, 2981, 2982, 2983, 2984, 2985, 2986, 2987, 2988, 2989, 2990, 2991, 2992, 2993, 2994, 2995, 2996, 2997, 2998, 2999, 3000, 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, 1995, 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, 3069, 3067, 3068, 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, 3126, 3125, 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, 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, 0, 2186, 2187, 2188, 2180, 2181, 2182, 2183, 2184, 2185, 2196, 0, 0, 2272, 2338, 0, 2139, 0, 1975, 0, 0, 1786, 2293, 0, 2291, 2254, 1786, 267, 268, 264, 0, 0, 216, 217, 215, 0, 237, 236, 241, 242, 208, 240, 0, 235, 219, 2126, 2125, 218, 207, 226, 204, 202, 222, 224, 225, 205, 203, 261, 0, 0, 0, 366, 1553, 1540, 0, 0, 2266, 0, 2200, 0, 0, 2198, 0, 0, 0, 1783, 0, 1687, 0, 1691, 0, 0, 0, 1928, 1927, 1880, 1876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 934, 0, 1896, 0, 1849, 2320, 2321, 2264, 1719, 1553, 0, 1549, 1682, 1681, 1724, 1725, 1093, 1680, 1753, 1754, 0, 0, 0, 0, 1779, 1777, 1744, 1735, 1743, 0, 0, 1741, 0, 1745, 1956, 1772, 1669, 1729, 1730, 1733, 1668, 0, 1775, 0, 1624, 1773, 1734, 1608, 0, 1586, 0, 0, 1834, 0, 0, 1456, 0, 0, 0, 1122, 1124, 0, 1123, 0, 1126, 0, 1135, 0, 0, 1121, 1140, 0, 1129, 1127, 0, 1496, 0, 0, 0, 0, 0, 1476, 0, 0, 0, 2606, 255, 1479, 1484, 1471, 1482, 0, 0, 0, 0, 0, 1052, 1051, 0, 0, 1075, 0, 0, 500, 1503, 522, 0, 363, 0, 0, 0, 0, 0, 0, 0, 0, 816, 813, 0, 0, 812, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 690, 0, 1301, 0, 294, 0, 1161, 0, 1160, 0, 1165, 0, 0, 1162, 1157, 1158, 2571, 2581, 2612, 257, 1163, 1193, 0, 1192, 1188, 0, 1104, 0, 1105, 0, 0, 0, 0, 0, 2422, 2448, 302, 325, 0, 1300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, 0, 350, 349, 0, 0, 0, 0, 0, 355, 0, 333, 0, 334, 0, 354, 0, 0, 0, 633, 634, 0, 0, 0, 1301, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 1210, 0, 743, 0, 0, 2571, 1189, 0, 1383, 0, 2605, 1384, 1387, 533, 0, 533, 1389, 0, 0, 1386, 1388, 0, 0, 169, 0, 164, 168, 0, 0, 2571, 1190, 0, 0, 0, 0, 0, 616, 617, 630, 0, 621, 622, 619, 623, 624, 0, 0, 0, 0, 0, 0, 0, 615, 0, 0, 712, 711, 715, 0, 0, 0, 0, 0, 0, 1392, 0, 0, 1184, 0, 0, 1391, 1399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1244, 1243, 0, 0, 0, 0, 1311, 0, 858, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 730, 0, 729, 0, 165, 170, 0, 0, 0, 0, 0, 0, 0, 0, 230, 1445, 1451, 1723, 1723, 1723, 2063, 0, 0, 0, 0, 1722, 2257, 2260, 1524, 1530, 1523, 1522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 408, 409, 411, 0, 0, 0, 0, 832, 0, 835, 838, 1467, 484, 0, 0, 657, 690, 0, 0, 464, 178, 0, 0, 0, 0, 745, 0, 1184, 1183, 138, 187, 189, 462, 0, 188, 190, 192, 193, 194, 191, 195, 0, 709, 713, 0, 0, 0, 0, 653, 0, 0, 0, 0, 0, 0, 0, 1854, 0, 0, 163, 0, 0, 606, 610, 0, 0, 0, 0, 464, 572, 377, 2448, 0, 533, 0, 2448, 0, 1072, 0, 819, 0, 0, 0, 1146, 1146, 0, 0, 759, 758, 0, 0, 0, 0, 0, 0, 1654, 366, 1144, 0, 1490, 0, 366, 937, 366, 1108, 177, 2315, 0, 899, 0, 0, 0, 0, 366, 1212, 887, 366, 173, 366, 366, 656, 0, 366, 175, 0, 0, 366, 931, 366, 2280, 0, 366, 1579, 2448, 533, 1557, 984, 993, 992, 990, 989, 985, 0, 1004, 0, 532, 0, 0, 0, 0, 0, 1025, 1026, 0, 0, 1022, 1027, 0, 1029, 1013, 1015, 1023, 1024, 1030, 1019, 1018, 1031, 1032, 0, 0, 1050, 724, 0, 0, 0, 0, 1618, 0, 1616, 0, 1832, 1620, 1609, 1569, 0, 1568, 0, 599, 1071, 1071, 0, 0, 1001, 0, 0, 366, 1435, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2215, 0, 2216, 0, 0, 2250, 2246, 0, 0, 0, 0, 0, 2220, 0, 2223, 2224, 2225, 2222, 2226, 2221, 0, 0, 2227, 0, 0, 0, 0, 0, 0, 0, 0, 2206, 2209, 0, 0, 2678, 0, 0, 0, 0, 2021, 0, 0, 2173, 0, 2206, 0, 0, 0, 0, 0, 0, 0, 2202, 2242, 0, 498, 0, 2013, 0, 0, 0, 2124, 0, 2121, 0, 0, 0, 0, 2263, 0, 2299, 0, 2296, 1957, 1971, 1972, 1973, 1976, 2271, 0, 2265, 0, 0, 1958, 1984, 0, 2243, 2009, 0, 2014, 1999, 2228, 2229, 2230, 2231, 2016, 0, 1992, 1997, 2001, 0, 1980, 0, 1977, 0, 2266, 2201, 0, 2199, 0, 1968, 1969, 1970, 1962, 1963, 1964, 1965, 1966, 1967, 1974, 2177, 2175, 2176, 0, 0, 0, 2147, 0, 0, 1996, 2440, 2476, 0, 1712, 1712, 1712, 1700, 1710, 2270, 1849, 1723, 1849, 2276, 0, 0, 1953, 0, 1830, 939, 940, 938, 1526, 1539, 1553, 2203, 1547, 1689, 0, 0, 0, 1897, 1910, 0, 1938, 1937, 1939, 1939, 0, 1881, 0, 1922, 1947, 1948, 1949, 1950, 1951, 1952, 0, 1946, 1890, 935, 0, 2568, 2698, 0, 1810, 1785, 1787, 1797, 1810, 1817, 1810, 2066, 1847, 2067, 2277, 0, 1756, 2317, 1528, 1551, 0, 1091, 1092, 0, 1096, 2678, 2568, 0, 0, 0, 0, 1746, 1780, 0, 1771, 0, 2287, 1747, 2286, 1748, 1751, 1752, 1742, 1781, 1622, 0, 1776, 1673, 1672, 0, 1852, 0, 0, 0, 1600, 1588, 0, 0, 1835, 0, 1786, 1626, 0, 2263, 1784, 1350, 1245, 1312, 1125, 0, 1898, 1136, 0, 1120, 0, 1119, 1898, 0, 1137, 0, 1898, 1351, 1246, 1313, 1352, 1247, 1314, 1353, 1487, 1248, 1486, 1474, 1473, 1472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 797, 2448, 366, 1501, 1354, 0, 1249, 362, 1502, 1315, 1506, 815, 814, 0, 0, 1316, 0, 666, 671, 0, 673, 674, 2371, 2430, 675, 678, 679, 0, 681, 670, 669, 0, 0, 0, 0, 0, 687, 692, 0, 0, 0, 0, 0, 0, 1155, 1156, 1355, 1252, 0, 1317, 0, 1103, 0, 1253, 179, 0, 0, 282, 2448, 304, 0, 482, 797, 0, 1303, 301, 331, 0, 346, 341, 342, 340, 2448, 366, 2448, 366, 0, 0, 0, 0, 0, 343, 338, 339, 335, 0, 0, 348, 2343, 2414, 2582, 0, 698, 700, 0, 705, 351, 1273, 373, 372, 371, 0, 356, 0, 378, 381, 0, 353, 332, 330, 327, 297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1205, 0, 1358, 1318, 0, 1340, 0, 0, 0, 0, 737, 1361, 1259, 1321, 0, 533, 0, 0, 548, 548, 533, 1372, 1260, 167, 1290, 156, 0, 0, 152, 0, 0, 0, 0, 144, 1362, 1261, 1322, 0, 0, 1363, 1262, 0, 0, 287, 609, 620, 625, 1267, 629, 626, 1330, 627, 1370, 1263, 0, 1366, 1293, 1325, 592, 1184, 1184, 1373, 1393, 1264, 1184, 0, 1301, 0, 276, 278, 0, 1071, 0, 1265, 0, 1323, 1365, 1292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1509, 0, 0, 0, 0, 0, 0, 366, 0, 0, 0, 1303, 2448, 366, 1364, 0, 1298, 0, 1338, 0, 0, 399, 0, 1291, 1301, 0, 289, 1269, 0, 1332, 0, 0, 228, 227, 229, 0, 0, 0, 0, 2207, 2208, 0, 2205, 2058, 2259, 0, 1520, 961, 947, 960, 0, 943, 2412, 0, 946, 948, 0, 0, 0, 949, 953, 954, 0, 945, 942, 944, 0, 410, 0, 0, 754, 755, 0, 0, 0, 0, 834, 0, 0, 1499, 0, 141, 664, 0, 0, 0, 659, 689, 694, 0, 0, 0, 0, 463, 467, 471, 472, 473, 0, 0, 0, 0, 157, 142, 0, 876, 0, 533, 0, 747, 1184, 1376, 0, 189, 182, 0, 0, 710, 0, 1548, 0, 0, 587, 590, 589, 0, 377, 829, 827, 826, 828, 850, 825, 0, 1853, 1855, 0, 0, 0, 0, 0, 0, 599, 466, 0, 0, 536, 0, 575, 0, 0, 0, 0, 572, 0, 0, 0, 2325, 0, 846, 818, 0, 1114, 0, 1132, 1115, 0, 0, 0, 0, 1169, 1176, 1145, 1170, 1147, 1176, 0, 0, 760, 764, 763, 767, 765, 0, 761, 638, 1660, 1661, 0, 1202, 0, 0, 1495, 0, 1493, 898, 1196, 366, 0, 366, 0, 366, 1204, 1198, 1200, 1401, 0, 896, 0, 0, 889, 891, 0, 893, 0, 1005, 535, 0, 0, 0, 0, 0, 0, 1021, 636, 1028, 0, 0, 0, 1043, 1038, 1040, 0, 1044, 723, 0, 0, 1619, 1612, 1614, 1613, 0, 0, 1610, 2212, 888, 0, 605, 0, 0, 0, 0, 1050, 0, 1045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1717, 2213, 2214, 0, 0, 0, 2247, 0, 0, 2099, 0, 2071, 2073, 0, 2085, 0, 2100, 2056, 2101, 2075, 2077, 2086, 0, 0, 2193, 0, 2089, 2088, 0, 2023, 2024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2038, 2090, 2172, 0, 0, 0, 2092, 2091, 0, 0, 2241, 0, 0, 0, 2097, 499, 2102, 0, 0, 0, 0, 2108, 0, 2129, 0, 0, 0, 2046, 2203, 0, 0, 0, 0, 0, 0, 0, 0, 2015, 2000, 2018, 1994, 1998, 2002, 0, 2017, 0, 0, 1988, 0, 0, 1986, 2010, 1982, 0, 0, 2011, 0, 0, 0, 2064, 0, 0, 1712, 1712, 1712, 1712, 1709, 0, 0, 0, 1756, 0, 1756, 200, 0, 238, 223, 1525, 1690, 1699, 1916, 0, 1934, 1932, 1877, 1882, 1955, 1810, 1817, 1810, 0, 0, 1675, 0, 1797, 0, 1809, 1795, 1808, 0, 0, 1823, 1821, 0, 1823, 0, 1823, 0, 1789, 0, 1813, 1791, 1808, 1793, 0, 1839, 2278, 1848, 0, 1769, 1726, 0, 2194, 1096, 0, 1728, 1750, 1749, 0, 1739, 0, 1778, 1736, 1623, 1607, 0, 1605, 1592, 1594, 1593, 0, 0, 1595, 2263, 0, 1605, 1587, 0, 1631, 0, 0, 1852, 0, 1630, 0, 1898, 1117, 1118, 0, 1141, 0, 1055, 1056, 0, 1054, 0, 0, 0, 521, 1074, 0, 0, 0, 797, 0, 0, 525, 0, 1504, 0, 1371, 1289, 668, 0, 0, 0, 0, 683, 642, 684, 686, 0, 0, 685, 688, 691, 1301, 0, 295, 1275, 0, 1336, 1149, 0, 0, 1106, 0, 0, 0, 0, 0, 0, 481, 694, 326, 0, 0, 0, 0, 386, 0, 306, 318, 384, 324, 0, 358, 0, 329, 0, 322, 344, 336, 345, 337, 357, 359, 0, 702, 703, 701, 697, 0, 704, 706, 0, 375, 0, 0, 0, 352, 0, 1357, 0, 1301, 0, 291, 1271, 0, 1334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1339, 0, 0, 0, 0, 742, 0, 739, 0, 548, 0, 1385, 0, 1382, 1380, 548, 0, 0, 147, 148, 146, 0, 155, 0, 0, 0, 0, 0, 0, 1394, 1395, 1396, 0, 0, 0, 0, 0, 0, 393, 0, 298, 300, 299, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, 368, 0, 853, 0, 0, 0, 402, 0, 0, 1349, 0, 0, 0, 0, 0, 1356, 1254, 2061, 2062, 2059, 1723, 2258, 0, 0, 0, 958, 0, 0, 0, 0, 413, 414, 141, 412, 435, 0, 797, 0, 0, 831, 836, 844, 2512, 2180, 2181, 842, 837, 839, 841, 843, 840, 0, 0, 0, 0, 503, 0, 0, 0, 490, 0, 0, 500, 483, 486, 487, 0, 0, 660, 663, 661, 662, 0, 682, 0, 466, 510, 562, 0, 159, 0, 0, 160, 158, 0, 0, 377, 744, 0, 741, 1375, 0, 185, 0, 714, 0, 0, 0, 0, 0, 1184, 652, 0, 849, 851, 823, 0, 694, 0, 0, 611, 0, 533, 1580, 594, 0, 564, 466, 562, 571, 0, 0, 579, 376, 0, 0, 599, 377, 0, 0, 1075, 0, 845, 0, 0, 1113, 0, 0, 0, 1166, 1171, 1167, 0, 1146, 1128, 0, 1168, 0, 0, 1174, 1099, 1148, 1100, 1417, 1418, 1415, 1416, 0, 0, 0, 0, 0, 0, 1651, 0, 0, 1491, 0, 900, 0, 883, 0, 885, 366, 731, 0, 366, 0, 0, 0, 0, 0, 0, 1020, 0, 1014, 1016, 1041, 0, 0, 1050, 1047, 0, 0, 1617, 1615, 597, 0, 1236, 1237, 1050, 0, 366, 1049, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2217, 0, 2249, 2245, 0, 2068, 2219, 2218, 0, 0, 0, 2173, 0, 0, 2022, 2034, 2035, 2036, 2234, 0, 2041, 0, 2031, 2032, 2033, 2025, 2026, 2027, 2028, 2029, 2030, 2037, 2238, 2237, 0, 0, 2094, 2095, 2096, 2240, 2103, 0, 2361, 2130, 0, 2107, 2123, 2122, 0, 0, 0, 2110, 0, 0, 2119, 0, 2174, 2300, 2297, 1959, 0, 0, 1985, 2244, 2003, 0, 2019, 1981, 2193, 0, 0, 0, 0, 0, 1990, 0, 0, 0, 2150, 2145, 2146, 2170, 0, 0, 0, 0, 0, 0, 1703, 1702, 1708, 1769, 2058, 1769, 0, 0, 1878, 1796, 1792, 1794, 0, 2693, 0, 1799, 1806, 0, 1788, 0, 1822, 1818, 0, 1819, 0, 0, 1820, 0, 0, 1790, 0, 1806, 0, 1846, 1715, 0, 2141, 0, 1727, 1094, 1095, 1737, 0, 1740, 2391, 1850, 0, 1606, 0, 0, 0, 1597, 1603, 1585, 0, 0, 0, 1627, 1605, 1628, 1138, 0, 0, 1130, 1061, 1062, 1065, 1063, 1060, 1064, 0, 0, 0, 797, 0, 0, 543, 0, 1088, 1088, 0, 0, 527, 584, 0, 800, 0, 0, 0, 798, 366, 1250, 0, 0, 0, 0, 643, 1369, 1251, 0, 0, 0, 0, 1150, 1304, 0, 0, 1274, 0, 303, 480, 479, 484, 0, 0, 309, 319, 0, 314, 0, 1302, 0, 0, 0, 0, 313, 316, 388, 0, 385, 0, 366, 366, 360, 699, 374, 379, 380, 383, 1309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 877, 860, 0, 0, 878, 879, 0, 0, 0, 1207, 1208, 1206, 1341, 1342, 1347, 1344, 1343, 1346, 1348, 1345, 0, 1257, 0, 0, 735, 1305, 1377, 1379, 1378, 0, 1381, 153, 150, 149, 151, 154, 1306, 1287, 1268, 1331, 593, 0, 0, 0, 1266, 0, 1324, 0, 1283, 1277, 0, 0, 0, 0, 0, 1368, 1297, 1329, 1367, 1295, 1327, 1294, 1326, 1296, 1328, 1288, 0, 0, 1857, 857, 0, 0, 0, 366, 366, 856, 733, 1270, 0, 1333, 1279, 0, 0, 0, 950, 0, 0, 0, 952, 418, 436, 141, 0, 753, 817, 0, 0, 833, 0, 488, 0, 494, 501, 0, 0, 505, 506, 504, 489, 1184, 533, 1184, 786, 787, 0, 0, 807, 0, 658, 0, 0, 464, 0, 507, 0, 0, 468, 162, 161, 0, 0, 0, 748, 752, 750, 749, 751, 746, 0, 737, 189, 2448, 0, 0, 0, 0, 591, 585, 588, 1390, 824, 0, 1856, 727, 0, 377, 607, 0, 0, 0, 464, 599, 0, 469, 474, 475, 484, 0, 572, 563, 0, 564, 573, 574, 0, 581, 1465, 0, 600, 581, 0, 0, 0, 848, 0, 847, 0, 1116, 1133, 1134, 0, 0, 1176, 0, 0, 1178, 1173, 0, 0, 766, 769, 762, 645, 366, 0, 1494, 366, 366, 1233, 0, 894, 1035, 1036, 1037, 1034, 1033, 637, 0, 1039, 998, 725, 0, 598, 366, 0, 999, 975, 967, 974, 963, 966, 968, 0, 970, 971, 965, 962, 964, 2248, 2084, 2087, 2098, 0, 2172, 2203, 0, 0, 2042, 0, 0, 0, 2093, 2688, 0, 0, 2134, 2135, 0, 2131, 2132, 2127, 2128, 2109, 0, 2501, 2114, 0, 0, 0, 2007, 2005, 2004, 1989, 0, 0, 1987, 1983, 0, 2012, 2136, 0, 2152, 2149, 2169, 2203, 1707, 1706, 1705, 1704, 2141, 2294, 2292, 2141, 239, 1694, 1842, 0, 1845, 0, 0, 1798, 0, 0, 1800, 0, 0, 1802, 1804, 0, 0, 0, 0, 0, 0, 2281, 0, 1768, 0, 1723, 0, 1738, 0, 1604, 1589, 0, 1590, 1596, 0, 0, 0, 0, 0, 1632, 1625, 1131, 1139, 0, 0, 0, 523, 0, 538, 0, 0, 0, 1081, 1090, 1080, 0, 538, 538, 802, 801, 804, 799, 803, 1505, 0, 676, 677, 680, 1276, 0, 1337, 1285, 0, 1621, 305, 476, 312, 0, 0, 0, 307, 387, 389, 308, 311, 315, 368, 328, 321, 0, 0, 0, 1272, 0, 1335, 1281, 1308, 1359, 1255, 1319, 0, 0, 866, 0, 0, 0, 0, 1360, 1256, 1320, 0, 0, 0, 0, 0, 1621, 0, 0, 0, 0, 0, 0, 0, 0, 1514, 0, 0, 367, 855, 854, 368, 401, 1299, 0, 2060, 0, 951, 956, 957, 955, 0, 407, 415, 418, 0, 0, 1224, 1224, 0, 0, 485, 502, 0, 583, 542, 583, 0, 0, 0, 0, 0, 695, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 740, 739, 184, 0, 464, 0, 694, 0, 852, 0, 0, 0, 599, 466, 0, 0, 1577, 465, 0, 0, 477, 0, 575, 564, 572, 0, 0, 596, 0, 1458, 0, 602, 0, 0, 0, 796, 1172, 0, 1186, 0, 1127, 1097, 1181, 0, 1699, 1849, 0, 0, 0, 0, 779, 0, 649, 1225, 1492, 884, 886, 732, 1042, 0, 1046, 1050, 969, 2233, 2174, 2039, 0, 2236, 2235, 2239, 0, 2104, 0, 2105, 2133, 2111, 2115, 0, 2112, 2113, 2008, 2006, 1991, 2138, 0, 1723, 2171, 1677, 1676, 0, 1697, 1847, 0, 0, 1841, 0, 0, 1871, 0, 0, 0, 1807, 1825, 0, 1803, 1801, 0, 1814, 0, 1816, 2390, 2661, 2565, 0, 1755, 1757, 1760, 1762, 1761, 1763, 1759, 2140, 2142, 0, 1734, 2195, 1851, 0, 0, 0, 1076, 0, 0, 1633, 1634, 1629, 1043, 0, 366, 1088, 0, 1184, 544, 2512, 545, 1087, 1089, 1093, 0, 1184, 1184, 672, 0, 0, 284, 0, 310, 320, 370, 382, 0, 1621, 0, 0, 864, 873, 873, 861, 0, 0, 880, 1258, 736, 0, 547, 0, 279, 1284, 1278, 0, 0, 0, 1516, 1517, 0, 0, 0, 0, 0, 1307, 366, 1280, 959, 0, 438, 445, 419, 423, 1508, 0, 1508, 0, 420, 424, 1508, 1508, 417, 1849, 434, 1224, 0, 1221, 1220, 531, 613, 0, 0, 492, 0, 553, 491, 0, 808, 0, 0, 693, 0, 466, 562, 0, 520, 511, 512, 513, 514, 516, 515, 517, 518, 519, 509, 508, 0, 694, 870, 377, 1465, 734, 0, 0, 707, 0, 694, 0, 1580, 595, 564, 466, 562, 470, 484, 0, 579, 572, 575, 0, 576, 0, 580, 0, 0, 0, 599, 1518, 1075, 0, 0, 797, 1185, 1146, 0, 0, 1175, 1179, 1180, 0, 0, 0, 0, 1228, 773, 774, 768, 770, 0, 781, 785, 644, 0, 0, 648, 639, 694, 366, 0, 2040, 0, 0, 2117, 2116, 0, 2156, 0, 0, 0, 1688, 1840, 1843, 0, 1874, 0, 0, 0, 0, 1860, 0, 1805, 0, 0, 1815, 0, 0, 0, 1764, 0, 0, 0, 1773, 0, 1602, 1849, 0, 1599, 0, 1642, 0, 1635, 1057, 0, 1058, 1082, 0, 583, 0, 1093, 1096, 533, 583, 583, 1286, 0, 613, 0, 323, 0, 292, 1282, 0, 0, 875, 875, 0, 0, 0, 0, 0, 0, 395, 0, 0, 1510, 0, 1511, 1512, 1515, 403, 416, 0, 443, 0, 441, 440, 442, 0, 431, 0, 0, 0, 0, 0, 0, 406, 1219, 1223, 1222, 0, 493, 0, 495, 0, 0, 539, 540, 541, 0, 497, 549, 550, 805, 0, 810, 0, 696, 0, 0, 694, 561, 718, 0, 0, 0, 1459, 0, 0, 586, 728, 1465, 599, 572, 0, 564, 478, 0, 581, 575, 579, 577, 578, 0, 1462, 0, 601, 0, 1084, 795, 0, 1176, 1187, 1182, 1177, 1421, 0, 0, 771, 776, 775, 1508, 780, 0, 0, 0, 647, 646, 722, 1000, 2232, 2120, 2106, 2118, 2151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1872, 1873, 1858, 0, 0, 1862, 1812, 1838, 0, 0, 0, 1758, 2143, 2144, 2316, 1591, 1601, 1077, 0, 0, 0, 1642, 0, 0, 548, 0, 1096, 1078, 542, 797, 797, 1621, 317, 369, 0, 0, 0, 871, 874, 862, 863, 882, 881, 738, 1621, 0, 391, 390, 0, 394, 0, 439, 448, 0, 446, 421, 426, 0, 430, 428, 427, 422, 425, 530, 0, 0, 0, 0, 0, 0, 551, 0, 552, 0, 809, 0, 0, 0, 720, 869, 0, 0, 464, 694, 1460, 1578, 575, 564, 572, 0, 0, 566, 1088, 1088, 451, 579, 581, 1463, 1464, 0, 0, 500, 0, 1098, 1420, 1419, 1699, 0, 0, 0, 782, 783, 778, 0, 0, 2648, 2391, 2620, 0, 2168, 2157, 2168, 2168, 2148, 0, 0, 0, 1844, 0, 1861, 1864, 0, 0, 0, 1870, 1863, 1865, 0, 1824, 0, 1836, 1766, 0, 1765, 1849, 1641, 0, 0, 366, 537, 797, 546, 1079, 553, 526, 524, 285, 1621, 865, 0, 280, 0, 396, 1513, 444, 0, 429, 612, 496, 582, 558, 0, 557, 0, 555, 554, 806, 811, 0, 694, 859, 1465, 708, 579, 572, 575, 0, 565, 0, 1090, 1090, 581, 449, 0, 0, 377, 0, 1403, 1699, 1402, 1404, 1412, 1409, 1411, 1410, 1408, 0, 1231, 1232, 772, 777, 0, 0, 0, 2161, 2160, 2159, 2163, 2162, 0, 2155, 2153, 2154, 0, 0, 0, 0, 1867, 1868, 1869, 1866, 1811, 0, 1767, 1598, 1644, 0, 0, 1636, 1637, 0, 1059, 528, 797, 293, 872, 0, 447, 556, 533, 533, 694, 719, 1461, 581, 575, 579, 1088, 567, 1089, 569, 568, 453, 1084, 1085, 0, 581, 785, 0, 1413, 1407, 1675, 1662, 0, 0, 784, 0, 0, 0, 2165, 0, 2166, 0, 0, 0, 0, 0, 0, 1639, 0, 0, 0, 1638, 529, 0, 560, 559, 721, 452, 579, 581, 1090, 500, 1083, 0, 1849, 0, 1405, 1699, 0, 0, 790, 2158, 2164, 2167, 1693, 1692, 0, 0, 1696, 0, 1837, 1643, 1640, 0, 0, 0, 0, 1645, 392, 581, 450, 570, 377, 1086, 1066, 0, 1406, 0, 0, 792, 0, 788, 791, 793, 794, 0, 0, 1859, 1649, 0, 0, 0, 454, 581, 0, 0, 0, 756, 0, 1723, 0, 0, 0, 0, 1849, 0, 0, 0, 789, 0, 0, 1646, 1650, 0, 1647, 1067, 790, 1229, 1230, 0, 1695, 0, 0, 0, 757, 1648 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 57, 58, 59, 60, 61, 62, 1588, 2975, 2829, 3765, 3766, 63, 64, 1584, 65, 66, 67, 68, 1498, 69, 1081, 1837, 2989, 70, 2665, 826, 827, 828, 2530, 2531, 2920, 2532, 2519, 1348, 1783, 1520, 800, 801, 1480, 1521, 72, 73, 1342, 2508, 74, 75, 76, 1551, 1645, 1552, 1553, 1492, 1883, 4833, 5593, 3555, 2784, 3813, 3556, 3557, 4199, 4200, 4289, 5607, 5608, 77, 1661, 1662, 78, 79, 2957, 3731, 4342, 5199, 5200, 5436, 639, 4856, 4857, 5423, 5424, 5621, 5772, 5773, 2990, 670, 3808, 4426, 3756, 4927, 3757, 4928, 3758, 4929, 4189, 4190, 3742, 4373, 4374, 2028, 4869, 4375, 3759, 4888, 5470, 3760, 2684, 5636, 3024, 1955, 1953, 5371, 5449, 4687, 4688, 4262, 5645, 5646, 5647, 5893, 4890, 4933, 4934, 5809, 5810, 3811, 4432, 4940, 5257, 5447, 3453, 81, 3784, 3785, 82, 733, 1859, 3910, 734, 3027, 671, 735, 2991, 87, 3017, 5638, 3018, 1614, 2843, 4355, 3888, 88, 1108, 4164, 5282, 5530, 5531, 724, 89, 1845, 90, 91, 2970, 3749, 92, 2701, 3470, 93, 94, 3489, 3490, 3491, 95, 4383, 5218, 1554, 3544, 3545, 3546, 3547, 4220, 96, 1840, 2998, 2999, 97, 98, 99, 3128, 3129, 100, 2906, 101, 102, 103, 104, 4256, 4789, 4904, 3586, 3772, 4399, 4902, 105, 3735, 2992, 3045, 3846, 3847, 5280, 5522, 5523, 5524, 5696, 5928, 5526, 5698, 5831, 5700, 4879, 6060, 6061, 5507, 4153, 4701, 107, 4880, 4881, 5651, 108, 2699, 109, 110, 1814, 2963, 2964, 4356, 3034, 3821, 3822, 4412, 4413, 111, 3673, 112, 4765, 4766, 672, 5659, 5599, 5758, 113, 114, 4769, 4770, 115, 116, 117, 118, 119, 725, 1043, 1044, 727, 1163, 1164, 3425, 1125, 120, 2540, 121, 3711, 122, 1234, 4992, 123, 759, 1179, 1180, 2993, 125, 769, 3147, 771, 3113, 3114, 1971, 3892, 3893, 4500, 126, 127, 3125, 3150, 128, 1485, 2675, 2676, 4682, 2994, 673, 1219, 3031, 3448, 5359, 5110, 5360, 5820, 5984, 5111, 5377, 3369, 4102, 130, 674, 1526, 2740, 1131, 1132, 3038, 3826, 2645, 2646, 1684, 4453, 2648, 3828, 2649, 1459, 2650, 1118, 1119, 3834, 3835, 3836, 3837, 4449, 4459, 4460, 5274, 5515, 4456, 1833, 5268, 5269, 131, 1523, 2737, 132, 133, 134, 1567, 968, 1141, 1142, 135, 686, 687, 136, 5441, 137, 1121, 138, 5278, 139, 140, 791, 792, 141, 142, 2754, 4202, 143, 1524, 144, 145, 3580, 3581, 4781, 146, 147, 148, 2815, 2816, 149, 150, 151, 152, 153, 5918, 5987, 5988, 5989, 4467, 5825, 154, 1211, 155, 156, 157, 158, 196, 1009, 1010, 1011, 921, 2995, 5259, 160, 161, 1481, 1482, 1483, 1484, 2670, 162, 163, 164, 3856, 3857, 165, 166, 167, 168, 1817, 169, 170, 5414, 171, 172, 1787, 173, 174, 1017, 1018, 1019, 1020, 1785, 3317, 633, 845, 1375, 1381, 1424, 1425, 1426, 176, 737, 177, 1214, 1048, 738, 1172, 179, 739, 2627, 3399, 4117, 4118, 4119, 4122, 5094, 4659, 740, 3395, 182, 1978, 3134, 3137, 3391, 741, 3405, 3406, 3407, 4126, 742, 5363, 5364, 5739, 5957, 5958, 6011, 6047, 743, 761, 1111, 3049, 744, 1309, 188, 189, 190, 901, 848, 849, 3322, 5320, 5545, 192, 2500, 3300, 778, 1430, 889, 890, 891, 910, 2930, 2593, 2594, 2618, 2619, 1439, 1440, 2606, 2610, 2611, 3382, 3375, 2599, 4096, 5344, 5345, 5346, 5347, 5348, 5349, 4648, 2614, 2615, 1442, 1443, 1444, 2623, 193, 2583, 3350, 3351, 3352, 4073, 4074, 5857, 4088, 4084, 4633, 5071, 3353, 837, 1209, 1451, 4641, 5859, 3354, 5060, 5061, 5324, 4092, 3361, 4113, 3796, 3797, 3798, 3355, 5553, 5554, 5854, 5855, 5326, 5327, 2651, 1404, 875, 1310, 876, 1417, 1311, 1391, 878, 1312, 1313, 1314, 881, 1315, 1316, 1317, 884, 1383, 1318, 1319, 1400, 1413, 1414, 1376, 5328, 1321, 1322, 1323, 3357, 1324, 4578, 5032, 5018, 3226, 3227, 2526, 4574, 3996, 4568, 2495, 3290, 5083, 5351, 5352, 4036, 4603, 5046, 5315, 5713, 5838, 5839, 5939, 1325, 1326, 1327, 3287, 2489, 971, 1328, 4358, 2491, 3217, 3195, 1687, 3196, 1981, 2002, 3166, 3183, 3184, 3264, 3197, 3205, 3210, 3218, 3251, 1329, 3168, 3169, 3935, 2004, 1330, 1015, 1690, 1016, 1419, 3246, 1338, 1339, 1332, 1972, 838, 5067, 1167, 1770, 775, 1333, 1334, 1335, 1336, 1560, 942, 1134, 1135, 892, 894, 895, 2587, 629, 621, 944, 3548, 2492, 630, 623, 624, 1775, 2493 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -5539 static const int yypact[] = { 8508, 1611, 21059, -5539, -5539, 1611, 65898, -5539, 75478, 1337, 190, 102, 185, 19937, 75957, 84579, 416, 341, 14567, 1611, 84579, 2369, 56318, 71167, 891, 84579, 1141, 594, 56318, 84579, 85058, 1092, 1153, 786, 85537, 76436, 69730, 1138, 84579, 1321, 1419, 86016, 76915, 1145, 77394, 594, 52035, 127, 1099, 86495, 84579,108459, 1419, 77873, 77873, 77873, 1844, 1863, 1413, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 1373, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 2097, -5539, 825, 2493, 1417, 182, 1466, -5539, -5539, 2014, 65898, 84579, 84579, 84579, 1776, 84579, 1635, 84579, 774, 65898, 61587, 78352, 1721, 1772, 48101, 86974, -5539, 65898, 84579, 59192, 65898, 84579, 84579, 87453, 84579, 87932, 84579, 1578, 73562, 84579, 1887, 84579, 84579, 59671, 88411, 2098, 926, 236, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 1878, 1707, -5539, 254, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 64461, 84579, 20566, 1141, 2014, -5539, 1844, 84579, 2146, 84579, 1900, 88890, 84579, -5539, 84579, 1987, 89369, 813, 1870, 61587, 1898, 48597, 2091, 84579, 84579, 61587, 89848, 90327, 90806, 84579, 84579, -5539, -5539, 2087, 84579, -5539, 2234, 62066, 1910, 2238, 2374, 2320, 1306, -5539, 78831, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 65419, 341, -5539, -5539, 2291, 66377, 2370, -5539, -5539, 91285,108924, 2143, -5539, 839, 66856, 62545, 2525, 2155, 49093, 2557, -5539, 67335, -5539, 63024, 67814, -5539, -5539, -5539, -5539, -5539, 91764, -5539, 92243, 2254, 2370, -5539,109389, 63503, -5539, 2413, 92722, 93201, 93680, 2014, 2152, 2051, 1386, 42763, -5539, -5539, -5539, 2176, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 267, 866, 284, 231, 305, -5539, -5539, 237, 239, 243, 267, 2638, 2638, -5539, 84579, -5539, -5539, 866, 67, 2275, 2170, 2170, 2170, 2388, 33, -5539, 2170, 2329, -5539, -5539, -5539, -5539, 77394, -5539, 2181, 1141, 2232, 2682, 2302, -5539, -5539, -5539, -5539, -5539, 64461, 2684, 2684, 84579, -5539, -5539, 2731, 2304, 2576, 2312, -5539, -5539, -5539, 2511, 2519, 2540, 117, 1141, 263, -5539, 2665, -5539, 2589, 29048, 29048, 1141, 79310, 94159, 228, 64940, 2150, 79789, 2359, 1523, 2563, -5539, -5539, -5539, 677, -5539, 2835, 2404, 2671, 2312, 926, 44689, -5539, -5539, 2419, 1707, 77394, -5539, -5539, -5539, 64461, 2746, 31523, 84579, 2417, -5539, 2422, 2417, -5539, -5539, 2484, -5539, 2484, 2484, 2428, 2428, 2647, 2473, -5539, -5539, -5539, 2020, 2484, 2428, -5539,110319, -5539, 10, 1830, -5539, -5539, 2943, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 2512, -5539, 1013, 1967, -5539, -5539, -5539, 29048, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 2499, 2515, 1417, -5539, 11445, 64461, 84579, 1658, 1658, 2936, 1658, 1546, 1819, -5539, 2762, -5539, 2845, 2811, 2812, 77394, 2537, 318, -5539, 1708, 2543, 1984, 2542, 1735, 1130, -5539, 801, 84579, 294, 2599, 80268, 5610, 2577, 1707, 2604, -5539, -5539, -5539, -5539, 2722, 412, -5539, -5539, -5539, -5539, 2893, 2952, 5979, 355, 80747, -5539, -5539, -5539, -5539, 84579, 84579, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 2642, 1309, -5539, -5539, 2635, 2990, 2866, 6623, 1151, 2960, 2819, 1267, 8638, 2879, 172, 3016, 6419, 1392, 3024, 1789, 2161, 81226, 84579, 2982, 3026, 4344, 1726, 928, 2894, 983, 2960, 3017, 2841, 1267, 3030, 5295, 84579, -5539, 2953, 3066, 676, -5539, 352, -5539, 22669, 31523, 51556, -5539, 1707, 626, -5539, -5539, 55839, -5539, 2747, 2904, 884, 65898, 2695, 84579, 84579, -5539, 108459, 65898, -5539, 2917, 49589, 65898, -5539, 65898, -5539, -5539, 3031,108459, 84579, 84579, -5539, 84579, -5539, -5539, 2699, -5539, -5539, -5539, -5539, -5539, 2170, 84579, 3131,108459, 2932, 271, 1758, 3171, 84579, 2941, 1758, 2750, 94638, -5539, -5539, 1758, -5539, -5539, -5539, 84579, 84579, 2716, 1766, 2931, 777, 1758, 2947, 3172, 3177, 2951, 2800, 2956, 2422, 3140, 2928, 1025, 220, 2094, 1758, 2780, 95117, 95596, 84579, 2782, 84579, 2684, 65898, 2814, 65898, 65898, 84579, 3072, 84579, -5539, 2918, -5539, -5539, 989, -5539, -5539, -5539, -5539, -5539, 3089, -5539, 193, 3091, 2745, 3093, 1600, 3094, 215, -5539, -5539, 2785, -5539, 3096, 251, -5539, 3098, -5539, 2748, 96075, -5539, 96554, 97033, 3100, 253, -5539, 61587, 3101, 251, 3102, 2748, 3104, 251, 3105, 899, 3106, -5539, 1069, 3103, 3108, 215, 3114, 2126, 2748, -5539, 3115, 261, -5539, 3116, 275, -5539, 3118, 2986, -5539, 31523, -5539, 2869, -5539, 1099, 1330, 1386, 866, -5539, 84579, 866, 84579, 866, 84579, 866, 84579, 866, 84579, 84579, 84579, 866, -5539, -5539, -5539, 84579, 2775, 84579, -5539, 84579, -5539, -5539, -5539, 72125, 61587, 72604, -5539, 84579, -5539, 195, 1141, -5539, -5539,108459, 3239, 61587, 2684, 1752, -5539, 84579, 84579, -5539, -5539, -5539, 3053, 84579, 3119, 3120, 72125, 61587, -5539, 97512, -5539, 65419, 3002, 2790, -5539, -5539, -5539, -5539, -5539, 1953, 2300, 268, 2365, 31523, 2794, 268, 268, 2795, 3129, -5539, -5539, -5539, 315, 2797, 2801, -5539, 269, 269, -5539, 2804, 2805, -5539, 270, 2806, 2809, 2393, 2394, 277, 2810, 2815, 2816, 2020, 268, 2820, 31523, -5539, 2822, 269, 2823, 2824, 2825, 2395, 2826, -5539, 2427, 2827, 332, 334, 2832, 2834, -5539, 3033, -5539, 298, 2836, 2838, 2839, 2848, 2849, 2853, 2854, 2856, 31523, 31523, 31523, -5539, 26568, 1707, 2450, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 300, 47605, -5539, 2852, -5539, -5539, 3037, -5539, -5539, 31523, -5539, -5539, 741, -5539, 322, -5539, -5539, -5539, 1707, 3142, 2855, -5539, -5539, 1714, 2859, -5539, 2253, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 63982, 3277, -5539, 478, 1141, 352, 1873, 3244, 53923, 54402, -5539, -5539, 3128, -5539, 84579, -5539, -5539, 1707, 151, 1906, -5539, 2176, 19935, 2078, 2417, 84579, 84579, 3325, -5539, 2864, -5539, -5539, 31523, -5539, -5539, -5539, 2638, -5539, 2484, 2484, -5539, -5539, 3329, 2954, 2955, 2638, -5539, 2638, -5539, 2873, 2875, 2638, 2958, 2959, 2962, -5539, 2867, 2963, 2638, -5539, -5539, 57276, 2071, -5539, 3204, 258, -5539, -5539, -5539, 2083, -5539, 2881, -5539, 2422, -5539, -5539, 1417, 1417, 31523, 1417, 287, 1280, 29543, 32018, 3216, 3109, 1797, 1463, 3220, -5539, 3112, 1546, 1819, 77394, 84579, 77394, 97991, 3014, 31523, -5539, 3328, 2983, 2985, 3036, 52993, -5539, 2987, 2957, 2988, 3043, 2905, 2996, 2997, 3052, -5539, 3181, -5539, -5539, 3001, 3340, 3003, 98470, -5539, -5539, 883, -5539, -5539, -5539, 883, -5539, 2930, 1730, 276, 304, 3005, 403, 235, 3332, -5539, 1107, -5539, -5539, 3061, -5539, 9251, 84579, 3271, 6253, 3141, 355, 3062, -5539, -5539, -5539, 3199, 3022, 84579, 3027, 3154, 355, 336, 98949, -5539, -5539, 84579, -5539, -5539, -5539, -5539, 2721, 3307, 25637, -5539, 2059, 3028, 3009, 3035, 84579, 68772, 2175, 3133, 3163, 1826, 2270, 623, 3092, 84579, 1956, 3173, 84579, 2965, 3039, 3040, 3263, 2966, 490, 3363, 2967, -5539, -5539, -5539, 3331, -5539, 2453, 2461, 3157, -5539, 3264, 3309, 7192, 3023, 3034,107064, -5539, 3057, 52, 50085, 84579, 84579, 3059, 3060, 99428, 2721, 3351, 73083, 73083, 3064, 3065, 44208, 3366, 1780, 3067, -5539, -5539, -5539, 1780, 3068, 3070, 99907, 2721, 3356, 84579, 3071, 3073, 84579,110319, 355, -5539, 3432, 355, 355, 2035, 3433, 3076, 353, 3238, 652, 1758, 2967, 3099, -5539, 3079, 3082, 919, -5539, 3209, 84579, 3085, 3097, 1712, 3186, 1141, -5539, 3188, -5539, 3107, 3189, 3110, 843, 2716, -5539, -5539, 34, 3113, 77394, 3212, 3214, 1956, 424, 877, 2967, -5539, 3111, 3122, 2966, 2966, 84579, 84579, 84579, 84579, 84579, 208, 3470, 3482, 3123, 413, 749, 3032, -5539, 1780, 60150, 3126, -5539, 1780, 84579, 383, 1004, 2967, 1790, 1864, -5539, -5539, -5539, 926, -5539, 31523, 31523, 31523, 3029, -5539, 2138, 19935, 815, -5539, 2341, 7923, 3038, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 84579, 64461, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 84579, -5539, 84579, 3313, 108459, 3314, 3259, 3334, 3335, 355, 84579, 84579, 3336, 3337, 3338,108459, 3342, 3345, 3346, 3260, 3134, 187, 3121, 3049, 3514, 3412, 84579, 57276, -5539, 883, -5539,108459, 3282, 3419, -5539, 84579, 3302, 661, -5539, 3456, 3135, -5539, -5539, 90, 84579, 71646, 2716, -5539, -5539, 3425, 61587, 1323, 3426, 1141, 3130, 3429, 3297, 1141, 61587, 3344, 84579, 84579, 84579, 84579, 139, -5539, 60150, 3316, -5539, 84579, 3319, 3099, 3320, 3548, 99, 2170,100386, 3427,100865, 3124, 84579, 3125, 3125, 3555, 108459, 367, 3369, -5539, -5539, 2124, -5539, 3233, -5539, 65898, -5539, -5539, 65898, -5539, -5539,108459, 84579, 3127,108459,108459, -5539, -5539, 65898, 65898, -5539, 61587, 61587, 3445, 261, 3448, 3164, 3450, 3165, 50085, 50085, -5539, 286, 65898, -5539, 61587, 65898, -5539, 84579, -5539, 84579, -5539, -5539, -5539, -5539,108459, 108459, -5539, 61587, 60150, 3454, 84579, 84579, -5539, 84579, 84579, -5539, 84579, 84579, 2085,101344, 1386, -5539, 84579, -5539, 84579, -5539, 84579, -5539, 84579, -5539, 84579, -5539, -5539, -5539, 84579, -5539, 84579, 2093, -5539, -5539, 2095, 1331, 84579, 84579, 238, 65898, 84579, 3330, 84579, 65898, 65898, 84579, 84579, 84579, 84579, 84579, 3192, 2859, 1098, -5539, 1278, 495, 77394, 3339, -5539, -5539, 2102, 1844, 973, 84579, 1398, -5539, -5539, -5539, -5539, 72604, 71167, 3439, 130, 84579, -5539, -5539, 16184, 31523, 1707, 28548, -5539, -5539, 19935, 3160, 31523, 31523, 3136, 2638, 2638, -5539, 1442, 31523, 31523, 31523, 2638, 2638, 31523, 7833, 31523, 50085, 31523, 36968, 23671, 31523, 31523, 27063, 1183, 2804, 31523, 3362, 37952, 31523, 1873, 3364, 31523, 1873, 7833, 3601, 3601, 2447, 9033, 3145, 1707, -5539, -5539, 1291, 2638, 1291, -5539, 234,108459, 31523, 31523, 31523, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 31523, -5539, 57276, -5539, -5539, -5539, -5539, -5539, -5539, 3205, -5539, -5539, -5539, -5539, -5539, -5539, 5970, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 84579, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 27558, -5539, -5539, -5539, -5539, 3138, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 2776, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 28053, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 3146, -5539, -5539, 31523, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 3206, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 1290, 31523, 31523, 31523, 31523, 31523, 31523, 31523, 31523, 31523, -5539, 31523, 337, -5539, -5539, 3442, 3464, 46, 484, 81705, 29048, 3204, -5539, 22669, -5539, 249, 3204, -5539, -5539, -5539, 84579, 3277, -5539, -5539, -5539, 3217, -5539, -5539, -5539, -5539, -5539, -5539, 210, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 3147, -5539, -5539, -5539, -5539, 3147, -5539, 3139, 3452, 3461, 899, 84579, 2521, 31523, 3205, 279, 84579, 31523, 3138, 2776, 31523, 3146, 31523, 3206, -5539, 31523, -5539, 2108, 1601, 31523, 2129, 3144, -5539, -5539, 3155, 2875, 3158, 3176, 3151, 3153, 2638, 222, 3156, 885, 1248, 3268, 2638, 3402, 3159, -5539, 57276, -5539, 39877, 3210, -5539, -5539, -5539, 1419, 84579, 84579, -5539, 3451, -5539, 3166, -5539, 13608, 3451, -5539, -5539, 37460, 3289, 3446, 3384, -5539, -5539, -5539, 3168, 19935, 32513, 32513, -5539, 2391, 19935, 2400, -5539, -5539, -5539, -5539, -5539, -5539, 1190, -5539, 84579, 153, 3216, 1463, 3234, 959, 3636, 3235, 84579, -5539, 45170, 2147, -5539, 61587, 84579, 84579, 3381, -5539, 3620, -5539,110319, -5539, 3178, -5539,109854,105655, -5539, -5539, 787, -5539, 935, 61587, -5539, 84579, 84579, 61587, 84579, 84579, -5539, 61587, 3230, 84579, 84579, -5539, -5539, -5539, -5539, -5539, 54881, 1224, 71167, 3321, 70209, -5539, -5539, 3184, 84579, 3246, 3465, 3466, 120, -5539, -5539,101823, -5539, 3413, 61587, 84579, 84579, 31523, 3415, 84579, 84579, -5539, 308, 3278, 3279, -5539, 84579, 3284, 65898, 3198,108459, 65898, 50581, 65898, 65898, 3536, 108459, 84579, 84579, 1410, 77394, 443, 1059, 2967, 3434, -5539, 1557, -5539, 61587, -5539, 84579, 3418, -5539, -5539, -5539, 74041, 3665, 3343, -5539, -5539, -5539,102302, -5539, -5539, 3430, -5539, 2163, -5539, 61587, 61587, 84579, 9891,102781, 1455, 3444, -5539, -5539,108459, -5539, 84579, 82184, 84579, 84579, 3485, 84579, 74520, 103260,103739, 765, 1418, 3486, 84579, 74999, 3487, -5539, 3365, 84579, -5539, -5539, 57755, 61587, 84579, 936, 57276, -5539, 3471, -5539, 84579, -5539, 909, -5539, 84579, 4164, 3436, -5539, -5539, 3308, 3323, 84579, 452, 1061, 2967, 3600, 84579, 84579, 3224, 2164, 61587, 84579, 57276, -5539, 3449, 116, 61587, 84579, 74041, -5539, 3453, -5539, 77394, 3535, -5539, 3232, 2170, 2419, 2026, 3232, 61587, 84579, -5539, 3232, 84579, 94159, -5539, 61587, 1317, -5539, 61587, 84579, 74041, -5539, 3455, 3393, 61587, 84579, 8364, -5539, -5539, -5539, 355, -5539, -5539, -5539, -5539, -5539, 84579, 84579, 355, 84579, 84579, 355, 1263, -5539, 61587, 84579, -5539, -5539, -5539, 3367, 61587, 84579, 84579, 267, 84579, -5539, 84579, 61587, 3285, 84579, 84579, -5539, -5539, 84579, 4384, 84579, 84579, 84579, 84579, 84579, 84579, 61587, 84579, -5539, -5539, 1484, 1420, 1882, 1892, 180, 84579, 3547, 84579,104218, 61587, 84579, 84579, 1141, 84579, 57276, 1741, -5539, -5539, 3371, -5539, 61587, 1317, -5539, 10058, 84579, 84579, 84579, 3347, 3350, 232, 3416, -5539, -5539, -5539, 822, 822, 3457, -5539, 31523, 31523, 30038, 3245, -5539, -5539, 31523, 2747, -5539, -5539, -5539, 995, 3710, 995, 104697, 995, 995, 3530, 3310, 3311, 995, 995, 995, 3528, 995, 995, 995, 84579, 3431, -5539, -5539, 3431, 861, 31523, 108459, 84579, -5539, 2171, -5539, 3269, -5539, -5539, 57276, 84579, 327, 857, 3605, 3473, 69251, 2174, 3593, 84579, 3315, 84579, 3724, 3357, 1310, -5539, 2174, 84579, -5539, 2082, 71167, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 84579, -5539, -5539, 3602, 84579, 40358, 3443, -5539, 1141, 2716, 2716, 2716, 2716, 3276, 2716, 84579, 3407, 3627, 2174, 3281, 3629, -5539, 3099, 3630, 1445, 84579, 3503, 69251, 3348, 3326, 3515, 3752, 2170, 1141, 3521, 3507, -5539, 53458, -5539, 2716, 3768, 26102, 4233, 7122, 3509, 3572, -5539, -5539, 3516, 842, 84579, 3612, 3613, 3635, -5539, 193, -5539, 3766, 1600, 3637, 215, -5539, 251, -5539, 2748, -5539, 84579, -5539, 84579, 84579, 84579, 84579, 253, -5539, -5539, 251, 2748, 251, 899, -5539, 3582, 215, 2748, 3435, 3641, 261, -5539, 275, -5539, 3524, 899, -5539, 3540, 2170, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 2186, -5539, 84579, -5539, 3616, 3618, 3619, 3622, 3625, 3312, 3327, 3370, 84579, 3352, 3312, 355, 3353, 3341, -5539, 3352, 3352, 3312, 2859, 2859, 3312, 3327, 60629, 3805, 3660, -5539, 3424, 3349, 3669, 203, -5539, 834, 1247, 3589, -5539, -5539, -5539, -5539,108459, -5539, 61587, 3385, 2684, 2684, 126, 3560, 3355, 60629, 3789, 899, -5539, 65898, 84579,108459, 65898, 3568, 65898, 65898,108459, 84579, 84579, 2188, -5539, 1836, -5539, 1934, 31523, 476, -5539, 15094, 2197, 31523, 3360, 3361, -5539, 3678, -5539, -5539, -5539, -5539, -5539, -5539, 3368, 3679, -5539, 2204, 2211, 2215, 3373, 3374, 7054, 7158, 3375, 15126, 3376, 3377, 3378, 3354, 36968, 36968, 26568, 1143, -5539, 36968, 3380, 3567, 2216, 14030, 3387, 3388, 16627, 30533, 31523, 30533, 30533, 16981, 3390, 3394, -5539, 3733, -5539, 2220, 57276, 3559, 17227, 2221, -5539, 31523, 57276, 7774, 31523, -5539, 31523, -5539, 3396, -5539, -5539, 4724, 4724, 4724, 7833, -5539, 3389, -5539, 36968, 36968, -5539, 2786, 26568, -5539, -5539, 3698, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 2739, -5539, -5539, -5539, 3607, 3137, 50085, 7321, 31523, 293, 31523, 3138, 31523, 3469, 4724, 4724, 4724, 396, 396, 313, 313, 313, 2046, 484, -5539, -5539, -5539, 3372, 3382, 3400, 3574, 3401, 31523, -5539, 2182, 2482, 84579, 3428, 6030, 6455, -5539, -5539, -5539, 3210, 815, 3210, -5539, 926, 2638, 1291, 55360, -5539, -5539, -5539, -5539, -5539, -5539, 84579, 19935, -5539, -5539, 3655, 3403, 2225, -5539, -5539, 2638, -5539, -5539, 1852, 1852, 3405, -5539, 3408, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 3409, -5539, -5539, -5539, 40839, 3734, 3411, 39395, 82663, 3414, 2132, -5539, 82663, 83142, 82663, -5539, 3437, -5539, 1707, 31523, 3731, -5539, -5539, -5539, 31523, -5539, -5539, 1040, 3441, 628, 1105, 2490, 2490, 2391, 1168, -5539, -5539, 3475, -5539, 31523, 2405, -5539, 2507, -5539, -5539, -5539, -5539, 2859, -5539, 3674, -5539, -5539, -5539, 39877, 3467, 3474, 72, 43726, 3631, -5539, 84579, 39877, -5539, 84579, 159, -5539, 3447, -5539, -5539, -5539, -5539, -5539, -5539,105655, 1967, -5539,109854, -5539,109854, -5539, 1967, 3869, -5539,105655, 1879, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 61587, 61587, 3646, 84579, 3645, 3650, 31523, 433, 84579, 3440, 3458, 1469, 3739, 3476, -5539, 3788, 899, -5539, -5539, 3526, -5539, 19935, -5539, -5539, -5539, -5539, -5539, 61587, 84579, -5539, 65419, -5539, -5539,108459, -5539, -5539, 84579, 84579, -5539, -5539, -5539, 108459, -5539, -5539, -5539, 84579, 167, 3531, 3533, 84579, -5539, 832, 3209, 10387, 84579, 84579, 84579, 3736, -5539, -5539, -5539, -5539, 3670, -5539, 3794, -5539,105655, -5539, 2748, 1292, 3541, 2967, 3680, -5539, 3816, 3885, -5539, 3596, 1179, -5539, -5539, 3611, -5539, -5539, -5539, -5539, 3827, 899, 3828, 899, 84579, 84579, 84579, 84579, 3617, -5539, -5539, -5539, -5539, 3621, 3753, -5539, 57276, 57276, 57276, 2237, -5539, -5539, 1141, -5539, -5539, -5539, -5539, -5539, -5539, 3786, -5539, 2241, -5539, 1461, 84579, -5539, -5539, -5539, -5539, -5539, 3834, 61587, 84579, 10389, 84579, 84579, 84579, 3706, 1846, 1465,108459, -5539,107529, -5539, -5539, 2243, -5539, 3504, 84579, 3581, 61587, 3558, -5539, -5539, -5539, 3845, 2170, 3643, 73083, 3550, 3550, 2032, -5539, -5539, -5539, -5539, -5539, 3769, 3699, -5539, 1096, 3701, 61587, 3570, -5539, -5539, -5539, -5539, 3855, 3597, -5539, -5539, 3599, 1080, 2967, 3099, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 3628, -5539, -5539, -5539, -5539, 1351, 1351, -5539, -5539, -5539, 1351, 1503, 426, 1159, 2967, -5539, 348, 1690, 3604, -5539, 3609, -5539, -5539, -5539, 3772, 3777, 3782, 3614, 3623, 3666, 3624, 3626, 3675, -5539, 3633, 3690, 3638, 3695, 3651, 3886, 899,108459, 3761, 1141, 3686, 3888, 899, -5539, 3653, -5539, 3654, -5539, 2247, 4007, -5539, 84579, -5539, 454, 1253, 2967, -5539, 3657, -5539, 61587, 84579, -5539, -5539, -5539, 31523, 3561, 3565, 3573, 19935, 19935, 31523, -5539, -5539, 19935, 3576, -5539, -5539, -5539, -5539,108459, -5539, 84579, 3853, -5539, -5539, 995, 84579, 84579, -5539, -5539, -5539, 84579, -5539, -5539, -5539, 3858, -5539, 380, 380, -5539, -5539, 3893, 9393, 3577, 292, -5539, 57276, 46613, 2090, 422, 1758, -5539, 65419, 84579, 65419, -5539, 857, 3791, 84579, 84579, 84579, 3578, 3579, -5539, -5539, -5539, -5539, 61587, 1257, 61587, 2638, -5539, -5539, 3656, -5539, 84579, 2170, 4083, 3918, 3285, -5539, 4039, 3177, 1323, 1916, 211, 2800, 3976, 2422, 31523, 314, -5539, -5539, 1707, 84579, 3326, -5539, -5539, -5539, -5539, 1141, -5539, 3587, 3585, -5539, 84579, 3923, 84579, 84579, 84579, 84579, 3385, 3591, 84579, 3592,108459, 84579, 2272, 2966, 4055, 3941, 1844, 3348, 3681, 3942, 77394, 3606, 2256, -5539, -5539, 842, -5539, 2267, 170, -5539, 1141, 65419,106599, 3932, -5539, 469, 7122, -5539, -5539, 469, 872, 84579, -5539, -5539, -5539, -5539, 3819, 2065, -5539, 3917, -5539, -5539, 1844, -5539,108459, 3603, -5539, 2271, -5539, -5539, -5539, 261, 3662, 899, 3667, 899, -5539, -5539, -5539, -5539, 84579, -5539, 84579, 60150, -5539, -5539, 84579, -5539, 3952, -5539, -5539, 3744, 3746, 3747, 3748, 3749, 84579, 3312, -5539, 3608, 84579, 84579, 61587, 1470, -5539, -5539, 3824, -5539, -5539, 77394, 3743, -5539, -5539, -5539, -5539, 3965, 3967, -5539, -5539, -5539, 994, -5539, 84579, 84579, 61587, 72125, 132, 61587, -5539, 3901, 3902, 3904, 3905, 355, 3906, 3907, 3908, 3910, 3911, -5539, -5539, -5539, 3632, 17660, 31523, -5539, 3987,108459, -5539, 9629, -5539, -5539, 31523, -5539, 31523, -5539, -5539, -5539, -5539, -5539, -5539, 2303, 31523, -5539, 31523, -5539, -5539, 24172, 4121, 4121, 3634, 108459, 36968, 36968, 36968, 36968, 1453, 2823, 36968, 36968, 36968, 36968, 36968, 36968, 36968, 36968, 36968, 36968, 212, -5539, 3835, 31523, 31523, 31028, -5539, -5539,108459, 3639, 3390, 3640, 3644, 31523, -5539, -5539, -5539, 2286, 38433, 3647, 57276, -5539, 31523, 13682, 2301, 3693, 17987, 1707, 9957, 2491, 31523, 1157, 1781, 31523, 2305, 31523, 3970, -5539, -5539, -5539, -5539, -5539, -5539, 3867, -5539, 31523, 3648, 3333, 36968, 36968, 3847, -5539, 4314, 31523, 26568, -5539, 3457, 3697, 45651, -5539, 24673, 3642, 594, 594, 594, 594, -5539, 84579, 84579, 84579, 3731, 3658, 3731, 352, 3664, -5539, -5539, -5539, -5539, 1844, -5539, 3652, -5539, -5539, -5539, -5539, -5539, 82663, 83142, 82663, 3663, 38914, 25155, 2132, 3668, 84579, -5539, -5539, 3672, 39877, 3926, 3859, -5539, 39877, 3859, 1849, 3859, 3933, 3750, 46132, -5539, -5539, 3673, -5539, 3864, -5539, 2059, 19935, 4100, 3981, -5539, 3676, -5539, 3441, 297, -5539, -5539, -5539, 1185, -5539, 3755, -5539, -5539, -5539, 3414, 33008, 3821, -5539, -5539, -5539, 3729, 2306, -5539, -5539, 4087, 3821, -5539, 1644, -5539, 2317, 45170, 3467, 31523, 1707, 2321, 1890, -5539, -5539,105655, -5539, 3751, 2748, 2748, 2261, 3312, 4011, 2261, 9989, -5539, -5539, 41320, 84579, 84579, -5539, 84579, 84579, 1679, 84579, -5539, 84579, -5539, -5539, -5539, 4152, 3756, 3762, 3966, -5539, 2542, -5539, -5539, 61587, 84579, -5539, -5539, -5539, 460, 1255, 2967, -5539, 3775, -5539, -5539, 3984, 84579, -5539, 4135, 3790, 84579, 4042, 84579, 83621, -5539, 3791, 1679, 3810, 4027, 1486, 2966, 353, 3270, -5539, 1793, -5539, -5539, 3778, -5539, 84579, -5539, 84579, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 3838, -5539, -5539, -5539, -5539, 57755, -5539, -5539, 84579, -5539, 57276, 46613, 57276, -5539, 84579, -5539, 1517, 465, 1303, 2967, -5539, 3792, -5539, 4051, 3793, 3796, 3848, 869, 1221, 3797, 3799, 3857, 3719, 3720, 3721, -5539, 57276, 47109, 3882, 84579, 2748, 3725, 3765, 84579, 3550, 84100, -5539, 3726, -5539, -5539, 3550, 267, 2496, -5539, -5539, -5539, 1141, 2748, 1141, 84579, 84579, 84579, 84579, 267, -5539, -5539, -5539, 4170, 3822, 84579, 84579, 84579, 84579, -5539, 3784, -5539, -5539, -5539, 84579, 84579, 4064, 821, 2142, 61587, 84579, 84579, 61587, 84579, 84579, 84579, 84579, 84579, 84579, 84579, 3946, -5539, 4156, 4081, 2315, 4124, 3815, 84579, -5539, 84579, 1141, -5539, 3209, 84579, 84579, 84579, 84579, -5539, -5539, -5539, -5539, -5539, 3457, -5539, 3735, 4026, 995, -5539, 4036, 4037, 4038, 995, -5539, -5539, 1758, -5539, 492, 84579, -5539, 2399, 84579, -5539, -5539, -5539, 3676, 2453, 2461, -5539, -5539, -5539, -5539, -5539, -5539, 3758, 84579, 84579, 36968, -5539, 1680, 1745, 1215, -5539, 4040, 84579, 3033, -5539, -5539, -5539, 827, 84579, -5539, -5539, -5539, -5539, 3759, -5539, 811, 3591, -5539, 4057, 69251, 2748, 61587, 61587, 2748, -5539,108459, 3763, 3326, -5539, 463, 3849, -5539, 61587, 1323,105176, 3130, 3798, 3978, 10790, 39877, 40358, 1351, -5539, 3767, 3770, -5539, -5539, 84579, 3791, 60150, 2323, 3099, 4229, 101, 2152, -5539, 70688, 3960, 3591, 4057, -5539, 2966, 3985, 3986, -5539, 1844, 84579, 3385, 3326, 1141, 84579, 3246, 46613, -5539, 4270, 2226, -5539,105655, 31523, 31523, -5539, 3771, -5539, 3773, 7122, -5539, 3850, 3774, 4234, 31523, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 3863, 3780, 84579, 84579, 842, 84579, -5539, 3781, 3637, -5539, 3637, -5539, 84579, -5539, 84579, -5539, 899, -5539, 3909, 899, 84579, 84579, 84579, 84579, 84579, 84579, 3312, 355, 3341, -5539, -5539, 4105, 60629, 3660, -5539, 2332, 84579, -5539, -5539, -5539, 4173, -5539, -5539, 130, 4113, 899, -5539, 1005, 1005, 1005, 1005, 4068, 1005, 1005, 1005, 1005, 1005, -5539, 31523, 19935, -5539, 3787, -5539, 19935, 19935, 3795, 10876, 18537, -5539, 2342, 31523, -5539, 576, 576, 576, 1951, 4115, -5539, 2764, 576, 576, 576, 498, 498, 241, 241, 241, 4121, 212, 18686, 18845, 19267, 3800, -5539, -5539, -5539, 3390, -5539, 33503, 1209, 4232, 37952, -5539, -5539, -5539, 3840, 3841, 3803, -5539, 31523, 33998, 3802,110319, 3993, -5539, -5539, 1706, 31523, 31523, 5853, -5539, 7972, 31523, -5539, 5853, 425, 31523, 3015, 3691, 31523, 31523, 4936, 11420, 3806, 31523,106120, -5539, -5539, -5539, 2344, 31523, 84579, 84579, 84579, 84579, -5539, -5539, -5539, 3981, 2500, 3981, 1141, 3807, -5539, -5539, -5539, -5539, 58234, 3809, 3559, 82663, 3811, 84579, 2132, 39877, -5539, -5539, 2334, -5539, 39877, 4078, -5539, 39877, 65898, -5539, 84579, 3813, 84579, -5539, 1658, 31523, 3852, 50085, -5539, -5539, -5539, -5539, 3913, -5539, 4033, 19935, 29048, -5539, 1844, 1989, 84579, 1707, 66, -5539, 31523, 3825, 84579, -5539, 3821, 19935, -5539, 3891, 2352, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 3903, 71167, 4148, -5539, 31523, 2353, -5539, 3862, 4246, 166, 2376, 2383, 1679, -5539, 2402, -5539, 1755, 4122, 230, -5539, 899, -5539,108459, 84579, 84579, 84579, 2905, -5539, -5539, 84579, 84579, 84579, 84579, -5539, -5539, 61587, 84579, -5539, 84579, -5539, -5539, -5539, -5539, 267, 1680, 4138, 4141, 4058, -5539, 355, -5539, 1680, 4059, 267, 84579, -5539, -5539, -5539, 2119, -5539,108459, 899, 899, -5539, -5539, -5539, -5539, -5539, 3843, -5539, 4278, 3930, 84579, 84579, 84579, 84579, 84579, 61587, 84579, 84579, 2638, 2638,108459, 3842, -5539, 2638, 2638, 3844, -5539, 61587, 84579, 84579, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 3928, -5539, 31523, 4274, -5539, -5539, -5539, -5539, -5539, 31523, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 61587, 84579, 3931, -5539, 3934, -5539, 206, -5539, -5539, 84579, 84579, 84579, 84579, 4196, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 4195, 84579, -5539, -5539, 1141, 1141,108459, 899, 899, -5539, -5539, -5539, 3936, -5539, -5539, 3856, 4136, 995, -5539, 995, 995, 995, -5539, 3860, -5539, 1758, 4228, -5539, 1679, 1904, 4185, -5539, 31523, -5539, 1749, 1951, -5539, 4243, 4325, -5539, -5539, -5539, -5539, 3285, 2170, 3285, -5539, -5539, 65898, 404, -5539, 4167, 327, 57276, 4086, 69251, 348, 320, 3870, 3997, -5539, 2748, 2748, 3937, 84579, 4334, -5539, -5539, -5539, -5539, -5539, -5539, 61587, 3558, -5539, 4102, 106, 4207, 84579, 40358, -5539, 3414, -5539, -5539, -5539, 1141, -5539, -5539, 4006, 3326, -5539, 1454, 84579, 4099, 69251, 3385, 2403, -5539, -5539, -5539, 3922, 4326, 3348, -5539, 348, 3960, -5539, -5539, 4302, 3980, 3929, 4355, -5539, 3980, 4222, 4109, 3896, -5539, 3606, -5539, 84579, -5539, 19935, 19935, 1141,110784, 469,108459, 4230, -5539, 19935, 84579, 191, 3894, 4063, -5539, 4197, 899, 2412, -5539, 899, 899, -5539, 84579, -5539, 3312, 3312, 3312, 3312, 3312, -5539, 4114, -5539, -5539, -5539, 4188, -5539, 899, 60629, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 1005, -5539, -5539, -5539, -5539, -5539, 19935, -5539, -5539, -5539, 31523, -5539, 11472, 36968, 4235, -5539, 31523, 31523, 31523, -5539, 3915, 2426, 2433, -5539, -5539, 1209, -5539, 4232, -5539, -5539, -5539, 11611, 3964, 19935, 4017, 3912, 3916, 5853, 5853, 7972, 5853, 31523, 31523, 5853, 5853, 31523, -5539, -5539, 11659, 4104, -5539, -5539, 11845, -5539, -5539, -5539, -5539, 3852, -5539, -5539, 3852, -5539, 4053, -5539, 2438, 4379, 35978, 4340, -5539, 84579, 2443, -5539, 31523, 3921, -5539, -5539, 39877, 2334, 3924, 2454, 84579, 2455,108459, 34493, 19935, 84579, 3457, 3927, -5539, 84579, 2855, -5539, 72, -5539, -5539, 4332, 41320, 4291, 19415, 31523, -5539, -5539, -5539, -5539, 60629, 4144, 60629, 1679, 12112, 4237, 41320, 51077, 84579, -5539, 84579, -5539, 4092, 4237, 4237, -5539, -5539, -5539, -5539, -5539, -5539, 3945, -5539, -5539, -5539, -5539, 4021, -5539, -5539, 30, 3339, -5539, 2090, -5539, 4410, 4296, 4298, -5539, -5539, -5539, -5539, -5539, -5539, 4156, -5539, -5539, 46613, 61587, 84579, -5539, 4045, -5539, -5539, -5539, -5539, -5539, -5539, 43245, 50085, -5539, 869, 3953, 3955, 1221, -5539, -5539, -5539, 84579, 12277, 3956, 12348, 51, 3339, 84579, 84579, 3958, 3963, 3968, 25, 1119, 1883, 3312, 4285, 84579, -5539, -5539, -5539, 4156, -5539, -5539, 84579, -5539, 995, -5539, -5539, -5539, -5539, 57276, -5539, 3175, 3860, 1141, 65898, 4427, 4427, 12447, 4189, -5539, -5539, 118, 4030, 4226, 4030, 3972, 84579, 827, 3974, 2464, -5539, 84579, 3975, 4106, 1681, 1681, 84579, 84579, 84579, 2465, 1844, 2748, 3765, 1323, 4324, 69251, 4368, 3791, 324, -5539, 84579, 4443, 84579, 3385, 3591, 84579, 3982, -5539, -5539, 70688, 4191, 2090, 84579, 2272, 3960, 3348, 1191, 84579, -5539, 969, -5539, 1844, -5539, 84579, 77394, 41320, 4312, -5539,109854, -5539, 2466, -5539, -5539, -5539, 4061, 20592, 3210, 4107, 4108, 3994, 1905, 4321, 84579, 744, -5539, -5539, -5539, -5539, -5539, -5539, 84579, -5539, 132, -5539, 19501, -5539, 3757, 36968, 19935, 19935, 19935, 31523, -5539, 31523, -5539, -5539, -5539, -5539, 752, -5539, -5539, 5853, 5853, 5853, -5539, 4439, 3457, -5539, -5539, -5539, 964, 4388, 3437, 58234, 4001, -5539, 36968, 2470, -5539, 1923, 84579, 2471, -5539, 19935, 84579, -5539, -5539, 31523, -5539, 2477, -5539, 4002, 45, 4003, 23170, 4010, -5539, -5539, -5539, -5539, -5539, 19935, 4012, -5539, 4469, 1463, -5539, -5539, 4066, 84579, 2479, -5539, 125, 1961, 4065, -5539, 19935, 1470, 2261, 319, 4246, 4018, 3285, -5539, 4019, -5539, -5539, 2966, 399, 84579, 3285, 3285, -5539, 84579, 4116, -5539, 4335, -5539, -5539, 4088, -5539, 860, 3339, 84579,108459, -5539, 150, 4354, -5539,108459,108459, -5539, -5539, -5539, 31523, -5539, 4119, -5539, -5539, -5539, 31523, 31523, 68293, -5539, -5539, 84579, 84579, 84579, 84579, 84579, -5539, 899, -5539, -5539, 2486, -5539, 42282, -5539, -5539, 3171, 1141, 3171, 1759, -5539, -5539, 3171, 3171, -5539, 3210, -5539, 4427, 360, -5539, -5539, 4260, 4031, 31523, 4330, -5539, 188, 4248, -5539, 4034, -5539, 65898, 4528, -5539, 57276, 3591, 4057, 84579, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 2494, 3791, 4378, 3326, 3929, -5539, 84579, 4077, -5539, 39877, 3791, 1844, 2152, -5539, 3960, 3591, 4057, -5539, -5539, 4041, 3986, 3348, 2272, 4183, -5539, 4184, -5539, 4473, 4256, 4478, 3385, -5539, 3246, 2517, 84579, -5539, -5539, 7122, 110784,108459, -5539, -5539, -5539, 4047, 4417, 4094, 4095, -5539, -5539, -5539, 1905, -5539, 1009, 4416, 4101, -5539, 4117, 84579, -5539, -5539, 3791, 899, 31523, 3757, 2547, 2552, 4120, -5539, 31523, 1123, 4394, 4395, 84579, -5539, -5539, -5539, 84579, 1951, 4060, 35978, 57276, 2554, -5539,107994, -5539, 2556, 2560, -5539, 31523, 4062, 31523, -5539, 34493, 84579, 4070, 3216, 1844, -5539, 3210, 41320, -5539, 4198, 4532, 4328, -5539, -5539, 4400, -5539, -5539, 84579, 4030, 50085, 399, 3441, 2170, 4030, 4030, -5539, 84579, 4031, 31523, -5539, 4168, -5539, -5539, 2566, 1669, 4247, 4247, 2568, 2572, 12877, 84579, 2574, 2580, -5539, 2581, 2638, 3327, 1883, 3327, -5539, 3312, -5539, -5539, 57276, -5539, 61108, -5539, -5539, -5539, 1141, -5539, 1141, 4304, 84579, 52514, 1141, 1141, -5539, -5539, -5539, -5539, 4380, -5539, 3099, -5539, 12944, 4177, -5539, -5539, -5539, 502, -5539, 4301, 4308, -5539, 4096, -5539, 2582, -5539, 348, 4223, 3791, -5539, -5539, 84579, 4560, 4561, -5539, 794, 84579, 3414, -5539, 3929, 3385, 3348, 348, 3960, 2090, 41801, 3980, 2272, 3986, -5539, -5539, 4315, -5539, 4317, -5539, 4103, 4404, -5539, 1580, 469, -5539, -5539, -5539, 366, 4436, 4438, -5539, -5539, -5539, 3171, -5539, 140, 4118, 4461, -5539, -5539, -5539, -5539, 19935, -5539, -5539, -5539, 3390, 34988, 34988, 34988, 4123, 4556, 4559, 957, 2586, 37952, -5539, -5539, -5539, 84579, 4329, 916, 4582, 4279, 2590, 34493, 2594, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 45170, 31523, 4214, 4532, 60629, 2596, 3550, 4126, 3441, -5539, 4226, -5539, -5539, 3339, -5539, 19935, 84579, 65898, 4572, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 3339, 4219, -5539, -5539, 68293, -5539, 84579, -5539, -5539, 2598, -5539, -5539, -5539, 84579, 3894, -5539, 3894, -5539, -5539, -5539, 1559, 4242, 84579, 946, 946, 4517, -5539, 4203, -5539, 4142, -5539, 4638, 4272, 84579, -5539, -5539, 869, 1844, 69251, 3791, -5539, -5539, 2272, 3960, 3348, 31523, 2602, -5539, 4246, 166, -5539, 3986, 3980, -5539, -5539, 41320, 4145, 3033, 4508, -5539, -5539, -5539, 2177, 65898, 65898, 84579, -5539, -5539, -5539, 31523, 827, 36473, 4290, 1170, 14110, 4500, -5539, 4500, 4500, -5539, 84579, 84579, 84579, -5539, 3559, -5539, -5539, 36968, 36968, 4377, -5539, 916, -5539, 84579, -5539, 4154, -5539, -5539, 2608, -5539, 1385, 19935, 456, 4245, 319, -5539, -5539, -5539, -5539, 4248, 1679, 1679, -5539, 3339, -5539, 84579, -5539, 4159, -5539, -5539, -5539, 61108, 3894, -5539, -5539, -5539, -5539, 4637, -5539, 281, -5539, -5539, -5539, -5539, 84579, 3791, 3842, 3929, -5539, 3986, 3348, 2272, 13108, -5539, 41801, 84579, 84579, 3980, -5539, 2609, 41320, 3326, 4303, -5539, 2385, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 448, 4160, 4162, -5539, -5539, 13278, 65898, 4634, -5539, -5539, -5539, -5539, -5539, 829, -5539, -5539, -5539, 981, 990, 1820, 4589, 1951, 1951, -5539, -5539, -5539, 31523, -5539, -5539, -5539, 4398, 4297, -5539, -5539, 956, -5539, 1679, -5539, -5539, -5539, 31523, -5539, -5539, 2170, 2170, 3791, -5539, -5539, 3980, 2272, 3986, 4246, -5539, -5539, -5539, -5539, -5539, 4404, -5539, 2610, 3980, 4101, 2498, -5539, -5539, 2505, 2515, 4255, 4501, -5539, 4175, 35483, 4318, -5539, 4383, -5539, 84579, 84579, 58713, 84579, 84579, 13531, -5539, 45170, 4411, 142, -5539, 1679, 2615, -5539, -5539, -5539, -5539, 3986, 3980, 84579, 3033, -5539, 41320, 3210, 4530, -5539, 2385, 4306, 4307, 56797, -5539, -5539, -5539, -5539, -5539, 330, 4566, -5539, 2619, -5539, 4186, -5539, 4249, 72, 4199, 84579, -5539, -5539, 3980, -5539, -5539, 3326, -5539, -5539, 827, -5539, 4238, 4239, -5539, 2621, -5539, -5539, -5539, -5539, 31523, 58713, -5539, -5539, 4257, 31523, 2631, -5539, 3980, 65898, 4526, 4529, -5539, 56797, 822, 4264, 4262, 2637, 841, 3210, 4210, 65898, 65898, -5539, 4211, 84579, -5539, -5539, 72, -5539, -5539, 56797, -5539, -5539, 2500, -5539, 4266, 2653, 4262, -5539, -5539 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -5539, -5539, -5539, 3812, -558, -5539, -5539, -958, -449, 3054, -1132, -5539, -5539, -5539, 1347, -5539, -5539, -5539, -5539, 3776, -5539, 1733, -2853, -5539, -5539, 134, 3732, -1362, 128, 3383, 1415, -5539, -981, -5539, -5539, -617, 3, -5539, 3737, 311, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -811, 1851, -5539, 1937, 1216, -922, -3407, -5539, -5539, -1482, -3692, -5539, 514, -5539, 540, -4715, -1027, -5539, -5539, -5539, 1841, -5539, -5539, -5539, 1788, 1016, -452, -5539, -5539, -5539, -5539, -5539, -5539, -866, -5539, -5539, -1130, 7, -640, -2891, -4223, -5539, -5539, 364, -493, -1475, -5539, 559, -5539, -4550, -5539, -106, -2629, -4246, -5539, -5539, -5539, -467, -1437, 1314, -5539, -730, -1136, 1664, -2616, -983, -5539, -340, -3495, -1104, -878, -875, -1014, -4276, -4768, -5539, -5539, -1133, -3679, -5037, -5287, -4789, -4583, 1325, -5539, -134, 369, -5539, 8, -3607, -3670, 13, 344, -5539, 15, 17, -5539, 362, -808, -968, -1567, -5539, -931, -5539, -5539, -5539, -3385, -5539, -5539, -5539, 144, -5539, -5539, -5539, -5539, 402, -5539, -5539, -5539, -5539, -5539, -5539, -2577, 1813, 1814, -5539, -4072, -5539, -927, -5539, 567, -3412, 1245, -5539, -5539, 1010, 3808, 387, -5539, -5539, -5539, -5539, -5539, -5539, -1766, -5539, -5539, -5539, -5539, -112, -437, -5539, -5539, -5539, -5539, -5539, -5539, -5539, 18, -5539, 971, 326, -5539, -5539, -724, -5539, -5539, -5539, -5539, -5539, -5539, -1187, -5057, -1295, -1276, -5539, -3410, -5539, -5539, -5539, -411, -5539, -5539, -5539, -5539, -5539, -868, -5539, 1065, -4071, -5539, -5539, 363, -5539, -5539, -5539, -5539, -5539, -986, -347, 2991, -5539, -581, -783, -5539, -5539, -5539, -346, -5539, -5539, -5539, -5539, -5539, -507, -1284, 4801, 4187, -1096, 5912, -833, -578, -5539, -5539, -5539, -2654, -5539, -5539, -4144, -5539, 4792, 2532, 386, 19, -5539, -1, 89, 3659, -5539, 933, -1151, -3063, 325, -543, -5539, -5539, -5539, -3034, -5539, -5539, -5539, -5539, -4015, 21, -5539, -714, -5539, -4291, -5075, -4498, -4021, -1157, -5539, -5391, -4162, -4299, -3991, -5539, 1840, -5539, -5539, -548, -192, 2964, -5539, -1456, 2187, -1410, -5539, -2461, 382, 1409, 2970, -3220, -130, 2961, -2951, -5539, -717, 1001, -5539, -436, -3740, -5539, -5539, -5539, -2674, -673, -5539, -5539, 1560, 572, -5539, -5539, -5539, -5539, -620, 2938, -182, -5539, -5539, 4157, -5539, -4843, -5539, 4127, -5539, -5539, -5539, -5539, 2857, 2860, -5539, -5539, -1443, 1173, -5539, -836, -5539, -5539, 1946, 599, -5539, -5539, -5539, -5539, 1258, -530, -5539, -5539, -5539, -5539, -5539, -5539, -5539, -975, -1175, -5539, -5539, -4772, -5539, -5539, -5539, -5539, -5539, 2298, -947, -742, 4024, 747, 24, -5223, -5539, -5539, -925, -5539, 3379, -5539, -5539, -5539, -5539, -5539, 384, 385, -5539, -5539, -5539, -5539, -3752, -5539, -5539, -4931, -5539, -5539, 1927, -5539, -5539, 931, 6, 3087, -5539, -5539, -5539, -11, -5539, -5539, -1013, 2274, -5539, -2360, -5539, -586, -5539, -5539, -1881, 26, -4273, -5539, 5, -5539, -5539, -4938, -1180, 205, -5539, -5539, -3924, 9, -5539, -5539, -5539, -5539, -4941, -5539, 11, -5394, 742, -3272, -5539, 1, -5539, -495, -870, -5539, -5539, -5539, -3729, 28, 36, -5539, -5539, 4, 301, -46, -44, -12, 2, 121, 3493, -5539, -5539, -5539, -4674, 3537, -5539, -4, -857, 4834, 4836, -5539, -881, -158, -5539, 1512, -704, -2549, 3459, 3462, -5539, 1501, 2283, -2425, -2431, -5539, -1012, -845, -680, -5539, -5539, -5539, -5539, -1489, -698, -2552, -5539, 3460, -5539, -5539, -5539, -2317, -3298, -3207, 1537, -3224, -3117, -5539, 823, 804, -951, -187, 104, -1462, -778, 1723, -5539, -5539, 1545, -431, -5539, -5539, -429, -3221, 766, -5539, -4466, -2774, 1548, -1110, -826, -5539, -956, -5539, -651, 894, 3510, -813, -5539, -5539, -788, 11796, -5539, -5539, -5539, 12693, 13876, -5539, -5539, 14176, 14911, -5539, -589, 14965, 11704, -779, -1910, -149, 16754, -1853, 2858, 93, -5539, -2914, -2012, -5539, -5539, -5539, -395, 908, 612, -5539, -4486, -4346, -5539, -5539, -2098, -5539, -657, -5539, -656, -5539, -5539, -5539, -3053, -5436, -3047, 2415, -5539, -5539, -5539, -199, -5539, 16612, -3212, -5539, -306, -982, -1574, 2888, -3009, -1896, -5539, -5539, -5539, -3073, -5539, -5539, -5539, -635, 1642, -5539, -5539, 1746, -5539, -5539, -5539, -952, 1983, -759, -1165, 1647, 4028, -766, 2421, -782, 15836, -652, 12002, -1273, -5539, 5473, -5538, 828, 6895, 37, -108, 6649, -598, 2331, 2818, -5539, -5539, 5134, 3814, -572, -959, -5539, -6, 13133, 10090, -3618, -5539 }; /* 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 -2829 static const yytype_int16 yytable[] = { 622, 184, 191, 71, 186, 180, 175, 80, 83, 181, 900, 183, 970, 84, 934, 85, 1613, 86, 106, 124, 1559, 129, 975, 191, 159, 980, 178, 736, 185, 969, 1686, 911, 1445, 1075, 1343, 805, 1200, 1201, 1202, 1782, 1898, 840, 1206, 1666, 627, 888, 2856, 1331, 2647, 2683, 1431, 678, 1433, 3452, 1416, 1771, 1396, 2749, 1618, 763, 1021, 1952, 1372, 1678, 1776, 763, 2778, 922, 1112, 2741, 1387, 1388, 3392, 1842, 1166, 1999, 3393, 1992, 1220, 1395, 1371, 1359, 4047, 3755, 4049, 3915, 3012, 3786, 3838, 1784, 1173, 3896, 1464, 1402, 2761, 2750, 4111, 4411, 4462, 618, 4263, 3140, 1815, 4170, 3165, 4191, 1820, 2924, 978, 4650, 1147, 1824, 770, 1114, 1555, 2647, 2817, 2817, 4724, 3670, 2817, 1834, 1000, 4360, 1160, 806, 4689, 1042, 4684, 4215, 4087, 4217, 4125, 3777, 1854, 4424, 3234, 4437, 3236, 1577, 5064, 4070, 2579, 1157, 1594, 1174, 232, 913, 836, 4947, 4926, 5357, 4936, 2732, 4749, 5261, 4100, 3079, 1145, 5453, 1021, 1149, 4887, 799, 905, 1887, 2886, 2887, 5254, 3202, 833, 851, 5222, 1612, 5133, 825, 5076, 1527, 5078, 914, 3387, 3315, 1644, 3303, 3384, 3418, 3420, 4020, 3305, 5505, 5384, 622, 1671, 5112, 4131, 4124, 4421, 3638, 4665, 2882, 622, 945, 1351, 1890, 4935, 5673, 1438, 1827, 622, 1894, 945, 622, 1441, 2732, 2712, 5492, 684, 1522, 1021, 1905, 5253, 5023, 1851, 1908, 945, 3960, 2913, 1911, 3363, 1913, 2732, -2433, 5406, 745, 684, 1921, 4085, -2471, 4090, -2496, 637, 1927, -2325, -2534, 1930, 5109, 2538, 1114, -2325, 5416, 5417, -2325, -2325, 5661, 3960, -2285, 2893, 1880, 1522, 1850, -2326, -2285, 6043, 1522, -2178, 1371, -2326, 1384, 1385, -2326, -2326, -2178, 1021, 2584, -1931, -1898, -1911, 1394, 745, 1880, -1931, -1898, -1911, -1936, -2357, 3714, 3009, 3717, 3718, -1936, 4447, 1229, 3722, 3723, 3724, 745, 3726, 3727, 3728, 920, 3913, 187, 843, 1101, -1926, -2436, 684, 915, 3774, 5444, -1926, 3149, 2046, 3149, 1181, 1880, 745, 1880, 3695, 5598, 1494, -2704, 187, 3244, 1807, 1880, 2051, -2704, 684, 993, -2704, -2704, 1021, 2582, 2501, 1185, 684, 3244, -1939, 1880, -1939, 3464, 2501, 5863, -1939, 4918, -1939, 684, 1347, 2677, 1880, 3108, 5119, 4166, 5092, 2691, 3900, 899, -141, 2544, 1556, 2955, 5442, 5641, -141, 5276, 745, 3284, 2678, 2817, 4948, 4994, 4995, 4996, 3285, 4998, 4999, 5000, 5001, 5002, 5176, 5250, 3021, 1880, 4923, 1864, 684, 1453, 5815, 3021, 1196, 3745, 2546, 1976, 916, 3042, 2685, 5823, 5932, 5572, 2027, 5968, -2494, 5633, 5177, 751, 3291, 5383, 3022, 2051, 4924, 751, 1678, 751, 2590, 3022, 2802, 751, 3043, 1776, 5908, 5909, 635, 5561, 2686, 2978, 2520, 2679, 5405, 752, 3389, 2533, 2533, 917, 1495, 752, 1829, 752, 1494, 3366, 5215, 752, 2544, 5803, 6044, 1812, 679, 2680, 1114, 1507, 5595, 1204, 1362, 2597, 970, -2197, 1771, 5675, 751, 3584, 2727, 2898, -2197, 4651, 2752, 6037, 4348, 2586, 4287, 3010, 1387, 1388, 5223, 1397, 1005, 2546, 1596, 4115, 634, 751, 5135, 2515, 752, 1556, 684, 5493, 5412, 5140, 4408, 745, 2516, 1395, 912, 4897, 1398, 2689, 5642, 2051, 5481, 2539, 5829, 3746, 1984, 752, 970, 2752, 2677, 2752, 2692, 5413, 1402, 3960, 1399, 4116, 2779, 1597, 2880, 4288, 4283, 3130, 5224, 4457, 194, 3668, 2752, 4652, 1363, 5910, 6080, 3367, 2544, 1929, 5830, 2752, 3585, 2752, 1896, 3390, 1225, 1205, 1377, 2752, 1881, 1069, 2979, 1906, 2752, 2013, 3292, 1079, 2043, 2598, 1495, 2667, 2803, 2728, 5634, 1896, 5216, 5969, 6031, 1092, 3451, 2546, 1881, 5573, 195, 685, 5093, 1197, 3358, 5643, 2719, 915, 1006, 1776, 4376, 2687, 2504, 5824, 3044, 5954, 2726, 3901, 2679, 6020, 1239, 1454, 4898, 3960, 6045, 1936, 5955, -2829, -2829, -2829, 5632, 2681, 2517, 2693, 1881, 3023, 1881, 4925, 2680, 2956, 1973, 4360, 5234, 5277, 1881, 5338, 3109, 4167, 6041, 5973, 1996, 1983, 3933, -437, 5445, -2178, 918, 1205, 1881, 1007, 945, 5786, 2581, 844, 5450, 1993, 1205, 4784, 1106, 1881, 1896, 5814, 4499, 1052, 191, 3011, 1053, 1049, 6046, 945, -2494, 1050, 3131, 1051, 2851, 945, 1566, 2854, 3465, 2894, 2762, 1977, 1384, 1385, 916, 1114, 4448, 945, 3696, 4127, 1013, 5178, 1881, 2841, 1014, 1496, 2844, 2845, 5120, 4899, 2779, 5972, 5304, 945, 5769, 1231, 3245, 1008, 622, 1394, 900, 638, 6019, 888, 2717, 3747, 2861, 622, 945, 864, 4025, 2922, 2923, 1882, 622, 1977, 945, 622, 4896, 3970, 3971, 3972, 3973, 3974, 3975, 2682, 3308, 3161, 2823, 888, 945, 2518, 5668, 1382, -2494, 1889, 1813, 3332, 3286, 1177, 945, 2796, 2557, 680, 2921, 6049, -2494, 191, 1497, 2780, -2433, 2513, -2325, 3975, 4694, 2624, -2471, 5912, -2496, 4944, 5098, 2625, -2534, 1013, 2585, -2285, 2795, 1014, 2681, 1446, -2326, 1893, 1013, 1904, 757, 758, 1014, 4791, 2874, 2875, 4943, 1926, 5902, 4795, -1931, 1386, 1390, 1813, 4340, 4341, 5931, 757, 758, -1936, 3748, 1929, 1114, 1178, 945, 1183, 2840, 1187, 681, -2357, 1114, 1114, 1896, 1191, 1813, 1397, 1194, 1397, 757, 758, -1926, 2912, 2047, 2562, 2563, 2929, 2736, 622, 622, 5875, -2436, 2488, -2197, 945, 1586, 3097, 1398, -2704, 1398, 4458, 4409, 2690, 5879, 4360, 2502, 4499, 682, 1486, 683, 3081, 4409, 2899, 6065, 4900, 1399, 970, 1401, 1587, 945, 1794, 622, 4087, 2881, 1799, 4284, 1800, -141, -141, 1557, 1558, 762, 1361, 1798, 5292, 2965, 3132, 762, 913, 1677, 2736, 2900, 3493, 3107, 888, 2943, 1933, 3966, 5975, 2682, 4630, 3569, 5580, 4321, 4634, 3122, 3133, 2736, 4532, 4711, 4377, 4421, 4512, 1208, 4754, 5813, 622, 1468, 932, 918, 914, 2966, 2485, 2486, 2487, 2488, 1789, 5956, 2780, 945, 2781, 785, 2779, 5807, 4901, 184, 191, 71, 186, 180, 175, 80, 83, 181, 4171, 183, 4674, 84, -1751, 85, 5850, 86, 106, 124, 4402, 129, 684, 1065, 159, 2782, 178, 1479, 185, 5997, 3167, 4855, 5963, 4859, 6018, 5795, 187, 5671, 1487, 5787, 4105, 1208, 874, 1831, 4621, 3384, 4623, 2804, 1346, 1128, 2783, 5806, 1356, 4133, 4054, 4134, 2498, 4858, 4278, 4279, 1880, 2983, 1675, 4280, 3842, 1378, 2763, 2973, 1557, 1558, -1898, 1469, 906, 3063, 2483, 2484, 2485, 2486, 2487, 2488, 2764, 3070, 2765, 3561, 3902, 786, 3358, 4816, 2711, 2777, 3972, 3973, 3974, 3975, 4463, 6074, 5743, 777, 684, 2042, 4877, 5748, 5749, 622, 622, 1772, 1655, 5889, 684, 5998, 5528, 945, 1656, 2853, 1650, 3484, 622, 5486, 5538, 1450, 5542, 888, 622, 5911, 1470, 2779, 622, 1873, 622, 187, 899, 5499, 888, 5851, 1501, 5903, 4782, 751, 907, 5500, 3484, 1874, 4762, 2766, 2586, 1005, 2820, 953, 888, 2824, 5920, 3843, -1898, 3551, 954, 955, 956, 1651, 2781, 773, 3733, 752, 4335, -2829, -2829, -2829, 3970, 3971, 3972, 3973, 3974, 3975, 3335, 5389, 4923, 5585, 3396, 2560, 3422, 5717, 2779, 4464, 2779, 4689, 4967, 4128, -1751, 2782, 1776, 6009, 5543, 622, 1362, 622, 622, 5999, 4400, 1875, 3485, 684, 4924, 2779, 1488, 6069, 4506, 4267, 908, 4912, 3552, 3242, 2901, 1846, 2783, 908, 799, 1636, 908, 4885, 5981, 2780, 1657, -689, 1471, 3485, 3529, 1406, 1777, 3956, 3025, 1778, 1468, 1182, 1184, 1186, 945, 3336, 1188, 1189, 1190, 1676, 6093, 1489, 5920, 2633, 684, 1006, 1195, 787, 5925, 4878, 1239, 2777, 6101, 3960, 1847, 1915, 4763, 3961, 3962, 3963, 2974, 5480, 622, 4817, 1239, 6010, 1363, 3960, 2873, -2281, 4171, 3961, 3962, 3963, 1578, 1490, 191, 933, 1225, 5654, 2779, 6017, 3119, 3120, 2666, 3530, 5852, 5529, 788, 789, 4584, 5853, 3562, 6024, 2859, 945, 1007, 1876, 1916, 912, 1407, 187, 4193, 1021, 888, 5501, 945, 3553, 5667, 5670, 5682, 3903, 5890, 1938, 5271, 1940, 1066, 1942, 1469, 1944, 945, 1946, 1947, 1948, 945, 5240, -1898, 6050, 1950, 5539, 4690, 5653, 1652, 3417, 5594, 1832, 622, 2695, 2883, 4465, 5925, 6000, 1129, 1491, 2499, 1881, 2780, 2696, 2902, 1872, 1410, 5252, 5920, 5246, 1008, 1877, 909, 6072, 3397, 900, 4507, 5669, 4764, 1408, 3734, 3844, 1409, 622, 3512, 3494, 3710, 1470, 5104, 3083, 2779, 3488, 2779, 4357, 2043, 3845, 4991, 6084, 5745, 2781, 1658, 790, 6045, 3423, 1579, 1476, 3424, 1477, 5891, 5801, 3060, 622, 622, 622, 2982, 622, 3488, 2780, 3106, 2780, 3344, 5710, 3111, 3056, 3072, 4466, 4886, 3118, 2782, 5495, 3121, 3219, 4194, 3601, 2928, 622, 5892, 3078, 2780, 1659, 2779, 3698, 40, 4098, 5496, 1848, 3358, 5845, 1100, 3358, 4872, 5934, 1653, 2783, 3964, 3077, 3269, 3058, 1813, 3957, 3958, 945, 3090, 3570, 3977, 5578, 5925, 3705, 1878, 945, 945, 6001, 3071, 1660, 5945, 3073, 3965, 2542, 44, 1896, 6002, 2914, 5694, 4454, 970, 1471, 2732, 4268, 2846, 1917, 3965, 3554, 2777, 622, 1410, 3358, 1047, 1013, 2984, 2591, 2592, 1014, 2596, 3358, 3141, 4008, 4009, -1752, 783, 5097, 4767, 1101, 4052, 3193, 5657, 784, 5065, 2780, 3014, 1406, 48, 3602, 1772, 5665, 2697, 3110, 2781, 2600, 5695, 3116, 3117, 914, 914, 49, 914, 2987, 3495, 5068, 3571, 622, -1898, 3126, 5072, 622, 622, 5074, 3966, 1472, -1898, 1849, 1386, -1898, 1415, 4390, -1898, 2782, 50, 4276, 3175, 622, 3966, 684, 811, 2698, 2856, 888, 5711, 3176, 1580, 3220, 4106, 807, 2601, 5703, 3398, 3603, 3099, 5415, 1583, 4984, 2783, 2781, 1473, 2781, 1544, 5219, 1474, 4653, 1170, 4988, 35, 187, 1896, 1918, 1407, 1102, 3270, 5712, 730, 5935, 3099, 3271, 2781, 3160, 4241, 1411, 4873, 1581, 3786, 3099, 2782, 2780, 2782, 2780, 3338, 4957, 2988, 2600, 15, 2777, 1475, 3101, 5497, 3654, 4768, 785, 2847, 3127, 1412, 3655, 2848, 2782, 888, 3304, 3604, 2783, 4286, 2783, 3272, 4195, 4196, 1582, 4360, 959, 960, 961, 962, 963, 964, 965, 966, 967, 1476, 20, 1477, 2001, 2783, 1408, 5020, 810, 1409, 2780, 2601, 5736, 1450, 1776, 1450, 812, 1232, 4197, 3177, 194, 3124, 888, 2777, 2010, 2777, 1937, 834, -1752, 1939, 2781, 1941, 2603, 1943, 5485, 1945, 762, 5494, 762, 1949, 762, 3439, 5412, 3827, 2777, 5797, 762, 1192, 1193, 1479, 4543, 1126, 4544, 1478, 1479, 888, 5746, 4183, 3484, 2782, 1599, 3804, 786, 846, 195, 5413, 1896, 4242, 2686, 3904, 5241, 2040, -2309, 2602, 4391, 1568, -166, 1126, 1410, 4323, 3314, 4713, 1600, 1771, 2783, 2647, 3656, 1929, 1434, 2647, 3605, 4107, 2604, 1103, 3178, 3967, 3968, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 4917, 4727, -166, 1005, 4654, 3967, 3968, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 5021, 3102, 945, 1410, 2603, 2777, 2781, 1176, 2781, 3440, 1479, 4756, 1104, 4184, 1479, 1601, 3273, 622, 622, 622, 5623, 4728, 5625, 3485, 4849, 3497, 5629, 5630, 1544, 4853, 1569, 3905, 1428, 3437, 3103, 2782, 3162, 2782, 3164, 3179, 1615, 3609, 3180, 1436, 3171, 3059, 4697, 3104, 970, 970, 3186, 3187, 3188, 1434, 5062, 5460, 2781, 4867, 3486, 1435, 2783, 3207, 2783, 2051, 2604, 1217, 3069, 3222, 3660, 32, 4545, 1105, 1586, 1106, 5901, 912, 912, 1107, 912, 1616, 4914, 5388, 3105, 3438, 4868, 2782, 2877, 4876, 4077, 1006, 5979, 5980, 1437, 5821, 3606, 1587, 3052, 3487, 5871, 2777, 40, 2777, 3607, 4729, 1602, 3608, 787, 3661, 4357, 5461, 2783, 3683, 5462, 4243, 1411, 1832, 945, 1656, 5463, 1373, 3498, 3609, 1218, 762, 3531, 5420, 1436, 5660, 888, 2546, 4698, 40, 3657, 631, 4780, 1239, 44, 1429, 3960, 888, 1007, 3662, 3961, 3962, 3963, 4697, 5464, 788, 789, 2777, 4281, 1772, 4244, 1603, 3181, 888, 1832, 1604, 5674, 40, 3593, 4585, 3558, 4078, 4752, 970, 4361, 44, 40, 631, 5971, 3658, 2855, 1396, 945, 1437, 5681, 1935, 48, 1423, 1778, 2506, 945, 632, 3388, 3532, 4245, 3360, 3582, 1617, 945, 49, 762, 4699, 3320, 44, 4079, 4700, 1008, 4290, 3488, 1929, 6051, 5465, 44, 3659, 1606, 902, 888, 48, 5334, 4080, 4870, 4364, 50, 3620, 5466, 622, 3321, 904, 622, 4081, 5116, 888, 4282, 1657, 888, 888, 5467, 4698, 622, 622, 56, 945, 945, 4127, 5983, 48, 4753, 2827, 5527, 3447, 6016, 2671, 2830, 622, 48, 945, 622, 4082, 49, 1608, 2507, 1358, 2672, 3451, 3621, 888, 888, 49, 945, 945, 903, 56, 3624, 3182, 1813, 3627, 1793, 989, 5291, 4366, 2673, 50, 1609, 4498, 4666, 1239, 3510, 1802, 3960, 191, 50, 4871, 3961, 3962, 3963, 3582, 5828, 650, 5822, 56, 4699, 5117, 1611, 1810, 4700, 4225, 622, 990, 56, -1075, 622, 622, 1434, 1239, 5552, 5755, 3960, 4226, 3860, 2524, 3961, 3962, 3963, 4149, 919, 3091, 2904, 3092, 4499, 3093, 2910, 3094, 4357, 3095, -1722, 1052, 191, 3096, 1053, 1049, -1722, 5805, 3146, 1050, 622, 1051, 622, 5221, 3786, 5804, 4083, 622, 622, 3965, 6053, 951, 2647, 652, 622, 622, 622, 3743, 2525, 622, 1455, 622, 2647, 622, 622, 622, 622, 622, 622, 3663, 5207, 622, 4078, 622, 622, 4369, 3619, 622, 1646, 194, 5626, 1436, 5245, 4524, 5756, 5627, 5366, 1465, 5368, 3699, 3700, 3701, 5652, 888, 622, 622, 622, 4182, 920, 1456, 5232, 2856, 5516, -1722, 3669, 4079, 930, 2051, 3596, 1586, 5886, 622, 3358, 1772, 3644, 4004, 3358, 1647, 4370, 3966, 4636, 1648, 5468, 195, 2865, 5469, 1466, 3145, 5203, 3135, 4081, 2674, 1587, 1457, 4371, 3594, 5628, 3595, 1392, 1393, 2544, 1621, 2915, 2647, 3854, 5685, 1114, 928, 3689, -462, -141, 1649, -1722, 2866, 4485, 1980, 4539, 4540, 4541, 4542, 1467, 5204, 4546, 4547, 4548, 4549, 4550, 4551, 4552, 4553, 4554, 4555, 3705, 2546, 2769, 35, 5904, 3852, 4330, 2817, 1622, 2916, 3858, 3358, 3859, 3790, 3791, 3792, 3793, 4196, 3795, 3965, 5702, 3507, 3865, 2846, 2810, 3866, 4238, 3867, 3868, 2926, 2927, 3870, 684, 2826, 1599, 3873, 2770, 3874, 1352, 4361, 3876, 2834, 1623, 3823, 5520, 4362, 4740, 3965, 4594, 4595, -1102, 4619, 663, 3601, 664, 4690, 1600, 3887, 4363, 5664, 4372, 762, 2757, 1624, 2758, 4239, 762, 762, 5521, 4690, 5194, 2917, 5195, 5196, 5197, 4285, 5211, 3761, 5213, 4083, 1828, 2769, 622, 1013, 2918, 5574, 4364, 1014, 4365, 3966, 40, 3635, 5631, 3636, 2561, 1586, -462, 3640, 5985, 4240, 5974, 3664, 952, 2568, 3917, 2569, 650, 1601, 4077, 2572, 5575, 3666, 187, 2919, 6003, 2770, 2578, 3966, 1587, 4130, 4322, 1093, 622, -1675, 5869, 2759, 44, 1093, 1625, 3323, 995, 1985, 2752, 5533, 1778, 3665, -1675, 650, 6004, 1852, 3994, 3602, -1675, 2753, 4366, 3667, 4001, 3967, 3968, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 1067, 1094, 1068, 187, -1069, 2847, 1853, 1094, 1460, 2848, 652, 5089, 48, 1397, 1626, 1923, 4367, 4733, 3816, 622, -604, 1627, 1354, 233, 1628, 49, -1902, 4078, 1071, 636, 1072, 4818, -1902, -1675, 1398, 1397, 1095, 728, 1924, 3603, 1602, 652, 4403, 1461, 1004, 2510, 1589, 1462, 50, 3221, 4433, 762, 1401, -1675, 4819, 808, 1398, 3929, 5873, 5874, 4079, 762, 2555, 4835, 5412, 1663, 56, 3778, 1667, 5735, 4690, 2752, 6091, 4470, 6094, 4080, -1127, -1127, 4471, 40, 6073, 1463, 2760, 4368, 1096, 4081, 4836, 5413, 4369, 1603, 1096, -1909, 3762, 1604, 6105, 654, 4137, -1909, 3604, 2533, 1012, 1386, -1675, 2580, 5597, 1192, 1193, 4673, 2855, 5601, 5602, -1675, 1386, 4082, 2580, 44, 3358, 3358, 1055, -1899, -1900, -1903, 1057, 3, 4, -1899, -1900, -1903, 5062, 2541, 1062, 4370, 1778, 3967, 3968, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 1606, 4048, 3337, 3339, 3340, 4371, 762, 3911, 3912, 762, 762, -1901, 4077, 3930, 1076, 48, 4676, -1901, 3931, 3967, 3968, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 49, 5916, 29, 2000, 1089, 56, 684, 3886, 2788, 5961, 2800, 663, 2044, 664, 745, 1629, 2789, 1608, 730, 1386, 1098, 1415, 745, 50, 622, 622, 622, 622, 622, 622, 622, 622, 622, -603, 622, 3605, 4083, 1097, 15, 668, 1609, 56, 663, 622, 664, 4103, 622, 684, 5379, 5380, 1630, 745, 684, 4581, 1631, -1102, 684, 970, 4797, 4078, 1611, 4866, 5055, 3474, 4951, 3478, 3479, 667, 3250, 4471, 1828, -2277, 1099, 20, 3477, 4372, 1013, -2278, 1199, 3763, 1014, -1675, 1013, 4155, 1199, 1576, 1014, 622, 1632, 5422, 1593, 622, 4079, 1116, 622, 1633, 622, 40, 3316, 622, 4059, 4060, 6012, 622, 760, 3, 4, 4080, 5686, 1013, 760, -2285, 1120, 1014, 4172, 4050, 1127, 4081, 3255, 3256, 3257, 3258, 3471, 1386, 1772, 2580, 622, 3986, 3764, 3988, 3989, 2554, 4132, 44, 2555, 3047, 2588, 3048, 3087, 1778, 4201, 2555, 4039, 622, 4040, 4082, 3098, -1675, 3100, 3099, 4093, 3099, 622, 622, 4205, 3138, 4207, 3606, 3139, 1137, -1675, 3319, 3358, 1136, 1929, 3607, -1675, 1143, 3608, 3358, 4677, 1154, 5069, 762, 3358, 48, 4678, 3358, 631, 945, 4739, 3400, 3324, 4679, 3506, 2555, 888, 2581, 49, 1161, 888, 888, 5953, -1674, 1776, 3228, 4023, 945, 3231, 745, 3409, 945, 4919, 2555, 1171, 945, -1674, 4690, 5840, 5841, 29, 50, -1674, -1675, 945, 4419, 3504, 3576, 4680, 3505, 3577, 3441, 1199, 3444, 3739, 3356, 1203, 3740, 5867, 5917, 1198, 4175, 945, -1675, 2938, 622, 4357, 1210, 4083, 3878, 4681, 3928, 3099, 1207, 2555, 2949, 622, 5582, 888, 622, 3937, 622, 622, 2555, 888, 5587, 5588, 3944, 32, -1674, 2555, 2967, 4721, 4730, 3945, 4737, 945, 2555, 3946, 3979, 3600, 2555, 2555, 3993, 3998, 2647, 2555, 3999, 4057, -1674, 4712, 2555, -1675, 4430, 1213, 4431, 945, 945, 1114, 40, 4218, -1675, 1215, 4219, 4223, 888, 4249, 4224, 4309, 4250, 4319, 3385, 3386, 4250, 4316, 40, 1216, 4233, 5811, 4442, -1746, -1746, 4443, 4511, 3041, -1750, -1750, 1772, 945, 4406, 4445, 1772, 1218, 4446, 4476, 44, 5070, 4477, -1674, 3053, 1222, 2965, 1126, 3057, 1502, 1223, 4378, -1674, 4755, 4564, 4141, 44, 4565, 5940, 5941, 945, 2050, 1772, 1224, 2051, 3686, 945, 1226, 6054, 4575, 5567, 5508, 4576, 4587, 4661, 1227, 2555, 4662, 3076, 1126, 945, 1225, 48, 3492, 1503, 4667, 731, 945, 4668, 4672, 945, 4920, 3424, 1228, 3099, 49, 945, 2544, 48, 1233, 4985, 3173, 3174, 1977, -2829, 1357, 4138, 4139, 3189, 3190, 5008, 49, 5048, 2555, 3250, 2555, 945, 4159, 50, 1360, 5100, 5106, 945, 3424, 5107, 4860, 4258, 4861, 6095, 945, 2546, 4264, -1749, -1749, 50, 4349, 732, 897, 898, 4013, 3235, 4014, 1235, 945, 5113, 1504, -1675, 3099, 3349, 1364, 1365, 5114, 56, -1414, 3099, -1414, 945, 4041, 1366, 4042, 3959, 1772, 1114, 3358, 5011, 4015, 5012, 945, 3634, 4690, 5115, 5247, 3987, 3099, 5248, 5245, 3252, 906, 3253, 1370, 5284, 1505, 3591, 4477, 1374, 622, 622, 622, 1379, 1380, -1723, 622, -1674, 187, 5301, 1386, -1723, 5302, 4291, 4010, 1382, 5303, 3254, 4478, 2555, 4480, 5321, 4482, 4011, 5322, 3237, 5331, 1013, 4937, 1929, 1420, 1014, 1506, 622, 888, 4663, 5317, 5337, 5339, 5318, 4416, 4416, 1772, 3921, 1389, 3923, 3924, 5455, 5475, 5509, 5456, 3099, 5510, 5550, 5556, 1390, 5551, 1929, 907, -2829, 5559, 1403, 5570, 4416, -2829, 5571, 4038, 4254, 4930, 5616, 3827, 4518, 5617, 5811, 1508, 622, 1432, 5656, -1723, 4690, 2509, 6026, 1420, 6027, 3255, 3256, 3257, 3258, 1420, 4271, -1663, 4016, 4692, 4693, 1405, 5733, 4696, 4017, 1421, 1447, 5683, -2829, 3918, 5571, 3805, 1239, 1510, 888, 3960, 1448, 1449, 888, 3961, 3962, 3963, 4615, 2647, 4617, 4570, 1452, 4396, 3255, 3256, 3257, 3258, 1458, 1415, -1723, 3259, 3260, 5706, 5038, 2586, 3999, 3261, 5707, 908, 5721, 2555, 5725, 5722, 3358, 1929, 5726, 1499, 1528, 2555, 970, 35, 5754, 2734, 5760, 3139, 1512, 3139, 5761, 2551, 5764, 3139, 1525, 2555, 3358, 1513, 5765, 5766, 5793, 2555, 5767, 5794, 5846, 1514, 1530, 4416, 5860, 3356, 3358, 2555, 5862, 2735, 5868, 2555, 5883, 3099, 1678, 5884, 5906, -2327, 1531, 5907, 4690, 1516, 5952, 5982, 6022, 5564, 5571, 6023, 945, 6048, 1517, 4502, 2555, 6067, 1518, 6077, 5722, 5054, 6078, 5057, 4379, 4635, 4381, 4638, 888, 6083, 945, 4410, 4662, 1599, 1570, 6092, 1776, 945, 2555, 1566, 1571, 622, 2050, 888, 622, 2051, 622, 622, 888, 1572, 900, 6104, 5295, 1583, 6078, 1600, 622, 1585, 4389, 4018, 4392, 622, 1595, -2829, 4099, 2626, 1598, 2629, 4739, 1114, 4019, 1114, 1519, 2586, 1620, 1637, 1638, 1654, 2544, 1665, 1668, 1664, 1673, 1674, 1786, -2829, 5914, 1788, 622, 622, 622, 909, 1790, 622, 1795, 1801, 3262, 1806, 900, 1809, 1811, 622, 622, 622, 622, 1816, 1601, 3263, 4451, 1819, 1821, 2546, 1772, 1813, 1830, 1835, 1836, 622, 1772, 1838, 622, -186, 622, 1839, 1841, 5426, 1843, 1844, 4493, 1855, 3965, 1862, 1866, 4731, 622, 622, 1870, 213, 622, 1879, 5132, 1884, 1885, 1886, 1888, 1891, 1892, 3358, 1895, 1896, 1903, 1907, 1909, 1114, 1910, 1912, 1914, 622, 1920, 622, 3558, 622, 4750, -2829, 1922, 1925, 1928, 1919, 1931, 1932, 1934, 5427, 1951, 1982, 2483, 2484, 2485, 2486, 2487, 2488, 4022, 622, 1988, 1990, 1991, 1997, 3582, 1998, 4044, 4045, 4046, 2005, 2006, 2007, 2008, 1602, 5428, 900, 2009, 945, 3966, 56, 2011, 2012, 1599, 3358, 2013, 2014, 2027, 2494, 4510, 2514, 2015, 2016, 5429, 4779, 187, 2017, 5430, 2019, 2020, 2021, 2022, 2023, 2024, -2829, 1600, 4708, 4964, 2025, -2829, 2026, 2496, 2029, 622, 2030, 2031, 622, 2050, 2581, 5431, 2051, 2527, 5432, 1603, 2032, 2033, 900, 1604, 622, 2034, 2035, 4188, 2036, 622, 2498, 2499, 2536, 5433, 2558, 2509, 2559, 2564, 2855, 2576, 2566, 2567, -2829, 2570, 622, 2571, 2573, 2574, 2582, 2544, 2575, 2577, 1601, 4732, 4854, 1435, -2829, 2589, 622, 2620, 2691, 2632, 6052, 4841, 1437, 2622, 622, 2634, 3331, 3333, 2637, 2635, 1606, 2636, 3341, 2653, 2655, 2656, 888, 2580, 2654, 888, 2546, 888, 2657, 2658, 2659, 2660, 888, 2661, 2662, 2663, 2669, 2688, 2694, 2700, 2714, 2551, -2607, 2718, 2721, 2720, 2725, 945, 945, 2738, 3383, 3383, 3356, 622, 2722, 3356, 2755, 5535, 2744, 2724, 2742, 1608, 4733, 4846, 2743, 2756, 2767, 5434, 2776, 2785, 2771, 2774, 2775, 2787, 945, 2790, 2791, 945, 2792, 2797, 888, 2773, 2777, 3358, 1609, 1602, 5549, 2786, 888, 2801, 2798, 2807, 2808, 2811, 2825, 4593, 2821, 2822, 2835, 2828, 2831, 3356, 2832, 2837, 1611, 2838, 2842, 2849, 2850, 3356, 2852, 2857, 762, 888, 2858, 1544, 2040, 2863, 5435, 3967, 3968, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 2867, 2864, 2869, 2871, 2895, -2829, 1603, 2878, 2876, 2879, 1604, 2870, -2829, -2607, 2872, 2884, 2896, -2829, 2925, 2937, 2939, 1772, 1772, 1772, 2903, 2855, 2885, 2897, 4099, 4734, 2908, 2932, 5267, 2940, 2953, 2958, 2040, 2959, 2954, 2960, 2941, 2942, 2946, 2947, 2948, 3358, 945, 4973, 2950, 4981, 4975, 2951, 2952, 2961, -2829, 888, 2968, 888, 3250, 1606, 2969, 2972, 645, 2977, -2607, 945, 2985, 2996, 3516, 1617, 3000, 3001, 3004, 3020, 4032, 3013, 4990, -2607, 3016, 3019, 3040, 3046, 3029, -2607, 3473, 3050, 3062, 945, -2607, 3064, 3481, 3066, 3065, 3067, -2607, 3080, 3123, -2607, 3112, 3148, 2051, -2607, 3136, 3167, 1608, -2829, 3223, 3243, 3229, 2551, 3268, 3288, 3033, 3037, 3289, 3055, 2483, 2484, 2485, 2486, 2487, 2488, 1410, 3307, 3172, 3327, 3249, 1609, 3311, 3312, -2607, 3514, 4064, 3325, 3266, 4069, 4536, 3233, 3313, 3310, 3329, 3326, 3330, 3328, 3342, 3334, 3358, 1611, 3343, 4735, -2607, 888, 4736, 907, 3360, 3377, 3378, 762, 3365, 3379, 3380, 3401, 3394, 3402, 3413, 762, 3414, 3416, 762, 3433, 4563, 3442, 3445, 945, 3447, 3449, 3450, 3456, 622, 3461, 762, 3349, 3466, 3467, 622, 899, 3472, 1239, 3469, 3349, 3960, 3480, 3501, 888, 3961, 3962, 3963, 2586, 3496, -2607, 1354, -2829, -2607, 3513, 3503, 3520, 3533, 3538, -2607, 3559, 3565, 3539, 3566, 5039, 3572, 1358, 3575, 4606, 3567, 3592, 1772, 888, 3614, 3583, 3593, 3672, 945, 3590, 945, 3613, 3630, 3685, 1832, 3697, 3706, 3713, 3719, 908, 3720, 3721, 3725, 945, 3753, 945, 3730, 5228, 3752, 3741, 3767, 3771, 3773, 3693, 5033, 1239, 3694, 3769, 3960, 3788, 2777, 3781, 3961, 3962, 3963, 622, 3794, -2607, 5121, 3799, 3800, 3801, 3802, 3803, 3807, 3812, 3814, 5080, 3810, 3815, 4892, 4893, 3818, 3819, 3824, 3839, 3840, 3841, 5139, 3849, 3850, 888, 3851, 3853, 3358, 3855, 3869, 3871, 3872, 4930, 3875, 3877, 3880, -2829, 3881, 3882, 1929, 4436, 3883, 5145, 5146, 3884, 945, 888, 2483, 2484, 2485, 2486, 2487, 2488, 3895, 1926, 777, 3885, 4976, 4977, 4978, 4979, 4980, 3149, 3897, 3899, 3906, 3890, 3909, 888, 3914, 3916, 3922, 3898, 3941, 3943, 3737, 4473, 3956, 2050, 1893, 3889, 2051, 1205, -2607, 3939, 3940, 887, 945, -2170, 3992, 3995, 4007, 3942, 4012, 4035, 4031, 4600, 3947, 3948, 3952, 4021, 3954, 3955, 3698, 3978, 4033, 945, -2607, 4030, -2607, -2607, 3983, 3984, 5087, 2544, 5584, 3358, 2555, 3991, 5201, 4006, -2829, 3358, 4034, 4037, 4055, 4056, 4061, 945, 4067, 4062, 945, 3965, 4063, 4068, 4095, 4108, 5189, 5190, 4110, 4121, 4076, 4091, 4114, 4440, 4101, 4112, 2546, 622, -2607, 4135, 888, -2607, -2607, -2607, 4140, 622, 4142, 622, 4143, 4129, 762, 4151, 4147, 4154, 4156, 622, 4179, 622, 4180, 4168, 622, 4169, 4181, 4186, 888, 622, 622, 622, 622, 4185, 4148, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 4187, 4188, 4192, 622, 622, 622, -2829, 4152, 888, 4203, 3966, 4204, 4206, 622, 900, 4212, 4214, 4222, 622, 4213, 1772, 4228, 622, 4237, 4596, 4251, 5946, 5947, 4253, 4255, 622, 1208, 4257, 622, 4265, 622, 4259, 4261, 4272, 4266, 3358, 4270, 4273, 4308, 4274, 622, 4275, 4294, 622, 622, 4277, 4292, 4295, 622, 622, 4099, 4293, 4296, 5084, 4299, 622, 4297, 3907, 4311, 4608, 4609, 4610, 4611, 4302, -2829, 4298, 4300, 4315, 4301, -2829, 5283, 3966, 3920, 5285, 5286, 4303, 4099, 3925, 4304, 2893, 4305, 1052, 191, 4306, 1053, 1049, 622, 4313, 4327, 1050, 5290, 1051, 4328, 4307, 622, 4317, 4318, 4334, 622, 4324, 4329, 4331, 4339, 4345, 4347, 4387, -2829, 4382, 4394, 4388, 4397, 4398, 4401, 4405, 4415, 4416, 4418, 4425, 4434, 4428, 4435, 4439, 4441, 4438, 5267, 4455, 4469, 4472, 4479, 4475, 622, 4487, 4488, 4481, 4489, 4490, 4491, 4492, 4494, 4501, 187, 4503, 4504, 5130, 4505, 4514, 4515, 622, 4516, 4517, 4519, 4520, 4521, 888, 4522, 4523, 2000, 4527, 3960, -2169, 4051, 2551, 762, 4590, 4537, 622, 4560, 4561, 4589, 5212, 4577, 4562, 4607, 4631, 4569, 4592, 187, 4620, 4058, 4601, 4639, 4632, 4640, 4645, 4646, 4616, 945, 5179, 5180, 4624, 5182, 4618, 4647, 3356, 4655, 4627, 4658, 3356, 4629, 4644, 4660, 4664, 4649, 4675, 4683, 3967, 3968, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 1532, 4704, 4707, 4714, 4715, 4717, 1533, 4720, 4705, 4718, 4104, 4104, 5354, 4725, 4706, 4726, 4742, 4745, 5172, 4758, 4757, 4759, 4761, 1772, 4760, 4771, 2856, 4772, 1772, 888, 1772, 4773, 4774, 4775, 4776, 4785, 4788, 4787, 4794, -2829, 4806, 4807, 4812, 4815, 4831, 4832, 4834, 4732, 4847, 5425, 3356, 1535, 4099, 4837, 1772, 888, 4848, 3967, 3968, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 4850, 4851, 4852, 5019, 4863, 4884, 4889, 4909, 4874, 4895, 4910, 4903, 4922, 4932, 4915, 4938, 3829, 4949, 4939, 4956, 4916, 4955, 4958, 4960, 4959, 4962, 4963, 4974, 4968, 4982, 4987, 4989, 4997, 5010, 5004, 945, 5022, -2171, 945, 2613, 1502, 1536, 5005, 5025, 5026, 5073, 4796, 5016, 1537, 5230, 5027, 1538, 5031, 5044, 5059, 5063, 5082, 5066, 4805, 5077, 5086, 5096, 5610, 5099, 5612, 5101, 5103, 5108, 2050, 5109, 5118, 2051, 5085, -2829, 5136, 1503, 2040, 5137, 1539, 5147, 5138, 5141, 5148, 5149, 2483, 2484, 2485, 2486, 2487, 2488, 5168, 5170, 5161, 5174, 5164, 5183, 5175, 5184, 5191, 5202, 5193, 187, 622, 5192, 2544, 5205, 5198, 5209, 5210, 5217, 4160, -2829, 1540, 5220, 1532, 5226, 5225, 5229, 4163, 5233, 1533, 3349, 5235, 5227, 5239, 3349, 5244, 5249, 945, 945, 5251, 5255, 888, 5256, 5258, 1639, 1504, 2546, 5260, 945, 5262, 5263, 5264, 5273, 3099, 5279, 622, 622, 5281, 5288, 5289, 5307, 5716, 5296, 1532, 5306, 945, 5314, 5330, 5308, 1533, 5300, 5323, 5309, 5319, 1535, 5329, 5333, 5358, 5330, 5336, 5361, 1505, 5378, 5355, 1639, 5367, 1641, 5541, 888, 5370, 1542, 4941, 5382, 888, 622, 622, 5472, 5620, 5742, 5579, 1543, 5381, 5385, 970, 5386, 622, 5387, 5418, 5398, 1544, 5399, 5403, 3830, 5409, 1535, 4597, 5392, 1506, 5410, 5440, 4873, 1545, 4246, 5411, 4248, 5446, 5448, 5451, 1640, 5454, 1536, 5458, 5478, 5459, 5479, 5483, 5490, 1537, 5488, 5506, 1538, 5374, 5511, 5525, 5777, 5779, 945, 5622, 5517, 5518, 5519, 5615, 5540, 5544, 3356, 3356, 5548, 5560, 5562, 1508, -2829, 5566, 887, 1547, 1548, -2829, 5568, 1539, 1640, 5564, 1536, 5565, 622, 5581, 5583, 5362, 5598, 1537, 5590, 5591, 1538, 5604, 5635, 5592, 622, 5640, 5637, 5650, 887, 5644, 5648, 1510, 5395, 5658, 1549, 5663, 5672, 5676, 5677, 5678, 5679, 1540, -2829, 5390, 5680, 5689, 5690, 1539, 5691, 5692, 5697, 5699, 622, 5714, 5715, 622, 5701, 5728, 4310, 5718, 5708, 5738, 762, 622, 622, 4602, 888, 5741, 5737, 5740, 5753, 622, 622, 35, 5757, 5776, 622, 5782, 3831, 5785, 622, 1540, 5788, 622, 622, 4393, 5720, 1513, 622, 5790, 5796, 5792, 5799, 5800, 622, 1514, 5819, 2551, 5818, 5816, 4332, 5817, 1550, 2735, 5704, 5826, 1641, 5827, 5833, 5843, 1542, 622, 5844, 5832, 5856, 1516, 5858, 5849, 622, 5842, 1543, 5865, 5870, 622, 1517, 5878, 622, 622, 1518, 1544, 5880, 5771, 5887, 5885, 622, 5786, 5787, 5896, 5895, 5897, 5913, 1545, 5915, 5933, 5938, 622, 1641, 3832, 5948, 5951, 1542, 5425, 5959, 622, 5965, 5967, 5986, 5088, 5090, 5992, 1543, 5993, 5783, 5996, 6005, 6007, 6028, 6008, 6029, 1544, 6030, 6032, 6033, 622, 5557, 5102, 887, 6055, 6042, 6066, 1642, 1545, 1519, 1547, 1548, 4127, 3833, 6057, 6058, -2829, 6068, 888, 6075, 6076, 6070, 6086, 3514, 6081, 6087, 6090, 5942, 5943, 3349, 6045, 945, 6096, 6103, 6099, 1422, 5513, 3356, 3775, 1529, 2909, 1643, 1635, 3564, 3356, 4053, 1634, 3642, 3645, 3356, 1547, 1548, 3356, 4198, 2050, 187, 888, 2051, 4748, 4741, 5881, -2829, -2829, -2829, 3684, 3732, 2535, 4474, 4344, 5437, 762, 5770, 4891, 945, 5966, 5489, 4738, 5471, 888, 5208, 4145, 3643, 5134, 3879, 5872, 945, 5614, 5372, 5962, 5791, 2544, 5789, 5142, 5894, 5977, 4150, 5237, 2545, 4913, 4942, 4883, 622, 4921, 5751, 3750, 3751, 4746, 4216, 622, 1550, 4404, 4908, 5231, 1619, 5477, 4444, -2829, 4966, 5693, 6025, 945, 6102, 6088, 2546, 5452, 4350, 4950, 2483, 2484, 2485, 2486, 2487, 2488, 5899, 5397, 5600, 2976, 5759, 5400, 726, 779, 1045, 4495, 5577, 4983, 6021, 1688, 3779, 4952, 1550, 4528, 888, 3039, 4136, 3419, 3035, 4461, 5687, 5514, 5609, 3051, 3068, 3143, 1115, 887, 3144, 1155, 4314, 3682, 4777, 5919, 4260, 6056, 1114, 4538, 887, 5747, 622, 1367, 4969, 3709, 2668, 4970, 3364, 1974, 2934, 6071, 5091, 5576, 4669, 5866, 887, 2556, 622, 813, 2505, 814, 4097, 1772, 4559, 3203, 4109, 3374, 5861, 5730, 4071, 4637, 5335, 4622, 3224, 4065, 5547, 5546, 4066, 4670, 6039, 5848, 945, 5949, 2617, 5719, 2616, 2621, 5771, 622, 5536, 2565, 4571, 5731, 970, 5732, 3293, 3209, 4028, 3934, 3708, 4026, 2547, 3362, 1418, 3302, 0, 2548, 0, 0, 0, 5242, 0, 0, 0, 0, 0, 3349, 0, 0, 0, 0, 3349, 0, 0, 3349, 0, 0, 0, 0, 5960, 2050, 0, 4099, 2051, 888, 0, 888, 0, 0, 0, 0, 0, 0, 2550, 970, 187, 187, 5744, 0, 0, 5394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5396, 0, 0, 0, 0, 2544, 945, 0, 0, 0, 0, 0, -2829, 0, 0, 0, 0, 0, 0, 5537, 0, 0, 0, 0, 622, 0, 3356, 622, 0, 0, 622, 622, 622, 0, 5439, 0, 0, 2551, 2546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 887, 0, 0, 5558, 0, 622, 622, 0, 0, 622, 2042, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1114, 0, 0, 0, 0, 0, 762, 0, 0, 0, 622, 0, 0, 0, 0, 0, 622, 0, 0, 0, 622, 0, 0, 0, 6064, 0, 888, 622, 0, 0, 0, 0, 762, 0, 0, 0, 6079, 5042, 0, 0, 622, 0, 0, 622, 0, 0, 762, 0, 945, 0, 945, 0, 0, 0, 622, 0, 5605, 5606, 762, 2553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6064, 0, 0, 5356, 0, 0, 0, 0, 0, 0, -2829, 0, 0, 0, 0, -2829, 0, 0, 6064, 0, 0, 620, 888, 945, 0, 0, 0, 0, 0, 0, 0, 0, 0, 622, 0, 0, 0, 0, 772, 0, 774, 0, 0, 0, 780, 0, 0, 3356, 0, 794, 802, 772, -2829, 809, 0, 0, 802, 802, 0, 839, 0, 842, 1192, 1193, 0, 0, 0, 3356, 896, 896, 896, 0, 0, 1772, 0, 0, 5609, 0, 622, 6089, 0, 3356, 0, 0, 0, 0, 0, 2479, 0, 0, 0, 0, 0, 0, 0, -2829, -2829, -2829, 2483, 2484, 2485, 2486, 2487, 2488, 187, 0, 0, 2551, 0, 0, 0, 0, 0, 0, 5476, 5709, 0, 0, 0, 6014, 6015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5727, 0, 5729, 0, 622, 0, 0, 888, 0, 0, 5502, 0, 0, 0, 0, 762, 0, 0, 2652, 0, 0, 184, 191, 71, 186, 180, 175, 80, 83, 181, 0, 183, 0, 84, 4894, 85, 622, 86, 106, 124, 622, 129, 622, 900, 159, 0, 178, 0, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1114, 0, 0, 0, 622, 0, -2829, 622, 0, 1532, 762, 0, 0, 0, 0, 1533, 0, 0, 622, 620, 925, 925, 0, 0, 925, 622, 0, 2652, 936, 0, 839, 0, 0, 972, 0, 0, 936, 0, 0, 936, 0, 0, 839, 0, 925, 3356, 0, 839, 0, 0, 0, 925, 0, 839, 0, 5504, 0, 0, 0, 0, 1535, 0, 3349, 0, 0, 0, 0, 0, 887, 0, 0, 0, 970, 0, 0, 888, 0, 0, 0, 0, 888, 888, 0, 0, 0, 622, 0, 0, 0, 0, 0, 622, 622, 945, 0, 0, 0, 0, 0, 0, 0, 887, 0, 3356, 0, 0, -2829, 945, 0, 0, 0, 0, 0, 0, 0, 0, 1536, 2483, 2484, 2485, 2486, 2487, 2488, 1537, 0, 0, 1538, 622, 0, 0, 0, 0, 0, 0, 0, 622, 0, 0, 1772, 0, 0, 0, 0, 0, 0, 3376, 0, 0, 0, 0, 0, 0, 0, 1539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 622, 0, 0, 0, 619, 0, 0, 0, 0, 0, 0, 0, 5666, 0, 0, 0, 0, 0, 1688, 1688, 1688, 0, 0, 0, 1540, 0, 0, 0, 0, 888, 888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 622, 0, 187, 0, 0, 0, 622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 622, 1772, 0, 0, 888, 0, 0, 0, 762, 622, 0, 622, 0, 622, 762, 0, 187, 5877, 762, 1641, 622, 0, 0, 1542, 0, 0, 0, 5734, 0, 3356, 187, 0, 0, 1543, 0, 0, 0, 0, 0, 0, 0, 622, 1544, 0, 0, 5158, 5159, 0, 0, 0, 5162, 5163, 0, 5122, 1545, 0, 0, 0, 0, 887, 0, 0, 0, 0, 0, 0, 1772, 0, 945, 0, 887, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 887, 0, 0, 5926, 5927, 5144, 0, 1669, 0, 0, 1547, 1548, 0, 2040, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5160, 6013, 0, 0, 0, 0, 3356, 0, 622, 0, 0, 0, 923, 0, 1670, 1502, 0, 0, 0, 0, 0, 935, 0, 0, 0, 0, 887, 0, 0, 935, 0, 0, 935, 0, 0, 0, 0, 0, 0, 0, 0, 887, 0, 0, 887, 887, 622, 622, 622, 0, 1503, 0, 0, 0, 622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 622, 0, 0, 0, 0, 0, 0, 0, 0, 5188, 622, 887, 887, 945, 0, 0, 0, 0, 1550, 0, 0, 0, 0, 0, 0, 0, 622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 945, 0, 0, 6082, 3356, 0, 1024, 0, 1504, 0, 0, 0, 839, 0, 925, 0, 925, 0, 0, 925, 0, 3349, 0, 187, 0, 0, 972, 0, 0, 0, 0, 1082, 0, 925, 0, 0, 0, 0, 0, 925, 0, 622, 0, 5900, 1505, 0, 0, 0, 0, 0, 0, 622, 0, 0, 0, 0, 0, 0, 0, 622, 622, 0, 0, 620, 0, 622, 191, 622, 5924, 5921, 0, 0, 936, 5922, 1688, 5923, 972, 1688, 0, 936, 1506, 0, 936, 622, 622, 0, 0, 0, 0, 0, 0, 5272, 0, 0, 0, 0, 0, 0, 925, 0, 0, 0, 2050, 0, 887, 2051, 0, 0, 187, 0, 5991, 0, 0, 0, 0, 0, 0, 945, 1507, 0, 0, 0, 1508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6097, 6098, 0, 0, 0, 2544, 0, 622, 0, 0, 0, 0, -2829, 622, 0, 0, 0, 3356, 839, 0, 1509, 1510, 0, 0, 0, 191, 0, 5924, 5921, 0, 0, 622, 5922, 1221, 5923, 0, 0, 0, 2546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 622, 0, 1337, 1337, 0, 839, 802, 0, 1511, 0, 802, 0, 35, 0, 622, 0, 0, 1512, 0, 0, 0, 0, 0, 0, 839, -2828, 1513, 0, 4310, 839, 762, 0, 0, 0, 1514, 1337, 0, 0, 0, 0, 0, 0, 1515, 0, 0, 622, 0, 0, 0, 0, 0, 0, 622, 0, 1516, 3356, 0, 0, 0, 0, 1532, 3356, 0, 1517, 0, 0, 1533, 1518, 0, 3244, 0, 0, 622, 0, 0, 0, 0, 0, 0, 1772, 1337, 1534, 0, 0, 191, -2609, 5924, 5921, 0, 0, 0, 5922, 0, 5923, 839, 0, 0, 0, 0, 0, 0, -2829, 0, 0, 0, 0, -2829, 839, 0, 0, 0, 1535, 3203, 3203, 622, 622, 0, 3203, 0, 622, 0, 1519, 839, 622, -2828, 0, 0, 1772, 0, 0, 0, 0, 0, 0, 0, 622, 622, 0, 0, 0, 0, 839, 0, -2829, 0, 1772, 925, 925, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 3203, 3203, 0, 0, 0, 0, 0, 924, 926, 1536, 0, 929, 0, 3356, 0, 0, 1537, -2828, 0, 1538, 802, 802, 0, 187, 0, 0, -2609, 0, 0, 0, -2828, 987, 0, 0, 0, 0, -2828, 0, 997, 0, 2551, -2828, 0, 1337, 1337, 0, 1539, -2828, 0, 0, -2828, 0, 0, 0, -2828, 0, 620, 0, 925, 0, 923, 0, 936, 0, 0, 972, 936, 0, 936, 935, 0, 0, 0, 925, 0, 0, 935, -2609, 0, 935, 1540, 0, 0, -2828, 0, -2828, 0, 0, 0, 0, -2609, 0, 0, 0, 0, 0, -2609, 839, 0, 0, 0, -2609, 0, -2828, 925, 925, 0, -2609, 0, 0, -2609, 0, 0, 0, -2609, 5990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 839, 839, 839, 0, 925, 0, 620, -2829, 620, 620, 0, 0, 0, 0, 0, 0, 0, 0, -2609, 0, 1541, 0, 0, 0, 1542, 762, 0, -2828, 0, 0, -2828, 0, 0, 0, 1543, 0, -2828, 0, -2609, 0, 0, 0, 925, 1544, 925, 925, 0, 0, 0, 0, 0, 1532, 0, 0, 0, 1545, 0, 1533, 0, 1980, 0, 0, 0, 0, 1980, 1980, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1337, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2609, 1688, 0, -2609, 0, 0, -2828, 1546, 0, -2609, 1547, 1548, 0, 187, 0, 1535, 1954, 0, 1954, 0, -2829, 0, 839, 0, 772, 0, 0, 0, 0, 0, 0, 2483, 2484, 2485, 2486, 2487, 2488, 0, 839, 0, 0, 1549, 0, 0, 1989, 0, 0, 839, 0, 0, 1995, 0, 0, 0, 0, 0, 0, 0, 3245, 0, 0, 0, 0, 0, 1337, 0, -2609, 0, 0, 0, 0, 1536, 0, 0, 0, 0, 0, 0, 1537, 0, 0, 1538, 0, 0, 0, 0, 0, 0, 0, -2828, 5688, 0, 0, 0, 0, 1337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1539, 1550, 0, 0, 0, -2828, 0, -2828, -2828, 0, 0, 0, 0, 777, 5768, 1337, 1337, 1337, 0, 1337, 0, 0, 1532, 0, 0, 0, 5724, 0, 1533, 0, 0, 0, -2625, 3415, 1540, 1599, 0, 2652, 3421, 1337, 0, -2609, 0, 0, 0, 0, 0, 0, 0, 0, -2828, 0, -2828, -2828, 0, 0, 0, 1600, 0, 0, 0, 0, 0, 0, 0, -2609, 0, -2609, -2609, 0, 0, 0, 0, 1535, 0, 923, 0, 0, 0, 839, 0, 935, 0, 0, 0, 935, 0, 935, 0, 0, 0, 0, 0, 0, 0, 887, 0, 1337, 0, 1641, 0, 887, 0, 1542, 0, 0, 0, -2609, 1601, 0, -2609, -2609, -2609, 1543, 0, 0, 0, 0, 0, 0, 0, 0, 1544, 0, 0, 0, 0, 0, 0, 1536, 1056, -2625, 1059, 0, 1545, 1061, 1537, 0, 0, 1538, 0, 0, 887, 1337, 0, 0, 0, 1337, 1337, 1086, 1865, 0, 1867, 1868, 0, 1090, 0, 0, 839, 839, 839, 2631, 0, 1337, 0, 0, 1539, 0, 0, 0, 0, 0, 0, 2715, 0, 0, 1547, 1548, 0, 0, 0, 0, -2625, 0, 0, 0, 802, 0, 0, 0, 0, 0, 0, 0, 0, -2625, 0, 1602, 0, 0, 1540, -2625, 0, 0, 0, 0, -2625, 2716, 0, 0, 0, 0, -2625, 0, 0, -2625, 0, 0, 0, -2625, 0, 2723, 0, 0, 0, 0, 802, 0, 0, 925, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 839, 2751, 0, 0, 1603, 0, -2625, 0, 1604, 839, 0, 0, 925, 0, 0, 0, 0, 0, 0, 0, 0, 1502, 0, 1605, 0, 0, -2625, 1542, 0, 0, 0, 0, 0, 1550, 0, 0, 0, 1543, 0, 972, 0, 839, 0, 0, 802, 0, 1544, 2819, 2819, 0, 0, 2819, 0, 0, 0, 0, 1503, 1606, 1545, 0, 0, 802, 0, 0, 839, 0, 0, 839, 0, 0, 0, 0, 0, 0, 0, -2625, 0, 1688, -2625, 0, 0, 0, 0, 0, -2625, 0, 0, 0, 0, 925, 0, 0, 0, 0, 0, 0, 0, 1607, 0, 0, 1547, 1548, 1608, 0, 0, 0, 0, 839, 0, 887, 0, 0, 0, 0, 0, 0, 0, 1504, 0, 925, 925, 925, 925, 839, 0, 1609, 0, 0, 0, 0, 0, 1610, 0, 0, 0, 0, 0, 839, 0, 0, 0, -2625, 0, 0, 0, 1611, 0, 0, 1337, 1337, 1337, 0, 0, 1505, 3203, 3203, 3203, 3203, 0, 0, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2652, 0, 0, 0, 2652, 0, 4567, 1506, 0, 943, 0, 6062, 0, 0, 777, 0, 0, 1550, 979, 0, 0, 0, 1564, 1565, 0, 0, 0, 0, 0, 0, 0, 0, 1001, 0, 0, 0, 3203, 3203, 0, 0, 0, 0, -2625, 0, 0, 1507, 0, 0, 0, 1508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6062, 0, 0, 0, 0, 839, 688, -2625, 0, -2625, -2625, 0, 0, 0, 0, 776, 839, 0, 6062, 0, 4626, 1573, 1510, 0, 925, 925, 0, 0, 0, 0, 0, 0, 0, 1791, 0, 0, 0, 0, 0, 0, 925, 0, 0, 0, 0, 0, 0, 887, 1803, -2625, 0, 0, -2625, -2625, -2625, 0, 0, 0, 839, 2819, 1574, 0, 887, 0, 35, 0, 0, 887, 0, 1512, 0, 0, 0, 0, 925, 925, 925, 925, 1513, 1825, 1826, 0, 0, 839, 0, 0, 1514, 0, 0, 0, 839, 0, 0, 0, 1575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1863, 0, 1516, 620, 0, 0, 620, 0, 0, 0, 0, 1517, 0, 0, 0, 1518, 936, 936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 972, 0, 0, 936, 0, 0, 936, 0, 0, 0, 0, 0, 1900, 1902, 0, 0, 0, 0, 0, 0, 0, 925, 925, 0, 0, 0, 2050, 0, 925, 2051, 839, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 0, 1519, 0, 0, 0, 0, 0, 1954, 0, 0, 0, 0, 2543, 0, 925, 0, 936, 0, 0, 3115, 936, 936, 2544, 839, 839, 0, 925, 0, 0, 2545, 0, 0, 0, 839, 0, 0, 0, 0, 0, 0, 839, 0, 0, 0, 0, 0, 772, 772, 0, 0, 3151, 0, 0, 0, 1337, 2546, 1337, 0, 0, 0, 0, 1337, 1337, 0, 0, 0, 0, 0, 1337, 1337, 1337, 0, 0, 1337, 0, 1337, 972, 1337, 1337, 1337, 1337, 1337, 1337, 3829, 0, 1337, 0, 1337, 1337, 0, 2050, 1337, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 0, 0, 0, 1502, 1337, 1337, 1337, 0, 0, 0, 0, 0, 2543, 0, 0, 0, 0, 0, 0, 0, 0, 1337, 2544, 0, 0, 0, 0, 0, 0, 2545, 0, 0, 0, 0, 0, 0, 1532, 0, 1503, 0, 3203, 0, 1533, 0, 0, 0, 2652, 0, 0, 3421, 0, 3421, 0, 0, 0, 2546, 2652, 0, 0, 0, 0, 925, 0, 0, 0, 2547, 0, 0, 0, 0, 2548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1535, 0, 0, 0, 0, 2549, 2238, 0, 0, 0, 0, 0, 1504, 0, 0, 0, 0, 887, 0, 0, 2550, 0, 0, 0, 0, 887, 0, 0, 0, 0, 0, 1070, 0, 0, 0, 0, 0, 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1505, 1070, 2652, 0, 0, 0, 0, 0, 1536, 0, 0, 0, 0, 2290, 2050, 1537, 0, 2051, 1538, 0, 0, 2052, 2053, 2054, 0, 0, 0, 2551, 0, 1337, 2552, 3830, 0, 0, 2547, 923, 1506, 0, 923, 2548, 2543, 0, 0, 0, 0, 1539, 0, 0, 935, 935, 2544, 0, 0, 0, 0, 0, 0, 2545, 0, 0, 0, 2549, 2238, 935, 0, 0, 935, 0, 0, 1337, 0, 0, 887, 0, 887, 0, 2550, 0, 1508, 1540, 0, 0, 0, 2546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5024, 1510, 0, 0, 2733, 0, 0, 935, 2290, 0, 2553, 935, 935, 1337, 0, 0, 0, 0, 0, 0, 0, 0, 2551, 0, 0, 2552, 0, 0, 0, 2772, 0, 0, 0, 0, 0, 1541, 0, 0, 0, 1542, 0, 0, 0, 35, 0, 0, 0, 0, 1512, 1543, 0, 0, 0, 0, 0, 0, 0, 1513, 1544, 887, 0, 0, 0, 0, 0, 1514, 0, 0, 0, 0, 1545, 0, 0, 2735, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1516, 1688, 0, 2547, 0, 0, 0, 1688, 2548, 1517, 0, 0, 0, 1518, 0, 0, 887, 0, 0, 1046, 0, 2862, 0, 0, 2793, 2479, 0, 1547, 1548, 2553, 2549, 2238, 3832, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 3421, 2550, 3949, 0, 0, 3950, 0, 2888, 2889, 2890, 2891, 0, 0, 0, 2794, 0, 0, 0, 0, 0, 0, 0, 0, 1519, 0, 1113, 688, 3833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2551, 0, 0, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 887, 1337, 0, 0, 0, 0, 0, 0, 0, 839, 1337, 0, 0, 1337, 1550, 0, 0, 2479, 0, 0, 839, 0, 3421, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 0, 0, 0, 3951, 0, 0, 887, 0, 0, 0, 0, 0, 0, 0, 839, 1212, 1337, 0, 0, 925, 1337, 0, 0, 1337, 0, 1337, 0, 0, 1337, 0, 0, 0, 1337, 0, 0, 0, 0, 0, 0, 0, 0, 1230, 2553, 0, 0, 0, 0, 2944, 2945, 1340, 0, 0, 1349, 1113, 1353, 3359, 0, 0, 0, 0, 0, 839, 839, 2962, 0, 0, 0, 0, 0, 0, 0, 0, 1337, 0, 0, 0, 0, 0, 0, 0, 0, 1337, 1337, 0, 0, 0, 0, 0, 0, 887, 0, 0, 0, 0, 0, 839, 0, 3005, 3006, 3007, 3008, 0, 0, 3403, 0, 3408, 0, 0, 0, 0, 0, 0, 0, 887, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 0, 887, 0, 0, 0, 2479, 0, 0, 772, 0, 772, 0, 2543, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2544, 0, 0, 0, 0, 1337, 0, 2545, 0, 0, 0, 0, 0, 0, 0, 0, 620, 0, 3082, 936, 972, 936, 936, 2050, 3086, 925, 2051, 0, 839, 0, 2052, 2053, 2054, 2546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3203, 802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2544, 2751, 0, 0, 0, 0, 0, 2545, 0, 3517, 839, 0, 0, 0, 0, 0, 3528, 0, 0, 0, 0, 0, 0, 0, 0, 839, 0, 0, 0, 0, 0, 0, 0, 2546, 0, 0, 1113, 0, 0, 0, 0, 0, 3203, 0, 0, 0, 0, 839, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 839, 0, 2652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2543, 802, 0, 0, 0, 0, 0, 0, 2547, 0, 2544, 0, 0, 2548, 0, 0, 0, 2545, 0, 0, 0, 0, 0, 2050, 925, 0, 2051, 925, 0, 0, 2052, 2053, 2054, 0, 0, 2549, 2238, 0, 0, 0, 0, 0, 0, 2546, 0, 0, 0, 0, 0, 0, 2550, 0, 0, 839, 839, 0, 0, 0, 0, 2544, 0, 0, 3247, 0, 0, 0, 2545, 2547, 3671, 0, 3674, 3676, 2548, 0, 0, 0, 0, 0, 0, 0, 3421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2290, 2546, 0, 2549, 2238, 619, 0, 0, 0, 0, 1337, 1337, 1337, 0, 2551, 3421, 1337, 2552, 2550, 0, 0, 0, 0, 0, 925, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 925, 0, 0, 0, 0, 0, 1337, 0, 925, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 2751, 2290, 0, 0, 0, 839, 0, 0, 2547, 0, 0, 3776, 0, 2548, 772, 2551, 0, 0, 0, 0, 1113, 0, 0, 0, 0, 0, 925, 3787, 0, 0, 0, 0, 0, 0, 0, 2549, 2238, 3671, 0, 0, 0, 0, 0, 0, 0, 0, 3203, 925, 2553, 3809, 2550, 0, 0, 0, 0, 0, 0, 2547, 0, 0, 0, 0, 2548, 0, 0, 0, 0, 923, 0, 0, 935, 0, 935, 935, 0, 3203, 0, 0, 0, 0, 0, 0, 0, 0, -2829, -2829, 0, 0, 925, 0, 925, 2290, 925, 0, 0, 0, 0, 2045, 0, 2550, 887, 0, 0, 0, 0, 2551, 2048, 2553, 2552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2503, 0, 0, 0, 0, 1954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2829, 1113, 0, 0, 2522, 2523, 0, 3421, 2479, 1113, 1113, 0, 2652, 0, 2551, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 0, 0, 0, 4002, 0, 0, 0, 0, 0, 620, 925, 0, 936, 0, 936, 936, 0, 925, 0, 0, 0, 0, 0, 0, 1337, 0, 0, 0, 2553, 1337, 0, 0, 0, 0, 0, 0, 2907, 0, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 1337, 1337, 1337, 0, 0, 1337, 0, 0, 0, 0, 0, 0, 0, 1337, 1337, 1337, 1337, 0, 0, 0, 0, 2553, 0, 0, 0, 0, 0, 0, 0, 1337, 0, 0, 1337, 0, 1337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1337, 1337, 0, 0, 1337, 0, 0, 0, 0, 0, 0, 1532, 0, 0, 887, 0, 0, 1533, 0, 0, 0, 972, 0, 1337, 1599, 1337, 2479, 1337, 0, 0, 3203, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 2931, 1600, 1337, 0, 0, 0, 839, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 839, 0, 0, 2479, 0, 0, 0, 3247, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 619, 0, 1601, 0, 0, 620, 0, 0, 3359, 4075, 0, 2986, 0, 4075, 4089, 4075, 0, 0, 0, 3003, 1337, 0, 0, 1536, 0, 1337, 0, 2907, 0, 0, 1537, 0, 0, 1538, -136, 0, 0, 0, 2860, 0, 1337, 0, 0, 0, 887, 0, 2868, 0, 0, 0, 0, 0, 0, 0, 3359, 0, 1, 0, 4120, 0, 1539, 4123, 3359, 0, 3408, 0, 2, 0, 3, 4, 0, 3061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 887, 0, 0, 0, 5, 0, 0, 0, 0, 1602, 0, 0, 1540, 0, 6, 0, 2907, 0, 0, 0, 5847, 0, 887, 1337, 0, 0, 7, 0, 8, 9, 0, 0, 0, 0, 0, 10, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, 0, 925, 925, 0, 0, 0, 1603, 0, 0, 0, 1604, 0, 0, 0, 0, 3482, 14, 923, 0, 15, 935, 0, 935, 935, 0, 1605, 0, 0, 0, 1542, 0, 0, 0, 0, 16, 0, 17, 0, 0, 1543, 18, 0, 0, 887, 0, 0, 19, 0, 1544, 0, 0, 0, 0, 0, 20, 0, 21, 0, 0, 1606, 1545, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1502, 0, 0, 0, 24, 0, 3617, 3203, 3203, 1547, 1548, 1608, 0, 0, 0, 0, 839, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2819, 0, 0, 0, 0, 0, 0, 2997, 1609, 1503, 0, 3002, 0, 0, 3618, 0, 0, 0, 25, 26, 0, 0, 0, 0, 27, 0, 0, 0, 1611, 0, 0, 0, 0, 0, 3622, 0, 0, 3625, 28, 0, 0, 0, 0, 5270, 0, 887, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1550, 0, 0, 0, 0, 0, 0, 0, 0, 619, 0, 0, 619, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 1337, 1505, 0, 0, 0, 0, 1337, 0, 0, 31, 0, 0, 0, 0, 0, 32, 33, 925, 34, 0, 3716, 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 3729, 0, 619, 0, 1506, 0, 38, 0, 3738, 0, 619, 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, 839, 839, 839, 42, 0, 0, 0, 887, 0, 0, 0, 0, 0, 43, 0, 0, 0, 839, 0, 0, 3185, 1507, 0, 0, 0, 1508, 3782, 0, 44, 0, 0, 1337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3806, 45, 1954, 839, 839, 0, 0, 0, 839, 1590, 1510, 0, 46, 0, 0, 0, 0, 0, 47, 0, 839, 0, 0, 48, 0, 0, 0, 0, 3421, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 3861, 0, 3863, 0, 0, 1591, 0, 0, 0, 35, 0, 0, 0, 0, 1512, 0, 50, 51, 52, 53, 54, 55, 0, 1513, 0, 0, 0, 0, 0, 0, 0, 1514, 0, 925, 56, 0, 0, -136, 0, 1592, 0, 0, 0, 0, 0, 0, 0, 3115, 4496, 0, 0, 1516, 0, 0, 0, 0, 839, 0, 0, 0, 1517, 0, 0, 0, 1518, 0, 0, 2050, 0, 839, 2051, 0, 839, 0, 2052, 2053, 2054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3919, 0, 1337, 0, 2543, 0, 0, 3926, 0, 0, 1337, 0, 1337, 0, 2544, 0, 3421, 0, 0, 0, 1337, 2545, 1337, 0, 0, 1337, 0, 0, 0, 1519, 1337, 1337, 1337, 1337, 0, 0, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 0, 2546, 0, 1337, 1337, 1337, 0, 0, 0, 0, 0, 0, 0, 1337, 0, 0, 0, 0, 1337, 0, 0, 0, 1337, 0, 0, 0, 0, 0, 0, 0, 1337, 0, 0, 1337, 0, 1337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1337, 0, 0, 1337, 1337, 0, 0, 0, 1337, 1337, 0, 0, 0, 4604, 0, 1337, 0, 0, 0, 0, 0, 0, 839, 839, 839, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4075, 4089, 4075, 0, 1337, 4075, 0, 0, 4628, 887, 0, 0, 3359, 0, 887, 887, 3359, 0, 0, 0, 0, 0, 4643, 0, 0, 0, 0, 0, 2547, 0, 0, 0, 0, 2548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1337, 0, 0, 0, 0, 0, 0, 2549, 2238, 0, 0, 0, 0, 0, 0, 3408, 0, 1337, 0, 0, 0, 0, 2550, 0, 0, 0, 0, 0, 0, 689, 0, 0, 0, 0, 2702, 4691, 1954, 1954, 3410, 0, 1954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3426, 0, 0, 0, 3429, 0, 0, 2290, 3432, 0, 0, 0, 0, 0, 0, 0, 2703, 0, 0, 2751, 4723, 2551, 5270, 887, 2552, 0, 0, 0, 0, 692, 0, 0, 0, 0, 0, 3457, 0, 0, 4744, 0, 0, 0, 0, 0, 0, 693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1029, 0, 0, 0, 887, 0, 3499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4161, 4162, 2704, 0, 1070, 0, 4793, 0, 0, 0, 0, 0, 0, 696, 0, 0, 2050, 0, 0, 2051, 0, 0, 697, 2052, 2053, 2054, 0, 0, 2553, 3309, 0, 0, 0, 0, 0, 698, 3549, 0, 0, 0, 2705, 0, 2543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2544, 0, 0, 0, 0, 0, 0, 2545, 0, 0, 4838, 3578, 0, 0, 1032, 0, 0, 3587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3597, 0, 2546, 0, 0, 0, 0, 1070, 0, 0, 3610, 0, 925, 0, 0, 0, 3615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 925, 0, 1337, 0, 702, 0, 0, 0, 0, 839, 3628, 0, 0, 0, 0, 4882, 3631, 0, 0, 2479, 0, 0, 0, 3637, 0, 0, 2751, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 3652, 0, 0, 3232, 839, 0, 0, 0, 2706, 3359, 3787, 0, 0, 3677, 0, 0, 619, 3671, 0, 0, 619, 0, 0, 0, 1070, 0, 4931, 0, 0, 0, 0, 0, 1113, 0, 0, 0, 839, 0, 0, 0, 0, 0, 213, 2707, 0, 0, 707, 0, 1337, 1337, 0, 0, 0, 2547, 0, 0, 0, 0, 2548, 1337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1954, 839, 0, 1036, 0, 0, 2708, 0, 0, 0, 2549, 2238, 711, 0, 0, 0, 0, 619, 839, 712, 0, 1353, 713, 0, 4333, 2550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 714, 0, 2052, 2053, 2054, 0, 0, 1038, 0, 0, 0, 0, 0, 716, 0, 1337, 1039, 0, 0, 0, 718, 2543, 0, 0, 0, 2290, 0, 1337, 2709, 0, 0, 2544, 0, 0, 0, 2710, 0, 0, 2545, 2551, 0, 0, 2552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1337, 0, 0, 1337, 0, 1353, 723, 0, 0, 2546, 0, 1337, 1337, 0, 0, 0, 0, 0, 0, 1337, 1337, 0, 0, 0, 1337, 0, 0, 0, 1337, 1353, 0, 1337, 1337, 0, 0, 0, 1337, 5047, 0, 0, 0, 0, 1337, 839, 839, 839, 839, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 620, 0, 0, 4075, 0, 0, 0, 3359, 0, 0, 0, 0, 3359, 0, 3894, 3359, 620, 2553, 3671, 0, 5079, 0, 0, 1337, 0, 972, 0, 0, 0, 4486, 0, 0, 3908, 0, 1337, 0, 0, 3680, 4120, 3894, 0, 0, 1337, 0, 3408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 772, 0, 0, 1337, 0, 2547, 0, 0, 0, 0, 2548, 0, 0, 0, 0, 3712, 0, 3712, 0, 3712, 3712, 0, 0, 0, 3712, 3712, 3712, 0, 3712, 3712, 3712, 0, 2549, 2238, 0, 0, 0, 2751, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2550, 0, 0, 0, 0, 0, 5143, 0, 0, 0, 0, 2479, 0, 0, 0, 1688, 0, 619, 619, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 4346, 0, 0, 3789, 0, 0, 0, 0, 0, 2290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1532, 0, 2551, 0, 1337, 2552, 1533, 3817, 0, 0, 0, 1337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 925, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 925, 2050, 1535, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2543, 0, 0, 0, 1337, 0, 2050, 0, 0, 2051, 2544, 0, 0, 2052, 2053, 2054, 0, 2545, 2553, 0, 620, 0, 0, 0, 0, 0, 0, 2751, 0, 0, 0, 1536, 2543, 0, 0, 0, 1954, 0, 1537, 0, 0, 1538, 2544, 2546, 0, 0, 0, 0, 0, 2545, 0, 3787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 925, 0, 3809, 0, 1539, 0, 0, 0, 0, 0, 0, 2546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1532, 839, 0, 0, 0, 0, 1533, 0, 0, 0, 0, 1540, 839, 619, 0, 0, 0, 0, 0, 0, 619, 0, 0, 0, 0, 619, 0, 2479, 619, 5075, 0, 4157, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 4529, 0, 0, 1535, 0, 0, 0, 0, 0, 1337, 0, 0, 1337, 0, 0, 1337, 1337, 1337, 2547, 0, 0, 0, 0, 2548, 0, 0, 0, 0, 1641, 0, 0, 0, 1542, 0, 0, 0, 0, 0, 0, 0, 1337, 1337, 1543, 0, 1337, 2549, 2238, 0, 0, 0, 2547, 1544, 0, 0, 0, 2548, 0, 0, 0, 1536, 2550, 0, 0, 1545, 0, 1337, 1537, 0, 0, 1538, 0, 1337, 0, 1113, 0, 3359, 0, 2549, 2238, 5079, 0, 0, 1337, 4229, 5353, 0, 0, 0, 0, 0, 0, 0, 2550, 0, 0, 4691, 1539, 0, 1337, 0, 0, 2290, 3509, 0, 0, 1547, 1548, 0, 0, 4691, 972, 925, 0, 925, 0, 2551, 0, 0, 2552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4862, 0, 1540, 0, 0, 2290, 0, 0, 1549, 0, 0, 0, 0, 0, 4864, 0, 0, 0, 0, 2551, 0, 0, 2552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 936, 972, 0, 0, 937, 947, 0, 0, 0, 0, 0, 0, 937, 0, 947, 937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 1641, 0, 0, 0, 1542, 0, 0, 0, 0, 1550, 936, 0, 2553, 0, 1543, 4325, 0, 0, 0, 0, 0, 0, 4882, 1544, 0, 5214, 0, 839, 0, 0, 0, 0, 839, 0, 0, 1545, 0, 1113, 0, 0, 0, 2751, 0, 0, 2553, 0, 0, 0, 0, 0, 0, 839, 0, 0, 0, 4931, 619, 0, 5491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 925, 839, 4691, 0, 0, 3687, 0, 0, 1547, 1548, 0, 0, 0, 0, 0, 0, 0, 1532, 0, 1532, 0, 0, 0, 1533, 0, 1533, 0, 0, 0, 0, 0, 0, 0, 0, 1337, 0, 0, 0, 1337, 3688, 1337, 0, 0, 2479, 0, 0, 4221, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 620, 0, 0, 1337, 4580, 0, 0, 5555, 1535, 0, 1535, 0, 0, 0, 1337, 2479, 0, 0, 0, 0, 0, 1337, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 4685, 0, 0, 0, 0, 0, 0, 0, 4269, 0, 0, 1550, 0, 0, 0, 0, 0, 0, 0, 0, 839, 0, 0, 0, 0, 0, 0, 0, 1536, 2907, 1536, 0, 0, 0, 0, 1537, 0, 1537, 1538, 0, 1538, 0, 0, 0, 0, 1337, 0, 0, 4497, 0, 0, 1337, 1337, 0, 619, 0, 925, 925, 925, 925, 0, 0, 0, 0, 0, 1539, 0, 1539, 0, 0, 0, 0, 0, 4513, 619, 0, 4312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1337, 619, 0, 0, 0, 0, 0, 0, 620, 0, 0, 0, 1540, 0, 1540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 839, 0, 3712, 3359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4343, 4343, 0, 0, 0, 935, 0, 0, 0, 0, 4359, 0, 0, 0, 839, 1113, 0, 1113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1641, 0, 1641, 0, 1542, 0, 1542, 0, 0, 0, 0, 0, 1337, 0, 1543, 0, 1543, 0, 1337, 0, 935, 0, 1954, 1544, 0, 1544, 3671, 0, 0, 1337, 0, 0, 0, 4414, 0, 1545, 0, 1545, 1337, 0, 1337, 0, 1337, 5353, 0, 0, 0, 0, 0, 4691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1954, 0, 972, 0, 0, 0, 0, 947, 0, 4450, 1113, 1337, 0, 0, 5181, 4173, 0, 4231, 1547, 1548, 1547, 1548, 619, 0, 0, 0, 947, 0, 0, 5185, 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 947, 0, 1954, 1954, 0, 4174, 0, 4232, 0, 0, 0, 0, 0, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 937, 947, 0, 925, 0, 0, 619, 937, 0, 947, 937, 2050, 0, 0, 2051, 0, 0, 5812, 2052, 2053, 2054, 0, 0, 947, 0, 0, 0, 0, 4709, 0, 0, 0, 0, 947, 0, 0, 0, 2543, 0, 0, 0, 0, 0, 1550, 0, 1550, 5243, 2544, 0, 0, 0, 0, 0, 0, 2545, 1337, 1337, 1337, 0, 0, 0, 0, 0, 1337, 0, 0, 0, 5555, 0, 0, 0, 0, 0, 1337, 0, 0, 0, 0, 0, 0, 2546, 0, 3408, 1337, 0, 0, 0, 0, 0, 0, 0, 947, 0, 0, 0, 0, 0, 2050, 0, 936, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 0, 4582, 0, 925, 0, 0, 0, 0, 0, 947, 1954, 0, 2543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2544, 0, 0, 0, 5649, 0, 0, 2545, 0, 0, 0, 0, 947, 2751, 0, 0, 0, 0, 0, 0, 1337, 0, 0, 0, 4820, 0, 0, 4823, 0, 0, 4691, 0, 619, 2546, 0, 0, 0, 0, 936, 936, 5929, 0, 0, 0, 1337, 0, 1337, 0, 0, 0, 0, 0, 0, 0, 0, 1954, 1954, 5944, 0, 0, 0, 2547, 1337, 1337, 0, 0, 2548, 0, 5950, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2549, 2238, 925, 0, 0, 0, 0, 0, 0, 0, 0, 5375, 0, 5376, 0, 2550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5812, 925, 925, 619, 0, 0, 4691, 0, 0, 4905, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 620, 2290, 2907, 0, 2547, 0, 0, 0, 0, 2548, 0, 0, 0, 0, 0, 2551, 0, 0, 2552, 0, 1337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2549, 2238, 0, 1337, 0, 0, 0, 0, 1774, 0, 0, 0, 0, 0, 947, 2550, 0, 0, 0, 0, 0, 0, 0, 0, 4359, 937, 0, 0, 0, 937, 0, 937, 0, 0, 1337, 0, 0, 0, 0, 6034, 6035, 620, 6038, 5555, 0, 0, 3408, 0, 0, 619, 4783, 0, 3894, 0, 0, 0, 2290, 0, 925, 0, 0, 4691, 0, 0, 0, 4798, 0, 0, 0, 4799, 2551, 4800, 0, 2552, 0, 0, 2553, 0, 5503, 0, 0, 0, 0, 0, 4120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1337, 620, 0, 0, 0, 1337, 0, 0, 0, 620, 0, 0, 0, 0, 4840, 0, 0, 0, 0, 0, 0, 936, 936, 0, 0, 6100, 0, 0, 935, 0, 3712, 0, 0, 0, 947, 3712, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 619, 0, 4911, 947, 0, 0, 0, 0, 935, 935, 0, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 947, 0, 0, 0, 947, 0, 0, 0, 5611, 0, 5613, 0, 0, 0, 4945, 0, 0, 4359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 5006, 619, 0, 0, 0, 0, 0, 619, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5995, 0, 0, 0, 5155, 4993, 4993, 4993, 4993, 0, 4993, 4993, 4993, 4993, 4993, 0, 5165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 947, -136, 0, 0, 0, 0, 0, 0, 947, 947, 0, 0, 2543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2544, 1, 0, 0, 0, 0, 0, 2545, 0, 0, 6036, 2, 0, 3, 4, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 619, 5, 0, 2546, 0, 0, 0, 0, 0, 1774, 0, 6, 2543, 0, 0, 5056, 0, 5058, 0, 0, 0, 0, 2544, 7, 0, 8, 9, 0, 0, 2545, 0, 0, 10, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 6036, 0, 0, 12, 0, 13, 0, 0, 6085, 0, 0, 0, 2546, 0, 0, 0, 0, 0, 0, 0, 935, 935, 14, 0, 0, 15, 0, 0, 0, 0, 0, 5798, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, 0, 0, 0, 18, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 2547, 0, 0, 0, 0, 2548, 0, 0, 2050, 0, 0, 2051, 23, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 0, 0, 0, 3894, 0, 2549, 2238, 24, 0, 0, 0, 0, 2543, 0, 0, 0, 0, 0, 0, 0, 2550, 0, 2544, 0, 0, 0, 0, 0, 0, 2545, 2547, 0, 0, 0, 2050, 2548, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 5882, 25, 26, 0, 0, 0, 0, 27, 0, 2546, 0, 2549, 2238, 0, 2543, 2290, 0, 0, 0, 0, 0, 28, 0, 0, 2544, 0, 2550, 0, 0, 2551, 0, 2545, 2552, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5186, 5187, 0, 0, 0, 0, 0, 0, 2546, 0, 0, 0, 0, 3712, 0, 3712, 3712, 3712, 2290, 0, 3894, 0, 3894, 0, 947, 886, 0, 0, 0, 0, 0, 0, 2551, 0, 30, 2552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 32, 33, 0, 34, 0, 0, 5964, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 2553, 0, 2547, 0, 0, 0, 38, 2548, 0, 5238, 0, 0, 39, 40, 0, 0, 0, 0, 5978, 5978, 41, 0, 0, 0, 42, 0, 0, 0, 0, 2549, 2238, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2550, 877, 0, 0, 5266, 44, 2547, 0, 2553, 2050, 0, 2548, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 947, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 2549, 2238, 2543, 46, 0, 0, 0, 0, 2290, 47, 0, 0, 2544, 4993, 48, 2550, 0, 0, 0, 2545, 0, 0, 2551, 2479, 1774, 2552, 0, 49, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 5043, 2546, 0, 947, 0, 0, 50, 0, 0, 5978, 0, 947, 2290, 0, 0, 0, 0, 0, 0, 947, 0, 0, 0, 0, 56, 0, 2551, -136, 0, 2552, 0, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 5294, 0, 0, 0, 0, 0, 0, 937, 937, 0, 947, 947, 0, 0, 0, 0, 0, 0, 2553, 0, 0, 0, 937, 0, 947, 937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 628, 0, 947, 947, 0, 0, 677, 628, 0, 0, 0, 0, 729, 0, 628, 0, 0, 0, 0, 0, 628, 0, 782, 0, 0, 0, 0, 0, 2547, 0, 0, 2553, 4359, 2548, 0, 0, 0, 0, 0, 0, 937, 850, 850, 0, 937, 937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2549, 2238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2550, 0, 0, 0, 0, 0, 0, 0, 3712, 0, 0, 0, 0, 2479, 0, 0, 0, 5438, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 5305, 0, 0, 0, 0, 0, 0, 2290, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 2551, 0, 0, 2552, 0, 0, 2479, 0, 0, 0, 0, 0, 0, 2543, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2544, 0, 0, 1774, 5313, 0, 0, 2545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 927, 0, 0, 0, 931, 0, 0, 0, 0, 0, 0, 0, 974, 0, 0, 976, 0, 0, 981, 982, 0, 985, 0, 988, 0, 2553, 994, 0, 996, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 0, 0, 0, 0, 2547, 0, 0, 0, 0, 2548, 0, 0, 2543, 0, 0, 0, 0, 0, 0, 1113, 0, 0, 2544, 5624, 0, 0, 2479, 0, 0, 2545, 0, 2549, 2238, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 2550, 5316, 0, 0, 0, 0, 0, 0, 0, 2546, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2543, 0, 0, 0, 2290, 0, 3894, 0, 0, 0, 2544, 0, 0, 0, 0, 886, 0, 2545, 2551, 0, 0, 2552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 886, 0, 2546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 2547, 0, 0, 0, 0, 2548, 0, 0, 0, 0, 0, 0, 0, 2543, 0, 0, 0, 0, 0, 0, 0, 877, 0, 2544, 2553, 0, 0, 2549, 2238, 0, 2545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2550, 0, 1113, 0, 0, 877, 5774, 0, 5775, 0, 0, 0, 5780, 5781, 2546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2547, 0, 0, 0, 0, 2548, 0, 0, 0, 0, 0, 0, 2290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2551, 2549, 2238, 2552, 0, 0, 886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 5369, 0, 0, 0, 0, 0, 0, 0, 0, 2290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1023, 0, 0, 2551, 0, 2547, 2552, 0, 0, 0, 2548, 1060, 0, 0, 0, 1064, 0, 0, 0, 0, 0, 0, 1077, 1078, 2553, 0, 1084, 0, 1087, 1088, 877, 0, 2549, 2238, 0, 1774, 0, 0, 0, 0, 0, 0, 0, 1110, 0, 0, 0, 2550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1151, 0, 1153, 0, 0, 0, 2290, 0, 947, 0, 0, 0, 1169, 2553, 0, 0, 0, 886, 0, 0, 2551, 0, 0, 2552, 0, 0, 947, 879, 886, 0, 947, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, 2479, 947, 886, 628, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 947, 1113, 5402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 937, 0, 937, 937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 877, 0, 0, 2553, 2479, 0, 947, 947, 0, 0, 0, 877, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 850, 0, 5404, 0, 877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1774, 947, 0, 0, 1774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 947, 0, 1774, 2052, 2053, 2054, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 947, 0, 2543, 0, 0, 0, 886, 947, 0, 0, 947, 0, 2544, 0, 6063, 0, 947, 0, 2479, 2545, 2503, 1493, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 947, 0, 0, 5443, 0, 0, 947, 2050, 0, 2546, 2051, 0, 0, 947, 2052, 2053, 2054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6063, 947, 0, 0, 0, 0, 0, 2543, 0, 0, 0, 0, 0, 0, 947, 0, 0, 2544, 6063, 1774, 0, 5056, 0, 0, 2545, 947, 0, 0, 0, 0, 0, 0, 0, 1672, 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2546, 0, 0, 0, 0, 0, 0, 1792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1804, 0, 1805, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1808, 1774, 0, 0, 2521, 0, 0, 1818, 0, 0, 0, 0, 0, 2547, 0, 0, 0, 0, 2548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2549, 2238, 0, 0, 0, 0, 0, 0, 0, 1869, 0, 1871, 0, 0, 0, 2550, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2547, 0, 0, 0, 0, 2548, 0, 2543, 0, 0, 0, 0, 0, 0, 0, 0, 2290, 2544, 0, 0, 0, 0, 0, 0, 2545, 886, 0, 2549, 2238, 0, 2551, 0, 0, 2552, 0, 0, 0, 0, 0, 0, 0, 0, 2550, 0, 0, 628, 0, 628, 0, 628, 2546, 628, 0, 628, 628, 628, 0, 0, 0, 0, 628, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1975, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 2290, 0, 1987, 0, 0, 0, 0, 0, 0, 886, 0, 947, 0, 0, 2551, 0, 0, 2552, 947, 0, 0, 0, 0, 0, 0, 937, 0, 937, 937, 0, 0, 0, 0, 0, 877, 0, 0, 0, 0, 2553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 2547, 0, 886, 0, 0, 2548, 0, 0, 0, 0, 0, 0, 1774, 2543, 0, 0, 0, 0, 1774, 0, 877, 0, 0, 2544, 0, 2553, 0, 2549, 2238, 0, 2545, 0, 0, 0, 0, 0, 0, 0, 0, 946, 0, 0, 2550, 0, 0, 0, 0, 0, 946, 0, 0, 0, 0, 0, 0, 0, 2546, 0, 2479, 0, 0, 877, 946, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 5762, 850, 0, 0, 2290, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 877, 0, 0, 2551, 0, 947, 2552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 5784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2547, 0, 0, 0, 0, 2548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2553, 0, 0, 0, 886, 0, 0, 0, 2549, 2238, 0, 2713, 0, 0, 0, 886, 0, 0, 0, 0, 0, 0, 0, 2550, 0, 0, 0, 0, 0, 0, 0, 886, 0, 0, 0, 0, 0, 0, 0, 947, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 2290, 0, 947, 0, 0, 947, 0, 0, 879, 0, 0, 0, 0, 2543, 2551, 0, 0, 2552, 0, 2805, 886, 0, 0, 2544, 0, 0, 0, 0, 0, 0, 2545, 0, 877, 0, 0, 886, 2479, 0, 886, 886, 0, 0, 0, 877, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 2546, 5976, 0, 877, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 886, 886, 2052, 2053, 2054, 0, 0, 0, 1774, 1774, 1774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2543, 0, 0, 0, 3366, 0, 0, 0, 0, 0, 2544, 0, 947, 0, 0, 0, 2553, 2545, 0, 0, 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, 0, 947, 0, 0, 0, 0, 0, 877, 0, 0, 877, 877, 0, 2546, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 947, 0, 2052, 2053, 2054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 877, 877, 0, 2543, 0, 0, 0, 0, 879, 2547, 0, 0, 0, 2544, 2548, 0, 0, 0, 0, 879, 2545, 0, 0, 3367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 2549, 2238, 0, 0, 886, 0, 0, 0, 0, 2479, 2546, 0, 0, 0, 946, 2550, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 5994, 0, 947, 946, 0, 0, 0, 2935, 0, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2547, 946, 0, 0, 0, 2548, 2290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 946, 0, 0, 2551, 0, 2971, 2552, 0, 0, 0, 2549, 2238, 1774, 0, 0, 946, 0, 0, 947, 0, 947, 0, 0, 946, 0, 2550, 0, 0, 0, 877, 0, 0, 0, 947, 0, 947, 0, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 946, 3032, 0, 3036, 0, 0, 0, 0, 0, 0, 2547, 0, 0, 0, 0, 2548, 0, 0, 0, 2290, 0, 0, 0, 3054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2551, 0, 0, 2552, 2549, 2238, 0, 0, 879, 0, 0, 0, 0, 0, 0, 2553, 3074, 0, 3075, 2550, 0, 0, 947, 0, 0, 946, 0, 0, 0, 880, 0, 0, 0, 3084, 0, 3085, 0, 0, 0, 0, 0, 628, 0, 628, 0, 628, 0, 628, 0, 628, 0, 0, 0, 628, 946, 0, 0, 0, 0, 0, 2290, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2551, 0, 0, 2552, 0, 946, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 2553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4572, 0, 0, 947, 0, 0, 947, 0, 0, 0, 0, 0, 0, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 6040, 0, 0, 946, 0, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 3368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2553, 0, 2543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2544, 0, 0, 0, 0, 4573, 0, 2545, 0, 0, 0, 1774, 0, 0, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 2546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2543, 1773, 0, 0, 0, 879, 0, 946, 0, 0, 2544, 0, 0, 0, 0, 0, 0, 2545, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 0, 0, 0, 0, 2546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3980, 0, 0, 0, 0, 3981, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, 2547, 0, 0, 0, 882, 2548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2549, 2238, 0, 0, 0, 0, 0, 0, 947, 879, 0, 0, 0, 0, 0, 2550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 946, 0, 5936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2547, 0, 0, 2290, 0, 2548, 1774, 0, 0, 0, 0, 1774, 0, 1774, 0, 0, 0, 2551, 0, 0, 2552, 0, 0, 0, 0, 0, 0, 2549, 2238, 0, 0, 0, 0, 0, 946, 0, 0, 1774, 0, 0, 0, 0, 2550, 886, 0, 946, 0, 886, 886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 946, 0, 0, 0, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2290, 947, 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2551, 0, 0, 2552, 0, 0, 0, 0, 886, 0, 0, 0, 3982, 0, 886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 877, 0, 0, 0, 877, 877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 947, 947, 0, 879, 0, 0, 0, 946, 0, 0, 0, 947, 2553, 0, 879, 946, 946, 0, 0, 0, 877, 0, 0, 0, 0, 0, 877, 0, 947, 0, 879, 0, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 877, 1773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 879, 0, 0, 879, 879, 0, 0, 0, 0, 0, 0, 947, 0, 689, 2479, 0, 0, 0, 690, 880, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 879, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 691, 0, 0, 0, 3411, 3412, 0, 0, 0, 0, 0, 0, 0, 692, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3427, 3428, 0, 3430, 3431, 0, 693, 886, 3434, 3435, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3446, 694, 0, 0, 0, 0, 0, 3455, 0, 0, 0, 3458, 3459, 0, 0, 3462, 3463, 0, 0, 0, 0, 0, 3468, 0, 0, 695, 0, 0, 0, 0, 0, 0, 0, 0, 3483, 0, 696, 0, 0, 0, 0, 0, 0, 0, 0, 697, 3500, 0, 0, 0, 0, 3502, 0, 0, 0, 0, 0, 886, 698, 0, 0, 886, 0, 699, 879, 880, 3508, 0, 0, 0, 700, 0, 0, 0, 0, 3515, 877, 0, 3519, 0, 3521, 3524, 3526, 0, 0, 0, 0, 3534, 3537, 701, 0, 0, 0, 0, 0, 0, 0, 3550, 0, 0, 0, 0, 0, 3560, 0, 0, 0, 3563, 0, 0, 0, 0, 0, 0, 0, 0, 0, 946, 0, 3573, 3574, 0, 0, 0, 3579, 0, 0, 947, 0, 0, 3588, 3589, 0, 0, 0, 0, 702, 0, 0, 0, 0, 0, 0, 0, 3598, 0, 0, 3599, 0, 877, 0, 0, 0, 877, 3611, 3612, 0, 0, 0, 0, 3616, 0, 0, 886, 0, 0, 0, 0, 0, 947, 0, 0, 3623, 0, 0, 3626, 0, 703, 886, 0, 3629, 947, 0, 886, 0, 0, 3632, 3633, 0, 0, 704, 882, 0, 0, 3639, 0, 0, 0, 3641, 0, 0, 705, 3648, 3649, 3650, 3651, 0, 3653, 0, 0, 0, 213, 706, 0, 0, 707, 947, 882, 0, 0, 3678, 3679, 0, 3681, 0, 0, 880, 0, 0, 0, 0, 946, 0, 0, 3690, 3691, 3692, 880, 0, 0, 0, 0, 708, 0, 0, 709, 0, 0, 0, 710, 0, 711, 0, 880, 0, 877, 0, 0, 712, 0, 0, 713, 0, 0, 0, 0, 1773, 0, 0, 0, 877, 0, 0, 0, 0, 877, 0, 0, 0, 0, 714, 0, 883, 0, 0, 0, 0, 715, 0, 946, 0, 3744, 0, 716, 1774, 0, 717, 946, 0, 3768, 718, 0, 0, 0, 0, 946, 0, 0, 719, 0, 720, 0, 0, 947, 0, 721, 0, 0, 3780, 0, 0, 0, 0, 0, 0, 0, 0, 0, 722, 0, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 723, 0, 0, 0, 0, 0, 0, 946, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 946, 0, 0, 882, 0, 0, 3848, 0, 0, 0, 0, 0, 0, 946, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3862, 0, 3864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 886, 0, 0, 886, 0, 886, 0, 0, 0, 0, 886, 0, 2543, 0, 0, 3936, 0, 0, 2050, 0, 0, 2051, 2544, 0, 0, 2052, 2053, 2054, 0, 2545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2543, 3927, 0, 0, 0, 0, 0, 0, 0, 0, 2544, 2546, 0, 0, 886, 0, 0, 2545, 0, 0, 0, 0, 886, 0, 0, 0, 0, 0, 0, 947, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1773, 2546, 882, 0, 0, 886, 877, 0, 0, 877, 0, 877, 0, 882, 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 882, 0, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, 877, 0, 0, 886, 0, 886, 0, 0, 0, 0, 0, 2547, 1774, 0, 0, 0, 2548, 937, 0, 0, 0, 0, 0, 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2549, 2238, 0, 0, 0, 2547, 0, 0, 0, 0, 2548, 0, 0, 0, 0, 2550, 0, 0, 0, 0, 880, 879, 0, 0, 0, 879, 879, 0, 0, 0, 0, 0, 2549, 2238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2550, 0, 0, 0, 0, 0, 0, 0, 0, 2290, 877, 0, 877, 0, 886, 0, 0, 0, 0, 0, 0, 0, 0, 2551, 0, 0, 2552, 0, 882, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 880, 2290, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2551, 886, 0, 2552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3953, 0, 0, 0, 880, 0, 879, 886, 0, 0, 0, 4146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 877, 0, 4158, 0, 0, 0, 0, 0, 880, 2553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4165, 0, 0, 0, 4165, 0, 0, 0, 0, 4176, 4177, 4178, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 2553, 877, 0, 0, 0, 886, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4208, 4209, 4210, 4211, 886, 0, 877, 0, 0, 0, 0, 0, 0, 0, 0, 1774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 886, 0, 0, 0, 4227, 0, 0, 0, 0, 0, 0, 0, 4230, 0, 4234, 4235, 4236, 0, 0, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 877, 883, 0, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 877, 0, 0, 0, 0, 883, 0, 882, 0, 0, 0, 0, 0, 886, 0, 1774, 0, 0, 0, 0, 0, 0, 877, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 886, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 885, 4320, 0, 886, 0, 0, 0, 880, 0, 0, 4326, 0, 0, 0, 0, 882, 0, 0, 0, 0, 0, 1774, 0, 947, 0, 0, 0, 1773, 0, 0, 0, 0, 0, 0, 0, 0, 4336, 4337, 0, 0, 879, 4338, 0, 0, 879, 0, 877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 882, 0, 0, 0, 880, 0, 0, 4380, 0, 0, 0, 0, 0, 0, 877, 0, 0, 0, 0, 880, 0, 0, 880, 880, 0, 0, 946, 0, 0, 0, 0, 0, 0, 882, 0, 0, 0, 0, 883, 877, 0, 0, 0, 0, 946, 0, 0, 0, 946, 0, 0, 0, 946, 880, 880, 0, 0, 0, 0, 4417, 0, 946, 0, 0, 4423, 0, 0, 0, 0, 0, 4429, 0, 0, 0, 0, 0, 0, 0, 0, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 947, 879, 0, 885, 0, 0, 0, 0, 886, 0, 0, 4468, 0, 937, 0, 0, 879, 0, 0, 0, 0, 879, 0, 0, 946, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4483, 0, 4484, 0, 946, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1773, 946, 0, 0, 1773, 0, 0, 0, 4509, 0, 937, 937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 886, 0, 877, 0, 0, 946, 0, 1773, 0, 0, 0, 946, 883, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 883, 0, 946, 886, 0, 0, 0, 0, 0, 946, 0, 0, 946, 0, 882, 0, 883, 0, 946, 0, 0, 0, 947, 0, 0, 882, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 946, 0, 0, 882, 0, 885, 946, 0, 0, 0, 0, 0, 0, 946, 0, 0, 885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 946, 0, 0, 0, 877, 885, 0, 0, 0, 0, 0, 0, 0, 946, 0, 0, 0, 0, 1773, 0, 0, 0, 0, 0, 946, 0, 0, 950, 0, 882, 877, 0, 0, 0, 0, 0, 0, 0, 0, 984, 0, 0, 0, 0, 882, 0, 0, 882, 882, 0, 1003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 882, 882, 0, 886, 0, 0, 1773, 0, 0, 0, 0, 0, 879, 0, 0, 879, 0, 879, 0, 0, 0, 0, 879, 0, 0, 1774, 0, 0, 0, 883, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 886, 0, 0, 0, 0, 886, 0, 0, 4695, 0, 0, 4702, 0, 4703, 0, 0, 0, 0, 0, 0, 879, 0, 0, 1774, 0, 0, 4710, 0, 879, 0, 0, 937, 937, 885, 0, 0, 0, 0, 4716, 0, 0, 1774, 4719, 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 4743, 0, 689, 0, 0, 0, 0, 3152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4747, 0, 0, 882, 0, 0, 4751, 0, 0, 0, 0, 0, 0, 877, 0, 0, 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4786, 946, 0, 0, 4790, 0, 0, 0, 0, 692, 3153, 0, 0, 879, 0, 879, 0, 0, 0, 946, 4801, 4802, 4803, 4804, 0, 693, 946, 0, 886, 0, 4808, 4809, 4810, 4811, 0, 0, 0, 0, 0, 4813, 4814, 0, 0, 1029, 0, 4821, 4822, 0, 4824, 4825, 4826, 4827, 4828, 4829, 4830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4839, 0, 0, 3154, 4842, 4843, 4844, 4845, 0, 0, 0, 0, 0, 0, 696, 0, 0, 0, 0, 0, 0, 0, 0, 697, 0, 0, 0, 0, 4165, 0, 0, 0, 0, 0, 0, 0, 698, 1773, 0, 0, 0, 3155, 0, 1773, 0, 879, 4865, 0, 0, 0, 883, 0, 0, 0, 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 0, 886, 0, 0, 3156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 702, 879, 0, 883, 0, 0, 0, 0, 4946, 0, 946, 0, 0, 886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 886, 1022, 0, 0, 0, 0, 4165, 1054, 0, 883, 0, 0, 0, 4971, 0, 4972, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 877, 0, 879, 0, 0, 4986, 0, 0, 213, 3157, 883, 0, 707, 0, 0, 0, 0, 0, 880, 0, 0, 0, 880, 880, 879, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 0, 0, 877, 1036, 0, 886, 3158, 0, 0, 0, 879, 0, 711, 0, 0, 0, 0, 0, 0, 712, 0, 0, 713, 0, 877, 0, 0, 0, 885, 0, 0, 0, 0, 0, 0, 0, 946, 946, 0, 0, 0, 714, 0, 0, 880, 0, 0, 0, 1038, 0, 880, 0, 0, 0, 716, 0, 0, 1039, 0, 0, 0, 718, 0, 946, 0, 0, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 879, 0, 0, 0, 877, 0, 0, 0, 2050, 723, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 0, 1344, 879, 0, 0, 0, 0, 0, 0, 0, 0, 886, 2543, 0, 0, 3985, 0, 0, 0, 0, 1369, 0, 2544, 1773, 1773, 1773, 0, 879, 0, 2545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 946, 0, 883, 0, 0, 0, 0, 2546, 5123, 5124, 5125, 0, 0, 883, 5126, 5127, 5128, 5129, 0, 946, 0, 5131, 0, 0, 0, 0, 0, 0, 0, 883, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 946, 1427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 877, 885, 5150, 5151, 5152, 5153, 5154, 0, 5156, 5157, 0, 0, 885, 0, 0, 0, 0, 0, 0, 0, 5166, 5167, 0, 0, 0, 0, 0, 883, 885, 886, 0, 0, 0, 0, 1563, 0, 0, 0, 0, 0, 0, 0, 883, 0, 0, 883, 883, 0, 0, 0, 0, 0, 0, 0, 0, 5173, 0, 0, 0, 0, 0, 0, 0, 0, 882, 0, 2547, 0, 882, 882, 0, 2548, 946, 0, 879, 0, 883, 883, 0, 0, 0, 885, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2549, 2238, 0, 885, 886, 0, 885, 885, 0, 0, 0, 0, 0, 0, 0, 2550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1773, 0, 877, 0, 0, 0, 946, 882, 946, 0, 0, 885, 885, 882, 0, 0, 0, 0, 0, 0, 0, 946, 0, 946, 0, 0, 0, 0, 0, 1823, 2290, 0, 0, 0, 0, 0, 880, 0, 5236, 0, 880, 0, 0, 0, 2551, 879, 0, 2552, 0, 0, 0, 0, 0, 0, 882, 0, 0, 1857, 1860, 1861, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 877, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 883, 946, 0, 0, 0, 0, 0, 0, 0, 886, 0, 0, 0, 0, 5287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 946, 0, 0, 0, 2553, 0, 0, 0, 0, 0, 880, 885, 2543, 0, 0, 0, 0, 0, 0, 946, 0, 0, 2544, 0, 0, 880, 0, 0, 0, 2545, 880, 0, 0, 0, 1344, 0, 0, 0, 0, 0, 0, 946, 0, 0, 946, 0, 0, 0, 0, 0, 1986, 0, 0, 0, 0, 2546, 0, 0, 877, 1344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 628, 0, 0, 0, 0, 0, 0, 0, 0, 886, 0, 0, 0, 0, 886, 886, 0, 0, 0, 0, 0, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 1773, 0, 0, 0, 879, 0, 882, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5391, 0, 0, 0, 3990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5401, 0, 0, 0, 2547, 0, 5407, 5408, 0, 2548, 0, 0, 0, 0, 0, 0, 5419, 0, 0, 877, 0, 0, 0, 5421, 877, 877, 0, 0, 0, 0, 0, 2549, 2238, 0, 2537, 0, 0, 0, 0, 882, 0, 0, 0, 882, 0, 886, 2550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5473, 5474, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 5482, 0, 5484, 2052, 2053, 2054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2290, 5498, 886, 0, 0, 0, 2543, 0, 0, 3997, 0, 0, 0, 0, 2551, 879, 2544, 2552, 0, 0, 0, 0, 0, 2545, 0, 0, 4165, 2628, 0, 0, 0, 0, 0, 880, 5532, 0, 880, 0, 880, 0, 0, 0, 0, 880, 946, 0, 0, 0, 0, 2546, 877, 0, 0, 0, 0, 0, 0, 0, 882, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 882, 0, 0, 0, 0, 882, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 877, 1773, 0, 0, 0, 880, 1773, 0, 1773, 5569, 0, 0, 2553, 0, 0, 0, 2745, 0, 0, 0, 0, 0, 0, 0, 0, 2768, 0, 0, 0, 0, 880, 0, 1773, 5589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5596, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2806, 0, 0, 0, 0, 0, 2818, 2818, 0, 0, 2818, 0, 2547, 0, 0, 0, 0, 2548, 0, 0, 0, 0, 946, 2836, 0, 946, 2839, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2549, 2238, 0, 0, 880, 0, 880, 0, 0, 0, 879, 0, 0, 0, 5655, 2550, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2892, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2290, 2911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2551, 0, 0, 2552, 0, 0, 946, 946, 0, 0, 0, 0, 0, 879, 4165, 0, 0, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 946, 0, 883, 0, 0, 0, 883, 883, 0, 0, 0, 0, 0, 0, 0, 0, 1320, 1320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 882, 0, 5750, 882, 0, 882, 0, 0, 0, 0, 882, 0, 0, 0, 0, 0, 5763, 885, 0, 2553, 0, 885, 885, 2933, 0, 883, 0, 880, 0, 0, 0, 883, 0, 0, 2936, 0, 0, 0, 0, 0, 0, 0, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1320, 0, 0, 882, 0, 0, 879, 0, 0, 0, 0, 882, 0, 0, 0, 0, 0, 883, 0, 0, 5802, 2980, 2818, 0, 885, 2050, 0, 0, 2051, 0, 885, 0, 2052, 2053, 2054, 0, 882, 0, 0, 0, 880, 0, 0, 0, 0, 0, 3015, 0, 0, 0, 0, 2543, 0, 3028, 0, 0, 0, 0, 0, 0, 0, 2544, 880, 0, 2479, 0, 0, 0, 2545, 0, 0, 885, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 882, 0, 882, 0, 5876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1685, 1689, 0, 0, 3089, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5898, 0, 0, 0, 0, 1344, 1344, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 3142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 882, 0, 0, 946, 0, 0, 2547, 0, 0, 0, 0, 2548, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 883, 0, 0, 0, 0, 0, 0, 0, 0, 2549, 2238, 0, 0, 0, 0, 0, 0, 0, 882, 0, 0, 946, 0, 0, 2550, 0, 0, 0, 5970, 0, 0, 0, 0, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 882, 0, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 2290, 0, 0, 946, 0, 0, 0, 0, 883, 0, 0, 0, 883, 0, 2551, 0, 0, 2552, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 882, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 2050, 885, 2003, 2051, 0, 885, 0, 2052, 2053, 2054, 882, 0, 0, 0, 880, 0, 0, 0, 0, 0, 1773, 0, 0, 0, 0, 0, 2543, 0, 0, 4579, 0, 0, 882, 2018, 0, 0, 2544, 0, 0, 946, 0, 0, 0, 2545, 0, 2553, 0, 0, 0, 0, 0, 0, 0, 883, 0, 0, 0, 0, 0, 0, 0, 2037, 2038, 2039, 0, 2041, 0, 0, 883, 2546, 0, 0, 0, 883, 0, 0, 0, 4525, 0, 0, 0, 0, 0, 0, 0, 2497, 0, 0, 0, 879, 0, 0, 0, 0, 879, 879, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 885, 0, 0, 0, 0, 0, 0, 0, 882, 0, 0, 0, 0, 0, 0, 885, 0, 0, 946, 0, 885, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 882, 0, 0, 0, 0, 0, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 882, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2547, 0, 0, 0, 0, 2548, 2595, 0, 0, 0, 2607, 2612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 2549, 2238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 946, 0, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2290, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 2551, 0, 0, 2552, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 882, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 880, 0, 0, 883, 0, 0, 883, 0, 883, 1773, 0, 0, 3301, 883, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2553, 0, 0, 0, 0, 0, 0, 0, 1427, 0, 885, 0, 0, 885, 883, 885, 0, 0, 0, 0, 885, 0, 883, 0, 0, 0, 0, 0, 0, 0, 0, 0, 882, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 883, 0, 0, 0, 0, 0, 0, 0, 1427, 1427, 0, 882, 0, 0, 0, 0, 0, 1685, 1685, 1685, 0, 885, 0, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 1344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2479, 885, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 883, 0, 883, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 885, 0, 885, 0, 946, 0, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 882, 0, 0, 2543, 0, 0, 0, 0, 0, 0, 880, 0, 883, 2544, 0, 0, 0, 0, 0, 1773, 2545, 3518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3540, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 2546, 882, 880, 0, 0, 0, 882, 0, 883, 0, 0, 0, 3568, 0, 2490, 0, 0, 0, 3204, 0, 885, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 2490, 2490, 883, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 0, 0, 1773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 885, 0, 0, 0, 0, 5007, 0, 880, 3646, 3647, 0, 0, 0, 0, 883, 0, 2543, 0, 0, 0, 0, 0, 0, 0, 2547, 0, 2544, 0, 0, 2548, 0, 0, 0, 2545, 0, 0, 883, 0, 0, 0, 0, 0, 0, 0, 1773, 0, 946, 0, 0, 882, 0, 2549, 2238, 3170, 0, 0, 0, 0, 883, 2546, 0, 0, 0, 0, 0, 3191, 2550, 3192, 885, 3194, 0, 0, 3208, 3211, 3216, 0, 0, 0, 0, 0, 3225, 0, 0, 3230, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3238, 3239, 3240, 0, 0, 0, 0, 2290, 0, 3770, 0, 0, 885, 0, 0, 0, 0, 3241, 0, 0, 0, 2551, 0, 0, 2552, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 883, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 5013, 0, 2052, 2053, 2054, 0, 0, 0, 0, 0, 0, 883, 0, 0, 946, 0, 0, 0, 0, 2547, 882, 2543, 0, 0, 2548, 0, 0, 0, 0, 0, 0, 2544, 0, 0, 0, 0, 883, 0, 2545, 0, 946, 885, 0, 0, 0, 0, 2549, 2238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 882, 2553, 0, 2550, 0, 0, 2546, 885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 882, 0, 0, 0, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 2290, 0, 0, 0, 3248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2551, 0, 0, 2552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3265, 0, 0, 0, 0, 0, 0, 882, 5014, 0, 0, 946, 0, 2479, 0, 0, 0, 880, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 2547, 0, 0, 0, 0, 2548, 0, 0, 883, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3267, 0, 0, 0, 0, 0, 2549, 2238, 0, 2553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4043, 0, 882, 2551, 883, 0, 2552, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1427, 0, 0, 0, 0, 0, 0, 0, 0, 883, 1773, 0, 0, 0, 0, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 1773, 0, 0, 0, 0, 885, 0, 0, 2490, 0, 0, 0, 0, 2490, 0, 0, 2553, 0, 1773, 0, 0, 0, 0, 3274, 3275, 3276, 3277, 3278, 3279, 3280, 3281, 3282, 0, 3283, 0, 0, 0, 0, 0, 0, 0, 0, 1320, 0, 882, 1685, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 880, 880, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3241, 0, 0, 0, 3248, 0, 2543, 3265, 883, 3267, 0, 0, 3318, 0, 0, 0, 2544, 0, 0, 0, 0, 0, 0, 2545, 0, 0, 882, 0, 0, 0, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 2546, 0, 0, 0, 0, 0, 883, 0, 0, 0, 0, 883, 0, 885, 0, 0, 2038, 2039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 885, 0, 0, 0, 5015, 0, 0, 0, 4252, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 2818, 0, 880, 2052, 2053, 2054, 0, 0, 0, 0, 0, 0, 0, 0, 882, 0, 3460, 0, 0, 0, 0, 0, 2543, 0, 0, 0, 0, 0, 0, 0, 0, 2547, 2544, 0, 0, 0, 2548, 0, 0, 2545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2549, 2238, 0, 883, 0, 0, 0, 2546, 0, 0, 0, 0, 0, 0, 0, 2550, 0, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2543, 0, 0, 0, 0, 0, 2290, 885, 0, 0, 2544, 0, 0, 0, 0, 0, 0, 2545, 0, 0, 2551, 0, 0, 2552, 0, 0, 0, 0, 0, 0, 0, 0, 882, 0, 0, 0, 0, 882, 882, 0, 0, 0, 0, 2546, 0, 0, 0, 0, 0, 0, 0, 4384, 4385, 4386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4395, 0, 0, 2547, 0, 0, 0, 0, 2548, 0, 883, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2549, 2238, 0, 4420, 4422, 0, 0, 0, 4427, 0, 0, 0, 0, 0, 2553, 2550, 0, 0, 883, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 885, 5534, 0, 0, 0, 0, 883, 0, 0, 0, 0, 3702, 3703, 1685, 0, 0, 0, 3707, 882, 0, 0, 0, 2290, 0, 0, 2547, 0, 0, 0, 0, 2548, 0, 0, 0, 0, 0, 2551, 0, 885, 2552, 0, 0, 0, 0, 3736, 0, 0, 0, 0, 0, 0, 0, 2549, 2238, 0, 0, 0, 0, 0, 0, 885, 0, 882, 0, 0, 0, 0, 2550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4508, 883, 2479, 1344, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2290, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 2551, 0, 0, 2552, 0, 0, 2553, 0, 0, 0, 0, 885, 2490, 2490, 0, 2490, 0, 0, 0, 0, 3204, 3204, 0, 3976, 0, 3204, 0, 0, 0, 2490, 0, 0, 2490, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 2490, 2490, 2490, 2490, 0, 0, 0, 3204, 3204, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 883, 0, 0, 5362, 0, 0, 0, 0, 2490, 0, 2490, 4612, 4613, 4614, 2553, 0, 0, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 0, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 0, 0, 0, 3932, 0, 885, 0, 0, 3938, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 2041, 0, 0, 0, 0, 0, 640, 0, 0, 0, 0, 3216, 0, 3216, 3216, 0, 2543, 0, 0, 0, 0, 0, 0, 0, 641, 0, 2544, 4000, 2479, 0, 4003, 0, 4005, 2545, 0, 883, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2546, 0, 0, 643, 0, 0, 0, 0, 4024, 0, 4027, 0, 4029, 0, 0, 0, 0, 0, 0, -868, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 645, 883, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 0, 0, 0, 0, 0, 0, 0, 648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 649, 0, 0, 0, 885, 0, 4094, 0, 650, 0, 0, 2595, 651, 0, 0, 0, 0, 0, 0, 0, 2547, 0, 0, 0, 0, 2548, 2612, 0, 0, 0, 0, -1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2549, 2238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2550, 0, 0, 0, 0, 0, 652, 0, 883, 0, 0, 0, 0, 0, 0, 0, -604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4144, 0, 0, 0, 0, 0, 0, 0, 4875, 0, 0, 0, 2290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2551, 0, 653, 2552, 0, 654, 0, 885, 0, 0, 0, 0, 0, 0, 4907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 656, 0, 0, 0, 0, 0, 3028, -462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 657, 0, 0, 0, 0, 0, 0, 0, 0, 658, 0, 0, 883, 0, 4965, 0, -462, 883, 883, 659, 0, 0, 2490, 2490, 0, 2553, 0, 2490, 0, 0, 0, 3089, 0, 0, 0, 0, 0, 0, 660, 0, 0, 0, 0, 0, 0, 661, 0, 0, 0, 0, 0, -462, 0, 0, 662, 663, 2490, 664, 665, 0, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 885, 885, 666, 0, 0, 0, 0, 0, 0, 667, 0, 0, 668, 0, 0, 669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2479, 0, 0, 0, 0, 883, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5050, 5051, 5052, 5053, 0, 0, 0, 0, 1685, 0, 0, 0, 0, 0, 1685, 0, 0, 0, 0, 0, 0, 0, 883, 0, 0, 0, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4407, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3976, 3976, 0, 0, 3204, 3204, 3204, 3204, 0, 0, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3976, 689, 0, 0, 0, 0, 1025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 1, 2490, 0, 2490, 0, 0, 3976, 3976, 0, 0, 2, 0, 3, 4, 0, 0, 0, 0, 0, 1026, 0, 0, 2490, 3204, 3204, 2490, 0, 2490, 0, 0, 0, 0, 692, 1027, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 1028, 0, 0, 0, 693, 0, 0, 0, 7, 0, 8, 9, 0, 0, 0, 0, 0, 10, 0, 11, 0, 0, 1029, 0, 0, 0, 0, 0, 0, 4526, 0, 12, 0, 13, 0, 0, 0, 4530, 0, 4531, 0, 0, 0, 0, 0, 0, 1030, 4533, 2490, 4534, 14, 0, 0, 15, 0, 0, 0, 696, 0, 0, 0, 0, 0, 0, 0, 0, 697, 0, 16, 0, 17, 0, 0, 0, 18, 0, 4556, 4557, 4558, 698, 5512, 0, 0, 0, 1031, 0, 0, 0, 20, 0, 21, 0, 0, 0, 0, 3225, 0, 22, 2490, 0, 0, 0, 0, 4583, 0, 0, 4586, 0, 4588, 0, 1032, 0, 0, 0, 23, 0, 0, 0, 4591, 0, 0, 0, 0, 0, 0, 0, 4598, 4599, 0, 5265, 0, 24, 0, 0, 0, 1033, 0, 0, 0, 0, 5275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 702, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 26, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 1034, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4657, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 705, 0, 0, 4671, 0, 0, 0, 0, 0, 0, 213, 1035, 0, 0, 707, 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, 1036, 0, 0, 1037, 31, 0, 0, 710, 0, 711, 32, 33, 0, 34, 0, 0, 712, 0, 35, 713, 0, 4458, 0, 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 714, 0, 39, 40, 0, 0, 0, 1038, 0, 0, 41, 0, 0, 716, 42, 0, 1039, 3204, 0, 0, 718, 0, 0, 0, 43, 0, 0, 0, 1040, 0, 720, 0, 0, 0, 0, 1041, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 2490, 723, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 5457, 0, 0, 0, 0, 1344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 5487, 0, 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, 0, 56, 0, 0, -136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 198, 0, 0, 2490, 2490, 0, 2490, 2490, 0, 0, 0, 0, 3976, 3976, 3976, 3976, 199, 0, 0, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 2490, 2490, 2490, 0, 0, 200, 0, 0, 0, 0, 0, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 202, 2490, 0, 2490, 4953, 4954, 2490, 0, 0, 3976, 3976, 203, 0, 2490, 2490, 4961, 0, 5586, 0, 0, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 205, 0, 0, 0, 0, 206, 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5003, 0, 0, 0, 2490, 0, 0, 209, 0, 0, 0, 0, 5009, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 0, 0, 0, 0, 0, 5662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5028, 5030, 0, 0, 0, 0, 0, 0, 5034, 5035, 0, 0, 5684, 5036, 0, 0, 0, 5037, 0, 211, 5040, 5041, 0, 0, 0, 5045, 0, 0, 0, 0, 0, 5049, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 214, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5081, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1320, 0, 216, 0, 0, 217, 0, 0, 5095, 218, 0, 219, 0, 0, 0, 0, 0, 0, 220, 0, 0, 221, 0, 0, 0, 0, 0, 0, 5105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, 224, 225, 0, 0, 226, 0, 0, 0, 227, 0, 0, 0, 0, 0, 3976, 0, 0, 0, 228, 0, 0, 0, 0, 229, 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, 5169, 0, 0, 0, 0, 0, 0, 5171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 2490, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 5206, 0, 0, 0, 2490, 3204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 2490, 0, 0, 0, 2490, 2490, 2490, 2490, 0, 0, 2490, 2490, 0, 0, 0, 2490, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5293, 0, 0, 0, 0, 0, 5297, 5298, 5299, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 5310, 5311, 0, 0, 5312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 5332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 3976, 3204, 2490, 2490, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 2490, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3204, 0, 0, 3976, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3976, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5603, 0, 0, 0, 3976, 0, 3204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5705, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 5350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3204, 3204, 5837, 5837, 5837, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 5350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3976, 3976, 0, 0, 5905, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5930, 0, 5837, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 0, 1236, 684, 0, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 1679, 243, 244, 245, 0, 0, 6006, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 5837, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 1680, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 1685, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 1681, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 1682, 0, 0, 0, 0, 0, 0, 1308, 1683, 234, 0, 1236, 684, 0, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 40, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 44, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 1175, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 49, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 0, 0, 0, 0, 1308, 5563, 234, 0, 1236, 684, 0, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 0, 0, 0, 0, 1308, 3206, 234, 0, 1236, 684, 0, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 0, 0, 0, 0, 1308, 4535, 234, 0, 1236, 684, 0, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 625, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 0, 0, 0, 0, 1308, 4605, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 4072, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, -1810, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, -1810, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, -1810, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, -1810, 394, 395, 396, 397, 398, 0, 0, 399, 400, -1810, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, -1810, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, -1810, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 0, 0, 0, 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1420, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 0, 853, 259, 854, 855, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 856, 857, 273, 0, 274, 275, 276, 277, 0, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 858, 859, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 0, 338, 339, 340, 341, 0, 0, 343, 0, 344, 345, 346, 861, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 0, 0, 0, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 2638, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 2639, 382, 383, 384, 385, 862, 863, 0, 864, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 0, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 865, 426, 866, 428, 429, 430, 431, 432, 433, 434, 0, 0, 437, 0, 438, 439, 440, 441, 0, 0, 443, 867, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 2641, 456, 457, 458, 0, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 0, 473, 0, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 868, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 0, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 2642, 532, 533, 534, 535, 536, 870, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 0, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 871, 872, 0, 0, 566, 567, 0, 569, 0, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 0, 873, 2643, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 616, 617, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 2739, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 0, 853, 259, 854, 855, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 856, 857, 273, 0, 274, 275, 276, 277, 0, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 858, 859, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 0, 338, 339, 340, 341, 0, 0, 343, 0, 344, 345, 346, 861, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 0, 0, 0, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 2638, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 2639, 382, 383, 384, 385, 862, 863, 0, 864, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 0, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 865, 426, 866, 428, 429, 430, 431, 432, 433, 434, 0, 0, 437, 0, 438, 439, 440, 441, 0, 0, 443, 867, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 2641, 456, 457, 458, 0, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 0, 473, 0, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 868, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 0, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 2642, 532, 533, 534, 535, 536, 870, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 0, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 871, 872, 0, 0, 566, 567, 0, 569, 0, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 0, 873, 2643, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 0, 234, 0, 1236, 684, 0, 1237, 1238, 1239, 745, 1240, 615, 616, 617, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 3825, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 40, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 44, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 1175, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 49, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 234, 0, 1236, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 3212, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 3213, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 3214, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 3215, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 234, 0, 1236, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, -2200, 243, 244, 245, 0, 0, 0, -2200, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, -2200, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 234, 0, 1236, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, -2198, 243, 244, 245, 0, 0, 0, -2198, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, -2198, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 234, 0, 1236, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 0, 0, 2000, 3163, 1308, 234, 0, 1236, 684, 0, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 1307, 0, 0, 234, 0, 1236, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 2605, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 234, 0, 1236, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 3704, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 234, 0, 1236, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 3213, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 234, 0, 1236, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 3268, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 234, 0, 1236, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 234, 0, 1236, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2608, 2609, 0, 0, 0, 234, 0, 3381, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 234, 0, 1236, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 4656, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 234, 0, 1236, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 5017, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 234, 0, 1236, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 5029, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 234, 0, 1236, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 5340, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 5341, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 5342, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 234, 0, 1236, 684, 5343, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 5834, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 5835, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 5836, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 234, 0, 1236, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 5835, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 5836, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 234, 0, 1236, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 5325, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 0, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 3198, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3199, 3200, 0, 0, 0, 234, 0, 1236, 684, 3201, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, -2829, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 5835, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 1260, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, -2829, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 0, 0, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, -2829, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 1276, 438, 439, 0, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 1284, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, -2829, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 5836, 577, 578, 0, 1293, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, -2829, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, 1306, 0, 0, 0, 234, 0, 1236, 684, 1308, 1237, 1238, 1239, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 0, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 1280, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 3198, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3199, 3200, 234, 0, 1236, 684, 0, 1237, 1238, 3201, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 0, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 3370, 3371, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3372, 3373, 234, 0, 1236, 684, 0, 1237, 1238, 3201, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 0, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 3198, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 0, 0, 234, 0, 1236, 684, 0, 1237, 1238, 0, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 3201, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 4566, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 0, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 3198, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 0, 0, 234, 0, 1236, 684, 0, 1237, 1238, 0, 745, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 3201, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 1241, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 1245, 1246, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 1261, 338, 339, 340, 341, 1262, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 1266, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 1275, 437, 0, 438, 439, 440, 441, 1277, 1278, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 3198, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 1290, 569, 1291, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 4625, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3201, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 1246, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 1262, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 3345, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 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, 1275, 437, 0, 438, 439, 440, 441, 0, 1278, 443, 444, 445, 446, 447, 0, 448, 449, 0, 835, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 3346, 516, 517, 518, 519, 520, 521, 522, 523, 40, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 44, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 1290, 569, 1291, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 1175, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 49, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 3347, 615, 616, 617, 0, 0, 50, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3348, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 1246, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 1262, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 3345, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 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, 1275, 437, 0, 438, 439, 440, 441, 0, 1278, 443, 444, 445, 446, 447, 0, 448, 449, 0, 835, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 3346, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 1290, 569, 1291, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 3347, 615, 616, 617, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3348, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 1246, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 1262, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 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, 1275, 437, 0, 438, 439, 440, 441, 0, 1278, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 1290, 569, 1291, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3783, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 1246, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 1262, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 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, 1275, 437, 0, 438, 439, 440, 441, 0, 1278, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 3346, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 1290, 569, 1291, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 3347, 615, 616, 617, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 1246, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 1262, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 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, 1275, 437, 0, 438, 439, 440, 441, 0, 1278, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 1290, 569, 1291, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4686, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 1246, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 1262, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 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, 1275, 437, 0, 438, 439, 440, 441, 0, 1278, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 1290, 569, 1291, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 0, 0, 938, 0, 1556, 684, 0, 0, 0, 0, 745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5808, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 1779, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 1780, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 1781, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 0, 0, 938, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 5618, 0, 0, 0, 0, 0, 0, 5619, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 3, 4, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 40, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 44, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 1175, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 49, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 0, 0, 50, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 0, 0, 625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5393, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 40, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 44, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 1175, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 49, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 0, 0, 50, 625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 2812, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 835, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 2813, 2814, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 0, 0, 625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1813, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 0, 0, 625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1368, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 0, 0, 625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3404, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 0, 0, 625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4602, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 0, 0, 852, 0, 1556, 684, 0, 0, 0, 953, 745, 0, 0, 0, 0, 0, 954, 955, 956, 0, 4642, 235, 236, 237, 238, 239, 240, 241, 242, 1692, 243, 244, 245, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 246, 247, 248, 1700, 249, 250, 251, 252, 253, 254, 255, 256, 0, 853, 259, 854, 855, 1701, 262, 263, 264, 265, 266, 267, 268, 1702, 1703, 269, 270, 856, 857, 273, 1704, 274, 275, 276, 277, 0, 1705, 279, 1706, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 1707, 290, 291, 292, 293, 294, 295, 1708, 296, 297, 298, 299, 1709, 1710, 1711, 300, 1712, 1713, 1714, 301, 302, 303, 304, 305, 306, 858, 859, 309, 1715, 310, 1716, 311, 312, 313, 314, 315, 316, 317, 1717, 318, 319, 320, 321, 1718, 1719, 322, 323, 860, 325, 326, 1720, 327, 328, 329, 1721, 330, 331, 332, 1722, 333, 334, 335, 336, 0, 338, 339, 340, 341, 0, 1723, 343, 1724, 344, 345, 346, 861, 348, 1725, 349, 1726, 350, 351, 1727, 352, 353, 354, 355, 356, 1728, 357, 0, 1729, 0, 360, 361, 1730, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 1731, 372, 373, 374, 375, 376, 377, 378, 1732, 379, 380, 0, 382, 383, 384, 385, 862, 863, 1733, 864, 1734, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 1735, 1736, 399, 0, 401, 402, 403, 1737, 404, 405, 406, 1738, 1739, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 865, 426, 866, 428, 429, 430, 431, 432, 433, 434, 4351, 0, 437, 1740, 438, 439, 440, 441, 1741, 0, 443, 867, 445, 446, 447, 1742, 448, 449, 1743, 1744, 4352, 451, 452, 1745, 1746, 453, 454, 0, 456, 457, 458, 0, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 1747, 470, 471, 0, 473, 0, 475, 476, 477, 1748, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 868, 489, 490, 491, 492, 1749, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 1750, 506, 507, 508, 509, 510, 511, 512, 513, 0, 515, 516, 517, 518, 519, 520, 521, 522, 523, 1751, 524, 525, 526, 527, 528, 1752, 529, 530, 2642, 532, 533, 534, 535, 536, 870, 538, 1753, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 0, 553, 1754, 554, 555, 1755, 556, 557, 558, 559, 560, 561, 562, 1756, 563, 871, 872, 1757, 1758, 566, 567, 0, 569, 0, 1759, 571, 572, 573, 574, 575, 576, 577, 578, 1760, 1761, 579, 580, 581, 582, 583, 1762, 1763, 584, 585, 586, 587, 588, 0, 873, 1764, 591, 592, 593, 594, 595, 596, 1765, 1766, 597, 1767, 1768, 598, 599, 600, 601, 602, 603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 616, 617, 0, 0, 0, 0, 0, 0, 0, 0, 959, 960, 961, 4353, 4354, 964, 965, 966, 967, 852, 0, 1556, 684, 0, 0, 0, 953, 745, 0, 0, 0, 0, 0, 954, 955, 956, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 1692, 243, 244, 245, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 246, 247, 248, 1700, 249, 250, 251, 252, 253, 254, 255, 256, 0, 853, 259, 854, 855, 1701, 262, 263, 264, 265, 266, 267, 268, 1702, 1703, 269, 270, 856, 857, 273, 1704, 274, 275, 276, 277, 0, 1705, 279, 1706, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 1707, 290, 291, 292, 293, 294, 295, 1708, 296, 297, 298, 299, 1709, 1710, 1711, 300, 1712, 1713, 1714, 301, 302, 303, 304, 305, 306, 858, 859, 309, 1715, 310, 1716, 311, 312, 313, 314, 315, 316, 317, 1717, 318, 319, 320, 321, 1718, 1719, 322, 323, 860, 325, 326, 1720, 327, 328, 329, 1721, 330, 331, 332, 1722, 333, 334, 335, 336, 0, 338, 339, 340, 341, 0, 1723, 343, 1724, 344, 345, 346, 861, 348, 1725, 349, 1726, 350, 351, 1727, 352, 353, 354, 355, 356, 1728, 357, 0, 1729, 0, 360, 361, 1730, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 1731, 372, 373, 374, 375, 376, 377, 378, 1732, 379, 380, 0, 382, 383, 384, 385, 862, 863, 1733, 864, 1734, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 1735, 1736, 399, 0, 401, 402, 403, 1737, 404, 405, 406, 1738, 1739, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 865, 426, 866, 428, 429, 430, 431, 432, 433, 434, 4778, 0, 437, 1740, 438, 439, 440, 441, 1741, 0, 443, 867, 445, 446, 447, 1742, 448, 449, 1743, 1744, 4352, 451, 452, 1745, 1746, 453, 454, 0, 456, 457, 458, 0, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 1747, 470, 471, 0, 473, 0, 475, 476, 477, 1748, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 868, 489, 490, 491, 492, 1749, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 1750, 506, 507, 508, 509, 510, 511, 512, 513, 0, 515, 516, 517, 518, 519, 520, 521, 522, 523, 1751, 524, 525, 526, 527, 528, 1752, 529, 530, 2642, 532, 533, 534, 535, 536, 870, 538, 1753, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 0, 553, 1754, 554, 555, 1755, 556, 557, 558, 559, 560, 561, 562, 1756, 563, 871, 872, 1757, 1758, 566, 567, 0, 569, 0, 1759, 571, 572, 573, 574, 575, 576, 577, 578, 1760, 1761, 579, 580, 581, 582, 583, 1762, 1763, 584, 585, 586, 587, 588, 0, 873, 1764, 591, 592, 593, 594, 595, 596, 1765, 1766, 597, 1767, 1768, 598, 599, 600, 601, 602, 603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 616, 617, 0, 0, 0, 0, 0, 0, 0, 0, 959, 960, 961, 4353, 4354, 964, 965, 966, 967, 2049, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 2051, 0, 0, 0, 2052, 2053, 2054, 0, 0, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 0, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 0, 0, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 0, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143, 0, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 0, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, 0, 0, 2190, 2191, 2192, 2193, 0, 2194, 2195, 2196, 2197, 0, 2198, 2199, 2200, 2201, 2202, 0, 2203, 2204, 0, 2205, 2206, 2207, 0, 2208, 2209, 0, 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, 0, 2235, 0, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 0, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 0, 2269, 2270, 0, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 0, 2299, 2300, 0, 2301, 2302, 2303, 2304, 2305, 0, 2306, 2307, 2308, 2309, 0, 0, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 0, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 0, 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 0, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 0, 2424, 2425, 2426, 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2434, 2435, 2436, 2437, 2438, 0, 2439, 2440, 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2451, 2452, 2453, 2454, 0, 2455, 2456, 2457, 2458, 2459, 2460, 0, 2461, 0, 0, 0, 0, 2462, 2463, 2464, 2465, 2466, 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 0, 2477, 2478, 2479, 0, 0, 0, 0, 0, 0, 0, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 625, 0, 0, 0, 0, 0, 0, 953, 0, 0, 0, 0, 0, 0, 954, 955, 956, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 957, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 958, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 0, 0, 0, 0, 0, 0, 0, 0, 959, 960, 961, 962, 963, 964, 965, 966, 967, 625, 0, 0, 0, 0, 0, 0, 953, 0, 0, 0, 0, 0, 0, 954, 955, 956, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 1073, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 1074, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 0, 0, 0, 0, 0, 0, 0, 0, 959, 960, 961, 962, 963, 964, 965, 966, 967, 625, 0, 0, 0, 0, 0, 0, 953, 0, 0, 0, 0, 0, 0, 954, 955, 956, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 1138, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 1139, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1140, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 0, 0, 0, 0, 0, 0, 0, 0, 959, 960, 961, 962, 963, 964, 965, 966, 967, 625, 0, 0, 0, 0, 0, 0, 953, 0, 0, 0, 0, 0, 0, 954, 955, 956, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 1796, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 1797, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 0, 0, 0, 0, 0, 0, 0, 0, 959, 960, 961, 962, 963, 964, 965, 966, 967, 625, 0, 0, 0, 0, 0, 0, 953, 0, 0, 0, 0, 0, 0, 954, 955, 956, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 0, 0, 0, 0, 0, 0, 0, 0, 959, 960, 961, 962, 963, 964, 965, 966, 967, 625, 0, 0, 0, 0, 0, 0, 953, 0, 0, 0, 0, 0, 0, 954, 955, 956, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 3475, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 3476, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 0, 0, 0, 0, 0, 0, 0, 0, 959, 960, 961, 962, 963, 964, 965, 966, 967, 625, 0, 0, 0, 0, 0, 0, 953, 0, 0, 0, 0, 0, 0, 954, 955, 956, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 5373, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 1691, 0, 0, 0, 0, 0, 0, 0, 959, 960, 961, 962, 963, 964, 965, 966, 967, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 1692, 243, 244, 245, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 246, 247, 248, 1700, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 1701, 262, 263, 264, 265, 266, 267, 268, 1702, 1703, 269, 270, 271, 272, 273, 1704, 274, 275, 276, 277, 278, 1705, 279, 1706, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 1707, 290, 291, 292, 293, 294, 295, 1708, 296, 297, 298, 299, 1709, 1710, 1711, 300, 1712, 1713, 1714, 301, 302, 303, 304, 305, 306, 307, 308, 309, 1715, 310, 1716, 311, 312, 313, 314, 315, 316, 317, 1717, 318, 319, 320, 321, 1718, 1719, 322, 323, 324, 325, 326, 1720, 327, 328, 329, 1721, 330, 331, 332, 1722, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 1723, 343, 1724, 344, 345, 346, 347, 348, 1725, 349, 1726, 350, 351, 1727, 352, 353, 354, 355, 356, 1728, 357, 358, 1729, 359, 360, 361, 1730, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 1731, 372, 373, 374, 375, 376, 377, 378, 1732, 379, 380, 381, 382, 383, 384, 385, 386, 387, 1733, 388, 1734, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 1735, 1736, 399, 400, 401, 402, 403, 1737, 404, 405, 406, 1738, 1739, 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, 1740, 438, 439, 440, 441, 1741, 442, 443, 444, 445, 446, 447, 1742, 448, 449, 1743, 1744, 450, 451, 452, 1745, 1746, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 1747, 470, 471, 472, 473, 474, 475, 476, 477, 1748, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 1749, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 1750, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 1751, 524, 525, 526, 527, 528, 1752, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 1753, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 1754, 554, 555, 1755, 556, 557, 558, 559, 560, 561, 562, 1756, 563, 564, 565, 1757, 1758, 566, 567, 568, 569, 570, 1759, 571, 572, 573, 574, 575, 576, 577, 578, 1760, 1761, 579, 580, 581, 582, 583, 1762, 1763, 584, 585, 586, 587, 588, 589, 590, 1764, 591, 592, 593, 594, 595, 596, 1765, 1766, 597, 1767, 1768, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1769, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 841, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5778, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 0, 853, 259, 854, 855, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 856, 857, 273, 0, 274, 275, 276, 277, 0, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 858, 859, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 0, 338, 339, 340, 341, 0, 0, 343, 0, 344, 345, 346, 861, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 0, 0, 0, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 2638, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 2639, 382, 383, 384, 385, 862, 863, 0, 864, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 0, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 865, 426, 866, 428, 429, 430, 431, 432, 433, 434, 0, 0, 437, 0, 438, 439, 440, 441, 0, 0, 443, 867, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 2640, 453, 454, 2641, 456, 457, 458, 0, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 0, 473, 0, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 868, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 0, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 2642, 532, 533, 534, 535, 536, 870, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 0, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 871, 872, 0, 0, 566, 567, 0, 569, 0, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 0, 873, 2643, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 3820, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 616, 617, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 2644, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 0, 853, 259, 854, 855, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 856, 857, 273, 0, 274, 275, 276, 277, 0, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 858, 859, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 0, 338, 339, 340, 341, 0, 0, 343, 0, 344, 345, 346, 861, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 0, 0, 0, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 2638, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 2639, 382, 383, 384, 385, 862, 863, 0, 864, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 0, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 865, 426, 866, 428, 429, 430, 431, 432, 433, 434, 0, 0, 437, 0, 438, 439, 440, 441, 0, 0, 443, 867, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 2640, 453, 454, 2641, 456, 457, 458, 0, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 0, 473, 0, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 868, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 0, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 2642, 532, 533, 534, 535, 536, 870, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 0, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 871, 872, 0, 0, 566, 567, 0, 569, 0, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 0, 873, 2643, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 938, 0, 1556, 684, 0, 0, 0, 0, 745, 2528, 0, 615, 616, 617, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 2644, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 2529, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 1779, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 1780, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 1781, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 0, 1556, 684, 0, 0, 0, 0, 745, 2528, 0, 1557, 1558, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 2534, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 1779, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 1780, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 1781, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 0, 1556, 684, 0, 0, 0, 0, 745, 0, 0, 1557, 1558, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 3436, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 1779, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 1780, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 1781, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 0, 1556, 684, 0, 0, 0, 0, 745, 2528, 0, 1557, 1558, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 1779, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 1780, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 1781, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 0, 1556, 684, 0, 0, 0, 0, 745, 0, 0, 1557, 1558, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 1779, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 1780, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 1781, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 0, 0, 0, 0, 0, 0, 0, 745, 0, 0, 1557, 1558, 0, 0, 0, 0, 0, 0, 235, 746, 237, 238, 239, 240, 241, 242, 747, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 748, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 749, 347, 348, 0, 349, 0, 750, 0, 751, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 752, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 753, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 754, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 755, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 756, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 1691, 0, 6059, 684, 0, 0, 0, 0, 745, 0, 0, 757, 758, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 1692, 243, 244, 245, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 246, 247, 248, 1700, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 1701, 262, 263, 264, 265, 266, 267, 268, 1702, 1703, 269, 270, 271, 272, 273, 1704, 274, 275, 276, 277, 278, 1705, 279, 1706, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 1707, 290, 291, 292, 293, 294, 295, 1708, 296, 297, 298, 299, 1709, 1710, 1711, 300, 1712, 1713, 1714, 301, 302, 303, 304, 305, 306, 307, 308, 309, 1715, 310, 1716, 311, 312, 313, 314, 315, 316, 317, 1717, 318, 319, 320, 321, 1718, 1719, 322, 323, 324, 325, 326, 1720, 327, 328, 329, 1721, 330, 331, 332, 1722, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 1723, 343, 1724, 344, 345, 346, 347, 348, 1725, 349, 1726, 350, 351, 1727, 352, 353, 354, 355, 356, 1728, 357, 358, 1729, 359, 360, 361, 1730, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 1731, 372, 373, 374, 375, 376, 377, 378, 1732, 379, 380, 381, 382, 383, 384, 385, 386, 387, 1733, 388, 1734, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 1735, 1736, 399, 400, 401, 402, 403, 1737, 404, 405, 406, 1738, 1739, 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, 1740, 438, 439, 440, 441, 1741, 442, 443, 444, 445, 446, 447, 1742, 448, 449, 1743, 1744, 450, 451, 452, 1745, 1746, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 1747, 470, 471, 472, 473, 474, 475, 476, 477, 1748, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 1749, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 1750, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 1751, 524, 525, 526, 527, 528, 1752, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 1753, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 1754, 554, 555, 1755, 556, 557, 558, 559, 560, 561, 562, 1756, 563, 564, 565, 1757, 1758, 566, 567, 568, 569, 570, 1759, 571, 572, 573, 574, 575, 576, 577, 578, 1760, 1761, 579, 580, 581, 582, 583, 1762, 1763, 584, 585, 586, 587, 588, 589, 590, 1764, 591, 592, 593, 594, 595, 596, 1765, 1766, 597, 1767, 1768, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 1691, 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, 1692, 243, 244, 245, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 246, 247, 248, 1700, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 1701, 262, 263, 264, 265, 266, 267, 268, 1702, 1703, 269, 270, 271, 272, 273, 1704, 274, 275, 276, 277, 278, 1705, 279, 1706, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 1707, 290, 291, 292, 293, 294, 295, 1708, 296, 297, 298, 299, 1709, 1710, 1711, 300, 1712, 1713, 1714, 301, 302, 303, 304, 305, 306, 307, 308, 309, 1715, 310, 1716, 311, 312, 313, 314, 315, 316, 317, 1717, 318, 319, 320, 321, 1718, 1719, 322, 323, 324, 325, 326, 1720, 327, 328, 329, 1721, 330, 331, 332, 1722, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 1723, 343, 1724, 344, 345, 346, 347, 348, 1725, 349, 1726, 350, 351, 1727, 352, 353, 354, 355, 356, 1728, 357, 358, 1729, 359, 360, 361, 1730, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 1731, 372, 373, 374, 375, 376, 377, 378, 1732, 379, 380, 381, 382, 383, 384, 385, 386, 387, 1733, 388, 1734, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 1735, 1736, 399, 400, 401, 402, 403, 1737, 404, 405, 406, 1738, 1739, 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, 1740, 438, 439, 440, 441, 1741, 442, 443, 444, 445, 446, 447, 1742, 448, 449, 1743, 1744, 450, 451, 452, 1745, 1746, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 1747, 470, 471, 472, 473, 474, 475, 476, 477, 1748, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 1749, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 1750, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 1751, 524, 525, 526, 527, 528, 1752, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 1753, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 1754, 554, 555, 1755, 556, 557, 558, 559, 560, 561, 562, 1756, 563, 564, 565, 1757, 1758, 566, 567, 568, 569, 570, 1759, 571, 572, 573, 574, 575, 576, 577, 578, 1760, 1761, 579, 580, 581, 582, 583, 1762, 1763, 584, 585, 586, 587, 588, 589, 590, 1764, 591, 592, 593, 594, 595, 596, 1765, 1766, 597, 1767, 1768, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 1691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 3541, 240, 241, 242, 1692, 243, 244, 245, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 246, 247, 248, 1700, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 1701, 262, 263, 264, 265, 266, 267, 268, 1702, 1703, 269, 270, 271, 272, 273, 1704, 274, 275, 276, 277, 278, 1705, 279, 1706, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 1707, 290, 291, 292, 293, 294, 295, 1708, 296, 297, 298, 299, 1709, 1710, 1711, 300, 1712, 1713, 1714, 301, 302, 303, 304, 305, 306, 307, 308, 309, 1715, 310, 1716, 311, 312, 313, 314, 315, 316, 317, 1717, 318, 319, 320, 321, 1718, 1719, 322, 323, 324, 3542, 326, 1720, 327, 328, 329, 1721, 330, 331, 332, 1722, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 1723, 343, 1724, 344, 345, 346, 347, 348, 1725, 349, 1726, 350, 351, 1727, 352, 353, 354, 355, 356, 1728, 357, 358, 1729, 359, 360, 361, 1730, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 1731, 372, 373, 374, 375, 376, 377, 378, 1732, 379, 380, 381, 382, 383, 384, 385, 386, 387, 1733, 388, 1734, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 1735, 1736, 399, 400, 401, 402, 403, 1737, 404, 405, 406, 1738, 1739, 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, 1740, 438, 439, 440, 441, 1741, 442, 443, 444, 445, 446, 447, 1742, 448, 449, 1743, 1744, 450, 451, 452, 1745, 1746, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 1747, 470, 471, 472, 473, 474, 475, 476, 477, 1748, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 1749, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 1750, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 1751, 524, 525, 526, 527, 528, 1752, 3543, 530, 531, 532, 533, 534, 535, 536, 537, 538, 1753, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 1754, 554, 555, 1755, 556, 557, 558, 559, 560, 561, 562, 1756, 563, 564, 565, 1757, 1758, 566, 567, 568, 569, 570, 1759, 571, 572, 573, 574, 575, 576, 577, 578, 1760, 1761, 579, 580, 581, 582, 583, 1762, 1763, 584, 585, 586, 587, 588, 589, 590, 1764, 591, 592, 593, 594, 595, 596, 1765, 1766, 597, 1767, 1768, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 1246, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 1249, 0, 1250, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 1262, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 1265, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 1270, 401, 402, 403, 0, 404, 405, 406, 1271, 1272, 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, 1275, 437, 0, 438, 439, 440, 441, 0, 1278, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 1281, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 1282, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 1285, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 1287, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 1290, 569, 1291, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 1294, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 1296, 1297, 1298, 1299, 609, 1300, 1301, 1302, 1303, 614, 615, 616, 617, 234, 0, 1236, 684, 0, 1237, 1238, 0, 745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 1242, 259, 1243, 1244, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 1247, 1248, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 1258, 1259, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 1263, 343, 0, 344, 345, 346, 1264, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 1267, 1268, 0, 1269, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 1273, 426, 1274, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 440, 441, 1277, 442, 443, 1279, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 1283, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 1286, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 1288, 1289, 0, 0, 566, 567, 568, 569, 570, 1292, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 1295, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 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, 977, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 939, 300, 0, 0, 940, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 941, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 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, 998, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 939, 300, 0, 0, 940, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 999, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 941, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 939, 300, 0, 0, 940, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 941, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 2905, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 939, 300, 0, 0, 940, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 3891, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 941, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 0, 0, 684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 1779, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 1780, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 1781, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 939, 300, 0, 0, 940, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 941, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 939, 300, 0, 0, 940, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 1091, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 941, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 939, 300, 0, 0, 940, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1133, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 941, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 939, 300, 0, 0, 940, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1146, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 941, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 939, 300, 0, 0, 940, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1158, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 1159, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 941, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 0, 0, 684, 0, 0, 0, 0, 0, 2511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 2512, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 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, 0, 243, 244, 245, 3, 4, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 0, 0, 684, 0, 0, 0, 0, 0, 1350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 0, 0, 684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1117, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1130, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1144, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1148, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 938, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 400, 401, 402, 403, 0, 404, 405, 406, 0, 0, 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, 0, 438, 439, 440, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 2677, 274, 275, 276, 277, 278, 0, 0, 2746, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 2678, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 2747, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 2680, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 2748, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 2681, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 2682, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 2677, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 2678, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 2747, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 2680, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 3754, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 2681, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 2682, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 803, 241, 242, 764, 243, 765, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 766, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 804, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 767, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 768, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 764, 243, 765, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 766, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 3443, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 767, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 768, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 2677, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 2678, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 2747, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 2680, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 2681, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 2682, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 764, 243, 765, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 766, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 767, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 768, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 2981, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 2812, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 835, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 2813, 2814, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 1956, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 1957, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 1958, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 1959, 350, 0, 0, 0, 1960, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 1961, 1962, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 1963, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 1964, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 1965, 513, 514, 515, 516, 517, 1966, 519, 520, 521, 522, 523, 0, 1967, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 1968, 556, 0, 1969, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 1970, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 765, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 766, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 767, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 768, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 2812, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 835, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 2813, 2814, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 991, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 992, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 835, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 0, 0, 684, 0, 0, 0, 0, 0, 1352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 3522, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 3523, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 3535, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 3536, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 626, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 675, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 676, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 795, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 796, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 797, 565, 0, 0, 798, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 829, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 830, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 831, 565, 0, 0, 832, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 835, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 0, 0, 0, 0, 0, 0, 0, 0, 893, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 948, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 949, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 1109, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 1341, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 1354, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 815, 270, 271, 272, 1355, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 818, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 819, 510, 511, 512, 513, 514, 515, 516, 517, 820, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 1345, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 822, 565, 0, 0, 823, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 824, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1500, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 835, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 1561, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1562, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 795, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 3294, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 3295, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 3296, 556, 0, 558, 3297, 560, 3298, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 3299, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 0, 0, 0, 0, 0, 0, 0, 745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 4072, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 4086, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 4722, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 4792, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 781, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 793, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 815, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 816, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 817, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 818, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 819, 510, 511, 512, 513, 514, 515, 516, 517, 820, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 821, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 822, 565, 0, 0, 823, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 824, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 847, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 973, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 983, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 986, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1002, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1058, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1063, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1080, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1083, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1085, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1122, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1150, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1152, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1162, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1165, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1168, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 815, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 818, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 819, 510, 511, 512, 513, 514, 515, 516, 517, 820, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 1345, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 822, 565, 0, 0, 823, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 824, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1822, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1856, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1858, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1897, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1899, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 1901, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 1994, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 2630, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 0, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 815, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 818, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 819, 510, 511, 512, 513, 514, 515, 516, 517, 820, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 1345, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 2664, 559, 560, 561, 562, 0, 563, 822, 565, 0, 0, 823, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 824, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 815, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 818, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 819, 510, 511, 512, 513, 514, 515, 516, 517, 2729, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 2730, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 822, 565, 0, 0, 2731, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 824, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 815, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 818, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 819, 510, 511, 512, 513, 514, 515, 516, 517, 2809, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 2730, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 822, 565, 0, 0, 2731, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 824, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 815, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 818, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 819, 510, 511, 512, 513, 514, 515, 516, 517, 2833, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 2730, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 822, 565, 0, 0, 2731, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 824, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 3026, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 3030, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 3088, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 3454, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 815, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 818, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 819, 510, 511, 512, 513, 514, 515, 516, 517, 820, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 2730, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 822, 565, 0, 0, 2731, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 824, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 3511, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 3525, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 3527, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 3675, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 3715, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 625, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 360, 361, 0, 362, 363, 364, 365, 4906, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 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, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 852, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 0, 853, 259, 854, 855, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 856, 857, 273, 0, 274, 275, 276, 277, 0, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 858, 859, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 0, 338, 339, 340, 341, 0, 0, 343, 0, 344, 345, 346, 861, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 0, 0, 0, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 2638, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 2639, 382, 383, 384, 385, 862, 863, 0, 864, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 0, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 865, 426, 866, 428, 429, 430, 431, 432, 433, 434, 0, 0, 437, 0, 438, 439, 440, 441, 0, 0, 443, 867, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 2641, 456, 457, 458, 0, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 0, 473, 0, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 868, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 0, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 2642, 532, 533, 534, 535, 536, 870, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 0, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 871, 872, 0, 0, 566, 567, 0, 569, 0, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 0, 873, 2643, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 616, 617, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 0, 254, 255, 256, 257, 258, 0, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 271, 272, 273, 0, 274, 275, 276, 277, 278, 0, 0, 0, 280, 281, 282, 283, 284, 285, 0, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 0, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 0, 344, 345, 346, 347, 348, 0, 349, 0, 350, 0, 0, 0, 353, 354, 355, 356, 0, 357, 358, 0, 359, 0, 361, 0, 362, 363, 364, 365, 366, 0, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 0, 381, 382, 383, 384, 385, 386, 387, 0, 388, 0, 389, 0, 0, 392, 0, 394, 395, 396, 397, 398, 0, 0, 399, 400, 0, 402, 0, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, 438, 439, 0, 441, 0, 442, 443, 444, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 455, 0, 457, 0, 459, 460, 461, 462, 463, 464, 465, 466, 0, 468, 469, 0, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 0, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 0, 509, 510, 511, 512, 513, 514, 0, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 531, 532, 533, 0, 535, 536, 537, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 0, 554, 555, 0, 556, 0, 558, 559, 560, 561, 562, 0, 563, 564, 565, 0, 0, 566, 567, 568, 569, 570, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 0, 591, 0, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 852, 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, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 0, 853, 259, 854, 855, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 856, 857, 273, 0, 274, 275, 276, 277, 0, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 858, 859, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 0, 338, 339, 340, 341, 0, 0, 343, 0, 344, 345, 346, 861, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 0, 0, 0, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 0, 382, 383, 384, 385, 862, 863, 0, 864, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 0, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 865, 426, 866, 428, 429, 430, 431, 432, 433, 434, 0, 0, 437, 0, 438, 439, 440, 441, 2725, 0, 443, 867, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 0, 456, 457, 458, 0, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 0, 473, 0, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 868, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 0, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 2642, 532, 533, 534, 535, 536, 870, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 0, 553, 0, 554, 555, 4452, 556, 557, 558, 559, 560, 561, 562, 0, 563, 871, 872, 0, 0, 566, 567, 0, 569, 0, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 0, 873, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 616, 617, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 0, 853, 259, 854, 855, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 856, 857, 273, 0, 274, 275, 276, 277, 0, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 858, 859, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 0, 338, 339, 340, 341, 0, 0, 343, 0, 344, 345, 346, 861, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 0, 0, 0, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 0, 382, 383, 384, 385, 862, 863, 0, 864, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 0, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 865, 426, 866, 428, 429, 430, 431, 432, 433, 434, 2799, 0, 437, 0, 438, 439, 440, 441, 0, 0, 443, 867, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 0, 456, 457, 458, 0, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 0, 473, 0, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 868, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 0, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 869, 532, 533, 534, 535, 536, 870, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 0, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 871, 872, 0, 0, 566, 567, 0, 569, 0, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 0, 873, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 616, 617, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 0, 853, 259, 854, 855, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 856, 857, 273, 0, 274, 275, 276, 277, 0, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 858, 859, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 0, 338, 339, 340, 341, 0, 0, 343, 0, 344, 345, 346, 861, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 0, 0, 0, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 0, 382, 383, 384, 385, 862, 863, 0, 864, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 0, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 865, 426, 866, 428, 429, 430, 431, 432, 433, 434, 4247, 0, 437, 0, 438, 439, 440, 441, 0, 0, 443, 867, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 0, 456, 457, 458, 0, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 0, 473, 0, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 868, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 0, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 869, 532, 533, 534, 535, 536, 870, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 0, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 871, 872, 0, 0, 566, 567, 0, 569, 0, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 0, 873, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 616, 617, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 0, 853, 259, 854, 855, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 856, 857, 273, 0, 274, 275, 276, 277, 0, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 858, 859, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 0, 338, 339, 340, 341, 0, 0, 343, 0, 344, 345, 346, 861, 348, 5723, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 0, 0, 0, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 0, 382, 383, 384, 385, 862, 863, 0, 864, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 0, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 865, 426, 866, 428, 429, 430, 431, 432, 433, 434, 0, 0, 437, 0, 438, 439, 440, 441, 0, 0, 443, 867, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 0, 456, 457, 458, 0, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 0, 473, 0, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 868, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 0, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 869, 532, 533, 534, 535, 536, 870, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 0, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 871, 872, 0, 0, 566, 567, 0, 569, 0, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 0, 873, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 616, 617, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 0, 853, 259, 854, 855, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 856, 857, 273, 0, 274, 275, 276, 277, 0, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 858, 859, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 0, 338, 339, 340, 341, 0, 0, 343, 0, 344, 345, 346, 861, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 0, 0, 0, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 0, 382, 383, 384, 385, 862, 863, 0, 864, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 0, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 865, 426, 866, 428, 429, 430, 431, 432, 433, 434, 0, 0, 437, 0, 438, 439, 440, 441, 0, 0, 443, 867, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 0, 456, 457, 458, 0, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 0, 473, 0, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 868, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 0, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 869, 532, 533, 534, 535, 536, 870, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 0, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 871, 872, 0, 0, 566, 567, 0, 569, 0, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 0, 873, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 616, 617, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 0, 853, 259, 854, 855, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 856, 857, 273, 0, 274, 275, 276, 277, 0, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 858, 859, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 0, 338, 339, 340, 341, 0, 0, 343, 0, 344, 345, 346, 861, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 0, 0, 0, 360, 361, 0, 362, 363, 364, 365, 1124, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 0, 382, 383, 384, 385, 862, 863, 0, 864, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 0, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 865, 426, 866, 428, 429, 430, 431, 432, 433, 434, 0, 0, 437, 0, 438, 439, 440, 441, 0, 0, 443, 867, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 0, 456, 457, 458, 0, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 0, 473, 0, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 868, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 0, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 869, 532, 533, 534, 535, 536, 870, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 0, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 871, 872, 0, 0, 566, 567, 0, 569, 0, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 0, 873, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 616, 617, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 0, 853, 259, 854, 855, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 856, 857, 273, 0, 274, 275, 276, 277, 0, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 858, 859, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 0, 338, 339, 340, 341, 0, 0, 343, 0, 344, 345, 346, 861, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 0, 0, 0, 360, 361, 0, 362, 363, 364, 365, 1156, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 0, 382, 383, 384, 385, 862, 863, 0, 864, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 0, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 865, 426, 866, 428, 429, 430, 431, 432, 433, 434, 0, 0, 437, 0, 438, 439, 440, 441, 0, 0, 443, 867, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 0, 456, 457, 458, 0, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 0, 473, 0, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 868, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 0, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 869, 532, 533, 534, 535, 536, 870, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 0, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 871, 872, 0, 0, 566, 567, 0, 569, 0, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 0, 873, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 616, 617, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 0, 853, 259, 854, 855, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 856, 857, 273, 0, 274, 275, 276, 277, 0, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 858, 859, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 0, 338, 339, 340, 341, 0, 0, 343, 0, 344, 345, 346, 861, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 0, 0, 0, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 0, 382, 383, 384, 385, 862, 863, 0, 864, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 0, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 865, 426, 866, 428, 429, 430, 431, 432, 433, 434, 0, 0, 437, 0, 438, 439, 440, 441, 0, 0, 443, 867, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 0, 456, 457, 458, 0, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 0, 473, 0, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 868, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 0, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 2642, 532, 533, 534, 535, 536, 870, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 0, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 871, 872, 0, 0, 566, 567, 0, 569, 0, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 0, 873, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 616, 617, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 0, 853, 259, 854, 855, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 856, 857, 273, 0, 274, 275, 276, 277, 0, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 858, 859, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 860, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 0, 338, 339, 340, 341, 0, 0, 343, 0, 344, 345, 346, 861, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 0, 0, 0, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 0, 382, 383, 384, 385, 862, 863, 0, 864, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 0, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 865, 426, 866, 428, 429, 430, 431, 432, 433, 434, 0, 0, 437, 0, 438, 439, 440, 441, 0, 0, 443, 867, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 0, 456, 457, 458, 0, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 0, 473, 0, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 868, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 0, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 0, 532, 533, 534, 535, 536, 870, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 0, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 871, 872, 0, 0, 566, 567, 0, 569, 0, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 0, 873, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 616, 617, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 0, 243, 244, 245, 0, 0, 0, 0, 0, 0, 0, 246, 247, 248, 0, 249, 250, 251, 252, 253, 254, 255, 256, 0, 0, 259, 0, 0, 0, 262, 263, 264, 265, 266, 267, 268, 0, 0, 269, 270, 0, 0, 273, 0, 274, 275, 276, 277, 0, 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, 0, 300, 0, 0, 0, 301, 302, 303, 304, 305, 306, 0, 0, 309, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, 0, 0, 322, 323, 324, 325, 326, 0, 327, 328, 329, 0, 330, 331, 332, 0, 333, 334, 335, 336, 0, 338, 339, 340, 341, 0, 0, 343, 0, 344, 345, 346, 0, 348, 0, 349, 0, 350, 351, 0, 352, 353, 354, 355, 356, 0, 357, 0, 0, 0, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, 377, 378, 0, 379, 380, 0, 382, 383, 384, 385, 0, 0, 0, 0, 0, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 0, 399, 0, 401, 402, 403, 0, 404, 405, 406, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 0, 426, 0, 428, 429, 430, 431, 432, 433, 434, 0, 0, 437, 0, 438, 439, 440, 441, 0, 0, 443, 0, 445, 446, 447, 0, 448, 449, 0, 0, 450, 451, 452, 0, 0, 453, 454, 0, 456, 457, 458, 0, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, 0, 473, 0, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 0, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 510, 511, 512, 513, 0, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, 527, 528, 0, 529, 530, 0, 532, 533, 534, 535, 536, 0, 538, 0, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 0, 553, 0, 554, 555, 0, 556, 557, 558, 559, 560, 561, 562, 0, 563, 0, 0, 0, 0, 566, 567, 0, 569, 0, 0, 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, 579, 580, 581, 582, 583, 0, 0, 584, 585, 586, 587, 588, 0, 0, 0, 591, 592, 593, 594, 595, 596, 0, 0, 597, 0, 0, 598, 599, 600, 601, 602, 603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 616, 617 }; static const yytype_int16 yycheck[] = { 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 211, 0, 206, 0, 984, 0, 0, 0, 951, 0, 214, 21, 0, 217, 0, 21, 0, 211, 1012, 189, 913, 653, 816, 36, 766, 767, 768, 1020, 1136, 45, 772, 1001, 8, 51, 1613, 813, 1458, 1486, 907, 15, 909, 2682, 887, 1014, 869, 1532, 985, 22, 632, 1197, 840, 1010, 1016, 28, 1548, 197, 685, 1525, 858, 859, 2624, 1086, 726, 1240, 2625, 1228, 792, 867, 839, 823, 3303, 2974, 3305, 3148, 1852, 3001, 3039, 1020, 730, 3125, 925, 872, 1537, 1532, 3394, 3789, 3838, 6, 3595, 1982, 1060, 3488, 2000, 3515, 1064, 1681, 216, 4100, 708, 1069, 23, 685, 950, 1525, 1578, 1579, 4190, 2893, 1582, 1079, 230, 3741, 722, 36, 4147, 634, 4143, 3541, 3354, 3543, 3404, 2986, 1092, 3805, 2046, 3816, 2048, 975, 4626, 3348, 1415, 721, 980, 731, 2, 191, 44, 4440, 4423, 5089, 4428, 1515, 4225, 4944, 3368, 1923, 706, 5216, 732, 709, 4385, 35, 175, 1123, 1648, 1649, 4936, 2022, 42, 50, 4887, 984, 4724, 41, 4642, 936, 4644, 191, 2611, 2541, 993, 2500, 2609, 2646, 2647, 3260, 2505, 5264, 5131, 197, 1003, 4691, 3414, 3402, 3803, 2871, 4122, 1642, 206, 207, 819, 1125, 4427, 5492, 910, 1075, 214, 1131, 216, 217, 910, 1575, 1498, 5252, 6, 934, 790, 1141, 4935, 4567, 1090, 1145, 230, 13, 1669, 1149, 2588, 1151, 1592, 0, 5173, 11, 6, 1157, 3353, 0, 3355, 0, 55, 1163, 6, 0, 1166, 79, 95, 819, 12, 5180, 5181, 15, 16, 5476, 13, 6, 48, 64, 975, 39, 6, 12, 120, 980, 30, 1024, 12, 856, 857, 15, 16, 37, 844, 15, 6, 6, 6, 866, 11, 64, 12, 12, 12, 6, 0, 2939, 147, 2941, 2942, 12, 120, 174, 2946, 2947, 2948, 11, 2950, 2951, 2952, 36, 174, 0, 175, 92, 6, 0, 6, 125, 2982, 191, 12, 181, 12, 181, 30, 64, 11, 64, 86, 169, 26, 6, 21, 44, 1054, 64, 13, 12, 6, 225, 15, 16, 904, 174, 12, 30, 6, 44, 6, 64, 6, 33, 12, 5737, 12, 4417, 12, 6, 120, 73, 64, 113, 122, 186, 288, 120, 153, 56, 5, 46, 5, 174, 5205, 175, 11, 174, 11, 30, 92, 1831, 4441, 4515, 4516, 4517, 37, 4519, 4520, 4521, 4522, 4523, 174, 4931, 283, 64, 283, 1099, 6, 69, 5675, 283, 323, 64, 79, 198, 212, 28, 92, 31, 5834, 274, 280, 120, 174, 43, 198, 174, 360, 377, 309, 13, 309, 174, 1359, 174, 1427, 309, 364, 174, 51, 1371, 5811, 5812, 320, 378, 120, 335, 1357, 151, 377, 198, 277, 1362, 1363, 251, 140, 198, 1076, 198, 26, 40, 36, 198, 46, 5666, 302, 174, 30, 171, 1020, 269, 5391, 418, 418, 166, 653, 30, 1415, 5494, 174, 343, 124, 48, 37, 166, 81, 6003, 174, 1419, 120, 330, 1258, 1259, 152, 463, 122, 79, 304, 405, 288, 174, 4726, 3, 198, 5, 6, 5253, 461, 4733, 174, 11, 12, 1279, 191, 30, 484, 92, 308, 13, 174, 348, 360, 174, 1216, 198, 703, 81, 73, 81, 273, 484, 1289, 13, 502, 441, 24, 343, 92, 169, 92, 24, 200, 52, 420, 343, 81, 228, 492, 5814, 6066, 130, 46, 506, 392, 81, 418, 81, 506, 384, 504, 506, 846, 81, 349, 651, 454, 1143, 81, 502, 502, 657, 1309, 264, 140, 1478, 502, 219, 196, 506, 154, 278, 5996, 669, 442, 79, 349, 440, 464, 226, 502, 502, 2582, 383, 1503, 125, 222, 1527, 154, 273, 1337, 213, 213, 125, 1513, 380, 151, 5976, 10, 269, 125, 13, 448, 1177, 136, 17, 18, 19, 5439, 321, 120, 364, 349, 502, 349, 502, 171, 418, 1204, 4225, 502, 418, 349, 5077, 374, 446, 6008, 5902, 1233, 1215, 142, 127, 502, 387, 440, 506, 349, 273, 632, 125, 1416, 502, 5213, 1229, 506, 4251, 423, 349, 506, 5674, 506, 638, 638, 502, 638, 638, 502, 651, 418, 638, 153, 638, 1608, 657, 502, 1611, 346, 447, 33, 506, 1247, 1248, 212, 1233, 492, 669, 432, 506, 500, 461, 349, 1600, 504, 377, 1603, 1604, 444, 212, 24, 5900, 5024, 685, 5611, 418, 403, 331, 690, 1274, 732, 502, 5975, 695, 1501, 364, 1619, 699, 700, 217, 403, 1679, 1680, 506, 706, 506, 708, 709, 4396, 493, 494, 495, 496, 497, 498, 435, 502, 1997, 1582, 721, 722, 239, 5486, 451, 492, 506, 502, 501, 387, 736, 732, 1563, 1380, 313, 1677, 6018, 504, 731, 440, 245, 505, 1354, 502, 498, 4150, 1445, 505, 5818, 505, 4437, 4670, 1445, 505, 500, 492, 502, 1563, 504, 321, 913, 502, 506, 500, 506, 493, 494, 504, 4258, 1632, 1633, 4436, 506, 5805, 4264, 502, 502, 502, 502, 394, 395, 5833, 493, 494, 502, 453, 506, 1354, 746, 790, 748, 1599, 750, 372, 505, 1362, 1363, 506, 756, 502, 463, 760, 463, 493, 494, 502, 418, 502, 1392, 1393, 1686, 1523, 813, 814, 5750, 505, 498, 387, 819, 461, 1951, 484, 502, 484, 350, 506, 418, 5763, 4441, 502, 506, 410, 26, 412, 1925, 506, 418, 502, 370, 502, 1034, 502, 484, 844, 1031, 846, 4065, 418, 1035, 418, 1037, 493, 494, 493, 494, 22, 174, 1034, 4997, 1813, 360, 28, 901, 506, 1576, 447, 418, 1958, 869, 1795, 1171, 290, 5904, 435, 4076, 418, 5369, 418, 4080, 1970, 380, 1593, 3950, 418, 457, 4487, 3915, 778, 418, 5673, 891, 3, 113, 440, 901, 1815, 495, 496, 497, 498, 1025, 440, 245, 904, 409, 114, 24, 5670, 440, 903, 903, 903, 903, 903, 903, 903, 903, 903, 3490, 903, 4135, 903, 289, 903, 3, 903, 903, 903, 3776, 903, 6, 113, 903, 438, 903, 927, 903, 103, 457, 442, 5876, 4346, 5974, 5653, 638, 5490, 140, 440, 3374, 840, 51, 169, 4064, 3373, 4066, 1570, 817, 113, 463, 5669, 821, 3417, 3317, 3419, 218, 4345, 3635, 3636, 64, 1832, 289, 3640, 125, 847, 346, 309, 493, 494, 38, 91, 150, 1898, 493, 494, 495, 496, 497, 498, 360, 1906, 362, 77, 153, 202, 3001, 169, 1498, 502, 495, 496, 497, 498, 125, 6055, 5582, 406, 6, 1308, 176, 5587, 5588, 1012, 1013, 1014, 26, 64, 6, 183, 269, 1020, 32, 364, 89, 186, 1025, 5243, 269, 918, 59, 1030, 1031, 5815, 144, 24, 1035, 41, 1037, 731, 732, 65, 1041, 120, 933, 5806, 4251, 174, 216, 73, 186, 55, 176, 423, 1999, 122, 1579, 10, 1057, 1582, 5825, 212, 120, 120, 17, 18, 19, 132, 409, 171, 202, 198, 3719, 490, 491, 492, 493, 494, 495, 496, 497, 498, 190, 5147, 283, 5377, 120, 1386, 294, 5548, 24, 212, 24, 5107, 4472, 3405, 461, 438, 2043, 136, 129, 1100, 418, 1102, 1103, 269, 3773, 111, 269, 6, 309, 24, 304, 6044, 113, 12, 294, 4408, 175, 2071, 364, 89, 463, 294, 989, 990, 294, 309, 5910, 245, 140, 292, 242, 269, 362, 115, 503, 502, 1861, 506, 3, 748, 749, 750, 1143, 253, 753, 754, 755, 466, 302, 343, 5917, 1452, 6, 222, 763, 364, 5825, 325, 10, 502, 6093, 13, 132, 89, 290, 17, 18, 19, 502, 5236, 1171, 345, 10, 212, 492, 13, 328, 288, 3750, 17, 18, 19, 26, 377, 1177, 406, 504, 5458, 24, 5973, 1967, 1968, 304, 423, 273, 446, 405, 406, 36, 278, 286, 5985, 278, 1204, 273, 211, 132, 901, 190, 903, 26, 1778, 1213, 239, 1215, 274, 5484, 5488, 5504, 380, 269, 1180, 4957, 1182, 406, 1184, 91, 1186, 1229, 1188, 1189, 1190, 1233, 4920, 294, 6019, 1195, 480, 4147, 5457, 307, 2646, 377, 461, 1245, 133, 364, 370, 5917, 415, 406, 445, 506, 349, 245, 143, 502, 1108, 368, 4933, 6027, 4926, 331, 269, 434, 6049, 302, 1308, 269, 5487, 396, 253, 406, 426, 256, 1276, 2746, 2715, 278, 144, 4685, 1928, 24, 446, 24, 3741, 2040, 440, 278, 6073, 5584, 409, 304, 502, 448, 503, 140, 409, 506, 411, 349, 502, 1895, 1304, 1305, 1306, 1831, 1308, 446, 245, 1957, 245, 2580, 185, 1961, 1888, 1909, 440, 502, 1966, 438, 125, 1969, 135, 140, 3, 506, 1328, 377, 1922, 245, 343, 24, 506, 370, 290, 140, 307, 3345, 377, 29, 3348, 122, 168, 411, 463, 198, 1920, 53, 1892, 502, 3199, 3200, 1354, 1935, 2793, 3204, 5367, 6027, 2928, 366, 1362, 1363, 377, 1907, 377, 5847, 1910, 220, 1375, 406, 506, 377, 364, 360, 3831, 1570, 242, 2735, 278, 112, 307, 220, 442, 502, 1386, 368, 3394, 636, 500, 1834, 1430, 1431, 504, 1433, 3402, 418, 3245, 3246, 289, 303, 4668, 176, 92, 3309, 2020, 5473, 249, 4627, 245, 1854, 115, 448, 91, 1415, 5482, 304, 1960, 409, 224, 406, 1964, 1965, 1430, 1431, 461, 1433, 99, 364, 4631, 364, 1432, 492, 150, 4636, 1436, 1437, 4639, 290, 304, 500, 411, 502, 503, 504, 183, 506, 438, 484, 364, 3, 1452, 290, 6, 30, 343, 3018, 1458, 330, 12, 304, 273, 289, 320, 269, 5532, 502, 145, 506, 345, 198, 4500, 463, 409, 339, 409, 292, 4884, 343, 289, 728, 4510, 347, 1177, 506, 411, 190, 176, 193, 361, 99, 316, 506, 198, 409, 1997, 26, 479, 278, 343, 4409, 506, 438, 245, 438, 245, 253, 4453, 180, 224, 119, 502, 377, 177, 318, 26, 290, 114, 250, 236, 502, 32, 254, 438, 1525, 2502, 204, 463, 364, 463, 235, 347, 348, 377, 5147, 490, 491, 492, 493, 494, 495, 496, 497, 498, 409, 154, 411, 1241, 463, 253, 336, 225, 256, 245, 269, 5571, 1447, 2504, 1449, 135, 808, 377, 115, 420, 461, 1566, 502, 1261, 502, 1178, 420, 461, 1181, 409, 1183, 380, 1185, 5242, 1187, 746, 5254, 748, 1191, 750, 355, 461, 3037, 502, 5655, 756, 757, 758, 1584, 135, 695, 137, 461, 1589, 1599, 5585, 303, 186, 438, 39, 154, 202, 502, 464, 484, 506, 140, 120, 360, 154, 1308, 343, 331, 355, 304, 347, 721, 368, 364, 2540, 364, 61, 2580, 463, 3033, 140, 506, 163, 3037, 311, 461, 440, 325, 190, 490, 491, 492, 493, 494, 495, 496, 497, 498, 4416, 157, 377, 122, 461, 490, 491, 492, 493, 494, 495, 496, 497, 498, 447, 326, 1664, 368, 380, 502, 409, 732, 409, 441, 1663, 364, 362, 377, 1667, 112, 382, 1679, 1680, 1681, 5428, 191, 5430, 269, 4334, 124, 5434, 5435, 292, 4339, 377, 440, 30, 2670, 359, 438, 1998, 438, 2000, 253, 304, 2829, 256, 236, 2006, 1893, 122, 372, 1903, 1904, 2012, 2013, 2014, 163, 4624, 30, 409, 33, 304, 169, 463, 2023, 463, 13, 440, 790, 1904, 2029, 304, 339, 273, 421, 461, 423, 5802, 1430, 1431, 427, 1433, 343, 4410, 5144, 407, 2670, 60, 438, 1638, 4372, 100, 222, 5908, 5909, 285, 169, 433, 484, 1882, 343, 5745, 502, 370, 502, 441, 273, 201, 444, 364, 343, 4225, 84, 463, 26, 87, 304, 479, 461, 1778, 32, 93, 844, 219, 2909, 88, 951, 362, 5188, 236, 5475, 1790, 79, 206, 370, 304, 452, 4251, 10, 406, 135, 13, 1801, 273, 377, 17, 18, 19, 122, 121, 405, 406, 502, 303, 1813, 343, 250, 368, 1817, 461, 254, 5493, 370, 506, 36, 2777, 175, 303, 2020, 73, 406, 370, 452, 5898, 343, 269, 2642, 1836, 285, 5502, 503, 448, 904, 506, 123, 1844, 502, 2622, 423, 377, 458, 2803, 453, 1852, 461, 1020, 269, 249, 406, 208, 273, 331, 165, 446, 506, 6020, 178, 406, 377, 303, 0, 1870, 448, 5073, 223, 123, 120, 484, 2839, 191, 1879, 273, 502, 1882, 233, 123, 1885, 377, 140, 1888, 1889, 203, 206, 1892, 1893, 502, 1895, 1896, 506, 5913, 448, 377, 1584, 5281, 442, 5970, 169, 1589, 1907, 448, 1909, 1910, 261, 461, 348, 194, 386, 180, 442, 2843, 1919, 1920, 461, 1922, 1923, 505, 502, 2851, 479, 502, 2854, 1030, 347, 4989, 178, 198, 484, 371, 461, 288, 10, 2745, 1041, 13, 1935, 484, 194, 17, 18, 19, 2902, 5696, 179, 5686, 502, 269, 194, 391, 1057, 273, 492, 1960, 377, 502, 502, 1964, 1965, 163, 10, 39, 294, 13, 504, 3062, 94, 17, 18, 19, 502, 506, 1937, 1663, 1939, 506, 1941, 1667, 1943, 4441, 1945, 163, 1982, 1982, 1949, 1982, 1982, 169, 5668, 1991, 1982, 1998, 1982, 2000, 4886, 4910, 5667, 354, 2005, 2006, 220, 6023, 282, 3414, 239, 2012, 2013, 2014, 2968, 137, 2017, 304, 2019, 3424, 2021, 2022, 2023, 2024, 2025, 2026, 2889, 273, 2029, 175, 2031, 2032, 278, 2839, 2035, 304, 420, 273, 236, 4925, 3931, 367, 278, 5101, 304, 5103, 2922, 2923, 2924, 5456, 2051, 2052, 2053, 2054, 3505, 36, 343, 4905, 3620, 5275, 236, 2892, 208, 423, 13, 2819, 461, 503, 2069, 4076, 2071, 2877, 3232, 4080, 343, 321, 290, 223, 347, 393, 464, 364, 396, 343, 1990, 176, 1977, 233, 353, 484, 377, 337, 2817, 329, 2819, 70, 71, 46, 304, 304, 3505, 3054, 5507, 2670, 323, 2911, 335, 502, 377, 285, 393, 3872, 1213, 3961, 3962, 3963, 3964, 377, 209, 3967, 3968, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 3976, 3698, 79, 170, 347, 5807, 3051, 3704, 3593, 343, 343, 3056, 4147, 3058, 3005, 3006, 3007, 3008, 348, 3010, 220, 5529, 2743, 3068, 112, 1576, 3071, 304, 3073, 3074, 15, 16, 3077, 6, 377, 39, 3081, 204, 3083, 12, 73, 3086, 1593, 377, 3035, 263, 79, 377, 220, 4025, 4026, 92, 4056, 410, 3, 412, 5093, 61, 3112, 92, 5481, 435, 1357, 360, 26, 362, 343, 1362, 1363, 287, 5107, 4848, 331, 4850, 4851, 4852, 3642, 4874, 27, 4876, 354, 438, 170, 2212, 500, 344, 248, 120, 504, 122, 290, 370, 2867, 5437, 2869, 1390, 461, 454, 2873, 5914, 377, 5903, 343, 454, 1399, 3150, 1401, 179, 112, 100, 1405, 273, 343, 1935, 373, 418, 204, 1412, 290, 484, 3408, 3687, 335, 2252, 150, 5743, 423, 406, 335, 91, 2559, 367, 503, 81, 5291, 506, 377, 163, 179, 442, 169, 3223, 91, 169, 92, 178, 377, 3229, 490, 491, 492, 493, 494, 495, 496, 497, 498, 410, 371, 412, 1982, 202, 250, 192, 371, 304, 254, 239, 302, 448, 463, 133, 169, 206, 178, 3028, 2305, 249, 140, 49, 5, 143, 461, 6, 175, 410, 11, 412, 169, 12, 216, 484, 463, 406, 19, 192, 145, 201, 239, 406, 339, 226, 72, 979, 343, 484, 2028, 3812, 1503, 502, 236, 192, 37, 484, 501, 5748, 5749, 208, 1513, 506, 28, 461, 998, 502, 2987, 1001, 5570, 5264, 81, 6081, 288, 6083, 223, 15, 16, 293, 370, 6052, 377, 92, 273, 454, 233, 51, 484, 278, 250, 454, 6, 198, 254, 6103, 293, 497, 12, 204, 3310, 502, 502, 285, 504, 5393, 1557, 1558, 497, 269, 5398, 5399, 294, 502, 261, 504, 406, 4408, 4409, 252, 6, 6, 6, 502, 34, 35, 12, 12, 12, 5322, 503, 423, 321, 506, 490, 491, 492, 493, 494, 495, 496, 497, 498, 303, 3304, 2573, 2574, 2575, 337, 1600, 3143, 3144, 1603, 1604, 6, 100, 501, 345, 448, 177, 12, 506, 490, 491, 492, 493, 494, 495, 496, 497, 498, 461, 274, 275, 500, 367, 502, 6, 3109, 5, 5869, 1566, 410, 12, 412, 11, 304, 5, 348, 99, 502, 96, 504, 11, 484, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 249, 2490, 311, 354, 249, 119, 438, 371, 502, 410, 2499, 412, 5, 2502, 6, 5114, 5115, 339, 11, 6, 12, 343, 423, 6, 2706, 12, 175, 391, 4364, 12, 2705, 288, 2707, 2708, 435, 2217, 293, 438, 495, 202, 154, 2706, 435, 500, 495, 502, 355, 504, 434, 500, 3455, 502, 975, 504, 2543, 377, 5193, 980, 2547, 208, 252, 2550, 384, 2552, 370, 2542, 2555, 3329, 3330, 5962, 2559, 22, 34, 35, 223, 5509, 500, 28, 502, 192, 504, 3491, 3307, 423, 233, 265, 266, 267, 268, 2702, 502, 2580, 504, 2582, 3212, 404, 3214, 3215, 503, 3415, 406, 506, 461, 503, 463, 503, 506, 3517, 506, 410, 2599, 412, 261, 503, 150, 503, 506, 3359, 506, 2608, 2609, 3526, 503, 3528, 433, 506, 454, 163, 503, 4624, 88, 506, 441, 169, 60, 444, 4631, 359, 367, 288, 1795, 4636, 448, 365, 4639, 452, 2635, 4197, 2627, 503, 372, 2742, 506, 2642, 3425, 461, 226, 2646, 2647, 5863, 150, 3596, 2033, 3266, 2653, 2036, 11, 503, 2657, 4418, 506, 502, 2661, 163, 5571, 5711, 5712, 275, 484, 169, 216, 2670, 3801, 503, 503, 407, 506, 506, 2672, 502, 2674, 503, 2582, 288, 506, 5741, 502, 405, 3492, 2688, 236, 1790, 2691, 5147, 506, 354, 503, 429, 503, 506, 364, 506, 1801, 2702, 5371, 2704, 2705, 503, 2707, 2708, 506, 2710, 5379, 5380, 503, 339, 216, 506, 1817, 4187, 4195, 503, 4197, 2722, 506, 503, 503, 2828, 506, 506, 503, 503, 4135, 506, 506, 503, 236, 4173, 506, 285, 461, 502, 463, 2742, 2743, 3310, 370, 503, 294, 60, 506, 503, 2751, 503, 506, 3670, 506, 503, 360, 361, 506, 3676, 370, 454, 3568, 5672, 503, 360, 361, 506, 3914, 1870, 360, 361, 2773, 2774, 3782, 503, 2777, 88, 506, 503, 406, 442, 506, 285, 1885, 49, 3740, 1888, 1889, 63, 481, 3744, 294, 4231, 503, 3442, 406, 506, 5840, 5841, 2801, 10, 2803, 222, 13, 2908, 2807, 291, 6024, 503, 5354, 5267, 506, 503, 503, 291, 506, 506, 1919, 1920, 2821, 504, 448, 2714, 98, 503, 452, 2828, 506, 503, 2831, 503, 506, 288, 506, 461, 2837, 46, 448, 169, 503, 2008, 2009, 506, 53, 481, 3439, 3440, 2015, 2016, 503, 461, 503, 506, 2548, 506, 2857, 3469, 484, 291, 503, 503, 2863, 506, 506, 461, 3591, 463, 6084, 2870, 79, 3596, 360, 361, 484, 3738, 502, 54, 55, 135, 2047, 137, 288, 2884, 503, 159, 434, 506, 2582, 49, 481, 503, 502, 503, 506, 505, 2897, 410, 222, 412, 3201, 2902, 3469, 4910, 135, 161, 137, 2908, 2866, 5818, 503, 503, 3213, 506, 506, 5801, 135, 150, 137, 495, 503, 195, 2813, 506, 173, 2926, 2927, 2928, 506, 502, 163, 2932, 434, 2627, 503, 502, 169, 506, 3647, 148, 451, 503, 161, 3860, 506, 3862, 503, 3864, 3249, 506, 2051, 503, 500, 4430, 506, 503, 504, 231, 2959, 2960, 4120, 5054, 503, 503, 5057, 506, 506, 2968, 3155, 317, 3157, 3158, 503, 503, 503, 506, 506, 506, 503, 503, 502, 506, 506, 216, 193, 503, 38, 503, 506, 198, 506, 3292, 3585, 4425, 503, 4446, 3922, 506, 5907, 273, 3001, 60, 503, 236, 5913, 506, 503, 503, 505, 265, 266, 267, 268, 503, 3607, 505, 272, 4148, 4149, 502, 5567, 4152, 278, 503, 174, 503, 235, 3152, 506, 3020, 10, 305, 3033, 13, 218, 218, 3037, 17, 18, 19, 4047, 4446, 4049, 3997, 502, 3770, 265, 266, 267, 268, 502, 504, 285, 272, 273, 503, 36, 4004, 506, 278, 503, 294, 503, 506, 503, 506, 5073, 506, 503, 465, 343, 506, 3266, 347, 503, 349, 503, 506, 352, 506, 503, 290, 503, 506, 502, 506, 5093, 361, 503, 503, 503, 506, 506, 506, 503, 369, 198, 506, 503, 3001, 5107, 506, 503, 377, 503, 506, 503, 506, 4050, 506, 503, 502, 155, 506, 6023, 389, 503, 503, 503, 506, 506, 506, 3123, 503, 398, 3898, 506, 503, 402, 503, 506, 4615, 506, 4617, 3746, 4081, 3748, 4083, 3139, 503, 3141, 3788, 506, 39, 504, 503, 4093, 3148, 506, 502, 155, 3152, 10, 3154, 3155, 13, 3157, 3158, 3159, 288, 3201, 503, 5010, 198, 506, 61, 3167, 343, 3761, 425, 3763, 3172, 288, 382, 3368, 1447, 155, 1449, 4740, 3746, 436, 3748, 456, 4130, 155, 198, 155, 288, 46, 343, 155, 169, 234, 122, 442, 53, 5820, 288, 3199, 3200, 3201, 434, 502, 3204, 282, 169, 425, 503, 3249, 73, 273, 3212, 3213, 3214, 3215, 39, 112, 436, 3830, 273, 465, 79, 3223, 502, 288, 273, 49, 3228, 3229, 273, 3231, 49, 3233, 428, 273, 55, 91, 304, 3885, 454, 220, 454, 423, 4196, 3245, 3246, 169, 324, 3249, 155, 4720, 155, 502, 155, 155, 465, 155, 5264, 155, 506, 155, 155, 155, 3830, 155, 155, 155, 3268, 155, 3270, 4224, 3272, 4226, 482, 155, 155, 155, 169, 155, 288, 406, 101, 502, 39, 493, 494, 495, 496, 497, 498, 148, 3292, 234, 169, 169, 288, 4250, 502, 3297, 3298, 3299, 502, 502, 169, 502, 201, 126, 3348, 502, 3310, 290, 502, 502, 502, 39, 5322, 502, 502, 280, 462, 3913, 39, 502, 502, 144, 4251, 3020, 502, 148, 502, 502, 502, 502, 502, 502, 193, 61, 4165, 4469, 502, 198, 502, 300, 502, 3345, 502, 502, 3348, 10, 4132, 170, 13, 103, 173, 250, 502, 502, 3398, 254, 3360, 502, 502, 87, 502, 3365, 218, 506, 234, 188, 39, 506, 502, 38, 269, 502, 416, 416, 235, 500, 3380, 500, 418, 418, 174, 46, 418, 418, 112, 113, 4342, 169, 53, 506, 3394, 169, 120, 377, 6021, 4320, 285, 283, 3402, 69, 2570, 2571, 364, 418, 303, 418, 2576, 418, 418, 364, 3414, 504, 453, 3417, 79, 3419, 418, 418, 364, 236, 3424, 418, 80, 418, 492, 418, 92, 364, 155, 290, 0, 288, 231, 369, 278, 3439, 3440, 128, 2608, 2609, 3345, 3445, 418, 3348, 309, 5296, 409, 418, 418, 348, 178, 4330, 441, 288, 360, 278, 191, 92, 283, 418, 418, 128, 3466, 304, 198, 3469, 155, 442, 3472, 502, 502, 5481, 371, 201, 5325, 506, 3480, 418, 442, 418, 418, 128, 114, 148, 418, 418, 128, 418, 418, 3394, 418, 418, 391, 418, 60, 60, 418, 3402, 258, 418, 2670, 3505, 418, 292, 3201, 418, 329, 490, 491, 492, 493, 494, 495, 496, 497, 498, 328, 418, 328, 328, 48, 382, 250, 309, 409, 309, 254, 418, 193, 99, 418, 418, 48, 198, 503, 220, 220, 3541, 3542, 3543, 506, 269, 418, 418, 3741, 273, 418, 507, 4956, 288, 288, 428, 3249, 502, 418, 39, 220, 220, 220, 220, 220, 5571, 3566, 4483, 220, 4494, 4486, 220, 220, 155, 235, 3575, 288, 3577, 3271, 303, 155, 273, 120, 442, 150, 3585, 155, 155, 2754, 453, 155, 288, 242, 39, 3287, 273, 4512, 163, 273, 273, 39, 226, 169, 169, 2704, 366, 155, 3607, 174, 155, 2710, 155, 442, 442, 180, 155, 418, 183, 282, 174, 13, 187, 277, 457, 348, 482, 258, 416, 258, 290, 418, 183, 502, 502, 164, 502, 493, 494, 495, 496, 497, 498, 368, 420, 502, 481, 502, 371, 503, 191, 216, 2751, 3345, 503, 502, 3348, 3956, 506, 191, 506, 503, 500, 503, 481, 256, 503, 5672, 391, 503, 393, 236, 3671, 396, 216, 458, 380, 224, 2843, 506, 289, 506, 39, 442, 442, 297, 2851, 60, 503, 2854, 453, 3990, 364, 502, 3693, 442, 224, 224, 278, 3698, 278, 2866, 3394, 418, 418, 3704, 3398, 502, 10, 418, 3402, 13, 169, 288, 3713, 17, 18, 19, 4663, 278, 285, 49, 382, 288, 273, 288, 234, 234, 234, 294, 252, 288, 360, 418, 36, 128, 386, 506, 4037, 409, 198, 3740, 3741, 343, 288, 506, 192, 3746, 288, 3748, 288, 377, 374, 461, 331, 503, 39, 220, 294, 442, 442, 226, 3761, 283, 3763, 327, 4895, 155, 492, 169, 39, 407, 418, 4579, 10, 418, 454, 13, 328, 502, 171, 17, 18, 19, 3783, 502, 351, 4702, 374, 155, 502, 155, 155, 283, 461, 273, 4646, 442, 39, 4390, 4391, 273, 288, 28, 288, 226, 283, 4731, 189, 189, 3809, 169, 39, 5818, 170, 226, 374, 169, 5248, 288, 273, 198, 482, 198, 198, 506, 3815, 198, 4743, 4744, 198, 3830, 3831, 493, 494, 495, 496, 497, 498, 27, 506, 406, 465, 4488, 4489, 4490, 4491, 4492, 181, 418, 174, 255, 504, 461, 3853, 288, 60, 282, 502, 174, 174, 2960, 3851, 502, 10, 506, 506, 13, 506, 434, 503, 503, 51, 3872, 300, 135, 310, 481, 503, 174, 299, 502, 4033, 503, 503, 503, 272, 503, 503, 506, 503, 502, 3891, 458, 418, 460, 461, 503, 503, 4658, 46, 5376, 5907, 506, 503, 4856, 503, 53, 5913, 502, 502, 249, 502, 501, 3913, 174, 501, 3916, 220, 503, 502, 183, 440, 4838, 4839, 244, 288, 506, 484, 448, 3819, 483, 458, 79, 3933, 500, 60, 3936, 503, 504, 505, 288, 3941, 291, 3943, 288, 492, 3112, 202, 502, 155, 418, 3951, 210, 3953, 278, 418, 3956, 418, 158, 273, 3960, 3961, 3962, 3963, 3964, 418, 502, 3967, 3968, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 3976, 155, 87, 377, 3980, 3981, 3982, 220, 502, 3985, 369, 290, 155, 155, 3990, 4031, 369, 234, 202, 3995, 369, 3997, 158, 3999, 288, 148, 492, 5850, 5851, 418, 442, 4007, 3898, 158, 4010, 236, 4012, 364, 458, 439, 311, 6023, 311, 158, 128, 418, 4022, 418, 246, 4025, 4026, 393, 418, 246, 4030, 4031, 4225, 418, 246, 4649, 364, 4037, 418, 3139, 273, 4039, 4040, 4041, 4042, 364, 193, 418, 418, 155, 418, 198, 4968, 290, 3154, 4971, 4972, 418, 4251, 3159, 364, 48, 418, 4056, 4056, 364, 4056, 4056, 4068, 377, 503, 4056, 4988, 4056, 503, 418, 4076, 418, 418, 220, 4080, 418, 503, 501, 220, 186, 503, 503, 235, 292, 428, 506, 3, 169, 49, 113, 503, 506, 169, 502, 39, 503, 155, 155, 492, 418, 5510, 169, 283, 186, 442, 502, 4112, 155, 364, 442, 364, 364, 364, 364, 506, 291, 3815, 374, 153, 4717, 153, 220, 220, 4129, 220, 220, 220, 220, 220, 4135, 220, 220, 500, 146, 13, 300, 3308, 290, 3310, 272, 506, 4147, 503, 503, 174, 4875, 453, 503, 506, 223, 503, 503, 3851, 501, 3326, 458, 223, 298, 408, 295, 60, 503, 4168, 4815, 4816, 502, 4818, 503, 187, 4076, 415, 503, 351, 4080, 502, 502, 447, 90, 502, 428, 169, 490, 491, 492, 493, 494, 495, 496, 497, 498, 26, 39, 226, 418, 210, 60, 32, 155, 442, 409, 3372, 3373, 5083, 393, 442, 178, 428, 369, 4806, 158, 418, 418, 364, 4219, 418, 418, 5783, 418, 4224, 4225, 4226, 364, 503, 503, 503, 343, 461, 502, 502, 382, 60, 409, 448, 169, 288, 79, 155, 113, 503, 5198, 4147, 77, 4441, 428, 4250, 4251, 220, 490, 491, 492, 493, 494, 495, 496, 497, 498, 220, 220, 220, 4565, 502, 502, 205, 465, 224, 502, 288, 418, 39, 309, 503, 286, 39, 3, 288, 502, 506, 506, 428, 45, 506, 418, 502, 374, 503, 180, 113, 174, 220, 174, 503, 4297, 60, 300, 4300, 1437, 63, 133, 503, 459, 459, 223, 4265, 503, 140, 4903, 503, 143, 506, 503, 503, 502, 460, 502, 4277, 502, 283, 492, 5414, 428, 5416, 418, 174, 461, 10, 79, 204, 13, 415, 482, 192, 98, 4031, 192, 170, 492, 278, 278, 60, 409, 493, 494, 495, 496, 497, 498, 418, 73, 506, 418, 506, 155, 418, 158, 418, 127, 220, 4056, 4364, 503, 46, 176, 502, 120, 39, 198, 3472, 53, 204, 283, 26, 374, 502, 39, 3480, 273, 32, 4076, 171, 442, 374, 4080, 283, 461, 4390, 4391, 60, 85, 4394, 409, 461, 47, 159, 79, 39, 4401, 174, 288, 502, 169, 506, 338, 4408, 4409, 207, 291, 218, 390, 5544, 174, 26, 447, 4418, 309, 5066, 503, 32, 502, 39, 503, 367, 77, 82, 502, 92, 5077, 502, 136, 195, 337, 503, 47, 288, 269, 5315, 4441, 199, 273, 4434, 418, 4446, 4447, 4448, 5225, 5425, 5581, 5368, 283, 503, 39, 4649, 155, 4458, 155, 169, 502, 292, 502, 502, 226, 502, 77, 148, 418, 231, 502, 39, 278, 304, 3575, 502, 3577, 442, 247, 502, 131, 502, 133, 503, 155, 374, 113, 39, 292, 140, 503, 174, 143, 5108, 428, 169, 5627, 5628, 4499, 5425, 388, 388, 503, 5420, 60, 112, 4408, 4409, 502, 502, 502, 273, 193, 39, 695, 346, 347, 198, 447, 170, 131, 506, 133, 506, 4525, 502, 502, 457, 169, 140, 409, 191, 143, 409, 269, 442, 4537, 202, 502, 6, 721, 288, 503, 305, 5159, 162, 377, 465, 502, 361, 361, 73, 291, 204, 235, 5148, 73, 505, 136, 170, 461, 461, 141, 457, 4565, 166, 166, 4568, 446, 502, 3671, 506, 447, 36, 3741, 4576, 4577, 502, 4579, 174, 377, 248, 409, 4584, 4585, 347, 334, 278, 4589, 204, 352, 409, 4593, 204, 288, 4596, 4597, 3764, 5552, 361, 4601, 288, 374, 502, 39, 39, 4607, 369, 199, 290, 502, 291, 3713, 291, 445, 377, 5533, 176, 269, 176, 154, 60, 273, 4624, 60, 502, 39, 389, 344, 295, 4631, 503, 283, 414, 503, 4636, 398, 60, 4639, 4640, 402, 292, 418, 5619, 397, 5776, 4647, 125, 440, 6, 503, 374, 502, 304, 141, 360, 151, 4658, 269, 421, 278, 502, 273, 5617, 414, 4666, 502, 25, 360, 4660, 4661, 506, 283, 506, 5637, 36, 82, 274, 418, 377, 174, 292, 502, 360, 296, 4686, 5333, 4683, 869, 154, 274, 120, 343, 304, 456, 346, 347, 506, 460, 388, 388, 382, 448, 4704, 461, 461, 502, 176, 3809, 447, 176, 442, 5843, 5844, 4408, 448, 4717, 502, 447, 503, 903, 5274, 4624, 2985, 943, 1666, 377, 990, 2786, 4631, 3310, 989, 343, 2877, 4636, 346, 347, 4639, 3517, 10, 4434, 4742, 13, 4224, 4199, 5767, 17, 18, 19, 2903, 2957, 1363, 3853, 3732, 5201, 3922, 5617, 4388, 4759, 5884, 5248, 4197, 5224, 4764, 4865, 3446, 377, 4725, 3099, 5747, 4771, 5418, 5107, 5872, 5647, 46, 5646, 4735, 5787, 5907, 3450, 4910, 53, 4409, 4435, 4378, 4787, 4420, 5591, 2971, 2971, 4219, 3542, 4794, 445, 3780, 4404, 4904, 985, 5231, 3824, 482, 4471, 5522, 5986, 4806, 6096, 6078, 79, 5215, 3740, 4443, 493, 494, 495, 496, 497, 498, 5799, 5161, 5396, 1825, 5600, 5164, 18, 28, 634, 3889, 5366, 4499, 5982, 1012, 2987, 4446, 445, 3936, 4837, 1868, 3424, 2647, 1865, 3835, 5510, 5274, 5411, 1879, 1903, 1985, 686, 1030, 1985, 719, 3674, 2902, 4250, 5825, 3593, 6027, 5425, 3960, 1041, 5586, 4863, 834, 4475, 2933, 1482, 4477, 2589, 1205, 1778, 6046, 4662, 5363, 4127, 5740, 1057, 1379, 4879, 40, 1338, 40, 3365, 4884, 3985, 2022, 3380, 2599, 5728, 5564, 3348, 4082, 5074, 4065, 2031, 3345, 5322, 5321, 3345, 4128, 6005, 5722, 4903, 5854, 1440, 5551, 1439, 1442, 5884, 4910, 5300, 1396, 3999, 5565, 5108, 5566, 2496, 2024, 3271, 3168, 2932, 3269, 193, 2587, 891, 2499, -1, 198, -1, -1, -1, 4922, -1, -1, -1, -1, -1, 4631, -1, -1, -1, -1, 4636, -1, -1, 4639, -1, -1, -1, -1, 5867, 10, -1, 5147, 13, 4956, -1, 4958, -1, -1, -1, -1, -1, -1, 235, 5159, 4660, 4661, 5583, -1, -1, 5158, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5159, -1, -1, -1, -1, 46, 4989, -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, 5302, -1, -1, -1, -1, 5007, -1, 4910, 5010, -1, -1, 5013, 5014, 5015, -1, 5203, -1, -1, 290, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1213, -1, -1, 5336, -1, 5038, 5039, -1, -1, 5042, 5343, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5619, -1, -1, -1, -1, -1, 4225, -1, -1, -1, 5063, -1, -1, -1, -1, -1, 5069, -1, -1, -1, 5073, -1, -1, -1, 6030, -1, 5079, 5080, -1, -1, -1, -1, 4251, -1, -1, -1, 6065, 148, -1, -1, 5093, -1, -1, 5096, -1, -1, 4265, -1, 5101, -1, 5103, -1, -1, -1, 5107, -1, 5409, 5410, 4277, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6078, -1, -1, 5086, -1, -1, -1, -1, -1, -1, 193, -1, -1, -1, -1, 198, -1, -1, 6096, -1, -1, 6, 5147, 5148, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5158, -1, -1, -1, -1, 23, -1, 25, -1, -1, -1, 29, -1, -1, 5073, -1, 34, 35, 36, 235, 38, -1, -1, 41, 42, -1, 44, -1, 46, 4353, 4354, -1, -1, -1, 5093, 53, 54, 55, -1, -1, 5198, -1, -1, 5767, -1, 5203, 6079, -1, 5107, -1, -1, -1, -1, -1, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, 4922, -1, -1, 290, -1, -1, -1, -1, -1, -1, 5229, 5540, -1, -1, -1, 5968, 5969, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5560, -1, 5562, -1, 5264, -1, -1, 5267, -1, -1, 5260, -1, -1, -1, -1, 4441, -1, -1, 1458, -1, -1, 5274, 5274, 5274, 5274, 5274, 5274, 5274, 5274, 5274, -1, 5274, -1, 5274, 4394, 5274, 5296, 5274, 5274, 5274, 5300, 5274, 5302, 5343, 5274, -1, 5274, -1, 5274, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5884, -1, -1, -1, 5322, -1, 382, 5325, -1, 26, 4494, -1, -1, -1, -1, 32, -1, -1, 5336, 197, 198, 199, -1, -1, 202, 5343, -1, 1525, 206, -1, 208, -1, -1, 211, -1, -1, 214, -1, -1, 217, -1, -1, 220, -1, 222, 5264, -1, 225, -1, -1, -1, 229, -1, 231, -1, 5263, -1, -1, -1, -1, 77, -1, 5073, -1, -1, -1, -1, -1, 1566, -1, -1, -1, 5583, -1, -1, 5393, -1, -1, -1, -1, 5398, 5399, -1, -1, -1, 5403, -1, -1, -1, -1, -1, 5409, 5410, 5411, -1, -1, -1, -1, -1, -1, -1, 1599, -1, 5322, -1, -1, 482, 5425, -1, -1, -1, -1, -1, -1, -1, -1, 133, 493, 494, 495, 496, 497, 498, 140, -1, -1, 143, 5445, -1, -1, -1, -1, -1, -1, -1, 5453, -1, -1, 5456, -1, -1, -1, -1, -1, -1, 2599, -1, -1, -1, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5481, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, 5483, -1, -1, -1, -1, -1, 1679, 1680, 1681, -1, -1, -1, 204, -1, -1, -1, -1, 5510, 5511, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5534, -1, 5229, -1, -1, -1, 5540, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5551, 5552, -1, -1, 5555, -1, -1, -1, 4725, 5560, -1, 5562, -1, 5564, 4731, -1, 5260, 5754, 4735, 269, 5571, -1, -1, 273, -1, -1, -1, 5568, -1, 5481, 5274, -1, -1, 283, -1, -1, -1, -1, -1, -1, -1, 5592, 292, -1, -1, 4762, 4763, -1, -1, -1, 4767, 4768, -1, 4704, 304, -1, -1, -1, -1, 1790, -1, -1, -1, -1, -1, -1, 5617, -1, 5619, -1, 1801, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1817, -1, -1, 5826, 5827, 4742, -1, 343, -1, -1, 346, 347, -1, 5343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4764, 5965, -1, -1, -1, -1, 5571, -1, 5672, -1, -1, -1, 197, -1, 377, 63, -1, -1, -1, -1, -1, 206, -1, -1, -1, -1, 1870, -1, -1, 214, -1, -1, 217, -1, -1, -1, -1, -1, -1, -1, -1, 1885, -1, -1, 1888, 1889, 5710, 5711, 5712, -1, 98, -1, -1, -1, 5718, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5728, -1, -1, -1, -1, -1, -1, -1, -1, 4837, 5738, 1919, 1920, 5741, -1, -1, -1, -1, 445, -1, -1, -1, -1, -1, -1, -1, 5754, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5767, -1, -1, 6070, 5672, -1, 633, -1, 159, -1, -1, -1, 639, -1, 641, -1, 643, -1, -1, 646, -1, 5481, -1, 5483, -1, -1, 653, -1, -1, -1, -1, 658, -1, 660, -1, -1, -1, -1, -1, 666, -1, 5808, -1, 5800, 195, -1, -1, -1, -1, -1, -1, 5818, -1, -1, -1, -1, -1, -1, -1, 5826, 5827, -1, -1, 690, -1, 5832, 5825, 5834, 5825, 5825, -1, -1, 699, 5825, 2021, 5825, 703, 2024, -1, 706, 231, -1, 709, 5850, 5851, -1, -1, -1, -1, -1, -1, 4958, -1, -1, -1, -1, -1, -1, 725, -1, -1, -1, 10, -1, 2051, 13, -1, -1, 5568, -1, 5917, -1, -1, -1, -1, -1, -1, 5884, 269, -1, -1, -1, 273, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6086, 6087, -1, -1, -1, 46, -1, 5907, -1, -1, -1, -1, 53, 5913, -1, -1, -1, 5818, 778, -1, 304, 305, -1, -1, -1, 5917, -1, 5917, 5917, -1, -1, 5931, 5917, 793, 5917, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5951, -1, 813, 814, -1, 816, 817, -1, 343, -1, 821, -1, 347, -1, 5965, -1, -1, 352, -1, -1, -1, -1, -1, -1, 835, 0, 361, -1, 5079, 840, 5147, -1, -1, -1, 369, 846, -1, -1, -1, -1, -1, -1, 377, -1, -1, 5996, -1, -1, -1, -1, -1, -1, 6003, -1, 389, 5907, -1, -1, -1, -1, 26, 5913, -1, 398, -1, -1, 32, 402, -1, 44, -1, -1, 6023, -1, -1, -1, -1, -1, -1, 6030, 891, 47, -1, -1, 6027, 0, 6027, 6027, -1, -1, -1, 6027, -1, 6027, 905, -1, -1, -1, -1, -1, -1, 193, -1, -1, -1, -1, 198, 918, -1, -1, -1, 77, 3199, 3200, 6065, 6066, -1, 3204, -1, 6070, -1, 456, 933, 6074, 99, -1, -1, 6078, -1, -1, -1, -1, -1, -1, -1, 6086, 6087, -1, -1, -1, -1, 952, -1, 235, -1, 6096, 957, 958, -1, -1, -1, -1, -1, -1, -1, -1, 5800, -1, 3245, 3246, -1, -1, -1, -1, -1, 198, 199, 133, -1, 202, -1, 6023, -1, -1, 140, 150, -1, 143, 989, 990, -1, 5825, -1, -1, 99, -1, -1, -1, 163, 222, -1, -1, -1, -1, 169, -1, 229, -1, 290, 174, -1, 1012, 1013, -1, 170, 180, -1, -1, 183, -1, -1, -1, 187, -1, 1025, -1, 1027, -1, 690, -1, 1031, -1, -1, 1034, 1035, -1, 1037, 699, -1, -1, -1, 1042, -1, -1, 706, 150, -1, 709, 204, -1, -1, 216, -1, 218, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, 169, 1066, -1, -1, -1, 174, -1, 236, 1073, 1074, -1, 180, -1, -1, 183, -1, -1, -1, 187, 5917, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1094, 1095, 1096, -1, 1098, -1, 1100, 382, 1102, 1103, -1, -1, -1, -1, -1, -1, -1, -1, 216, -1, 269, -1, -1, -1, 273, 5425, -1, 285, -1, -1, 288, -1, -1, -1, 283, -1, 294, -1, 236, -1, -1, -1, 1136, 292, 1138, 1139, -1, -1, -1, -1, -1, 26, -1, -1, -1, 304, -1, 32, -1, 5393, -1, -1, -1, -1, 5398, 5399, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1171, -1, -1, -1, -1, -1, -1, -1, -1, -1, 285, 2502, -1, 288, -1, -1, 351, 343, -1, 294, 346, 347, -1, 6027, -1, 77, 1197, -1, 1199, -1, 482, -1, 1203, -1, 1205, -1, -1, -1, -1, -1, -1, 493, 494, 495, 496, 497, 498, -1, 1219, -1, -1, 377, -1, -1, 1225, -1, -1, 1228, -1, -1, 1231, -1, -1, -1, -1, -1, -1, -1, 403, -1, -1, -1, -1, -1, 1245, -1, 351, -1, -1, -1, -1, 133, -1, -1, -1, -1, -1, -1, 140, -1, -1, 143, -1, -1, -1, -1, -1, -1, -1, 434, 5511, -1, -1, -1, -1, 1276, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 170, 445, -1, -1, -1, 458, -1, 460, 461, -1, -1, -1, -1, 406, 5609, 1304, 1305, 1306, -1, 1308, -1, -1, 26, -1, -1, -1, 5555, -1, 32, -1, -1, -1, 0, 2642, 204, 39, -1, 2646, 2647, 1328, -1, 434, -1, -1, -1, -1, -1, -1, -1, -1, 503, -1, 505, 506, -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, 458, -1, 460, 461, -1, -1, -1, -1, 77, -1, 1025, -1, -1, -1, 1368, -1, 1031, -1, -1, -1, 1035, -1, 1037, -1, -1, -1, -1, -1, -1, -1, 2704, -1, 1386, -1, 269, -1, 2710, -1, 273, -1, -1, -1, 500, 112, -1, 503, 504, 505, 283, -1, -1, -1, -1, -1, -1, -1, -1, 292, -1, -1, -1, -1, -1, -1, 133, 641, 99, 643, -1, 304, 646, 140, -1, -1, 143, -1, -1, 2751, 1432, -1, -1, -1, 1436, 1437, 660, 1100, -1, 1102, 1103, -1, 666, -1, -1, 1447, 1448, 1449, 1450, -1, 1452, -1, -1, 170, -1, -1, -1, -1, -1, -1, 343, -1, -1, 346, 347, -1, -1, -1, -1, 150, -1, -1, -1, 1475, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, 201, -1, -1, 204, 169, -1, -1, -1, -1, 174, 377, -1, -1, -1, -1, 180, -1, -1, 183, -1, -1, -1, 187, -1, 1510, -1, -1, -1, -1, 1515, -1, -1, 1518, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1531, 1532, -1, -1, 250, -1, 216, -1, 254, 1540, -1, -1, 1543, -1, -1, -1, -1, -1, -1, -1, -1, 63, -1, 269, -1, -1, 236, 273, -1, -1, -1, -1, -1, 445, -1, -1, -1, 283, -1, 1570, -1, 1572, -1, -1, 1575, -1, 292, 1578, 1579, -1, -1, 1582, -1, -1, -1, -1, 98, 303, 304, -1, -1, 1592, -1, -1, 1595, -1, -1, 1598, -1, -1, -1, -1, -1, -1, -1, 285, -1, 2928, 288, -1, -1, -1, -1, -1, 294, -1, -1, -1, -1, 1620, -1, -1, -1, -1, -1, -1, -1, 343, -1, -1, 346, 347, 348, -1, -1, -1, -1, 1638, -1, 2960, -1, -1, -1, -1, -1, -1, -1, 159, -1, 1650, 1651, 1652, 1653, 1654, -1, 371, -1, -1, -1, -1, -1, 377, -1, -1, -1, -1, -1, 1668, -1, -1, -1, 351, -1, -1, -1, 391, -1, -1, 1679, 1680, 1681, -1, -1, 195, 3961, 3962, 3963, 3964, -1, -1, 3967, 3968, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 3976, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3033, -1, -1, -1, 3037, -1, 3995, 231, -1, 207, -1, 6030, -1, -1, 406, -1, -1, 445, 216, -1, -1, -1, 957, 958, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, -1, -1, 4025, 4026, -1, -1, -1, -1, 434, -1, -1, 269, -1, -1, -1, 273, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6078, -1, -1, -1, -1, 1777, 17, 458, -1, 460, 461, -1, -1, -1, -1, 26, 1788, -1, 6096, -1, 4068, 304, 305, -1, 1796, 1797, -1, -1, -1, -1, -1, -1, -1, 1027, -1, -1, -1, -1, -1, -1, 1812, -1, -1, -1, -1, -1, -1, 3139, 1042, 500, -1, -1, 503, 504, 505, -1, -1, -1, 1830, 1831, 343, -1, 3154, -1, 347, -1, -1, 3159, -1, 352, -1, -1, -1, -1, 1846, 1847, 1848, 1849, 361, 1073, 1074, -1, -1, 1855, -1, -1, 369, -1, -1, -1, 1862, -1, -1, -1, 377, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1098, -1, 389, 1879, -1, -1, 1882, -1, -1, -1, -1, 398, -1, -1, -1, 402, 1892, 1893, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1903, 1904, -1, -1, 1907, -1, -1, 1910, -1, -1, -1, -1, -1, 1138, 1139, -1, -1, -1, -1, -1, -1, -1, 1925, 1926, -1, -1, -1, 10, -1, 1932, 13, 1934, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, 456, -1, -1, -1, -1, -1, 1951, -1, -1, -1, -1, 36, -1, 1958, -1, 1960, -1, -1, 1963, 1964, 1965, 46, 1967, 1968, -1, 1970, -1, -1, 53, -1, -1, -1, 1977, -1, -1, -1, -1, -1, -1, 1984, -1, -1, -1, -1, -1, 1990, 1991, -1, -1, 1994, -1, -1, -1, 1998, 79, 2000, -1, -1, -1, -1, 2005, 2006, -1, -1, -1, -1, -1, 2012, 2013, 2014, -1, -1, 2017, -1, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 39, -1, 2029, -1, 2031, 2032, -1, 10, 2035, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, 63, 2052, 2053, 2054, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, 2069, 46, -1, -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, 26, -1, 98, -1, 4364, -1, 32, -1, -1, -1, 3414, -1, -1, 3417, -1, 3419, -1, -1, -1, 79, 3424, -1, -1, -1, -1, 2109, -1, -1, -1, 193, -1, -1, -1, -1, 198, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, -1, -1, -1, -1, 220, 221, -1, -1, -1, -1, -1, 159, -1, -1, -1, -1, 3472, -1, -1, 235, -1, -1, -1, -1, 3480, -1, -1, -1, -1, -1, 651, -1, -1, -1, -1, -1, 657, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 195, 669, 3505, -1, -1, -1, -1, -1, 133, -1, -1, -1, -1, 276, 10, 140, -1, 13, 143, -1, -1, 17, 18, 19, -1, -1, -1, 290, -1, 2212, 293, 226, -1, -1, 193, 1879, 231, -1, 1882, 198, 36, -1, -1, -1, -1, 170, -1, -1, 1892, 1893, 46, -1, -1, -1, -1, -1, -1, 53, -1, -1, -1, 220, 221, 1907, -1, -1, 1910, -1, -1, 2252, -1, -1, 3575, -1, 3577, -1, 235, -1, 273, 204, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4568, 305, -1, -1, 1518, -1, -1, 1960, 276, -1, 382, 1964, 1965, 2305, -1, -1, -1, -1, -1, -1, -1, -1, 290, -1, -1, 293, -1, -1, -1, 1543, -1, -1, -1, -1, -1, 269, -1, -1, -1, 273, -1, -1, -1, 347, -1, -1, -1, -1, 352, 283, -1, -1, -1, -1, -1, -1, -1, 361, 292, 3671, -1, -1, -1, -1, -1, 369, -1, -1, -1, -1, 304, -1, -1, 377, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 389, 3698, -1, 193, -1, -1, -1, 3704, 198, 398, -1, -1, -1, 402, -1, -1, 3713, -1, -1, 635, -1, 1620, -1, -1, 343, 482, -1, 346, 347, 382, 220, 221, 421, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, 3741, 235, 503, -1, -1, 506, -1, 1650, 1651, 1652, 1653, -1, -1, -1, 377, -1, -1, -1, -1, -1, -1, -1, -1, 456, -1, 685, 686, 460, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 276, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290, -1, -1, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 3809, 2490, -1, -1, -1, -1, -1, -1, -1, 2498, 2499, -1, -1, 2502, 445, -1, -1, 482, -1, -1, 2509, -1, 3831, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, -1, -1, -1, 506, -1, -1, 3853, -1, -1, -1, -1, -1, -1, -1, 2541, 781, 2543, -1, -1, 2546, 2547, -1, -1, 2550, -1, 2552, -1, -1, 2555, -1, -1, -1, 2559, -1, -1, -1, -1, -1, -1, -1, -1, 807, 382, -1, -1, -1, -1, 1796, 1797, 815, -1, -1, 818, 819, 820, 2582, -1, -1, -1, -1, -1, 2588, 2589, 1812, -1, -1, -1, -1, -1, -1, -1, -1, 2599, -1, -1, -1, -1, -1, -1, -1, -1, 2608, 2609, -1, -1, -1, -1, -1, -1, 3936, -1, -1, -1, -1, -1, 2622, -1, 1846, 1847, 1848, 1849, -1, -1, 2630, -1, 2632, -1, -1, -1, -1, -1, -1, -1, 3960, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, 3985, -1, -1, -1, 482, -1, -1, 2672, -1, 2674, -1, 36, 490, 491, 492, 493, 494, 495, 496, 497, 498, 46, -1, -1, -1, -1, 2691, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, 2702, -1, 1926, 2705, 2706, 2707, 2708, 10, 1932, 2711, 13, -1, 2714, -1, 17, 18, 19, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5010, 2735, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 2746, -1, -1, -1, -1, -1, 53, -1, 2754, 2755, -1, -1, -1, -1, -1, 2761, -1, -1, -1, -1, -1, -1, -1, -1, 2770, -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, 1020, -1, -1, -1, -1, -1, 5063, -1, -1, -1, -1, 2792, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, 2813, -1, 4135, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, 2826, -1, -1, -1, -1, -1, -1, 193, -1, 46, -1, -1, 198, -1, -1, -1, 53, -1, -1, -1, -1, -1, 10, 2849, -1, 13, 2852, -1, -1, 17, 18, 19, -1, -1, 220, 221, -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, 235, -1, -1, 2878, 2879, -1, -1, -1, -1, 46, -1, -1, 2109, -1, -1, -1, 53, 193, 2893, -1, 2895, 2896, 198, -1, -1, -1, -1, -1, -1, -1, 4225, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 276, 79, -1, 220, 221, 2582, -1, -1, -1, -1, 2926, 2927, 2928, -1, 290, 4251, 2932, 293, 235, -1, -1, -1, -1, -1, 2940, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2953, -1, -1, -1, -1, -1, 2959, -1, 2961, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1210, -1, -1, 2974, 276, -1, -1, -1, 2979, -1, -1, 193, -1, -1, 2985, -1, 198, 2988, 290, -1, -1, -1, -1, 1233, -1, -1, -1, -1, -1, 3000, 3001, -1, -1, -1, -1, -1, -1, -1, 220, 221, 3011, -1, -1, -1, -1, -1, -1, -1, -1, 5296, 3021, 382, 3023, 235, -1, -1, -1, -1, -1, -1, 193, -1, -1, -1, -1, 198, -1, -1, -1, -1, 2702, -1, -1, 2705, -1, 2707, 2708, -1, 5325, -1, -1, -1, -1, -1, -1, -1, -1, 220, 221, -1, -1, 3062, -1, 3064, 276, 3066, -1, -1, -1, -1, 1310, -1, 235, 4394, -1, -1, -1, -1, 290, 1319, 382, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1333, -1, -1, -1, -1, 3099, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 276, 1354, -1, -1, 1357, 1358, -1, 4441, 482, 1362, 1363, -1, 4446, -1, 290, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, -1, -1, -1, 506, -1, -1, -1, -1, -1, 3152, 3153, -1, 3155, -1, 3157, 3158, -1, 3160, -1, -1, -1, -1, -1, -1, 3167, -1, -1, -1, 382, 3172, -1, -1, -1, -1, -1, -1, 1664, -1, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, 3199, 3200, 3201, -1, -1, 3204, -1, -1, -1, -1, -1, -1, -1, 3212, 3213, 3214, 3215, -1, -1, -1, -1, 382, -1, -1, -1, -1, -1, -1, -1, 3228, -1, -1, 3231, -1, 3233, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3245, 3246, -1, -1, 3249, -1, -1, -1, -1, -1, -1, 26, -1, -1, 4579, -1, -1, 32, -1, -1, -1, 3266, -1, 3268, 39, 3270, 482, 3272, -1, -1, 5551, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, 501, 61, 3292, -1, -1, -1, 3296, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3317, -1, -1, 482, -1, -1, -1, 2546, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, 3001, -1, 112, -1, -1, 3345, -1, -1, 3348, 3349, -1, 1836, -1, 3353, 3354, 3355, -1, -1, -1, 1844, 3360, -1, -1, 133, -1, 3365, -1, 1852, -1, -1, 140, -1, -1, 143, 0, -1, -1, -1, 1617, -1, 3380, -1, -1, -1, 4704, -1, 1625, -1, -1, -1, -1, -1, -1, -1, 3394, -1, 22, -1, 3398, -1, 170, 3401, 3402, -1, 3404, -1, 32, -1, 34, 35, -1, 1896, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4742, -1, -1, -1, 52, -1, -1, -1, -1, 201, -1, -1, 204, -1, 62, -1, 1923, -1, -1, -1, 5718, -1, 4764, 3445, -1, -1, 74, -1, 76, 77, -1, -1, -1, -1, -1, 83, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, -1, 99, -1, 3475, 3476, -1, -1, -1, 250, -1, -1, -1, 254, -1, -1, -1, -1, 2711, 116, 3152, -1, 119, 3155, -1, 3157, 3158, -1, 269, -1, -1, -1, 273, -1, -1, -1, -1, 134, -1, 136, -1, -1, 283, 140, -1, -1, 4837, -1, -1, 146, -1, 292, -1, -1, -1, -1, -1, 154, -1, 156, -1, -1, 303, 304, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, 197, -1, 343, 5850, 5851, 346, 347, 348, -1, -1, -1, -1, 3583, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3593, -1, -1, -1, -1, -1, -1, 1839, 371, 98, -1, 1843, -1, -1, 377, -1, -1, -1, 237, 238, -1, -1, -1, -1, 243, -1, -1, -1, 391, -1, -1, -1, -1, -1, 2849, -1, -1, 2852, 257, -1, -1, -1, -1, 4956, -1, 4958, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 159, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 445, -1, -1, -1, -1, -1, -1, -1, -1, 3345, -1, -1, 3348, -1, -1, -1, -1, -1, 319, -1, -1, -1, -1, 3698, 195, -1, -1, -1, -1, 3704, -1, -1, 333, -1, -1, -1, -1, -1, 339, 340, 3715, 342, -1, 2940, -1, -1, 347, -1, -1, -1, -1, -1, 353, -1, -1, 356, 2953, -1, 3394, -1, 231, -1, 363, -1, 2961, -1, 3402, -1, 369, 370, -1, -1, -1, -1, -1, -1, 377, 3752, 3753, 3754, 381, -1, -1, -1, 5079, -1, -1, -1, -1, -1, 391, -1, -1, -1, 3769, -1, -1, 2011, 269, -1, -1, -1, 273, 3000, -1, 406, -1, -1, 3783, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3021, 426, 3801, 3802, 3803, -1, -1, -1, 3807, 304, 305, -1, 437, -1, -1, -1, -1, -1, 443, -1, 3819, -1, -1, 448, -1, -1, -1, -1, 5147, -1, -1, -1, -1, -1, -1, -1, 461, -1, -1, -1, -1, -1, -1, 3064, -1, 3066, -1, -1, 343, -1, -1, -1, 347, -1, -1, -1, -1, 352, -1, 484, 485, 486, 487, 488, 489, -1, 361, -1, -1, -1, -1, -1, -1, -1, 369, -1, 3875, 502, -1, -1, 505, -1, 377, -1, -1, -1, -1, -1, -1, -1, 3889, 3890, -1, -1, 389, -1, -1, -1, -1, 3898, -1, -1, -1, 398, -1, -1, -1, 402, -1, -1, 10, -1, 3911, 13, -1, 3914, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3153, -1, 3933, -1, 36, -1, -1, 3160, -1, -1, 3941, -1, 3943, -1, 46, -1, 5267, -1, -1, -1, 3951, 53, 3953, -1, -1, 3956, -1, -1, -1, 456, 3961, 3962, 3963, 3964, -1, -1, 3967, 3968, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 3976, -1, 79, -1, 3980, 3981, 3982, -1, -1, -1, -1, -1, -1, -1, 3990, -1, -1, -1, -1, 3995, -1, -1, -1, 3999, -1, -1, -1, -1, -1, -1, -1, 4007, -1, -1, 4010, -1, 4012, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4022, -1, -1, 4025, 4026, -1, -1, -1, 4030, 4031, -1, -1, -1, 4035, -1, 4037, -1, -1, -1, -1, -1, -1, 4044, 4045, 4046, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4064, 4065, 4066, -1, 4068, 4069, -1, -1, 4072, 5393, -1, -1, 4076, -1, 5398, 5399, 4080, -1, -1, -1, -1, -1, 4086, -1, -1, -1, -1, -1, 193, -1, -1, -1, -1, 198, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4112, -1, -1, -1, -1, -1, -1, 220, 221, -1, -1, -1, -1, -1, -1, 4127, -1, 4129, -1, -1, -1, -1, 235, -1, -1, -1, -1, -1, -1, 24, -1, -1, -1, -1, 29, 4147, 4148, 4149, 2635, -1, 4152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2653, -1, -1, -1, 2657, -1, -1, 276, 2661, -1, -1, -1, -1, -1, -1, -1, 67, -1, -1, 4187, 4188, 290, 5510, 5511, 293, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, 2688, -1, -1, 4206, -1, -1, -1, -1, -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, -1, -1, -1, 5555, -1, 2722, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3475, 3476, 138, -1, 2742, -1, 4259, -1, -1, -1, -1, -1, -1, 149, -1, -1, 10, -1, -1, 13, -1, -1, 158, 17, 18, 19, -1, -1, 382, 2521, -1, -1, -1, -1, -1, 171, 2774, -1, -1, -1, 176, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, 53, -1, -1, 4315, 2801, -1, -1, 202, -1, -1, 2807, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2821, -1, 79, -1, -1, -1, -1, 2828, -1, -1, 2831, -1, 4348, -1, -1, -1, 2837, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4362, -1, 4364, -1, 249, -1, -1, -1, -1, 4371, 2857, -1, -1, -1, -1, 4377, 2863, -1, -1, 482, -1, -1, -1, 2870, -1, -1, 4388, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, 2884, -1, -1, 503, 4403, -1, -1, -1, 290, 4408, 4409, -1, -1, 2897, -1, -1, 4076, 4416, -1, -1, 4080, -1, -1, -1, 2908, -1, 4425, -1, -1, -1, -1, -1, 2670, -1, -1, -1, 4435, -1, -1, -1, -1, -1, 324, 325, -1, -1, 328, -1, 4447, 4448, -1, -1, -1, 193, -1, -1, -1, -1, 198, 4458, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4469, 4470, -1, 355, -1, -1, 358, -1, -1, -1, 220, 221, 364, -1, -1, -1, -1, 4147, 4487, 371, -1, 2729, 374, -1, 3715, 235, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, 393, -1, 17, 18, 19, -1, -1, 400, -1, -1, -1, -1, -1, 406, -1, 4525, 409, -1, -1, -1, 413, 36, -1, -1, -1, 276, -1, 4537, 421, -1, -1, 46, -1, -1, -1, 428, -1, -1, 53, 290, -1, -1, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4565, -1, -1, 4568, -1, 2809, 454, -1, -1, 79, -1, 4576, 4577, -1, -1, -1, -1, -1, -1, 4584, 4585, -1, -1, -1, 4589, -1, -1, -1, 4593, 2833, -1, 4596, 4597, -1, -1, -1, 4601, 4602, -1, -1, -1, -1, 4607, 4608, 4609, 4610, 4611, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4624, -1, -1, 4627, -1, -1, -1, 4631, -1, -1, -1, -1, 4636, -1, 3123, 4639, 4640, 382, 4642, -1, 4644, -1, -1, 4647, -1, 4649, -1, -1, -1, 3875, -1, -1, 3141, -1, 4658, -1, -1, 2900, 4662, 3148, -1, -1, 4666, -1, 4668, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4683, -1, -1, 4686, -1, 193, -1, -1, -1, -1, 198, -1, -1, -1, -1, 2937, -1, 2939, -1, 2941, 2942, -1, -1, -1, 2946, 2947, 2948, -1, 2950, 2951, 2952, -1, 220, 221, -1, -1, -1, 4720, -1, -1, -1, -1, -1, -1, -1, -1, -1, 235, -1, -1, -1, -1, -1, 4736, -1, -1, -1, -1, 482, -1, -1, -1, 6065, -1, 4408, 4409, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, 503, -1, -1, 3004, -1, -1, -1, -1, -1, 276, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, -1, 290, -1, 4787, 293, 32, 3029, -1, -1, -1, 4794, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4817, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4832, 10, 77, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, 4863, -1, 10, -1, -1, 13, 46, -1, -1, 17, 18, 19, -1, 53, 382, -1, 4879, -1, -1, -1, -1, -1, -1, 4886, -1, -1, -1, 133, 36, -1, -1, -1, 4895, -1, 140, -1, -1, 143, 46, 79, -1, -1, -1, -1, -1, 53, -1, 4910, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4923, -1, 4925, -1, 170, -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, 4951, -1, -1, -1, -1, 32, -1, -1, -1, -1, 204, 4962, 4624, -1, -1, -1, -1, -1, -1, 4631, -1, -1, -1, -1, 4636, -1, 482, 4639, 4640, -1, 3466, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, 503, -1, -1, 77, -1, -1, -1, -1, -1, 5007, -1, -1, 5010, -1, -1, 5013, 5014, 5015, 193, -1, -1, -1, -1, 198, -1, -1, -1, -1, 269, -1, -1, -1, 273, -1, -1, -1, -1, -1, -1, -1, 5038, 5039, 283, -1, 5042, 220, 221, -1, -1, -1, 193, 292, -1, -1, -1, 198, -1, -1, -1, 133, 235, -1, -1, 304, -1, 5063, 140, -1, -1, 143, -1, 5069, -1, 3310, -1, 5073, -1, 220, 221, 5077, -1, -1, 5080, 3566, 5082, -1, -1, -1, -1, -1, -1, -1, 235, -1, -1, 5093, 170, -1, 5096, -1, -1, 276, 343, -1, -1, 346, 347, -1, -1, 5107, 5108, 5109, -1, 5111, -1, 290, -1, -1, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4348, -1, 204, -1, -1, 276, -1, -1, 377, -1, -1, -1, -1, -1, 4362, -1, -1, -1, -1, 290, -1, -1, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5158, 5159, -1, -1, 206, 207, -1, -1, -1, -1, -1, -1, 214, -1, 216, 217, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, -1, -1, -1, -1, -1, 269, -1, -1, -1, 273, -1, -1, -1, -1, 445, 5203, -1, 382, -1, 283, 3693, -1, -1, -1, -1, -1, -1, 5215, 292, -1, 4879, -1, 5220, -1, -1, -1, -1, 5225, -1, -1, 304, -1, 3469, -1, -1, -1, 5234, -1, -1, 382, -1, -1, -1, -1, -1, -1, 5244, -1, -1, -1, 5248, 4910, -1, 5251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5262, 5263, 5264, -1, -1, 343, -1, -1, 346, 347, -1, -1, -1, -1, -1, -1, -1, 26, -1, 26, -1, -1, -1, 32, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, 5296, -1, -1, -1, 5300, 377, 5302, -1, -1, 482, -1, -1, 3547, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, 5322, -1, -1, 5325, 503, -1, -1, 5329, 77, -1, 77, -1, -1, -1, 5336, 482, -1, -1, -1, -1, -1, 5343, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, 503, -1, -1, -1, -1, -1, -1, -1, 3605, -1, -1, 445, -1, -1, -1, -1, -1, -1, -1, -1, 5378, -1, -1, -1, -1, -1, -1, -1, 133, 3872, 133, -1, -1, -1, -1, 140, -1, 140, 143, -1, 143, -1, -1, -1, -1, 5403, -1, -1, 3891, -1, -1, 5409, 5410, -1, 5073, -1, 5414, 5415, 5416, 5417, -1, -1, -1, -1, -1, 170, -1, 170, -1, -1, -1, -1, -1, 3916, 5093, -1, 3673, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5445, 5107, -1, -1, -1, -1, -1, -1, 5453, -1, -1, -1, 204, -1, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5478, -1, 3719, 5481, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3731, 3732, -1, -1, -1, 5158, -1, -1, -1, -1, 3741, -1, -1, -1, 5506, 3746, -1, 3748, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, 269, -1, 273, -1, 273, -1, -1, -1, -1, -1, 5534, -1, 283, -1, 283, -1, 5540, -1, 5203, -1, 5544, 292, -1, 292, 5548, -1, -1, 5551, -1, -1, -1, 3794, -1, 304, -1, 304, 5560, -1, 5562, -1, 5564, 5565, -1, -1, -1, -1, -1, 5571, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5581, -1, 5583, -1, -1, -1, -1, 632, -1, 3829, 3830, 5592, -1, -1, 4817, 343, -1, 343, 346, 347, 346, 347, 5264, -1, -1, -1, 651, -1, -1, 4832, -1, -1, 657, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 669, -1, 5627, 5628, -1, 377, -1, 377, -1, -1, -1, -1, -1, -1, -1, -1, 685, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 699, 700, -1, 5658, -1, -1, 5322, 706, -1, 708, 709, 10, -1, -1, 13, -1, -1, 5672, 17, 18, 19, -1, -1, 722, -1, -1, -1, -1, 4168, -1, -1, -1, -1, 732, -1, -1, -1, 36, -1, -1, -1, -1, -1, 445, -1, 445, 4923, 46, -1, -1, -1, -1, -1, -1, 53, 5710, 5711, 5712, -1, -1, -1, -1, -1, 5718, -1, -1, -1, 5722, -1, -1, -1, -1, -1, 5728, -1, -1, -1, -1, -1, -1, 79, -1, 5737, 5738, -1, -1, -1, -1, -1, -1, -1, 790, -1, -1, -1, -1, -1, 10, -1, 5754, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, 4006, -1, 5769, -1, -1, -1, -1, -1, 819, 5776, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, -1, -1, -1, 5453, -1, -1, 53, -1, -1, -1, -1, 844, 5801, -1, -1, -1, -1, -1, -1, 5808, -1, -1, -1, 4297, -1, -1, 4300, -1, -1, 5818, -1, 5481, 79, -1, -1, -1, -1, 5826, 5827, 5828, -1, -1, -1, 5832, -1, 5834, -1, -1, -1, -1, -1, -1, -1, -1, 5843, 5844, 5845, -1, -1, -1, 193, 5850, 5851, -1, -1, 198, -1, 5856, -1, -1, -1, 904, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, 221, 5878, -1, -1, -1, -1, -1, -1, -1, -1, 5109, -1, 5111, -1, 235, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5907, 5908, 5909, 5571, -1, -1, 5913, -1, -1, 4401, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5931, 276, 4418, -1, 193, -1, -1, -1, -1, 198, -1, -1, -1, -1, -1, 290, -1, -1, 293, -1, 5951, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, 221, -1, 5965, -1, -1, -1, -1, 1014, -1, -1, -1, -1, -1, 1020, 235, -1, -1, -1, -1, -1, -1, -1, -1, 4225, 1031, -1, -1, -1, 1035, -1, 1037, -1, -1, 5996, -1, -1, -1, -1, 6001, 6002, 6003, 6004, 6005, -1, -1, 6008, -1, -1, 5672, 4251, -1, 4499, -1, -1, -1, 276, -1, 6020, -1, -1, 6023, -1, -1, -1, 4266, -1, -1, -1, 4270, 290, 4272, -1, 293, -1, -1, 382, -1, 5262, -1, -1, -1, -1, -1, 6046, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6065, 6066, -1, -1, -1, 6070, -1, -1, -1, 6074, -1, -1, -1, -1, 4318, -1, -1, -1, -1, -1, -1, 6086, 6087, -1, -1, 6090, -1, -1, 5754, -1, 4334, -1, -1, -1, 1143, 4339, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, 5818, -1, 503, 1204, -1, -1, -1, -1, 5826, 5827, -1, -1, -1, -1, 1215, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1229, -1, -1, -1, 1233, -1, -1, -1, 5415, -1, 5417, -1, -1, -1, 4438, -1, -1, 4441, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, 503, 5907, -1, -1, -1, -1, -1, 5913, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5931, -1, -1, -1, 4759, 4514, 4515, 4516, 4517, -1, 4519, 4520, 4521, 4522, 4523, -1, 4771, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, 1354, 0, -1, -1, -1, -1, -1, -1, 1362, 1363, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 22, -1, -1, -1, -1, -1, 53, -1, -1, 6003, 32, -1, 34, 35, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, 6023, 52, -1, 79, -1, -1, -1, -1, -1, 1415, -1, 62, 36, -1, -1, 4616, -1, 4618, -1, -1, -1, -1, 46, 74, -1, 76, 77, -1, -1, 53, -1, -1, 83, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, 6066, -1, -1, 97, -1, 99, -1, -1, 6074, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, 6086, 6087, 116, -1, -1, 119, -1, -1, -1, -1, -1, 5658, -1, -1, -1, -1, -1, -1, -1, -1, 134, -1, 136, -1, -1, -1, 140, -1, -1, -1, -1, -1, 146, -1, -1, -1, -1, -1, -1, -1, 154, -1, 156, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, 193, -1, -1, -1, -1, 198, -1, -1, 10, -1, -1, 13, 180, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, 4989, -1, 220, 221, 197, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, 235, -1, 46, -1, -1, -1, -1, -1, -1, 53, 193, -1, -1, -1, 10, 198, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, 5769, 237, 238, -1, -1, -1, -1, 243, -1, 79, -1, 220, 221, -1, 36, 276, -1, -1, -1, -1, -1, 257, -1, -1, 46, -1, 235, -1, -1, 290, -1, 53, 293, -1, -1, -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4835, 4836, -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, 4848, -1, 4850, 4851, 4852, 276, -1, 5101, -1, 5103, -1, 1664, 51, -1, -1, -1, -1, -1, -1, 290, -1, 319, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 333, -1, -1, -1, -1, -1, 339, 340, -1, 342, -1, -1, 5878, -1, 347, -1, -1, -1, -1, -1, 353, -1, -1, 356, 382, -1, 193, -1, -1, -1, 363, 198, -1, 4916, -1, -1, 369, 370, -1, -1, -1, -1, 5908, 5909, 377, -1, -1, -1, 381, -1, -1, -1, -1, 220, 221, -1, -1, -1, 391, -1, -1, -1, -1, -1, -1, -1, -1, -1, 235, 51, -1, -1, 4955, 406, 193, -1, 382, 10, -1, 198, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, 1778, -1, -1, 426, -1, -1, -1, -1, -1, -1, -1, 220, 221, 36, 437, -1, -1, -1, -1, 276, 443, -1, -1, 46, 4997, 448, 235, -1, -1, -1, 53, -1, -1, 290, 482, 1813, 293, -1, 461, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, 503, 79, -1, 1836, -1, -1, 484, -1, -1, 6020, -1, 1844, 276, -1, -1, -1, -1, -1, -1, 1852, -1, -1, -1, -1, 502, -1, 290, 505, -1, 293, -1, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, 503, -1, -1, -1, -1, -1, -1, 1892, 1893, -1, 1895, 1896, -1, -1, -1, -1, -1, -1, 382, -1, -1, -1, 1907, -1, 1909, 1910, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, 1922, 1923, -1, -1, 14, 15, -1, -1, -1, -1, 20, -1, 22, -1, -1, -1, -1, -1, 28, -1, 30, -1, -1, -1, -1, -1, 193, -1, -1, 382, 5147, 198, -1, -1, -1, -1, -1, -1, 1960, 49, 50, -1, 1964, 1965, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, 221, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 5193, -1, -1, -1, -1, 482, -1, -1, -1, 5202, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, 503, -1, -1, -1, -1, -1, -1, 276, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, 290, -1, -1, 293, -1, -1, 482, -1, -1, -1, -1, -1, -1, 36, 490, 491, 492, 493, 494, 495, 496, 497, 498, 46, -1, -1, 2071, 503, -1, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 200, -1, -1, -1, 204, -1, -1, -1, -1, -1, -1, -1, 212, -1, -1, 215, -1, -1, 218, 219, -1, 221, -1, 223, -1, 382, 226, -1, 228, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -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, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, 193, -1, -1, -1, -1, 198, -1, -1, 36, -1, -1, -1, -1, -1, -1, 5425, -1, -1, 46, 5429, -1, -1, 482, -1, -1, 53, -1, 220, 221, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, 235, 503, -1, -1, -1, -1, -1, -1, -1, 79, -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, 36, -1, -1, -1, 276, -1, 5741, -1, -1, -1, 46, -1, -1, -1, -1, 695, -1, 53, 290, -1, -1, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 721, -1, 79, -1, -1, -1, -1, -1, -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, -1, 17, 18, 19, -1, -1, -1, 193, -1, -1, -1, -1, 198, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, 695, -1, 46, 382, -1, -1, 220, 221, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 235, -1, 5619, -1, -1, 721, 5623, -1, 5625, -1, -1, -1, 5629, 5630, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 193, -1, -1, -1, -1, 198, -1, -1, -1, -1, -1, -1, 276, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290, 220, 221, 293, -1, -1, 869, -1, -1, -1, -1, -1, -1, -1, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, 503, -1, -1, -1, -1, -1, -1, -1, -1, 276, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 633, -1, -1, 290, -1, 193, 293, -1, -1, -1, 198, 644, -1, -1, -1, 648, -1, -1, -1, -1, -1, -1, 655, 656, 382, -1, 659, -1, 661, 662, 869, -1, 220, 221, -1, 2580, -1, -1, -1, -1, -1, -1, -1, 676, -1, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 694, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 715, -1, 717, -1, -1, -1, 276, -1, 2635, -1, -1, -1, 727, 382, -1, -1, -1, 1030, -1, -1, 290, -1, -1, 293, -1, -1, 2653, 51, 1041, -1, 2657, -1, -1, -1, 2661, -1, -1, -1, -1, -1, -1, -1, 482, 2670, 1057, 760, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, 2688, 5884, 503, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2705, -1, 2707, 2708, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2722, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1030, -1, -1, 382, 482, -1, 2742, 2743, -1, -1, -1, 1041, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, 847, -1, 503, -1, 1057, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2773, 2774, -1, -1, 2777, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, 2801, -1, 2803, 17, 18, 19, 2807, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2821, -1, 36, -1, -1, -1, 1213, 2828, -1, -1, 2831, -1, 46, -1, 6030, -1, 2837, -1, 482, 53, 6036, 930, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, 2857, -1, -1, 503, -1, -1, 2863, 10, -1, 79, 13, -1, -1, 2870, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6078, 2884, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, 2897, -1, -1, 46, 6096, 2902, -1, 6099, -1, -1, 53, 2908, -1, -1, -1, -1, -1, -1, -1, 1004, -1, -1, 1213, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, 1028, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1043, -1, 1045, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1055, 2968, -1, -1, 1357, -1, -1, 1062, -1, -1, -1, -1, -1, 193, -1, -1, -1, -1, 198, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, 221, -1, -1, -1, -1, -1, -1, -1, 1104, -1, 1106, -1, -1, -1, 235, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, 193, -1, -1, -1, -1, 198, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, 276, 46, -1, -1, -1, -1, -1, -1, 53, 1458, -1, 220, 221, -1, 290, -1, -1, 293, -1, -1, -1, -1, -1, -1, -1, -1, 235, -1, -1, 1180, -1, 1182, -1, 1184, 79, 1186, -1, 1188, 1189, 1190, -1, -1, -1, -1, 1195, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1207, -1, -1, -1, 3123, -1, -1, -1, -1, -1, -1, 276, -1, 1220, -1, -1, -1, -1, -1, -1, 1525, -1, 3141, -1, -1, 290, -1, -1, 293, 3148, -1, -1, -1, -1, -1, -1, 3155, -1, 3157, 3158, -1, -1, -1, -1, -1, 1458, -1, -1, -1, -1, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1566, -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, 193, -1, 1599, -1, -1, 198, -1, -1, -1, -1, -1, -1, 3223, 36, -1, -1, -1, -1, 3229, -1, 1525, -1, -1, 46, -1, 382, -1, 220, 221, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, 207, -1, -1, 235, -1, -1, -1, -1, -1, 216, -1, -1, -1, -1, -1, -1, -1, 79, -1, 482, -1, -1, 1566, 230, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, 503, 1379, -1, -1, 276, -1, -1, -1, 695, -1, -1, -1, -1, -1, -1, 1599, -1, -1, 290, -1, 3310, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 721, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, 503, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 193, -1, -1, -1, -1, 198, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 382, -1, -1, -1, 1790, -1, -1, -1, 220, 221, -1, 1499, -1, -1, -1, 1801, -1, -1, -1, -1, -1, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, 1817, -1, -1, -1, -1, -1, -1, -1, 3439, 3440, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, 276, -1, 3466, -1, -1, 3469, -1, -1, 869, -1, -1, -1, -1, 36, 290, -1, -1, 293, -1, 1571, 1870, -1, -1, 46, -1, -1, -1, -1, -1, -1, 53, -1, 1790, -1, -1, 1885, 482, -1, 1888, 1889, -1, -1, -1, 1801, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, 79, 503, -1, 1817, -1, -1, -1, -1, 10, -1, -1, 13, -1, 1919, 1920, 17, 18, 19, -1, -1, -1, 3541, 3542, 3543, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, 40, -1, -1, -1, -1, -1, 46, -1, 3566, -1, -1, -1, 382, 53, -1, -1, -1, -1, 1870, -1, -1, -1, -1, -1, -1, -1, -1, 3585, -1, -1, -1, -1, -1, 1885, -1, -1, 1888, 1889, -1, 79, -1, -1, -1, -1, 10, -1, -1, 13, -1, 3607, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1919, 1920, -1, 36, -1, -1, -1, -1, 1030, 193, -1, -1, -1, 46, 198, -1, -1, -1, -1, 1041, 53, -1, -1, 130, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1057, 220, 221, -1, -1, 2051, -1, -1, -1, -1, 482, 79, -1, -1, -1, 632, 235, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, 503, -1, 3693, 651, -1, -1, -1, 1786, -1, 657, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 193, 669, -1, -1, -1, 198, 276, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 685, -1, -1, 290, -1, 1821, 293, -1, -1, -1, 220, 221, 3740, -1, -1, 700, -1, -1, 3746, -1, 3748, -1, -1, 708, -1, 235, -1, -1, -1, 2051, -1, -1, -1, 3761, -1, 3763, -1, 722, -1, -1, -1, -1, -1, -1, -1, -1, -1, 732, 1864, -1, 1866, -1, -1, -1, -1, -1, -1, 193, -1, -1, -1, -1, 198, -1, -1, -1, 276, -1, -1, -1, 1886, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290, -1, -1, 293, 220, 221, -1, -1, 1213, -1, -1, -1, -1, -1, -1, 382, 1912, -1, 1914, 235, -1, -1, 3830, -1, -1, 790, -1, -1, -1, 51, -1, -1, -1, 1929, -1, 1931, -1, -1, -1, -1, -1, 1937, -1, 1939, -1, 1941, -1, 1943, -1, 1945, -1, -1, -1, 1949, 819, -1, -1, -1, -1, -1, 276, -1, -1, -1, 3872, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290, -1, -1, 293, -1, 844, -1, -1, -1, 3891, -1, -1, -1, -1, -1, -1, -1, -1, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318, -1, -1, 3913, -1, -1, 3916, -1, -1, -1, -1, -1, -1, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, 503, -1, -1, 904, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, 442, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 382, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, 399, -1, 53, -1, -1, -1, 3997, -1, -1, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, 79, -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, 36, 1014, -1, -1, -1, 1458, -1, 1020, -1, -1, 46, -1, -1, -1, -1, -1, -1, 53, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, 169, -1, -1, -1, -1, 174, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1525, -1, -1, -1, -1, 193, -1, -1, -1, 51, 198, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, 221, -1, -1, -1, -1, -1, -1, 4168, 1566, -1, -1, -1, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1143, -1, 168, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1599, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 193, -1, -1, 276, -1, 198, 4219, -1, -1, -1, -1, 4224, -1, 4226, -1, -1, -1, 290, -1, -1, 293, -1, -1, -1, -1, -1, -1, 220, 221, -1, -1, -1, -1, -1, 1204, -1, -1, 4250, -1, -1, -1, -1, 235, 2642, -1, 1215, -1, 2646, 2647, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1229, -1, -1, -1, 1233, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 276, 4297, -1, -1, 4300, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290, -1, -1, 293, -1, -1, -1, -1, 2704, -1, -1, -1, 382, -1, 2710, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2642, -1, -1, -1, 2646, 2647, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2751, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4390, 4391, -1, 1790, -1, -1, -1, 1354, -1, -1, -1, 4401, 382, -1, 1801, 1362, 1363, -1, -1, -1, 2704, -1, -1, -1, -1, -1, 2710, -1, 4418, -1, 1817, -1, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2751, 1415, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1870, -1, -1, -1, -1, -1, -1, -1, 695, -1, -1, -1, -1, -1, -1, 1885, -1, -1, 1888, 1889, -1, -1, -1, -1, -1, -1, 4499, -1, 24, 482, -1, -1, -1, 29, 721, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, 1919, 1920, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, -1, -1, -1, 2636, 2637, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2655, 2656, -1, 2658, 2659, -1, 96, 2960, 2663, 2664, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2678, 114, -1, -1, -1, -1, -1, 2685, -1, -1, -1, 2689, 2690, -1, -1, 2693, 2694, -1, -1, -1, -1, -1, 2700, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, 2712, -1, 149, -1, -1, -1, -1, -1, -1, -1, -1, 158, 2724, -1, -1, -1, -1, 2729, -1, -1, -1, -1, -1, 3033, 171, -1, -1, 3037, -1, 176, 2051, 869, 2744, -1, -1, -1, 183, -1, -1, -1, -1, 2753, 2960, -1, 2756, -1, 2758, 2759, 2760, -1, -1, -1, -1, 2765, 2766, 202, -1, -1, -1, -1, -1, -1, -1, 2775, -1, -1, -1, -1, -1, 2781, -1, -1, -1, 2785, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1664, -1, 2797, 2798, -1, -1, -1, 2802, -1, -1, 4717, -1, -1, 2808, 2809, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, 2822, -1, -1, 2825, -1, 3033, -1, -1, -1, 3037, 2832, 2833, -1, -1, -1, -1, 2838, -1, -1, 3139, -1, -1, -1, -1, -1, 4759, -1, -1, 2850, -1, -1, 2853, -1, 290, 3154, -1, 2858, 4771, -1, 3159, -1, -1, 2864, 2865, -1, -1, 303, 695, -1, -1, 2872, -1, -1, -1, 2876, -1, -1, 314, 2880, 2881, 2882, 2883, -1, 2885, -1, -1, -1, 324, 325, -1, -1, 328, 4806, 721, -1, -1, 2898, 2899, -1, 2901, -1, -1, 1030, -1, -1, -1, -1, 1778, -1, -1, 2912, 2913, 2914, 1041, -1, -1, -1, -1, 355, -1, -1, 358, -1, -1, -1, 362, -1, 364, -1, 1057, -1, 3139, -1, -1, 371, -1, -1, 374, -1, -1, -1, -1, 1813, -1, -1, -1, 3154, -1, -1, -1, -1, 3159, -1, -1, -1, -1, 393, -1, 51, -1, -1, -1, -1, 400, -1, 1836, -1, 2969, -1, 406, 4884, -1, 409, 1844, -1, 2977, 413, -1, -1, -1, -1, 1852, -1, -1, 421, -1, 423, -1, -1, 4903, -1, 428, -1, -1, 2996, -1, -1, -1, -1, -1, -1, -1, -1, -1, 441, -1, -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, 454, -1, -1, -1, -1, -1, -1, 1895, 1896, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1909, -1, -1, 869, -1, -1, 3046, -1, -1, -1, -1, -1, -1, 1922, 1923, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3065, -1, 3067, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4989, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1213, -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, 3414, -1, -1, 3417, -1, 3419, -1, -1, -1, -1, 3424, -1, 36, -1, -1, 39, -1, -1, 10, -1, -1, 13, 46, -1, -1, 17, 18, 19, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, 3161, -1, -1, -1, -1, -1, -1, -1, -1, 46, 79, -1, -1, 3472, -1, -1, 53, -1, -1, -1, -1, 3480, -1, -1, -1, -1, -1, -1, 5101, -1, 5103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2071, 79, 1030, -1, -1, 3505, 3414, -1, -1, 3417, -1, 3419, -1, 1041, -1, -1, 3424, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1057, -1, -1, -1, -1, 5148, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5158, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3472, -1, -1, -1, -1, -1, -1, -1, 3480, -1, -1, 3575, -1, 3577, -1, -1, -1, -1, -1, 193, 5198, -1, -1, -1, 198, 5203, -1, -1, -1, -1, -1, -1, -1, 3505, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, 221, -1, -1, -1, 193, -1, -1, -1, -1, 198, -1, -1, -1, -1, 235, -1, -1, -1, -1, 1458, 2642, -1, -1, -1, 2646, 2647, -1, -1, -1, -1, -1, 220, 221, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, -1, 276, 3575, -1, 3577, -1, 3671, -1, -1, -1, -1, -1, -1, -1, -1, 290, -1, -1, 293, -1, 1213, -1, -1, -1, -1, -1, -1, -1, 2704, -1, -1, -1, 1525, 276, 2710, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290, 3713, -1, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, -1, 1566, -1, 2751, 3741, -1, -1, -1, 3447, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3671, -1, 3467, -1, -1, -1, -1, -1, 1599, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3484, -1, -1, -1, 3488, -1, -1, -1, -1, 3493, 3494, 3495, -1, -1, -1, 5411, -1, -1, -1, -1, -1, -1, 382, 3713, -1, -1, -1, 3809, -1, 5425, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3529, 3530, 3531, 3532, 3831, -1, 3741, -1, -1, -1, -1, -1, -1, -1, -1, 5456, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3853, -1, -1, -1, 3559, -1, -1, -1, -1, -1, -1, -1, 3567, -1, 3569, 3570, 3571, -1, -1, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3809, 695, -1, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, 3831, -1, -1, -1, -1, 721, -1, 1458, -1, -1, -1, -1, -1, 3936, -1, 5552, -1, -1, -1, -1, -1, -1, 3853, -1, -1, -1, 2960, -1, -1, -1, -1, -1, -1, 695, -1, -1, -1, 3960, -1, 1790, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1801, -1, -1, -1, -1, -1, -1, -1, -1, 721, 3685, -1, 3985, -1, -1, -1, 1817, -1, -1, 3694, -1, -1, -1, -1, 1525, -1, -1, -1, -1, -1, 5617, -1, 5619, -1, -1, -1, 2580, -1, -1, -1, -1, -1, -1, -1, -1, 3720, 3721, -1, -1, 3033, 3725, -1, -1, 3037, -1, 3936, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1566, -1, -1, -1, 1870, -1, -1, 3747, -1, -1, -1, -1, -1, -1, 3960, -1, -1, -1, -1, 1885, -1, -1, 1888, 1889, -1, -1, 2635, -1, -1, -1, -1, -1, -1, 1599, -1, -1, -1, -1, 869, 3985, -1, -1, -1, -1, 2653, -1, -1, -1, 2657, -1, -1, -1, 2661, 1919, 1920, -1, -1, -1, -1, 3799, -1, 2670, -1, -1, 3804, -1, -1, -1, -1, -1, 3810, -1, -1, -1, -1, -1, -1, -1, -1, 2688, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5741, 3139, -1, 869, -1, -1, -1, -1, 4135, -1, -1, 3840, -1, 5754, -1, -1, 3154, -1, -1, -1, -1, 3159, -1, -1, 2722, -1, 5767, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3869, -1, 3871, -1, 2742, 2743, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2773, 2774, -1, -1, 2777, -1, -1, -1, 3912, -1, 5826, 5827, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2051, -1, 4225, -1, 4135, -1, -1, 2801, -1, 2803, -1, -1, -1, 2807, 1030, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1041, -1, 2821, 4251, -1, -1, -1, -1, -1, 2828, -1, -1, 2831, -1, 1790, -1, 1057, -1, 2837, -1, -1, -1, 5884, -1, -1, 1801, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2857, -1, -1, 1817, -1, 1030, 2863, -1, -1, -1, -1, -1, -1, 2870, -1, -1, 1041, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2884, -1, -1, -1, 4225, 1057, -1, -1, -1, -1, -1, -1, -1, 2897, -1, -1, -1, -1, 2902, -1, -1, -1, -1, -1, 2908, -1, -1, 208, -1, 1870, 4251, -1, -1, -1, -1, -1, -1, -1, -1, 220, -1, -1, -1, -1, 1885, -1, -1, 1888, 1889, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1919, 1920, -1, 4394, -1, -1, 2968, -1, -1, -1, -1, -1, 3414, -1, -1, 3417, -1, 3419, -1, -1, -1, -1, 3424, -1, -1, 6030, -1, -1, -1, 1213, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4441, -1, -1, -1, -1, 4446, -1, -1, 4151, -1, -1, 4154, -1, 4156, -1, -1, -1, -1, -1, -1, 3472, -1, -1, 6078, -1, -1, 4169, -1, 3480, -1, -1, 6086, 6087, 1213, -1, -1, -1, -1, 4181, -1, -1, 6096, 4185, -1, -1, 4394, -1, -1, -1, -1, -1, -1, -1, 3505, -1, -1, -1, -1, -1, -1, -1, 4204, -1, 24, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4222, -1, -1, 2051, -1, -1, 4228, -1, -1, -1, -1, -1, -1, 4441, -1, -1, -1, -1, 4446, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4253, 3123, -1, -1, 4257, -1, -1, -1, -1, 80, 81, -1, -1, 3575, -1, 3577, -1, -1, -1, 3141, 4273, 4274, 4275, 4276, -1, 96, 3148, -1, 4579, -1, 4283, 4284, 4285, 4286, -1, -1, -1, -1, -1, 4292, 4293, -1, -1, 114, -1, 4298, 4299, -1, 4301, 4302, 4303, 4304, 4305, 4306, 4307, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4317, -1, -1, 138, 4321, 4322, 4323, 4324, -1, -1, -1, -1, -1, -1, 149, -1, -1, -1, -1, -1, -1, -1, -1, 158, -1, -1, -1, -1, 4345, -1, -1, -1, -1, -1, -1, -1, 171, 3223, -1, -1, -1, 176, -1, 3229, -1, 3671, 4363, -1, -1, -1, 1458, -1, -1, -1, -1, -1, 4579, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3713, -1, 4704, -1, -1, 227, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1458, -1, -1, -1, -1, -1, -1, -1, -1, -1, 249, 3741, -1, 1525, -1, -1, -1, -1, 4439, -1, 3310, -1, -1, 4742, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4764, 633, -1, -1, -1, -1, 4472, 639, -1, 1566, -1, -1, -1, 4479, -1, 4481, -1, -1, -1, -1, -1, -1, 1525, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4704, -1, 3809, -1, -1, 4503, -1, -1, 324, 325, 1599, -1, 328, -1, -1, -1, -1, -1, 2642, -1, -1, -1, 2646, 2647, 3831, -1, -1, -1, -1, -1, -1, 1566, -1, -1, -1, -1, -1, -1, 4742, 355, -1, 4837, 358, -1, -1, -1, 3853, -1, 364, -1, -1, -1, -1, -1, -1, 371, -1, -1, 374, -1, 4764, -1, -1, -1, 1599, -1, -1, -1, -1, -1, -1, -1, 3439, 3440, -1, -1, -1, 393, -1, -1, 2704, -1, -1, -1, 400, -1, 2710, -1, -1, -1, 406, -1, -1, 409, -1, -1, -1, 413, -1, 3466, -1, -1, 3469, -1, -1, -1, -1, -1, -1, -1, -1, -1, 428, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2751, -1, 3936, -1, -1, -1, 4837, -1, -1, -1, 10, 454, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, 816, 3960, -1, -1, -1, -1, -1, -1, -1, -1, 4958, 36, -1, -1, 39, -1, -1, -1, -1, 835, -1, 46, 3541, 3542, 3543, -1, 3985, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3566, -1, 1790, -1, -1, -1, -1, 79, 4705, 4706, 4707, -1, -1, 1801, 4711, 4712, 4713, 4714, -1, 3585, -1, 4718, -1, -1, -1, -1, -1, -1, -1, 1817, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3607, 905, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4958, 1790, 4754, 4755, 4756, 4757, 4758, -1, 4760, 4761, -1, -1, 1801, -1, -1, -1, -1, -1, -1, -1, 4772, 4773, -1, -1, -1, -1, -1, 1870, 1817, 5079, -1, -1, -1, -1, 952, -1, -1, -1, -1, -1, -1, -1, 1885, -1, -1, 1888, 1889, -1, -1, -1, -1, -1, -1, -1, -1, 4807, -1, -1, -1, -1, -1, -1, -1, -1, 2642, -1, 193, -1, 2646, 2647, -1, 198, 3693, -1, 4135, -1, 1919, 1920, -1, -1, -1, 1870, 2960, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, 221, -1, 1885, 5147, -1, 1888, 1889, -1, -1, -1, -1, -1, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3740, -1, 5079, -1, -1, -1, 3746, 2704, 3748, -1, -1, 1919, 1920, 2710, -1, -1, -1, -1, -1, -1, -1, 3761, -1, 3763, -1, -1, -1, -1, -1, 1066, 276, -1, -1, -1, -1, -1, 3033, -1, 4909, -1, 3037, -1, -1, -1, 290, 4225, -1, 293, -1, -1, -1, -1, -1, -1, 2751, -1, -1, 1094, 1095, 1096, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5147, 4251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2051, 3830, -1, -1, -1, -1, -1, -1, -1, 5267, -1, -1, -1, -1, 4974, -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, 3872, -1, -1, -1, 382, -1, -1, -1, -1, -1, 3139, 2051, 36, -1, -1, -1, -1, -1, -1, 3891, -1, -1, 46, -1, -1, 3154, -1, -1, -1, 53, 3159, -1, -1, -1, 1203, -1, -1, -1, -1, -1, -1, 3913, -1, -1, 3916, -1, -1, -1, -1, -1, 1219, -1, -1, -1, -1, 79, -1, -1, 5267, 1228, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4394, 5086, -1, -1, -1, -1, -1, -1, -1, -1, 5393, -1, -1, -1, -1, 5398, 5399, -1, -1, -1, -1, -1, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, 3997, -1, -1, -1, 4441, -1, 2960, -1, -1, 4446, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5149, -1, -1, -1, 174, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5168, -1, -1, -1, 193, -1, 5174, 5175, -1, 198, -1, -1, -1, -1, -1, -1, 5184, -1, -1, 5393, -1, -1, -1, 5191, 5398, 5399, -1, -1, -1, -1, -1, 220, 221, -1, 1368, -1, -1, -1, -1, 3033, -1, -1, -1, 3037, -1, 5511, 235, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5226, 5227, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, 5239, -1, 5241, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 276, 5256, 5555, -1, -1, -1, 36, -1, -1, 39, -1, -1, -1, -1, 290, 4579, 46, 293, -1, -1, -1, -1, -1, 53, -1, -1, 5281, 1448, -1, -1, -1, -1, -1, 3414, 5289, -1, 3417, -1, 3419, -1, -1, -1, -1, 3424, 4168, -1, -1, -1, -1, 79, 5511, -1, -1, -1, -1, -1, -1, -1, 3139, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3154, -1, -1, -1, -1, 3159, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3472, -1, -1, 5555, 4219, -1, -1, -1, 3480, 4224, -1, 4226, 5358, -1, -1, 382, -1, -1, -1, 1531, -1, -1, -1, -1, -1, -1, -1, -1, 1540, -1, -1, -1, -1, 3505, -1, 4250, 5382, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5392, -1, -1, 4704, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1572, -1, -1, -1, -1, -1, 1578, 1579, -1, -1, 1582, -1, 193, -1, -1, -1, -1, 198, -1, -1, -1, -1, 4297, 1595, -1, 4300, 1598, 4742, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, 221, -1, -1, 3575, -1, 3577, -1, -1, -1, 4764, -1, -1, -1, 5459, 235, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1654, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 276, 1668, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290, -1, -1, 293, -1, -1, 4390, 4391, -1, -1, -1, -1, -1, 4837, 5529, -1, -1, 4401, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3671, -1, -1, -1, 4418, -1, 2642, -1, -1, -1, 2646, 2647, -1, -1, -1, -1, -1, -1, -1, -1, 813, 814, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3713, 3414, -1, 5590, 3417, -1, 3419, -1, -1, -1, -1, 3424, -1, -1, -1, -1, -1, 5604, 2642, -1, 382, -1, 2646, 2647, 1777, -1, 2704, -1, 3741, -1, -1, -1, 2710, -1, -1, 1788, -1, -1, -1, -1, -1, -1, -1, 4499, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 891, -1, -1, 3472, -1, -1, 4958, -1, -1, -1, -1, 3480, -1, -1, -1, -1, -1, 2751, -1, -1, 5663, 1830, 1831, -1, 2704, 10, -1, -1, 13, -1, 2710, -1, 17, 18, 19, -1, 3505, -1, -1, -1, 3809, -1, -1, -1, -1, -1, 1855, -1, -1, -1, -1, 36, -1, 1862, -1, -1, -1, -1, -1, -1, -1, 46, 3831, -1, 482, -1, -1, -1, 53, -1, -1, 2751, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, 3853, -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3575, -1, 3577, -1, 5753, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1012, 1013, -1, -1, 1934, -1, 5079, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5785, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5796, -1, -1, -1, -1, 1967, 1968, -1, -1, -1, -1, -1, -1, -1, 3936, -1, -1, -1, -1, -1, -1, -1, 1984, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3960, -1, -1, -1, 5147, -1, -1, -1, -1, -1, -1, 3671, -1, -1, 4717, -1, -1, 193, -1, -1, -1, -1, 198, -1, -1, 3985, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2960, -1, -1, -1, -1, -1, -1, -1, -1, 220, 221, -1, -1, -1, -1, -1, -1, -1, 3713, -1, -1, 4759, -1, -1, 235, -1, -1, -1, 5897, -1, -1, -1, -1, 4771, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3741, -1, -1, -1, -1, -1, -1, -1, 2960, -1, -1, -1, -1, -1, -1, 1320, -1, -1, -1, 276, -1, -1, 4806, -1, -1, -1, -1, 3033, -1, -1, -1, 3037, -1, 290, -1, -1, 293, -1, -1, -1, -1, -1, -1, 5267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3809, -1, -1, 1376, -1, -1, -1, -1, -1, -1, -1, -1, 10, 3033, 1245, 13, -1, 3037, -1, 17, 18, 19, 3831, -1, -1, -1, 4135, -1, -1, -1, -1, -1, 4884, -1, -1, -1, -1, -1, 36, -1, -1, 39, -1, -1, 3853, 1276, -1, -1, 46, -1, -1, 4903, -1, -1, -1, 53, -1, 382, -1, -1, -1, -1, -1, -1, -1, 3139, -1, -1, -1, -1, -1, -1, -1, 1304, 1305, 1306, -1, 1308, -1, -1, 3154, 79, -1, -1, -1, 3159, -1, -1, -1, 414, -1, -1, -1, -1, -1, -1, -1, 1328, -1, -1, -1, 5393, -1, -1, -1, -1, 5398, 5399, -1, -1, -1, -1, -1, -1, -1, -1, 4225, -1, -1, 3139, -1, -1, -1, -1, -1, -1, -1, 3936, -1, -1, -1, -1, -1, -1, 3154, -1, -1, 4989, -1, 3159, -1, -1, 4251, -1, -1, -1, -1, -1, -1, -1, -1, 3960, -1, -1, -1, -1, -1, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, 3985, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 193, -1, -1, -1, -1, 198, 1432, -1, -1, -1, 1436, 1437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5511, -1, -1, 220, 221, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5101, -1, 5103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5555, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 276, -1, -1, -1, -1, -1, -1, 4394, -1, -1, -1, -1, -1, -1, 290, -1, -1, 293, 5148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1685, -1, -1, -1, 1689, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4135, -1, -1, -1, -1, -1, 4441, -1, -1, -1, -1, 4446, -1, -1, 3414, -1, -1, 3417, -1, 3419, 5198, -1, -1, 2498, 3424, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2509, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 382, -1, -1, -1, -1, -1, -1, -1, 2541, -1, 3414, -1, -1, 3417, 3472, 3419, -1, -1, -1, -1, 3424, -1, 3480, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4225, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3505, -1, -1, -1, -1, -1, -1, -1, 2588, 2589, -1, 4251, -1, -1, -1, -1, -1, 1679, 1680, 1681, -1, 3472, -1, -1, -1, -1, -1, -1, -1, 3480, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4579, -1, -1, 2622, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 482, 3505, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, 3575, -1, 3577, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3575, -1, 3577, -1, 5411, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, 5425, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4394, -1, -1, 36, -1, -1, -1, -1, -1, -1, 4704, -1, 3671, 46, -1, -1, -1, -1, -1, 5456, 53, 2755, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2770, -1, -1, -1, -1, -1, -1, -1, -1, 2003, 79, 4441, 4742, -1, -1, -1, 4446, -1, 3713, -1, -1, -1, 2792, -1, 2018, -1, -1, -1, 2022, -1, 3671, -1, -1, -1, 4764, -1, -1, -1, -1, -1, -1, -1, -1, 2037, 2038, 2039, 3741, 2041, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3713, -1, -1, -1, -1, -1, -1, 5552, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, 3741, -1, -1, -1, -1, 174, -1, 4837, 2878, 2879, -1, -1, -1, -1, 3809, -1, 36, -1, -1, -1, -1, -1, -1, -1, 193, -1, 46, -1, -1, 198, -1, -1, -1, 53, -1, -1, 3831, -1, -1, -1, -1, -1, -1, -1, 5617, -1, 5619, -1, -1, 4579, -1, 220, 221, 2005, -1, -1, -1, -1, 3853, 79, -1, -1, -1, -1, -1, 2017, 235, 2019, 3809, 2021, -1, -1, 2024, 2025, 2026, -1, -1, -1, -1, -1, 2032, -1, -1, 2035, -1, -1, -1, -1, -1, -1, 3831, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2052, 2053, 2054, -1, -1, -1, -1, 276, -1, 2979, -1, -1, 3853, -1, -1, -1, -1, 2069, -1, -1, -1, 290, -1, -1, 293, -1, -1, -1, 4958, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3936, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, 174, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, 3960, -1, -1, 5741, -1, -1, -1, -1, 193, 4704, 36, -1, -1, 198, -1, -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, 3985, -1, 53, -1, 5767, 3936, -1, -1, -1, -1, 220, 221, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4742, 382, -1, 235, -1, -1, 79, 3960, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4764, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3985, -1, -1, -1, -1, 5079, -1, -1, -1, -1, -1, -1, 276, -1, -1, -1, 2212, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290, -1, -1, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2252, -1, -1, -1, -1, -1, -1, 4837, 169, -1, -1, 5884, -1, 482, -1, -1, -1, 5147, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, 193, -1, -1, -1, -1, 198, -1, -1, 4135, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2305, -1, -1, -1, -1, -1, 220, 221, -1, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4135, -1, -1, -1, -1, -1, -1, -1, -1, 2497, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 276, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3296, -1, 4958, 290, 4225, -1, 293, -1, -1, -1, -1, 5267, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3317, -1, -1, -1, -1, -1, -1, -1, -1, 4251, 6030, -1, -1, -1, -1, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, -1, 4225, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2595, -1, -1, -1, 6078, -1, -1, -1, -1, 4251, -1, -1, 2607, -1, -1, -1, -1, 2612, -1, -1, 382, -1, 6096, -1, -1, -1, -1, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, -1, 2490, -1, -1, -1, -1, -1, -1, -1, -1, 2499, -1, 5079, 2502, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5393, -1, -1, -1, -1, 5398, 5399, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2543, -1, -1, -1, 2547, -1, 36, 2550, 4394, 2552, -1, -1, 2555, -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, 53, -1, -1, 5147, -1, -1, -1, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, 79, -1, -1, -1, -1, -1, 4441, -1, -1, -1, -1, 4446, -1, 4394, -1, -1, 2608, 2609, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5511, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4441, -1, -1, -1, -1, 4446, -1, -1, -1, 148, -1, -1, -1, 3583, -1, -1, -1, -1, -1, 10, -1, -1, 13, 3593, -1, 5555, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, 5267, -1, 2691, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, 193, 46, -1, -1, -1, 198, -1, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, 221, -1, 4579, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, 235, -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, 36, -1, -1, -1, -1, -1, 276, 4579, -1, -1, 46, -1, -1, -1, -1, -1, -1, 53, -1, -1, 290, -1, -1, 293, -1, -1, -1, -1, -1, -1, -1, -1, 5393, -1, -1, -1, -1, 5398, 5399, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, 3752, 3753, 3754, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3769, -1, -1, 193, -1, -1, -1, -1, 198, -1, 4704, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, 221, -1, 3802, 3803, -1, -1, -1, 3807, -1, -1, -1, -1, -1, 382, 235, -1, -1, 4742, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4704, 169, -1, -1, -1, -1, 4764, -1, -1, -1, -1, 2926, 2927, 2928, -1, -1, -1, 2932, 5511, -1, -1, -1, 276, -1, -1, 193, -1, -1, -1, -1, 198, -1, -1, -1, -1, -1, 290, -1, 4742, 293, -1, -1, -1, -1, 2959, -1, -1, -1, -1, -1, -1, -1, 220, 221, -1, -1, -1, -1, -1, -1, 4764, -1, 5555, -1, -1, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3911, 4837, 482, 3914, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 276, -1, -1, -1, -1, 3170, -1, -1, -1, -1, -1, -1, -1, -1, 290, -1, -1, 293, -1, -1, 382, -1, -1, -1, -1, 4837, 3191, 3192, -1, 3194, -1, -1, -1, -1, 3199, 3200, -1, 3202, -1, 3204, -1, -1, -1, 3208, -1, -1, 3211, -1, -1, -1, -1, 3216, -1, -1, -1, -1, -1, -1, -1, -1, 3225, -1, -1, -1, -1, 3230, -1, -1, -1, -1, -1, -1, -1, 3238, 3239, 3240, 3241, -1, -1, -1, 3245, 3246, -1, 3248, -1, -1, -1, -1, -1, -1, -1, -1, 4958, -1, -1, 457, -1, -1, -1, -1, 3265, -1, 3267, 4044, 4045, 4046, 382, -1, -1, 3274, 3275, 3276, 3277, 3278, 3279, 3280, 3281, 3282, 3283, -1, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, -1, -1, -1, 3167, -1, 4958, -1, -1, 3172, -1, -1, -1, 3318, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, 3201, -1, -1, -1, -1, -1, 24, -1, -1, -1, -1, 3212, -1, 3214, 3215, -1, 36, -1, -1, -1, -1, -1, -1, -1, 42, -1, 46, 3228, 482, -1, 3231, -1, 3233, 53, -1, 5079, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, 80, -1, -1, -1, -1, 3268, -1, 3270, -1, 3272, -1, -1, -1, -1, -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5079, -1, -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, -1, 120, 5147, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3460, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 149, -1, -1, -1, -1, -1, -1, -1, -1, 158, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 171, -1, -1, -1, 5147, -1, 3360, -1, 179, -1, -1, 3365, 183, -1, -1, -1, -1, -1, -1, -1, 193, -1, -1, -1, -1, 198, 3380, -1, -1, -1, -1, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, 221, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 235, -1, -1, -1, -1, -1, 239, -1, 5267, -1, -1, -1, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3445, -1, -1, -1, -1, -1, -1, -1, 4371, -1, -1, -1, 276, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290, -1, 290, 293, -1, 293, -1, 5267, -1, -1, -1, -1, -1, -1, 4403, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 328, -1, -1, -1, -1, -1, 4435, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 355, -1, -1, -1, -1, -1, -1, -1, -1, 364, -1, -1, 5393, -1, 4470, -1, 371, 5398, 5399, 374, -1, -1, 3702, 3703, -1, 382, -1, 3707, -1, -1, -1, 4487, -1, -1, -1, -1, -1, -1, 393, -1, -1, -1, -1, -1, -1, 400, -1, -1, -1, -1, -1, 406, -1, -1, 409, 410, 3736, 412, 413, -1, -1, -1, -1, -1, -1, -1, 5393, -1, -1, -1, -1, 5398, 5399, 428, -1, -1, -1, -1, -1, -1, 435, -1, -1, 438, -1, -1, 441, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 454, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 482, -1, -1, -1, -1, 5511, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4608, 4609, 4610, 4611, -1, -1, -1, -1, 3698, -1, -1, -1, -1, -1, 3704, -1, -1, -1, -1, -1, -1, -1, 5555, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5511, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5555, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3783, -1, -1, -1, -1, -1, -1, 3932, -1, -1, -1, -1, -1, 3938, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3957, 3958, -1, -1, 3961, 3962, 3963, 3964, -1, -1, 3967, 3968, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 3976, 3977, 24, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4000, -1, 22, 4003, -1, 4005, -1, -1, 4008, 4009, -1, -1, 32, -1, 34, 35, -1, -1, -1, -1, -1, 67, -1, -1, 4024, 4025, 4026, 4027, -1, 4029, -1, -1, -1, -1, 80, 81, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 92, -1, -1, -1, 96, -1, -1, -1, 74, -1, 76, 77, -1, -1, -1, -1, -1, 83, -1, 85, -1, -1, 114, -1, -1, -1, -1, -1, -1, 3933, -1, 97, -1, 99, -1, -1, -1, 3941, -1, 3943, -1, -1, -1, -1, -1, -1, 138, 3951, 4094, 3953, 116, -1, -1, 119, -1, -1, -1, 149, -1, -1, -1, -1, -1, -1, -1, -1, 158, -1, 134, -1, 136, -1, -1, -1, 140, -1, 3980, 3981, 3982, 171, 146, -1, -1, -1, 176, -1, -1, -1, 154, -1, 156, -1, -1, -1, -1, 3999, -1, 163, 4144, -1, -1, -1, -1, 4007, -1, -1, 4010, -1, 4012, -1, 202, -1, -1, -1, 180, -1, -1, -1, 4022, -1, -1, -1, -1, -1, -1, -1, 4030, 4031, -1, 4951, -1, 197, -1, -1, -1, 227, -1, -1, -1, -1, 4962, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 237, 238, -1, -1, -1, -1, 243, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, -1, -1, -1, -1, -1, -1, 290, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4112, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 314, -1, -1, 4129, -1, -1, -1, -1, -1, -1, 324, 325, -1, -1, 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 319, -1, -1, -1, -1, -1, -1, -1, -1, -1, 355, -1, -1, 358, 333, -1, -1, 362, -1, 364, 339, 340, -1, 342, -1, -1, 371, -1, 347, 374, -1, 350, -1, -1, 353, -1, -1, 356, -1, -1, -1, -1, -1, -1, 363, -1, -1, -1, 393, -1, 369, 370, -1, -1, -1, 400, -1, -1, 377, -1, -1, 406, 381, -1, 409, 4364, -1, -1, 413, -1, -1, -1, 391, -1, -1, -1, 421, -1, 423, -1, -1, -1, -1, 428, -1, -1, -1, 406, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 426, 4407, 454, -1, -1, -1, -1, -1, -1, -1, -1, 437, -1, -1, -1, -1, -1, 443, -1, -1, -1, -1, 448, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 461, -1, -1, 5220, -1, -1, -1, -1, 5225, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 484, -1, -1, -1, 5244, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, 502, -1, -1, 505, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4526, 80, -1, -1, 4530, 4531, -1, 4533, 4534, -1, -1, -1, -1, 4539, 4540, 4541, 4542, 96, -1, -1, 4546, 4547, 4548, 4549, 4550, 4551, 4552, 4553, 4554, 4555, 4556, 4557, 4558, -1, -1, 114, -1, -1, -1, -1, -1, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4583, -1, 138, 4586, -1, 4588, 4447, 4448, 4591, -1, -1, 4594, 4595, 149, -1, 4598, 4599, 4458, -1, 5378, -1, -1, 158, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 171, -1, -1, -1, -1, 176, -1, -1, -1, -1, -1, -1, 183, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 202, -1, -1, -1, -1, -1, -1, -1, 4657, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4525, -1, -1, -1, 4671, -1, -1, 227, -1, -1, -1, -1, 4537, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, 5478, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4576, 4577, -1, -1, -1, -1, -1, -1, 4584, 4585, -1, -1, 5506, 4589, -1, -1, -1, 4593, -1, 290, 4596, 4597, -1, -1, -1, 4601, -1, -1, -1, -1, -1, 4607, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, 324, 325, -1, -1, 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4647, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4658, -1, 355, -1, -1, 358, -1, -1, 4666, 362, -1, 364, -1, -1, -1, -1, -1, -1, 371, -1, -1, 374, -1, -1, -1, -1, -1, -1, 4686, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 393, -1, -1, -1, -1, -1, -1, 400, -1, -1, -1, -1, 405, 406, -1, -1, 409, -1, -1, -1, 413, -1, -1, -1, -1, -1, 4866, -1, -1, -1, 423, -1, -1, -1, -1, 428, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 441, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 454, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4787, -1, -1, -1, -1, -1, -1, 4794, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4953, 4954, -1, -1, -1, -1, -1, -1, 4961, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5003, -1, 4863, -1, -1, -1, 5009, 5010, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5028, -1, 5030, -1, -1, -1, 5034, 5035, 5036, 5037, -1, -1, 5040, 5041, -1, -1, -1, 5045, -1, -1, -1, 5049, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5063, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5081, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5095, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5105, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5007, -1, -1, -1, -1, -1, 5013, 5014, 5015, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5169, -1, 5171, -1, -1, -1, -1, -1, -1, -1, -1, 5038, 5039, -1, -1, 5042, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5206, -1, -1, -1, -1, 5069, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5080, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5096, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5293, -1, 5295, 5296, 5297, 5298, 5299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5310, 5311, 5312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5325, -1, -1, 5328, -1, -1, -1, 5332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5350, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5300, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5535, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5403, -1, -1, -1, 5549, -1, 5551, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5603, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5639, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5534, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5705, 5564, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5592, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5752, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5837, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5850, 5851, 5710, 5711, 5712, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5864, -1, -1, -1, -1, -1, 5728, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5738, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5905, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5930, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5946, 5947, -1, -1, 5808, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5832, -1, 5834, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6006, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, 5951, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, 5996, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, 6065, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, 495, -1, -1, -1, -1, -1, -1, 502, 503, 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 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, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, -1, -1, -1, -1, 502, 503, 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, -1, -1, -1, -1, 502, 503, 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, -1, -1, -1, -1, 502, 503, 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, -1, -1, -1, -1, 502, 503, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, -1, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 503, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, -1, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, -1, 156, 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, -1, -1, -1, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, -1, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, -1, 272, -1, 274, 275, 276, 277, -1, -1, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, -1, 316, -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, -1, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, -1, 449, 450, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 479, 480, 481, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 503, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, -1, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, -1, 156, 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, -1, -1, -1, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, -1, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, -1, 272, -1, 274, 275, 276, 277, -1, -1, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, -1, 316, -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, -1, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, -1, 449, 450, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, -1, 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, 479, 480, 481, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, 503, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 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, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 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, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, 174, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, 230, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 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, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 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, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, -1, -1, 500, 501, 502, 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, 495, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, 174, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 277, 278, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, 3, -1, 5, 6, 502, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, 3, -1, 5, 6, -1, 8, 9, 502, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, 3, -1, 5, 6, -1, 8, 9, 502, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 3, -1, 5, 6, -1, 8, 9, -1, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, 502, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 3, -1, 5, 6, -1, 8, 9, -1, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, 502, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 502, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, 289, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 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, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 484, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 502, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, 289, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 502, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 502, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 502, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 502, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 3, -1, 5, 6, -1, -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, 502, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, 288, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, 495, -1, -1, -1, -1, -1, -1, 502, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 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, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 484, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 502, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 502, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 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, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 484, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 502, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, 289, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 502, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 502, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 502, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 502, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, 3, -1, 5, 6, -1, -1, -1, 10, 11, -1, -1, -1, -1, -1, 17, 18, 19, -1, 502, 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, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, 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, -1, 156, 157, 158, 159, -1, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, -1, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, 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, -1, 272, 273, 274, 275, 276, 277, 278, -1, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, -1, 316, -1, 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, -1, 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, -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, 423, -1, 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, 465, 466, 467, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 479, 480, 481, -1, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, 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, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, 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, -1, 156, 157, 158, 159, -1, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, -1, 183, -1, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, -1, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, 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, -1, 272, 273, 274, 275, 276, 277, 278, -1, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, -1, 316, -1, 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, -1, 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, -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, 423, -1, 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, 465, 466, 467, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 479, 480, 481, -1, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, 3, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, -1, 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, -1, -1, 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, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, -1, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, -1, 165, 166, 167, 168, -1, 170, 171, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, -1, 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, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, -1, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, -1, 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, -1, 286, 287, -1, 289, 290, 291, 292, 293, -1, 295, 296, 297, 298, -1, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, 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, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, -1, 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, -1, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, 452, 453, 454, 455, 456, 457, -1, 459, -1, -1, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, -1, 480, 481, 482, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, 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, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, 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, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, 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, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, 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, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, 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, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, 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, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, 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, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, 490, 491, 492, 493, 494, 495, 496, 497, 498, -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, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 495, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 495, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 495, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, -1, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, -1, 156, 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, -1, -1, -1, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, -1, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, -1, 272, -1, 274, 275, 276, 277, -1, -1, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, -1, 316, -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, -1, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, -1, 449, 450, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 479, 480, 481, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 495, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, -1, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, -1, 156, 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, -1, -1, -1, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, -1, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, -1, 272, -1, 274, 275, 276, 277, -1, -1, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, -1, 316, -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, -1, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, -1, 449, 450, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 3, -1, 5, 6, -1, -1, -1, -1, 11, 12, -1, 479, 480, 481, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 495, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, 288, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, 5, 6, -1, -1, -1, -1, 11, 12, -1, 493, 494, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, 288, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, 5, 6, -1, -1, -1, -1, 11, -1, -1, 493, 494, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, 288, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, 5, 6, -1, -1, -1, -1, 11, 12, -1, 493, 494, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, 288, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, 5, 6, -1, -1, -1, -1, 11, -1, -1, 493, 494, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, 288, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, 11, -1, -1, 493, 494, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, 174, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, 5, 6, -1, -1, -1, -1, 11, -1, -1, 493, 494, -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, 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, 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, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 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, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, 106, 107, -1, -1, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, 106, 107, -1, -1, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, 106, 107, -1, -1, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, 106, 107, -1, -1, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, 288, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, 106, 107, -1, -1, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, 106, 107, -1, -1, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, 106, 107, -1, -1, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, 106, 107, -1, -1, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, 106, 107, -1, -1, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 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, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 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, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, -1, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, 171, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, 171, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, 235, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, 180, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 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, -1, 352, 353, -1, 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, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, 180, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 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, -1, 352, 353, -1, 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, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, 171, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 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, -1, 352, 353, -1, 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, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, 289, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, 171, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, 99, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 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, -1, 352, 353, -1, 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, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, 289, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, 289, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 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, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, 289, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 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, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, 289, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, 406, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, -1, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, 185, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, -1, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, -1, 156, 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, -1, -1, -1, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, -1, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, -1, 272, -1, 274, 275, 276, 277, -1, -1, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, -1, 316, -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, -1, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, -1, 449, 450, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 479, 480, 481, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, -1, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, -1, -1, -1, 176, 177, 178, 179, -1, 181, 182, -1, 184, -1, 186, -1, 188, 189, 190, 191, 192, -1, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, -1, 209, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, -1, -1, 222, -1, 224, 225, 226, 227, 228, -1, -1, 231, 232, -1, 234, -1, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 277, -1, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, 297, -1, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, -1, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, -1, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, 407, -1, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, 448, 449, -1, 451, -1, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, -1, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, -1, 156, 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, -1, -1, -1, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, -1, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, -1, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, -1, 272, -1, 274, 275, 276, 277, 278, -1, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, -1, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, -1, 316, -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, -1, 402, -1, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, -1, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 479, 480, 481, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, -1, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, -1, 156, 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, -1, -1, -1, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, -1, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, -1, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 272, -1, 274, 275, 276, 277, -1, -1, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, -1, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, -1, 316, -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, -1, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, -1, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 479, 480, 481, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, -1, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, -1, 156, 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, -1, -1, -1, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, -1, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, -1, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, 272, -1, 274, 275, 276, 277, -1, -1, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, -1, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, -1, 316, -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, -1, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, -1, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 479, 480, 481, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, -1, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, -1, 156, 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, 167, 168, 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, -1, -1, -1, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, -1, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, -1, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, -1, 272, -1, 274, 275, 276, 277, -1, -1, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, -1, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, -1, 316, -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, -1, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, -1, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 479, 480, 481, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, -1, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, -1, 156, 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, -1, -1, -1, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, -1, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, -1, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, -1, 272, -1, 274, 275, 276, 277, -1, -1, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, -1, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, -1, 316, -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, -1, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, -1, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 479, 480, 481, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, -1, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, -1, 156, 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, -1, -1, -1, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, -1, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, -1, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, -1, 272, -1, 274, 275, 276, 277, -1, -1, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, -1, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, -1, 316, -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, -1, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, -1, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 479, 480, 481, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, -1, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, -1, 156, 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, -1, -1, -1, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, -1, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, -1, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, -1, 272, -1, 274, 275, 276, 277, -1, -1, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, -1, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, -1, 316, -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, -1, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, -1, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 479, 480, 481, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, -1, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, -1, 156, 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, -1, -1, -1, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, -1, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, -1, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, -1, 272, -1, 274, 275, 276, 277, -1, -1, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, -1, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, -1, 316, -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, -1, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, -1, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 479, 480, 481, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, -1, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, -1, 156, 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, 167, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, -1, -1, -1, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, -1, 210, 211, 212, 213, 214, 215, -1, 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, -1, 233, 234, 235, -1, 237, 238, 239, -1, -1, 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, -1, -1, 272, -1, 274, 275, 276, 277, -1, -1, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, -1, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, -1, 316, -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, -1, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, 416, 417, -1, -1, 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, -1, 449, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 479, 480, 481, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, -1, -1, 55, -1, -1, -1, 59, 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, -1, -1, 72, -1, 74, 75, 76, 77, -1, -1, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, -1, 107, -1, -1, -1, 111, 112, 113, 114, 115, 116, -1, -1, 119, -1, 121, -1, 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, -1, 147, 148, 149, -1, 151, 152, 153, 154, -1, 156, 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, -1, 168, -1, 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, -1, -1, -1, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, -1, 210, 211, 212, 213, -1, -1, -1, -1, -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, -1, 233, 234, 235, -1, 237, 238, 239, -1, -1, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, -1, 261, -1, 263, 264, 265, 266, 267, 268, 269, -1, -1, 272, -1, 274, 275, 276, 277, -1, -1, 280, -1, 282, 283, 284, -1, 286, 287, -1, -1, 290, 291, 292, -1, -1, 295, 296, -1, 298, 299, 300, -1, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, -1, 316, -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, -1, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, -1, 402, -1, 404, 405, -1, 407, 408, 409, 410, 411, 412, 413, -1, 415, -1, -1, -1, -1, 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, -1, -1, 443, 444, 445, 446, 447, -1, -1, -1, 451, 452, 453, 454, 455, 456, -1, -1, 459, -1, -1, 462, 463, 464, 465, 466, 467, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 479, 480, 481 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { 0, 22, 32, 34, 35, 52, 62, 74, 76, 77, 83, 85, 97, 99, 116, 119, 134, 136, 140, 146, 154, 156, 163, 180, 197, 237, 238, 243, 257, 275, 319, 333, 339, 340, 342, 347, 353, 356, 363, 369, 370, 377, 381, 391, 406, 426, 437, 443, 448, 461, 484, 485, 486, 487, 488, 489, 502, 509, 510, 511, 512, 513, 514, 520, 521, 523, 524, 525, 526, 528, 532, 544, 549, 550, 553, 554, 555, 574, 577, 578, 593, 640, 643, 644, 647, 650, 651, 652, 660, 667, 669, 670, 673, 676, 677, 681, 690, 694, 695, 696, 699, 701, 702, 703, 704, 712, 714, 734, 738, 740, 741, 751, 753, 760, 761, 764, 765, 766, 767, 768, 777, 779, 781, 784, 788, 789, 799, 800, 803, 808, 822, 854, 857, 858, 859, 864, 867, 869, 871, 873, 874, 877, 878, 881, 883, 884, 888, 889, 890, 893, 894, 895, 896, 897, 904, 906, 907, 908, 909, 915, 917, 918, 924, 925, 926, 929, 930, 931, 932, 934, 935, 937, 938, 940, 941, 943, 955, 957, 960, 962, 963, 972, 974, 979, 984, 992, 996, 997, 998, 999, 1000, 1001, 1007, 1043, 420, 464, 910, 29, 80, 96, 114, 120, 138, 149, 158, 171, 176, 183, 202, 227, 249, 290, 314, 324, 325, 328, 355, 358, 362, 364, 371, 374, 393, 400, 405, 406, 409, 413, 423, 428, 441, 454, 666, 910, 3, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 41, 42, 43, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 68, 69, 70, 71, 72, 74, 75, 76, 77, 78, 80, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 93, 94, 95, 96, 97, 98, 100, 101, 102, 103, 107, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 123, 124, 125, 126, 127, 128, 129, 131, 132, 133, 134, 137, 138, 139, 140, 141, 143, 144, 145, 147, 148, 149, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 162, 164, 165, 166, 167, 168, 170, 172, 173, 175, 176, 177, 178, 179, 181, 182, 184, 185, 186, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, 201, 202, 203, 204, 205, 207, 208, 209, 210, 211, 212, 213, 214, 215, 217, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 231, 232, 233, 234, 235, 237, 238, 239, 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, 274, 275, 276, 277, 279, 280, 281, 282, 283, 284, 286, 287, 290, 291, 292, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 371, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 404, 405, 407, 408, 409, 410, 411, 412, 413, 415, 416, 417, 420, 421, 422, 423, 424, 426, 427, 428, 429, 430, 431, 432, 433, 436, 437, 438, 439, 440, 443, 444, 445, 446, 447, 448, 449, 451, 452, 453, 454, 455, 456, 459, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 1104, 1174, 1186, 1187, 1191, 1192, 1193, 3, 30, 993, 1171, 1186, 1191, 452, 502, 948, 288, 320, 910, 55, 502, 585, 24, 42, 67, 80, 114, 120, 138, 149, 158, 171, 179, 183, 239, 290, 293, 314, 328, 355, 364, 374, 393, 400, 409, 410, 412, 413, 428, 435, 438, 441, 594, 649, 756, 809, 823, 30, 319, 1171, 993, 30, 313, 372, 410, 412, 6, 226, 865, 866, 1177, 24, 29, 67, 80, 96, 114, 138, 149, 158, 171, 176, 183, 202, 249, 290, 303, 314, 325, 328, 355, 358, 362, 364, 371, 374, 393, 400, 406, 409, 413, 421, 423, 428, 441, 454, 666, 769, 771, 772, 910, 1171, 99, 452, 502, 644, 647, 650, 943, 956, 960, 963, 972, 979, 984, 992, 996, 11, 23, 30, 50, 166, 172, 174, 198, 228, 264, 322, 341, 493, 494, 785, 786, 993, 1176, 1178, 30, 32, 99, 337, 370, 790, 791, 792, 1186, 171, 1186, 1173, 1177, 406, 1010, 785, 1186, 420, 1171, 303, 249, 114, 202, 364, 405, 406, 502, 875, 876, 363, 1186, 30, 375, 416, 420, 536, 545, 546, 1186, 27, 180, 790, 791, 320, 910, 1186, 225, 30, 135, 1012, 1013, 68, 93, 239, 259, 355, 364, 375, 416, 420, 467, 533, 534, 535, 536, 30, 375, 416, 420, 536, 420, 289, 1055, 1056, 1169, 1186, 1010, 495, 1186, 175, 502, 949, 502, 335, 1002, 1003, 1171, 1002, 3, 54, 56, 57, 70, 71, 117, 118, 139, 167, 214, 215, 217, 260, 262, 281, 332, 379, 385, 416, 417, 449, 1078, 1080, 1082, 1084, 1086, 1088, 1089, 1090, 1092, 1093, 1094, 1096, 1097, 1187, 1191, 1012, 1013, 1014, 1182, 12, 1183, 1184, 1186, 1183, 1183, 997, 998, 1001, 0, 505, 502, 948, 150, 216, 294, 434, 1015, 1016, 997, 999, 1000, 125, 212, 251, 440, 506, 36, 914, 839, 1174, 774, 1186, 774, 1171, 323, 774, 423, 1171, 113, 406, 827, 1174, 1186, 1193, 3, 106, 110, 376, 1179, 1180, 1188, 1191, 1192, 1193, 30, 192, 1169, 282, 454, 10, 17, 18, 19, 75, 162, 490, 491, 492, 493, 494, 495, 496, 497, 498, 861, 863, 1134, 1135, 1186, 192, 1171, 827, 1171, 30, 1179, 1180, 827, 1171, 1171, 192, 1169, 1171, 192, 774, 1171, 347, 377, 30, 192, 1055, 1171, 367, 1171, 774, 30, 246, 1179, 1180, 192, 1169, 226, 122, 222, 273, 331, 911, 912, 913, 502, 500, 504, 1160, 1162, 942, 943, 944, 945, 1188, 1169, 1171, 1186, 29, 67, 81, 92, 114, 138, 176, 202, 227, 290, 325, 355, 358, 400, 409, 421, 428, 769, 770, 771, 772, 1177, 914, 959, 963, 972, 979, 984, 996, 1169, 252, 774, 502, 192, 774, 1171, 774, 423, 192, 1171, 113, 406, 410, 412, 1179, 1180, 410, 412, 75, 162, 861, 345, 1171, 1171, 1179, 192, 529, 1186, 192, 1171, 192, 774, 1171, 1171, 367, 774, 246, 1179, 335, 371, 406, 454, 249, 96, 202, 29, 92, 176, 325, 362, 421, 423, 427, 661, 30, 1171, 994, 543, 1177, 1188, 866, 252, 192, 839, 840, 192, 870, 192, 1171, 192, 776, 1078, 423, 113, 406, 192, 826, 827, 192, 1180, 1181, 88, 454, 75, 162, 192, 862, 863, 60, 192, 826, 192, 1181, 192, 826, 192, 1171, 192, 1171, 367, 870, 192, 776, 192, 246, 1181, 226, 192, 773, 774, 192, 1170, 1171, 192, 1171, 914, 502, 961, 594, 956, 448, 942, 948, 1178, 786, 787, 30, 787, 1178, 787, 30, 787, 1178, 787, 787, 787, 1178, 1176, 1176, 993, 787, 323, 502, 405, 502, 617, 617, 617, 288, 418, 506, 617, 364, 1055, 1057, 506, 905, 1177, 502, 958, 60, 454, 942, 88, 810, 810, 1186, 49, 481, 222, 504, 291, 291, 288, 174, 1177, 418, 914, 169, 782, 288, 5, 8, 9, 10, 12, 38, 54, 56, 57, 66, 67, 70, 71, 78, 80, 104, 105, 106, 107, 108, 109, 110, 117, 118, 120, 155, 160, 161, 167, 182, 184, 214, 215, 217, 232, 240, 241, 260, 262, 271, 273, 278, 279, 281, 290, 301, 315, 332, 360, 376, 385, 401, 416, 417, 422, 424, 425, 435, 441, 449, 469, 470, 471, 472, 474, 475, 476, 477, 482, 493, 494, 495, 502, 997, 1081, 1084, 1087, 1088, 1089, 1091, 1092, 1093, 1096, 1097, 1101, 1103, 1104, 1105, 1107, 1130, 1131, 1132, 1136, 1154, 1159, 1166, 1167, 1174, 1175, 1176, 1177, 1186, 1165, 1166, 1177, 30, 551, 1168, 1169, 375, 533, 120, 542, 1177, 12, 543, 12, 1177, 49, 72, 533, 481, 386, 912, 291, 174, 418, 492, 49, 481, 222, 913, 502, 1169, 495, 1162, 1057, 942, 173, 950, 1101, 1139, 1002, 506, 502, 951, 451, 1095, 1095, 1095, 502, 1083, 1083, 317, 502, 1085, 70, 71, 1095, 1083, 1080, 463, 484, 502, 1098, 502, 1098, 38, 1079, 502, 115, 190, 253, 256, 368, 479, 502, 1099, 1100, 504, 775, 1083, 1165, 1163, 503, 503, 511, 942, 952, 953, 954, 1169, 30, 135, 1011, 1011, 60, 1011, 163, 169, 236, 285, 1019, 1021, 1022, 1037, 1039, 1040, 1041, 1015, 1016, 174, 218, 218, 1055, 1058, 502, 69, 269, 304, 343, 377, 502, 837, 304, 339, 343, 377, 775, 304, 343, 377, 3, 91, 144, 242, 304, 339, 343, 377, 409, 411, 461, 544, 547, 919, 920, 921, 922, 804, 26, 140, 304, 343, 377, 445, 560, 1171, 26, 140, 377, 440, 527, 465, 192, 1055, 63, 98, 159, 195, 231, 269, 273, 304, 305, 343, 352, 361, 369, 377, 389, 398, 402, 456, 544, 548, 843, 855, 882, 502, 824, 1162, 343, 527, 198, 155, 26, 32, 47, 77, 133, 140, 143, 170, 204, 269, 273, 283, 292, 304, 343, 346, 347, 377, 445, 556, 558, 559, 684, 882, 5, 493, 494, 658, 1178, 30, 192, 1169, 774, 774, 502, 860, 304, 377, 504, 155, 288, 304, 343, 377, 855, 882, 26, 140, 304, 343, 377, 198, 522, 343, 461, 484, 515, 522, 304, 343, 377, 855, 882, 288, 304, 343, 155, 39, 61, 112, 201, 250, 254, 269, 303, 343, 348, 371, 377, 391, 556, 655, 656, 304, 343, 453, 684, 692, 155, 304, 343, 377, 26, 91, 133, 140, 143, 304, 339, 343, 377, 384, 546, 534, 536, 198, 155, 47, 131, 269, 343, 377, 556, 557, 304, 343, 347, 377, 89, 132, 307, 411, 288, 26, 32, 140, 304, 343, 377, 575, 576, 522, 169, 343, 515, 522, 155, 343, 377, 556, 1171, 234, 122, 289, 466, 506, 911, 30, 135, 450, 495, 503, 832, 1101, 1140, 1141, 1187, 1101, 1161, 3, 30, 34, 35, 36, 37, 38, 39, 40, 44, 58, 66, 67, 73, 79, 81, 92, 99, 104, 105, 106, 108, 109, 110, 120, 122, 130, 135, 136, 142, 146, 150, 161, 163, 169, 171, 174, 180, 183, 187, 198, 206, 216, 218, 229, 230, 236, 240, 241, 273, 278, 285, 288, 289, 293, 294, 312, 321, 337, 351, 370, 376, 387, 403, 406, 414, 418, 419, 425, 434, 435, 441, 442, 450, 457, 458, 460, 461, 495, 1172, 1189, 1191, 1192, 1193, 1194, 1160, 503, 506, 161, 288, 425, 540, 543, 658, 946, 442, 939, 288, 839, 502, 774, 1171, 1078, 827, 282, 75, 162, 863, 827, 827, 169, 1078, 774, 1171, 1171, 503, 617, 1171, 73, 1078, 273, 174, 502, 742, 515, 39, 933, 1171, 273, 515, 465, 192, 1169, 515, 774, 774, 742, 438, 594, 288, 169, 461, 851, 515, 273, 49, 530, 273, 428, 691, 273, 951, 91, 304, 668, 89, 132, 307, 411, 39, 742, 169, 192, 515, 454, 192, 1169, 192, 645, 1169, 1169, 454, 774, 810, 1174, 423, 1174, 1174, 1171, 169, 1171, 666, 41, 55, 111, 211, 269, 366, 155, 64, 349, 506, 561, 155, 502, 155, 515, 155, 506, 561, 465, 155, 506, 561, 155, 506, 192, 773, 192, 774, 192, 774, 155, 506, 561, 1181, 155, 561, 155, 155, 561, 155, 561, 155, 89, 132, 307, 411, 169, 155, 561, 155, 169, 192, 155, 506, 561, 155, 506, 561, 155, 288, 1139, 406, 503, 956, 787, 993, 787, 993, 787, 993, 787, 993, 787, 993, 993, 993, 787, 993, 502, 618, 619, 1186, 618, 30, 114, 138, 171, 176, 226, 227, 306, 325, 358, 364, 371, 406, 409, 428, 795, 1168, 1181, 792, 1171, 198, 506, 975, 1177, 1078, 1143, 39, 1181, 810, 503, 1169, 1171, 234, 1186, 169, 169, 795, 1181, 363, 1186, 543, 288, 502, 1163, 500, 997, 1144, 1101, 1158, 502, 502, 169, 502, 502, 997, 502, 502, 502, 502, 502, 502, 502, 1101, 502, 502, 502, 502, 502, 502, 502, 502, 280, 608, 502, 502, 502, 502, 502, 502, 502, 502, 1101, 1101, 1101, 997, 1101, 1139, 1162, 12, 1177, 12, 502, 1177, 3, 10, 13, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 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, 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, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 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, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 165, 166, 167, 168, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 184, 185, 186, 188, 189, 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, 217, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 254, 255, 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, 286, 287, 289, 290, 291, 292, 293, 295, 296, 297, 298, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 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, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 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, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 459, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 480, 481, 482, 490, 491, 492, 493, 494, 495, 496, 497, 498, 1134, 1136, 1138, 1190, 1195, 462, 1117, 300, 1101, 218, 506, 1008, 12, 502, 1177, 1162, 1008, 123, 194, 552, 506, 72, 12, 120, 543, 39, 3, 12, 120, 239, 541, 658, 1097, 1177, 1177, 94, 137, 1113, 103, 12, 120, 537, 538, 540, 658, 120, 537, 234, 1169, 95, 348, 778, 503, 948, 36, 46, 53, 79, 193, 198, 220, 235, 290, 293, 382, 503, 506, 1003, 1170, 39, 502, 1139, 1176, 1095, 1095, 38, 1079, 416, 416, 1176, 1176, 500, 500, 1176, 418, 418, 418, 502, 418, 1176, 1172, 504, 1083, 174, 1044, 15, 492, 1160, 1185, 503, 506, 951, 999, 999, 1017, 1018, 1101, 999, 166, 264, 1028, 224, 269, 331, 380, 440, 30, 1023, 1101, 493, 494, 1024, 1025, 1101, 1103, 1037, 1038, 1022, 1021, 1019, 1020, 169, 1040, 283, 1042, 1019, 1037, 1058, 964, 1169, 1058, 39, 1186, 377, 1139, 69, 418, 418, 364, 198, 209, 294, 297, 379, 450, 495, 830, 831, 832, 834, 836, 838, 1078, 1187, 418, 453, 418, 364, 418, 418, 364, 236, 418, 80, 418, 409, 533, 304, 919, 921, 492, 923, 169, 180, 198, 353, 805, 806, 73, 92, 151, 171, 321, 435, 614, 615, 92, 120, 273, 418, 92, 418, 120, 273, 364, 92, 133, 143, 304, 343, 739, 364, 674, 29, 67, 138, 176, 290, 325, 358, 421, 428, 769, 770, 1171, 155, 343, 377, 556, 288, 658, 369, 231, 418, 1186, 418, 278, 658, 124, 219, 364, 375, 420, 535, 774, 349, 377, 843, 856, 128, 503, 825, 830, 418, 441, 409, 1169, 81, 151, 192, 601, 614, 1186, 81, 92, 879, 309, 288, 360, 362, 423, 92, 879, 33, 346, 360, 362, 423, 360, 1169, 170, 204, 283, 774, 502, 418, 418, 191, 502, 565, 24, 245, 409, 438, 463, 565, 92, 506, 128, 5, 5, 304, 198, 155, 343, 377, 556, 882, 442, 442, 270, 1078, 418, 364, 502, 861, 1171, 1169, 418, 418, 364, 856, 128, 107, 406, 407, 891, 892, 1056, 1169, 1186, 892, 418, 418, 742, 892, 114, 377, 547, 418, 517, 547, 418, 418, 364, 856, 128, 1169, 418, 418, 1169, 1080, 658, 60, 657, 658, 658, 112, 250, 254, 60, 418, 515, 258, 364, 515, 269, 656, 418, 418, 278, 1177, 684, 774, 418, 418, 364, 393, 328, 1177, 328, 418, 328, 418, 328, 742, 742, 409, 1055, 309, 309, 92, 418, 879, 364, 418, 418, 565, 565, 774, 774, 774, 774, 1169, 48, 447, 48, 48, 418, 48, 418, 447, 364, 502, 506, 547, 441, 700, 1180, 418, 517, 547, 1169, 418, 879, 364, 304, 343, 331, 344, 373, 539, 911, 1140, 1140, 1141, 503, 15, 16, 506, 1015, 1016, 501, 507, 1169, 944, 1171, 1169, 220, 1078, 220, 288, 220, 220, 658, 774, 774, 220, 220, 220, 1078, 220, 220, 220, 288, 418, 174, 418, 579, 428, 502, 39, 155, 774, 743, 744, 1189, 919, 1078, 288, 155, 671, 1171, 273, 309, 502, 516, 756, 442, 335, 454, 1169, 30, 892, 742, 516, 155, 1180, 99, 180, 531, 593, 651, 714, 788, 808, 915, 155, 1177, 692, 693, 155, 288, 1177, 1180, 242, 774, 774, 774, 774, 147, 330, 502, 700, 273, 516, 1169, 273, 653, 655, 273, 39, 283, 309, 502, 617, 617, 192, 648, 1169, 169, 192, 811, 1171, 502, 746, 837, 1171, 502, 828, 828, 39, 1078, 28, 51, 213, 715, 226, 461, 463, 995, 366, 840, 839, 1078, 1171, 502, 776, 1078, 826, 827, 1181, 1180, 155, 561, 155, 442, 155, 442, 862, 863, 561, 826, 1181, 826, 1171, 1171, 1078, 776, 1181, 700, 155, 773, 774, 1170, 1171, 1171, 774, 503, 192, 1169, 956, 993, 993, 993, 993, 993, 993, 618, 503, 506, 503, 177, 326, 359, 372, 407, 1170, 773, 113, 374, 826, 1170, 282, 793, 794, 1186, 826, 826, 1170, 1168, 1168, 1170, 773, 418, 461, 801, 150, 236, 697, 698, 24, 153, 360, 380, 976, 1055, 277, 977, 503, 506, 959, 418, 1169, 875, 876, 791, 790, 791, 174, 181, 802, 1186, 29, 81, 138, 176, 227, 325, 358, 428, 769, 770, 1139, 501, 1139, 1144, 1145, 457, 1155, 1156, 1101, 1139, 502, 1176, 1176, 3, 12, 115, 190, 253, 256, 368, 479, 1146, 1147, 1177, 1139, 1139, 1139, 1176, 1176, 1101, 1101, 861, 1101, 1140, 1142, 1149, 360, 493, 494, 502, 1102, 1103, 1136, 1150, 503, 1139, 1101, 1142, 1151, 1101, 58, 174, 230, 419, 1101, 1139, 1152, 135, 273, 997, 1139, 258, 1103, 1101, 1111, 1112, 1113, 258, 1101, 1113, 503, 506, 1099, 1176, 1099, 1078, 1101, 1101, 1101, 1101, 1189, 416, 44, 403, 1164, 774, 1101, 502, 997, 1153, 135, 137, 161, 265, 266, 267, 268, 272, 273, 278, 425, 436, 1148, 1101, 502, 1101, 418, 53, 193, 198, 235, 382, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 30, 37, 387, 1133, 183, 164, 1118, 360, 502, 1130, 179, 239, 406, 410, 412, 438, 1009, 1169, 1167, 1044, 1140, 1044, 1169, 420, 502, 1177, 506, 503, 191, 191, 561, 954, 943, 947, 1101, 503, 249, 273, 1004, 1139, 503, 503, 500, 481, 481, 503, 503, 1176, 501, 1176, 503, 190, 253, 1100, 253, 1100, 1100, 1176, 256, 503, 1172, 229, 361, 478, 502, 997, 1045, 1046, 1047, 1055, 1061, 1071, 1104, 1106, 1107, 1186, 458, 1066, 1182, 954, 952, 506, 40, 130, 442, 820, 360, 361, 493, 494, 1025, 1027, 1103, 380, 224, 289, 506, 5, 1026, 1176, 1026, 360, 361, 1027, 1168, 277, 384, 978, 1038, 1020, 442, 973, 120, 302, 502, 965, 996, 39, 442, 1186, 502, 980, 981, 982, 1186, 503, 1180, 1171, 1171, 297, 60, 1187, 503, 832, 834, 831, 834, 1187, 294, 503, 506, 775, 1180, 1171, 1171, 1180, 1171, 1171, 1180, 453, 1171, 1171, 120, 540, 658, 355, 441, 790, 364, 180, 790, 502, 1171, 442, 812, 224, 224, 442, 608, 639, 192, 1171, 278, 1180, 1171, 1171, 1101, 278, 1171, 1171, 33, 346, 418, 418, 1171, 418, 675, 839, 502, 1078, 827, 75, 162, 863, 827, 827, 169, 1078, 774, 1171, 186, 269, 304, 343, 446, 678, 679, 680, 1055, 418, 879, 364, 278, 124, 219, 1180, 1171, 288, 1171, 288, 503, 506, 1179, 1181, 1171, 343, 556, 192, 601, 273, 1078, 1171, 1176, 1186, 1169, 1171, 234, 1171, 30, 441, 1171, 192, 1171, 192, 1186, 362, 423, 362, 423, 234, 1171, 30, 441, 1171, 234, 360, 1169, 26, 140, 377, 685, 686, 687, 688, 1189, 1180, 1171, 120, 175, 274, 442, 564, 567, 568, 1189, 252, 1171, 77, 286, 1171, 559, 288, 418, 409, 1169, 418, 879, 364, 128, 1171, 1171, 506, 503, 506, 1180, 1171, 885, 886, 1189, 288, 343, 418, 708, 1180, 1171, 1171, 288, 1055, 198, 506, 617, 617, 1162, 1180, 1171, 1171, 1179, 3, 91, 145, 204, 311, 433, 441, 444, 518, 1180, 1171, 1171, 288, 343, 1180, 1171, 343, 377, 556, 655, 658, 774, 1171, 658, 774, 1171, 658, 1180, 1171, 377, 1180, 1171, 1171, 1178, 1170, 1170, 1180, 851, 1171, 1170, 1171, 343, 377, 556, 557, 1169, 1169, 1171, 1171, 1171, 1171, 1180, 1171, 26, 32, 140, 304, 343, 377, 304, 343, 377, 742, 343, 377, 343, 377, 343, 882, 1070, 1186, 192, 752, 1186, 192, 1186, 1180, 1171, 1171, 1177, 1171, 885, 26, 576, 374, 1179, 343, 377, 556, 1171, 1171, 1171, 418, 418, 86, 432, 331, 506, 1015, 1015, 1015, 1101, 1101, 450, 1141, 503, 1101, 1161, 939, 278, 780, 1177, 39, 780, 138, 774, 780, 780, 220, 442, 442, 780, 780, 780, 226, 780, 780, 780, 774, 327, 580, 580, 202, 406, 713, 1101, 1078, 774, 503, 506, 492, 605, 1189, 1171, 64, 174, 364, 453, 672, 679, 680, 155, 283, 235, 595, 597, 599, 601, 611, 614, 27, 198, 355, 404, 518, 519, 169, 1171, 454, 1169, 39, 709, 407, 851, 529, 1186, 530, 594, 823, 1171, 171, 774, 502, 641, 642, 1106, 1186, 328, 1177, 742, 742, 742, 742, 502, 742, 1068, 1069, 1070, 374, 155, 502, 155, 155, 154, 996, 774, 283, 595, 1186, 442, 634, 461, 566, 273, 39, 617, 1177, 273, 288, 3, 747, 748, 742, 28, 503, 829, 830, 835, 39, 226, 352, 421, 460, 841, 842, 843, 844, 841, 288, 226, 283, 125, 212, 426, 440, 716, 717, 1171, 189, 189, 169, 561, 39, 515, 170, 927, 928, 561, 561, 773, 774, 1171, 774, 1171, 561, 561, 561, 561, 226, 561, 374, 169, 561, 561, 288, 561, 273, 503, 619, 198, 198, 198, 198, 198, 465, 1170, 658, 659, 506, 504, 183, 796, 797, 1180, 27, 802, 418, 502, 174, 153, 380, 153, 380, 360, 440, 255, 1078, 1180, 461, 646, 810, 810, 174, 288, 796, 60, 561, 839, 774, 1078, 827, 282, 827, 827, 1078, 774, 1171, 503, 501, 501, 506, 1101, 142, 1156, 1157, 39, 503, 1101, 503, 503, 174, 503, 174, 503, 503, 503, 503, 503, 503, 506, 506, 503, 312, 503, 503, 502, 1102, 1102, 1139, 13, 17, 18, 19, 198, 220, 290, 490, 491, 492, 493, 494, 495, 496, 497, 498, 1136, 1102, 503, 503, 169, 174, 382, 503, 503, 39, 1152, 1139, 1152, 1152, 174, 503, 135, 503, 1189, 310, 1115, 39, 503, 506, 1101, 1189, 506, 1101, 1163, 1101, 503, 481, 1102, 1102, 148, 1139, 174, 135, 137, 161, 272, 278, 425, 436, 1148, 272, 148, 861, 1101, 403, 1164, 1101, 1153, 1101, 418, 502, 997, 502, 502, 299, 1122, 502, 1139, 410, 412, 410, 412, 1169, 1010, 1010, 1010, 1066, 1015, 1066, 912, 1176, 1099, 538, 954, 249, 502, 503, 1176, 1098, 1098, 501, 501, 503, 997, 1061, 1071, 174, 502, 997, 1046, 1047, 39, 1048, 1049, 1186, 506, 100, 175, 208, 223, 233, 261, 354, 1052, 1049, 39, 1048, 1051, 1186, 1049, 484, 1065, 1162, 1101, 183, 1029, 1018, 290, 1134, 1137, 483, 821, 5, 1176, 1027, 289, 461, 440, 1024, 244, 1045, 458, 1067, 448, 405, 441, 966, 967, 968, 1186, 288, 969, 1186, 1046, 982, 983, 506, 1044, 492, 1163, 838, 775, 834, 834, 60, 836, 497, 1181, 1181, 288, 1170, 291, 288, 1101, 615, 1171, 502, 502, 502, 639, 202, 502, 732, 155, 561, 418, 1180, 1171, 543, 1078, 774, 774, 1078, 662, 1171, 186, 446, 418, 418, 662, 678, 684, 343, 377, 556, 1171, 1171, 1171, 210, 278, 158, 830, 303, 377, 418, 273, 155, 87, 603, 604, 732, 377, 26, 140, 347, 348, 377, 560, 569, 570, 684, 880, 369, 155, 561, 155, 561, 1171, 1171, 1171, 1171, 369, 369, 234, 687, 688, 687, 503, 506, 689, 1177, 202, 503, 506, 492, 504, 1171, 158, 1180, 1171, 343, 377, 556, 1171, 1171, 1171, 288, 304, 343, 377, 26, 140, 304, 343, 377, 1078, 270, 1078, 503, 506, 492, 1169, 418, 1181, 442, 705, 158, 617, 364, 891, 458, 624, 624, 617, 236, 311, 12, 278, 1177, 311, 1181, 439, 158, 418, 418, 364, 393, 851, 851, 851, 303, 377, 92, 418, 879, 364, 120, 169, 571, 165, 810, 418, 418, 246, 246, 246, 418, 418, 364, 418, 418, 364, 418, 364, 418, 364, 418, 128, 561, 1078, 273, 1177, 377, 880, 155, 561, 418, 418, 503, 1171, 418, 879, 364, 418, 1180, 1171, 503, 503, 503, 1141, 501, 1078, 774, 220, 780, 1171, 1171, 1171, 220, 394, 395, 581, 1177, 581, 186, 503, 503, 174, 742, 744, 270, 290, 493, 494, 658, 745, 834, 1137, 1177, 1194, 73, 79, 92, 120, 122, 178, 206, 273, 278, 321, 337, 435, 606, 607, 610, 154, 457, 515, 543, 1171, 543, 292, 682, 1169, 1169, 1169, 503, 506, 1181, 183, 355, 1181, 1176, 428, 1169, 617, 3, 169, 710, 851, 49, 530, 406, 691, 113, 951, 1101, 174, 506, 1170, 566, 749, 750, 1177, 503, 506, 1171, 169, 618, 1169, 645, 1169, 1171, 646, 502, 596, 1169, 503, 1171, 461, 463, 635, 565, 39, 155, 996, 634, 418, 155, 1055, 492, 503, 506, 716, 503, 506, 120, 492, 845, 1177, 543, 406, 833, 834, 169, 850, 52, 350, 846, 847, 844, 847, 125, 212, 370, 440, 902, 1171, 283, 288, 293, 186, 996, 1078, 502, 503, 506, 561, 442, 561, 442, 561, 1171, 1171, 700, 774, 155, 364, 364, 364, 364, 364, 1170, 506, 794, 1186, 1180, 461, 506, 798, 291, 1057, 374, 153, 153, 113, 269, 1169, 1171, 1181, 795, 802, 1180, 220, 220, 220, 220, 658, 220, 220, 220, 220, 220, 1144, 414, 1101, 146, 1078, 503, 1101, 1101, 1148, 1101, 1101, 503, 1139, 506, 1078, 1102, 1102, 1102, 1102, 135, 137, 273, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1101, 1101, 1101, 1078, 503, 503, 503, 1139, 503, 506, 60, 1103, 1116, 503, 1189, 1112, 318, 399, 1114, 503, 506, 453, 1108, 39, 503, 12, 1177, 1101, 36, 36, 1101, 503, 1101, 174, 272, 1101, 503, 148, 1102, 1102, 148, 148, 1101, 1101, 1016, 458, 502, 1123, 1186, 503, 1139, 506, 1010, 1010, 1010, 1010, 1169, 1169, 1169, 1029, 503, 1029, 503, 959, 501, 1049, 1051, 1049, 502, 473, 1103, 503, 1186, 502, 1046, 223, 298, 1053, 1046, 1053, 223, 1052, 1053, 223, 408, 1059, 502, 1186, 502, 295, 60, 187, 1036, 502, 821, 166, 228, 289, 461, 415, 103, 1101, 351, 971, 447, 503, 506, 1163, 90, 971, 288, 503, 506, 981, 1067, 1101, 503, 497, 838, 428, 177, 359, 365, 372, 407, 429, 807, 169, 807, 503, 502, 622, 623, 815, 1106, 1186, 618, 618, 732, 1171, 618, 122, 206, 269, 273, 733, 1171, 1171, 39, 442, 442, 226, 775, 1180, 1171, 418, 879, 364, 418, 210, 1171, 60, 409, 1171, 155, 601, 120, 1186, 682, 393, 178, 157, 191, 273, 565, 515, 113, 178, 273, 393, 396, 565, 603, 656, 377, 570, 428, 1171, 1186, 369, 686, 1171, 568, 745, 1189, 1171, 303, 377, 418, 879, 364, 418, 158, 418, 418, 364, 176, 290, 396, 754, 755, 176, 290, 762, 763, 418, 418, 364, 503, 503, 503, 886, 270, 658, 834, 887, 1137, 1177, 1194, 343, 1171, 502, 461, 706, 1171, 624, 107, 1186, 502, 624, 1178, 12, 1177, 1177, 1177, 1171, 1171, 1171, 1171, 1178, 60, 409, 1171, 1171, 1171, 1171, 448, 1171, 1171, 169, 169, 345, 169, 192, 1180, 1171, 1171, 1180, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 288, 79, 562, 155, 28, 51, 428, 1186, 1171, 1177, 684, 1171, 1171, 1171, 1171, 1015, 503, 220, 780, 220, 220, 220, 780, 515, 442, 586, 587, 662, 732, 461, 463, 774, 502, 774, 1171, 1102, 33, 60, 609, 123, 194, 122, 278, 224, 1169, 608, 176, 325, 728, 735, 736, 1186, 671, 502, 309, 502, 596, 612, 205, 629, 599, 1181, 1181, 1078, 502, 566, 30, 125, 212, 370, 440, 711, 418, 707, 1180, 192, 1169, 693, 465, 288, 503, 1045, 642, 851, 503, 506, 1070, 682, 700, 503, 653, 39, 283, 309, 502, 961, 598, 600, 602, 614, 1186, 309, 630, 631, 596, 629, 565, 286, 288, 636, 996, 648, 646, 566, 1177, 1171, 812, 745, 3, 748, 288, 835, 1101, 1101, 506, 502, 841, 428, 506, 45, 1101, 418, 502, 618, 1169, 717, 662, 503, 927, 928, 1171, 1171, 561, 374, 561, 1170, 1170, 1170, 1170, 1170, 658, 180, 797, 802, 503, 1171, 113, 802, 174, 561, 278, 783, 1177, 783, 783, 783, 220, 783, 783, 783, 783, 783, 1101, 503, 503, 503, 174, 503, 1101, 174, 135, 137, 174, 169, 148, 503, 468, 1110, 1139, 336, 447, 60, 1116, 1103, 459, 459, 503, 1101, 269, 1101, 506, 1109, 1080, 1101, 1101, 1101, 1101, 36, 36, 1101, 1101, 148, 503, 503, 1101, 1124, 1186, 503, 1101, 1169, 1169, 1169, 1169, 1036, 12, 1177, 1036, 1177, 503, 1062, 1063, 1106, 502, 1115, 1048, 502, 1170, 1046, 288, 442, 1054, 1046, 223, 1046, 1174, 1069, 502, 1069, 1186, 1011, 1101, 460, 1119, 861, 415, 283, 1166, 996, 302, 996, 968, 288, 502, 970, 1101, 492, 982, 971, 428, 503, 418, 790, 174, 732, 1101, 503, 506, 461, 79, 814, 818, 814, 503, 503, 503, 123, 194, 204, 122, 444, 561, 1078, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1181, 1171, 601, 605, 1178, 609, 192, 192, 278, 658, 609, 278, 1178, 1186, 1078, 561, 561, 492, 60, 409, 1171, 1171, 1171, 1171, 1171, 1180, 1171, 1171, 1176, 1176, 1078, 506, 1176, 1176, 506, 1180, 1171, 1171, 418, 1101, 73, 1101, 1181, 1171, 418, 418, 174, 198, 461, 1170, 1170, 774, 1170, 155, 158, 774, 1177, 1177, 1078, 561, 561, 418, 503, 220, 780, 780, 780, 780, 502, 582, 583, 515, 127, 176, 209, 176, 1101, 273, 607, 120, 39, 851, 617, 851, 1174, 36, 154, 198, 683, 687, 283, 595, 571, 152, 200, 502, 374, 442, 618, 39, 1181, 705, 530, 273, 502, 171, 1171, 641, 1177, 374, 566, 154, 996, 774, 283, 595, 646, 503, 506, 461, 605, 60, 634, 571, 630, 85, 409, 637, 461, 916, 39, 637, 174, 288, 502, 1169, 1177, 832, 852, 853, 1187, 847, 1078, 169, 848, 1169, 174, 418, 872, 338, 718, 207, 663, 561, 503, 561, 561, 1171, 291, 218, 561, 796, 783, 1101, 503, 1102, 174, 1101, 1101, 1101, 502, 503, 506, 503, 1116, 503, 447, 390, 503, 503, 1101, 1101, 1101, 503, 309, 1125, 503, 1119, 1119, 367, 1005, 503, 506, 39, 1064, 120, 1076, 1077, 1102, 82, 1170, 503, 1101, 502, 1046, 1054, 502, 503, 1069, 503, 102, 184, 357, 502, 1030, 1031, 1032, 1033, 1034, 1035, 1101, 1120, 1121, 1186, 1015, 503, 993, 966, 92, 813, 815, 136, 457, 985, 986, 1101, 796, 288, 796, 503, 199, 620, 623, 290, 861, 774, 774, 819, 337, 620, 620, 503, 418, 377, 977, 39, 155, 155, 562, 745, 1181, 1171, 418, 502, 827, 861, 863, 755, 502, 502, 763, 1171, 503, 502, 503, 377, 977, 1171, 1171, 502, 502, 502, 461, 484, 936, 345, 936, 936, 169, 1171, 562, 1171, 780, 588, 589, 1189, 55, 101, 126, 144, 148, 170, 173, 188, 278, 329, 584, 582, 1177, 827, 39, 868, 868, 503, 191, 502, 442, 638, 247, 621, 638, 502, 736, 728, 502, 503, 506, 1169, 503, 374, 30, 84, 87, 93, 121, 178, 191, 203, 393, 396, 613, 613, 1168, 1171, 1171, 503, 996, 706, 155, 113, 682, 174, 1171, 39, 1171, 646, 596, 1169, 503, 600, 292, 1186, 635, 630, 634, 125, 140, 318, 1171, 65, 73, 239, 996, 774, 1055, 813, 174, 731, 834, 503, 506, 428, 146, 512, 846, 849, 1066, 388, 388, 503, 263, 287, 719, 720, 721, 169, 724, 662, 269, 446, 664, 665, 1171, 802, 169, 1102, 1111, 1139, 269, 480, 60, 1015, 59, 129, 112, 1006, 1065, 1062, 502, 1102, 503, 506, 39, 1072, 1073, 1186, 503, 1170, 1139, 503, 502, 378, 502, 503, 506, 506, 39, 1020, 447, 1171, 503, 506, 274, 440, 248, 273, 986, 798, 807, 561, 814, 502, 851, 502, 565, 820, 1169, 851, 851, 1171, 409, 191, 442, 563, 377, 977, 1171, 1143, 169, 758, 758, 1143, 1143, 1101, 409, 1139, 1139, 572, 573, 1188, 773, 774, 773, 774, 1170, 561, 503, 506, 495, 502, 540, 590, 658, 933, 1177, 933, 273, 278, 329, 933, 933, 1066, 868, 43, 196, 269, 616, 502, 654, 1101, 202, 175, 308, 383, 288, 625, 626, 627, 503, 1174, 6, 737, 687, 596, 629, 1171, 503, 682, 162, 757, 566, 916, 1169, 465, 1045, 682, 996, 961, 630, 596, 629, 605, 502, 636, 634, 635, 361, 361, 73, 291, 73, 646, 812, 503, 1169, 732, 841, 852, 1078, 505, 136, 461, 461, 720, 360, 406, 722, 141, 725, 457, 727, 446, 662, 682, 561, 1101, 503, 503, 447, 1139, 185, 330, 361, 1126, 166, 166, 618, 1069, 506, 1077, 1189, 503, 506, 169, 1078, 503, 503, 1139, 502, 1139, 1031, 1121, 1123, 1038, 996, 1066, 815, 377, 36, 987, 248, 174, 618, 638, 861, 820, 821, 617, 638, 638, 1171, 654, 1101, 409, 503, 294, 367, 334, 759, 759, 503, 503, 503, 1171, 503, 503, 503, 506, 1176, 936, 589, 540, 591, 592, 1177, 1177, 278, 618, 495, 618, 1177, 1177, 204, 655, 503, 409, 125, 440, 288, 627, 288, 626, 502, 503, 506, 571, 374, 682, 774, 39, 39, 502, 1171, 916, 646, 634, 571, 630, 502, 632, 633, 1106, 1186, 637, 635, 636, 291, 291, 502, 199, 816, 169, 847, 31, 213, 903, 176, 176, 933, 360, 392, 726, 502, 154, 53, 103, 431, 1101, 1127, 1128, 1127, 1127, 503, 60, 60, 377, 503, 1103, 1073, 295, 3, 120, 273, 278, 1074, 1075, 39, 1050, 344, 1060, 503, 1030, 503, 980, 1101, 414, 987, 796, 503, 624, 503, 821, 621, 732, 732, 977, 1171, 827, 60, 977, 418, 572, 774, 503, 506, 618, 503, 397, 1171, 64, 269, 349, 377, 628, 628, 503, 6, 374, 1171, 754, 996, 682, 635, 630, 634, 1101, 503, 506, 818, 818, 636, 637, 813, 502, 608, 141, 274, 502, 898, 900, 904, 963, 972, 979, 996, 1007, 827, 827, 723, 1186, 1101, 728, 1128, 360, 168, 316, 168, 316, 151, 1129, 1129, 1129, 618, 618, 1186, 1115, 1102, 1102, 278, 1075, 1186, 502, 503, 1066, 125, 136, 440, 988, 989, 414, 561, 732, 625, 977, 774, 502, 592, 25, 120, 278, 1171, 682, 916, 636, 634, 635, 503, 633, 774, 819, 819, 637, 503, 815, 817, 566, 360, 899, 900, 901, 997, 998, 506, 506, 503, 1174, 36, 103, 183, 269, 415, 377, 377, 418, 442, 82, 1101, 274, 377, 136, 212, 990, 732, 1139, 617, 617, 682, 637, 635, 636, 818, 816, 503, 506, 637, 727, 503, 505, 418, 174, 502, 1128, 360, 296, 1186, 1186, 1174, 1175, 1186, 1072, 503, 980, 274, 120, 302, 448, 502, 991, 503, 636, 637, 819, 608, 815, 1066, 154, 901, 388, 388, 5, 729, 730, 1176, 1177, 1189, 502, 120, 503, 448, 966, 502, 967, 637, 566, 728, 461, 461, 503, 506, 1140, 1175, 447, 1139, 503, 637, 1174, 176, 176, 730, 1015, 442, 991, 503, 302, 991, 1066, 502, 827, 827, 503, 1186, 966, 729, 447, 503, 991 }; #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 863 "gram.y" { pg_yyget_extra(yyscanner)->parsetree = (yyvsp[(1) - (1)].list); (void) yynerrs; /* suppress compiler warning */ ;} break; case 3: #line 868 "gram.y" { pg_yyget_extra(yyscanner)->parsetree = list_make1((yyvsp[(2) - (2)].typnam)); ;} break; case 4: #line 872 "gram.y" { pg_yyget_extra(yyscanner)->parsetree = list_make1(makeRawStmt((yyvsp[(2) - (2)].node), 0)); ;} break; case 5: #line 877 "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 885 "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 893 "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 913 "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 925 "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 1068 "gram.y" { (yyval.node) = NULL; ;} break; case 137: #line 1078 "gram.y" { CallStmt *n = makeNode(CallStmt); n->funccall = castNode(FuncCall, (yyvsp[(2) - (2)].node)); (yyval.node) = (Node *) n; ;} break; case 138: #line 1094 "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 142: #line 1116 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 143: #line 1117 "gram.y" { (yyval.list) = NIL; ;} break; case 144: #line 1121 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 145: #line 1122 "gram.y" { (yyval.list) = NIL; ;} break; case 146: #line 1127 "gram.y" { (yyval.defelt) = makeDefElem("password", (Node *) makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 147: #line 1132 "gram.y" { (yyval.defelt) = makeDefElem("password", (Node *)makeParamRef((yyvsp[(2) - (2)].ival), (yylsp[(2) - (2)])), (yylsp[(1) - (2)])); ;} break; case 148: #line 1137 "gram.y" { (yyval.defelt) = makeDefElem("password", NULL, (yylsp[(1) - (2)])); ;} break; case 149: #line 1141 "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 150: #line 1151 "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 151: #line 1161 "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 152: #line 1169 "gram.y" { (yyval.defelt) = makeDefElem("inherit", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); ;} break; case 153: #line 1173 "gram.y" { (yyval.defelt) = makeDefElem("connectionlimit", (Node *) makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); ;} break; case 154: #line 1177 "gram.y" { (yyval.defelt) = makeDefElem("validUntil", (Node *) makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 155: #line 1182 "gram.y" { (yyval.defelt) = makeDefElem("rolemembers", (Node *) (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 156: #line 1186 "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 157: #line 1233 "gram.y" { (yyval.defelt) = (yyvsp[(1) - (1)].defelt); ;} break; case 158: #line 1236 "gram.y" { (yyval.defelt) = makeDefElem("sysid", (Node *) makeInteger((yyvsp[(2) - (2)].ival)), (yylsp[(1) - (2)])); ;} break; case 159: #line 1240 "gram.y" { (yyval.defelt) = makeDefElem("adminmembers", (Node *) (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 160: #line 1244 "gram.y" { (yyval.defelt) = makeDefElem("rolemembers", (Node *) (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 161: #line 1248 "gram.y" { (yyval.defelt) = makeDefElem("addroleto", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 162: #line 1252 "gram.y" { (yyval.defelt) = makeDefElem("addroleto", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 163: #line 1266 "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 164: #line 1285 "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 165: #line 1294 "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 166: #line 1305 "gram.y" { (yyval.str) = NULL; ;} break; case 167: #line 1306 "gram.y" { (yyval.str) = (yyvsp[(3) - (3)].str); ;} break; case 168: #line 1311 "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 169: #line 1320 "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 170: #line 1329 "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 171: #line 1338 "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 172: #line 1360 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = false; n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *) n; ;} break; case 173: #line 1368 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = true; n->roles = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 174: #line 1376 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = false; n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *) n; ;} break; case 175: #line 1384 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->roles = (yyvsp[(5) - (5)].list); n->missing_ok = true; (yyval.node) = (Node *) n; ;} break; case 176: #line 1392 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = false; n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *) n; ;} break; case 177: #line 1400 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = true; n->roles = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 178: #line 1418 "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 179: #line 1437 "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 180: #line 1448 "gram.y" { (yyval.ival) = +1; ;} break; case 181: #line 1449 "gram.y" { (yyval.ival) = -1; ;} break; case 182: #line 1461 "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 183: #line 1472 "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 184: #line 1483 "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 185: #line 1499 "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 186: #line 1517 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 187: #line 1518 "gram.y" { (yyval.str) = NULL; ;} break; case 188: #line 1523 "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 189: #line 1529 "gram.y" { (yyval.list) = NIL; ;} break; case 196: #line 1557 "gram.y" { VariableSetStmt *n = (yyvsp[(2) - (2)].vsetstmt); n->is_local = false; (yyval.node) = (Node *) n; ;} break; case 197: #line 1564 "gram.y" { VariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); n->is_local = true; (yyval.node) = (Node *) n; ;} break; case 198: #line 1571 "gram.y" { VariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); n->is_local = false; (yyval.node) = (Node *) n; ;} break; case 199: #line 1581 "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 200: #line 1590 "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 202: #line 1603 "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 203: #line 1612 "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 204: #line 1621 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; n->name = (yyvsp[(1) - (3)].str); (yyval.vsetstmt) = n; ;} break; case 205: #line 1629 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; n->name = (yyvsp[(1) - (3)].str); (yyval.vsetstmt) = n; ;} break; case 206: #line 1639 "gram.y" {(yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt);;} break; case 207: #line 1641 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_CURRENT; n->name = (yyvsp[(1) - (3)].str); (yyval.vsetstmt) = n; ;} break; case 208: #line 1650 "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 209: #line 1662 "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 210: #line 1670 "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 211: #line 1679 "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 212: #line 1687 "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 213: #line 1699 "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 214: #line 1708 "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 215: #line 1716 "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 216: #line 1725 "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 217: #line 1733 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; n->name = "session_authorization"; (yyval.vsetstmt) = n; ;} break; case 218: #line 1741 "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 219: #line 1751 "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 220: #line 1761 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 221: #line 1763 "gram.y" { (yyval.str) = psprintf("%s.%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)); ;} break; case 222: #line 1766 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 223: #line 1767 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 224: #line 1771 "gram.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 225: #line 1773 "gram.y" { (yyval.node) = makeAConst((yyvsp[(1) - (1)].node), (yylsp[(1) - (1)])); ;} break; case 226: #line 1775 "gram.y" { (yyval.node) = makeParamRef((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); ;} break; case 227: #line 1778 "gram.y" { (yyval.str) = "read uncommitted"; ;} break; case 228: #line 1779 "gram.y" { (yyval.str) = "read committed"; ;} break; case 229: #line 1780 "gram.y" { (yyval.str) = "repeatable read"; ;} break; case 230: #line 1781 "gram.y" { (yyval.str) = "serializable"; ;} break; case 231: #line 1785 "gram.y" { (yyval.str) = "true"; ;} break; case 232: #line 1786 "gram.y" { (yyval.str) = "false"; ;} break; case 233: #line 1787 "gram.y" { (yyval.str) = "on"; ;} break; case 234: #line 1793 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 235: #line 1806 "gram.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 236: #line 1810 "gram.y" { (yyval.node) = makeParamRef((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); ;} break; case 237: #line 1814 "gram.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 238: #line 1818 "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 239: #line 1835 "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 240: #line 1842 "gram.y" { (yyval.node) = makeAConst((yyvsp[(1) - (1)].node), (yylsp[(1) - (1)])); ;} break; case 241: #line 1843 "gram.y" { (yyval.node) = NULL; ;} break; case 242: #line 1844 "gram.y" { (yyval.node) = NULL; ;} break; case 243: #line 1848 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 244: #line 1849 "gram.y" { (yyval.str) = NULL; ;} break; case 245: #line 1850 "gram.y" { (yyval.str) = NULL; ;} break; case 246: #line 1854 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 247: #line 1855 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 248: #line 1859 "gram.y" { (yyval.node) = (Node *) (yyvsp[(2) - (2)].vsetstmt); ;} break; case 249: #line 1863 "gram.y" { (yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt); ;} break; case 250: #line 1865 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = "timezone"; (yyval.vsetstmt) = n; ;} break; case 251: #line 1873 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = "transaction_isolation"; (yyval.vsetstmt) = n; ;} break; case 252: #line 1881 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = "session_authorization"; (yyval.vsetstmt) = n; ;} break; case 253: #line 1892 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = (yyvsp[(1) - (1)].str); (yyval.vsetstmt) = n; ;} break; case 254: #line 1900 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET_ALL; (yyval.vsetstmt) = n; ;} break; case 255: #line 1910 "gram.y" { (yyval.vsetstmt) = (yyvsp[(2) - (2)].vsetstmt); ;} break; case 256: #line 1911 "gram.y" { (yyval.vsetstmt) = (VariableSetStmt *) (yyvsp[(1) - (1)].node); ;} break; case 257: #line 1916 "gram.y" { (yyval.vsetstmt) = (yyvsp[(2) - (2)].vsetstmt); ;} break; case 258: #line 1917 "gram.y" { (yyval.vsetstmt) = (VariableSetStmt *) (yyvsp[(1) - (1)].node); ;} break; case 259: #line 1923 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; ;} break; case 260: #line 1930 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "timezone"; (yyval.node) = (Node *) n; ;} break; case 261: #line 1937 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "transaction_isolation"; (yyval.node) = (Node *) n; ;} break; case 262: #line 1944 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "session_authorization"; (yyval.node) = (Node *) n; ;} break; case 263: #line 1951 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "all"; (yyval.node) = (Node *) n; ;} break; case 264: #line 1962 "gram.y" { ConstraintsSetStmt *n = makeNode(ConstraintsSetStmt); n->constraints = (yyvsp[(3) - (4)].list); n->deferred = (yyvsp[(4) - (4)].boolean); (yyval.node) = (Node *) n; ;} break; case 265: #line 1972 "gram.y" { (yyval.list) = NIL; ;} break; case 266: #line 1973 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 267: #line 1977 "gram.y" { (yyval.boolean) = true; ;} break; case 268: #line 1978 "gram.y" { (yyval.boolean) = false; ;} break; case 269: #line 1987 "gram.y" { CheckPointStmt *n = makeNode(CheckPointStmt); (yyval.node) = (Node *) n; ;} break; case 270: #line 2003 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_ALL; (yyval.node) = (Node *) n; ;} break; case 271: #line 2010 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_TEMP; (yyval.node) = (Node *) n; ;} break; case 272: #line 2017 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_TEMP; (yyval.node) = (Node *) n; ;} break; case 273: #line 2024 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_PLANS; (yyval.node) = (Node *) n; ;} break; case 274: #line 2031 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_SEQUENCES; (yyval.node) = (Node *) n; ;} break; case 275: #line 2051 "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 276: #line 2061 "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 277: #line 2071 "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 278: #line 2081 "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 279: #line 2091 "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 280: #line 2103 "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 281: #line 2115 "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 282: #line 2125 "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 283: #line 2135 "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 284: #line 2145 "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 285: #line 2157 "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 286: #line 2169 "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 287: #line 2179 "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 288: #line 2189 "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 289: #line 2199 "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 290: #line 2209 "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 291: #line 2219 "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 292: #line 2229 "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 293: #line 2241 "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 294: #line 2253 "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 295: #line 2263 "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 296: #line 2275 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 297: #line 2276 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 298: #line 2282 "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 299: #line 2296 "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 300: #line 2309 "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 301: #line 2325 "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 302: #line 2342 "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 303: #line 2352 "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 304: #line 2362 "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 305: #line 2372 "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 306: #line 2382 "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 307: #line 2392 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropNotNull; n->name = (yyvsp[(3) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 308: #line 2401 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetNotNull; n->name = (yyvsp[(3) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 309: #line 2410 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropExpression; n->name = (yyvsp[(3) - (5)].str); (yyval.node) = (Node *) n; ;} break; case 310: #line 2419 "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 311: #line 2429 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetStatistics; n->name = (yyvsp[(3) - (6)].str); n->def = (Node *) makeInteger((yyvsp[(6) - (6)].ival)); (yyval.node) = (Node *) n; ;} break; case 312: #line 2439 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); if ((yyvsp[(3) - (6)].ival) <= 0 || (yyvsp[(3) - (6)].ival) > PG_INT16_MAX) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("column number must be in range from 1 to %d", PG_INT16_MAX), parser_errposition((yylsp[(3) - (6)])))); n->subtype = AT_SetStatistics; n->num = (int16) (yyvsp[(3) - (6)].ival); n->def = (Node *) makeInteger((yyvsp[(6) - (6)].ival)); (yyval.node) = (Node *) n; ;} break; case 313: #line 2455 "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 314: #line 2465 "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 315: #line 2475 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetStorage; n->name = (yyvsp[(3) - (6)].str); n->def = (Node *) makeString((yyvsp[(6) - (6)].str)); (yyval.node) = (Node *) n; ;} break; case 316: #line 2485 "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 317: #line 2495 "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 318: #line 2512 "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 319: #line 2522 "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 320: #line 2532 "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 321: #line 2542 "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 322: #line 2553 "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 323: #line 2567 "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 324: #line 2583 "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 325: #line 2593 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddConstraint; n->def = (yyvsp[(2) - (2)].node); (yyval.node) = (Node *) n; ;} break; case 326: #line 2602 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); Constraint *c = makeNode(Constraint); n->subtype = AT_AlterConstraint; n->def = (Node *) c; c->contype = CONSTR_FOREIGN; /* others not supported, yet */ c->conname = (yyvsp[(3) - (4)].str); processCASbits((yyvsp[(4) - (4)].ival), (yylsp[(4) - (4)]), "ALTER CONSTRAINT statement", &c->deferrable, &c->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *) n; ;} break; case 327: #line 2618 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ValidateConstraint; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 328: #line 2627 "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 329: #line 2638 "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 330: #line 2649 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropOids; (yyval.node) = (Node *) n; ;} break; case 331: #line 2657 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ClusterOn; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 332: #line 2666 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropCluster; n->name = NULL; (yyval.node) = (Node *) n; ;} break; case 333: #line 2675 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetLogged; (yyval.node) = (Node *) n; ;} break; case 334: #line 2683 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetUnLogged; (yyval.node) = (Node *) n; ;} break; case 335: #line 2691 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrig; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 336: #line 2700 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableAlwaysTrig; n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *) n; ;} break; case 337: #line 2709 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableReplicaTrig; n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *) n; ;} break; case 338: #line 2718 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrigAll; (yyval.node) = (Node *) n; ;} break; case 339: #line 2726 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrigUser; (yyval.node) = (Node *) n; ;} break; case 340: #line 2734 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrig; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 341: #line 2743 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrigAll; (yyval.node) = (Node *) n; ;} break; case 342: #line 2751 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrigUser; (yyval.node) = (Node *) n; ;} break; case 343: #line 2759 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableRule; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 344: #line 2768 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableAlwaysRule; n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *) n; ;} break; case 345: #line 2777 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableReplicaRule; n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *) n; ;} break; case 346: #line 2786 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableRule; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 347: #line 2795 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddInherit; n->def = (Node *) (yyvsp[(2) - (2)].range); (yyval.node) = (Node *) n; ;} break; case 348: #line 2804 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropInherit; n->def = (Node *) (yyvsp[(3) - (3)].range); (yyval.node) = (Node *) n; ;} break; case 349: #line 2813 "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 350: #line 2824 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropOf; (yyval.node) = (Node *) n; ;} break; case 351: #line 2832 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ChangeOwner; n->newowner = (yyvsp[(3) - (3)].rolespec); (yyval.node) = (Node *) n; ;} break; case 352: #line 2841 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetAccessMethod; n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *) n; ;} break; case 353: #line 2850 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetTableSpace; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 354: #line 2859 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetRelOptions; n->def = (Node *) (yyvsp[(2) - (2)].list); (yyval.node) = (Node *) n; ;} break; case 355: #line 2868 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ResetRelOptions; n->def = (Node *) (yyvsp[(2) - (2)].list); (yyval.node) = (Node *) n; ;} break; case 356: #line 2877 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ReplicaIdentity; n->def = (yyvsp[(3) - (3)].node); (yyval.node) = (Node *) n; ;} break; case 357: #line 2886 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableRowSecurity; (yyval.node) = (Node *) n; ;} break; case 358: #line 2894 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableRowSecurity; (yyval.node) = (Node *) n; ;} break; case 359: #line 2902 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ForceRowSecurity; (yyval.node) = (Node *) n; ;} break; case 360: #line 2910 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_NoForceRowSecurity; (yyval.node) = (Node *) n; ;} break; case 361: #line 2917 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_GenericOptions; n->def = (Node *) (yyvsp[(1) - (1)].list); (yyval.node) = (Node *) n; ;} break; case 362: #line 2927 "gram.y" { (yyval.node) = (yyvsp[(3) - (3)].node); ;} break; case 363: #line 2928 "gram.y" { (yyval.node) = NULL; ;} break; case 364: #line 2932 "gram.y" { (yyval.dbehavior) = DROP_CASCADE; ;} break; case 365: #line 2933 "gram.y" { (yyval.dbehavior) = DROP_RESTRICT; ;} break; case 366: #line 2934 "gram.y" { (yyval.dbehavior) = DROP_RESTRICT; /* default */ ;} break; case 367: #line 2939 "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 368: #line 2947 "gram.y" { (yyval.node) = NULL; ;} break; case 369: #line 2951 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 370: #line 2952 "gram.y" { (yyval.node) = NULL; ;} break; case 371: #line 2957 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_NOTHING; n->name = NULL; (yyval.node) = (Node *) n; ;} break; case 372: #line 2965 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_FULL; n->name = NULL; (yyval.node) = (Node *) n; ;} break; case 373: #line 2973 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_DEFAULT; n->name = NULL; (yyval.node) = (Node *) n; ;} break; case 374: #line 2981 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_INDEX; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 375: #line 2991 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 376: #line 2994 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 377: #line 2995 "gram.y" { (yyval.list) = NIL; ;} break; case 378: #line 2999 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 379: #line 3000 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 380: #line 3006 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 381: #line 3010 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); ;} break; case 382: #line 3014 "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 383: #line 3019 "gram.y" { (yyval.defelt) = makeDefElemExtended((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str), NULL, DEFELEM_UNSPEC, (yylsp[(1) - (3)])); ;} break; case 384: #line 3026 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 385: #line 3028 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 386: #line 3033 "gram.y" { (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[(1) - (1)])); ;} break; case 387: #line 3037 "gram.y" { (yyval.defelt) = makeDefElem("restart", (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 388: #line 3041 "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 389: #line 3052 "gram.y" { (yyval.defelt) = makeDefElem("generated", (Node *) makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); ;} break; case 390: #line 3060 "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 391: #line 3113 "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 392: #line 3126 "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 393: #line 3140 "gram.y" { PartitionBoundSpec *n = makeNode(PartitionBoundSpec); n->is_default = true; n->location = (yylsp[(1) - (1)]); (yyval.partboundspec) = n; ;} break; case 394: #line 3152 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (Node *) makeInteger((yyvsp[(2) - (2)].ival)), (yylsp[(1) - (2)])); ;} break; case 395: #line 3159 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 396: #line 3163 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 397: #line 3177 "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 398: #line 3189 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 399: #line 3190 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 400: #line 3196 "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 401: #line 3206 "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 402: #line 3217 "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 403: #line 3228 "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 404: #line 3255 "gram.y" { ClosePortalStmt *n = makeNode(ClosePortalStmt); n->portalname = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; ;} break; case 405: #line 3262 "gram.y" { ClosePortalStmt *n = makeNode(ClosePortalStmt); n->portalname = NULL; (yyval.node) = (Node *) n; ;} break; case 406: #line 3298 "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 407: #line 3332 "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 408: #line 3354 "gram.y" { (yyval.boolean) = true; ;} break; case 409: #line 3355 "gram.y" { (yyval.boolean) = false; ;} break; case 410: #line 3359 "gram.y" { (yyval.boolean) = true; ;} break; case 411: #line 3360 "gram.y" { (yyval.boolean) = false; ;} break; case 412: #line 3369 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 413: #line 3370 "gram.y" { (yyval.str) = NULL; ;} break; case 414: #line 3371 "gram.y" { (yyval.str) = NULL; ;} break; case 415: #line 3374 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 416: #line 3375 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 417: #line 3380 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 418: #line 3381 "gram.y" { (yyval.list) = NIL; ;} break; case 419: #line 3386 "gram.y" { (yyval.defelt) = makeDefElem("format", (Node *) makeString("binary"), (yylsp[(1) - (1)])); ;} break; case 420: #line 3390 "gram.y" { (yyval.defelt) = makeDefElem("freeze", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); ;} break; case 421: #line 3394 "gram.y" { (yyval.defelt) = makeDefElem("delimiter", (Node *) makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 422: #line 3398 "gram.y" { (yyval.defelt) = makeDefElem("null", (Node *) makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 423: #line 3402 "gram.y" { (yyval.defelt) = makeDefElem("format", (Node *) makeString("csv"), (yylsp[(1) - (1)])); ;} break; case 424: #line 3406 "gram.y" { (yyval.defelt) = makeDefElem("header", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); ;} break; case 425: #line 3410 "gram.y" { (yyval.defelt) = makeDefElem("quote", (Node *) makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 426: #line 3414 "gram.y" { (yyval.defelt) = makeDefElem("escape", (Node *) makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 427: #line 3418 "gram.y" { (yyval.defelt) = makeDefElem("force_quote", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 428: #line 3422 "gram.y" { (yyval.defelt) = makeDefElem("force_quote", (Node *) makeNode(A_Star), (yylsp[(1) - (3)])); ;} break; case 429: #line 3426 "gram.y" { (yyval.defelt) = makeDefElem("force_not_null", (Node *) (yyvsp[(4) - (4)].list), (yylsp[(1) - (4)])); ;} break; case 430: #line 3430 "gram.y" { (yyval.defelt) = makeDefElem("force_null", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 431: #line 3434 "gram.y" { (yyval.defelt) = makeDefElem("encoding", (Node *) makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 432: #line 3443 "gram.y" { (yyval.defelt) = makeDefElem("format", (Node *) makeString("binary"), (yylsp[(1) - (1)])); ;} break; case 433: #line 3446 "gram.y" { (yyval.defelt) = NULL; ;} break; case 434: #line 3451 "gram.y" { (yyval.defelt) = makeDefElem("delimiter", (Node *) makeString((yyvsp[(3) - (3)].str)), (yylsp[(2) - (3)])); ;} break; case 435: #line 3454 "gram.y" { (yyval.defelt) = NULL; ;} break; case 438: #line 3465 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 439: #line 3469 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 440: #line 3476 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 441: #line 3482 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 442: #line 3483 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].node); ;} break; case 443: #line 3484 "gram.y" { (yyval.node) = (Node *) makeNode(A_Star); ;} break; case 444: #line 3485 "gram.y" { (yyval.node) = (Node *) (yyvsp[(2) - (3)].list); ;} break; case 445: #line 3486 "gram.y" { (yyval.node) = NULL; ;} break; case 446: #line 3491 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 447: #line 3495 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 448: #line 3502 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 449: #line 3516 "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 450: #line 3536 "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 451: #line 3556 "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 452: #line 3577 "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 453: #line 3598 "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 454: #line 3619 "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 455: #line 3650 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 456: #line 3651 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 457: #line 3652 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 458: #line 3653 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 459: #line 3655 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), parser_errposition((yylsp[(1) - (2)])))); (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 460: #line 3662 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), parser_errposition((yylsp[(1) - (2)])))); (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 461: #line 3668 "gram.y" { (yyval.ival) = RELPERSISTENCE_UNLOGGED; ;} break; case 462: #line 3669 "gram.y" { (yyval.ival) = RELPERSISTENCE_PERMANENT; ;} break; case 463: #line 3673 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 464: #line 3674 "gram.y" { (yyval.list) = NIL; ;} break; case 465: #line 3678 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 466: #line 3679 "gram.y" { (yyval.list) = NIL; ;} break; case 467: #line 3684 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 468: #line 3688 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 469: #line 3695 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 470: #line 3699 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 471: #line 3705 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 472: #line 3706 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 473: #line 3707 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 474: #line 3711 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 475: #line 3712 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 476: #line 3716 "gram.y" { ColumnDef *n = makeNode(ColumnDef); n->colname = (yyvsp[(1) - (5)].str); n->typeName = (yyvsp[(2) - (5)].typnam); n->compression = (yyvsp[(3) - (5)].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[(4) - (5)].list); SplitColQualList((yyvsp[(5) - (5)].list), &n->constraints, &n->collClause, yyscanner); n->location = (yylsp[(1) - (5)]); (yyval.node) = (Node *) n; ;} break; case 477: #line 3739 "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 478: #line 3758 "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 479: #line 3779 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 480: #line 3780 "gram.y" { (yyval.str) = pstrdup("default"); ;} break; case 481: #line 3784 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 482: #line 3785 "gram.y" { (yyval.str) = NULL; ;} break; case 483: #line 3789 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 484: #line 3790 "gram.y" { (yyval.list) = NIL; ;} break; case 485: #line 3795 "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 486: #line 3802 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 487: #line 3803 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 488: #line 3805 "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 489: #line 3837 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_NOTNULL; n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *) n; ;} break; case 490: #line 3845 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_NULL; n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *) n; ;} break; case 491: #line 3853 "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 492: #line 3866 "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 493: #line 3878 "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 494: #line 3891 "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 495: #line 3901 "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 496: #line 3911 "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 497: #line 3935 "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 498: #line 3954 "gram.y" { (yyval.boolean) = true; ;} break; case 499: #line 3955 "gram.y" { (yyval.boolean) = false; ;} break; case 500: #line 3956 "gram.y" { (yyval.boolean) = true; ;} break; case 501: #line 3960 "gram.y" { (yyval.ival) = ATTRIBUTE_IDENTITY_ALWAYS; ;} break; case 502: #line 3961 "gram.y" { (yyval.ival) = ATTRIBUTE_IDENTITY_BY_DEFAULT; ;} break; case 503: #line 3981 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_DEFERRABLE; n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *) n; ;} break; case 504: #line 3989 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_NOT_DEFERRABLE; n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *) n; ;} break; case 505: #line 3997 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_DEFERRED; n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *) n; ;} break; case 506: #line 4005 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_IMMEDIATE; n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *) n; ;} break; case 507: #line 4017 "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 508: #line 4028 "gram.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); ;} break; case 509: #line 4029 "gram.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) & ~(yyvsp[(3) - (3)].ival); ;} break; case 510: #line 4030 "gram.y" { (yyval.ival) = 0; ;} break; case 511: #line 4034 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_COMMENTS; ;} break; case 512: #line 4035 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_COMPRESSION; ;} break; case 513: #line 4036 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_CONSTRAINTS; ;} break; case 514: #line 4037 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_DEFAULTS; ;} break; case 515: #line 4038 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_IDENTITY; ;} break; case 516: #line 4039 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_GENERATED; ;} break; case 517: #line 4040 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_INDEXES; ;} break; case 518: #line 4041 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_STATISTICS; ;} break; case 519: #line 4042 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_STORAGE; ;} break; case 520: #line 4043 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_ALL; ;} break; case 521: #line 4053 "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 522: #line 4060 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 523: #line 4065 "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 524: #line 4080 "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 525: #line 4097 "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 526: #line 4114 "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 527: #line 4130 "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 528: #line 4148 "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 529: #line 4167 "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 530: #line 4188 "gram.y" { (yyval.boolean) = true; ;} break; case 531: #line 4189 "gram.y" { (yyval.boolean) = false; ;} break; case 532: #line 4193 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 533: #line 4194 "gram.y" { (yyval.list) = NIL; ;} break; case 534: #line 4198 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 535: #line 4199 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 536: #line 4203 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 537: #line 4208 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 538: #line 4209 "gram.y" { (yyval.list) = NIL; ;} break; case 539: #line 4213 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_FULL; ;} break; case 540: #line 4217 "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 541: #line 4225 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_SIMPLE; ;} break; case 542: #line 4229 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_SIMPLE; ;} break; case 543: #line 4235 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; case 544: #line 4237 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; case 545: #line 4241 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (3)].ielem), (yyvsp[(3) - (3)].list)); ;} break; case 546: #line 4246 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (6)].ielem), (yyvsp[(5) - (6)].list)); ;} break; case 547: #line 4252 "gram.y" { (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; case 548: #line 4253 "gram.y" { (yyval.node) = NULL; ;} break; case 549: #line 4258 "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 550: #line 4268 "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 551: #line 4278 "gram.y" { KeyActions *n = palloc(sizeof(KeyActions)); n->updateAction = (yyvsp[(1) - (2)].keyaction); n->deleteAction = (yyvsp[(2) - (2)].keyaction); (yyval.keyactions) = n; ;} break; case 552: #line 4286 "gram.y" { KeyActions *n = palloc(sizeof(KeyActions)); n->updateAction = (yyvsp[(2) - (2)].keyaction); n->deleteAction = (yyvsp[(1) - (2)].keyaction); (yyval.keyactions) = n; ;} break; case 553: #line 4294 "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 554: #line 4308 "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 555: #line 4320 "gram.y" { (yyval.keyaction) = (yyvsp[(3) - (3)].keyaction); ;} break; case 556: #line 4327 "gram.y" { KeyAction *n = palloc(sizeof(KeyAction)); n->action = FKCONSTR_ACTION_NOACTION; n->cols = NIL; (yyval.keyaction) = n; ;} break; case 557: #line 4335 "gram.y" { KeyAction *n = palloc(sizeof(KeyAction)); n->action = FKCONSTR_ACTION_RESTRICT; n->cols = NIL; (yyval.keyaction) = n; ;} break; case 558: #line 4343 "gram.y" { KeyAction *n = palloc(sizeof(KeyAction)); n->action = FKCONSTR_ACTION_CASCADE; n->cols = NIL; (yyval.keyaction) = n; ;} break; case 559: #line 4351 "gram.y" { KeyAction *n = palloc(sizeof(KeyAction)); n->action = FKCONSTR_ACTION_SETNULL; n->cols = (yyvsp[(3) - (3)].list); (yyval.keyaction) = n; ;} break; case 560: #line 4359 "gram.y" { KeyAction *n = palloc(sizeof(KeyAction)); n->action = FKCONSTR_ACTION_SETDEFAULT; n->cols = (yyvsp[(3) - (3)].list); (yyval.keyaction) = n; ;} break; case 561: #line 4368 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 562: #line 4369 "gram.y" { (yyval.list) = NIL; ;} break; case 563: #line 4373 "gram.y" { (yyval.partspec) = (yyvsp[(1) - (1)].partspec); ;} break; case 564: #line 4374 "gram.y" { (yyval.partspec) = NULL; ;} break; case 565: #line 4378 "gram.y" { PartitionSpec *n = makeNode(PartitionSpec); n->strategy = (yyvsp[(3) - (6)].str); n->partParams = (yyvsp[(5) - (6)].list); n->location = (yylsp[(1) - (6)]); (yyval.partspec) = n; ;} break; case 566: #line 4389 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].partelem)); ;} break; case 567: #line 4390 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].partelem)); ;} break; case 568: #line 4394 "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 569: #line 4405 "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 570: #line 4416 "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 571: #line 4429 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 572: #line 4430 "gram.y" { (yyval.str) = NULL; ;} break; case 573: #line 4435 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 574: #line 4436 "gram.y" { (yyval.list) = NIL; ;} break; case 575: #line 4437 "gram.y" { (yyval.list) = NIL; ;} break; case 576: #line 4440 "gram.y" { (yyval.oncommit) = ONCOMMIT_DROP; ;} break; case 577: #line 4441 "gram.y" { (yyval.oncommit) = ONCOMMIT_DELETE_ROWS; ;} break; case 578: #line 4442 "gram.y" { (yyval.oncommit) = ONCOMMIT_PRESERVE_ROWS; ;} break; case 579: #line 4443 "gram.y" { (yyval.oncommit) = ONCOMMIT_NOOP; ;} break; case 580: #line 4446 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 581: #line 4447 "gram.y" { (yyval.str) = NULL; ;} break; case 582: #line 4450 "gram.y" { (yyval.str) = (yyvsp[(4) - (4)].str); ;} break; case 583: #line 4451 "gram.y" { (yyval.str) = NULL; ;} break; case 584: #line 4454 "gram.y" { (yyval.str) = (yyvsp[(3) - (3)].str); ;} break; case 585: #line 4474 "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 586: #line 4487 "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 587: #line 4507 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].selem)); ;} break; case 588: #line 4508 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].selem)); ;} break; case 589: #line 4512 "gram.y" { (yyval.selem) = makeNode(StatsElem); (yyval.selem)->name = (yyvsp[(1) - (1)].str); (yyval.selem)->expr = NULL; ;} break; case 590: #line 4518 "gram.y" { (yyval.selem) = makeNode(StatsElem); (yyval.selem)->name = NULL; (yyval.selem)->expr = (yyvsp[(1) - (1)].node); ;} break; case 591: #line 4524 "gram.y" { (yyval.selem) = makeNode(StatsElem); (yyval.selem)->name = NULL; (yyval.selem)->expr = (yyvsp[(2) - (3)].node); ;} break; case 592: #line 4541 "gram.y" { AlterStatsStmt *n = makeNode(AlterStatsStmt); n->defnames = (yyvsp[(3) - (6)].list); n->missing_ok = false; n->stxstattarget = (yyvsp[(6) - (6)].ival); (yyval.node) = (Node *) n; ;} break; case 593: #line 4550 "gram.y" { AlterStatsStmt *n = makeNode(AlterStatsStmt); n->defnames = (yyvsp[(5) - (8)].list); n->missing_ok = true; n->stxstattarget = (yyvsp[(8) - (8)].ival); (yyval.node) = (Node *) n; ;} break; case 594: #line 4572 "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 595: #line 4586 "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 596: #line 4604 "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 597: #line 4618 "gram.y" { (yyval.boolean) = true; ;} break; case 598: #line 4619 "gram.y" { (yyval.boolean) = false; ;} break; case 599: #line 4620 "gram.y" { (yyval.boolean) = true; ;} break; case 600: #line 4633 "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 601: #line 4647 "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 602: #line 4664 "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 603: #line 4677 "gram.y" { (yyval.ival) = RELPERSISTENCE_UNLOGGED; ;} break; case 604: #line 4678 "gram.y" { (yyval.ival) = RELPERSISTENCE_PERMANENT; ;} break; case 605: #line 4691 "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 606: #line 4712 "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 607: #line 4723 "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 608: #line 4737 "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 609: #line 4746 "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 610: #line 4757 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 611: #line 4758 "gram.y" { (yyval.list) = NIL; ;} break; case 612: #line 4761 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 613: #line 4762 "gram.y" { (yyval.list) = NIL; ;} break; case 614: #line 4765 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 615: #line 4766 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 616: #line 4770 "gram.y" { (yyval.defelt) = makeDefElem("as", (Node *) (yyvsp[(2) - (2)].typnam), (yylsp[(1) - (2)])); ;} break; case 617: #line 4774 "gram.y" { (yyval.defelt) = makeDefElem("cache", (Node *) (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 618: #line 4778 "gram.y" { (yyval.defelt) = makeDefElem("cycle", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); ;} break; case 619: #line 4782 "gram.y" { (yyval.defelt) = makeDefElem("cycle", (Node *) makeBoolean(false), (yylsp[(1) - (2)])); ;} break; case 620: #line 4786 "gram.y" { (yyval.defelt) = makeDefElem("increment", (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 621: #line 4790 "gram.y" { (yyval.defelt) = makeDefElem("maxvalue", (Node *) (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 622: #line 4794 "gram.y" { (yyval.defelt) = makeDefElem("minvalue", (Node *) (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 623: #line 4798 "gram.y" { (yyval.defelt) = makeDefElem("maxvalue", NULL, (yylsp[(1) - (2)])); ;} break; case 624: #line 4802 "gram.y" { (yyval.defelt) = makeDefElem("minvalue", NULL, (yylsp[(1) - (2)])); ;} break; case 625: #line 4806 "gram.y" { (yyval.defelt) = makeDefElem("owned_by", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 626: #line 4810 "gram.y" { /* not documented, only used by pg_dump */ (yyval.defelt) = makeDefElem("sequence_name", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 627: #line 4815 "gram.y" { (yyval.defelt) = makeDefElem("start", (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 628: #line 4819 "gram.y" { (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[(1) - (1)])); ;} break; case 629: #line 4823 "gram.y" { (yyval.defelt) = makeDefElem("restart", (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 632: #line 4833 "gram.y" { (yyval.node) = (Node *) makeFloat((yyvsp[(1) - (1)].str)); ;} break; case 633: #line 4834 "gram.y" { (yyval.node) = (Node *) makeFloat((yyvsp[(2) - (2)].str)); ;} break; case 634: #line 4836 "gram.y" { Float *f = makeFloat((yyvsp[(2) - (2)].str)); doNegateFloat(f); (yyval.node) = (Node *) f; ;} break; case 635: #line 4842 "gram.y" { (yyval.node) = (Node *) makeInteger((yyvsp[(1) - (1)].ival)); ;} break; case 636: #line 4845 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 637: #line 4846 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 638: #line 4859 "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 639: #line 4876 "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 640: #line 4890 "gram.y" { (yyval.boolean) = true; ;} break; case 641: #line 4891 "gram.y" { (yyval.boolean) = false; ;} break; case 642: #line 4899 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 643: #line 4900 "gram.y" { (yyval.list) = lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)); ;} break; case 644: #line 4904 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 645: #line 4905 "gram.y" { (yyval.list) = NIL; ;} break; case 646: #line 4909 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 647: #line 4910 "gram.y" { (yyval.list) = NIL; ;} break; case 648: #line 4914 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 649: #line 4915 "gram.y" { (yyval.list) = NIL; ;} break; case 652: #line 4931 "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 653: #line 4942 "gram.y" { (yyval.rolespec) = (yyvsp[(2) - (2)].rolespec); ;} break; case 654: #line 4943 "gram.y" { (yyval.rolespec) = NULL; ;} break; case 655: #line 4957 "gram.y" { DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); n->tablespacename = (yyvsp[(3) - (3)].str); n->missing_ok = false; (yyval.node) = (Node *) n; ;} break; case 656: #line 4965 "gram.y" { DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); n->tablespacename = (yyvsp[(5) - (5)].str); n->missing_ok = true; (yyval.node) = (Node *) n; ;} break; case 657: #line 4983 "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 658: #line 4992 "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 659: #line 5004 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 660: #line 5006 "gram.y" { (yyval.list) = NIL; ;} break; case 661: #line 5011 "gram.y" { (yyval.defelt) = makeDefElem("schema", (Node *) makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 662: #line 5015 "gram.y" { (yyval.defelt) = makeDefElem("new_version", (Node *) makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 663: #line 5019 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("CREATE EXTENSION ... FROM is no longer supported"), parser_errposition((yylsp[(1) - (2)])))); ;} break; case 664: #line 5026 "gram.y" { (yyval.defelt) = makeDefElem("cascade", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); ;} break; case 665: #line 5038 "gram.y" { AlterExtensionStmt *n = makeNode(AlterExtensionStmt); n->extname = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 666: #line 5049 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 667: #line 5051 "gram.y" { (yyval.list) = NIL; ;} break; case 668: #line 5056 "gram.y" { (yyval.defelt) = makeDefElem("new_version", (Node *) makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 669: #line 5069 "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 670: #line 5079 "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 671: #line 5089 "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 672: #line 5099 "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 673: #line 5109 "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 674: #line 5119 "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 675: #line 5129 "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 676: #line 5139 "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 677: #line 5149 "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 678: #line 5159 "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 679: #line 5169 "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 680: #line 5179 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (9)].str); n->action = (yyvsp[(4) - (9)].ival); n->objtype = OBJECT_TRANSFORM; n->object = (Node *) list_make2((yyvsp[(7) - (9)].typnam), makeString((yyvsp[(9) - (9)].str))); (yyval.node) = (Node *) n; ;} break; case 681: #line 5189 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_TYPE; n->object = (Node *) (yyvsp[(6) - (6)].typnam); (yyval.node) = (Node *) n; ;} break; case 682: #line 5208 "gram.y" { CreateFdwStmt *n = makeNode(CreateFdwStmt); n->fdwname = (yyvsp[(5) - (7)].str); n->func_options = (yyvsp[(6) - (7)].list); n->options = (yyvsp[(7) - (7)].list); (yyval.node) = (Node *) n; ;} break; case 683: #line 5219 "gram.y" { (yyval.defelt) = makeDefElem("handler", (Node *) (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 684: #line 5220 "gram.y" { (yyval.defelt) = makeDefElem("handler", NULL, (yylsp[(1) - (2)])); ;} break; case 685: #line 5221 "gram.y" { (yyval.defelt) = makeDefElem("validator", (Node *) (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 686: #line 5222 "gram.y" { (yyval.defelt) = makeDefElem("validator", NULL, (yylsp[(1) - (2)])); ;} break; case 687: #line 5226 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 688: #line 5227 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 689: #line 5231 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 690: #line 5232 "gram.y" { (yyval.list) = NIL; ;} break; case 691: #line 5243 "gram.y" { AlterFdwStmt *n = makeNode(AlterFdwStmt); n->fdwname = (yyvsp[(5) - (7)].str); n->func_options = (yyvsp[(6) - (7)].list); n->options = (yyvsp[(7) - (7)].list); (yyval.node) = (Node *) n; ;} break; case 692: #line 5252 "gram.y" { AlterFdwStmt *n = makeNode(AlterFdwStmt); n->fdwname = (yyvsp[(5) - (6)].str); n->func_options = (yyvsp[(6) - (6)].list); n->options = NIL; (yyval.node) = (Node *) n; ;} break; case 693: #line 5264 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 694: #line 5265 "gram.y" { (yyval.list) = NIL; ;} break; case 695: #line 5270 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 696: #line 5274 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 697: #line 5281 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 698: #line 5286 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 699: #line 5290 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 700: #line 5297 "gram.y" { (yyval.defelt) = (yyvsp[(1) - (1)].defelt); ;} break; case 701: #line 5301 "gram.y" { (yyval.defelt) = (yyvsp[(2) - (2)].defelt); (yyval.defelt)->defaction = DEFELEM_SET; ;} break; case 702: #line 5306 "gram.y" { (yyval.defelt) = (yyvsp[(2) - (2)].defelt); (yyval.defelt)->defaction = DEFELEM_ADD; ;} break; case 703: #line 5311 "gram.y" { (yyval.defelt) = makeDefElemExtended(NULL, (yyvsp[(2) - (2)].str), NULL, DEFELEM_DROP, (yylsp[(2) - (2)])); ;} break; case 704: #line 5318 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 705: #line 5324 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 706: #line 5329 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 707: #line 5341 "gram.y" { CreateForeignServerStmt *n = makeNode(CreateForeignServerStmt); n->servername = (yyvsp[(3) - (10)].str); n->servertype = (yyvsp[(4) - (10)].str); n->version = (yyvsp[(5) - (10)].str); n->fdwname = (yyvsp[(9) - (10)].str); n->options = (yyvsp[(10) - (10)].list); n->if_not_exists = false; (yyval.node) = (Node *) n; ;} break; case 708: #line 5354 "gram.y" { CreateForeignServerStmt *n = makeNode(CreateForeignServerStmt); n->servername = (yyvsp[(6) - (13)].str); n->servertype = (yyvsp[(7) - (13)].str); n->version = (yyvsp[(8) - (13)].str); n->fdwname = (yyvsp[(12) - (13)].str); n->options = (yyvsp[(13) - (13)].list); n->if_not_exists = true; (yyval.node) = (Node *) n; ;} break; case 709: #line 5368 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 710: #line 5369 "gram.y" { (yyval.str) = NULL; ;} break; case 711: #line 5374 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 712: #line 5375 "gram.y" { (yyval.str) = NULL; ;} break; case 713: #line 5379 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 714: #line 5380 "gram.y" { (yyval.str) = NULL; ;} break; case 715: #line 5391 "gram.y" { AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); n->servername = (yyvsp[(3) - (5)].str); n->version = (yyvsp[(4) - (5)].str); n->options = (yyvsp[(5) - (5)].list); n->has_version = true; (yyval.node) = (Node *) n; ;} break; case 716: #line 5401 "gram.y" { AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); n->servername = (yyvsp[(3) - (4)].str); n->version = (yyvsp[(4) - (4)].str); n->has_version = true; (yyval.node) = (Node *) n; ;} break; case 717: #line 5410 "gram.y" { AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); n->servername = (yyvsp[(3) - (4)].str); n->options = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *) n; ;} break; case 718: #line 5430 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); (yyvsp[(4) - (11)].range)->relpersistence = RELPERSISTENCE_PERMANENT; n->base.relation = (yyvsp[(4) - (11)].range); n->base.tableElts = (yyvsp[(6) - (11)].list); n->base.inhRelations = (yyvsp[(8) - (11)].list); n->base.ofTypename = NULL; n->base.constraints = NIL; n->base.options = NIL; n->base.oncommit = ONCOMMIT_NOOP; n->base.tablespacename = NULL; n->base.if_not_exists = false; /* FDW-specific data */ n->servername = (yyvsp[(10) - (11)].str); n->options = (yyvsp[(11) - (11)].list); (yyval.node) = (Node *) n; ;} break; case 719: #line 5451 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); (yyvsp[(7) - (14)].range)->relpersistence = RELPERSISTENCE_PERMANENT; n->base.relation = (yyvsp[(7) - (14)].range); n->base.tableElts = (yyvsp[(9) - (14)].list); n->base.inhRelations = (yyvsp[(11) - (14)].list); n->base.ofTypename = NULL; n->base.constraints = NIL; n->base.options = NIL; n->base.oncommit = ONCOMMIT_NOOP; n->base.tablespacename = NULL; n->base.if_not_exists = true; /* FDW-specific data */ n->servername = (yyvsp[(13) - (14)].str); n->options = (yyvsp[(14) - (14)].list); (yyval.node) = (Node *) n; ;} break; case 720: #line 5472 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); (yyvsp[(4) - (12)].range)->relpersistence = RELPERSISTENCE_PERMANENT; n->base.relation = (yyvsp[(4) - (12)].range); n->base.inhRelations = list_make1((yyvsp[(7) - (12)].range)); n->base.tableElts = (yyvsp[(8) - (12)].list); n->base.partbound = (yyvsp[(9) - (12)].partboundspec); n->base.ofTypename = NULL; n->base.constraints = NIL; n->base.options = NIL; n->base.oncommit = ONCOMMIT_NOOP; n->base.tablespacename = NULL; n->base.if_not_exists = false; /* FDW-specific data */ n->servername = (yyvsp[(11) - (12)].str); n->options = (yyvsp[(12) - (12)].list); (yyval.node) = (Node *) n; ;} break; case 721: #line 5494 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); (yyvsp[(7) - (15)].range)->relpersistence = RELPERSISTENCE_PERMANENT; n->base.relation = (yyvsp[(7) - (15)].range); n->base.inhRelations = list_make1((yyvsp[(10) - (15)].range)); n->base.tableElts = (yyvsp[(11) - (15)].list); n->base.partbound = (yyvsp[(12) - (15)].partboundspec); n->base.ofTypename = NULL; n->base.constraints = NIL; n->base.options = NIL; n->base.oncommit = ONCOMMIT_NOOP; n->base.tablespacename = NULL; n->base.if_not_exists = true; /* FDW-specific data */ n->servername = (yyvsp[(14) - (15)].str); n->options = (yyvsp[(15) - (15)].list); (yyval.node) = (Node *) n; ;} break; case 722: #line 5527 "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 723: #line 5541 "gram.y" { (yyval.ival) = FDW_IMPORT_SCHEMA_LIMIT_TO; ;} break; case 724: #line 5542 "gram.y" { (yyval.ival) = FDW_IMPORT_SCHEMA_EXCEPT; ;} break; case 725: #line 5547 "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 726: #line 5555 "gram.y" { ImportQual *n = (ImportQual *) palloc(sizeof(ImportQual)); n->type = FDW_IMPORT_SCHEMA_ALL; n->table_names = NIL; (yyval.importqual) = n; ;} break; case 727: #line 5571 "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 728: #line 5581 "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 729: #line 5593 "gram.y" { (yyval.rolespec) = (yyvsp[(1) - (1)].rolespec); ;} break; case 730: #line 5594 "gram.y" { (yyval.rolespec) = makeRoleSpec(ROLESPEC_CURRENT_USER, (yylsp[(1) - (1)])); ;} break; case 731: #line 5607 "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 732: #line 5616 "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 733: #line 5634 "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 734: #line 5661 "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 735: #line 5678 "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 736: #line 5691 "gram.y" { (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; case 737: #line 5692 "gram.y" { (yyval.node) = NULL; ;} break; case 738: #line 5696 "gram.y" { (yyval.node) = (yyvsp[(4) - (5)].node); ;} break; case 739: #line 5697 "gram.y" { (yyval.node) = NULL; ;} break; case 740: #line 5701 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 741: #line 5702 "gram.y" { (yyval.list) = list_make1(makeRoleSpec(ROLESPEC_PUBLIC, -1)); ;} break; case 742: #line 5706 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 743: #line 5707 "gram.y" { (yyval.list) = NULL; ;} break; case 744: #line 5712 "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 745: #line 5725 "gram.y" { (yyval.boolean) = true; ;} break; case 746: #line 5729 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 747: #line 5730 "gram.y" { (yyval.str) = "all"; ;} break; case 748: #line 5734 "gram.y" { (yyval.str) = "all"; ;} break; case 749: #line 5735 "gram.y" { (yyval.str) = "select"; ;} break; case 750: #line 5736 "gram.y" { (yyval.str) = "insert"; ;} break; case 751: #line 5737 "gram.y" { (yyval.str) = "update"; ;} break; case 752: #line 5738 "gram.y" { (yyval.str) = "delete"; ;} break; case 753: #line 5749 "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 754: #line 5760 "gram.y" { (yyval.chr) = AMTYPE_INDEX; ;} break; case 755: #line 5761 "gram.y" { (yyval.chr) = AMTYPE_TABLE; ;} break; case 756: #line 5775 "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 757: #line 5799 "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 758: #line 5827 "gram.y" { (yyval.ival) = TRIGGER_TYPE_BEFORE; ;} break; case 759: #line 5828 "gram.y" { (yyval.ival) = TRIGGER_TYPE_AFTER; ;} break; case 760: #line 5829 "gram.y" { (yyval.ival) = TRIGGER_TYPE_INSTEAD; ;} break; case 761: #line 5834 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 762: #line 5836 "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 763: #line 5858 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); ;} break; case 764: #line 5860 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); ;} break; case 765: #line 5862 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); ;} break; case 766: #line 5864 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), (yyvsp[(3) - (3)].list)); ;} break; case 767: #line 5866 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_TRUNCATE), NIL); ;} break; case 768: #line 5870 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 769: #line 5871 "gram.y" { (yyval.list) = NIL; ;} break; case 770: #line 5875 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 771: #line 5876 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 772: #line 5881 "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 773: #line 5892 "gram.y" { (yyval.boolean) = true; ;} break; case 774: #line 5893 "gram.y" { (yyval.boolean) = false; ;} break; case 775: #line 5897 "gram.y" { (yyval.boolean) = true; ;} break; case 776: #line 5906 "gram.y" { (yyval.boolean) = false; ;} break; case 777: #line 5910 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 778: #line 5915 "gram.y" { (yyval.boolean) = (yyvsp[(3) - (3)].boolean); ;} break; case 779: #line 5919 "gram.y" { /* * If ROW/STATEMENT not specified, default to * STATEMENT, per SQL */ (yyval.boolean) = false; ;} break; case 782: #line 5934 "gram.y" { (yyval.boolean) = true; ;} break; case 783: #line 5935 "gram.y" { (yyval.boolean) = false; ;} break; case 784: #line 5939 "gram.y" { (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; case 785: #line 5940 "gram.y" { (yyval.node) = NULL; ;} break; case 788: #line 5949 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 789: #line 5950 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 790: #line 5951 "gram.y" { (yyval.list) = NIL; ;} break; case 791: #line 5956 "gram.y" { (yyval.node) = (Node *) makeString(psprintf("%d", (yyvsp[(1) - (1)].ival))); ;} break; case 792: #line 5959 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 793: #line 5960 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 794: #line 5961 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 795: #line 5965 "gram.y" { (yyval.range) = (yyvsp[(2) - (2)].range); ;} break; case 796: #line 5966 "gram.y" { (yyval.range) = NULL; ;} break; case 797: #line 5971 "gram.y" { (yyval.ival) = 0; ;} break; case 798: #line 5973 "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 799: #line 5999 "gram.y" { (yyval.ival) = CAS_NOT_DEFERRABLE; ;} break; case 800: #line 6000 "gram.y" { (yyval.ival) = CAS_DEFERRABLE; ;} break; case 801: #line 6001 "gram.y" { (yyval.ival) = CAS_INITIALLY_IMMEDIATE; ;} break; case 802: #line 6002 "gram.y" { (yyval.ival) = CAS_INITIALLY_DEFERRED; ;} break; case 803: #line 6003 "gram.y" { (yyval.ival) = CAS_NOT_VALID; ;} break; case 804: #line 6004 "gram.y" { (yyval.ival) = CAS_NO_INHERIT; ;} break; case 805: #line 6019 "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 806: #line 6031 "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 807: #line 6044 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 808: #line 6046 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 809: #line 6051 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (5)].str), (Node *) (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); ;} break; case 810: #line 6056 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 811: #line 6058 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; case 812: #line 6063 "gram.y" { AlterEventTrigStmt *n = makeNode(AlterEventTrigStmt); n->trigname = (yyvsp[(4) - (5)].str); n->tgenabled = (yyvsp[(5) - (5)].chr); (yyval.node) = (Node *) n; ;} break; case 813: #line 6073 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ON_ORIGIN; ;} break; case 814: #line 6074 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ON_REPLICA; ;} break; case 815: #line 6075 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ALWAYS; ;} break; case 816: #line 6076 "gram.y" { (yyval.chr) = TRIGGER_DISABLED; ;} break; case 817: #line 6088 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("CREATE ASSERTION is not yet implemented"))); (yyval.node) = NULL; ;} break; case 818: #line 6107 "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 819: #line 6119 "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 820: #line 6132 "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 821: #line 6143 "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 822: #line 6154 "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 823: #line 6166 "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 824: #line 6175 "gram.y" { CreateEnumStmt *n = makeNode(CreateEnumStmt); n->typeName = (yyvsp[(3) - (8)].list); n->vals = (yyvsp[(7) - (8)].list); (yyval.node) = (Node *) n; ;} break; case 825: #line 6183 "gram.y" { CreateRangeStmt *n = makeNode(CreateRangeStmt); n->typeName = (yyvsp[(3) - (6)].list); n->params = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *) n; ;} break; case 826: #line 6191 "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 827: #line 6201 "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 828: #line 6211 "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 829: #line 6221 "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 830: #line 6231 "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 831: #line 6241 "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 832: #line 6252 "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 833: #line 6262 "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 834: #line 6274 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 835: #line 6277 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 836: #line 6278 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 837: #line 6282 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 838: #line 6286 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); ;} break; case 839: #line 6292 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].typnam); ;} break; case 840: #line 6293 "gram.y" { (yyval.node) = (Node *) makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} break; case 841: #line 6294 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].list); ;} break; case 842: #line 6295 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].node); ;} break; case 843: #line 6296 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 844: #line 6297 "gram.y" { (yyval.node) = (Node *) makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} break; case 845: #line 6300 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 846: #line 6303 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 847: #line 6304 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 848: #line 6313 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 849: #line 6319 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 850: #line 6320 "gram.y" { (yyval.list) = NIL; ;} break; case 851: #line 6324 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 852: #line 6326 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; case 853: #line 6337 "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 854: #line 6349 "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 855: #line 6361 "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 856: #line 6373 "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 857: #line 6386 "gram.y" { (yyval.boolean) = true; ;} break; case 858: #line 6387 "gram.y" { (yyval.boolean) = false; ;} break; case 859: #line 6405 "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 860: #line 6419 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 861: #line 6420 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 862: #line 6425 "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 863: #line 6439 "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 864: #line 6449 "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 865: #line 6458 "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 866: #line 6468 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_STORAGETYPE; n->storedtype = (yyvsp[(2) - (2)].typnam); (yyval.node) = (Node *) n; ;} break; case 867: #line 6477 "gram.y" { (yyval.boolean) = true; ;} break; case 868: #line 6478 "gram.y" { (yyval.boolean) = false; ;} break; case 869: #line 6481 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 870: #line 6482 "gram.y" { (yyval.list) = NIL; ;} break; case 871: #line 6485 "gram.y" { (yyval.list) = NIL; ;} break; case 872: #line 6486 "gram.y" { (yyval.list) = (yyvsp[(4) - (4)].list); ;} break; case 873: #line 6487 "gram.y" { (yyval.list) = NIL; ;} break; case 874: #line 6491 "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 875: #line 6504 "gram.y" { (yyval.boolean) = false; ;} break; case 876: #line 6510 "gram.y" { CreateOpFamilyStmt *n = makeNode(CreateOpFamilyStmt); n->opfamilyname = (yyvsp[(4) - (6)].list); n->amname = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 877: #line 6521 "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 878: #line 6531 "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 879: #line 6543 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 880: #line 6544 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 881: #line 6549 "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 882: #line 6558 "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 883: #line 6571 "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 884: #line 6582 "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 885: #line 6596 "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 886: #line 6607 "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 887: #line 6630 "gram.y" { DropOwnedStmt *n = makeNode(DropOwnedStmt); n->roles = (yyvsp[(4) - (5)].list); n->behavior = (yyvsp[(5) - (5)].dbehavior); (yyval.node) = (Node *) n; ;} break; case 888: #line 6641 "gram.y" { ReassignOwnedStmt *n = makeNode(ReassignOwnedStmt); n->roles = (yyvsp[(4) - (6)].list); n->newrole = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *) n; ;} break; case 889: #line 6660 "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 890: #line 6671 "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 891: #line 6682 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = (yyvsp[(2) - (6)].objtype); n->missing_ok = true; n->objects = (yyvsp[(5) - (6)].list); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->concurrent = false; (yyval.node) = (Node *) n; ;} break; case 892: #line 6693 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = (yyvsp[(2) - (4)].objtype); n->missing_ok = false; n->objects = (yyvsp[(3) - (4)].list); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->concurrent = false; (yyval.node) = (Node *) n; ;} break; case 893: #line 6704 "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 894: #line 6715 "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 895: #line 6726 "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 896: #line 6737 "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 897: #line 6748 "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 898: #line 6759 "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 899: #line 6770 "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 900: #line 6781 "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 901: #line 6795 "gram.y" { (yyval.objtype) = OBJECT_TABLE; ;} break; case 902: #line 6796 "gram.y" { (yyval.objtype) = OBJECT_SEQUENCE; ;} break; case 903: #line 6797 "gram.y" { (yyval.objtype) = OBJECT_VIEW; ;} break; case 904: #line 6798 "gram.y" { (yyval.objtype) = OBJECT_MATVIEW; ;} break; case 905: #line 6799 "gram.y" { (yyval.objtype) = OBJECT_INDEX; ;} break; case 906: #line 6800 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_TABLE; ;} break; case 907: #line 6801 "gram.y" { (yyval.objtype) = OBJECT_COLLATION; ;} break; case 908: #line 6802 "gram.y" { (yyval.objtype) = OBJECT_CONVERSION; ;} break; case 909: #line 6803 "gram.y" { (yyval.objtype) = OBJECT_STATISTIC_EXT; ;} break; case 910: #line 6804 "gram.y" { (yyval.objtype) = OBJECT_TSPARSER; ;} break; case 911: #line 6805 "gram.y" { (yyval.objtype) = OBJECT_TSDICTIONARY; ;} break; case 912: #line 6806 "gram.y" { (yyval.objtype) = OBJECT_TSTEMPLATE; ;} break; case 913: #line 6807 "gram.y" { (yyval.objtype) = OBJECT_TSCONFIGURATION; ;} break; case 914: #line 6817 "gram.y" { (yyval.objtype) = (yyvsp[(1) - (1)].objtype); ;} break; case 915: #line 6818 "gram.y" { (yyval.objtype) = OBJECT_DATABASE; ;} break; case 916: #line 6819 "gram.y" { (yyval.objtype) = OBJECT_ROLE; ;} break; case 917: #line 6820 "gram.y" { (yyval.objtype) = OBJECT_SUBSCRIPTION; ;} break; case 918: #line 6821 "gram.y" { (yyval.objtype) = OBJECT_TABLESPACE; ;} break; case 919: #line 6825 "gram.y" { (yyval.objtype) = OBJECT_ACCESS_METHOD; ;} break; case 920: #line 6826 "gram.y" { (yyval.objtype) = OBJECT_EVENT_TRIGGER; ;} break; case 921: #line 6827 "gram.y" { (yyval.objtype) = OBJECT_EXTENSION; ;} break; case 922: #line 6828 "gram.y" { (yyval.objtype) = OBJECT_FDW; ;} break; case 923: #line 6829 "gram.y" { (yyval.objtype) = OBJECT_LANGUAGE; ;} break; case 924: #line 6830 "gram.y" { (yyval.objtype) = OBJECT_PUBLICATION; ;} break; case 925: #line 6831 "gram.y" { (yyval.objtype) = OBJECT_SCHEMA; ;} break; case 926: #line 6832 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_SERVER; ;} break; case 927: #line 6837 "gram.y" { (yyval.objtype) = OBJECT_POLICY; ;} break; case 928: #line 6838 "gram.y" { (yyval.objtype) = OBJECT_RULE; ;} break; case 929: #line 6839 "gram.y" { (yyval.objtype) = OBJECT_TRIGGER; ;} break; case 930: #line 6843 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; case 931: #line 6844 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; case 932: #line 6847 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 933: #line 6848 "gram.y" { (yyval.list) = lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)); ;} break; case 934: #line 6852 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(2) - (2)].str))); ;} break; case 935: #line 6854 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; case 936: #line 6858 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].typnam)); ;} break; case 937: #line 6859 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typnam)); ;} break; case 938: #line 6871 "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 939: #line 6882 "gram.y" { (yyval.boolean) = false; ;} break; case 940: #line 6883 "gram.y" { (yyval.boolean) = true; ;} break; case 941: #line 6884 "gram.y" { (yyval.boolean) = false; ;} break; case 942: #line 6895 "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 943: #line 6904 "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 944: #line 6913 "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 945: #line 6922 "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 946: #line 6931 "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 947: #line 6940 "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 948: #line 6949 "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 949: #line 6958 "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 950: #line 6967 "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 951: #line 6976 "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 952: #line 6990 "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 953: #line 6999 "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 954: #line 7008 "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 955: #line 7017 "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 956: #line 7026 "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 957: #line 7035 "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 958: #line 7044 "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 959: #line 7053 "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 960: #line 7064 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 961: #line 7065 "gram.y" { (yyval.str) = NULL; ;} break; case 962: #line 7081 "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 963: #line 7092 "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 964: #line 7103 "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 965: #line 7114 "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 966: #line 7125 "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 967: #line 7136 "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 968: #line 7147 "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 969: #line 7158 "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 970: #line 7169 "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 971: #line 7180 "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 972: #line 7191 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 973: #line 7192 "gram.y" { (yyval.str) = NULL; ;} break; case 974: #line 7195 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 975: #line 7196 "gram.y" { (yyval.str) = NULL; ;} break; case 976: #line 7207 "gram.y" { FetchStmt *n = (FetchStmt *) (yyvsp[(2) - (2)].node); n->ismove = false; (yyval.node) = (Node *) n; ;} break; case 977: #line 7214 "gram.y" { FetchStmt *n = (FetchStmt *) (yyvsp[(2) - (2)].node); n->ismove = true; (yyval.node) = (Node *) n; ;} break; case 978: #line 7223 "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 979: #line 7232 "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 980: #line 7241 "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 981: #line 7250 "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 982: #line 7259 "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 983: #line 7268 "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 984: #line 7277 "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 985: #line 7286 "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 986: #line 7295 "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 987: #line 7304 "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 988: #line 7313 "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 989: #line 7322 "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 990: #line 7331 "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 991: #line 7340 "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 992: #line 7349 "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 993: #line 7358 "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 998: #line 7385 "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 999: #line 7403 "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 1000: #line 7419 "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 1001: #line 7446 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1002: #line 7448 "gram.y" { (yyval.list) = NIL; ;} break; case 1003: #line 7450 "gram.y" { (yyval.list) = NIL; ;} break; case 1004: #line 7452 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = NULL; n->cols = (yyvsp[(3) - (4)].list); (yyval.list) = list_make1(n); ;} break; case 1005: #line 7460 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = NULL; n->cols = (yyvsp[(4) - (5)].list); (yyval.list) = list_make1(n); ;} break; case 1006: #line 7469 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].accesspriv)); ;} break; case 1007: #line 7470 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].accesspriv)); ;} break; case 1008: #line 7474 "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 1009: #line 7482 "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 1010: #line 7490 "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 1011: #line 7498 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = pstrdup("alter system"); n->cols = NIL; (yyval.accesspriv) = n; ;} break; case 1012: #line 7505 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = (yyvsp[(1) - (2)].str); n->cols = (yyvsp[(2) - (2)].list); (yyval.accesspriv) = n; ;} break; case 1013: #line 7516 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 1014: #line 7520 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; case 1015: #line 7527 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 1016: #line 7531 "gram.y" { (yyval.str) = psprintf("%s.%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)); ;} break; case 1017: #line 7542 "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 1018: #line 7551 "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 1019: #line 7560 "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 1020: #line 7569 "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 1021: #line 7578 "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 1022: #line 7587 "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 1023: #line 7596 "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 1024: #line 7605 "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 1025: #line 7614 "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 1026: #line 7623 "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 1027: #line 7632 "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 1028: #line 7641 "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 1029: #line 7650 "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 1030: #line 7658 "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 1031: #line 7667 "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 1032: #line 7676 "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 1033: #line 7685 "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 1034: #line 7694 "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 1035: #line 7703 "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 1036: #line 7712 "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 1037: #line 7721 "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 1038: #line 7733 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].rolespec)); ;} break; case 1039: #line 7734 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].rolespec)); ;} break; case 1040: #line 7738 "gram.y" { (yyval.rolespec) = (yyvsp[(1) - (1)].rolespec); ;} break; case 1041: #line 7739 "gram.y" { (yyval.rolespec) = (yyvsp[(2) - (2)].rolespec); ;} break; case 1042: #line 7744 "gram.y" { (yyval.boolean) = true; ;} break; case 1043: #line 7745 "gram.y" { (yyval.boolean) = false; ;} break; case 1044: #line 7756 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = true; n->granted_roles = (yyvsp[(2) - (6)].list); n->grantee_roles = (yyvsp[(4) - (6)].list); n->admin_opt = (yyvsp[(5) - (6)].boolean); n->grantor = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *) n; ;} break; case 1045: #line 7770 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = false; n->admin_opt = false; n->granted_roles = (yyvsp[(2) - (6)].list); n->grantee_roles = (yyvsp[(4) - (6)].list); n->behavior = (yyvsp[(6) - (6)].dbehavior); (yyval.node) = (Node *) n; ;} break; case 1046: #line 7781 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = false; n->admin_opt = true; n->granted_roles = (yyvsp[(5) - (9)].list); n->grantee_roles = (yyvsp[(7) - (9)].list); n->behavior = (yyvsp[(9) - (9)].dbehavior); (yyval.node) = (Node *) n; ;} break; case 1047: #line 7793 "gram.y" { (yyval.boolean) = true; ;} break; case 1048: #line 7794 "gram.y" { (yyval.boolean) = false; ;} break; case 1049: #line 7797 "gram.y" { (yyval.rolespec) = (yyvsp[(3) - (3)].rolespec); ;} break; case 1050: #line 7798 "gram.y" { (yyval.rolespec) = NULL; ;} break; case 1051: #line 7809 "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 1052: #line 7819 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1053: #line 7820 "gram.y" { (yyval.list) = NIL; ;} break; case 1054: #line 7825 "gram.y" { (yyval.defelt) = makeDefElem("schemas", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 1055: #line 7829 "gram.y" { (yyval.defelt) = makeDefElem("roles", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 1056: #line 7833 "gram.y" { (yyval.defelt) = makeDefElem("roles", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 1057: #line 7845 "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 1058: #line 7859 "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 1059: #line 7874 "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 1060: #line 7890 "gram.y" { (yyval.ival) = OBJECT_TABLE; ;} break; case 1061: #line 7891 "gram.y" { (yyval.ival) = OBJECT_FUNCTION; ;} break; case 1062: #line 7892 "gram.y" { (yyval.ival) = OBJECT_FUNCTION; ;} break; case 1063: #line 7893 "gram.y" { (yyval.ival) = OBJECT_SEQUENCE; ;} break; case 1064: #line 7894 "gram.y" { (yyval.ival) = OBJECT_TYPE; ;} break; case 1065: #line 7895 "gram.y" { (yyval.ival) = OBJECT_SCHEMA; ;} break; case 1066: #line 7910 "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->oldNode = InvalidOid; n->oldCreateSubid = InvalidSubTransactionId; n->oldFirstRelfilenodeSubid = InvalidSubTransactionId; n->primary = false; n->isconstraint = false; n->deferrable = false; n->initdeferred = false; n->transformed = false; n->if_not_exists = false; n->reset_default_tblspc = false; (yyval.node) = (Node *) n; ;} break; case 1067: #line 7942 "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->oldNode = InvalidOid; n->oldCreateSubid = InvalidSubTransactionId; n->oldFirstRelfilenodeSubid = InvalidSubTransactionId; n->primary = false; n->isconstraint = false; n->deferrable = false; n->initdeferred = false; n->transformed = false; n->if_not_exists = true; n->reset_default_tblspc = false; (yyval.node) = (Node *) n; ;} break; case 1068: #line 7974 "gram.y" { (yyval.boolean) = true; ;} break; case 1069: #line 7975 "gram.y" { (yyval.boolean) = false; ;} break; case 1070: #line 7979 "gram.y" { (yyval.boolean) = true; ;} break; case 1071: #line 7980 "gram.y" { (yyval.boolean) = false; ;} break; case 1072: #line 7984 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 1073: #line 7985 "gram.y" { (yyval.str) = NULL; ;} break; case 1074: #line 7989 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 1075: #line 7990 "gram.y" { (yyval.str) = DEFAULT_INDEX_TYPE; ;} break; case 1076: #line 7993 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].ielem)); ;} break; case 1077: #line 7994 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].ielem)); ;} break; case 1078: #line 8000 "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 1079: #line 8012 "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 1080: #line 8031 "gram.y" { (yyval.ielem) = (yyvsp[(2) - (2)].ielem); (yyval.ielem)->name = (yyvsp[(1) - (2)].str); ;} break; case 1081: #line 8036 "gram.y" { (yyval.ielem) = (yyvsp[(2) - (2)].ielem); (yyval.ielem)->expr = (yyvsp[(1) - (2)].node); ;} break; case 1082: #line 8041 "gram.y" { (yyval.ielem) = (yyvsp[(4) - (4)].ielem); (yyval.ielem)->expr = (yyvsp[(2) - (4)].node); ;} break; case 1083: #line 8047 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 1084: #line 8048 "gram.y" { (yyval.list) = NIL; ;} break; case 1085: #line 8051 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].ielem)); ;} break; case 1086: #line 8052 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].ielem)); ;} break; case 1087: #line 8055 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1088: #line 8056 "gram.y" { (yyval.list) = NIL; ;} break; case 1089: #line 8059 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1090: #line 8060 "gram.y" { (yyval.list) = NIL; ;} break; case 1091: #line 8063 "gram.y" { (yyval.ival) = SORTBY_ASC; ;} break; case 1092: #line 8064 "gram.y" { (yyval.ival) = SORTBY_DESC; ;} break; case 1093: #line 8065 "gram.y" { (yyval.ival) = SORTBY_DEFAULT; ;} break; case 1094: #line 8068 "gram.y" { (yyval.ival) = SORTBY_NULLS_FIRST; ;} break; case 1095: #line 8069 "gram.y" { (yyval.ival) = SORTBY_NULLS_LAST; ;} break; case 1096: #line 8070 "gram.y" { (yyval.ival) = SORTBY_NULLS_DEFAULT; ;} break; case 1097: #line 8088 "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 1098: #line 8102 "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 1099: #line 8117 "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 1100: #line 8131 "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 1101: #line 8146 "gram.y" { (yyval.boolean) = true; ;} break; case 1102: #line 8147 "gram.y" { (yyval.boolean) = false; ;} break; case 1103: #line 8150 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1104: #line 8151 "gram.y" { (yyval.list) = NIL; ;} break; case 1105: #line 8155 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); ;} break; case 1106: #line 8156 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); ;} break; case 1107: #line 8160 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); ;} break; case 1108: #line 8162 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); ;} break; case 1109: #line 8167 "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 1110: #line 8181 "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 1111: #line 8189 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = list_make1(makeString((yyvsp[(1) - (1)].str))); n->args_unspecified = true; (yyval.objwithargs) = n; ;} break; case 1112: #line 8197 "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 1113: #line 8212 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1114: #line 8213 "gram.y" { (yyval.list) = NIL; ;} break; case 1115: #line 8217 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); ;} break; case 1116: #line 8219 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); ;} break; case 1117: #line 8234 "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 1118: #line 8244 "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 1119: #line 8254 "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 1120: #line 8264 "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 1121: #line 8274 "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 1122: #line 8286 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_IN; ;} break; case 1123: #line 8287 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_OUT; ;} break; case 1124: #line 8288 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_INOUT; ;} break; case 1125: #line 8289 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_INOUT; ;} break; case 1126: #line 8290 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_VARIADIC; ;} break; case 1128: #line 8301 "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 1129: #line 8315 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1130: #line 8317 "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 1131: #line 8323 "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 1132: #line 8333 "gram.y" { (yyval.fun_param) = (yyvsp[(1) - (1)].fun_param); ;} break; case 1133: #line 8337 "gram.y" { (yyval.fun_param) = (yyvsp[(1) - (3)].fun_param); (yyval.fun_param)->defexpr = (yyvsp[(3) - (3)].node); ;} break; case 1134: #line 8342 "gram.y" { (yyval.fun_param) = (yyvsp[(1) - (3)].fun_param); (yyval.fun_param)->defexpr = (yyvsp[(3) - (3)].node); ;} break; case 1135: #line 8350 "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 1136: #line 8392 "gram.y" { (yyval.list) = list_make2(NIL, makeInteger(-1)); ;} break; case 1137: #line 8396 "gram.y" { (yyval.list) = list_make2((yyvsp[(2) - (3)].list), makeInteger(-1)); ;} break; case 1138: #line 8400 "gram.y" { (yyval.list) = list_make2((yyvsp[(4) - (5)].list), makeInteger(0)); ;} break; case 1139: #line 8404 "gram.y" { /* this is the only case requiring consistency checking */ (yyval.list) = makeOrderedSetArgs((yyvsp[(2) - (6)].list), (yyvsp[(5) - (6)].list), yyscanner); ;} break; case 1140: #line 8411 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); ;} break; case 1141: #line 8412 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); ;} break; case 1142: #line 8417 "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 1143: #line 8428 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); ;} break; case 1144: #line 8430 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); ;} break; case 1146: #line 8435 "gram.y" { (yyval.list) = NIL; ;} break; case 1147: #line 8440 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1148: #line 8441 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1149: #line 8449 "gram.y" { (yyval.defelt) = makeDefElem("strict", (Node *) makeBoolean(false), (yylsp[(1) - (4)])); ;} break; case 1150: #line 8453 "gram.y" { (yyval.defelt) = makeDefElem("strict", (Node *) makeBoolean(true), (yylsp[(1) - (5)])); ;} break; case 1151: #line 8457 "gram.y" { (yyval.defelt) = makeDefElem("strict", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); ;} break; case 1152: #line 8461 "gram.y" { (yyval.defelt) = makeDefElem("volatility", (Node *) makeString("immutable"), (yylsp[(1) - (1)])); ;} break; case 1153: #line 8465 "gram.y" { (yyval.defelt) = makeDefElem("volatility", (Node *) makeString("stable"), (yylsp[(1) - (1)])); ;} break; case 1154: #line 8469 "gram.y" { (yyval.defelt) = makeDefElem("volatility", (Node *) makeString("volatile"), (yylsp[(1) - (1)])); ;} break; case 1155: #line 8473 "gram.y" { (yyval.defelt) = makeDefElem("security", (Node *) makeBoolean(true), (yylsp[(1) - (3)])); ;} break; case 1156: #line 8477 "gram.y" { (yyval.defelt) = makeDefElem("security", (Node *) makeBoolean(false), (yylsp[(1) - (3)])); ;} break; case 1157: #line 8481 "gram.y" { (yyval.defelt) = makeDefElem("security", (Node *) makeBoolean(true), (yylsp[(1) - (2)])); ;} break; case 1158: #line 8485 "gram.y" { (yyval.defelt) = makeDefElem("security", (Node *) makeBoolean(false), (yylsp[(1) - (2)])); ;} break; case 1159: #line 8489 "gram.y" { (yyval.defelt) = makeDefElem("leakproof", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); ;} break; case 1160: #line 8493 "gram.y" { (yyval.defelt) = makeDefElem("leakproof", (Node *) makeBoolean(false), (yylsp[(1) - (2)])); ;} break; case 1161: #line 8497 "gram.y" { (yyval.defelt) = makeDefElem("cost", (Node *) (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1162: #line 8501 "gram.y" { (yyval.defelt) = makeDefElem("rows", (Node *) (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1163: #line 8505 "gram.y" { (yyval.defelt) = makeDefElem("support", (Node *) (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 1164: #line 8509 "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 1165: #line 8514 "gram.y" { (yyval.defelt) = makeDefElem("parallel", (Node *) makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 1166: #line 8521 "gram.y" { (yyval.defelt) = makeDefElem("as", (Node *) (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 1167: #line 8525 "gram.y" { (yyval.defelt) = makeDefElem("language", (Node *) makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 1168: #line 8529 "gram.y" { (yyval.defelt) = makeDefElem("transform", (Node *) (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 1169: #line 8533 "gram.y" { (yyval.defelt) = makeDefElem("window", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); ;} break; case 1170: #line 8537 "gram.y" { (yyval.defelt) = (yyvsp[(1) - (1)].defelt); ;} break; case 1171: #line 8542 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 1172: #line 8544 "gram.y" { (yyval.list) = list_make2(makeString((yyvsp[(1) - (3)].str)), makeString((yyvsp[(3) - (3)].str))); ;} break; case 1173: #line 8550 "gram.y" { ReturnStmt *r = makeNode(ReturnStmt); r->returnval = (Node *) (yyvsp[(2) - (2)].node); (yyval.node) = (Node *) r; ;} break; case 1174: #line 8560 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1175: #line 8564 "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 1176: #line 8574 "gram.y" { (yyval.node) = NULL; ;} break; case 1177: #line 8581 "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 1178: #line 8589 "gram.y" { (yyval.list) = NIL; ;} break; case 1181: #line 8600 "gram.y" { (yyval.list) = list_make1((yyvsp[(3) - (3)].typnam)); ;} break; case 1182: #line 8601 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (5)].list), (yyvsp[(5) - (5)].typnam)); ;} break; case 1183: #line 8605 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1184: #line 8606 "gram.y" { (yyval.list) = NIL; ;} break; case 1185: #line 8610 "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 1186: #line 8623 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); ;} break; case 1187: #line 8627 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); ;} break; case 1188: #line 8642 "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 1189: #line 8651 "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 1190: #line 8660 "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 1191: #line 8672 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1192: #line 8673 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1195: #line 8697 "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 1196: #line 8708 "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 1197: #line 8719 "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 1198: #line 8730 "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 1199: #line 8741 "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 1200: #line 8752 "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 1201: #line 8766 "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 1202: #line 8777 "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 1203: #line 8791 "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 1204: #line 8802 "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 1205: #line 8816 "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 1206: #line 8824 "gram.y" { (yyval.list) = list_make2((yyvsp[(2) - (5)].typnam), (yyvsp[(4) - (5)].typnam)); ;} break; case 1207: #line 8826 "gram.y" { (yyval.list) = list_make2(NULL, (yyvsp[(4) - (5)].typnam)); ;} break; case 1208: #line 8828 "gram.y" { (yyval.list) = list_make2((yyvsp[(2) - (5)].typnam), NULL); ;} break; case 1209: #line 8833 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 1210: #line 8835 "gram.y" { (yyval.list) = lcons(makeString((yyvsp[(1) - (3)].str)), (yyvsp[(3) - (3)].list)); ;} break; case 1211: #line 8839 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); ;} break; case 1212: #line 8841 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); ;} break; case 1213: #line 8846 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = (yyvsp[(1) - (2)].list); n->objargs = (yyvsp[(2) - (2)].list); (yyval.objwithargs) = n; ;} break; case 1214: #line 8865 "gram.y" { DoStmt *n = makeNode(DoStmt); n->args = (yyvsp[(2) - (2)].list); (yyval.node) = (Node *) n; ;} break; case 1215: #line 8874 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1216: #line 8875 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1217: #line 8880 "gram.y" { (yyval.defelt) = makeDefElem("as", (Node *) makeString((yyvsp[(1) - (1)].str)), (yylsp[(1) - (1)])); ;} break; case 1218: #line 8884 "gram.y" { (yyval.defelt) = makeDefElem("language", (Node *) makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 1219: #line 8897 "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 1220: #line 8909 "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 1221: #line 8921 "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 1222: #line 8933 "gram.y" { (yyval.ival) = COERCION_IMPLICIT; ;} break; case 1223: #line 8934 "gram.y" { (yyval.ival) = COERCION_ASSIGNMENT; ;} break; case 1224: #line 8935 "gram.y" { (yyval.ival) = COERCION_EXPLICIT; ;} break; case 1225: #line 8940 "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 1226: #line 8952 "gram.y" { (yyval.boolean) = true; ;} break; case 1227: #line 8953 "gram.y" { (yyval.boolean) = false; ;} break; case 1228: #line 8964 "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 1229: #line 8977 "gram.y" { (yyval.list) = list_make2((yyvsp[(5) - (11)].objwithargs), (yyvsp[(11) - (11)].objwithargs)); ;} break; case 1230: #line 8981 "gram.y" { (yyval.list) = list_make2((yyvsp[(11) - (11)].objwithargs), (yyvsp[(5) - (11)].objwithargs)); ;} break; case 1231: #line 8985 "gram.y" { (yyval.list) = list_make2((yyvsp[(5) - (5)].objwithargs), NULL); ;} break; case 1232: #line 8989 "gram.y" { (yyval.list) = list_make2(NULL, (yyvsp[(5) - (5)].objwithargs)); ;} break; case 1233: #line 8996 "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 1234: #line 9017 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); n->kind = (yyvsp[(2) - (4)].ival); n->relation = (yyvsp[(4) - (4)].range); n->name = NULL; n->params = NIL; if ((yyvsp[(3) - (4)].boolean)) n->params = lappend(n->params, makeDefElem("concurrently", NULL, (yylsp[(3) - (4)]))); (yyval.node) = (Node *) n; ;} break; case 1235: #line 9030 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); n->kind = (yyvsp[(2) - (4)].ival); n->name = (yyvsp[(4) - (4)].str); n->relation = NULL; n->params = NIL; if ((yyvsp[(3) - (4)].boolean)) n->params = lappend(n->params, makeDefElem("concurrently", NULL, (yylsp[(3) - (4)]))); (yyval.node) = (Node *) n; ;} break; case 1236: #line 9043 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); n->kind = (yyvsp[(5) - (7)].ival); n->relation = (yyvsp[(7) - (7)].range); n->name = NULL; n->params = (yyvsp[(3) - (7)].list); if ((yyvsp[(6) - (7)].boolean)) n->params = lappend(n->params, makeDefElem("concurrently", NULL, (yylsp[(6) - (7)]))); (yyval.node) = (Node *) n; ;} break; case 1237: #line 9056 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); n->kind = (yyvsp[(5) - (7)].ival); n->name = (yyvsp[(7) - (7)].str); n->relation = NULL; n->params = (yyvsp[(3) - (7)].list); if ((yyvsp[(6) - (7)].boolean)) n->params = lappend(n->params, makeDefElem("concurrently", NULL, (yylsp[(6) - (7)]))); (yyval.node) = (Node *) n; ;} break; case 1238: #line 9070 "gram.y" { (yyval.ival) = REINDEX_OBJECT_INDEX; ;} break; case 1239: #line 9071 "gram.y" { (yyval.ival) = REINDEX_OBJECT_TABLE; ;} break; case 1240: #line 9074 "gram.y" { (yyval.ival) = REINDEX_OBJECT_SCHEMA; ;} break; case 1241: #line 9075 "gram.y" { (yyval.ival) = REINDEX_OBJECT_SYSTEM; ;} break; case 1242: #line 9076 "gram.y" { (yyval.ival) = REINDEX_OBJECT_DATABASE; ;} break; case 1243: #line 9087 "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 1244: #line 9097 "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 1245: #line 9115 "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 1246: #line 9125 "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 1247: #line 9135 "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 1248: #line 9145 "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 1249: #line 9155 "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 1250: #line 9165 "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 1251: #line 9175 "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 1252: #line 9185 "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 1253: #line 9195 "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 1254: #line 9205 "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 1255: #line 9215 "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 1256: #line 9225 "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 1257: #line 9235 "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 1258: #line 9246 "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 1259: #line 9257 "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 1260: #line 9267 "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 1261: #line 9277 "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 1262: #line 9287 "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 1263: #line 9297 "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 1264: #line 9307 "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 1265: #line 9317 "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 1266: #line 9328 "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 1267: #line 9339 "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 1268: #line 9350 "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 1269: #line 9361 "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 1270: #line 9372 "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 1271: #line 9383 "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 1272: #line 9394 "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 1273: #line 9405 "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 1274: #line 9416 "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 1275: #line 9427 "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 1276: #line 9438 "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 1277: #line 9449 "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 1278: #line 9461 "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 1279: #line 9473 "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 1280: #line 9485 "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 1281: #line 9497 "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 1282: #line 9509 "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 1283: #line 9521 "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 1284: #line 9532 "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 1285: #line 9543 "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 1286: #line 9555 "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 1287: #line 9567 "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 1288: #line 9578 "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 1289: #line 9589 "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 1290: #line 9598 "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 1291: #line 9608 "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 1292: #line 9618 "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 1293: #line 9628 "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 1294: #line 9638 "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 1295: #line 9648 "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 1296: #line 9658 "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 1297: #line 9668 "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 1298: #line 9678 "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 1299: #line 9688 "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 1302: #line 9706 "gram.y" { (yyval.ival) = 1; ;} break; case 1303: #line 9707 "gram.y" { (yyval.ival) = 0; ;} break; case 1304: #line 9718 "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 1305: #line 9728 "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 1306: #line 9738 "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 1307: #line 9748 "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 1308: #line 9759 "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 1309: #line 9769 "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 1310: #line 9780 "gram.y" { (yyval.boolean) = true; ;} break; case 1311: #line 9781 "gram.y" { (yyval.boolean) = false; ;} break; case 1312: #line 9792 "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 1313: #line 9802 "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 1314: #line 9812 "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 1315: #line 9822 "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 1316: #line 9832 "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 1317: #line 9842 "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 1318: #line 9852 "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 1319: #line 9862 "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 1320: #line 9872 "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 1321: #line 9882 "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 1322: #line 9892 "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 1323: #line 9902 "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 1324: #line 9912 "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 1325: #line 9922 "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 1326: #line 9932 "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 1327: #line 9942 "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 1328: #line 9952 "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 1329: #line 9962 "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 1330: #line 9972 "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 1331: #line 9982 "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 1332: #line 9992 "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 1333: #line 10002 "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 1334: #line 10012 "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 1335: #line 10022 "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 1336: #line 10032 "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 1337: #line 10042 "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 1338: #line 10052 "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 1339: #line 10071 "gram.y" { AlterOperatorStmt *n = makeNode(AlterOperatorStmt); n->opername = (yyvsp[(3) - (7)].objwithargs); n->options = (yyvsp[(6) - (7)].list); (yyval.node) = (Node *) n; ;} break; case 1340: #line 10080 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1341: #line 10081 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 1342: #line 10085 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), NULL, (yylsp[(1) - (3)])); ;} break; case 1343: #line 10087 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 1344: #line 10092 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].typnam); ;} break; case 1345: #line 10093 "gram.y" { (yyval.node) = (Node *) makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} break; case 1346: #line 10094 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].list); ;} break; case 1347: #line 10095 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].node); ;} break; case 1348: #line 10096 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 1349: #line 10109 "gram.y" { AlterTypeStmt *n = makeNode(AlterTypeStmt); n->typeName = (yyvsp[(3) - (7)].list); n->options = (yyvsp[(6) - (7)].list); (yyval.node) = (Node *) n; ;} break; case 1350: #line 10125 "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 1351: #line 10134 "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 1352: #line 10143 "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 1353: #line 10152 "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 1354: #line 10161 "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 1355: #line 10170 "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 1356: #line 10179 "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 1357: #line 10188 "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 1358: #line 10197 "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 1359: #line 10206 "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 1360: #line 10215 "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 1361: #line 10224 "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 1362: #line 10233 "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 1363: #line 10242 "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 1364: #line 10251 "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 1365: #line 10260 "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 1366: #line 10269 "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 1367: #line 10278 "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 1368: #line 10287 "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 1369: #line 10296 "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 1370: #line 10305 "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 1371: #line 10314 "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 1372: #line 10323 "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 1373: #line 10332 "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 1374: #line 10360 "gram.y" { CreatePublicationStmt *n = makeNode(CreatePublicationStmt); n->pubname = (yyvsp[(3) - (4)].str); n->options = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *) n; ;} break; case 1375: #line 10368 "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 1376: #line 10377 "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 1377: #line 10403 "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 1378: #line 10412 "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 1379: #line 10419 "gram.y" { (yyval.publicationobjectspec) = makeNode(PublicationObjSpec); (yyval.publicationobjectspec)->pubobjtype = PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA; (yyval.publicationobjectspec)->location = (yylsp[(4) - (4)]); ;} break; case 1380: #line 10425 "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 1381: #line 10452 "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 1382: #line 10463 "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 1383: #line 10472 "gram.y" { (yyval.publicationobjectspec) = makeNode(PublicationObjSpec); (yyval.publicationobjectspec)->pubobjtype = PUBLICATIONOBJ_CONTINUATION; (yyval.publicationobjectspec)->location = (yylsp[(1) - (1)]); ;} break; case 1384: #line 10480 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].publicationobjectspec)); ;} break; case 1385: #line 10482 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].publicationobjectspec)); ;} break; case 1386: #line 10504 "gram.y" { AlterPublicationStmt *n = makeNode(AlterPublicationStmt); n->pubname = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 1387: #line 10512 "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 1388: #line 10522 "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 1389: #line 10532 "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 1390: #line 10551 "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 1391: #line 10570 "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 1392: #line 10580 "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 1393: #line 10590 "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 1394: #line 10600 "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 1395: #line 10611 "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 1396: #line 10622 "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 1397: #line 10633 "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 1398: #line 10644 "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 1399: #line 10655 "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 1400: #line 10673 "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 1401: #line 10682 "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 1402: #line 10701 "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 1403: #line 10716 "gram.y" { (yyval.list) = NIL; ;} break; case 1404: #line 10717 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1405: #line 10718 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1406: #line 10724 "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 1407: #line 10730 "gram.y" { if ((yyvsp[(1) - (1)].node) != NULL) (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); else (yyval.list) = NIL; ;} break; case 1413: #line 10746 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1414: #line 10747 "gram.y" { (yyval.node) = NULL; ;} break; case 1415: #line 10750 "gram.y" { (yyval.ival) = CMD_SELECT; ;} break; case 1416: #line 10751 "gram.y" { (yyval.ival) = CMD_UPDATE; ;} break; case 1417: #line 10752 "gram.y" { (yyval.ival) = CMD_DELETE; ;} break; case 1418: #line 10753 "gram.y" { (yyval.ival) = CMD_INSERT; ;} break; case 1419: #line 10757 "gram.y" { (yyval.boolean) = true; ;} break; case 1420: #line 10758 "gram.y" { (yyval.boolean) = false; ;} break; case 1421: #line 10759 "gram.y" { (yyval.boolean) = false; ;} break; case 1422: #line 10772 "gram.y" { NotifyStmt *n = makeNode(NotifyStmt); n->conditionname = (yyvsp[(2) - (3)].str); n->payload = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 1423: #line 10782 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 1424: #line 10783 "gram.y" { (yyval.str) = NULL; ;} break; case 1425: #line 10787 "gram.y" { ListenStmt *n = makeNode(ListenStmt); n->conditionname = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; ;} break; case 1426: #line 10797 "gram.y" { UnlistenStmt *n = makeNode(UnlistenStmt); n->conditionname = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; ;} break; case 1427: #line 10804 "gram.y" { UnlistenStmt *n = makeNode(UnlistenStmt); n->conditionname = NULL; (yyval.node) = (Node *) n; ;} break; case 1428: #line 10824 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK; n->options = NIL; n->chain = (yyvsp[(3) - (3)].boolean); (yyval.node) = (Node *) n; ;} break; case 1429: #line 10833 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_START; n->options = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *) n; ;} break; case 1430: #line 10841 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT; n->options = NIL; n->chain = (yyvsp[(3) - (3)].boolean); (yyval.node) = (Node *) n; ;} break; case 1431: #line 10850 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK; n->options = NIL; n->chain = (yyvsp[(3) - (3)].boolean); (yyval.node) = (Node *) n; ;} break; case 1432: #line 10859 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_SAVEPOINT; n->savepoint_name = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; ;} break; case 1433: #line 10867 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_RELEASE; n->savepoint_name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 1434: #line 10875 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_RELEASE; n->savepoint_name = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; ;} break; case 1435: #line 10883 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_TO; n->savepoint_name = (yyvsp[(5) - (5)].str); (yyval.node) = (Node *) n; ;} break; case 1436: #line 10891 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_TO; n->savepoint_name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *) n; ;} break; case 1437: #line 10899 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_PREPARE; n->gid = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 1438: #line 10907 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT_PREPARED; n->gid = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 1439: #line 10915 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_PREPARED; n->gid = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 1440: #line 10926 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_BEGIN; n->options = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *) n; ;} break; case 1441: #line 10934 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT; n->options = NIL; n->chain = (yyvsp[(3) - (3)].boolean); (yyval.node) = (Node *) n; ;} break; case 1445: #line 10951 "gram.y" { (yyval.defelt) = makeDefElem("transaction_isolation", makeStringConst((yyvsp[(3) - (3)].str), (yylsp[(3) - (3)])), (yylsp[(1) - (3)])); ;} break; case 1446: #line 10954 "gram.y" { (yyval.defelt) = makeDefElem("transaction_read_only", makeIntConst(true, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); ;} break; case 1447: #line 10957 "gram.y" { (yyval.defelt) = makeDefElem("transaction_read_only", makeIntConst(false, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); ;} break; case 1448: #line 10960 "gram.y" { (yyval.defelt) = makeDefElem("transaction_deferrable", makeIntConst(true, (yylsp[(1) - (1)])), (yylsp[(1) - (1)])); ;} break; case 1449: #line 10963 "gram.y" { (yyval.defelt) = makeDefElem("transaction_deferrable", makeIntConst(false, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); ;} break; case 1450: #line 10970 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1451: #line 10972 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 1452: #line 10974 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1454: #line 10980 "gram.y" { (yyval.list) = NIL; ;} break; case 1455: #line 10984 "gram.y" { (yyval.boolean) = true; ;} break; case 1456: #line 10985 "gram.y" { (yyval.boolean) = false; ;} break; case 1457: #line 10986 "gram.y" { (yyval.boolean) = false; ;} break; case 1458: #line 11000 "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 1459: #line 11014 "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 1460: #line 11028 "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 1461: #line 11047 "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 1462: #line 11067 "gram.y" { (yyval.ival) = CASCADED_CHECK_OPTION; ;} break; case 1463: #line 11068 "gram.y" { (yyval.ival) = CASCADED_CHECK_OPTION; ;} break; case 1464: #line 11069 "gram.y" { (yyval.ival) = LOCAL_CHECK_OPTION; ;} break; case 1465: #line 11070 "gram.y" { (yyval.ival) = NO_CHECK_OPTION; ;} break; case 1466: #line 11081 "gram.y" { LoadStmt *n = makeNode(LoadStmt); n->filename = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; ;} break; case 1467: #line 11098 "gram.y" { CreatedbStmt *n = makeNode(CreatedbStmt); n->dbname = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 1468: #line 11108 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1469: #line 11109 "gram.y" { (yyval.list) = NIL; ;} break; case 1470: #line 11113 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1471: #line 11114 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1472: #line 11119 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 1473: #line 11123 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 1474: #line 11127 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), NULL, (yylsp[(1) - (3)])); ;} break; case 1475: #line 11144 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 1476: #line 11145 "gram.y" { (yyval.str) = pstrdup("connection_limit"); ;} break; case 1477: #line 11146 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 1478: #line 11147 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 1479: #line 11148 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 1480: #line 11149 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 1481: #line 11150 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 1484: #line 11170 "gram.y" { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); n->dbname = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 1485: #line 11178 "gram.y" { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); n->dbname = (yyvsp[(3) - (4)].str); n->options = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *) n; ;} break; case 1486: #line 11186 "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 1487: #line 11195 "gram.y" { AlterDatabaseRefreshCollStmt *n = makeNode(AlterDatabaseRefreshCollStmt); n->dbname = (yyvsp[(3) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 1488: #line 11205 "gram.y" { AlterDatabaseSetStmt *n = makeNode(AlterDatabaseSetStmt); n->dbname = (yyvsp[(3) - (4)].str); n->setstmt = (yyvsp[(4) - (4)].vsetstmt); (yyval.node) = (Node *) n; ;} break; case 1489: #line 11223 "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 1490: #line 11232 "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 1491: #line 11241 "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 1492: #line 11250 "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 1493: #line 11262 "gram.y" { (yyval.list) = list_make1((Node *) (yyvsp[(1) - (1)].defelt)); ;} break; case 1494: #line 11266 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (Node *) (yyvsp[(3) - (3)].defelt)); ;} break; case 1495: #line 11277 "gram.y" { (yyval.defelt) = makeDefElem("force", NULL, (yylsp[(1) - (1)])); ;} break; case 1496: #line 11289 "gram.y" { AlterCollationStmt *n = makeNode(AlterCollationStmt); n->collname = (yyvsp[(3) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 1497: #line 11307 "gram.y" { AlterSystemStmt *n = makeNode(AlterSystemStmt); n->setstmt = (yyvsp[(4) - (4)].vsetstmt); (yyval.node) = (Node *) n; ;} break; case 1498: #line 11314 "gram.y" { AlterSystemStmt *n = makeNode(AlterSystemStmt); n->setstmt = (yyvsp[(4) - (4)].vsetstmt); (yyval.node) = (Node *) n; ;} break; case 1499: #line 11331 "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 1500: #line 11345 "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 1501: #line 11355 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'N'; n->typeName = (yyvsp[(3) - (6)].list); (yyval.node) = (Node *) n; ;} break; case 1502: #line 11364 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'O'; n->typeName = (yyvsp[(3) - (6)].list); (yyval.node) = (Node *) n; ;} break; case 1503: #line 11373 "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 1504: #line 11383 "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 1505: #line 11395 "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 1506: #line 11407 "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 1509: #line 11430 "gram.y" { AlterTSDictionaryStmt *n = makeNode(AlterTSDictionaryStmt); n->dictname = (yyvsp[(5) - (6)].list); n->options = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *) n; ;} break; case 1510: #line 11441 "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 1511: #line 11453 "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 1512: #line 11465 "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 1513: #line 11477 "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 1514: #line 11489 "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 1515: #line 11499 "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 1518: #line 11528 "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 1519: #line 11552 "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 1520: #line 11564 "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 1521: #line 11573 "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 1522: #line 11585 "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 1523: #line 11598 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 1524: #line 11599 "gram.y" { (yyval.str) = NULL; ;} break; case 1525: #line 11612 "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 1526: #line 11633 "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 1527: #line 11644 "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 1528: #line 11656 "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 1529: #line 11668 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1530: #line 11672 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 1533: #line 11684 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1534: #line 11690 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 1535: #line 11691 "gram.y" { (yyval.str) = "analyze"; ;} break; case 1536: #line 11695 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 1537: #line 11696 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].node); ;} break; case 1538: #line 11697 "gram.y" { (yyval.node) = NULL; ;} break; case 1539: #line 11701 "gram.y" { (yyval.boolean) = true; ;} break; case 1540: #line 11702 "gram.y" { (yyval.boolean) = false; ;} break; case 1541: #line 11706 "gram.y" { (yyval.boolean) = true; ;} break; case 1542: #line 11707 "gram.y" { (yyval.boolean) = false; ;} break; case 1543: #line 11710 "gram.y" { (yyval.boolean) = true; ;} break; case 1544: #line 11711 "gram.y" { (yyval.boolean) = false; ;} break; case 1545: #line 11714 "gram.y" { (yyval.boolean) = true; ;} break; case 1546: #line 11715 "gram.y" { (yyval.boolean) = false; ;} break; case 1547: #line 11719 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1548: #line 11720 "gram.y" { (yyval.list) = NIL; ;} break; case 1549: #line 11725 "gram.y" { (yyval.node) = (Node *) makeVacuumRelation((yyvsp[(1) - (2)].range), InvalidOid, (yyvsp[(2) - (2)].list)); ;} break; case 1550: #line 11732 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1551: #line 11734 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 1552: #line 11738 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1553: #line 11739 "gram.y" { (yyval.list) = NIL; ;} break; case 1554: #line 11753 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); n->query = (yyvsp[(2) - (2)].node); n->options = NIL; (yyval.node) = (Node *) n; ;} break; case 1555: #line 11761 "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 1556: #line 11772 "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 1557: #line 11780 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); n->query = (yyvsp[(5) - (5)].node); n->options = (yyvsp[(3) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 1568: #line 11810 "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 1569: #line 11820 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1570: #line 11821 "gram.y" { (yyval.list) = NIL; ;} break; case 1576: #line 11840 "gram.y" { ExecuteStmt *n = makeNode(ExecuteStmt); n->name = (yyvsp[(2) - (3)].str); n->params = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *) n; ;} break; case 1577: #line 11849 "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 1578: #line 11867 "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 1579: #line 11885 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1580: #line 11886 "gram.y" { (yyval.list) = NIL; ;} break; case 1581: #line 11897 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; ;} break; case 1582: #line 11904 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 1583: #line 11911 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = NULL; (yyval.node) = (Node *) n; ;} break; case 1584: #line 11918 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = NULL; (yyval.node) = (Node *) n; ;} break; case 1585: #line 11936 "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 1586: #line 11953 "gram.y" { (yyval.range) = (yyvsp[(1) - (1)].range); ;} break; case 1587: #line 11957 "gram.y" { (yyvsp[(1) - (3)].range)->alias = makeAlias((yyvsp[(3) - (3)].str), NIL); (yyval.range) = (yyvsp[(1) - (3)].range); ;} break; case 1588: #line 11965 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = NIL; (yyval.istmt)->selectStmt = (yyvsp[(1) - (1)].node); ;} break; case 1589: #line 11971 "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 1590: #line 11978 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = (yyvsp[(2) - (4)].list); (yyval.istmt)->selectStmt = (yyvsp[(4) - (4)].node); ;} break; case 1591: #line 11984 "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 1592: #line 11991 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = NIL; (yyval.istmt)->selectStmt = NULL; ;} break; case 1593: #line 11999 "gram.y" { (yyval.ival) = OVERRIDING_USER_VALUE; ;} break; case 1594: #line 12000 "gram.y" { (yyval.ival) = OVERRIDING_SYSTEM_VALUE; ;} break; case 1595: #line 12005 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; case 1596: #line 12007 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} break; case 1597: #line 12012 "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 1598: #line 12023 "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 1599: #line 12033 "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 1600: #line 12042 "gram.y" { (yyval.onconflict) = NULL; ;} break; case 1601: #line 12049 "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 1602: #line 12058 "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 1603: #line 12066 "gram.y" { (yyval.infer) = NULL; ;} break; case 1604: #line 12072 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1605: #line 12073 "gram.y" { (yyval.list) = NIL; ;} break; case 1606: #line 12086 "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 1607: #line 12099 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1608: #line 12100 "gram.y" { (yyval.list) = NIL; ;} break; case 1609: #line 12112 "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 1610: #line 12122 "gram.y" { (yyval.ival) = (yyvsp[(2) - (3)].ival); ;} break; case 1611: #line 12123 "gram.y" { (yyval.ival) = AccessExclusiveLock; ;} break; case 1612: #line 12126 "gram.y" { (yyval.ival) = AccessShareLock; ;} break; case 1613: #line 12127 "gram.y" { (yyval.ival) = RowShareLock; ;} break; case 1614: #line 12128 "gram.y" { (yyval.ival) = RowExclusiveLock; ;} break; case 1615: #line 12129 "gram.y" { (yyval.ival) = ShareUpdateExclusiveLock; ;} break; case 1616: #line 12130 "gram.y" { (yyval.ival) = ShareLock; ;} break; case 1617: #line 12131 "gram.y" { (yyval.ival) = ShareRowExclusiveLock; ;} break; case 1618: #line 12132 "gram.y" { (yyval.ival) = ExclusiveLock; ;} break; case 1619: #line 12133 "gram.y" { (yyval.ival) = AccessExclusiveLock; ;} break; case 1620: #line 12136 "gram.y" { (yyval.boolean) = true; ;} break; case 1621: #line 12137 "gram.y" { (yyval.boolean) = false; ;} break; case 1622: #line 12141 "gram.y" { (yyval.ival) = LockWaitError; ;} break; case 1623: #line 12142 "gram.y" { (yyval.ival) = LockWaitSkip; ;} break; case 1624: #line 12143 "gram.y" { (yyval.ival) = LockWaitBlock; ;} break; case 1625: #line 12159 "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 1626: #line 12173 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1627: #line 12174 "gram.y" { (yyval.list) = list_concat((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].list)); ;} break; case 1628: #line 12179 "gram.y" { (yyvsp[(1) - (3)].target)->val = (Node *) (yyvsp[(3) - (3)].node); (yyval.list) = list_make1((yyvsp[(1) - (3)].target)); ;} break; case 1629: #line 12184 "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 1630: #line 12208 "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 1631: #line 12218 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; case 1632: #line 12219 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].target)); ;} break; case 1633: #line 12235 "gram.y" { MergeStmt *m = makeNode(MergeStmt); m->withClause = (yyvsp[(1) - (9)].with); m->relation = (yyvsp[(4) - (9)].range); m->sourceRelation = (yyvsp[(6) - (9)].node); m->joinCondition = (yyvsp[(8) - (9)].node); m->mergeWhenClauses = (yyvsp[(9) - (9)].list); (yyval.node) = (Node *) m; ;} break; case 1634: #line 12249 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1635: #line 12250 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list),(yyvsp[(2) - (2)].node)); ;} break; case 1636: #line 12255 "gram.y" { (yyvsp[(5) - (5)].mergewhen)->matched = true; (yyvsp[(5) - (5)].mergewhen)->condition = (yyvsp[(3) - (5)].node); (yyval.node) = (Node *) (yyvsp[(5) - (5)].mergewhen); ;} break; case 1637: #line 12262 "gram.y" { (yyvsp[(5) - (5)].mergewhen)->matched = true; (yyvsp[(5) - (5)].mergewhen)->condition = (yyvsp[(3) - (5)].node); (yyval.node) = (Node *) (yyvsp[(5) - (5)].mergewhen); ;} break; case 1638: #line 12269 "gram.y" { (yyvsp[(6) - (6)].mergewhen)->matched = false; (yyvsp[(6) - (6)].mergewhen)->condition = (yyvsp[(4) - (6)].node); (yyval.node) = (Node *) (yyvsp[(6) - (6)].mergewhen); ;} break; case 1639: #line 12276 "gram.y" { MergeWhenClause *m = makeNode(MergeWhenClause); m->matched = true; m->commandType = CMD_NOTHING; m->condition = (yyvsp[(3) - (6)].node); (yyval.node) = (Node *) m; ;} break; case 1640: #line 12286 "gram.y" { MergeWhenClause *m = makeNode(MergeWhenClause); m->matched = false; m->commandType = CMD_NOTHING; m->condition = (yyvsp[(4) - (7)].node); (yyval.node) = (Node *) m; ;} break; case 1641: #line 12298 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1642: #line 12299 "gram.y" { (yyval.node) = NULL; ;} break; case 1643: #line 12304 "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 1644: #line 12317 "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 1645: #line 12330 "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 1646: #line 12339 "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 1647: #line 12348 "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 1648: #line 12357 "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 1649: #line 12366 "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 1650: #line 12378 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 1651: #line 12390 "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 1652: #line 12401 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 1653: #line 12404 "gram.y" { (yyval.ival) = 0; ;} break; case 1654: #line 12405 "gram.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) | CURSOR_OPT_NO_SCROLL; ;} break; case 1655: #line 12406 "gram.y" { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_SCROLL; ;} break; case 1656: #line 12407 "gram.y" { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_BINARY; ;} break; case 1657: #line 12408 "gram.y" { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_ASENSITIVE; ;} break; case 1658: #line 12409 "gram.y" { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_INSENSITIVE; ;} break; case 1659: #line 12412 "gram.y" { (yyval.ival) = 0; ;} break; case 1660: #line 12413 "gram.y" { (yyval.ival) = CURSOR_OPT_HOLD; ;} break; case 1661: #line 12414 "gram.y" { (yyval.ival) = 0; ;} break; case 1664: #line 12467 "gram.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; case 1665: #line 12468 "gram.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; case 1666: #line 12483 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1667: #line 12485 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list), NIL, NULL, NULL, yyscanner); (yyval.node) = (yyvsp[(1) - (2)].node); ;} break; case 1668: #line 12492 "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 1669: #line 12500 "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 1670: #line 12508 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(2) - (2)].node), NULL, NIL, NULL, (yyvsp[(1) - (2)].with), yyscanner); (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1671: #line 12516 "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 1672: #line 12524 "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 1673: #line 12532 "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 1674: #line 12542 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1675: #line 12543 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1676: #line 12578 "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 1677: #line 12594 "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 1678: #line 12608 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1679: #line 12610 "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 1680: #line 12629 "gram.y" { (yyval.node) = makeSetOp(SETOP_UNION, (yyvsp[(3) - (4)].setquantifier) == SET_QUANTIFIER_ALL, (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; case 1681: #line 12633 "gram.y" { (yyval.node) = makeSetOp(SETOP_INTERSECT, (yyvsp[(3) - (4)].setquantifier) == SET_QUANTIFIER_ALL, (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; case 1682: #line 12637 "gram.y" { (yyval.node) = makeSetOp(SETOP_EXCEPT, (yyvsp[(3) - (4)].setquantifier) == SET_QUANTIFIER_ALL, (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; case 1683: #line 12652 "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 1684: #line 12659 "gram.y" { (yyval.with) = makeNode(WithClause); (yyval.with)->ctes = (yyvsp[(2) - (2)].list); (yyval.with)->recursive = false; (yyval.with)->location = (yylsp[(1) - (2)]); ;} break; case 1685: #line 12666 "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 1686: #line 12675 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1687: #line 12676 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 1688: #line 12680 "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 1689: #line 12695 "gram.y" { (yyval.ival) = CTEMaterializeAlways; ;} break; case 1690: #line 12696 "gram.y" { (yyval.ival) = CTEMaterializeNever; ;} break; case 1691: #line 12697 "gram.y" { (yyval.ival) = CTEMaterializeDefault; ;} break; case 1692: #line 12702 "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 1693: #line 12712 "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 1694: #line 12722 "gram.y" { (yyval.node) = NULL; ;} break; case 1695: #line 12729 "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 1696: #line 12741 "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 1697: #line 12753 "gram.y" { (yyval.node) = NULL; ;} break; case 1698: #line 12759 "gram.y" { (yyval.with) = (yyvsp[(1) - (1)].with); ;} break; case 1699: #line 12760 "gram.y" { (yyval.with) = NULL; ;} break; case 1700: #line 12765 "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 1701: #line 12776 "gram.y" { (yyval.into) = NULL; ;} break; case 1702: #line 12785 "gram.y" { (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; case 1703: #line 12790 "gram.y" { (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; case 1704: #line 12795 "gram.y" { (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; case 1705: #line 12800 "gram.y" { (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; case 1706: #line 12805 "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 1707: #line 12813 "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 1708: #line 12821 "gram.y" { (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_UNLOGGED; ;} break; case 1709: #line 12826 "gram.y" { (yyval.range) = (yyvsp[(2) - (2)].range); (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; ;} break; case 1710: #line 12831 "gram.y" { (yyval.range) = (yyvsp[(1) - (1)].range); (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; ;} break; case 1713: #line 12842 "gram.y" { (yyval.setquantifier) = SET_QUANTIFIER_ALL; ;} break; case 1714: #line 12843 "gram.y" { (yyval.setquantifier) = SET_QUANTIFIER_DISTINCT; ;} break; case 1715: #line 12844 "gram.y" { (yyval.setquantifier) = SET_QUANTIFIER_DEFAULT; ;} break; case 1716: #line 12851 "gram.y" { (yyval.list) = list_make1(NIL); ;} break; case 1717: #line 12852 "gram.y" { (yyval.list) = (yyvsp[(4) - (5)].list); ;} break; case 1720: #line 12861 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1721: #line 12862 "gram.y" { (yyval.list) = NIL; ;} break; case 1722: #line 12866 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1723: #line 12867 "gram.y" { (yyval.list) = NIL; ;} break; case 1724: #line 12871 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); ;} break; case 1725: #line 12875 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].sortby)); ;} break; case 1726: #line 12876 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].sortby)); ;} break; case 1727: #line 12880 "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 1728: #line 12889 "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 1729: #line 12902 "gram.y" { (yyval.selectlimit) = (yyvsp[(1) - (2)].selectlimit); ((yyval.selectlimit))->limitOffset = (yyvsp[(2) - (2)].node); ;} break; case 1730: #line 12907 "gram.y" { (yyval.selectlimit) = (yyvsp[(2) - (2)].selectlimit); ((yyval.selectlimit))->limitOffset = (yyvsp[(1) - (2)].node); ;} break; case 1731: #line 12912 "gram.y" { (yyval.selectlimit) = (yyvsp[(1) - (1)].selectlimit); ;} break; case 1732: #line 12916 "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 1733: #line 12927 "gram.y" { (yyval.selectlimit) = (yyvsp[(1) - (1)].selectlimit); ;} break; case 1734: #line 12928 "gram.y" { (yyval.selectlimit) = NULL; ;} break; case 1735: #line 12933 "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 1736: #line 12942 "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 1737: #line 12958 "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 1738: #line 12967 "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 1739: #line 12976 "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 1740: #line 12985 "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 1741: #line 12997 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1742: #line 13000 "gram.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; case 1743: #line 13004 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1744: #line 13006 "gram.y" { /* LIMIT ALL is represented as a NULL constant */ (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); ;} break; case 1745: #line 13013 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1746: #line 13033 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1747: #line 13035 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1748: #line 13037 "gram.y" { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1749: #line 13041 "gram.y" { (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival),(yylsp[(1) - (1)])); ;} break; case 1750: #line 13042 "gram.y" { (yyval.node) = makeFloatConst((yyvsp[(1) - (1)].str),(yylsp[(1) - (1)])); ;} break; case 1751: #line 13046 "gram.y" { (yyval.ival) = 0; ;} break; case 1752: #line 13047 "gram.y" { (yyval.ival) = 0; ;} break; case 1753: #line 13050 "gram.y" { (yyval.ival) = 0; ;} break; case 1754: #line 13051 "gram.y" { (yyval.ival) = 0; ;} break; case 1755: #line 13077 "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 1756: #line 13085 "gram.y" { GroupClause *n = (GroupClause *) palloc(sizeof(GroupClause)); n->distinct = false; n->list = NIL; (yyval.groupclause) = n; ;} break; case 1757: #line 13095 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1758: #line 13096 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].node)); ;} break; case 1759: #line 13100 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1760: #line 13101 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1761: #line 13102 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1762: #line 13103 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1763: #line 13104 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1764: #line 13109 "gram.y" { (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_EMPTY, NIL, (yylsp[(1) - (2)])); ;} break; case 1765: #line 13122 "gram.y" { (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_ROLLUP, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; case 1766: #line 13129 "gram.y" { (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_CUBE, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; case 1767: #line 13136 "gram.y" { (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_SETS, (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); ;} break; case 1768: #line 13142 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1769: #line 13143 "gram.y" { (yyval.node) = NULL; ;} break; case 1770: #line 13147 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1771: #line 13148 "gram.y" { (yyval.list) = NIL; ;} break; case 1772: #line 13152 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1773: #line 13153 "gram.y" { (yyval.list) = NIL; ;} break; case 1774: #line 13157 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1775: #line 13158 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 1776: #line 13163 "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 1777: #line 13174 "gram.y" { (yyval.ival) = LCS_FORUPDATE; ;} break; case 1778: #line 13175 "gram.y" { (yyval.ival) = LCS_FORNOKEYUPDATE; ;} break; case 1779: #line 13176 "gram.y" { (yyval.ival) = LCS_FORSHARE; ;} break; case 1780: #line 13177 "gram.y" { (yyval.ival) = LCS_FORKEYSHARE; ;} break; case 1781: #line 13181 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1782: #line 13182 "gram.y" { (yyval.list) = NIL; ;} break; case 1783: #line 13193 "gram.y" { SelectStmt *n = makeNode(SelectStmt); n->valuesLists = list_make1((yyvsp[(3) - (4)].list)); (yyval.node) = (Node *) n; ;} break; case 1784: #line 13200 "gram.y" { SelectStmt *n = (SelectStmt *) (yyvsp[(1) - (5)].node); n->valuesLists = lappend(n->valuesLists, (yyvsp[(4) - (5)].list)); (yyval.node) = (Node *) n; ;} break; case 1785: #line 13218 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1786: #line 13219 "gram.y" { (yyval.list) = NIL; ;} break; case 1787: #line 13223 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1788: #line 13224 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 1789: #line 13231 "gram.y" { (yyvsp[(1) - (2)].range)->alias = (yyvsp[(2) - (2)].alias); (yyval.node) = (Node *) (yyvsp[(1) - (2)].range); ;} break; case 1790: #line 13236 "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 1791: #line 13245 "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 1792: #line 13253 "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 1793: #line 13262 "gram.y" { RangeTableFunc *n = (RangeTableFunc *) (yyvsp[(1) - (2)].node); n->alias = (yyvsp[(2) - (2)].alias); (yyval.node) = (Node *) n; ;} break; case 1794: #line 13269 "gram.y" { RangeTableFunc *n = (RangeTableFunc *) (yyvsp[(2) - (3)].node); n->lateral = true; n->alias = (yyvsp[(3) - (3)].alias); (yyval.node) = (Node *) n; ;} break; case 1795: #line 13277 "gram.y" { RangeSubselect *n = makeNode(RangeSubselect); n->lateral = false; n->subquery = (yyvsp[(1) - (2)].node); n->alias = (yyvsp[(2) - (2)].alias); /* * The SQL spec does not permit a subselect * () without an alias clause, * so we don't either. This avoids the problem * of needing to invent a unique refname for it. * That could be surmounted if there's sufficient * popular demand, but for now let's just implement * the spec and see if anyone complains. * However, it does seem like a good idea to emit * an error message that's better than "syntax error". */ if ((yyvsp[(2) - (2)].alias) == NULL) { if (IsA((yyvsp[(1) - (2)].node), SelectStmt) && ((SelectStmt *) (yyvsp[(1) - (2)].node))->valuesLists) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("VALUES in FROM must have an alias"), errhint("For example, FROM (VALUES ...) [AS] foo."), parser_errposition((yylsp[(1) - (2)])))); else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("subquery in FROM must have an alias"), errhint("For example, FROM (SELECT ...) [AS] foo."), parser_errposition((yylsp[(1) - (2)])))); } (yyval.node) = (Node *) n; ;} break; case 1796: #line 13313 "gram.y" { RangeSubselect *n = makeNode(RangeSubselect); n->lateral = true; n->subquery = (yyvsp[(2) - (3)].node); n->alias = (yyvsp[(3) - (3)].alias); /* same comment as above */ if ((yyvsp[(3) - (3)].alias) == NULL) { if (IsA((yyvsp[(2) - (3)].node), SelectStmt) && ((SelectStmt *) (yyvsp[(2) - (3)].node))->valuesLists) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("VALUES in FROM must have an alias"), errhint("For example, FROM (VALUES ...) [AS] foo."), parser_errposition((yylsp[(2) - (3)])))); else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("subquery in FROM must have an alias"), errhint("For example, FROM (SELECT ...) [AS] foo."), parser_errposition((yylsp[(2) - (3)])))); } (yyval.node) = (Node *) n; ;} break; case 1797: #line 13339 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].jexpr); ;} break; case 1798: #line 13343 "gram.y" { (yyvsp[(2) - (4)].jexpr)->alias = (yyvsp[(4) - (4)].alias); (yyval.node) = (Node *) (yyvsp[(2) - (4)].jexpr); ;} break; case 1799: #line 13369 "gram.y" { (yyval.jexpr) = (yyvsp[(2) - (3)].jexpr); ;} break; case 1800: #line 13373 "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 1801: #line 13387 "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 1802: #line 13408 "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 1803: #line 13430 "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 1804: #line 13443 "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 1805: #line 13460 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(2) - (5)].str); (yyval.alias)->colnames = (yyvsp[(4) - (5)].list); ;} break; case 1806: #line 13466 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(2) - (2)].str); ;} break; case 1807: #line 13471 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(1) - (4)].str); (yyval.alias)->colnames = (yyvsp[(3) - (4)].list); ;} break; case 1808: #line 13477 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(1) - (1)].str); ;} break; case 1809: #line 13483 "gram.y" { (yyval.alias) = (yyvsp[(1) - (1)].alias); ;} break; case 1810: #line 13484 "gram.y" { (yyval.alias) = NULL; ;} break; case 1811: #line 13495 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(2) - (2)].str); /* the column name list will be inserted later */ ;} break; case 1812: #line 13500 "gram.y" { (yyval.alias) = NULL; ;} break; case 1813: #line 13509 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (1)].alias), NIL); ;} break; case 1814: #line 13513 "gram.y" { (yyval.list) = list_make2(NULL, (yyvsp[(3) - (4)].list)); ;} break; case 1815: #line 13517 "gram.y" { Alias *a = makeNode(Alias); a->aliasname = (yyvsp[(2) - (5)].str); (yyval.list) = list_make2(a, (yyvsp[(4) - (5)].list)); ;} break; case 1816: #line 13524 "gram.y" { Alias *a = makeNode(Alias); a->aliasname = (yyvsp[(1) - (4)].str); (yyval.list) = list_make2(a, (yyvsp[(3) - (4)].list)); ;} break; case 1817: #line 13531 "gram.y" { (yyval.list) = list_make2(NULL, NIL); ;} break; case 1818: #line 13536 "gram.y" { (yyval.jtype) = JOIN_FULL; ;} break; case 1819: #line 13537 "gram.y" { (yyval.jtype) = JOIN_LEFT; ;} break; case 1820: #line 13538 "gram.y" { (yyval.jtype) = JOIN_RIGHT; ;} break; case 1821: #line 13539 "gram.y" { (yyval.jtype) = JOIN_INNER; ;} break; case 1824: #line 13560 "gram.y" { (yyval.node) = (Node *) list_make2((yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].alias)); ;} break; case 1825: #line 13564 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1826: #line 13572 "gram.y" { /* inheritance query, implicitly */ (yyval.range) = (yyvsp[(1) - (1)].range); (yyval.range)->inh = true; (yyval.range)->alias = NULL; ;} break; case 1827: #line 13579 "gram.y" { (yyval.range) = (yyvsp[(1) - (1)].range); ;} break; case 1828: #line 13586 "gram.y" { /* inheritance query, explicitly */ (yyval.range) = (yyvsp[(1) - (2)].range); (yyval.range)->inh = true; (yyval.range)->alias = NULL; ;} break; case 1829: #line 13593 "gram.y" { /* no inheritance */ (yyval.range) = (yyvsp[(2) - (2)].range); (yyval.range)->inh = false; (yyval.range)->alias = NULL; ;} break; case 1830: #line 13600 "gram.y" { /* no inheritance, SQL99-style syntax */ (yyval.range) = (yyvsp[(3) - (4)].range); (yyval.range)->inh = false; (yyval.range)->alias = NULL; ;} break; case 1831: #line 13610 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].range)); ;} break; case 1832: #line 13611 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].range)); ;} break; case 1833: #line 13625 "gram.y" { (yyval.range) = (yyvsp[(1) - (1)].range); ;} break; case 1834: #line 13629 "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 1835: #line 13637 "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 1836: #line 13651 "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 1837: #line 13664 "gram.y" { (yyval.node) = (Node *) (yyvsp[(3) - (4)].node); ;} break; case 1838: #line 13665 "gram.y" { (yyval.node) = NULL; ;} break; case 1839: #line 13681 "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 1840: #line 13692 "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 1841: #line 13705 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list)); ;} break; case 1842: #line 13709 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; case 1843: #line 13710 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; case 1844: #line 13713 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 1845: #line 13714 "gram.y" { (yyval.list) = NIL; ;} break; case 1846: #line 13717 "gram.y" { (yyval.boolean) = true; ;} break; case 1847: #line 13718 "gram.y" { (yyval.boolean) = false; ;} break; case 1848: #line 13723 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1849: #line 13724 "gram.y" { (yyval.node) = NULL; ;} break; case 1850: #line 13729 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1851: #line 13731 "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 1852: #line 13739 "gram.y" { (yyval.node) = NULL; ;} break; case 1853: #line 13744 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1854: #line 13745 "gram.y" { (yyval.list) = NIL; ;} break; case 1855: #line 13750 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1856: #line 13754 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 1857: #line 13760 "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 1858: #line 13785 "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 1859: #line 13797 "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 1860: #line 13809 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1861: #line 13810 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 1862: #line 13815 "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 1863: #line 13829 "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 1864: #line 13886 "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 1865: #line 13900 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1866: #line 13902 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1867: #line 13907 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1868: #line 13909 "gram.y" { (yyval.defelt) = makeDefElem("default", (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1869: #line 13911 "gram.y" { (yyval.defelt) = makeDefElem("is_not_null", (Node *) makeBoolean(true), (yylsp[(1) - (2)])); ;} break; case 1870: #line 13913 "gram.y" { (yyval.defelt) = makeDefElem("is_not_null", (Node *) makeBoolean(false), (yylsp[(1) - (1)])); ;} break; case 1871: #line 13918 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; case 1872: #line 13920 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} break; case 1873: #line 13925 "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 1874: #line 13933 "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 1875: #line 13953 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (2)].typnam); (yyval.typnam)->arrayBounds = (yyvsp[(2) - (2)].list); ;} break; case 1876: #line 13958 "gram.y" { (yyval.typnam) = (yyvsp[(2) - (3)].typnam); (yyval.typnam)->arrayBounds = (yyvsp[(3) - (3)].list); (yyval.typnam)->setof = true; ;} break; case 1877: #line 13965 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (5)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[(4) - (5)].ival))); ;} break; case 1878: #line 13970 "gram.y" { (yyval.typnam) = (yyvsp[(2) - (6)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[(5) - (6)].ival))); (yyval.typnam)->setof = true; ;} break; case 1879: #line 13976 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (2)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); ;} break; case 1880: #line 13981 "gram.y" { (yyval.typnam) = (yyvsp[(2) - (3)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); (yyval.typnam)->setof = true; ;} break; case 1881: #line 13990 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeInteger(-1)); ;} break; case 1882: #line 13992 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (4)].list), makeInteger((yyvsp[(3) - (4)].ival))); ;} break; case 1883: #line 13994 "gram.y" { (yyval.list) = NIL; ;} break; case 1884: #line 13998 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1885: #line 13999 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1886: #line 14000 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1887: #line 14001 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1888: #line 14002 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1889: #line 14004 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (2)].typnam); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); ;} break; case 1890: #line 14009 "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 1891: #line 14028 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1892: #line 14029 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1893: #line 14030 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1894: #line 14031 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1895: #line 14043 "gram.y" { (yyval.typnam) = makeTypeName((yyvsp[(1) - (2)].str)); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1896: #line 14049 "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 1897: #line 14056 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1898: #line 14057 "gram.y" { (yyval.list) = NIL; ;} break; case 1899: #line 14064 "gram.y" { (yyval.typnam) = SystemTypeName("int4"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1900: #line 14069 "gram.y" { (yyval.typnam) = SystemTypeName("int4"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1901: #line 14074 "gram.y" { (yyval.typnam) = SystemTypeName("int2"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1902: #line 14079 "gram.y" { (yyval.typnam) = SystemTypeName("int8"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1903: #line 14084 "gram.y" { (yyval.typnam) = SystemTypeName("float4"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1904: #line 14089 "gram.y" { (yyval.typnam) = (yyvsp[(2) - (2)].typnam); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1905: #line 14094 "gram.y" { (yyval.typnam) = SystemTypeName("float8"); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1906: #line 14099 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1907: #line 14105 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1908: #line 14111 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1909: #line 14117 "gram.y" { (yyval.typnam) = SystemTypeName("bool"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1910: #line 14124 "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 1911: #line 14145 "gram.y" { (yyval.typnam) = SystemTypeName("float8"); ;} break; case 1912: #line 14155 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1913: #line 14159 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1914: #line 14167 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1915: #line 14171 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); (yyval.typnam)->typmods = NIL; ;} break; case 1916: #line 14179 "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 1917: #line 14191 "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 1918: #line 14212 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1919: #line 14216 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1920: #line 14222 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1921: #line 14226 "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 1922: #line 14239 "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 1923: #line 14247 "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 1924: #line 14257 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} break; case 1925: #line 14259 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} break; case 1926: #line 14261 "gram.y" { (yyval.str) = "varchar"; ;} break; case 1927: #line 14263 "gram.y" { (yyval.str) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; ;} break; case 1928: #line 14265 "gram.y" { (yyval.str) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; ;} break; case 1929: #line 14267 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} break; case 1930: #line 14271 "gram.y" { (yyval.boolean) = true; ;} break; case 1931: #line 14272 "gram.y" { (yyval.boolean) = false; ;} break; case 1932: #line 14280 "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 1933: #line 14289 "gram.y" { if ((yyvsp[(2) - (2)].boolean)) (yyval.typnam) = SystemTypeName("timestamptz"); else (yyval.typnam) = SystemTypeName("timestamp"); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1934: #line 14297 "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 1935: #line 14306 "gram.y" { if ((yyvsp[(2) - (2)].boolean)) (yyval.typnam) = SystemTypeName("timetz"); else (yyval.typnam) = SystemTypeName("time"); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1936: #line 14317 "gram.y" { (yyval.typnam) = SystemTypeName("interval"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1937: #line 14324 "gram.y" { (yyval.boolean) = true; ;} break; case 1938: #line 14325 "gram.y" { (yyval.boolean) = false; ;} break; case 1939: #line 14326 "gram.y" { (yyval.boolean) = false; ;} break; case 1940: #line 14331 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR), (yylsp[(1) - (1)]))); ;} break; case 1941: #line 14333 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MONTH), (yylsp[(1) - (1)]))); ;} break; case 1942: #line 14335 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY), (yylsp[(1) - (1)]))); ;} break; case 1943: #line 14337 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR), (yylsp[(1) - (1)]))); ;} break; case 1944: #line 14339 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), (yylsp[(1) - (1)]))); ;} break; case 1945: #line 14341 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1946: #line 14343 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | INTERVAL_MASK(MONTH), (yylsp[(1) - (3)]))); ;} break; case 1947: #line 14348 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR), (yylsp[(1) - (3)]))); ;} break; case 1948: #line 14353 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE), (yylsp[(1) - (3)]))); ;} break; case 1949: #line 14359 "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 1950: #line 14367 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE), (yylsp[(1) - (3)]))); ;} break; case 1951: #line 14372 "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 1952: #line 14379 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); linitial((yyval.list)) = makeIntConst(INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND), (yylsp[(1) - (3)])); ;} break; case 1953: #line 14385 "gram.y" { (yyval.list) = NIL; ;} break; case 1954: #line 14390 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[(1) - (1)]))); ;} break; case 1955: #line 14394 "gram.y" { (yyval.list) = list_make2(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[(1) - (4)])), makeIntConst((yyvsp[(3) - (4)].ival), (yylsp[(3) - (4)]))); ;} break; case 1956: #line 14429 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1957: #line 14431 "gram.y" { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), (yylsp[(2) - (3)])); ;} break; case 1958: #line 14433 "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 1959: #line 14442 "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 1960: #line 14458 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1961: #line 14460 "gram.y" { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1962: #line 14462 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1963: #line 14464 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1964: #line 14466 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1965: #line 14468 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1966: #line 14470 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1967: #line 14472 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1968: #line 14474 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1969: #line 14476 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1970: #line 14478 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1971: #line 14480 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1972: #line 14482 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1973: #line 14484 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1974: #line 14487 "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 1975: #line 14489 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1976: #line 14492 "gram.y" { (yyval.node) = makeAndExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1977: #line 14494 "gram.y" { (yyval.node) = makeOrExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1978: #line 14496 "gram.y" { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1979: #line 14498 "gram.y" { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1980: #line 14501 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "~~", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1981: #line 14506 "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 1982: #line 14515 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "!~~", (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); ;} break; case 1983: #line 14520 "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 1984: #line 14529 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "~~*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1985: #line 14534 "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 1986: #line 14543 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "!~~*", (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); ;} break; case 1987: #line 14548 "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 1988: #line 14558 "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 1989: #line 14567 "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 1990: #line 14576 "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 1991: #line 14585 "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 1992: #line 14604 "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 1993: #line 14613 "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 1994: #line 14622 "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 1995: #line 14631 "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 1996: #line 14640 "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 1997: #line 14657 "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 1998: #line 14666 "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 1999: #line 14675 "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 2000: #line 14684 "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 2001: #line 14693 "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 2002: #line 14702 "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 2003: #line 14711 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node), (yylsp[(2) - (5)])); ;} break; case 2004: #line 14715 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", (yyvsp[(1) - (6)].node), (yyvsp[(6) - (6)].node), (yylsp[(2) - (6)])); ;} break; case 2005: #line 14719 "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 2006: #line 14727 "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 2007: #line 14735 "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 2008: #line 14743 "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 2009: #line 14751 "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 2010: #line 14772 "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 2011: #line 14795 "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 2012: #line 14807 "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 2013: #line 14814 "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 2014: #line 14830 "gram.y" { (yyval.node) = makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[(1) - (3)].node)), (yylsp[(2) - (3)])); ;} break; case 2015: #line 14835 "gram.y" { (yyval.node) = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[(1) - (4)].node)), (yylsp[(2) - (4)])), (yylsp[(2) - (4)])); ;} break; case 2016: #line 14841 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("is_normalized"), list_make1((yyvsp[(1) - (3)].node)), COERCE_SQL_SYNTAX, (yylsp[(2) - (3)])); ;} break; case 2017: #line 14848 "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 2018: #line 14855 "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 2019: #line 14863 "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 2020: #line 14871 "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 2021: #line 14897 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2022: #line 14899 "gram.y" { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), (yylsp[(2) - (3)])); ;} break; case 2023: #line 14901 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 2024: #line 14903 "gram.y" { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 2025: #line 14905 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2026: #line 14907 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2027: #line 14909 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2028: #line 14911 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2029: #line 14913 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2030: #line 14915 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2031: #line 14917 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2032: #line 14919 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2033: #line 14921 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2034: #line 14923 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2035: #line 14925 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2036: #line 14927 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2037: #line 14929 "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 2038: #line 14931 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 2039: #line 14933 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node), (yylsp[(2) - (5)])); ;} break; case 2040: #line 14937 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", (yyvsp[(1) - (6)].node), (yyvsp[(6) - (6)].node), (yylsp[(2) - (6)])); ;} break; case 2041: #line 14941 "gram.y" { (yyval.node) = makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[(1) - (3)].node)), (yylsp[(2) - (3)])); ;} break; case 2042: #line 14946 "gram.y" { (yyval.node) = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[(1) - (4)].node)), (yylsp[(2) - (4)])), (yylsp[(2) - (4)])); ;} break; case 2043: #line 14961 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2044: #line 14962 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2045: #line 14964 "gram.y" { ParamRef *p = makeNode(ParamRef); p->number = (yyvsp[(1) - (2)].ival); p->location = (yylsp[(1) - (2)]); if ((yyvsp[(2) - (2)].list)) { A_Indirection *n = makeNode(A_Indirection); n->arg = (Node *) p; n->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); (yyval.node) = (Node *) n; } else (yyval.node) = (Node *) p; ;} break; case 2046: #line 14981 "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 2047: #line 14994 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2048: #line 14996 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2049: #line 14998 "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 2050: #line 15010 "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 2051: #line 15035 "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 2052: #line 15047 "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 2053: #line 15059 "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 2054: #line 15067 "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 2055: #line 15078 "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 2056: #line 15089 "gram.y" { GroupingFunc *g = makeNode(GroupingFunc); g->args = (yyvsp[(3) - (4)].list); g->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *) g; ;} break; case 2057: #line 15099 "gram.y" { (yyval.node) = (Node *) makeFuncCall((yyvsp[(1) - (3)].list), NIL, COERCE_EXPLICIT_CALL, (yylsp[(1) - (3)])); ;} break; case 2058: #line 15105 "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 2059: #line 15114 "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 2060: #line 15124 "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 2061: #line 15134 "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 2062: #line 15147 "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 2063: #line 15157 "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 2064: #line 15188 "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 2065: #line 15224 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2066: #line 15234 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2067: #line 15235 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2068: #line 15243 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("pg_collation_for"), list_make1((yyvsp[(4) - (5)].node)), COERCE_SQL_SYNTAX, (yylsp[(1) - (5)])); ;} break; case 2069: #line 15250 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_DATE, -1, (yylsp[(1) - (1)])); ;} break; case 2070: #line 15254 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIME, -1, (yylsp[(1) - (1)])); ;} break; case 2071: #line 15258 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIME_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); ;} break; case 2072: #line 15262 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIMESTAMP, -1, (yylsp[(1) - (1)])); ;} break; case 2073: #line 15266 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIMESTAMP_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); ;} break; case 2074: #line 15270 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIME, -1, (yylsp[(1) - (1)])); ;} break; case 2075: #line 15274 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIME_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); ;} break; case 2076: #line 15278 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIMESTAMP, -1, (yylsp[(1) - (1)])); ;} break; case 2077: #line 15282 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIMESTAMP_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); ;} break; case 2078: #line 15286 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_ROLE, -1, (yylsp[(1) - (1)])); ;} break; case 2079: #line 15290 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_USER, -1, (yylsp[(1) - (1)])); ;} break; case 2080: #line 15294 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_SESSION_USER, -1, (yylsp[(1) - (1)])); ;} break; case 2081: #line 15298 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_USER, -1, (yylsp[(1) - (1)])); ;} break; case 2082: #line 15302 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_CATALOG, -1, (yylsp[(1) - (1)])); ;} break; case 2083: #line 15306 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_SCHEMA, -1, (yylsp[(1) - (1)])); ;} break; case 2084: #line 15310 "gram.y" { (yyval.node) = makeTypeCast((yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].typnam), (yylsp[(1) - (6)])); ;} break; case 2085: #line 15312 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("extract"), (yyvsp[(3) - (4)].list), COERCE_SQL_SYNTAX, (yylsp[(1) - (4)])); ;} break; case 2086: #line 15319 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("normalize"), list_make1((yyvsp[(3) - (4)].node)), COERCE_SQL_SYNTAX, (yylsp[(1) - (4)])); ;} break; case 2087: #line 15326 "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 2088: #line 15333 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("overlay"), (yyvsp[(3) - (4)].list), COERCE_SQL_SYNTAX, (yylsp[(1) - (4)])); ;} break; case 2089: #line 15340 "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 2090: #line 15351 "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 2091: #line 15365 "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 2092: #line 15375 "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 2093: #line 15386 "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 2094: #line 15402 "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 2095: #line 15412 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("ltrim"), (yyvsp[(4) - (5)].list), COERCE_SQL_SYNTAX, (yylsp[(1) - (5)])); ;} break; case 2096: #line 15419 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("rtrim"), (yyvsp[(4) - (5)].list), COERCE_SQL_SYNTAX, (yylsp[(1) - (5)])); ;} break; case 2097: #line 15426 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("btrim"), (yyvsp[(3) - (4)].list), COERCE_SQL_SYNTAX, (yylsp[(1) - (4)])); ;} break; case 2098: #line 15433 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NULLIF, "=", (yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(1) - (6)])); ;} break; case 2099: #line 15437 "gram.y" { CoalesceExpr *c = makeNode(CoalesceExpr); c->args = (yyvsp[(3) - (4)].list); c->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *) c; ;} break; case 2100: #line 15445 "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 2101: #line 15454 "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 2102: #line 15463 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; case 2103: #line 15467 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (5)].str), NIL, NIL, (yylsp[(1) - (5)])); ;} break; case 2104: #line 15471 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (7)].str), (yyvsp[(6) - (7)].list), NIL, (yylsp[(1) - (7)])); ;} break; case 2105: #line 15475 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (7)].str), NIL, (yyvsp[(6) - (7)].list), (yylsp[(1) - (7)])); ;} break; case 2106: #line 15479 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (9)].str), (yyvsp[(6) - (9)].list), (yyvsp[(8) - (9)].list), (yylsp[(1) - (9)])); ;} break; case 2107: #line 15483 "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 2108: #line 15492 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLFOREST, NULL, (yyvsp[(3) - (4)].list), NIL, (yylsp[(1) - (4)])); ;} break; case 2109: #line 15496 "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 2110: #line 15506 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[(4) - (5)].str), NULL, NIL, (yylsp[(1) - (5)])); ;} break; case 2111: #line 15510 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[(4) - (7)].str), NULL, list_make1((yyvsp[(6) - (7)].node)), (yylsp[(1) - (7)])); ;} break; case 2112: #line 15514 "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 2113: #line 15519 "gram.y" { XmlSerialize *n = makeNode(XmlSerialize); n->xmloption = (yyvsp[(3) - (7)].ival); n->expr = (yyvsp[(4) - (7)].node); n->typeName = (yyvsp[(6) - (7)].typnam); n->location = (yylsp[(1) - (7)]); (yyval.node) = (Node *) n; ;} break; case 2114: #line 15534 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 2115: #line 15536 "gram.y" { (yyval.node) = makeNullAConst(-1); ;} break; case 2116: #line 15540 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_YES, -1); ;} break; case 2117: #line 15542 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_NO, -1); ;} break; case 2118: #line 15544 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_NO_VALUE, -1); ;} break; case 2119: #line 15546 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_OMITTED, -1); ;} break; case 2120: #line 15549 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2121: #line 15552 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; case 2122: #line 15553 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} break; case 2123: #line 15557 "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 2124: #line 15565 "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 2125: #line 15574 "gram.y" { (yyval.ival) = XMLOPTION_DOCUMENT; ;} break; case 2126: #line 15575 "gram.y" { (yyval.ival) = XMLOPTION_CONTENT; ;} break; case 2127: #line 15578 "gram.y" { (yyval.boolean) = true; ;} break; case 2128: #line 15579 "gram.y" { (yyval.boolean) = false; ;} break; case 2129: #line 15580 "gram.y" { (yyval.boolean) = false; ;} break; case 2130: #line 15586 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 2131: #line 15590 "gram.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; case 2132: #line 15594 "gram.y" { (yyval.node) = (yyvsp[(3) - (3)].node); ;} break; case 2133: #line 15598 "gram.y" { (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; case 2136: #line 15613 "gram.y" { (yyval.list) = (yyvsp[(4) - (5)].list); ;} break; case 2137: #line 15614 "gram.y" { (yyval.list) = NIL; ;} break; case 2138: #line 15618 "gram.y" { (yyval.node) = (yyvsp[(4) - (5)].node); ;} break; case 2139: #line 15619 "gram.y" { (yyval.node) = NULL; ;} break; case 2140: #line 15627 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 2141: #line 15628 "gram.y" { (yyval.list) = NIL; ;} break; case 2142: #line 15632 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].windef)); ;} break; case 2143: #line 15634 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].windef)); ;} break; case 2144: #line 15639 "gram.y" { WindowDef *n = (yyvsp[(3) - (3)].windef); n->name = (yyvsp[(1) - (3)].str); (yyval.windef) = n; ;} break; case 2145: #line 15648 "gram.y" { (yyval.windef) = (yyvsp[(2) - (2)].windef); ;} break; case 2146: #line 15650 "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 2147: #line 15664 "gram.y" { (yyval.windef) = NULL; ;} break; case 2148: #line 15669 "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 2149: #line 15695 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2150: #line 15696 "gram.y" { (yyval.str) = NULL; ;} break; case 2151: #line 15699 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); ;} break; case 2152: #line 15700 "gram.y" { (yyval.list) = NIL; ;} break; case 2153: #line 15709 "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 2154: #line 15717 "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 2155: #line 15725 "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 2156: #line 15733 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_DEFAULTS; n->startOffset = NULL; n->endOffset = NULL; (yyval.windef) = n; ;} break; case 2157: #line 15744 "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 2158: #line 15762 "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 2159: #line 15808 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_UNBOUNDED_PRECEDING; n->startOffset = NULL; n->endOffset = NULL; (yyval.windef) = n; ;} break; case 2160: #line 15817 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_UNBOUNDED_FOLLOWING; n->startOffset = NULL; n->endOffset = NULL; (yyval.windef) = n; ;} break; case 2161: #line 15826 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_CURRENT_ROW; n->startOffset = NULL; n->endOffset = NULL; (yyval.windef) = n; ;} break; case 2162: #line 15835 "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 2163: #line 15844 "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 2164: #line 15855 "gram.y" { (yyval.ival) = FRAMEOPTION_EXCLUDE_CURRENT_ROW; ;} break; case 2165: #line 15856 "gram.y" { (yyval.ival) = FRAMEOPTION_EXCLUDE_GROUP; ;} break; case 2166: #line 15857 "gram.y" { (yyval.ival) = FRAMEOPTION_EXCLUDE_TIES; ;} break; case 2167: #line 15858 "gram.y" { (yyval.ival) = 0; ;} break; case 2168: #line 15859 "gram.y" { (yyval.ival) = 0; ;} break; case 2169: #line 15873 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2170: #line 15874 "gram.y" { (yyval.list) = NIL; ;} break; case 2171: #line 15875 "gram.y" { (yyval.list) = lappend((yyvsp[(2) - (5)].list), (yyvsp[(4) - (5)].node)); ;} break; case 2172: #line 15878 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2173: #line 15879 "gram.y" { (yyval.list) = NIL; ;} break; case 2174: #line 15882 "gram.y" { (yyval.list) = lappend((yyvsp[(2) - (5)].list), (yyvsp[(4) - (5)].node)); ;} break; case 2175: #line 15885 "gram.y" { (yyval.ival) = ANY_SUBLINK; ;} break; case 2176: #line 15886 "gram.y" { (yyval.ival) = ANY_SUBLINK; ;} break; case 2177: #line 15887 "gram.y" { (yyval.ival) = ALL_SUBLINK; ;} break; case 2178: #line 15890 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2179: #line 15891 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2180: #line 15894 "gram.y" { (yyval.str) = "+"; ;} break; case 2181: #line 15895 "gram.y" { (yyval.str) = "-"; ;} break; case 2182: #line 15896 "gram.y" { (yyval.str) = "*"; ;} break; case 2183: #line 15897 "gram.y" { (yyval.str) = "/"; ;} break; case 2184: #line 15898 "gram.y" { (yyval.str) = "%"; ;} break; case 2185: #line 15899 "gram.y" { (yyval.str) = "^"; ;} break; case 2186: #line 15900 "gram.y" { (yyval.str) = "<"; ;} break; case 2187: #line 15901 "gram.y" { (yyval.str) = ">"; ;} break; case 2188: #line 15902 "gram.y" { (yyval.str) = "="; ;} break; case 2189: #line 15903 "gram.y" { (yyval.str) = "<="; ;} break; case 2190: #line 15904 "gram.y" { (yyval.str) = ">="; ;} break; case 2191: #line 15905 "gram.y" { (yyval.str) = "<>"; ;} break; case 2192: #line 15909 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 2193: #line 15911 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2194: #line 15916 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 2195: #line 15918 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2196: #line 15923 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 2197: #line 15925 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2198: #line 15927 "gram.y" { (yyval.list) = list_make1(makeString("~~")); ;} break; case 2199: #line 15929 "gram.y" { (yyval.list) = list_make1(makeString("!~~")); ;} break; case 2200: #line 15931 "gram.y" { (yyval.list) = list_make1(makeString("~~*")); ;} break; case 2201: #line 15933 "gram.y" { (yyval.list) = list_make1(makeString("!~~*")); ;} break; case 2202: #line 15945 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2203: #line 15949 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 2204: #line 15956 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2205: #line 15960 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 2206: #line 15966 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2207: #line 15970 "gram.y" { NamedArgExpr *na = makeNode(NamedArgExpr); na->name = (yyvsp[(1) - (3)].str); na->arg = (Expr *) (yyvsp[(3) - (3)].node); na->argnumber = -1; /* until determined */ na->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) na; ;} break; case 2208: #line 15980 "gram.y" { NamedArgExpr *na = makeNode(NamedArgExpr); na->name = (yyvsp[(1) - (3)].str); na->arg = (Expr *) (yyvsp[(3) - (3)].node); na->argnumber = -1; /* until determined */ na->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) na; ;} break; case 2209: #line 15991 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 2210: #line 15992 "gram.y" { (yyval.list) = NIL; ;} break; case 2211: #line 15995 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].typnam)); ;} break; case 2212: #line 15996 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typnam)); ;} break; case 2213: #line 16000 "gram.y" { (yyval.node) = makeAArrayExpr((yyvsp[(2) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 2214: #line 16004 "gram.y" { (yyval.node) = makeAArrayExpr((yyvsp[(2) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 2215: #line 16008 "gram.y" { (yyval.node) = makeAArrayExpr(NIL, (yylsp[(1) - (2)])); ;} break; case 2216: #line 16013 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2217: #line 16014 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 2218: #line 16020 "gram.y" { (yyval.list) = list_make2(makeStringConst((yyvsp[(1) - (3)].str), (yylsp[(1) - (3)])), (yyvsp[(3) - (3)].node)); ;} break; case 2219: #line 16024 "gram.y" { (yyval.list) = list_make2(makeParamRef((yyvsp[(1) - (3)].ival), (yylsp[(1) - (3)])), (yyvsp[(3) - (3)].node)); ;} break; case 2220: #line 16033 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2221: #line 16034 "gram.y" { (yyval.str) = "year"; ;} break; case 2222: #line 16035 "gram.y" { (yyval.str) = "month"; ;} break; case 2223: #line 16036 "gram.y" { (yyval.str) = "day"; ;} break; case 2224: #line 16037 "gram.y" { (yyval.str) = "hour"; ;} break; case 2225: #line 16038 "gram.y" { (yyval.str) = "minute"; ;} break; case 2226: #line 16039 "gram.y" { (yyval.str) = "second"; ;} break; case 2227: #line 16040 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2228: #line 16044 "gram.y" { (yyval.str) = "NFC"; ;} break; case 2229: #line 16045 "gram.y" { (yyval.str) = "NFD"; ;} break; case 2230: #line 16046 "gram.y" { (yyval.str) = "NFKC"; ;} break; case 2231: #line 16047 "gram.y" { (yyval.str) = "NFKD"; ;} break; case 2232: #line 16053 "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 2233: #line 16058 "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 2234: #line 16066 "gram.y" { (yyval.list) = list_make2((yyvsp[(3) - (3)].node), (yyvsp[(1) - (3)].node)); ;} break; case 2235: #line 16088 "gram.y" { (yyval.list) = list_make3((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)); ;} break; case 2236: #line 16092 "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 2237: #line 16097 "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 2238: #line 16108 "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 2239: #line 16125 "gram.y" { (yyval.list) = list_make3((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)); ;} break; case 2240: #line 16130 "gram.y" { (yyval.list) = lappend((yyvsp[(3) - (3)].list), (yyvsp[(1) - (3)].node)); ;} break; case 2241: #line 16131 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 2242: #line 16132 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 2243: #line 16136 "gram.y" { SubLink *n = makeNode(SubLink); n->subselect = (yyvsp[(1) - (1)].node); /* other fields will be filled later */ (yyval.node) = (Node *) n; ;} break; case 2244: #line 16143 "gram.y" { (yyval.node) = (Node *) (yyvsp[(2) - (3)].list); ;} break; case 2245: #line 16154 "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 2246: #line 16168 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2247: #line 16169 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 2248: #line 16174 "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 2249: #line 16185 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 2250: #line 16186 "gram.y" { (yyval.node) = NULL; ;} break; case 2251: #line 16189 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2252: #line 16190 "gram.y" { (yyval.node) = NULL; ;} break; case 2253: #line 16194 "gram.y" { (yyval.node) = makeColumnRef((yyvsp[(1) - (1)].str), NIL, (yylsp[(1) - (1)]), yyscanner); ;} break; case 2254: #line 16198 "gram.y" { (yyval.node) = makeColumnRef((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)]), yyscanner); ;} break; case 2255: #line 16205 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(2) - (2)].str)); ;} break; case 2256: #line 16209 "gram.y" { (yyval.node) = (Node *) makeNode(A_Star); ;} break; case 2257: #line 16213 "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 2258: #line 16222 "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 2259: #line 16233 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2260: #line 16234 "gram.y" { (yyval.node) = NULL; ;} break; case 2261: #line 16238 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2262: #line 16239 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 2263: #line 16243 "gram.y" { (yyval.list) = NIL; ;} break; case 2264: #line 16244 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 2267: #line 16258 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 2268: #line 16259 "gram.y" { (yyval.list) = NIL; ;} break; case 2269: #line 16263 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; case 2270: #line 16264 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} break; case 2271: #line 16268 "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 2272: #line 16276 "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 2273: #line 16284 "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 2274: #line 16292 "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 2275: #line 16314 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].range)); ;} break; case 2276: #line 16315 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].range)); ;} break; case 2277: #line 16327 "gram.y" { (yyval.range) = makeRangeVar(NULL, (yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 2278: #line 16331 "gram.y" { (yyval.range) = makeRangeVarFromQualifiedName((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)]), yyscanner); ;} break; case 2279: #line 16337 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 2280: #line 16339 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; case 2281: #line 16343 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2282: #line 16345 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2283: #line 16347 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2284: #line 16358 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 2285: #line 16360 "gram.y" { (yyval.list) = check_func_name(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)), yyscanner); ;} break; case 2286: #line 16371 "gram.y" { (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); ;} break; case 2287: #line 16375 "gram.y" { (yyval.node) = makeFloatConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 2288: #line 16379 "gram.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 2289: #line 16383 "gram.y" { (yyval.node) = makeBitStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 2290: #line 16387 "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 2291: #line 16396 "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 2292: #line 16404 "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 2293: #line 16436 "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 2294: #line 16443 "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 2295: #line 16475 "gram.y" { (yyval.node) = makeStringConstCast((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]), (yyvsp[(1) - (2)].typnam)); ;} break; case 2296: #line 16479 "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 2297: #line 16486 "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 2298: #line 16494 "gram.y" { (yyval.node) = makeParamRefCast((yyvsp[(2) - (2)].ival), (yylsp[(2) - (2)]), (yyvsp[(1) - (2)].typnam)); ;} break; case 2299: #line 16498 "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 2300: #line 16504 "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 2301: #line 16511 "gram.y" { (yyval.node) = makeBoolAConst(true, (yylsp[(1) - (1)])); ;} break; case 2302: #line 16515 "gram.y" { (yyval.node) = makeBoolAConst(false, (yylsp[(1) - (1)])); ;} break; case 2303: #line 16519 "gram.y" { (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); ;} break; case 2304: #line 16524 "gram.y" { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} break; case 2305: #line 16525 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2306: #line 16527 "gram.y" { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} break; case 2307: #line 16528 "gram.y" { (yyval.ival) = + (yyvsp[(2) - (2)].ival); ;} break; case 2308: #line 16529 "gram.y" { (yyval.ival) = - (yyvsp[(2) - (2)].ival); ;} break; case 2309: #line 16534 "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 2310: #line 16575 "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 2311: #line 16603 "gram.y" { (yyval.rolespec) = makeRoleSpec(ROLESPEC_CURRENT_ROLE, (yylsp[(1) - (1)])); ;} break; case 2312: #line 16607 "gram.y" { (yyval.rolespec) = makeRoleSpec(ROLESPEC_CURRENT_USER, (yylsp[(1) - (1)])); ;} break; case 2313: #line 16611 "gram.y" { (yyval.rolespec) = makeRoleSpec(ROLESPEC_SESSION_USER, (yylsp[(1) - (1)])); ;} break; case 2314: #line 16617 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].rolespec)); ;} break; case 2315: #line 16619 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].rolespec)); ;} break; case 2316: #line 16636 "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 2317: #line 16669 "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 2318: #line 16681 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2319: #line 16682 "gram.y" { (yyval.str) = psprintf("$%d", (yyvsp[(1) - (1)].ival)); ;} break; case 2322: #line 16703 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2323: #line 16704 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2324: #line 16705 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2325: #line 16710 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2326: #line 16711 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2327: #line 16712 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2328: #line 16717 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2329: #line 16718 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2330: #line 16719 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2331: #line 16720 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2332: #line 16726 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2333: #line 16727 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2334: #line 16728 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2335: #line 16729 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2336: #line 16730 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2337: #line 16736 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2338: #line 16737 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; /* Line 1267 of yacc.c. */ #line 48796 "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 17687 "gram.y" /* * The signature of this function is required by bison. However, we * ignore the passed yylloc and instead use the last token position * available from the scanner. */ static void base_yyerror(YYLTYPE *yylloc, core_yyscan_t yyscanner, const char *msg) { parser_yyerror(msg); } static RawStmt * makeRawStmt(Node *stmt, int stmt_location) { RawStmt *rs = makeNode(RawStmt); rs->stmt = stmt; rs->stmt_location = stmt_location; rs->stmt_len = 0; /* might get changed later */ return rs; } /* Adjust a RawStmt to reflect that it doesn't run to the end of the string */ static void updateRawStmtEnd(RawStmt *rs, int end_location) { /* * If we already set the length, don't change it. This is for situations * like "select foo ;; select bar" where the same statement will be last * in the string for more than one semicolon. */ if (rs->stmt_len > 0) return; /* OK, update length of RawStmt */ rs->stmt_len = end_location - rs->stmt_location; } static Node * makeColumnRef(char *colname, List *indirection, int location, core_yyscan_t yyscanner) { /* * Generate a ColumnRef node, with an A_Indirection node added if there * is any subscripting in the specified indirection list. However, * any field selection at the start of the indirection list must be * transposed into the "fields" part of the ColumnRef node. */ ColumnRef *c = makeNode(ColumnRef); int nfields = 0; ListCell *l; c->location = location; foreach(l, indirection) { if (IsA(lfirst(l), A_Indices)) { A_Indirection *i = makeNode(A_Indirection); if (nfields == 0) { /* easy case - all indirection goes to A_Indirection */ c->fields = list_make1(makeString(colname)); i->indirection = check_indirection(indirection, yyscanner); } else { /* got to split the list in two */ i->indirection = check_indirection(list_copy_tail(indirection, nfields), yyscanner); indirection = list_truncate(indirection, nfields); c->fields = lcons(makeString(colname), indirection); } i->arg = (Node *) c; return (Node *) i; } else if (IsA(lfirst(l), A_Star)) { /* We only allow '*' at the end of a ColumnRef */ if (lnext(indirection, l) != NULL) parser_yyerror("improper use of \"*\""); } nfields++; } /* No subscripting, so all indirection gets added to field list */ c->fields = lcons(makeString(colname), indirection); return (Node *) c; } static Node * makeTypeCast(Node *arg, TypeName *typename, int location) { TypeCast *n = makeNode(TypeCast); n->arg = arg; n->typeName = typename; n->location = location; return (Node *) n; } static Node * makeStringConst(char *str, int location) { A_Const *n = makeNode(A_Const); n->val.sval.type = T_String; n->val.sval.sval = str; n->location = location; return (Node *) n; } static Node * makeStringConstCast(char *str, int location, TypeName *typename) { Node *s = makeStringConst(str, location); return makeTypeCast(s, typename, -1); } static Node * makeIntConst(int val, int location) { A_Const *n = makeNode(A_Const); n->val.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 && limitClause->limitOption != LIMIT_OPTION_DEFAULT) { if (stmt->limitOption) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("multiple limit options not allowed"))); if (!stmt->sortClause && limitClause->limitOption == LIMIT_OPTION_WITH_TIES) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("WITH TIES cannot be specified without ORDER BY clause"))); 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))); } } /* * 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 at or near"), 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 at or near"), 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 */ } pg_query-4.2.3/ext/pg_query/src_backend_nodes_makefuncs.c0000644000004100000410000002065214510636647023705 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - makeDefElem * - makeTypeNameFromNameList * - makeDefElemExtended * - makeRangeVar * - makeVacuumRelation * - makeAlias * - makeSimpleA_Expr * - makeGroupingSet * - makeTypeName * - makeFuncCall * - makeA_Expr * - makeBoolExpr *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * makefuncs.c * creator functions for various nodes. The functions here are for the * most frequently created nodes. * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/nodes/makefuncs.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "catalog/pg_class.h" #include "catalog/pg_type.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" #include "utils/lsyscache.h" /* * makeA_Expr - * makes an A_Expr node */ A_Expr * makeA_Expr(A_Expr_Kind kind, List *name, Node *lexpr, Node *rexpr, int location) { A_Expr *a = makeNode(A_Expr); a->kind = kind; a->name = name; a->lexpr = lexpr; a->rexpr = rexpr; a->location = location; return a; } /* * makeSimpleA_Expr - * As above, given a simple (unqualified) operator name */ A_Expr * makeSimpleA_Expr(A_Expr_Kind kind, char *name, Node *lexpr, Node *rexpr, int location) { A_Expr *a = makeNode(A_Expr); a->kind = kind; a->name = list_make1(makeString((char *) name)); a->lexpr = lexpr; a->rexpr = rexpr; a->location = location; return a; } /* * makeVar - * creates a Var node */ /* * makeVarFromTargetEntry - * convenience function to create a same-level Var node from a * TargetEntry */ /* * makeWholeRowVar - * creates a Var node representing a whole row of the specified RTE * * A whole-row reference is a Var with varno set to the correct range * table entry, and varattno == 0 to signal that it references the whole * tuple. (Use of zero here is unclean, since it could easily be confused * with error cases, but it's not worth changing now.) The vartype indicates * a rowtype; either a named composite type, or a domain over a named * composite type (only possible if the RTE is a function returning that), * or RECORD. This function encapsulates the logic for determining the * correct rowtype OID to use. * * If allowScalar is true, then for the case where the RTE is a single function * returning a non-composite result type, we produce a normal Var referencing * the function's result directly, instead of the single-column composite * value that the whole-row notation might otherwise suggest. */ /* * makeTargetEntry - * creates a TargetEntry node */ /* * flatCopyTargetEntry - * duplicate a TargetEntry, but don't copy substructure * * This is commonly used when we just want to modify the resno or substitute * a new expression. */ /* * makeFromExpr - * creates a FromExpr node */ /* * makeConst - * creates a Const node */ /* * makeNullConst - * creates a Const node representing a NULL of the specified type/typmod * * This is a convenience routine that just saves a lookup of the type's * storage properties. */ /* * makeBoolConst - * creates a Const node representing a boolean value (can be NULL too) */ /* * makeBoolExpr - * creates a BoolExpr node */ Expr * makeBoolExpr(BoolExprType boolop, List *args, int location) { BoolExpr *b = makeNode(BoolExpr); b->boolop = boolop; b->args = args; b->location = location; return (Expr *) b; } /* * makeAlias - * creates an Alias node * * NOTE: the given name is copied, but the colnames list (if any) isn't. */ Alias * makeAlias(const char *aliasname, List *colnames) { Alias *a = makeNode(Alias); a->aliasname = pstrdup(aliasname); a->colnames = colnames; return a; } /* * makeRelabelType - * creates a RelabelType node */ /* * makeRangeVar - * creates a RangeVar node (rather oversimplified case) */ RangeVar * makeRangeVar(char *schemaname, char *relname, int location) { RangeVar *r = makeNode(RangeVar); r->catalogname = NULL; r->schemaname = schemaname; r->relname = relname; r->inh = true; r->relpersistence = RELPERSISTENCE_PERMANENT; r->alias = NULL; r->location = location; return r; } /* * makeTypeName - * build a TypeName node for an unqualified name. * * typmod is defaulted, but can be changed later by caller. */ TypeName * makeTypeName(char *typnam) { return makeTypeNameFromNameList(list_make1(makeString(typnam))); } /* * makeTypeNameFromNameList - * build a TypeName node for a String list representing a qualified name. * * typmod is defaulted, but can be changed later by caller. */ TypeName * makeTypeNameFromNameList(List *names) { TypeName *n = makeNode(TypeName); n->names = names; n->typmods = NIL; n->typemod = -1; n->location = -1; return n; } /* * makeTypeNameFromOid - * build a TypeName node to represent a type already known by OID/typmod. */ /* * makeColumnDef - * build a ColumnDef node to represent a simple column definition. * * Type and collation are specified by OID. * Other properties are all basic to start with. */ /* * makeFuncExpr - * build an expression tree representing a function call. * * The argument expressions must have been transformed already. */ /* * makeDefElem - * build a DefElem node * * This is sufficient for the "typical" case with an unqualified option name * and no special action. */ DefElem * makeDefElem(char *name, Node *arg, int location) { DefElem *res = makeNode(DefElem); res->defnamespace = NULL; res->defname = name; res->arg = arg; res->defaction = DEFELEM_UNSPEC; res->location = location; return res; } /* * makeDefElemExtended - * build a DefElem node with all fields available to be specified */ DefElem * makeDefElemExtended(char *nameSpace, char *name, Node *arg, DefElemAction defaction, int location) { DefElem *res = makeNode(DefElem); res->defnamespace = nameSpace; res->defname = name; res->arg = arg; res->defaction = defaction; res->location = location; return res; } /* * makeFuncCall - * * Initialize a FuncCall struct with the information every caller must * supply. Any non-default parameters have to be inserted by the caller. */ FuncCall * makeFuncCall(List *name, List *args, 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; } pg_query-4.2.3/ext/pg_query/src_backend_nodes_copyfuncs.c0000644000004100000410000040775014510636647023752 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - copyObjectImpl * - _copyPlannedStmt * - _copyPlan * - CopyPlanFields * - _copyResult * - _copyProjectSet * - _copyModifyTable * - _copyAppend * - _copyMergeAppend * - _copyRecursiveUnion * - _copyBitmapAnd * - _copyBitmapOr * - _copyScan * - CopyScanFields * - _copyGather * - _copyGatherMerge * - _copySeqScan * - _copySampleScan * - _copyIndexScan * - _copyIndexOnlyScan * - _copyBitmapIndexScan * - _copyBitmapHeapScan * - _copyTidScan * - _copyTidRangeScan * - _copySubqueryScan * - _copyFunctionScan * - _copyTableFuncScan * - _copyValuesScan * - _copyCteScan * - _copyNamedTuplestoreScan * - _copyWorkTableScan * - _copyForeignScan * - _copyCustomScan * - _copyJoin * - CopyJoinFields * - _copyNestLoop * - _copyMergeJoin * - _copyHashJoin * - _copyMaterial * - _copyMemoize * - _copySort * - CopySortFields * - _copyIncrementalSort * - _copyGroup * - _copyAgg * - _copyWindowAgg * - _copyUnique * - _copyHash * - _copySetOp * - _copyLockRows * - _copyLimit * - _copyNestLoopParam * - _copyPlanRowMark * - _copyPartitionPruneInfo * - _copyPartitionedRelPruneInfo * - _copyPartitionPruneStepOp * - _copyPartitionPruneStepCombine * - _copyPlanInvalItem * - _copyAlias * - _copyRangeVar * - _copyTableFunc * - _copyIntoClause * - _copyVar * - _copyConst * - _copyParam * - _copyAggref * - _copyGroupingFunc * - _copyWindowFunc * - _copySubscriptingRef * - _copyFuncExpr * - _copyNamedArgExpr * - _copyOpExpr * - _copyDistinctExpr * - _copyNullIfExpr * - _copyScalarArrayOpExpr * - _copyBoolExpr * - _copySubLink * - _copySubPlan * - _copyAlternativeSubPlan * - _copyFieldSelect * - _copyFieldStore * - _copyRelabelType * - _copyCoerceViaIO * - _copyArrayCoerceExpr * - _copyConvertRowtypeExpr * - _copyCollateExpr * - _copyCaseExpr * - _copyCaseWhen * - _copyCaseTestExpr * - _copyArrayExpr * - _copyRowExpr * - _copyRowCompareExpr * - _copyCoalesceExpr * - _copyMinMaxExpr * - _copySQLValueFunction * - _copyXmlExpr * - _copyNullTest * - _copyBooleanTest * - _copyCoerceToDomain * - _copyCoerceToDomainValue * - _copySetToDefault * - _copyCurrentOfExpr * - _copyNextValueExpr * - _copyInferenceElem * - _copyTargetEntry * - _copyRangeTblRef * - _copyJoinExpr * - _copyFromExpr * - _copyOnConflictExpr * - _copyPathKey * - _copyRestrictInfo * - _copyPlaceHolderVar * - _copySpecialJoinInfo * - _copyAppendRelInfo * - _copyPlaceHolderInfo * - _copyInteger * - _copyFloat * - _copyBoolean * - _copyString * - _copyBitString * - _copyExtensibleNode * - _copyQuery * - _copyRawStmt * - _copyInsertStmt * - _copyDeleteStmt * - _copyUpdateStmt * - _copyMergeStmt * - _copySelectStmt * - _copySetOperationStmt * - _copyReturnStmt * - _copyPLAssignStmt * - _copyAlterTableStmt * - _copyAlterTableCmd * - _copyAlterCollationStmt * - _copyAlterDomainStmt * - _copyGrantStmt * - _copyGrantRoleStmt * - _copyAlterDefaultPrivilegesStmt * - _copyDeclareCursorStmt * - _copyClosePortalStmt * - _copyCallStmt * - _copyClusterStmt * - _copyCopyStmt * - _copyCreateStmt * - CopyCreateStmtFields * - _copyTableLikeClause * - _copyDefineStmt * - _copyDropStmt * - _copyTruncateStmt * - _copyCommentStmt * - _copySecLabelStmt * - _copyFetchStmt * - _copyIndexStmt * - _copyCreateStatsStmt * - _copyAlterStatsStmt * - _copyCreateFunctionStmt * - _copyFunctionParameter * - _copyAlterFunctionStmt * - _copyDoStmt * - _copyRenameStmt * - _copyAlterObjectDependsStmt * - _copyAlterObjectSchemaStmt * - _copyAlterOwnerStmt * - _copyAlterOperatorStmt * - _copyAlterTypeStmt * - _copyRuleStmt * - _copyNotifyStmt * - _copyListenStmt * - _copyUnlistenStmt * - _copyTransactionStmt * - _copyCompositeTypeStmt * - _copyCreateEnumStmt * - _copyCreateRangeStmt * - _copyAlterEnumStmt * - _copyViewStmt * - _copyLoadStmt * - _copyCreateDomainStmt * - _copyCreateOpClassStmt * - _copyCreateOpClassItem * - _copyCreateOpFamilyStmt * - _copyAlterOpFamilyStmt * - _copyCreatedbStmt * - _copyAlterDatabaseStmt * - _copyAlterDatabaseRefreshCollStmt * - _copyAlterDatabaseSetStmt * - _copyDropdbStmt * - _copyVacuumStmt * - _copyVacuumRelation * - _copyExplainStmt * - _copyCreateTableAsStmt * - _copyRefreshMatViewStmt * - _copyReplicaIdentityStmt * - _copyAlterSystemStmt * - _copyCreateSeqStmt * - _copyAlterSeqStmt * - _copyVariableSetStmt * - _copyVariableShowStmt * - _copyDiscardStmt * - _copyCreateTableSpaceStmt * - _copyDropTableSpaceStmt * - _copyAlterTableSpaceOptionsStmt * - _copyAlterTableMoveAllStmt * - _copyCreateExtensionStmt * - _copyAlterExtensionStmt * - _copyAlterExtensionContentsStmt * - _copyCreateFdwStmt * - _copyAlterFdwStmt * - _copyCreateForeignServerStmt * - _copyAlterForeignServerStmt * - _copyCreateUserMappingStmt * - _copyAlterUserMappingStmt * - _copyDropUserMappingStmt * - _copyCreateForeignTableStmt * - _copyImportForeignSchemaStmt * - _copyCreateTransformStmt * - _copyCreateAmStmt * - _copyCreateTrigStmt * - _copyCreateEventTrigStmt * - _copyAlterEventTrigStmt * - _copyCreatePLangStmt * - _copyCreateRoleStmt * - _copyAlterRoleStmt * - _copyAlterRoleSetStmt * - _copyDropRoleStmt * - _copyLockStmt * - _copyConstraintsSetStmt * - _copyReindexStmt * - _copyCreateSchemaStmt * - _copyCreateConversionStmt * - _copyCreateCastStmt * - _copyPrepareStmt * - _copyExecuteStmt * - _copyDeallocateStmt * - _copyDropOwnedStmt * - _copyReassignOwnedStmt * - _copyAlterTSDictionaryStmt * - _copyAlterTSConfigurationStmt * - _copyCreatePolicyStmt * - _copyAlterPolicyStmt * - _copyCreatePublicationStmt * - _copyAlterPublicationStmt * - _copyCreateSubscriptionStmt * - _copyAlterSubscriptionStmt * - _copyDropSubscriptionStmt * - _copyA_Expr * - _copyColumnRef * - _copyParamRef * - _copyA_Const * - _copyFuncCall * - _copyA_Star * - _copyA_Indices * - _copyA_Indirection * - _copyA_ArrayExpr * - _copyResTarget * - _copyMultiAssignRef * - _copyTypeCast * - _copyCollateClause * - _copySortBy * - _copyWindowDef * - _copyRangeSubselect * - _copyRangeFunction * - _copyRangeTableSample * - _copyRangeTableFunc * - _copyRangeTableFuncCol * - _copyTypeName * - _copyIndexElem * - _copyStatsElem * - _copyColumnDef * - _copyConstraint * - _copyDefElem * - _copyLockingClause * - _copyRangeTblEntry * - _copyRangeTblFunction * - _copyTableSampleClause * - _copyWithCheckOption * - _copySortGroupClause * - _copyGroupingSet * - _copyWindowClause * - _copyRowMarkClause * - _copyWithClause * - _copyInferClause * - _copyOnConflictClause * - _copyCTESearchClause * - _copyCTECycleClause * - _copyCommonTableExpr * - _copyMergeWhenClause * - _copyMergeAction * - _copyObjectWithArgs * - _copyAccessPriv * - _copyXmlSerialize * - _copyRoleSpec * - _copyTriggerTransition * - _copyPartitionElem * - _copyPartitionSpec * - _copyPartitionBoundSpec * - _copyPartitionRangeDatum * - _copyPartitionCmd * - _copyPublicationObject * - _copyPublicationTable * - _copyForeignKeyCacheInfo *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * copyfuncs.c * Copy functions for Postgres tree nodes. * * NOTE: we currently support copying all node types found in parse and * plan trees. We do not support copying executor state trees; there * is no need for that, and no point in maintaining all the code that * would be needed. We also do not support copying Path trees, mainly * because the circular linkages between RelOptInfo and Path nodes can't * be handled easily in a simple depth-first traversal. * * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/backend/nodes/copyfuncs.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "miscadmin.h" #include "nodes/extensible.h" #include "nodes/pathnodes.h" #include "nodes/plannodes.h" #include "utils/datum.h" #include "utils/rel.h" /* * Macros to simplify copying of different kinds of fields. Use these * wherever possible to reduce the chance for silly typos. Note that these * hard-wire the convention that the local variables in a Copy routine are * named 'newnode' and 'from'. */ /* Copy a simple scalar field (int, float, bool, enum, etc) */ #define COPY_SCALAR_FIELD(fldname) \ (newnode->fldname = from->fldname) /* Copy a field that is a pointer to some kind of Node or Node tree */ #define COPY_NODE_FIELD(fldname) \ (newnode->fldname = copyObjectImpl(from->fldname)) /* Copy a field that is a pointer to a Bitmapset */ #define COPY_BITMAPSET_FIELD(fldname) \ (newnode->fldname = bms_copy(from->fldname)) /* Copy a field that is a pointer to a C string, or perhaps NULL */ #define COPY_STRING_FIELD(fldname) \ (newnode->fldname = from->fldname ? pstrdup(from->fldname) : (char *) NULL) /* Copy a field that is 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) /* **************************************************************** * plannodes.h copy functions * **************************************************************** */ /* * _copyPlannedStmt */ static PlannedStmt * _copyPlannedStmt(const PlannedStmt *from) { PlannedStmt *newnode = makeNode(PlannedStmt); COPY_SCALAR_FIELD(commandType); COPY_SCALAR_FIELD(queryId); COPY_SCALAR_FIELD(hasReturning); COPY_SCALAR_FIELD(hasModifyingCTE); COPY_SCALAR_FIELD(canSetTag); COPY_SCALAR_FIELD(transientPlan); COPY_SCALAR_FIELD(dependsOnRole); COPY_SCALAR_FIELD(parallelModeNeeded); COPY_SCALAR_FIELD(jitFlags); COPY_NODE_FIELD(planTree); COPY_NODE_FIELD(rtable); COPY_NODE_FIELD(resultRelations); COPY_NODE_FIELD(appendRelations); COPY_NODE_FIELD(subplans); COPY_BITMAPSET_FIELD(rewindPlanIDs); COPY_NODE_FIELD(rowMarks); COPY_NODE_FIELD(relationOids); COPY_NODE_FIELD(invalItems); COPY_NODE_FIELD(paramExecTypes); COPY_NODE_FIELD(utilityStmt); COPY_LOCATION_FIELD(stmt_location); COPY_SCALAR_FIELD(stmt_len); return newnode; } /* * CopyPlanFields * * This function copies the fields of the Plan node. It is used by * all the copy functions for classes which inherit from Plan. */ static void CopyPlanFields(const Plan *from, Plan *newnode) { COPY_SCALAR_FIELD(startup_cost); COPY_SCALAR_FIELD(total_cost); COPY_SCALAR_FIELD(plan_rows); COPY_SCALAR_FIELD(plan_width); COPY_SCALAR_FIELD(parallel_aware); COPY_SCALAR_FIELD(parallel_safe); COPY_SCALAR_FIELD(async_capable); COPY_SCALAR_FIELD(plan_node_id); COPY_NODE_FIELD(targetlist); COPY_NODE_FIELD(qual); COPY_NODE_FIELD(lefttree); COPY_NODE_FIELD(righttree); COPY_NODE_FIELD(initPlan); COPY_BITMAPSET_FIELD(extParam); COPY_BITMAPSET_FIELD(allParam); } /* * _copyPlan */ static Plan * _copyPlan(const Plan *from) { Plan *newnode = makeNode(Plan); /* * copy node superclass fields */ CopyPlanFields(from, newnode); return newnode; } /* * _copyResult */ static Result * _copyResult(const Result *from) { Result *newnode = makeNode(Result); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(resconstantqual); return newnode; } /* * _copyProjectSet */ static ProjectSet * _copyProjectSet(const ProjectSet *from) { ProjectSet *newnode = makeNode(ProjectSet); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); return newnode; } /* * _copyModifyTable */ static ModifyTable * _copyModifyTable(const ModifyTable *from) { ModifyTable *newnode = makeNode(ModifyTable); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(operation); COPY_SCALAR_FIELD(canSetTag); COPY_SCALAR_FIELD(nominalRelation); COPY_SCALAR_FIELD(rootRelation); COPY_SCALAR_FIELD(partColsUpdated); COPY_NODE_FIELD(resultRelations); COPY_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); return newnode; } /* * _copyAppend */ static Append * _copyAppend(const Append *from) { Append *newnode = makeNode(Append); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_BITMAPSET_FIELD(apprelids); COPY_NODE_FIELD(appendplans); COPY_SCALAR_FIELD(nasyncplans); COPY_SCALAR_FIELD(first_partial_plan); COPY_NODE_FIELD(part_prune_info); return newnode; } /* * _copyMergeAppend */ static MergeAppend * _copyMergeAppend(const MergeAppend *from) { MergeAppend *newnode = makeNode(MergeAppend); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_BITMAPSET_FIELD(apprelids); COPY_NODE_FIELD(mergeplans); COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(sortColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(sortOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(collations, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(nullsFirst, from->numCols * sizeof(bool)); COPY_NODE_FIELD(part_prune_info); return newnode; } /* * _copyRecursiveUnion */ static RecursiveUnion * _copyRecursiveUnion(const RecursiveUnion *from) { RecursiveUnion *newnode = makeNode(RecursiveUnion); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(wtParam); COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(dupColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(dupOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(dupCollations, from->numCols * sizeof(Oid)); COPY_SCALAR_FIELD(numGroups); return newnode; } /* * _copyBitmapAnd */ static BitmapAnd * _copyBitmapAnd(const BitmapAnd *from) { BitmapAnd *newnode = makeNode(BitmapAnd); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(bitmapplans); return newnode; } /* * _copyBitmapOr */ static BitmapOr * _copyBitmapOr(const BitmapOr *from) { BitmapOr *newnode = makeNode(BitmapOr); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(isshared); COPY_NODE_FIELD(bitmapplans); return newnode; } /* * _copyGather */ static Gather * _copyGather(const Gather *from) { Gather *newnode = makeNode(Gather); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(num_workers); COPY_SCALAR_FIELD(rescan_param); COPY_SCALAR_FIELD(single_copy); COPY_SCALAR_FIELD(invisible); COPY_BITMAPSET_FIELD(initParam); return newnode; } /* * _copyGatherMerge */ static GatherMerge * _copyGatherMerge(const GatherMerge *from) { GatherMerge *newnode = makeNode(GatherMerge); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(num_workers); COPY_SCALAR_FIELD(rescan_param); COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(sortColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(sortOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(collations, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(nullsFirst, from->numCols * sizeof(bool)); COPY_BITMAPSET_FIELD(initParam); return newnode; } /* * CopyScanFields * * This function copies the fields of the Scan node. It is used by * all the copy functions for classes which inherit from Scan. */ static void CopyScanFields(const Scan *from, Scan *newnode) { CopyPlanFields((const Plan *) from, (Plan *) newnode); COPY_SCALAR_FIELD(scanrelid); } /* * _copyScan */ static Scan * _copyScan(const Scan *from) { Scan *newnode = makeNode(Scan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); return newnode; } /* * _copySeqScan */ static SeqScan * _copySeqScan(const SeqScan *from) { SeqScan *newnode = makeNode(SeqScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); return newnode; } /* * _copySampleScan */ static SampleScan * _copySampleScan(const SampleScan *from) { SampleScan *newnode = makeNode(SampleScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(tablesample); return newnode; } /* * _copyIndexScan */ static IndexScan * _copyIndexScan(const IndexScan *from) { IndexScan *newnode = makeNode(IndexScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(indexid); COPY_NODE_FIELD(indexqual); COPY_NODE_FIELD(indexqualorig); COPY_NODE_FIELD(indexorderby); COPY_NODE_FIELD(indexorderbyorig); COPY_NODE_FIELD(indexorderbyops); COPY_SCALAR_FIELD(indexorderdir); return newnode; } /* * _copyIndexOnlyScan */ static IndexOnlyScan * _copyIndexOnlyScan(const IndexOnlyScan *from) { IndexOnlyScan *newnode = makeNode(IndexOnlyScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(indexid); COPY_NODE_FIELD(indexqual); COPY_NODE_FIELD(recheckqual); COPY_NODE_FIELD(indexorderby); COPY_NODE_FIELD(indextlist); COPY_SCALAR_FIELD(indexorderdir); return newnode; } /* * _copyBitmapIndexScan */ static BitmapIndexScan * _copyBitmapIndexScan(const BitmapIndexScan *from) { BitmapIndexScan *newnode = makeNode(BitmapIndexScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(indexid); COPY_SCALAR_FIELD(isshared); COPY_NODE_FIELD(indexqual); COPY_NODE_FIELD(indexqualorig); return newnode; } /* * _copyBitmapHeapScan */ static BitmapHeapScan * _copyBitmapHeapScan(const BitmapHeapScan *from) { BitmapHeapScan *newnode = makeNode(BitmapHeapScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(bitmapqualorig); return newnode; } /* * _copyTidScan */ static TidScan * _copyTidScan(const TidScan *from) { TidScan *newnode = makeNode(TidScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(tidquals); return newnode; } /* * _copyTidRangeScan */ static TidRangeScan * _copyTidRangeScan(const TidRangeScan *from) { TidRangeScan *newnode = makeNode(TidRangeScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(tidrangequals); return newnode; } /* * _copySubqueryScan */ static SubqueryScan * _copySubqueryScan(const SubqueryScan *from) { SubqueryScan *newnode = makeNode(SubqueryScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(subplan); COPY_SCALAR_FIELD(scanstatus); return newnode; } /* * _copyFunctionScan */ static FunctionScan * _copyFunctionScan(const FunctionScan *from) { FunctionScan *newnode = makeNode(FunctionScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(functions); COPY_SCALAR_FIELD(funcordinality); return newnode; } /* * _copyTableFuncScan */ static TableFuncScan * _copyTableFuncScan(const TableFuncScan *from) { TableFuncScan *newnode = makeNode(TableFuncScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(tablefunc); return newnode; } /* * _copyValuesScan */ static ValuesScan * _copyValuesScan(const ValuesScan *from) { ValuesScan *newnode = makeNode(ValuesScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(values_lists); return newnode; } /* * _copyCteScan */ static CteScan * _copyCteScan(const CteScan *from) { CteScan *newnode = makeNode(CteScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(ctePlanId); COPY_SCALAR_FIELD(cteParam); return newnode; } /* * _copyNamedTuplestoreScan */ static NamedTuplestoreScan * _copyNamedTuplestoreScan(const NamedTuplestoreScan *from) { NamedTuplestoreScan *newnode = makeNode(NamedTuplestoreScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_STRING_FIELD(enrname); return newnode; } /* * _copyWorkTableScan */ static WorkTableScan * _copyWorkTableScan(const WorkTableScan *from) { WorkTableScan *newnode = makeNode(WorkTableScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(wtParam); return newnode; } /* * _copyForeignScan */ static ForeignScan * _copyForeignScan(const ForeignScan *from) { ForeignScan *newnode = makeNode(ForeignScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(operation); COPY_SCALAR_FIELD(resultRelation); COPY_SCALAR_FIELD(fs_server); COPY_NODE_FIELD(fdw_exprs); COPY_NODE_FIELD(fdw_private); COPY_NODE_FIELD(fdw_scan_tlist); COPY_NODE_FIELD(fdw_recheck_quals); COPY_BITMAPSET_FIELD(fs_relids); COPY_SCALAR_FIELD(fsSystemCol); return newnode; } /* * _copyCustomScan */ static CustomScan * _copyCustomScan(const CustomScan *from) { CustomScan *newnode = makeNode(CustomScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(flags); COPY_NODE_FIELD(custom_plans); COPY_NODE_FIELD(custom_exprs); COPY_NODE_FIELD(custom_private); COPY_NODE_FIELD(custom_scan_tlist); COPY_BITMAPSET_FIELD(custom_relids); /* * NOTE: The method field of CustomScan is required to be a pointer to a * static table of callback functions. So we don't copy the table itself, * just reference the original one. */ COPY_SCALAR_FIELD(methods); return newnode; } /* * CopyJoinFields * * This function copies the fields of the Join node. It is used by * all the copy functions for classes which inherit from Join. */ static void CopyJoinFields(const Join *from, Join *newnode) { CopyPlanFields((const Plan *) from, (Plan *) newnode); COPY_SCALAR_FIELD(jointype); COPY_SCALAR_FIELD(inner_unique); COPY_NODE_FIELD(joinqual); } /* * _copyJoin */ static Join * _copyJoin(const Join *from) { Join *newnode = makeNode(Join); /* * copy node superclass fields */ CopyJoinFields(from, newnode); return newnode; } /* * _copyNestLoop */ static NestLoop * _copyNestLoop(const NestLoop *from) { NestLoop *newnode = makeNode(NestLoop); /* * copy node superclass fields */ CopyJoinFields((const Join *) from, (Join *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(nestParams); return newnode; } /* * _copyMergeJoin */ static MergeJoin * _copyMergeJoin(const MergeJoin *from) { MergeJoin *newnode = makeNode(MergeJoin); int numCols; /* * copy node superclass fields */ CopyJoinFields((const Join *) from, (Join *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(skip_mark_restore); COPY_NODE_FIELD(mergeclauses); numCols = list_length(from->mergeclauses); COPY_POINTER_FIELD(mergeFamilies, numCols * sizeof(Oid)); COPY_POINTER_FIELD(mergeCollations, numCols * sizeof(Oid)); COPY_POINTER_FIELD(mergeStrategies, numCols * sizeof(int)); COPY_POINTER_FIELD(mergeNullsFirst, numCols * sizeof(bool)); return newnode; } /* * _copyHashJoin */ static HashJoin * _copyHashJoin(const HashJoin *from) { HashJoin *newnode = makeNode(HashJoin); /* * copy node superclass fields */ CopyJoinFields((const Join *) from, (Join *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(hashclauses); COPY_NODE_FIELD(hashoperators); COPY_NODE_FIELD(hashcollations); COPY_NODE_FIELD(hashkeys); return newnode; } /* * _copyMaterial */ static Material * _copyMaterial(const Material *from) { Material *newnode = makeNode(Material); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); return newnode; } /* * _copyMemoize */ static Memoize * _copyMemoize(const Memoize *from) { Memoize *newnode = makeNode(Memoize); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(numKeys); COPY_POINTER_FIELD(hashOperators, sizeof(Oid) * from->numKeys); COPY_POINTER_FIELD(collations, sizeof(Oid) * from->numKeys); 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; } /* * CopySortFields * * This function copies the fields of the Sort node. It is used by * all the copy functions for classes which inherit from Sort. */ static void CopySortFields(const Sort *from, Sort *newnode) { CopyPlanFields((const Plan *) from, (Plan *) newnode); COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(sortColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(sortOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(collations, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(nullsFirst, from->numCols * sizeof(bool)); } /* * _copySort */ static Sort * _copySort(const Sort *from) { Sort *newnode = makeNode(Sort); /* * copy node superclass fields */ CopySortFields(from, newnode); return newnode; } /* * _copyIncrementalSort */ static IncrementalSort * _copyIncrementalSort(const IncrementalSort *from) { IncrementalSort *newnode = makeNode(IncrementalSort); /* * copy node superclass fields */ CopySortFields((const Sort *) from, (Sort *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(nPresortedCols); return newnode; } /* * _copyGroup */ static Group * _copyGroup(const Group *from) { Group *newnode = makeNode(Group); CopyPlanFields((const Plan *) from, (Plan *) newnode); COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(grpColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(grpOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(grpCollations, from->numCols * sizeof(Oid)); return newnode; } /* * _copyAgg */ static Agg * _copyAgg(const Agg *from) { Agg *newnode = makeNode(Agg); CopyPlanFields((const Plan *) from, (Plan *) newnode); COPY_SCALAR_FIELD(aggstrategy); COPY_SCALAR_FIELD(aggsplit); COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(grpColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(grpOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(grpCollations, from->numCols * sizeof(Oid)); COPY_SCALAR_FIELD(numGroups); COPY_SCALAR_FIELD(transitionSpace); COPY_BITMAPSET_FIELD(aggParams); COPY_NODE_FIELD(groupingSets); COPY_NODE_FIELD(chain); return newnode; } /* * _copyWindowAgg */ static WindowAgg * _copyWindowAgg(const WindowAgg *from) { WindowAgg *newnode = makeNode(WindowAgg); CopyPlanFields((const Plan *) from, (Plan *) newnode); COPY_SCALAR_FIELD(winref); COPY_SCALAR_FIELD(partNumCols); 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; } /* * _copyUnique */ static Unique * _copyUnique(const Unique *from) { Unique *newnode = makeNode(Unique); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(uniqColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(uniqOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(uniqCollations, from->numCols * sizeof(Oid)); return newnode; } /* * _copyHash */ static Hash * _copyHash(const Hash *from) { Hash *newnode = makeNode(Hash); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(hashkeys); COPY_SCALAR_FIELD(skewTable); COPY_SCALAR_FIELD(skewColumn); COPY_SCALAR_FIELD(skewInherit); COPY_SCALAR_FIELD(rows_total); return newnode; } /* * _copySetOp */ static SetOp * _copySetOp(const SetOp *from) { SetOp *newnode = makeNode(SetOp); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(cmd); COPY_SCALAR_FIELD(strategy); COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(dupColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(dupOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(dupCollations, from->numCols * sizeof(Oid)); COPY_SCALAR_FIELD(flagColIdx); COPY_SCALAR_FIELD(firstFlag); COPY_SCALAR_FIELD(numGroups); return newnode; } /* * _copyLockRows */ static LockRows * _copyLockRows(const LockRows *from) { LockRows *newnode = makeNode(LockRows); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(rowMarks); COPY_SCALAR_FIELD(epqParam); return newnode; } /* * _copyLimit */ static Limit * _copyLimit(const Limit *from) { Limit *newnode = makeNode(Limit); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(limitOffset); COPY_NODE_FIELD(limitCount); COPY_SCALAR_FIELD(limitOption); COPY_SCALAR_FIELD(uniqNumCols); COPY_POINTER_FIELD(uniqColIdx, from->uniqNumCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(uniqOperators, from->uniqNumCols * sizeof(Oid)); COPY_POINTER_FIELD(uniqCollations, from->uniqNumCols * sizeof(Oid)); return newnode; } /* * _copyNestLoopParam */ static NestLoopParam * _copyNestLoopParam(const NestLoopParam *from) { NestLoopParam *newnode = makeNode(NestLoopParam); COPY_SCALAR_FIELD(paramno); COPY_NODE_FIELD(paramval); return newnode; } /* * _copyPlanRowMark */ static PlanRowMark * _copyPlanRowMark(const PlanRowMark *from) { PlanRowMark *newnode = makeNode(PlanRowMark); COPY_SCALAR_FIELD(rti); COPY_SCALAR_FIELD(prti); COPY_SCALAR_FIELD(rowmarkId); COPY_SCALAR_FIELD(markType); COPY_SCALAR_FIELD(allMarkTypes); COPY_SCALAR_FIELD(strength); COPY_SCALAR_FIELD(waitPolicy); COPY_SCALAR_FIELD(isParent); return newnode; } static PartitionPruneInfo * _copyPartitionPruneInfo(const PartitionPruneInfo *from) { PartitionPruneInfo *newnode = makeNode(PartitionPruneInfo); COPY_NODE_FIELD(prune_infos); COPY_BITMAPSET_FIELD(other_subplans); return newnode; } static PartitionedRelPruneInfo * _copyPartitionedRelPruneInfo(const PartitionedRelPruneInfo *from) { PartitionedRelPruneInfo *newnode = makeNode(PartitionedRelPruneInfo); COPY_SCALAR_FIELD(rtindex); COPY_BITMAPSET_FIELD(present_parts); COPY_SCALAR_FIELD(nparts); COPY_POINTER_FIELD(subplan_map, from->nparts * sizeof(int)); COPY_POINTER_FIELD(subpart_map, from->nparts * sizeof(int)); COPY_POINTER_FIELD(relid_map, from->nparts * sizeof(Oid)); COPY_NODE_FIELD(initial_pruning_steps); COPY_NODE_FIELD(exec_pruning_steps); COPY_BITMAPSET_FIELD(execparamids); return newnode; } /* * _copyPartitionPruneStepOp */ static PartitionPruneStepOp * _copyPartitionPruneStepOp(const PartitionPruneStepOp *from) { PartitionPruneStepOp *newnode = makeNode(PartitionPruneStepOp); COPY_SCALAR_FIELD(step.step_id); COPY_SCALAR_FIELD(opstrategy); COPY_NODE_FIELD(exprs); COPY_NODE_FIELD(cmpfns); COPY_BITMAPSET_FIELD(nullkeys); return newnode; } /* * _copyPartitionPruneStepCombine */ static PartitionPruneStepCombine * _copyPartitionPruneStepCombine(const PartitionPruneStepCombine *from) { PartitionPruneStepCombine *newnode = makeNode(PartitionPruneStepCombine); COPY_SCALAR_FIELD(step.step_id); COPY_SCALAR_FIELD(combineOp); COPY_NODE_FIELD(source_stepids); return newnode; } /* * _copyPlanInvalItem */ static PlanInvalItem * _copyPlanInvalItem(const PlanInvalItem *from) { PlanInvalItem *newnode = makeNode(PlanInvalItem); COPY_SCALAR_FIELD(cacheId); COPY_SCALAR_FIELD(hashValue); return newnode; } /* **************************************************************** * primnodes.h copy functions * **************************************************************** */ /* * _copyAlias */ static Alias * _copyAlias(const Alias *from) { Alias *newnode = makeNode(Alias); COPY_STRING_FIELD(aliasname); COPY_NODE_FIELD(colnames); return newnode; } /* * _copyRangeVar */ static RangeVar * _copyRangeVar(const RangeVar *from) { RangeVar *newnode = makeNode(RangeVar); COPY_STRING_FIELD(catalogname); COPY_STRING_FIELD(schemaname); COPY_STRING_FIELD(relname); COPY_SCALAR_FIELD(inh); COPY_SCALAR_FIELD(relpersistence); COPY_NODE_FIELD(alias); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyTableFunc */ static TableFunc * _copyTableFunc(const TableFunc *from) { TableFunc *newnode = makeNode(TableFunc); COPY_NODE_FIELD(ns_uris); COPY_NODE_FIELD(ns_names); COPY_NODE_FIELD(docexpr); COPY_NODE_FIELD(rowexpr); COPY_NODE_FIELD(colnames); COPY_NODE_FIELD(coltypes); COPY_NODE_FIELD(coltypmods); COPY_NODE_FIELD(colcollations); COPY_NODE_FIELD(colexprs); COPY_NODE_FIELD(coldefexprs); COPY_BITMAPSET_FIELD(notnulls); COPY_SCALAR_FIELD(ordinalitycol); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyIntoClause */ static IntoClause * _copyIntoClause(const IntoClause *from) { IntoClause *newnode = makeNode(IntoClause); COPY_NODE_FIELD(rel); COPY_NODE_FIELD(colNames); COPY_STRING_FIELD(accessMethod); COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(onCommit); COPY_STRING_FIELD(tableSpaceName); COPY_NODE_FIELD(viewQuery); COPY_SCALAR_FIELD(skipData); return newnode; } /* * We don't need a _copyExpr because Expr is an abstract supertype which * should never actually get instantiated. Also, since it has no common * fields except NodeTag, there's no need for a helper routine to factor * out copying the common fields... */ /* * _copyVar */ static Var * _copyVar(const Var *from) { Var *newnode = makeNode(Var); COPY_SCALAR_FIELD(varno); COPY_SCALAR_FIELD(varattno); COPY_SCALAR_FIELD(vartype); COPY_SCALAR_FIELD(vartypmod); COPY_SCALAR_FIELD(varcollid); COPY_SCALAR_FIELD(varlevelsup); COPY_SCALAR_FIELD(varnosyn); COPY_SCALAR_FIELD(varattnosyn); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyConst */ static Const * _copyConst(const Const *from) { Const *newnode = makeNode(Const); COPY_SCALAR_FIELD(consttype); COPY_SCALAR_FIELD(consttypmod); COPY_SCALAR_FIELD(constcollid); COPY_SCALAR_FIELD(constlen); if (from->constbyval || from->constisnull) { /* * passed by value so just copy the datum. Also, don't try to copy * struct when value is null! */ newnode->constvalue = from->constvalue; } else { /* * passed by reference. We need a palloc'd copy. */ newnode->constvalue = datumCopy(from->constvalue, from->constbyval, from->constlen); } COPY_SCALAR_FIELD(constisnull); COPY_SCALAR_FIELD(constbyval); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyParam */ static Param * _copyParam(const Param *from) { Param *newnode = makeNode(Param); COPY_SCALAR_FIELD(paramkind); COPY_SCALAR_FIELD(paramid); COPY_SCALAR_FIELD(paramtype); COPY_SCALAR_FIELD(paramtypmod); COPY_SCALAR_FIELD(paramcollid); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyAggref */ static Aggref * _copyAggref(const Aggref *from) { Aggref *newnode = makeNode(Aggref); COPY_SCALAR_FIELD(aggfnoid); COPY_SCALAR_FIELD(aggtype); COPY_SCALAR_FIELD(aggcollid); COPY_SCALAR_FIELD(inputcollid); COPY_SCALAR_FIELD(aggtranstype); COPY_NODE_FIELD(aggargtypes); COPY_NODE_FIELD(aggdirectargs); COPY_NODE_FIELD(args); COPY_NODE_FIELD(aggorder); COPY_NODE_FIELD(aggdistinct); COPY_NODE_FIELD(aggfilter); COPY_SCALAR_FIELD(aggstar); COPY_SCALAR_FIELD(aggvariadic); COPY_SCALAR_FIELD(aggkind); COPY_SCALAR_FIELD(agglevelsup); COPY_SCALAR_FIELD(aggsplit); COPY_SCALAR_FIELD(aggno); COPY_SCALAR_FIELD(aggtransno); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyGroupingFunc */ static GroupingFunc * _copyGroupingFunc(const GroupingFunc *from) { GroupingFunc *newnode = makeNode(GroupingFunc); COPY_NODE_FIELD(args); COPY_NODE_FIELD(refs); COPY_NODE_FIELD(cols); COPY_SCALAR_FIELD(agglevelsup); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyWindowFunc */ static WindowFunc * _copyWindowFunc(const WindowFunc *from) { WindowFunc *newnode = makeNode(WindowFunc); COPY_SCALAR_FIELD(winfnoid); COPY_SCALAR_FIELD(wintype); COPY_SCALAR_FIELD(wincollid); COPY_SCALAR_FIELD(inputcollid); COPY_NODE_FIELD(args); COPY_NODE_FIELD(aggfilter); COPY_SCALAR_FIELD(winref); COPY_SCALAR_FIELD(winstar); COPY_SCALAR_FIELD(winagg); COPY_LOCATION_FIELD(location); return newnode; } /* * _copySubscriptingRef */ static SubscriptingRef * _copySubscriptingRef(const SubscriptingRef *from) { SubscriptingRef *newnode = makeNode(SubscriptingRef); COPY_SCALAR_FIELD(refcontainertype); COPY_SCALAR_FIELD(refelemtype); COPY_SCALAR_FIELD(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; } /* * _copyFuncExpr */ static FuncExpr * _copyFuncExpr(const FuncExpr *from) { FuncExpr *newnode = makeNode(FuncExpr); COPY_SCALAR_FIELD(funcid); COPY_SCALAR_FIELD(funcresulttype); COPY_SCALAR_FIELD(funcretset); COPY_SCALAR_FIELD(funcvariadic); COPY_SCALAR_FIELD(funcformat); COPY_SCALAR_FIELD(funccollid); COPY_SCALAR_FIELD(inputcollid); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyNamedArgExpr * */ static NamedArgExpr * _copyNamedArgExpr(const NamedArgExpr *from) { NamedArgExpr *newnode = makeNode(NamedArgExpr); COPY_NODE_FIELD(arg); COPY_STRING_FIELD(name); COPY_SCALAR_FIELD(argnumber); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyOpExpr */ static OpExpr * _copyOpExpr(const OpExpr *from) { OpExpr *newnode = makeNode(OpExpr); COPY_SCALAR_FIELD(opno); COPY_SCALAR_FIELD(opfuncid); COPY_SCALAR_FIELD(opresulttype); COPY_SCALAR_FIELD(opretset); COPY_SCALAR_FIELD(opcollid); COPY_SCALAR_FIELD(inputcollid); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyDistinctExpr (same as OpExpr) */ static DistinctExpr * _copyDistinctExpr(const DistinctExpr *from) { DistinctExpr *newnode = makeNode(DistinctExpr); COPY_SCALAR_FIELD(opno); COPY_SCALAR_FIELD(opfuncid); COPY_SCALAR_FIELD(opresulttype); COPY_SCALAR_FIELD(opretset); COPY_SCALAR_FIELD(opcollid); COPY_SCALAR_FIELD(inputcollid); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyNullIfExpr (same as OpExpr) */ static NullIfExpr * _copyNullIfExpr(const NullIfExpr *from) { NullIfExpr *newnode = makeNode(NullIfExpr); COPY_SCALAR_FIELD(opno); COPY_SCALAR_FIELD(opfuncid); COPY_SCALAR_FIELD(opresulttype); COPY_SCALAR_FIELD(opretset); COPY_SCALAR_FIELD(opcollid); COPY_SCALAR_FIELD(inputcollid); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyScalarArrayOpExpr */ static ScalarArrayOpExpr * _copyScalarArrayOpExpr(const ScalarArrayOpExpr *from) { ScalarArrayOpExpr *newnode = makeNode(ScalarArrayOpExpr); COPY_SCALAR_FIELD(opno); COPY_SCALAR_FIELD(opfuncid); COPY_SCALAR_FIELD(hashfuncid); COPY_SCALAR_FIELD(negfuncid); COPY_SCALAR_FIELD(useOr); COPY_SCALAR_FIELD(inputcollid); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyBoolExpr */ static BoolExpr * _copyBoolExpr(const BoolExpr *from) { BoolExpr *newnode = makeNode(BoolExpr); COPY_SCALAR_FIELD(boolop); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } /* * _copySubLink */ static SubLink * _copySubLink(const SubLink *from) { SubLink *newnode = makeNode(SubLink); COPY_SCALAR_FIELD(subLinkType); COPY_SCALAR_FIELD(subLinkId); COPY_NODE_FIELD(testexpr); COPY_NODE_FIELD(operName); COPY_NODE_FIELD(subselect); COPY_LOCATION_FIELD(location); return newnode; } /* * _copySubPlan */ static SubPlan * _copySubPlan(const SubPlan *from) { SubPlan *newnode = makeNode(SubPlan); COPY_SCALAR_FIELD(subLinkType); COPY_NODE_FIELD(testexpr); COPY_NODE_FIELD(paramIds); COPY_SCALAR_FIELD(plan_id); COPY_STRING_FIELD(plan_name); COPY_SCALAR_FIELD(firstColType); COPY_SCALAR_FIELD(firstColTypmod); COPY_SCALAR_FIELD(firstColCollation); COPY_SCALAR_FIELD(useHashTable); COPY_SCALAR_FIELD(unknownEqFalse); COPY_SCALAR_FIELD(parallel_safe); COPY_NODE_FIELD(setParam); COPY_NODE_FIELD(parParam); COPY_NODE_FIELD(args); COPY_SCALAR_FIELD(startup_cost); COPY_SCALAR_FIELD(per_call_cost); return newnode; } /* * _copyAlternativeSubPlan */ static AlternativeSubPlan * _copyAlternativeSubPlan(const AlternativeSubPlan *from) { AlternativeSubPlan *newnode = makeNode(AlternativeSubPlan); COPY_NODE_FIELD(subplans); return newnode; } /* * _copyFieldSelect */ static FieldSelect * _copyFieldSelect(const FieldSelect *from) { FieldSelect *newnode = makeNode(FieldSelect); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(fieldnum); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(resulttypmod); COPY_SCALAR_FIELD(resultcollid); return newnode; } /* * _copyFieldStore */ static FieldStore * _copyFieldStore(const FieldStore *from) { FieldStore *newnode = makeNode(FieldStore); COPY_NODE_FIELD(arg); COPY_NODE_FIELD(newvals); COPY_NODE_FIELD(fieldnums); COPY_SCALAR_FIELD(resulttype); return newnode; } /* * _copyRelabelType */ static RelabelType * _copyRelabelType(const RelabelType *from) { RelabelType *newnode = makeNode(RelabelType); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(resulttypmod); COPY_SCALAR_FIELD(resultcollid); COPY_SCALAR_FIELD(relabelformat); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyCoerceViaIO */ static CoerceViaIO * _copyCoerceViaIO(const CoerceViaIO *from) { CoerceViaIO *newnode = makeNode(CoerceViaIO); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(resultcollid); COPY_SCALAR_FIELD(coerceformat); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyArrayCoerceExpr */ static ArrayCoerceExpr * _copyArrayCoerceExpr(const ArrayCoerceExpr *from) { ArrayCoerceExpr *newnode = makeNode(ArrayCoerceExpr); COPY_NODE_FIELD(arg); COPY_NODE_FIELD(elemexpr); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(resulttypmod); COPY_SCALAR_FIELD(resultcollid); COPY_SCALAR_FIELD(coerceformat); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyConvertRowtypeExpr */ static ConvertRowtypeExpr * _copyConvertRowtypeExpr(const ConvertRowtypeExpr *from) { ConvertRowtypeExpr *newnode = makeNode(ConvertRowtypeExpr); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(convertformat); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyCollateExpr */ static CollateExpr * _copyCollateExpr(const CollateExpr *from) { CollateExpr *newnode = makeNode(CollateExpr); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(collOid); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyCaseExpr */ static CaseExpr * _copyCaseExpr(const CaseExpr *from) { CaseExpr *newnode = makeNode(CaseExpr); COPY_SCALAR_FIELD(casetype); COPY_SCALAR_FIELD(casecollid); COPY_NODE_FIELD(arg); COPY_NODE_FIELD(args); COPY_NODE_FIELD(defresult); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyCaseWhen */ static CaseWhen * _copyCaseWhen(const CaseWhen *from) { CaseWhen *newnode = makeNode(CaseWhen); COPY_NODE_FIELD(expr); COPY_NODE_FIELD(result); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyCaseTestExpr */ static CaseTestExpr * _copyCaseTestExpr(const CaseTestExpr *from) { CaseTestExpr *newnode = makeNode(CaseTestExpr); COPY_SCALAR_FIELD(typeId); COPY_SCALAR_FIELD(typeMod); COPY_SCALAR_FIELD(collation); return newnode; } /* * _copyArrayExpr */ static ArrayExpr * _copyArrayExpr(const ArrayExpr *from) { ArrayExpr *newnode = makeNode(ArrayExpr); COPY_SCALAR_FIELD(array_typeid); COPY_SCALAR_FIELD(array_collid); COPY_SCALAR_FIELD(element_typeid); COPY_NODE_FIELD(elements); COPY_SCALAR_FIELD(multidims); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyRowExpr */ static RowExpr * _copyRowExpr(const RowExpr *from) { RowExpr *newnode = makeNode(RowExpr); COPY_NODE_FIELD(args); COPY_SCALAR_FIELD(row_typeid); COPY_SCALAR_FIELD(row_format); COPY_NODE_FIELD(colnames); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyRowCompareExpr */ static RowCompareExpr * _copyRowCompareExpr(const RowCompareExpr *from) { RowCompareExpr *newnode = makeNode(RowCompareExpr); COPY_SCALAR_FIELD(rctype); COPY_NODE_FIELD(opnos); COPY_NODE_FIELD(opfamilies); COPY_NODE_FIELD(inputcollids); COPY_NODE_FIELD(largs); COPY_NODE_FIELD(rargs); return newnode; } /* * _copyCoalesceExpr */ static CoalesceExpr * _copyCoalesceExpr(const CoalesceExpr *from) { CoalesceExpr *newnode = makeNode(CoalesceExpr); COPY_SCALAR_FIELD(coalescetype); COPY_SCALAR_FIELD(coalescecollid); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyMinMaxExpr */ static MinMaxExpr * _copyMinMaxExpr(const MinMaxExpr *from) { MinMaxExpr *newnode = makeNode(MinMaxExpr); COPY_SCALAR_FIELD(minmaxtype); COPY_SCALAR_FIELD(minmaxcollid); COPY_SCALAR_FIELD(inputcollid); COPY_SCALAR_FIELD(op); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } /* * _copySQLValueFunction */ static SQLValueFunction * _copySQLValueFunction(const SQLValueFunction *from) { SQLValueFunction *newnode = makeNode(SQLValueFunction); COPY_SCALAR_FIELD(op); COPY_SCALAR_FIELD(type); COPY_SCALAR_FIELD(typmod); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyXmlExpr */ static XmlExpr * _copyXmlExpr(const XmlExpr *from) { XmlExpr *newnode = makeNode(XmlExpr); COPY_SCALAR_FIELD(op); COPY_STRING_FIELD(name); COPY_NODE_FIELD(named_args); COPY_NODE_FIELD(arg_names); COPY_NODE_FIELD(args); COPY_SCALAR_FIELD(xmloption); COPY_SCALAR_FIELD(type); COPY_SCALAR_FIELD(typmod); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyNullTest */ static NullTest * _copyNullTest(const NullTest *from) { NullTest *newnode = makeNode(NullTest); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(nulltesttype); COPY_SCALAR_FIELD(argisrow); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyBooleanTest */ static BooleanTest * _copyBooleanTest(const BooleanTest *from) { BooleanTest *newnode = makeNode(BooleanTest); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(booltesttype); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyCoerceToDomain */ static CoerceToDomain * _copyCoerceToDomain(const CoerceToDomain *from) { CoerceToDomain *newnode = makeNode(CoerceToDomain); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(resulttypmod); COPY_SCALAR_FIELD(resultcollid); COPY_SCALAR_FIELD(coercionformat); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyCoerceToDomainValue */ static CoerceToDomainValue * _copyCoerceToDomainValue(const CoerceToDomainValue *from) { CoerceToDomainValue *newnode = makeNode(CoerceToDomainValue); COPY_SCALAR_FIELD(typeId); COPY_SCALAR_FIELD(typeMod); COPY_SCALAR_FIELD(collation); COPY_LOCATION_FIELD(location); return newnode; } /* * _copySetToDefault */ static SetToDefault * _copySetToDefault(const SetToDefault *from) { SetToDefault *newnode = makeNode(SetToDefault); COPY_SCALAR_FIELD(typeId); COPY_SCALAR_FIELD(typeMod); COPY_SCALAR_FIELD(collation); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyCurrentOfExpr */ static CurrentOfExpr * _copyCurrentOfExpr(const CurrentOfExpr *from) { CurrentOfExpr *newnode = makeNode(CurrentOfExpr); COPY_SCALAR_FIELD(cvarno); COPY_STRING_FIELD(cursor_name); COPY_SCALAR_FIELD(cursor_param); return newnode; } /* * _copyNextValueExpr */ static NextValueExpr * _copyNextValueExpr(const NextValueExpr *from) { NextValueExpr *newnode = makeNode(NextValueExpr); COPY_SCALAR_FIELD(seqid); COPY_SCALAR_FIELD(typeId); return newnode; } /* * _copyInferenceElem */ static InferenceElem * _copyInferenceElem(const InferenceElem *from) { InferenceElem *newnode = makeNode(InferenceElem); COPY_NODE_FIELD(expr); COPY_SCALAR_FIELD(infercollid); COPY_SCALAR_FIELD(inferopclass); return newnode; } /* * _copyTargetEntry */ static TargetEntry * _copyTargetEntry(const TargetEntry *from) { TargetEntry *newnode = makeNode(TargetEntry); COPY_NODE_FIELD(expr); COPY_SCALAR_FIELD(resno); COPY_STRING_FIELD(resname); COPY_SCALAR_FIELD(ressortgroupref); COPY_SCALAR_FIELD(resorigtbl); COPY_SCALAR_FIELD(resorigcol); COPY_SCALAR_FIELD(resjunk); return newnode; } /* * _copyRangeTblRef */ static RangeTblRef * _copyRangeTblRef(const RangeTblRef *from) { RangeTblRef *newnode = makeNode(RangeTblRef); COPY_SCALAR_FIELD(rtindex); return newnode; } /* * _copyJoinExpr */ static JoinExpr * _copyJoinExpr(const JoinExpr *from) { JoinExpr *newnode = makeNode(JoinExpr); COPY_SCALAR_FIELD(jointype); COPY_SCALAR_FIELD(isNatural); COPY_NODE_FIELD(larg); COPY_NODE_FIELD(rarg); COPY_NODE_FIELD(usingClause); COPY_NODE_FIELD(join_using_alias); COPY_NODE_FIELD(quals); COPY_NODE_FIELD(alias); COPY_SCALAR_FIELD(rtindex); return newnode; } /* * _copyFromExpr */ static FromExpr * _copyFromExpr(const FromExpr *from) { FromExpr *newnode = makeNode(FromExpr); COPY_NODE_FIELD(fromlist); COPY_NODE_FIELD(quals); return newnode; } /* * _copyOnConflictExpr */ static OnConflictExpr * _copyOnConflictExpr(const OnConflictExpr *from) { OnConflictExpr *newnode = makeNode(OnConflictExpr); COPY_SCALAR_FIELD(action); COPY_NODE_FIELD(arbiterElems); COPY_NODE_FIELD(arbiterWhere); COPY_SCALAR_FIELD(constraint); COPY_NODE_FIELD(onConflictSet); COPY_NODE_FIELD(onConflictWhere); COPY_SCALAR_FIELD(exclRelIndex); COPY_NODE_FIELD(exclRelTlist); return newnode; } /* **************************************************************** * pathnodes.h copy functions * * We don't support copying RelOptInfo, IndexOptInfo, or Path nodes. * There are some subsidiary structs that are useful to copy, though. * **************************************************************** */ /* * _copyPathKey */ static PathKey * _copyPathKey(const PathKey *from) { PathKey *newnode = makeNode(PathKey); /* EquivalenceClasses are never moved, so just shallow-copy the pointer */ COPY_SCALAR_FIELD(pk_eclass); COPY_SCALAR_FIELD(pk_opfamily); COPY_SCALAR_FIELD(pk_strategy); COPY_SCALAR_FIELD(pk_nulls_first); return newnode; } /* * _copyRestrictInfo */ static RestrictInfo * _copyRestrictInfo(const RestrictInfo *from) { RestrictInfo *newnode = makeNode(RestrictInfo); COPY_NODE_FIELD(clause); COPY_SCALAR_FIELD(is_pushed_down); COPY_SCALAR_FIELD(outerjoin_delayed); COPY_SCALAR_FIELD(can_join); COPY_SCALAR_FIELD(pseudoconstant); COPY_SCALAR_FIELD(leakproof); COPY_SCALAR_FIELD(has_volatile); COPY_SCALAR_FIELD(security_level); COPY_BITMAPSET_FIELD(clause_relids); COPY_BITMAPSET_FIELD(required_relids); COPY_BITMAPSET_FIELD(outer_relids); COPY_BITMAPSET_FIELD(nullable_relids); COPY_BITMAPSET_FIELD(left_relids); COPY_BITMAPSET_FIELD(right_relids); COPY_NODE_FIELD(orclause); /* EquivalenceClasses are never copied, so shallow-copy the pointers */ COPY_SCALAR_FIELD(parent_ec); COPY_SCALAR_FIELD(eval_cost); COPY_SCALAR_FIELD(norm_selec); COPY_SCALAR_FIELD(outer_selec); COPY_NODE_FIELD(mergeopfamilies); /* EquivalenceClasses are never copied, so shallow-copy the pointers */ COPY_SCALAR_FIELD(left_ec); COPY_SCALAR_FIELD(right_ec); COPY_SCALAR_FIELD(left_em); COPY_SCALAR_FIELD(right_em); /* MergeScanSelCache isn't a Node, so hard to copy; just reset cache */ newnode->scansel_cache = NIL; COPY_SCALAR_FIELD(outer_is_left); COPY_SCALAR_FIELD(hashjoinoperator); COPY_SCALAR_FIELD(left_bucketsize); COPY_SCALAR_FIELD(right_bucketsize); COPY_SCALAR_FIELD(left_mcvfreq); COPY_SCALAR_FIELD(right_mcvfreq); COPY_SCALAR_FIELD(left_hasheqoperator); COPY_SCALAR_FIELD(right_hasheqoperator); return newnode; } /* * _copyPlaceHolderVar */ static PlaceHolderVar * _copyPlaceHolderVar(const PlaceHolderVar *from) { PlaceHolderVar *newnode = makeNode(PlaceHolderVar); COPY_NODE_FIELD(phexpr); COPY_BITMAPSET_FIELD(phrels); COPY_SCALAR_FIELD(phid); COPY_SCALAR_FIELD(phlevelsup); return newnode; } /* * _copySpecialJoinInfo */ static SpecialJoinInfo * _copySpecialJoinInfo(const SpecialJoinInfo *from) { SpecialJoinInfo *newnode = makeNode(SpecialJoinInfo); COPY_BITMAPSET_FIELD(min_lefthand); COPY_BITMAPSET_FIELD(min_righthand); COPY_BITMAPSET_FIELD(syn_lefthand); COPY_BITMAPSET_FIELD(syn_righthand); COPY_SCALAR_FIELD(jointype); COPY_SCALAR_FIELD(lhs_strict); COPY_SCALAR_FIELD(delay_upper_joins); COPY_SCALAR_FIELD(semi_can_btree); COPY_SCALAR_FIELD(semi_can_hash); COPY_NODE_FIELD(semi_operators); COPY_NODE_FIELD(semi_rhs_exprs); return newnode; } /* * _copyAppendRelInfo */ static AppendRelInfo * _copyAppendRelInfo(const AppendRelInfo *from) { AppendRelInfo *newnode = makeNode(AppendRelInfo); COPY_SCALAR_FIELD(parent_relid); COPY_SCALAR_FIELD(child_relid); COPY_SCALAR_FIELD(parent_reltype); COPY_SCALAR_FIELD(child_reltype); COPY_NODE_FIELD(translated_vars); COPY_SCALAR_FIELD(num_child_cols); COPY_POINTER_FIELD(parent_colnos, from->num_child_cols * sizeof(AttrNumber)); COPY_SCALAR_FIELD(parent_reloid); return newnode; } /* * _copyPlaceHolderInfo */ static PlaceHolderInfo * _copyPlaceHolderInfo(const PlaceHolderInfo *from) { PlaceHolderInfo *newnode = makeNode(PlaceHolderInfo); COPY_SCALAR_FIELD(phid); COPY_NODE_FIELD(ph_var); COPY_BITMAPSET_FIELD(ph_eval_at); COPY_BITMAPSET_FIELD(ph_lateral); COPY_BITMAPSET_FIELD(ph_needed); COPY_SCALAR_FIELD(ph_width); return newnode; } /* **************************************************************** * parsenodes.h copy functions * **************************************************************** */ static RangeTblEntry * _copyRangeTblEntry(const RangeTblEntry *from) { RangeTblEntry *newnode = makeNode(RangeTblEntry); COPY_SCALAR_FIELD(rtekind); COPY_SCALAR_FIELD(relid); COPY_SCALAR_FIELD(relkind); COPY_SCALAR_FIELD(rellockmode); COPY_NODE_FIELD(tablesample); COPY_NODE_FIELD(subquery); COPY_SCALAR_FIELD(security_barrier); COPY_SCALAR_FIELD(jointype); COPY_SCALAR_FIELD(joinmergedcols); COPY_NODE_FIELD(joinaliasvars); COPY_NODE_FIELD(joinleftcols); COPY_NODE_FIELD(joinrightcols); COPY_NODE_FIELD(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_NODE_FIELD(alias); COPY_NODE_FIELD(eref); COPY_SCALAR_FIELD(lateral); COPY_SCALAR_FIELD(inh); COPY_SCALAR_FIELD(inFromCl); COPY_SCALAR_FIELD(requiredPerms); COPY_SCALAR_FIELD(checkAsUser); COPY_BITMAPSET_FIELD(selectedCols); COPY_BITMAPSET_FIELD(insertedCols); COPY_BITMAPSET_FIELD(updatedCols); COPY_BITMAPSET_FIELD(extraUpdatedCols); COPY_NODE_FIELD(securityQuals); return newnode; } static RangeTblFunction * _copyRangeTblFunction(const RangeTblFunction *from) { RangeTblFunction *newnode = makeNode(RangeTblFunction); COPY_NODE_FIELD(funcexpr); COPY_SCALAR_FIELD(funccolcount); COPY_NODE_FIELD(funccolnames); COPY_NODE_FIELD(funccoltypes); COPY_NODE_FIELD(funccoltypmods); COPY_NODE_FIELD(funccolcollations); COPY_BITMAPSET_FIELD(funcparams); return newnode; } static TableSampleClause * _copyTableSampleClause(const TableSampleClause *from) { TableSampleClause *newnode = makeNode(TableSampleClause); COPY_SCALAR_FIELD(tsmhandler); COPY_NODE_FIELD(args); COPY_NODE_FIELD(repeatable); return newnode; } static WithCheckOption * _copyWithCheckOption(const WithCheckOption *from) { WithCheckOption *newnode = makeNode(WithCheckOption); COPY_SCALAR_FIELD(kind); COPY_STRING_FIELD(relname); COPY_STRING_FIELD(polname); COPY_NODE_FIELD(qual); COPY_SCALAR_FIELD(cascaded); return newnode; } static SortGroupClause * _copySortGroupClause(const SortGroupClause *from) { SortGroupClause *newnode = makeNode(SortGroupClause); COPY_SCALAR_FIELD(tleSortGroupRef); COPY_SCALAR_FIELD(eqop); COPY_SCALAR_FIELD(sortop); COPY_SCALAR_FIELD(nulls_first); COPY_SCALAR_FIELD(hashable); return newnode; } static GroupingSet * _copyGroupingSet(const GroupingSet *from) { GroupingSet *newnode = makeNode(GroupingSet); COPY_SCALAR_FIELD(kind); COPY_NODE_FIELD(content); COPY_LOCATION_FIELD(location); return newnode; } static WindowClause * _copyWindowClause(const WindowClause *from) { WindowClause *newnode = makeNode(WindowClause); COPY_STRING_FIELD(name); COPY_STRING_FIELD(refname); COPY_NODE_FIELD(partitionClause); COPY_NODE_FIELD(orderClause); COPY_SCALAR_FIELD(frameOptions); COPY_NODE_FIELD(startOffset); COPY_NODE_FIELD(endOffset); COPY_NODE_FIELD(runCondition); 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(matched); COPY_SCALAR_FIELD(commandType); COPY_SCALAR_FIELD(override); COPY_NODE_FIELD(condition); COPY_NODE_FIELD(targetList); COPY_NODE_FIELD(values); return newnode; } static MergeAction * _copyMergeAction(const MergeAction *from) { MergeAction *newnode = makeNode(MergeAction); COPY_SCALAR_FIELD(matched); COPY_SCALAR_FIELD(commandType); COPY_SCALAR_FIELD(override); COPY_NODE_FIELD(qual); COPY_NODE_FIELD(targetList); COPY_NODE_FIELD(updateColnos); 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 ColumnRef * _copyColumnRef(const ColumnRef *from) { ColumnRef *newnode = makeNode(ColumnRef); COPY_NODE_FIELD(fields); COPY_LOCATION_FIELD(location); return newnode; } static ParamRef * _copyParamRef(const ParamRef *from) { ParamRef *newnode = makeNode(ParamRef); COPY_SCALAR_FIELD(number); COPY_LOCATION_FIELD(location); return newnode; } static A_Const * _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 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 TypeName * _copyTypeName(const TypeName *from) { TypeName *newnode = makeNode(TypeName); COPY_NODE_FIELD(names); COPY_SCALAR_FIELD(typeOid); COPY_SCALAR_FIELD(setof); COPY_SCALAR_FIELD(pct_type); COPY_NODE_FIELD(typmods); COPY_SCALAR_FIELD(typemod); COPY_NODE_FIELD(arrayBounds); COPY_LOCATION_FIELD(location); return newnode; } static SortBy * _copySortBy(const SortBy *from) { SortBy *newnode = makeNode(SortBy); COPY_NODE_FIELD(node); COPY_SCALAR_FIELD(sortby_dir); COPY_SCALAR_FIELD(sortby_nulls); COPY_NODE_FIELD(useOp); COPY_LOCATION_FIELD(location); return newnode; } static WindowDef * _copyWindowDef(const WindowDef *from) { WindowDef *newnode = makeNode(WindowDef); COPY_STRING_FIELD(name); COPY_STRING_FIELD(refname); COPY_NODE_FIELD(partitionClause); COPY_NODE_FIELD(orderClause); COPY_SCALAR_FIELD(frameOptions); COPY_NODE_FIELD(startOffset); COPY_NODE_FIELD(endOffset); COPY_LOCATION_FIELD(location); return newnode; } static RangeSubselect * _copyRangeSubselect(const RangeSubselect *from) { RangeSubselect *newnode = makeNode(RangeSubselect); COPY_SCALAR_FIELD(lateral); COPY_NODE_FIELD(subquery); COPY_NODE_FIELD(alias); return newnode; } static RangeFunction * _copyRangeFunction(const RangeFunction *from) { RangeFunction *newnode = makeNode(RangeFunction); COPY_SCALAR_FIELD(lateral); COPY_SCALAR_FIELD(ordinality); COPY_SCALAR_FIELD(is_rowsfrom); COPY_NODE_FIELD(functions); COPY_NODE_FIELD(alias); COPY_NODE_FIELD(coldeflist); return newnode; } static RangeTableSample * _copyRangeTableSample(const RangeTableSample *from) { RangeTableSample *newnode = makeNode(RangeTableSample); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(method); COPY_NODE_FIELD(args); COPY_NODE_FIELD(repeatable); COPY_LOCATION_FIELD(location); return newnode; } static RangeTableFunc * _copyRangeTableFunc(const RangeTableFunc *from) { RangeTableFunc *newnode = makeNode(RangeTableFunc); COPY_SCALAR_FIELD(lateral); COPY_NODE_FIELD(docexpr); COPY_NODE_FIELD(rowexpr); COPY_NODE_FIELD(namespaces); COPY_NODE_FIELD(columns); COPY_NODE_FIELD(alias); COPY_LOCATION_FIELD(location); return newnode; } static RangeTableFuncCol * _copyRangeTableFuncCol(const RangeTableFuncCol *from) { RangeTableFuncCol *newnode = makeNode(RangeTableFuncCol); COPY_STRING_FIELD(colname); COPY_NODE_FIELD(typeName); COPY_SCALAR_FIELD(for_ordinality); COPY_SCALAR_FIELD(is_not_null); COPY_NODE_FIELD(colexpr); COPY_NODE_FIELD(coldefexpr); COPY_LOCATION_FIELD(location); return newnode; } static TypeCast * _copyTypeCast(const TypeCast *from) { TypeCast *newnode = makeNode(TypeCast); COPY_NODE_FIELD(arg); COPY_NODE_FIELD(typeName); COPY_LOCATION_FIELD(location); return newnode; } static CollateClause * _copyCollateClause(const CollateClause *from) { CollateClause *newnode = makeNode(CollateClause); COPY_NODE_FIELD(arg); COPY_NODE_FIELD(collname); COPY_LOCATION_FIELD(location); return newnode; } static IndexElem * _copyIndexElem(const IndexElem *from) { IndexElem *newnode = makeNode(IndexElem); COPY_STRING_FIELD(name); COPY_NODE_FIELD(expr); COPY_STRING_FIELD(indexcolname); COPY_NODE_FIELD(collation); COPY_NODE_FIELD(opclass); COPY_NODE_FIELD(opclassopts); COPY_SCALAR_FIELD(ordering); COPY_SCALAR_FIELD(nulls_ordering); return newnode; } static StatsElem * _copyStatsElem(const StatsElem *from) { StatsElem *newnode = makeNode(StatsElem); COPY_STRING_FIELD(name); COPY_NODE_FIELD(expr); 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_NODE_FIELD(raw_default); COPY_NODE_FIELD(cooked_default); COPY_SCALAR_FIELD(identity); COPY_NODE_FIELD(identitySequence); COPY_SCALAR_FIELD(generated); COPY_NODE_FIELD(collClause); COPY_SCALAR_FIELD(collOid); COPY_NODE_FIELD(constraints); COPY_NODE_FIELD(fdwoptions); COPY_LOCATION_FIELD(location); return newnode; } static Constraint * _copyConstraint(const Constraint *from) { Constraint *newnode = makeNode(Constraint); COPY_SCALAR_FIELD(contype); COPY_STRING_FIELD(conname); COPY_SCALAR_FIELD(deferrable); COPY_SCALAR_FIELD(initdeferred); COPY_LOCATION_FIELD(location); COPY_SCALAR_FIELD(is_no_inherit); COPY_NODE_FIELD(raw_expr); COPY_STRING_FIELD(cooked_expr); COPY_SCALAR_FIELD(generated_when); COPY_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_SCALAR_FIELD(skip_validation); COPY_SCALAR_FIELD(initially_valid); return newnode; } static DefElem * _copyDefElem(const DefElem *from) { DefElem *newnode = makeNode(DefElem); COPY_STRING_FIELD(defnamespace); COPY_STRING_FIELD(defname); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(defaction); COPY_LOCATION_FIELD(location); return newnode; } static LockingClause * _copyLockingClause(const LockingClause *from) { LockingClause *newnode = makeNode(LockingClause); COPY_NODE_FIELD(lockedRels); COPY_SCALAR_FIELD(strength); COPY_SCALAR_FIELD(waitPolicy); return newnode; } static XmlSerialize * _copyXmlSerialize(const XmlSerialize *from) { XmlSerialize *newnode = makeNode(XmlSerialize); COPY_SCALAR_FIELD(xmloption); COPY_NODE_FIELD(expr); COPY_NODE_FIELD(typeName); COPY_LOCATION_FIELD(location); return newnode; } static RoleSpec * _copyRoleSpec(const RoleSpec *from) { RoleSpec *newnode = makeNode(RoleSpec); COPY_SCALAR_FIELD(roletype); COPY_STRING_FIELD(rolename); COPY_LOCATION_FIELD(location); return newnode; } static TriggerTransition * _copyTriggerTransition(const TriggerTransition *from) { TriggerTransition *newnode = makeNode(TriggerTransition); COPY_STRING_FIELD(name); COPY_SCALAR_FIELD(isNew); COPY_SCALAR_FIELD(isTable); return newnode; } static Query * _copyQuery(const Query *from) { Query *newnode = makeNode(Query); COPY_SCALAR_FIELD(commandType); COPY_SCALAR_FIELD(querySource); COPY_SCALAR_FIELD(queryId); COPY_SCALAR_FIELD(canSetTag); COPY_NODE_FIELD(utilityStmt); COPY_SCALAR_FIELD(resultRelation); COPY_SCALAR_FIELD(hasAggs); COPY_SCALAR_FIELD(hasWindowFuncs); COPY_SCALAR_FIELD(hasTargetSRFs); COPY_SCALAR_FIELD(hasSubLinks); COPY_SCALAR_FIELD(hasDistinctOn); COPY_SCALAR_FIELD(hasRecursive); COPY_SCALAR_FIELD(hasModifyingCTE); COPY_SCALAR_FIELD(hasForUpdate); COPY_SCALAR_FIELD(hasRowSecurity); COPY_SCALAR_FIELD(isReturn); COPY_NODE_FIELD(cteList); COPY_NODE_FIELD(rtable); COPY_NODE_FIELD(jointree); COPY_NODE_FIELD(targetList); COPY_SCALAR_FIELD(override); COPY_NODE_FIELD(onConflict); COPY_NODE_FIELD(returningList); COPY_NODE_FIELD(groupClause); COPY_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_NODE_FIELD(mergeActionList); COPY_SCALAR_FIELD(mergeUseOuterJoin); COPY_LOCATION_FIELD(stmt_location); COPY_SCALAR_FIELD(stmt_len); return newnode; } static RawStmt * _copyRawStmt(const RawStmt *from) { RawStmt *newnode = makeNode(RawStmt); COPY_NODE_FIELD(stmt); COPY_LOCATION_FIELD(stmt_location); COPY_SCALAR_FIELD(stmt_len); return newnode; } static InsertStmt * _copyInsertStmt(const InsertStmt *from) { InsertStmt *newnode = makeNode(InsertStmt); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(cols); COPY_NODE_FIELD(selectStmt); COPY_NODE_FIELD(onConflictClause); COPY_NODE_FIELD(returningList); COPY_NODE_FIELD(withClause); COPY_SCALAR_FIELD(override); return newnode; } static DeleteStmt * _copyDeleteStmt(const DeleteStmt *from) { DeleteStmt *newnode = makeNode(DeleteStmt); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(usingClause); COPY_NODE_FIELD(whereClause); COPY_NODE_FIELD(returningList); COPY_NODE_FIELD(withClause); return newnode; } static UpdateStmt * _copyUpdateStmt(const UpdateStmt *from) { UpdateStmt *newnode = makeNode(UpdateStmt); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(targetList); COPY_NODE_FIELD(whereClause); COPY_NODE_FIELD(fromClause); COPY_NODE_FIELD(returningList); COPY_NODE_FIELD(withClause); return newnode; } static 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(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 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 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_SCALAR_FIELD(admin_opt); COPY_NODE_FIELD(grantor); COPY_SCALAR_FIELD(behavior); return newnode; } static AlterDefaultPrivilegesStmt * _copyAlterDefaultPrivilegesStmt(const AlterDefaultPrivilegesStmt *from) { AlterDefaultPrivilegesStmt *newnode = makeNode(AlterDefaultPrivilegesStmt); COPY_NODE_FIELD(options); COPY_NODE_FIELD(action); return newnode; } static DeclareCursorStmt * _copyDeclareCursorStmt(const DeclareCursorStmt *from) { DeclareCursorStmt *newnode = makeNode(DeclareCursorStmt); COPY_STRING_FIELD(portalname); COPY_SCALAR_FIELD(options); COPY_NODE_FIELD(query); return newnode; } static ClosePortalStmt * _copyClosePortalStmt(const ClosePortalStmt *from) { ClosePortalStmt *newnode = makeNode(ClosePortalStmt); COPY_STRING_FIELD(portalname); return newnode; } static CallStmt * _copyCallStmt(const CallStmt *from) { CallStmt *newnode = makeNode(CallStmt); COPY_NODE_FIELD(funccall); COPY_NODE_FIELD(funcexpr); COPY_NODE_FIELD(outargs); 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 CopyStmt * _copyCopyStmt(const CopyStmt *from) { CopyStmt *newnode = makeNode(CopyStmt); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(query); COPY_NODE_FIELD(attlist); COPY_SCALAR_FIELD(is_from); COPY_SCALAR_FIELD(is_program); COPY_STRING_FIELD(filename); COPY_NODE_FIELD(options); COPY_NODE_FIELD(whereClause); return newnode; } /* * CopyCreateStmtFields * * This function copies the fields of the CreateStmt node. It is used by * copy functions for classes which inherit from CreateStmt. */ static void CopyCreateStmtFields(const CreateStmt *from, CreateStmt *newnode) { COPY_NODE_FIELD(relation); COPY_NODE_FIELD(tableElts); COPY_NODE_FIELD(inhRelations); COPY_NODE_FIELD(partspec); COPY_NODE_FIELD(partbound); COPY_NODE_FIELD(ofTypename); COPY_NODE_FIELD(constraints); COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(oncommit); COPY_STRING_FIELD(tablespacename); COPY_STRING_FIELD(accessMethod); COPY_SCALAR_FIELD(if_not_exists); } static CreateStmt * _copyCreateStmt(const CreateStmt *from) { CreateStmt *newnode = makeNode(CreateStmt); CopyCreateStmtFields(from, newnode); return newnode; } static TableLikeClause * _copyTableLikeClause(const TableLikeClause *from) { TableLikeClause *newnode = makeNode(TableLikeClause); COPY_NODE_FIELD(relation); COPY_SCALAR_FIELD(options); COPY_SCALAR_FIELD(relationOid); return newnode; } static DefineStmt * _copyDefineStmt(const DefineStmt *from) { DefineStmt *newnode = makeNode(DefineStmt); COPY_SCALAR_FIELD(kind); COPY_SCALAR_FIELD(oldstyle); COPY_NODE_FIELD(defnames); COPY_NODE_FIELD(args); COPY_NODE_FIELD(definition); COPY_SCALAR_FIELD(if_not_exists); COPY_SCALAR_FIELD(replace); return newnode; } static DropStmt * _copyDropStmt(const DropStmt *from) { DropStmt *newnode = makeNode(DropStmt); COPY_NODE_FIELD(objects); COPY_SCALAR_FIELD(removeType); COPY_SCALAR_FIELD(behavior); COPY_SCALAR_FIELD(missing_ok); COPY_SCALAR_FIELD(concurrent); return newnode; } static TruncateStmt * _copyTruncateStmt(const TruncateStmt *from) { TruncateStmt *newnode = makeNode(TruncateStmt); COPY_NODE_FIELD(relations); COPY_SCALAR_FIELD(restart_seqs); COPY_SCALAR_FIELD(behavior); return newnode; } static CommentStmt * _copyCommentStmt(const CommentStmt *from) { CommentStmt *newnode = makeNode(CommentStmt); COPY_SCALAR_FIELD(objtype); COPY_NODE_FIELD(object); COPY_STRING_FIELD(comment); return newnode; } static SecLabelStmt * _copySecLabelStmt(const SecLabelStmt *from) { SecLabelStmt *newnode = makeNode(SecLabelStmt); COPY_SCALAR_FIELD(objtype); COPY_NODE_FIELD(object); COPY_STRING_FIELD(provider); COPY_STRING_FIELD(label); return newnode; } static FetchStmt * _copyFetchStmt(const FetchStmt *from) { FetchStmt *newnode = makeNode(FetchStmt); COPY_SCALAR_FIELD(direction); COPY_SCALAR_FIELD(howMany); COPY_STRING_FIELD(portalname); COPY_SCALAR_FIELD(ismove); return newnode; } static IndexStmt * _copyIndexStmt(const IndexStmt *from) { IndexStmt *newnode = makeNode(IndexStmt); COPY_STRING_FIELD(idxname); COPY_NODE_FIELD(relation); COPY_STRING_FIELD(accessMethod); COPY_STRING_FIELD(tableSpace); COPY_NODE_FIELD(indexParams); COPY_NODE_FIELD(indexIncludingParams); COPY_NODE_FIELD(options); COPY_NODE_FIELD(whereClause); COPY_NODE_FIELD(excludeOpNames); COPY_STRING_FIELD(idxcomment); COPY_SCALAR_FIELD(indexOid); COPY_SCALAR_FIELD(oldNode); COPY_SCALAR_FIELD(oldCreateSubid); COPY_SCALAR_FIELD(oldFirstRelfilenodeSubid); COPY_SCALAR_FIELD(unique); COPY_SCALAR_FIELD(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 AlterStatsStmt * _copyAlterStatsStmt(const AlterStatsStmt *from) { AlterStatsStmt *newnode = makeNode(AlterStatsStmt); COPY_NODE_FIELD(defnames); COPY_SCALAR_FIELD(stxstattarget); COPY_SCALAR_FIELD(missing_ok); return newnode; } static CreateFunctionStmt * _copyCreateFunctionStmt(const CreateFunctionStmt *from) { CreateFunctionStmt *newnode = makeNode(CreateFunctionStmt); COPY_SCALAR_FIELD(is_procedure); COPY_SCALAR_FIELD(replace); COPY_NODE_FIELD(funcname); COPY_NODE_FIELD(parameters); COPY_NODE_FIELD(returnType); COPY_NODE_FIELD(options); 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 RenameStmt * _copyRenameStmt(const RenameStmt *from) { RenameStmt *newnode = makeNode(RenameStmt); COPY_SCALAR_FIELD(renameType); COPY_SCALAR_FIELD(relationType); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(object); COPY_STRING_FIELD(subname); COPY_STRING_FIELD(newname); COPY_SCALAR_FIELD(behavior); COPY_SCALAR_FIELD(missing_ok); return newnode; } static AlterObjectDependsStmt * _copyAlterObjectDependsStmt(const AlterObjectDependsStmt *from) { AlterObjectDependsStmt *newnode = makeNode(AlterObjectDependsStmt); COPY_SCALAR_FIELD(objectType); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(object); COPY_NODE_FIELD(extname); COPY_SCALAR_FIELD(remove); return newnode; } static AlterObjectSchemaStmt * _copyAlterObjectSchemaStmt(const AlterObjectSchemaStmt *from) { AlterObjectSchemaStmt *newnode = makeNode(AlterObjectSchemaStmt); COPY_SCALAR_FIELD(objectType); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(object); COPY_STRING_FIELD(newschema); COPY_SCALAR_FIELD(missing_ok); return newnode; } static AlterOwnerStmt * _copyAlterOwnerStmt(const AlterOwnerStmt *from) { AlterOwnerStmt *newnode = makeNode(AlterOwnerStmt); COPY_SCALAR_FIELD(objectType); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(object); COPY_NODE_FIELD(newowner); return newnode; } static AlterOperatorStmt * _copyAlterOperatorStmt(const AlterOperatorStmt *from) { AlterOperatorStmt *newnode = makeNode(AlterOperatorStmt); COPY_NODE_FIELD(opername); COPY_NODE_FIELD(options); return newnode; } static AlterTypeStmt * _copyAlterTypeStmt(const AlterTypeStmt *from) { AlterTypeStmt *newnode = makeNode(AlterTypeStmt); COPY_NODE_FIELD(typeName); COPY_NODE_FIELD(options); return newnode; } static RuleStmt * _copyRuleStmt(const RuleStmt *from) { RuleStmt *newnode = makeNode(RuleStmt); COPY_NODE_FIELD(relation); COPY_STRING_FIELD(rulename); COPY_NODE_FIELD(whereClause); COPY_SCALAR_FIELD(event); COPY_SCALAR_FIELD(instead); COPY_NODE_FIELD(actions); COPY_SCALAR_FIELD(replace); return newnode; } static NotifyStmt * _copyNotifyStmt(const NotifyStmt *from) { NotifyStmt *newnode = makeNode(NotifyStmt); COPY_STRING_FIELD(conditionname); COPY_STRING_FIELD(payload); return newnode; } static ListenStmt * _copyListenStmt(const ListenStmt *from) { ListenStmt *newnode = makeNode(ListenStmt); COPY_STRING_FIELD(conditionname); return newnode; } static UnlistenStmt * _copyUnlistenStmt(const UnlistenStmt *from) { UnlistenStmt *newnode = makeNode(UnlistenStmt); COPY_STRING_FIELD(conditionname); return newnode; } static TransactionStmt * _copyTransactionStmt(const TransactionStmt *from) { TransactionStmt *newnode = makeNode(TransactionStmt); COPY_SCALAR_FIELD(kind); COPY_NODE_FIELD(options); COPY_STRING_FIELD(savepoint_name); COPY_STRING_FIELD(gid); COPY_SCALAR_FIELD(chain); return newnode; } static CompositeTypeStmt * _copyCompositeTypeStmt(const CompositeTypeStmt *from) { CompositeTypeStmt *newnode = makeNode(CompositeTypeStmt); COPY_NODE_FIELD(typevar); COPY_NODE_FIELD(coldeflist); return newnode; } static CreateEnumStmt * _copyCreateEnumStmt(const CreateEnumStmt *from) { CreateEnumStmt *newnode = makeNode(CreateEnumStmt); COPY_NODE_FIELD(typeName); COPY_NODE_FIELD(vals); return newnode; } static CreateRangeStmt * _copyCreateRangeStmt(const CreateRangeStmt *from) { CreateRangeStmt *newnode = makeNode(CreateRangeStmt); COPY_NODE_FIELD(typeName); COPY_NODE_FIELD(params); return newnode; } static AlterEnumStmt * _copyAlterEnumStmt(const AlterEnumStmt *from) { AlterEnumStmt *newnode = makeNode(AlterEnumStmt); COPY_NODE_FIELD(typeName); COPY_STRING_FIELD(oldVal); COPY_STRING_FIELD(newVal); COPY_STRING_FIELD(newValNeighbor); COPY_SCALAR_FIELD(newValIsAfter); COPY_SCALAR_FIELD(skipIfNewValExists); return newnode; } static ViewStmt * _copyViewStmt(const ViewStmt *from) { ViewStmt *newnode = makeNode(ViewStmt); COPY_NODE_FIELD(view); COPY_NODE_FIELD(aliases); COPY_NODE_FIELD(query); COPY_SCALAR_FIELD(replace); COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(withCheckOption); return newnode; } static LoadStmt * _copyLoadStmt(const LoadStmt *from) { LoadStmt *newnode = makeNode(LoadStmt); COPY_STRING_FIELD(filename); return newnode; } static CreateDomainStmt * _copyCreateDomainStmt(const CreateDomainStmt *from) { CreateDomainStmt *newnode = makeNode(CreateDomainStmt); COPY_NODE_FIELD(domainname); COPY_NODE_FIELD(typeName); COPY_NODE_FIELD(collClause); COPY_NODE_FIELD(constraints); return newnode; } static CreateOpClassStmt * _copyCreateOpClassStmt(const CreateOpClassStmt *from) { CreateOpClassStmt *newnode = makeNode(CreateOpClassStmt); COPY_NODE_FIELD(opclassname); COPY_NODE_FIELD(opfamilyname); COPY_STRING_FIELD(amname); COPY_NODE_FIELD(datatype); COPY_NODE_FIELD(items); COPY_SCALAR_FIELD(isDefault); return newnode; } static CreateOpClassItem * _copyCreateOpClassItem(const CreateOpClassItem *from) { CreateOpClassItem *newnode = makeNode(CreateOpClassItem); COPY_SCALAR_FIELD(itemtype); COPY_NODE_FIELD(name); COPY_SCALAR_FIELD(number); COPY_NODE_FIELD(order_family); COPY_NODE_FIELD(class_args); COPY_NODE_FIELD(storedtype); return newnode; } static CreateOpFamilyStmt * _copyCreateOpFamilyStmt(const CreateOpFamilyStmt *from) { CreateOpFamilyStmt *newnode = makeNode(CreateOpFamilyStmt); COPY_NODE_FIELD(opfamilyname); COPY_STRING_FIELD(amname); return newnode; } static AlterOpFamilyStmt * _copyAlterOpFamilyStmt(const AlterOpFamilyStmt *from) { AlterOpFamilyStmt *newnode = makeNode(AlterOpFamilyStmt); COPY_NODE_FIELD(opfamilyname); COPY_STRING_FIELD(amname); COPY_SCALAR_FIELD(isDrop); COPY_NODE_FIELD(items); return newnode; } static CreatedbStmt * _copyCreatedbStmt(const CreatedbStmt *from) { CreatedbStmt *newnode = makeNode(CreatedbStmt); COPY_STRING_FIELD(dbname); COPY_NODE_FIELD(options); return newnode; } static AlterDatabaseStmt * _copyAlterDatabaseStmt(const AlterDatabaseStmt *from) { AlterDatabaseStmt *newnode = makeNode(AlterDatabaseStmt); COPY_STRING_FIELD(dbname); COPY_NODE_FIELD(options); return newnode; } static 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 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 ReplicaIdentityStmt * _copyReplicaIdentityStmt(const ReplicaIdentityStmt *from) { ReplicaIdentityStmt *newnode = makeNode(ReplicaIdentityStmt); COPY_SCALAR_FIELD(identity_type); COPY_STRING_FIELD(name); return newnode; } static AlterSystemStmt * _copyAlterSystemStmt(const AlterSystemStmt *from) { AlterSystemStmt *newnode = makeNode(AlterSystemStmt); COPY_NODE_FIELD(setstmt); return newnode; } static CreateSeqStmt * _copyCreateSeqStmt(const CreateSeqStmt *from) { CreateSeqStmt *newnode = makeNode(CreateSeqStmt); COPY_NODE_FIELD(sequence); COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(ownerId); COPY_SCALAR_FIELD(for_identity); COPY_SCALAR_FIELD(if_not_exists); return newnode; } static AlterSeqStmt * _copyAlterSeqStmt(const AlterSeqStmt *from) { AlterSeqStmt *newnode = makeNode(AlterSeqStmt); COPY_NODE_FIELD(sequence); COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(for_identity); COPY_SCALAR_FIELD(missing_ok); return newnode; } static VariableSetStmt * _copyVariableSetStmt(const VariableSetStmt *from) { VariableSetStmt *newnode = makeNode(VariableSetStmt); COPY_SCALAR_FIELD(kind); COPY_STRING_FIELD(name); COPY_NODE_FIELD(args); COPY_SCALAR_FIELD(is_local); return newnode; } static VariableShowStmt * _copyVariableShowStmt(const VariableShowStmt *from) { VariableShowStmt *newnode = makeNode(VariableShowStmt); COPY_STRING_FIELD(name); return newnode; } static DiscardStmt * _copyDiscardStmt(const DiscardStmt *from) { DiscardStmt *newnode = makeNode(DiscardStmt); COPY_SCALAR_FIELD(target); return newnode; } static CreateTableSpaceStmt * _copyCreateTableSpaceStmt(const CreateTableSpaceStmt *from) { CreateTableSpaceStmt *newnode = makeNode(CreateTableSpaceStmt); COPY_STRING_FIELD(tablespacename); COPY_NODE_FIELD(owner); COPY_STRING_FIELD(location); COPY_NODE_FIELD(options); return newnode; } static DropTableSpaceStmt * _copyDropTableSpaceStmt(const DropTableSpaceStmt *from) { DropTableSpaceStmt *newnode = makeNode(DropTableSpaceStmt); COPY_STRING_FIELD(tablespacename); COPY_SCALAR_FIELD(missing_ok); return newnode; } static AlterTableSpaceOptionsStmt * _copyAlterTableSpaceOptionsStmt(const AlterTableSpaceOptionsStmt *from) { AlterTableSpaceOptionsStmt *newnode = makeNode(AlterTableSpaceOptionsStmt); COPY_STRING_FIELD(tablespacename); COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(isReset); return newnode; } static AlterTableMoveAllStmt * _copyAlterTableMoveAllStmt(const AlterTableMoveAllStmt *from) { AlterTableMoveAllStmt *newnode = makeNode(AlterTableMoveAllStmt); COPY_STRING_FIELD(orig_tablespacename); COPY_SCALAR_FIELD(objtype); COPY_NODE_FIELD(roles); COPY_STRING_FIELD(new_tablespacename); COPY_SCALAR_FIELD(nowait); return newnode; } static CreateExtensionStmt * _copyCreateExtensionStmt(const CreateExtensionStmt *from) { CreateExtensionStmt *newnode = makeNode(CreateExtensionStmt); COPY_STRING_FIELD(extname); COPY_SCALAR_FIELD(if_not_exists); COPY_NODE_FIELD(options); return newnode; } static AlterExtensionStmt * _copyAlterExtensionStmt(const AlterExtensionStmt *from) { AlterExtensionStmt *newnode = makeNode(AlterExtensionStmt); COPY_STRING_FIELD(extname); COPY_NODE_FIELD(options); return newnode; } static AlterExtensionContentsStmt * _copyAlterExtensionContentsStmt(const AlterExtensionContentsStmt *from) { AlterExtensionContentsStmt *newnode = makeNode(AlterExtensionContentsStmt); COPY_STRING_FIELD(extname); COPY_SCALAR_FIELD(action); COPY_SCALAR_FIELD(objtype); COPY_NODE_FIELD(object); return newnode; } static CreateFdwStmt * _copyCreateFdwStmt(const CreateFdwStmt *from) { CreateFdwStmt *newnode = makeNode(CreateFdwStmt); COPY_STRING_FIELD(fdwname); COPY_NODE_FIELD(func_options); COPY_NODE_FIELD(options); return newnode; } static AlterFdwStmt * _copyAlterFdwStmt(const AlterFdwStmt *from) { AlterFdwStmt *newnode = makeNode(AlterFdwStmt); COPY_STRING_FIELD(fdwname); COPY_NODE_FIELD(func_options); COPY_NODE_FIELD(options); return newnode; } static CreateForeignServerStmt * _copyCreateForeignServerStmt(const CreateForeignServerStmt *from) { CreateForeignServerStmt *newnode = makeNode(CreateForeignServerStmt); COPY_STRING_FIELD(servername); COPY_STRING_FIELD(servertype); COPY_STRING_FIELD(version); COPY_STRING_FIELD(fdwname); COPY_SCALAR_FIELD(if_not_exists); COPY_NODE_FIELD(options); return newnode; } static AlterForeignServerStmt * _copyAlterForeignServerStmt(const AlterForeignServerStmt *from) { AlterForeignServerStmt *newnode = makeNode(AlterForeignServerStmt); COPY_STRING_FIELD(servername); COPY_STRING_FIELD(version); COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(has_version); return newnode; } static CreateUserMappingStmt * _copyCreateUserMappingStmt(const CreateUserMappingStmt *from) { CreateUserMappingStmt *newnode = makeNode(CreateUserMappingStmt); COPY_NODE_FIELD(user); COPY_STRING_FIELD(servername); COPY_SCALAR_FIELD(if_not_exists); COPY_NODE_FIELD(options); return newnode; } static AlterUserMappingStmt * _copyAlterUserMappingStmt(const AlterUserMappingStmt *from) { AlterUserMappingStmt *newnode = makeNode(AlterUserMappingStmt); COPY_NODE_FIELD(user); COPY_STRING_FIELD(servername); COPY_NODE_FIELD(options); return newnode; } static DropUserMappingStmt * _copyDropUserMappingStmt(const DropUserMappingStmt *from) { DropUserMappingStmt *newnode = makeNode(DropUserMappingStmt); COPY_NODE_FIELD(user); COPY_STRING_FIELD(servername); COPY_SCALAR_FIELD(missing_ok); return newnode; } static CreateForeignTableStmt * _copyCreateForeignTableStmt(const CreateForeignTableStmt *from) { CreateForeignTableStmt *newnode = makeNode(CreateForeignTableStmt); CopyCreateStmtFields((const CreateStmt *) from, (CreateStmt *) newnode); COPY_STRING_FIELD(servername); COPY_NODE_FIELD(options); return newnode; } static ImportForeignSchemaStmt * _copyImportForeignSchemaStmt(const ImportForeignSchemaStmt *from) { ImportForeignSchemaStmt *newnode = makeNode(ImportForeignSchemaStmt); COPY_STRING_FIELD(server_name); COPY_STRING_FIELD(remote_schema); COPY_STRING_FIELD(local_schema); COPY_SCALAR_FIELD(list_type); COPY_NODE_FIELD(table_list); COPY_NODE_FIELD(options); return newnode; } static CreateTransformStmt * _copyCreateTransformStmt(const CreateTransformStmt *from) { CreateTransformStmt *newnode = makeNode(CreateTransformStmt); COPY_SCALAR_FIELD(replace); COPY_NODE_FIELD(type_name); COPY_STRING_FIELD(lang); COPY_NODE_FIELD(fromsql); COPY_NODE_FIELD(tosql); return newnode; } static CreateAmStmt * _copyCreateAmStmt(const CreateAmStmt *from) { CreateAmStmt *newnode = makeNode(CreateAmStmt); COPY_STRING_FIELD(amname); COPY_NODE_FIELD(handler_name); COPY_SCALAR_FIELD(amtype); return newnode; } static CreateTrigStmt * _copyCreateTrigStmt(const CreateTrigStmt *from) { CreateTrigStmt *newnode = makeNode(CreateTrigStmt); COPY_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 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 CreateSchemaStmt * _copyCreateSchemaStmt(const CreateSchemaStmt *from) { CreateSchemaStmt *newnode = makeNode(CreateSchemaStmt); COPY_STRING_FIELD(schemaname); COPY_NODE_FIELD(authrole); COPY_NODE_FIELD(schemaElts); COPY_SCALAR_FIELD(if_not_exists); return newnode; } static CreateConversionStmt * _copyCreateConversionStmt(const CreateConversionStmt *from) { CreateConversionStmt *newnode = makeNode(CreateConversionStmt); COPY_NODE_FIELD(conversion_name); COPY_STRING_FIELD(for_encoding_name); COPY_STRING_FIELD(to_encoding_name); COPY_NODE_FIELD(func_name); COPY_SCALAR_FIELD(def); return newnode; } static CreateCastStmt * _copyCreateCastStmt(const CreateCastStmt *from) { CreateCastStmt *newnode = makeNode(CreateCastStmt); COPY_NODE_FIELD(sourcetype); COPY_NODE_FIELD(targettype); COPY_NODE_FIELD(func); COPY_SCALAR_FIELD(context); COPY_SCALAR_FIELD(inout); return newnode; } static PrepareStmt * _copyPrepareStmt(const PrepareStmt *from) { PrepareStmt *newnode = makeNode(PrepareStmt); COPY_STRING_FIELD(name); COPY_NODE_FIELD(argtypes); COPY_NODE_FIELD(query); return newnode; } static ExecuteStmt * _copyExecuteStmt(const ExecuteStmt *from) { ExecuteStmt *newnode = makeNode(ExecuteStmt); COPY_STRING_FIELD(name); COPY_NODE_FIELD(params); return newnode; } static DeallocateStmt * _copyDeallocateStmt(const DeallocateStmt *from) { DeallocateStmt *newnode = makeNode(DeallocateStmt); COPY_STRING_FIELD(name); return newnode; } static DropOwnedStmt * _copyDropOwnedStmt(const DropOwnedStmt *from) { DropOwnedStmt *newnode = makeNode(DropOwnedStmt); COPY_NODE_FIELD(roles); COPY_SCALAR_FIELD(behavior); return newnode; } static ReassignOwnedStmt * _copyReassignOwnedStmt(const ReassignOwnedStmt *from) { ReassignOwnedStmt *newnode = makeNode(ReassignOwnedStmt); COPY_NODE_FIELD(roles); COPY_NODE_FIELD(newrole); return newnode; } static AlterTSDictionaryStmt * _copyAlterTSDictionaryStmt(const AlterTSDictionaryStmt *from) { AlterTSDictionaryStmt *newnode = makeNode(AlterTSDictionaryStmt); COPY_NODE_FIELD(dictname); COPY_NODE_FIELD(options); return newnode; } static AlterTSConfigurationStmt * _copyAlterTSConfigurationStmt(const AlterTSConfigurationStmt *from) { AlterTSConfigurationStmt *newnode = makeNode(AlterTSConfigurationStmt); COPY_SCALAR_FIELD(kind); COPY_NODE_FIELD(cfgname); COPY_NODE_FIELD(tokentype); COPY_NODE_FIELD(dicts); COPY_SCALAR_FIELD(override); COPY_SCALAR_FIELD(replace); COPY_SCALAR_FIELD(missing_ok); return newnode; } static CreatePolicyStmt * _copyCreatePolicyStmt(const CreatePolicyStmt *from) { CreatePolicyStmt *newnode = makeNode(CreatePolicyStmt); COPY_STRING_FIELD(policy_name); COPY_NODE_FIELD(table); COPY_STRING_FIELD(cmd_name); COPY_SCALAR_FIELD(permissive); COPY_NODE_FIELD(roles); COPY_NODE_FIELD(qual); COPY_NODE_FIELD(with_check); return newnode; } static AlterPolicyStmt * _copyAlterPolicyStmt(const AlterPolicyStmt *from) { AlterPolicyStmt *newnode = makeNode(AlterPolicyStmt); COPY_STRING_FIELD(policy_name); COPY_NODE_FIELD(table); COPY_NODE_FIELD(roles); COPY_NODE_FIELD(qual); COPY_NODE_FIELD(with_check); return newnode; } static PartitionElem * _copyPartitionElem(const PartitionElem *from) { PartitionElem *newnode = makeNode(PartitionElem); COPY_STRING_FIELD(name); COPY_NODE_FIELD(expr); COPY_NODE_FIELD(collation); COPY_NODE_FIELD(opclass); COPY_LOCATION_FIELD(location); return newnode; } static PartitionSpec * _copyPartitionSpec(const PartitionSpec *from) { PartitionSpec *newnode = makeNode(PartitionSpec); COPY_STRING_FIELD(strategy); COPY_NODE_FIELD(partParams); COPY_LOCATION_FIELD(location); return newnode; } static PartitionBoundSpec * _copyPartitionBoundSpec(const PartitionBoundSpec *from) { PartitionBoundSpec *newnode = makeNode(PartitionBoundSpec); COPY_SCALAR_FIELD(strategy); COPY_SCALAR_FIELD(is_default); COPY_SCALAR_FIELD(modulus); COPY_SCALAR_FIELD(remainder); COPY_NODE_FIELD(listdatums); COPY_NODE_FIELD(lowerdatums); COPY_NODE_FIELD(upperdatums); COPY_LOCATION_FIELD(location); return newnode; } static PartitionRangeDatum * _copyPartitionRangeDatum(const PartitionRangeDatum *from) { PartitionRangeDatum *newnode = makeNode(PartitionRangeDatum); COPY_SCALAR_FIELD(kind); COPY_NODE_FIELD(value); COPY_LOCATION_FIELD(location); return newnode; } static PartitionCmd * _copyPartitionCmd(const PartitionCmd *from) { PartitionCmd *newnode = makeNode(PartitionCmd); COPY_NODE_FIELD(name); COPY_NODE_FIELD(bound); COPY_SCALAR_FIELD(concurrent); return newnode; } static PublicationObjSpec * _copyPublicationObject(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 PublicationTable * _copyPublicationTable(const PublicationTable *from) { PublicationTable *newnode = makeNode(PublicationTable); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(whereClause); COPY_NODE_FIELD(columns); 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; } /* **************************************************************** * extensible.h copy functions * **************************************************************** */ static ExtensibleNode * _copyExtensibleNode(const ExtensibleNode *from) { ExtensibleNode *newnode; const ExtensibleNodeMethods *methods; methods = GetExtensibleNodeMethods(from->extnodename, false); newnode = (ExtensibleNode *) newNode(methods->node_size, T_ExtensibleNode); COPY_STRING_FIELD(extnodename); /* copy the private fields */ methods->nodeCopy(newnode, from); return newnode; } /* **************************************************************** * value.h copy functions * **************************************************************** */ static 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; } /* * copyObjectImpl -- implementation of copyObject(); see nodes/nodes.h * * Create a copy of a Node tree or list. This is a "deep" copy: all * substructure is copied too, recursively. */ void * copyObjectImpl(const void *from) { void *retval; if (from == NULL) return NULL; /* Guard against stack overflow due to overly complex expressions */ check_stack_depth(); switch (nodeTag(from)) { /* * PLAN NODES */ case T_PlannedStmt: retval = _copyPlannedStmt(from); break; case T_Plan: retval = _copyPlan(from); break; case T_Result: retval = _copyResult(from); break; case T_ProjectSet: retval = _copyProjectSet(from); break; case T_ModifyTable: retval = _copyModifyTable(from); break; case T_Append: retval = _copyAppend(from); break; case T_MergeAppend: retval = _copyMergeAppend(from); break; case T_RecursiveUnion: retval = _copyRecursiveUnion(from); break; case T_BitmapAnd: retval = _copyBitmapAnd(from); break; case T_BitmapOr: retval = _copyBitmapOr(from); break; case T_Scan: retval = _copyScan(from); break; case T_Gather: retval = _copyGather(from); break; case T_GatherMerge: retval = _copyGatherMerge(from); break; case T_SeqScan: retval = _copySeqScan(from); break; case T_SampleScan: retval = _copySampleScan(from); break; case T_IndexScan: retval = _copyIndexScan(from); break; case T_IndexOnlyScan: retval = _copyIndexOnlyScan(from); break; case T_BitmapIndexScan: retval = _copyBitmapIndexScan(from); break; case T_BitmapHeapScan: retval = _copyBitmapHeapScan(from); break; case T_TidScan: retval = _copyTidScan(from); break; case T_TidRangeScan: retval = _copyTidRangeScan(from); break; case T_SubqueryScan: retval = _copySubqueryScan(from); break; case T_FunctionScan: retval = _copyFunctionScan(from); break; case T_TableFuncScan: retval = _copyTableFuncScan(from); break; case T_ValuesScan: retval = _copyValuesScan(from); break; case T_CteScan: retval = _copyCteScan(from); break; case T_NamedTuplestoreScan: retval = _copyNamedTuplestoreScan(from); break; case T_WorkTableScan: retval = _copyWorkTableScan(from); break; case T_ForeignScan: retval = _copyForeignScan(from); break; case T_CustomScan: retval = _copyCustomScan(from); break; case T_Join: retval = _copyJoin(from); break; case T_NestLoop: retval = _copyNestLoop(from); break; case T_MergeJoin: retval = _copyMergeJoin(from); break; case T_HashJoin: retval = _copyHashJoin(from); break; case T_Material: retval = _copyMaterial(from); break; case T_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_Hash: retval = _copyHash(from); break; case T_SetOp: retval = _copySetOp(from); break; case T_LockRows: retval = _copyLockRows(from); break; case T_Limit: retval = _copyLimit(from); break; case T_NestLoopParam: retval = _copyNestLoopParam(from); break; case T_PlanRowMark: retval = _copyPlanRowMark(from); break; case T_PartitionPruneInfo: retval = _copyPartitionPruneInfo(from); break; case T_PartitionedRelPruneInfo: retval = _copyPartitionedRelPruneInfo(from); break; case T_PartitionPruneStepOp: retval = _copyPartitionPruneStepOp(from); break; case T_PartitionPruneStepCombine: retval = _copyPartitionPruneStepCombine(from); break; case T_PlanInvalItem: retval = _copyPlanInvalItem(from); break; /* * PRIMITIVE NODES */ case T_Alias: retval = _copyAlias(from); break; case T_RangeVar: retval = _copyRangeVar(from); break; case T_TableFunc: retval = _copyTableFunc(from); break; case T_IntoClause: retval = _copyIntoClause(from); break; case T_Var: retval = _copyVar(from); break; case T_Const: retval = _copyConst(from); break; case T_Param: retval = _copyParam(from); break; case T_Aggref: retval = _copyAggref(from); break; case T_GroupingFunc: retval = _copyGroupingFunc(from); break; case T_WindowFunc: retval = _copyWindowFunc(from); break; case T_SubscriptingRef: retval = _copySubscriptingRef(from); break; case T_FuncExpr: retval = _copyFuncExpr(from); break; case T_NamedArgExpr: retval = _copyNamedArgExpr(from); break; case T_OpExpr: retval = _copyOpExpr(from); break; case T_DistinctExpr: retval = _copyDistinctExpr(from); break; case T_NullIfExpr: retval = _copyNullIfExpr(from); break; case T_ScalarArrayOpExpr: retval = _copyScalarArrayOpExpr(from); break; case T_BoolExpr: retval = _copyBoolExpr(from); break; case T_SubLink: retval = _copySubLink(from); break; case T_SubPlan: retval = _copySubPlan(from); break; case T_AlternativeSubPlan: retval = _copyAlternativeSubPlan(from); break; case T_FieldSelect: retval = _copyFieldSelect(from); break; case T_FieldStore: retval = _copyFieldStore(from); break; case T_RelabelType: retval = _copyRelabelType(from); break; case T_CoerceViaIO: retval = _copyCoerceViaIO(from); break; case T_ArrayCoerceExpr: retval = _copyArrayCoerceExpr(from); break; case T_ConvertRowtypeExpr: retval = _copyConvertRowtypeExpr(from); break; case T_CollateExpr: retval = _copyCollateExpr(from); break; case T_CaseExpr: retval = _copyCaseExpr(from); break; case T_CaseWhen: retval = _copyCaseWhen(from); break; case T_CaseTestExpr: retval = _copyCaseTestExpr(from); break; case T_ArrayExpr: retval = _copyArrayExpr(from); break; case T_RowExpr: retval = _copyRowExpr(from); break; case T_RowCompareExpr: retval = _copyRowCompareExpr(from); break; case T_CoalesceExpr: retval = _copyCoalesceExpr(from); break; case T_MinMaxExpr: retval = _copyMinMaxExpr(from); break; case T_SQLValueFunction: retval = _copySQLValueFunction(from); break; case T_XmlExpr: retval = _copyXmlExpr(from); break; case T_NullTest: retval = _copyNullTest(from); break; case T_BooleanTest: retval = _copyBooleanTest(from); break; case T_CoerceToDomain: retval = _copyCoerceToDomain(from); break; case T_CoerceToDomainValue: retval = _copyCoerceToDomainValue(from); break; case T_SetToDefault: retval = _copySetToDefault(from); break; case T_CurrentOfExpr: retval = _copyCurrentOfExpr(from); break; case T_NextValueExpr: retval = _copyNextValueExpr(from); break; case T_InferenceElem: retval = _copyInferenceElem(from); break; case T_TargetEntry: retval = _copyTargetEntry(from); break; case T_RangeTblRef: retval = _copyRangeTblRef(from); break; case T_JoinExpr: retval = _copyJoinExpr(from); break; case T_FromExpr: retval = _copyFromExpr(from); break; case T_OnConflictExpr: retval = _copyOnConflictExpr(from); break; /* * RELATION NODES */ case T_PathKey: retval = _copyPathKey(from); break; case T_RestrictInfo: retval = _copyRestrictInfo(from); break; case T_PlaceHolderVar: retval = _copyPlaceHolderVar(from); break; case T_SpecialJoinInfo: retval = _copySpecialJoinInfo(from); break; case T_AppendRelInfo: retval = _copyAppendRelInfo(from); break; case T_PlaceHolderInfo: retval = _copyPlaceHolderInfo(from); break; /* * VALUE NODES */ case T_Integer: 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; /* * LIST NODES */ case T_List: retval = list_copy_deep(from); break; /* * Lists of integers and OIDs don't need to be deep-copied, so we * perform a shallow copy via list_copy() */ case T_IntList: case T_OidList: retval = list_copy(from); break; /* * EXTENSIBLE NODES */ case T_ExtensibleNode: retval = _copyExtensibleNode(from); break; /* * PARSE NODES */ case T_Query: retval = _copyQuery(from); break; case T_RawStmt: retval = _copyRawStmt(from); break; case T_InsertStmt: retval = _copyInsertStmt(from); break; case T_DeleteStmt: retval = _copyDeleteStmt(from); break; case T_UpdateStmt: retval = _copyUpdateStmt(from); break; case T_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_AlterTableStmt: retval = _copyAlterTableStmt(from); break; case T_AlterTableCmd: retval = _copyAlterTableCmd(from); break; case T_AlterCollationStmt: retval = _copyAlterCollationStmt(from); break; case T_AlterDomainStmt: retval = _copyAlterDomainStmt(from); break; case T_GrantStmt: retval = _copyGrantStmt(from); break; case T_GrantRoleStmt: retval = _copyGrantRoleStmt(from); break; case T_AlterDefaultPrivilegesStmt: retval = _copyAlterDefaultPrivilegesStmt(from); break; case T_DeclareCursorStmt: retval = _copyDeclareCursorStmt(from); break; case T_ClosePortalStmt: retval = _copyClosePortalStmt(from); break; case T_CallStmt: retval = _copyCallStmt(from); break; case T_ClusterStmt: retval = _copyClusterStmt(from); break; case T_CopyStmt: retval = _copyCopyStmt(from); break; case T_CreateStmt: retval = _copyCreateStmt(from); break; case T_TableLikeClause: retval = _copyTableLikeClause(from); break; case T_DefineStmt: retval = _copyDefineStmt(from); break; case T_DropStmt: retval = _copyDropStmt(from); break; case T_TruncateStmt: retval = _copyTruncateStmt(from); break; case T_CommentStmt: retval = _copyCommentStmt(from); break; case T_SecLabelStmt: retval = _copySecLabelStmt(from); break; case T_FetchStmt: retval = _copyFetchStmt(from); break; case T_IndexStmt: retval = _copyIndexStmt(from); break; case T_CreateStatsStmt: retval = _copyCreateStatsStmt(from); break; case T_AlterStatsStmt: retval = _copyAlterStatsStmt(from); break; case T_CreateFunctionStmt: retval = _copyCreateFunctionStmt(from); break; case T_FunctionParameter: retval = _copyFunctionParameter(from); break; case T_AlterFunctionStmt: retval = _copyAlterFunctionStmt(from); break; case T_DoStmt: retval = _copyDoStmt(from); break; case T_RenameStmt: retval = _copyRenameStmt(from); break; case T_AlterObjectDependsStmt: retval = _copyAlterObjectDependsStmt(from); break; case T_AlterObjectSchemaStmt: retval = _copyAlterObjectSchemaStmt(from); break; case T_AlterOwnerStmt: retval = _copyAlterOwnerStmt(from); break; case T_AlterOperatorStmt: retval = _copyAlterOperatorStmt(from); break; case T_AlterTypeStmt: retval = _copyAlterTypeStmt(from); break; case T_RuleStmt: retval = _copyRuleStmt(from); break; case T_NotifyStmt: retval = _copyNotifyStmt(from); break; case T_ListenStmt: retval = _copyListenStmt(from); break; case T_UnlistenStmt: retval = _copyUnlistenStmt(from); break; case T_TransactionStmt: retval = _copyTransactionStmt(from); break; case T_CompositeTypeStmt: retval = _copyCompositeTypeStmt(from); break; case T_CreateEnumStmt: retval = _copyCreateEnumStmt(from); break; case T_CreateRangeStmt: retval = _copyCreateRangeStmt(from); break; case T_AlterEnumStmt: retval = _copyAlterEnumStmt(from); break; case T_ViewStmt: retval = _copyViewStmt(from); break; case T_LoadStmt: retval = _copyLoadStmt(from); break; case T_CreateDomainStmt: retval = _copyCreateDomainStmt(from); break; case T_CreateOpClassStmt: retval = _copyCreateOpClassStmt(from); break; case T_CreateOpClassItem: retval = _copyCreateOpClassItem(from); break; case T_CreateOpFamilyStmt: retval = _copyCreateOpFamilyStmt(from); break; case T_AlterOpFamilyStmt: retval = _copyAlterOpFamilyStmt(from); break; case T_CreatedbStmt: retval = _copyCreatedbStmt(from); break; case T_AlterDatabaseStmt: retval = _copyAlterDatabaseStmt(from); break; case T_AlterDatabaseRefreshCollStmt: retval = _copyAlterDatabaseRefreshCollStmt(from); break; case T_AlterDatabaseSetStmt: retval = _copyAlterDatabaseSetStmt(from); break; case T_DropdbStmt: retval = _copyDropdbStmt(from); break; case T_VacuumStmt: retval = _copyVacuumStmt(from); break; case T_VacuumRelation: retval = _copyVacuumRelation(from); break; case T_ExplainStmt: retval = _copyExplainStmt(from); break; case T_CreateTableAsStmt: retval = _copyCreateTableAsStmt(from); break; case T_RefreshMatViewStmt: retval = _copyRefreshMatViewStmt(from); break; case T_ReplicaIdentityStmt: retval = _copyReplicaIdentityStmt(from); break; case T_AlterSystemStmt: retval = _copyAlterSystemStmt(from); break; case T_CreateSeqStmt: retval = _copyCreateSeqStmt(from); break; case T_AlterSeqStmt: retval = _copyAlterSeqStmt(from); break; case T_VariableSetStmt: retval = _copyVariableSetStmt(from); break; case T_VariableShowStmt: retval = _copyVariableShowStmt(from); break; case T_DiscardStmt: retval = _copyDiscardStmt(from); break; case T_CreateTableSpaceStmt: retval = _copyCreateTableSpaceStmt(from); break; case T_DropTableSpaceStmt: retval = _copyDropTableSpaceStmt(from); break; case T_AlterTableSpaceOptionsStmt: retval = _copyAlterTableSpaceOptionsStmt(from); break; case T_AlterTableMoveAllStmt: retval = _copyAlterTableMoveAllStmt(from); break; case T_CreateExtensionStmt: retval = _copyCreateExtensionStmt(from); break; case T_AlterExtensionStmt: retval = _copyAlterExtensionStmt(from); break; case T_AlterExtensionContentsStmt: retval = _copyAlterExtensionContentsStmt(from); break; case T_CreateFdwStmt: retval = _copyCreateFdwStmt(from); break; case T_AlterFdwStmt: retval = _copyAlterFdwStmt(from); break; case T_CreateForeignServerStmt: retval = _copyCreateForeignServerStmt(from); break; case T_AlterForeignServerStmt: retval = _copyAlterForeignServerStmt(from); break; case T_CreateUserMappingStmt: retval = _copyCreateUserMappingStmt(from); break; case T_AlterUserMappingStmt: retval = _copyAlterUserMappingStmt(from); break; case T_DropUserMappingStmt: retval = _copyDropUserMappingStmt(from); break; case T_CreateForeignTableStmt: retval = _copyCreateForeignTableStmt(from); break; case T_ImportForeignSchemaStmt: retval = _copyImportForeignSchemaStmt(from); break; case T_CreateTransformStmt: retval = _copyCreateTransformStmt(from); break; case T_CreateAmStmt: retval = _copyCreateAmStmt(from); break; case T_CreateTrigStmt: retval = _copyCreateTrigStmt(from); break; case T_CreateEventTrigStmt: retval = _copyCreateEventTrigStmt(from); break; case T_AlterEventTrigStmt: retval = _copyAlterEventTrigStmt(from); break; case T_CreatePLangStmt: retval = _copyCreatePLangStmt(from); break; case T_CreateRoleStmt: retval = _copyCreateRoleStmt(from); break; case T_AlterRoleStmt: retval = _copyAlterRoleStmt(from); break; case T_AlterRoleSetStmt: retval = _copyAlterRoleSetStmt(from); break; case T_DropRoleStmt: retval = _copyDropRoleStmt(from); break; case T_LockStmt: retval = _copyLockStmt(from); break; case T_ConstraintsSetStmt: retval = _copyConstraintsSetStmt(from); break; case T_ReindexStmt: retval = _copyReindexStmt(from); break; case T_CheckPointStmt: retval = (void *) makeNode(CheckPointStmt); break; case T_CreateSchemaStmt: retval = _copyCreateSchemaStmt(from); break; case T_CreateConversionStmt: retval = _copyCreateConversionStmt(from); break; case T_CreateCastStmt: retval = _copyCreateCastStmt(from); break; case T_PrepareStmt: retval = _copyPrepareStmt(from); break; case T_ExecuteStmt: retval = _copyExecuteStmt(from); break; case T_DeallocateStmt: retval = _copyDeallocateStmt(from); break; case T_DropOwnedStmt: retval = _copyDropOwnedStmt(from); break; case T_ReassignOwnedStmt: retval = _copyReassignOwnedStmt(from); break; case T_AlterTSDictionaryStmt: retval = _copyAlterTSDictionaryStmt(from); break; case T_AlterTSConfigurationStmt: retval = _copyAlterTSConfigurationStmt(from); break; case T_CreatePolicyStmt: retval = _copyCreatePolicyStmt(from); break; case T_AlterPolicyStmt: retval = _copyAlterPolicyStmt(from); break; case T_CreatePublicationStmt: retval = _copyCreatePublicationStmt(from); break; case T_AlterPublicationStmt: retval = _copyAlterPublicationStmt(from); break; case T_CreateSubscriptionStmt: retval = _copyCreateSubscriptionStmt(from); break; case T_AlterSubscriptionStmt: retval = _copyAlterSubscriptionStmt(from); break; case T_DropSubscriptionStmt: retval = _copyDropSubscriptionStmt(from); break; case T_A_Expr: retval = _copyA_Expr(from); break; case T_ColumnRef: retval = _copyColumnRef(from); break; case T_ParamRef: retval = _copyParamRef(from); break; case T_A_Const: retval = _copyA_Const(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_TypeCast: retval = _copyTypeCast(from); break; case T_CollateClause: retval = _copyCollateClause(from); break; case T_SortBy: retval = _copySortBy(from); break; case T_WindowDef: retval = _copyWindowDef(from); break; case T_RangeSubselect: retval = _copyRangeSubselect(from); break; case T_RangeFunction: retval = _copyRangeFunction(from); break; case T_RangeTableSample: retval = _copyRangeTableSample(from); break; case T_RangeTableFunc: retval = _copyRangeTableFunc(from); break; case T_RangeTableFuncCol: retval = _copyRangeTableFuncCol(from); break; case T_TypeName: retval = _copyTypeName(from); break; case T_IndexElem: retval = _copyIndexElem(from); break; case T_StatsElem: retval = _copyStatsElem(from); break; case T_ColumnDef: retval = _copyColumnDef(from); break; case T_Constraint: retval = _copyConstraint(from); break; case T_DefElem: retval = _copyDefElem(from); break; case T_LockingClause: retval = _copyLockingClause(from); break; case T_RangeTblEntry: retval = _copyRangeTblEntry(from); break; case T_RangeTblFunction: retval = _copyRangeTblFunction(from); break; case T_TableSampleClause: retval = _copyTableSampleClause(from); break; case T_WithCheckOption: retval = _copyWithCheckOption(from); break; case T_SortGroupClause: retval = _copySortGroupClause(from); break; case T_GroupingSet: retval = _copyGroupingSet(from); break; case T_WindowClause: retval = _copyWindowClause(from); break; case T_RowMarkClause: retval = _copyRowMarkClause(from); break; case T_WithClause: retval = _copyWithClause(from); break; case T_InferClause: retval = _copyInferClause(from); break; case T_OnConflictClause: retval = _copyOnConflictClause(from); break; case T_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_MergeAction: retval = _copyMergeAction(from); break; case T_ObjectWithArgs: retval = _copyObjectWithArgs(from); break; case T_AccessPriv: retval = _copyAccessPriv(from); break; case T_XmlSerialize: retval = _copyXmlSerialize(from); break; case T_RoleSpec: retval = _copyRoleSpec(from); break; case T_TriggerTransition: retval = _copyTriggerTransition(from); break; case T_PartitionElem: retval = _copyPartitionElem(from); break; case T_PartitionSpec: retval = _copyPartitionSpec(from); break; case T_PartitionBoundSpec: retval = _copyPartitionBoundSpec(from); break; case T_PartitionRangeDatum: retval = _copyPartitionRangeDatum(from); break; case T_PartitionCmd: retval = _copyPartitionCmd(from); break; case T_PublicationObjSpec: retval = _copyPublicationObject(from); break; case T_PublicationTable: retval = _copyPublicationTable(from); break; /* * MISCELLANEOUS NODES */ case T_ForeignKeyCacheInfo: retval = _copyForeignKeyCacheInfo(from); break; default: elog(ERROR, "unrecognized node type: %d", (int) nodeTag(from)); retval = 0; /* keep compiler quiet */ break; } return retval; } pg_query-4.2.3/ext/pg_query/src_backend_utils_misc_guc.c0000644000004100000410000014212014510636647023545 0ustar www-datawww-data/*-------------------------------------------------------------------- * Symbols referenced in this file: * - log_min_messages * - client_min_messages * - backtrace_functions * - backtrace_symbol_list * - check_function_bodies *-------------------------------------------------------------------- */ /*-------------------------------------------------------------------- * guc.c * * Support for grand unified configuration scheme, including SET * command, configuration file, and command line options. * See src/backend/utils/misc/README for more information. * * * Copyright (c) 2000-2022, PostgreSQL Global Development Group * Written by Peter Eisentraut . * * IDENTIFICATION * src/backend/utils/misc/guc.c * *-------------------------------------------------------------------- */ #include "postgres.h" #include #include #include #include #ifdef HAVE_POLL_H #include #endif #ifndef WIN32 #include #endif #include #ifdef HAVE_SYSLOG #include #endif #include #include "access/commit_ts.h" #include "access/gin.h" #include "access/rmgr.h" #include "access/tableam.h" #include "access/toast_compression.h" #include "access/transam.h" #include "access/twophase.h" #include "access/xact.h" #include "access/xlog_internal.h" #include "access/xlogprefetcher.h" #include "access/xlogrecovery.h" #include "catalog/namespace.h" #include "catalog/objectaccess.h" #include "catalog/pg_authid.h" #include "catalog/pg_parameter_acl.h" #include "catalog/storage.h" #include "commands/async.h" #include "commands/prepare.h" #include "commands/tablespace.h" #include "commands/trigger.h" #include "commands/user.h" #include "commands/vacuum.h" #include "commands/variable.h" #include "common/string.h" #include "funcapi.h" #include "jit/jit.h" #include "libpq/auth.h" #include "libpq/libpq.h" #include "libpq/pqformat.h" #include "miscadmin.h" #include "optimizer/cost.h" #include "optimizer/geqo.h" #include "optimizer/optimizer.h" #include "optimizer/paths.h" #include "optimizer/planmain.h" #include "parser/parse_expr.h" #include "parser/parse_type.h" #include "parser/parser.h" #include "parser/scansup.h" #include "pgstat.h" #include "postmaster/autovacuum.h" #include "postmaster/bgworker_internals.h" #include "postmaster/bgwriter.h" #include "postmaster/postmaster.h" #include "postmaster/startup.h" #include "postmaster/syslogger.h" #include "postmaster/walwriter.h" #include "replication/logicallauncher.h" #include "replication/reorderbuffer.h" #include "replication/slot.h" #include "replication/syncrep.h" #include "replication/walreceiver.h" #include "replication/walsender.h" #include "storage/bufmgr.h" #include "storage/dsm_impl.h" #include "storage/fd.h" #include "storage/large_object.h" #include "storage/pg_shmem.h" #include "storage/predicate.h" #include "storage/proc.h" #include "storage/standby.h" #include "tcop/tcopprot.h" #include "tsearch/ts_cache.h" #include "utils/acl.h" #include "utils/backend_status.h" #include "utils/builtins.h" #include "utils/bytea.h" #include "utils/float.h" #include "utils/guc_tables.h" #include "utils/memutils.h" #include "utils/pg_locale.h" #include "utils/pg_lsn.h" #include "utils/plancache.h" #include "utils/portal.h" #include "utils/ps_status.h" #include "utils/queryjumble.h" #include "utils/rls.h" #include "utils/snapmgr.h" #include "utils/tzparser.h" #include "utils/inval.h" #include "utils/varlena.h" #include "utils/xml.h" #ifndef PG_KRB_SRVTAB #define PG_KRB_SRVTAB "" #endif #define CONFIG_FILENAME "postgresql.conf" #define HBA_FILENAME "pg_hba.conf" #define IDENT_FILENAME "pg_ident.conf" #ifdef EXEC_BACKEND #define CONFIG_EXEC_PARAMS "global/config_exec_params" #define CONFIG_EXEC_PARAMS_NEW "global/config_exec_params.new" #endif /* * Precision with which REAL type guc values are to be printed for GUC * serialization. */ #define REALTYPE_PRECISION 17 /* XXX these should appear in other modules' header files */ extern bool Log_disconnections; extern int CommitDelay; extern int CommitSiblings; extern char *default_tablespace; extern char *temp_tablespaces; extern bool ignore_checksum_failure; extern bool ignore_invalid_pages; extern bool synchronize_seqscans; #ifdef TRACE_SYNCSCAN extern bool trace_syncscan; #endif #ifdef DEBUG_BOUNDED_SORT extern bool optimize_bounded_sort; #endif /* global variables for check hook support */ static void do_serialize(char **destptr, Size *maxbytes, const char *fmt,...) pg_attribute_printf(3, 4); static void set_config_sourcefile(const char *name, char *sourcefile, int sourceline); static bool call_bool_check_hook(struct config_bool *conf, bool *newval, void **extra, GucSource source, int elevel); static bool call_int_check_hook(struct config_int *conf, int *newval, void **extra, GucSource source, int elevel); static bool call_real_check_hook(struct config_real *conf, double *newval, void **extra, GucSource source, int elevel); static bool call_string_check_hook(struct config_string *conf, char **newval, void **extra, GucSource source, int elevel); static bool call_enum_check_hook(struct config_enum *conf, int *newval, void **extra, GucSource source, int elevel); static bool check_log_destination(char **newval, void **extra, GucSource source); static void assign_log_destination(const char *newval, void *extra); static bool check_wal_consistency_checking(char **newval, void **extra, GucSource source); static void assign_wal_consistency_checking(const char *newval, void *extra); #ifdef HAVE_SYSLOG #else static int syslog_facility = 0; #endif static void assign_syslog_facility(int newval, void *extra); static void assign_syslog_ident(const char *newval, void *extra); static void assign_session_replication_role(int newval, void *extra); static bool check_temp_buffers(int *newval, void **extra, GucSource source); static bool check_bonjour(bool *newval, void **extra, GucSource source); static bool check_ssl(bool *newval, void **extra, GucSource source); static bool check_stage_log_stats(bool *newval, void **extra, GucSource source); static bool check_log_stats(bool *newval, void **extra, GucSource source); static bool check_canonical_path(char **newval, void **extra, GucSource source); static bool check_timezone_abbreviations(char **newval, void **extra, GucSource source); static void assign_timezone_abbreviations(const char *newval, void *extra); static void pg_timezone_abbrev_initialize(void); static const char *show_archive_command(void); static void assign_tcp_keepalives_idle(int newval, void *extra); static void assign_tcp_keepalives_interval(int newval, void *extra); static void assign_tcp_keepalives_count(int newval, void *extra); static void assign_tcp_user_timeout(int newval, void *extra); static const char *show_tcp_keepalives_idle(void); static const char *show_tcp_keepalives_interval(void); static const char *show_tcp_keepalives_count(void); static const char *show_tcp_user_timeout(void); static bool check_maxconnections(int *newval, void **extra, GucSource source); static bool check_max_worker_processes(int *newval, void **extra, GucSource source); static bool check_autovacuum_max_workers(int *newval, void **extra, GucSource source); static bool check_max_wal_senders(int *newval, void **extra, GucSource source); static bool check_autovacuum_work_mem(int *newval, void **extra, GucSource source); static bool check_effective_io_concurrency(int *newval, void **extra, GucSource source); static bool check_maintenance_io_concurrency(int *newval, void **extra, GucSource source); static bool check_huge_page_size(int *newval, void **extra, GucSource source); static bool check_client_connection_check_interval(int *newval, void **extra, GucSource source); static void assign_maintenance_io_concurrency(int newval, void *extra); static bool check_application_name(char **newval, void **extra, GucSource source); static void assign_application_name(const char *newval, void *extra); static bool check_cluster_name(char **newval, void **extra, GucSource source); static const char *show_unix_socket_permissions(void); static const char *show_log_file_mode(void); static const char *show_data_directory_mode(void); static const char *show_in_hot_standby(void); static bool check_backtrace_functions(char **newval, void **extra, GucSource source); static void assign_backtrace_functions(const char *newval, void *extra); static bool check_recovery_target_timeline(char **newval, void **extra, GucSource source); static void assign_recovery_target_timeline(const char *newval, void *extra); static bool check_recovery_target(char **newval, void **extra, GucSource source); static void assign_recovery_target(const char *newval, void *extra); static bool check_recovery_target_xid(char **newval, void **extra, GucSource source); static void assign_recovery_target_xid(const char *newval, void *extra); static bool check_recovery_target_time(char **newval, void **extra, GucSource source); static void assign_recovery_target_time(const char *newval, void *extra); static bool check_recovery_target_name(char **newval, void **extra, GucSource source); static void assign_recovery_target_name(const char *newval, void *extra); static bool check_recovery_target_lsn(char **newval, void **extra, GucSource source); static void assign_recovery_target_lsn(const char *newval, void *extra); static bool check_primary_slot_name(char **newval, void **extra, GucSource source); static bool check_default_with_oids(bool *newval, void **extra, GucSource source); /* Private functions in guc-file.l that need to be called from guc.c */ static ConfigVariable *ProcessConfigFileInternal(GucContext context, bool applySettings, int elevel); /* * Track whether there were any deferred checks for custom resource managers * specified in wal_consistency_checking. */ /* * 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 sync_method_options[]; extern const struct config_enum_entry dynamic_shared_memory_options[]; /* * GUC option variables that are exported from this module */ /* this is sort of all three above * together */ __thread bool check_function_bodies = true; /* * This GUC exists solely for backward compatibility, check its definition for * details. */ __thread int log_min_messages = WARNING; __thread int client_min_messages = NOTICE; __thread char *backtrace_functions; __thread char *backtrace_symbol_list; /* * SSL renegotiation was been removed in PostgreSQL 9.5, but we tolerate it * being set to zero (meaning never renegotiate) for backward compatibility. * This avoids breaking compatibility with clients that have never supported * renegotiation and therefore always try to zero it. */ /* * This really belongs in pg_shmem.c, but is defined here so that it doesn't * need to be duplicated in all the different implementations of pg_shmem.c. */ /* * These variables are all dummies that don't do anything, except in some * cases provide the value for SHOW to display. The real state is elsewhere * and is kept in sync by assign_hooks. */ /* should be static, but commands/variable.c needs to get at this */ /* * Displayable names for context types (enum GucContext) * * Note: these strings are deliberately not localized. */ StaticAssertDecl(lengthof(GucContext_Names) == (PGC_USERSET + 1), "array length mismatch"); /* * Displayable names for source types (enum GucSource) * * Note: these strings are deliberately not localized. */ StaticAssertDecl(lengthof(GucSource_Names) == (PGC_S_SESSION + 1), "array length mismatch"); /* * Displayable names for the groupings defined in enum config_group */ StaticAssertDecl(lengthof(config_group_names) == (DEVELOPER_OPTIONS + 2), "array length mismatch"); /* * Displayable names for GUC variable types (enum config_type) * * Note: these strings are deliberately not localized. */ StaticAssertDecl(lengthof(config_type_names) == (PGC_ENUM + 1), "array length mismatch"); /* * Unit conversion tables. * * There are two tables, one for memory units, and another for time units. * For each supported conversion from one unit to another, we have an entry * in the table. * * To keep things simple, and to avoid possible roundoff error, * conversions are never chained. There needs to be a direct conversion * between all units (of the same type). * * The conversions for each base unit must be kept in order from greatest to * smallest human-friendly unit; convert_xxx_from_base_unit() rely on that. * (The order of the base-unit groups does not matter.) */ #define MAX_UNIT_LEN 3 /* length of longest recognized unit string */ typedef struct { char unit[MAX_UNIT_LEN + 1]; /* unit, as a string, like "kB" or * "min" */ int base_unit; /* GUC_UNIT_XXX */ double multiplier; /* Factor for converting unit -> base_unit */ } unit_conversion; /* Ensure that the constants in the tables don't overflow or underflow */ #if BLCKSZ < 1024 || BLCKSZ > (1024*1024) #error BLCKSZ must be between 1KB and 1MB #endif #if XLOG_BLCKSZ < 1024 || XLOG_BLCKSZ > (1024*1024) #error XLOG_BLCKSZ must be between 1KB and 1MB #endif /* * Contents of GUC tables * * See src/backend/utils/misc/README for design notes. * * TO ADD AN OPTION: * * 1. Declare a global variable of type bool, int, double, or char* * and make use of it. * * 2. Decide at what times it's safe to set the option. See guc.h for * details. * * 3. Decide on a name, a default value, upper and lower bounds (if * applicable), etc. * * 4. Add a record below. * * 5. Add it to src/backend/utils/misc/postgresql.conf.sample, if * appropriate. * * 6. Don't forget to document the option (at least in config.sgml). * * 7. If it's a new GUC_LIST_QUOTE option, you must add it to * variable_is_guc_list_quote() in src/bin/pg_dump/dumputils.c. */ /******** option records follow ********/ #ifdef USE_ASSERT_CHECKING #else #endif #ifdef BTREE_BUILD_STATS #endif #ifdef WIN32 #else #endif #ifdef LOCK_DEBUG #endif #ifdef TRACE_SORT #endif #ifdef TRACE_SYNCSCAN #endif #ifdef DEBUG_BOUNDED_SORT #endif #ifdef WAL_DEBUG #endif #ifdef LOCK_DEBUG #endif #ifdef USE_PREFETCH #else #endif #ifdef USE_PREFETCH #else #endif #ifdef DISCARD_CACHES_ENABLED #if defined(CLOBBER_CACHE_RECURSIVELY) #else #endif #else /* not DISCARD_CACHES_ENABLED */ #endif /* not DISCARD_CACHES_ENABLED */ #ifdef HAVE_UNIX_SOCKETS #else #endif #ifdef USE_SSL #else #endif #ifdef USE_OPENSSL #else #endif #ifdef USE_SSL #else #endif #ifdef HAVE_SYSLOG #else #endif /******** end of options list ********/ /* * To allow continued support of obsolete names for GUC variables, we apply * the following mappings to any unrecognized name. Note that an old name * should be mapped to a new one only if the new variable has very similar * semantics to the old. */ /* * Actual lookup of variables is done through this single, sorted array. */ /* Current number of variables contained in the vector */ /* Vector capacity */ /* true if need to do commit/abort work */ /* true to enable GUC_REPORT */ /* true if any GUC_REPORT reports are needed */ /* 1 when in main transaction */ static int guc_var_compare(const void *a, const void *b); static int guc_name_compare(const char *namea, const char *nameb); static void InitializeGUCOptionsFromEnvironment(void); static void InitializeOneGUCOption(struct config_generic *gconf); static void push_old_value(struct config_generic *gconf, GucAction action); static void ReportGUCOption(struct config_generic *record); static void reapply_stacked_values(struct config_generic *variable, struct config_string *pHolder, GucStack *stack, const char *curvalue, GucContext curscontext, GucSource cursource, Oid cursrole); static void ShowGUCConfigOption(const char *name, DestReceiver *dest); static void ShowAllGUCConfig(DestReceiver *dest); static char *_ShowOption(struct config_generic *record, bool use_units); static bool validate_option_array_item(const char *name, const char *value, bool skipIfNoPermissions); static void write_auto_conf_file(int fd, const char *filename, ConfigVariable *head_p); static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **tail_p, const char *name, const char *value); /* * Some infrastructure for checking malloc/strdup/realloc calls */ /* * Detect whether strval is referenced anywhere in a GUC string item */ /* * Support for assigning to a field of a string GUC item. Free the prior * value if it's not referenced anywhere else in the item (including stacked * states). */ /* * Detect whether an "extra" struct is referenced anywhere in a GUC item */ /* * Support for assigning to an "extra" field of a GUC item. Free the prior * value if it's not referenced anywhere else in the item (including stacked * states). */ /* * Support for copying a variable's active value into a stack entry. * The "extra" field associated with the active value is copied, too. * * NB: be sure stringval and extra fields of a new stack entry are * initialized to NULL before this is used, else we'll try to free() them. */ /* * Support for discarding a no-longer-needed value in a stack entry. * The "extra" field associated with the stack entry is cleared, too. */ /* * Fetch the sorted array pointer (exported for help_config.c's use ONLY) */ /* * Build the sorted array. This is split out so that it could be * re-executed after startup (e.g., we could allow loadable modules to * add vars, and then we'd need to re-sort). */ /* * Add a new GUC variable to the list of known variables. The * list is expanded if needed. */ /* * Decide whether a proposed custom variable name is allowed. * * It must be two or more identifiers separated by dots, where the rules * for what is an identifier agree with scan.l. (If you change this rule, * adjust the errdetail in find_option().) */ /* * Create and add a placeholder variable for a custom variable name. */ /* * Look up option "name". If it exists, return a pointer to its record. * Otherwise, if create_placeholders is true and name is a valid-looking * custom variable name, we'll create and return a placeholder record. * Otherwise, if skip_errors is true, then we silently return NULL for * an unrecognized or invalid name. Otherwise, the error is reported at * error level elevel (and we return NULL if that's less than ERROR). * * Note: internal errors, primarily out-of-memory, draw an elevel-level * report and NULL return regardless of skip_errors. Hence, callers must * handle a NULL return whenever elevel < ERROR, but they should not need * to emit any additional error message. (In practice, internal errors * can only happen when create_placeholders is true, so callers passing * false need not think terribly hard about this.) */ /* * comparator for qsorting and bsearching guc_variables array */ /* * the bare comparison function for GUC names */ /* * Convert a GUC name to the form that should be used in pg_parameter_acl. * * We need to canonicalize entries since, for example, case should not be * significant. In addition, we apply the map_old_guc_names[] mapping so that * any obsolete names will be converted when stored in a new PG version. * Note however that this function does not verify legality of the name. * * The result is a palloc'd string. */ /* * Check whether we should allow creation of a pg_parameter_acl entry * for the given name. (This can be applied either before or after * canonicalizing it.) */ /* * Initialize GUC options during program startup. * * Note that we cannot read the config file yet, since we have not yet * processed command-line switches. */ /* * If any custom resource managers were specified in the * wal_consistency_checking GUC, processing was deferred. Now that * shared_preload_libraries have been loaded, process wal_consistency_checking * again. */ /* * Assign any GUC values that can come from the server's environment. * * This is called from InitializeGUCOptions, and also from ProcessConfigFile * to deal with the possibility that a setting has been removed from * postgresql.conf and should now get a value from the environment. * (The latter is a kludge that should probably go away someday; if so, * fold this back into InitializeGUCOptions.) */ /* * Initialize one GUC option variable to its compiled-in default. * * Note: the reason for calling check_hooks is not that we think the boot_val * might fail, but that the hooks might wish to compute an "extra" struct. */ /* * Select the configuration files and data directory to be used, and * do the initial read of postgresql.conf. * * This is called after processing command-line switches. * userDoption is the -D switch value if any (NULL if unspecified). * progname is just for use in error messages. * * Returns true on success; on failure, prints a suitable error message * to stderr and returns false. */ /* * Reset all options to their saved default values (implements RESET ALL) */ /* * push_old_value * Push previous state during transactional assignment to a GUC variable. */ /* * Do GUC processing at main transaction start. */ /* * Enter a new nesting level for GUC values. This is called at subtransaction * start, and when entering a function that has proconfig settings, and in * some other places where we want to set GUC variables transiently. * NOTE we must not risk error here, else subtransaction start will be unhappy. */ /* * Do GUC processing at transaction or subtransaction commit or abort, or * when exiting a function that has proconfig settings, or when undoing a * transient assignment to some GUC variables. (The name is thus a bit of * a misnomer; perhaps it should be ExitGUCNestLevel or some such.) * During abort, we discard all GUC settings that were applied at nesting * levels >= nestLevel. nestLevel == 1 corresponds to the main transaction. */ /* * Start up automatic reporting of changes to variables marked GUC_REPORT. * This is executed at completion of backend startup. */ /* * ReportChangedGUCOptions: report recently-changed GUC_REPORT variables * * This is called just before we wait for a new client query. * * By handling things this way, we ensure that a ParameterStatus message * is sent at most once per variable per query, even if the variable * changed multiple times within the query. That's quite possible when * using features such as function SET clauses. Function SET clauses * also tend to cause values to change intraquery but eventually revert * to their prevailing values; ReportGUCOption is responsible for avoiding * redundant reports in such cases. */ /* * ReportGUCOption: if appropriate, transmit option value to frontend * * We need not transmit the value if it's the same as what we last * transmitted. However, clear the NEEDS_REPORT flag in any case. */ /* * Convert a value from one of the human-friendly units ("kB", "min" etc.) * to the given base unit. 'value' and 'unit' are the input value and unit * to convert from (there can be trailing spaces in the unit string). * The converted value is stored in *base_value. * It's caller's responsibility to round off the converted value as necessary * and check for out-of-range. * * Returns true on success, false if the input unit is not recognized. */ /* * Convert an integer value in some base unit to a human-friendly unit. * * The output unit is chosen so that it's the greatest unit that can represent * the value without loss. For example, if the base unit is GUC_UNIT_KB, 1024 * is converted to 1 MB, but 1025 is represented as 1025 kB. */ /* * Convert a floating-point value in some base unit to a human-friendly unit. * * Same as above, except we have to do the math a bit differently, and * there's a possibility that we don't find any exact divisor. */ /* * Return the name of a GUC's base unit (e.g. "ms") given its flags. * Return NULL if the GUC is unitless. */ /* * Try to parse value as an integer. The accepted formats are the * usual decimal, octal, or hexadecimal formats, as well as floating-point * formats (which will be rounded to integer after any units conversion). * Optionally, the value can be followed by a unit name if "flags" indicates * a unit is allowed. * * If the string parses okay, return true, else false. * If okay and result is not NULL, return the value in *result. * If not okay and hintmsg is not NULL, *hintmsg is set to a suitable * HINT message, or NULL if no hint provided. */ /* * Try to parse value as a floating point number in the usual format. * Optionally, the value can be followed by a unit name if "flags" indicates * a unit is allowed. * * If the string parses okay, return true, else false. * If okay and result is not NULL, return the value in *result. * If not okay and hintmsg is not NULL, *hintmsg is set to a suitable * HINT message, or NULL if no hint provided. */ /* * Lookup the name for an enum option with the selected value. * Should only ever be called with known-valid values, so throws * an elog(ERROR) if the enum option is not found. * * The returned string is a pointer to static data and not * allocated for modification. */ /* * Lookup the value for an enum option with the selected name * (case-insensitive). * If the enum option is found, sets the retval value and returns * true. If it's not found, return false and retval is set to 0. */ /* * Return a list of all available options for an enum, excluding * hidden ones, separated by the given separator. * If prefix is non-NULL, it is added before the first enum value. * If suffix is non-NULL, it is added to the end of the string. */ /* * Parse and validate a proposed value for the specified configuration * parameter. * * This does built-in checks (such as range limits for an integer parameter) * and also calls any check hook the parameter may have. * * record: GUC variable's info record * name: variable name (should match the record of course) * value: proposed value, as a string * source: identifies source of value (check hooks may need this) * elevel: level to log any error reports at * newval: on success, converted parameter value is returned here * newextra: on success, receives any "extra" data returned by check hook * (caller must initialize *newextra to NULL) * * Returns true if OK, false if not (or throws error, if elevel >= ERROR) */ /* * set_config_option: sets option `name' to given value. * * The value should be a string, which will be parsed and converted to * the appropriate data type. The context and source parameters indicate * in which context this function is being called, so that it can apply the * access restrictions properly. * * If value is NULL, set the option to its default value (normally the * reset_val, but if source == PGC_S_DEFAULT we instead use the boot_val). * * action indicates whether to set the value globally in the session, locally * to the current top transaction, or just for the duration of a function call. * * If changeVal is false then don't really set the option but do all * the checks to see if it would work. * * elevel should normally be passed as zero, allowing this function to make * its standard choice of ereport level. However some callers need to be * able to override that choice; they should pass the ereport level to use. * * is_reload should be true only when called from read_nondefault_variables() * or RestoreGUCState(), where we are trying to load some other process's * GUC settings into a new process. * * Return value: * +1: the value is valid and was successfully applied. * 0: the name or value is invalid (but see below). * -1: the value was not applied because of context, priority, or changeVal. * * If there is an error (non-existing option, invalid value) then an * ereport(ERROR) is thrown *unless* this is called for a source for which * we don't want an ERROR (currently, those are defaults, the config file, * and per-database or per-user settings, as well as callers who specify * a less-than-ERROR elevel). In those cases we write a suitable error * message via ereport() and return 0. * * See also SetConfigOption for an external interface. */ /* * set_config_option_ext: sets option `name' to given value. * * This API adds the ability to explicitly specify which role OID * is considered to be setting the value. Most external callers can use * set_config_option() and let it determine that based on the GucSource, * but there are a few that are supplying a value that was determined * in some special way and need to override the decision. Also, when * restoring a previously-assigned value, it's important to supply the * same role OID that set the value originally; so all guc.c callers * that are doing that type of thing need to call this directly. * * Generally, srole should be GetUserId() when the source is a SQL operation, * or BOOTSTRAP_SUPERUSERID if the source is a config file or similar. */ #define newval (newval_union.boolval) #undef newval #define newval (newval_union.intval) #undef newval #define newval (newval_union.realval) #undef newval #define newval (newval_union.stringval) #undef newval #define newval (newval_union.enumval) #undef newval /* * Set the fields for source file and line number the setting came from. */ /* * Set a config option to the given value. * * See also set_config_option; this is just the wrapper to be called from * outside GUC. (This function should be used when possible, because its API * is more stable than set_config_option's.) * * Note: there is no support here for setting source file/line, as it * is currently not needed. */ /* * Fetch the current value of the option `name', as a string. * * If the option doesn't exist, return NULL if missing_ok is true (NOTE that * this cannot be distinguished from a string variable with a NULL value!), * otherwise throw an ereport and don't return. * * If restrict_privileged is true, we also enforce that only superusers and * members of the pg_read_all_settings role can see GUC_SUPERUSER_ONLY * variables. This should only be passed as true in user-driven calls. * * The string is *not* allocated for modification and is really only * valid until the next call to configuration related functions. */ /* * Get the RESET value associated with the given option. * * Note: this is not re-entrant, due to use of static result buffer; * not to mention that a string variable could have its reset_val changed. * Beware of assuming the result value is good for very long. */ /* * Get the GUC flags associated with the given option. * * If the option doesn't exist, return 0 if missing_ok is true, * otherwise throw an ereport and don't return. */ /* * flatten_set_variable_args * Given a parsenode List as emitted by the grammar for SET, * convert to the flat string representation used by GUC. * * We need to be told the name of the variable the args are for, because * the flattening rules vary (ugh). * * The result is NULL if args is NIL (i.e., SET ... TO DEFAULT), otherwise * a palloc'd string. */ /* * Write updated configuration parameter values into a temporary file. * This function traverses the list of parameters and quotes the string * values before writing them. */ /* * Update the given list of configuration parameters, adding, replacing * or deleting the entry for item "name" (delete if "value" == NULL). */ /* * Execute ALTER SYSTEM statement. * * Read the old PG_AUTOCONF_FILENAME file, merge in the new variable value, * and write out an updated file. If the command is ALTER SYSTEM RESET ALL, * we can skip reading the old file and just write an empty file. * * An LWLock is used to serialize updates of the configuration file. * * In case of an error, we leave the original automatic * configuration file (PG_AUTOCONF_FILENAME) intact. */ /* * SET command */ /* * Get the value to assign for a VariableSetStmt, or NULL if it's RESET. * The result is palloc'd. * * This is exported for use by actions such as ALTER ROLE SET. */ /* * SetPGVariable - SET command exported as an easily-C-callable function. * * This provides access to SET TO value, as well as SET TO DEFAULT (expressed * by passing args == NIL), but not SET FROM CURRENT functionality. */ /* * SET command wrapped as a SQL callable function. */ /* * Common code for DefineCustomXXXVariable subroutines: allocate the * new variable's config struct and fill in generic fields. */ /* * Common code for DefineCustomXXXVariable subroutines: insert the new * variable into the GUC variable array, replacing any placeholder. */ /* * Recursive subroutine for define_custom_variable: reapply non-reset values * * We recurse so that the values are applied in the same order as originally. * At each recursion level, apply the upper-level value (passed in) in the * fashion implied by the stack entry. */ /* * Functions for extensions to call to define their custom GUC variables. */ /* * Mark the given GUC prefix as "reserved". * * This deletes any existing placeholders matching the prefix, * and then prevents new ones from being created. * Extensions should call this after they've defined all of their custom * GUCs, to help catch misspelled config-file entries. */ /* * SHOW command */ /* * SHOW command */ /* * SHOW ALL command */ /* * Return an array of modified GUC options to show in EXPLAIN. * * We only report options related to query planning (marked with GUC_EXPLAIN), * with values different from their built-in defaults. */ /* * Return GUC variable value by name; optionally return canonical form of * name. If the GUC is unset, then throw an error unless missing_ok is true, * in which case return NULL. Return value is palloc'd (but *varname isn't). */ /* * Return some of the flags associated to the specified GUC in the shape of * a text array, and NULL if it does not exist. An empty array is returned * if the GUC exists without any meaningful flags to show. */ #define MAX_GUC_FLAGS 5 /* * Return GUC variable value by variable number; optionally return canonical * form of name. Return value is palloc'd. */ /* * Return the total number of GUC variables */ /* * show_config_by_name - equiv to SHOW X command but implemented as * a function. */ /* * show_config_by_name_missing_ok - equiv to SHOW X command but implemented as * a function. If X does not exist, suppress the error and just return NULL * if missing_ok is true. */ /* * show_all_settings - equiv to SHOW ALL command but implemented as * a Table Function. */ #define NUM_PG_SETTINGS_ATTS 17 /* * show_all_file_settings * * Returns a table of all parameter settings in all configuration files * which includes the config file pathname, the line number, a sequence number * indicating the order in which the settings were encountered, the parameter * name and value, a bool showing if the value could be applied, and possibly * an associated error message. (For problems such as syntax errors, the * parameter name/value might be NULL.) * * Note: no filtering is done here, instead we depend on the GRANT system * to prevent unprivileged users from accessing this function or the view * built on top of it. */ #define NUM_PG_FILE_SETTINGS_ATTS 7 #ifdef EXEC_BACKEND /* * These routines dump out all non-default GUC options into a binary * file that is read by all exec'ed backends. The format is: * * variable name, string, null terminated * variable value, string, null terminated * variable sourcefile, string, null terminated (empty if none) * variable sourceline, integer * variable source, integer * variable scontext, integer * variable srole, OID */ static void write_one_nondefault_variable(FILE *fp, struct config_generic *gconf) { if (gconf->source == PGC_S_DEFAULT) return; fprintf(fp, "%s", gconf->name); fputc(0, fp); switch (gconf->vartype) { case PGC_BOOL: { struct config_bool *conf = (struct config_bool *) gconf; if (*conf->variable) fprintf(fp, "true"); else fprintf(fp, "false"); } break; case PGC_INT: { struct config_int *conf = (struct config_int *) gconf; fprintf(fp, "%d", *conf->variable); } break; case PGC_REAL: { struct config_real *conf = (struct config_real *) gconf; fprintf(fp, "%.17g", *conf->variable); } break; case PGC_STRING: { struct config_string *conf = (struct config_string *) gconf; fprintf(fp, "%s", *conf->variable); } break; case PGC_ENUM: { struct config_enum *conf = (struct config_enum *) gconf; fprintf(fp, "%s", config_enum_lookup_by_value(conf, *conf->variable)); } break; } fputc(0, fp); if (gconf->sourcefile) fprintf(fp, "%s", gconf->sourcefile); fputc(0, fp); fwrite(&gconf->sourceline, 1, sizeof(gconf->sourceline), fp); fwrite(&gconf->source, 1, sizeof(gconf->source), fp); fwrite(&gconf->scontext, 1, sizeof(gconf->scontext), fp); fwrite(&gconf->srole, 1, sizeof(gconf->srole), fp); } void write_nondefault_variables(GucContext context) { int elevel; FILE *fp; int i; Assert(context == PGC_POSTMASTER || context == PGC_SIGHUP); elevel = (context == PGC_SIGHUP) ? LOG : ERROR; /* * Open file */ fp = AllocateFile(CONFIG_EXEC_PARAMS_NEW, "w"); if (!fp) { ereport(elevel, (errcode_for_file_access(), errmsg("could not write to file \"%s\": %m", CONFIG_EXEC_PARAMS_NEW))); return; } for (i = 0; i < num_guc_variables; i++) { write_one_nondefault_variable(fp, guc_variables[i]); } if (FreeFile(fp)) { ereport(elevel, (errcode_for_file_access(), errmsg("could not write to file \"%s\": %m", CONFIG_EXEC_PARAMS_NEW))); return; } /* * Put new file in place. This could delay on Win32, but we don't hold * any exclusive locks. */ rename(CONFIG_EXEC_PARAMS_NEW, CONFIG_EXEC_PARAMS); } /* * Read string, including null byte from file * * Return NULL on EOF and nothing read */ static char * read_string_with_null(FILE *fp) { int i = 0, ch, maxlen = 256; char *str = NULL; do { if ((ch = fgetc(fp)) == EOF) { if (i == 0) return NULL; else elog(FATAL, "invalid format of exec config params file"); } if (i == 0) str = guc_malloc(FATAL, maxlen); else if (i == maxlen) str = guc_realloc(FATAL, str, maxlen *= 2); str[i++] = ch; } while (ch != 0); return str; } /* * This routine loads a previous postmaster dump of its non-default * settings. */ void read_nondefault_variables(void) { FILE *fp; char *varname, *varvalue, *varsourcefile; int varsourceline; GucSource varsource; GucContext varscontext; Oid varsrole; /* * Open file */ fp = AllocateFile(CONFIG_EXEC_PARAMS, "r"); if (!fp) { /* File not found is fine */ if (errno != ENOENT) ereport(FATAL, (errcode_for_file_access(), errmsg("could not read from file \"%s\": %m", CONFIG_EXEC_PARAMS))); return; } for (;;) { struct config_generic *record; if ((varname = read_string_with_null(fp)) == NULL) break; if ((record = find_option(varname, true, false, FATAL)) == NULL) elog(FATAL, "failed to locate variable \"%s\" in exec config params file", varname); if ((varvalue = read_string_with_null(fp)) == NULL) elog(FATAL, "invalid format of exec config params file"); if ((varsourcefile = read_string_with_null(fp)) == NULL) elog(FATAL, "invalid format of exec config params file"); if (fread(&varsourceline, 1, sizeof(varsourceline), fp) != sizeof(varsourceline)) elog(FATAL, "invalid format of exec config params file"); if (fread(&varsource, 1, sizeof(varsource), fp) != sizeof(varsource)) elog(FATAL, "invalid format of exec config params file"); if (fread(&varscontext, 1, sizeof(varscontext), fp) != sizeof(varscontext)) elog(FATAL, "invalid format of exec config params file"); if (fread(&varsrole, 1, sizeof(varsrole), fp) != sizeof(varsrole)) elog(FATAL, "invalid format of exec config params file"); (void) set_config_option_ext(varname, varvalue, varscontext, varsource, varsrole, GUC_ACTION_SET, true, 0, true); if (varsourcefile[0]) set_config_sourcefile(varname, varsourcefile, varsourceline); free(varname); free(varvalue); free(varsourcefile); } FreeFile(fp); } #endif /* EXEC_BACKEND */ /* * can_skip_gucvar: * Decide whether SerializeGUCState can skip sending this GUC variable, * or whether RestoreGUCState can skip resetting this GUC to default. * * It is somewhat magical and fragile that the same test works for both cases. * Realize in particular that we are very likely selecting different sets of * GUCs on the leader and worker sides! Be sure you've understood the * comments here and in RestoreGUCState thoroughly before changing this. */ /* * estimate_variable_size: * Compute space needed for dumping the given GUC variable. * * It's OK to overestimate, but not to underestimate. */ /* * EstimateGUCStateSpace: * Returns the size needed to store the GUC state for the current process */ /* * do_serialize: * Copies the formatted string into the destination. Moves ahead the * destination pointer, and decrements the maxbytes by that many bytes. If * maxbytes is not sufficient to copy the string, error out. */ /* Binary copy version of do_serialize() */ /* * serialize_variable: * Dumps name, value and other information of a GUC variable into destptr. */ /* * SerializeGUCState: * Dumps the complete GUC state onto the memory location at start_address. */ /* * read_gucstate: * Actually it does not read anything, just returns the srcptr. But it does * move the srcptr past the terminating zero byte, so that the caller is ready * to read the next string. */ /* Binary read version of read_gucstate(). Copies into dest */ /* * Callback used to add a context message when reporting errors that occur * while trying to restore GUCs in parallel workers. */ /* * RestoreGUCState: * Reads the GUC state at the specified address and sets this process's * GUCs to match. * * Note that this provides the worker with only a very shallow view of the * leader's GUC state: we'll know about the currently active values, but not * about stacked or reset values. That's fine since the worker is just * executing one part of a query, within which the active values won't change * and the stacked values are invisible. */ /* * A little "long argument" simulation, although not quite GNU * compliant. Takes a string of the form "some-option=some value" and * returns name = "some_option" and value = "some value" in malloc'ed * storage. Note that '-' is converted to '_' in the option name. If * there is no '=' in the input string then value will be NULL. */ /* * Handle options fetched from pg_db_role_setting.setconfig, * pg_proc.proconfig, etc. Caller must specify proper context/source/action. * * The array parameter must be an array of TEXT (it must not be NULL). */ /* * Add an entry to an option array. The array parameter may be NULL * to indicate the current table entry is NULL. */ /* * Delete an entry from an option array. The array parameter may be NULL * to indicate the current table entry is NULL. Also, if the return value * is NULL then a null should be stored. */ /* * Given a GUC array, delete all settings from it that our permission * level allows: if superuser, delete them all; if regular user, only * those that are PGC_USERSET or we have permission to set */ /* * Validate a proposed option setting for GUCArrayAdd/Delete/Reset. * * name is the option name. value is the proposed value for the Add case, * or NULL for the Delete/Reset cases. If skipIfNoPermissions is true, it's * not an error to have no permissions to set the option. * * Returns true if OK, false if skipIfNoPermissions is true and user does not * have permission to change this option (all other error cases result in an * error being thrown). */ /* * Called by check_hooks that want to override the normal * ERRCODE_INVALID_PARAMETER_VALUE SQLSTATE for check hook failures. * * Note that GUC_check_errmsg() etc are just macros that result in a direct * assignment to the associated variables. That is ugly, but forced by the * limitations of C's macro mechanisms. */ /* * Convenience functions to manage calling a variable's check_hook. * These mostly take care of the protocol for letting check hooks supply * portions of the error report on failure. */ /* * check_hook, assign_hook and show_hook subroutines */ #ifdef HAVE_SYSLOG #endif #ifdef WIN32 #endif #ifdef HAVE_SYSLOG #endif #ifdef HAVE_SYSLOG #endif #ifndef USE_BONJOUR #endif #ifndef USE_SSL #endif /* * pg_timezone_abbrev_initialize --- set default value if not done already * * This is called after initial loading of postgresql.conf. If no * timezone_abbreviations setting was found therein, select default. * If a non-default value is already installed, nothing will happen. * * This can also be called from ProcessConfigFile to establish the default * value after a postgresql.conf entry for it is removed. */ #ifndef USE_PREFETCH #endif /* USE_PREFETCH */ #ifndef USE_PREFETCH #endif /* USE_PREFETCH */ #if !(defined(MAP_HUGE_MASK) && defined(MAP_HUGE_SHIFT)) #endif #ifdef USE_PREFETCH #endif /* * We split the input string, where commas separate function names * and certain whitespace chars are ignored, into a \0-separated (and * \0\0-terminated) list of function names. This formulation allows * easy scanning when an error is thrown while avoiding the use of * non-reentrant strtok(), as well as keeping the output data in a * single palloc() chunk. */ /* * Recovery target settings: Only one of the several recovery_target* settings * may be set. Setting a second one results in an error. The global variable * recoveryTarget tracks which kind of recovery target was chosen. Other * variables store the actual target value (for example a string or a xid). * The assign functions of the parameters check whether a competing parameter * was already set. But we want to allow setting the same parameter multiple * times. We also want to allow unsetting a parameter and setting a different * one, so we unset recoveryTarget when the parameter is set to an empty * string. */ /* * The interpretation of the recovery_target_time string can depend on the * time zone setting, so we need to wait until after all GUC processing is * done before we can do the final parsing of the string. This check function * only does a parsing pass to catch syntax errors, but we store the string * and parse it again when we need to use it. */ #include "guc-file.c"